10#include <absl/container/flat_hash_map.h>
11#include <absl/container/flat_hash_set.h>
12#include <spdlog/spdlog.h>
26 template<
typename KeyT,
typename ValueT>
35 const char *
name =
"unnamed-cache";
45 Registry(asio::io_context & io_context, std::string sqlite_path =
":memory:");
53 asio::awaitable<bool>
add(
chain::Address address, TransformationRecord transformation);
58 std::vector<std::pair<chain::Address, ConnectorRecord>>
connectors,
59 bool all_or_nothing =
true);
62 const std::string &
name)
const;
66 asio::awaitable<std::optional<evmc::bytes32>>
getFormatHash(
const std::string&
name)
const;
71 const evmc::bytes32 & format_hash,
72 const std::optional<NameCursor> & after,
73 std::size_t limit)
const;
78 const std::optional<evmc::bytes32> & after,
79 std::size_t limit)
const;
85 std::vector<std::pair<chain::Address, TransformationRecord>>
transformations,
86 bool all_or_nothing =
true);
89 const std::string &
name)
const;
96 std::vector<std::pair<chain::Address, ConditionRecord>>
conditions,
97 bool all_or_nothing =
true);
100 const std::string &
name)
const;
106 const std::optional<NameCursor> & after,
107 std::size_t limit)
const;
111 const std::optional<NameCursor> & after,
112 std::size_t limit)
const;
116 const std::optional<NameCursor> & after,
117 std::size_t limit)
const;
122 const std::optional<chain::Address> & after,
123 std::size_t limit)
const;
128 static constexpr std::size_t kHotCacheCapacity = 1024;
130 asio::strand<asio::io_context::executor_type> _strand;
131 std::unique_ptr<IRegistryStore> _store;
Definition registry.hpp:42
asio::awaitable< std::size_t > getFormatsCount() const
Definition registry.cpp:1200
asio::awaitable< std::size_t > getFormatConnectorNamesCount(const evmc::bytes32 &format_hash) const
Definition registry.cpp:1185
asio::awaitable< bool > add(chain::Address address, ConnectorRecord connector)
Definition registry.cpp:1661
asio::awaitable< NameCursorPage > getFormatsCursor(const std::optional< evmc::bytes32 > &after, std::size_t limit) const
Definition registry.cpp:1206
asio::awaitable< storage::sqlite::WalCheckpointStats > checkpointWal(storage::sqlite::WalCheckpointMode mode) const override
Definition registry.cpp:1651
asio::awaitable< std::size_t > getAccountsCount() const
Definition registry.cpp:1637
asio::awaitable< std::optional< evmc::bytes32 > > getFormatHash(const std::string &name) const
Definition registry.cpp:1171
asio::awaitable< bool > hasCondition(const std::string &name) const
Definition registry.cpp:1579
asio::awaitable< bool > hasConnector(const std::string &name) const
Definition registry.cpp:1142
asio::awaitable< NameCursorPage > getOwnedConditionsCursor(const chain::Address &owner, const std::optional< NameCursor > &after, std::size_t limit) const
Definition registry.cpp:1628
asio::awaitable< bool > addTransformationsBatch(std::vector< std::pair< chain::Address, TransformationRecord > > transformations, bool all_or_nothing=true)
Definition registry.cpp:1263
asio::awaitable< std::optional< std::vector< ScalarLabel > > > getScalarLabelsByFormatHash(const evmc::bytes32 &format_hash) const
Definition registry.cpp:1214
asio::awaitable< bool > addConnectorsBatch(std::vector< std::pair< chain::Address, ConnectorRecord > > connectors, bool all_or_nothing=true)
Definition registry.cpp:893
asio::awaitable< std::optional< ConnectorRecordHandle > > getConnectorRecordHandle(const std::string &name) const
Definition registry.cpp:1113
asio::awaitable< bool > hasTransformation(const std::string &name) const
Definition registry.cpp:1386
asio::awaitable< NameCursorPage > getOwnedTransformationsCursor(const chain::Address &owner, const std::optional< NameCursor > &after, std::size_t limit) const
Definition registry.cpp:1619
asio::awaitable< NameCursorPage > getFormatConnectorNamesCursor(const evmc::bytes32 &format_hash, const std::optional< NameCursor > &after, std::size_t limit) const
Definition registry.cpp:1191
Registry(const Registry &)=delete
asio::awaitable< bool > addTransformation(chain::Address address, TransformationRecord transformation)
Definition registry.cpp:1221
asio::awaitable< std::optional< TransformationRecordHandle > > getTransformationRecordHandle(const std::string &name) const
Definition registry.cpp:1353
asio::awaitable< NameCursorPage > getAccountsCursor(const std::optional< chain::Address > &after, std::size_t limit) const
Definition registry.cpp:1643
asio::awaitable< bool > addConditionsBatch(std::vector< std::pair< chain::Address, ConditionRecord > > conditions, bool all_or_nothing=true)
Definition registry.cpp:1459
asio::awaitable< bool > addConnector(chain::Address address, ConnectorRecord connector)
Definition registry.cpp:767
asio::awaitable< NameCursorPage > getOwnedConnectorsCursor(const chain::Address &owner, const std::optional< NameCursor > &after, std::size_t limit) const
Definition registry.cpp:1610
asio::awaitable< std::optional< ConditionRecordHandle > > getConditionRecordHandle(const std::string &name) const
Definition registry.cpp:1549
asio::awaitable< bool > addCondition(chain::Address address, ConditionRecord condition)
Definition registry.cpp:1417
Registry & operator=(const Registry &)=delete
Definition wal_store.hpp:10
std::string name
Definition ingestion.cpp:29
absl::flat_hash_map< std::string, ConditionRecord > conditions
Definition loader.cpp:28
absl::flat_hash_map< std::string, TransformationRecord > transformations
Definition loader.cpp:27
absl::flat_hash_map< std::string, ConnectorRecord > connectors
Definition loader.cpp:29
evmc::address Address
Definition address.hpp:18
Definition registry.hpp:23
WalCheckpointMode
Definition wal.hpp:9
Definition format_hash.hpp:26
Definition registry.hpp:30
std::list< KeyT >::iterator order_it
Definition registry.hpp:32
ValueT value
Definition registry.hpp:31
Definition registry.hpp:28
std::list< KeyT > order
Definition registry.hpp:37
absl::flat_hash_map< KeyT, Entry > entries
Definition registry.hpp:38
std::size_t capacity
Definition registry.hpp:36
const char * name
Definition registry.hpp:35