CCF
Loading...
Searching...
No Matches
historical_queries_interface.h
Go to the documentation of this file.
1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the Apache 2.0 License.
3#pragma once
4
7#include "ccf/receipt.h"
9#include "ccf/tx_id.h"
10
11#include <chrono>
12#include <memory>
13
14namespace ccf::historical
15{
16 struct State
17 {
24
26 const ccf::kv::ReadOnlyStorePtr& store_,
27 const TxReceiptImplPtr& receipt_,
28 const ccf::TxID& transaction_id_) :
29 store(store_),
30 receipt(receipt_),
31 transaction_id(transaction_id_)
32 {}
33
34 bool operator==(const State& other) const
35 {
36 return store == other.store && receipt == other.receipt &&
38 };
39 };
40
41 using StatePtr = std::shared_ptr<State>;
42
48 using RequestHandle = size_t;
49
50 using ExpiryDuration = std::chrono::seconds;
51
52 using CacheSize = size_t;
53
67 {
68 public:
69 virtual ~AbstractStateCache() = default;
70
71 static char const* get_subsystem_name()
72 {
73 return "StateCache";
74 }
75
82 ExpiryDuration seconds_until_expiry) = 0;
83
89 virtual void set_soft_cache_limit(CacheSize cache_limit) = 0;
90
97 virtual void track_deletes_on_missing_keys(bool track) = 0;
98
106 RequestHandle handle,
108 ExpiryDuration seconds_until_expiry) = 0;
109
114 RequestHandle handle, ccf::SeqNo seqno) = 0;
115
120 RequestHandle handle,
122 ExpiryDuration seconds_until_expiry) = 0;
123
128
147 virtual std::vector<ccf::kv::ReadOnlyStorePtr> get_store_range(
148 RequestHandle handle,
149 ccf::SeqNo start_seqno,
150 ccf::SeqNo end_seqno,
151 ExpiryDuration seconds_until_expiry) = 0;
152
156 virtual std::vector<ccf::kv::ReadOnlyStorePtr> get_store_range(
157 RequestHandle handle, ccf::SeqNo start_seqno, ccf::SeqNo end_seqno) = 0;
158
163 virtual std::vector<StatePtr> get_state_range(
164 RequestHandle handle,
165 ccf::SeqNo start_seqno,
166 ccf::SeqNo end_seqno,
167 ExpiryDuration seconds_until_expiry) = 0;
168
172 virtual std::vector<StatePtr> get_state_range(
173 RequestHandle handle, ccf::SeqNo start_seqno, ccf::SeqNo end_seqno) = 0;
174
177 virtual std::vector<ccf::kv::ReadOnlyStorePtr> get_stores_for(
178 RequestHandle handle,
179 const SeqNoCollection& seqnos,
180 ExpiryDuration seconds_until_expiry) = 0;
181 virtual std::vector<ccf::kv::ReadOnlyStorePtr> get_stores_for(
182 RequestHandle handle, const SeqNoCollection& seqnos) = 0;
183
186 virtual std::vector<StatePtr> get_states_for(
187 RequestHandle handle,
188 const SeqNoCollection& seqnos,
189 ExpiryDuration seconds_until_expiry) = 0;
190 virtual std::vector<StatePtr> get_states_for(
191 RequestHandle handle, const SeqNoCollection& seqnos) = 0;
192
198 virtual bool drop_cached_states(RequestHandle handle) = 0;
199 };
200}
Definition node_subsystem_interface.h:8
Definition contiguous_set.h:18
Definition historical_queries_interface.h:67
virtual std::vector< StatePtr > get_state_range(RequestHandle handle, ccf::SeqNo start_seqno, ccf::SeqNo end_seqno)=0
virtual std::vector< ccf::kv::ReadOnlyStorePtr > get_store_range(RequestHandle handle, ccf::SeqNo start_seqno, ccf::SeqNo end_seqno, ExpiryDuration seconds_until_expiry)=0
virtual ccf::kv::ReadOnlyStorePtr get_store_at(RequestHandle handle, ccf::SeqNo seqno)=0
virtual void set_default_expiry_duration(ExpiryDuration seconds_until_expiry)=0
virtual StatePtr get_state_at(RequestHandle handle, ccf::SeqNo seqno, ExpiryDuration seconds_until_expiry)=0
virtual void set_soft_cache_limit(CacheSize cache_limit)=0
virtual StatePtr get_state_at(RequestHandle handle, ccf::SeqNo seqno)=0
virtual void track_deletes_on_missing_keys(bool track)=0
virtual std::vector< StatePtr > get_states_for(RequestHandle handle, const SeqNoCollection &seqnos)=0
static char const * get_subsystem_name()
Definition historical_queries_interface.h:71
virtual bool drop_cached_states(RequestHandle handle)=0
virtual ccf::kv::ReadOnlyStorePtr get_store_at(RequestHandle handle, ccf::SeqNo seqno, ExpiryDuration seconds_until_expiry)=0
virtual std::vector< ccf::kv::ReadOnlyStorePtr > get_stores_for(RequestHandle handle, const SeqNoCollection &seqnos)=0
virtual std::vector< ccf::kv::ReadOnlyStorePtr > get_store_range(RequestHandle handle, ccf::SeqNo start_seqno, ccf::SeqNo end_seqno)=0
virtual std::vector< ccf::kv::ReadOnlyStorePtr > get_stores_for(RequestHandle handle, const SeqNoCollection &seqnos, ExpiryDuration seconds_until_expiry)=0
virtual std::vector< StatePtr > get_state_range(RequestHandle handle, ccf::SeqNo start_seqno, ccf::SeqNo end_seqno, ExpiryDuration seconds_until_expiry)=0
virtual std::vector< StatePtr > get_states_for(RequestHandle handle, const SeqNoCollection &seqnos, ExpiryDuration seconds_until_expiry)=0
Definition historical_queries_adapter.h:18
std::chrono::seconds ExpiryDuration
Definition historical_queries_interface.h:50
std::shared_ptr< State > StatePtr
Definition historical_queries_interface.h:41
size_t RequestHandle
Definition historical_queries_interface.h:48
size_t CacheSize
Definition historical_queries_interface.h:52
std::shared_ptr< ReadOnlyStore > ReadOnlyStorePtr
Definition read_only_store.h:23
std::shared_ptr< TxReceiptImpl > TxReceiptImplPtr
Definition receipt.h:136
seqno
Definition signatures.h:54
uint64_t SeqNo
Definition tx_id.h:36
Definition tx_id.h:44
Definition historical_queries_interface.h:17
TxReceiptImplPtr receipt
Receipt for ledger entry at transaction_id.
Definition historical_queries_interface.h:21
bool operator==(const State &other) const
Definition historical_queries_interface.h:34
ccf::TxID transaction_id
View and Sequence Number for the State.
Definition historical_queries_interface.h:23
ccf::kv::ReadOnlyStorePtr store
Read-only historical store at transaction_id.
Definition historical_queries_interface.h:19
State(const ccf::kv::ReadOnlyStorePtr &store_, const TxReceiptImplPtr &receipt_, const ccf::TxID &transaction_id_)
Definition historical_queries_interface.h:25