10#include <absl/container/flat_hash_map.h>
11#include <absl/container/flat_hash_set.h>
12#include <spdlog/spdlog.h>
24 template<
typename KeyT,
typename ValueT>
33 const char *
name =
"unnamed-cache";
43 Registry(asio::io_context & io_context, std::string sqlite_path =
":memory:");
51 asio::awaitable<bool>
add(
chain::Address address, TransformationRecord transformation);
56 std::vector<std::pair<chain::Address, ConnectorRecord>>
connectors,
57 bool all_or_nothing =
true);
59 const std::string &
name)
const;
61 asio::awaitable<std::optional<evmc::bytes32>>
getFormatHash(
const std::string&
name)
const;
64 const evmc::bytes32 & format_hash,
65 const std::optional<NameCursor> & after,
66 std::size_t limit)
const;
71 std::vector<std::pair<chain::Address, TransformationRecord>>
transformations,
72 bool all_or_nothing =
true);
74 const std::string &
name)
const;
79 std::vector<std::pair<chain::Address, ConditionRecord>>
conditions,
80 bool all_or_nothing =
true);
82 const std::string &
name)
const;
87 const std::optional<NameCursor> & after,
88 std::size_t limit)
const;
91 const std::optional<NameCursor> & after,
92 std::size_t limit)
const;
95 const std::optional<NameCursor> & after,
96 std::size_t limit)
const;
101 static constexpr std::size_t kHotCacheCapacity = 1024;
103 asio::strand<asio::io_context::executor_type> _strand;
104 std::unique_ptr<IRegistryStore> _store;
Definition registry.hpp:40
asio::awaitable< bool > addConnectorsBatch(std::vector< std::pair< chain::Address, ConnectorRecord > > connectors, bool all_or_nothing=true)
Definition registry.cpp:876
asio::awaitable< bool > hasTransformation(const std::string &name) const
Definition registry.cpp:1388
asio::awaitable< bool > addConnector(chain::Address address, ConnectorRecord connector)
Definition registry.cpp:750
asio::awaitable< NameCursorPage > getOwnedConnectorsCursor(const chain::Address &owner, const std::optional< NameCursor > &after, std::size_t limit) const
Definition registry.cpp:1639
Registry(const Registry &)=delete
asio::awaitable< bool > hasConnector(const std::string &name) const
Definition registry.cpp:1137
asio::awaitable< std::size_t > getFormatConnectorNamesCount(const evmc::bytes32 &format_hash) const
Definition registry.cpp:1190
Registry & operator=(const Registry &)=delete
asio::awaitable< bool > add(chain::Address address, ConnectorRecord connector)
Definition registry.cpp:1672
asio::awaitable< bool > addTransformation(chain::Address address, TransformationRecord transformation)
Definition registry.cpp:1212
asio::awaitable< std::optional< ConditionRecordHandle > > getConditionRecordHandle(const std::string &name) const
Definition registry.cpp:1559
asio::awaitable< bool > hasCondition(const std::string &name) const
Definition registry.cpp:1600
asio::awaitable< std::optional< ConnectorRecordHandle > > getConnectorRecordHandle(const std::string &name) const
Definition registry.cpp:1096
asio::awaitable< std::optional< std::vector< ScalarLabel > > > getScalarLabelsByFormatHash(const evmc::bytes32 &format_hash) const
Definition registry.cpp:1205
asio::awaitable< std::optional< TransformationRecordHandle > > getTransformationRecordHandle(const std::string &name) const
Definition registry.cpp:1344
asio::awaitable< bool > addConditionsBatch(std::vector< std::pair< chain::Address, ConditionRecord > > conditions, bool all_or_nothing=true)
Definition registry.cpp:1469
asio::awaitable< bool > addCondition(chain::Address address, ConditionRecord condition)
Definition registry.cpp:1427
asio::awaitable< NameCursorPage > getOwnedConditionsCursor(const chain::Address &owner, const std::optional< NameCursor > &after, std::size_t limit) const
Definition registry.cpp:1657
asio::awaitable< std::optional< evmc::bytes32 > > getFormatHash(const std::string &name) const
Definition registry.cpp:1176
asio::awaitable< NameCursorPage > getOwnedTransformationsCursor(const chain::Address &owner, const std::optional< NameCursor > &after, std::size_t limit) const
Definition registry.cpp:1648
asio::awaitable< NameCursorPage > getFormatConnectorNamesCursor(const evmc::bytes32 &format_hash, const std::optional< NameCursor > &after, std::size_t limit) const
Definition registry.cpp:1196
asio::awaitable< bool > addTransformationsBatch(std::vector< std::pair< chain::Address, TransformationRecord > > transformations, bool all_or_nothing=true)
Definition registry.cpp:1254
asio::awaitable< bool > checkpointWal(WalCheckpointMode mode) const
Definition registry.cpp:1666
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:21
WalCheckpointMode
Definition registry_store.hpp:51
Definition format_hash.hpp:26
Definition registry.hpp:28
std::list< KeyT >::iterator order_it
Definition registry.hpp:30
ValueT value
Definition registry.hpp:29
Definition registry.hpp:26
absl::flat_hash_map< KeyT, Entry > entries
Definition registry.hpp:36
std::size_t capacity
Definition registry.hpp:34
std::list< KeyT > order
Definition registry.hpp:35
const char * name
Definition registry.hpp:33