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:");
57 std::optional<evmc::bytes32> expected_format_hash = std::nullopt);
59 std::vector<std::pair<chain::Address, ConnectorRecord>> connectors,
60 bool all_or_nothing =
true);
68 const std::string & name)
const;
70 asio::awaitable<bool>
hasConnector(
const std::string & name)
const;
72 asio::awaitable<std::optional<evmc::bytes32>>
getFormatHash(
const std::string& name)
const;
77 const evmc::bytes32 & format_hash,
78 const std::optional<NameCursor> & after,
79 std::size_t limit)
const;
84 const std::optional<evmc::bytes32> & after,
85 std::size_t limit)
const;
91 std::vector<std::pair<chain::Address, TransformationRecord>> transformations,
92 bool all_or_nothing =
true);
95 const std::string & name)
const;
102 std::vector<std::pair<chain::Address, ConditionRecord>> conditions,
103 bool all_or_nothing =
true);
106 const std::string & name)
const;
108 asio::awaitable<bool>
hasCondition(
const std::string & name)
const;
112 const std::optional<NameCursor> & after,
113 std::size_t limit)
const;
117 const std::optional<NameCursor> & after,
118 std::size_t limit)
const;
122 const std::optional<NameCursor> & after,
123 std::size_t limit)
const;
128 const std::optional<chain::Address> & after,
129 std::size_t limit)
const;
141 static constexpr std::size_t kHotCacheCapacity = 1024;
143 asio::strand<asio::io_context::executor_type> _strand;
144 std::unique_ptr<IRegistryStore> _store;
asio::awaitable< std::size_t > getFormatsCount() const
Definition registry.cpp:1281
asio::awaitable< std::size_t > getFormatConnectorNamesCount(const evmc::bytes32 &format_hash) const
Definition registry.cpp:1266
asio::awaitable< NameCursorPage > getFormatsCursor(const std::optional< evmc::bytes32 > &after, std::size_t limit) const
Definition registry.cpp:1287
asio::awaitable< storage::sqlite::WalCheckpointStats > checkpointWal(storage::sqlite::WalCheckpointMode mode) const override
Definition registry.cpp:1740
asio::awaitable< std::size_t > getAccountsCount() const
Definition registry.cpp:1726
asio::awaitable< std::optional< evmc::bytes32 > > getFormatHash(const std::string &name) const
Definition registry.cpp:1233
asio::awaitable< bool > hasCondition(const std::string &name) const
Definition registry.cpp:1668
asio::awaitable< bool > hasConnector(const std::string &name) const
Definition registry.cpp:1204
asio::awaitable< NameCursorPage > getOwnedConditionsCursor(const chain::Address &owner, const std::optional< NameCursor > &after, std::size_t limit) const
Definition registry.cpp:1717
asio::awaitable< std::optional< evmc::bytes32 > > computeConnectorFormatHash(Connector connector) const
Definition registry.cpp:1247
asio::awaitable< bool > addTransformationsBatch(std::vector< std::pair< chain::Address, TransformationRecord > > transformations, bool all_or_nothing=true)
Definition registry.cpp:1346
asio::awaitable< bool > addConnector(chain::Address address, ConnectorRecord connector, std::optional< evmc::bytes32 > expected_format_hash=std::nullopt)
Definition registry.cpp:848
asio::awaitable< std::optional< std::vector< ScalarLabel > > > getScalarLabelsByFormatHash(const evmc::bytes32 &format_hash) const
Definition registry.cpp:1295
asio::awaitable< bool > addConnectorsBatch(std::vector< std::pair< chain::Address, ConnectorRecord > > connectors, bool all_or_nothing=true)
Definition registry.cpp:973
asio::awaitable< std::optional< ConnectorRecordHandle > > getConnectorRecordHandle(const std::string &name) const
Definition registry.cpp:1175
asio::awaitable< bool > hasTransformation(const std::string &name) const
Definition registry.cpp:1471
asio::awaitable< NameCursorPage > getOwnedTransformationsCursor(const chain::Address &owner, const std::optional< NameCursor > &after, std::size_t limit) const
Definition registry.cpp:1708
asio::awaitable< NameCursorPage > getFormatConnectorNamesCursor(const evmc::bytes32 &format_hash, const std::optional< NameCursor > &after, std::size_t limit) const
Definition registry.cpp:1272
Registry(const Registry &)=delete
asio::awaitable< bool > addTransformation(chain::Address address, TransformationRecord transformation)
Definition registry.cpp:1302
asio::awaitable< std::optional< TransformationRecordHandle > > getTransformationRecordHandle(const std::string &name) const
Definition registry.cpp:1438
asio::awaitable< NameCursorPage > getAccountsCursor(const std::optional< chain::Address > &after, std::size_t limit) const
Definition registry.cpp:1732
asio::awaitable< bool > addConditionsBatch(std::vector< std::pair< chain::Address, ConditionRecord > > conditions, bool all_or_nothing=true)
Definition registry.cpp:1546
asio::awaitable< bool > setMaterializationCursor(std::int64_t seq)
Definition registry.cpp:1755
asio::awaitable< NameCursorPage > getOwnedConnectorsCursor(const chain::Address &owner, const std::optional< NameCursor > &after, std::size_t limit) const
Definition registry.cpp:1699
asio::awaitable< std::optional< ConditionRecordHandle > > getConditionRecordHandle(const std::string &name) const
Definition registry.cpp:1638
std::int64_t getMaterializationCursor() const
Definition registry.cpp:1750
asio::awaitable< bool > addCondition(chain::Address address, ConditionRecord condition)
Definition registry.cpp:1502
Registry & operator=(const Registry &)=delete
Definition wal_store.hpp:10
evmc::address Address
Definition address.hpp:18
Definition registry.hpp:23
dcn::chain::ScalarLabel ScalarLabel
Definition registry.hpp:24
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