9#include <absl/container/flat_hash_map.h>
10#include <spdlog/spdlog.h>
31 Registry(asio::io_context & io_context);
61 asio::awaitable<std::optional<Feature>>
getNewestFeature(
const std::string& name)
const;
76 asio::awaitable<std::optional<Feature>>
getFeature(
const std::string& name,
const evm::Address & address)
const;
144 asio::awaitable<std::optional<Condition>>
getNewestCondition(
const std::string& name)
const;
159 asio::awaitable<std::optional<Condition>>
getCondition(
const std::string& name,
const evm::Address & address)
const;
253 asio::strand<asio::io_context::executor_type> _strand;
255 absl::flat_hash_map<std::string, evm::Address> _newest_feature;
256 absl::flat_hash_map<std::string, evm::Address> _newest_transformation;
257 absl::flat_hash_map<std::string, evm::Address> _newest_condition;
259 absl::flat_hash_map<std::string, absl::flat_hash_map<evm::Address, FeatureRecord>> _features;
260 absl::flat_hash_map<std::string, absl::flat_hash_map<evm::Address, TransformationRecord>> _transformations;
261 absl::flat_hash_map<std::string, absl::flat_hash_map<evm::Address, ConditionRecord>> _conditions;
264 absl::flat_hash_map<evm::Address, absl::flat_hash_set<std::string>> _owned_features;
265 absl::flat_hash_map<evm::Address, absl::flat_hash_set<std::string>> _owned_transformations;
266 absl::flat_hash_map<evm::Address, absl::flat_hash_set<std::string>> _owned_conditions;
A class that represents a registry of features, transformations, and conditions.
Definition registry.hpp:28
asio::awaitable< absl::flat_hash_set< std::string > > getOwnedTransformations(const evm::Address &address) const
Definition registry.cpp:350
asio::awaitable< bool > checkIfSubFeaturesExist(const Feature &feature) const
Recursively checks if all subfeatures exist in the registry.
Definition registry.cpp:11
asio::awaitable< bool > isFeatureBucketEmpty(const std::string &name) const
Checks if a feature bucket is empty.
Definition registry.cpp:34
asio::awaitable< bool > containsTransformationBucket(const std::string &name) const
Checks if a transformation bucket exists in the registry.
Definition registry.cpp:42
asio::awaitable< std::optional< Condition > > getNewestCondition(const std::string &name) const
Retrieves the newest condition by name.
Definition registry.cpp:317
asio::awaitable< std::optional< Transformation > > getNewestTransformation(const std::string &name) const
Retrieves the newest transformation by name.
Definition registry.cpp:235
asio::awaitable< std::optional< Transformation > > getTransformation(const std::string &name, const evm::Address &address) const
Retrieves a specific transformation by name and address.
Definition registry.cpp:243
asio::awaitable< absl::flat_hash_set< std::string > > getOwnedConditions(const evm::Address &address) const
Definition registry.cpp:358
asio::awaitable< bool > containsFeatureBucket(const std::string &name) const
Checks if a feature bucket exists in the registry.
Definition registry.cpp:27
asio::awaitable< absl::flat_hash_set< std::string > > getOwnedFeatures(const evm::Address &address) const
Definition registry.cpp:342
asio::awaitable< std::optional< Feature > > getFeature(const std::string &name, const evm::Address &address) const
Retrieves a specific feature by name and address.
Definition registry.cpp:161
asio::awaitable< std::optional< Condition > > getCondition(const std::string &name, const evm::Address &address) const
Retrieves a specific condition by name and address.
Definition registry.cpp:325
asio::awaitable< bool > isTransformationBucketEmpty(const std::string &name) const
Checks if a transformation bucket is empty.
Definition registry.cpp:49
Registry(const Registry &)=delete
asio::awaitable< bool > addTransformation(evm::Address address, TransformationRecord transformation)
Adds a transformation to the registry.
Definition registry.cpp:179
asio::awaitable< bool > addCondition(evm::Address address, ConditionRecord condition)
Adds a condition to the registry.
Definition registry.cpp:261
asio::awaitable< std::optional< Feature > > getNewestFeature(const std::string &name) const
Retrieves the newest feature by name.
Definition registry.cpp:153
asio::awaitable< bool > addFeature(evm::Address address, FeatureRecord feature)
Adds a feature to the registry.
Definition registry.cpp:73
asio::awaitable< bool > containsConditionBucket(const std::string &name) const
Checks if a condition bucket exists in the registry.
Definition registry.cpp:57
asio::awaitable< bool > isConditionBucketEmpty(const std::string &name) const
Checks if a condition bucket is empty.
Definition registry.cpp:64
Registry & operator=(const Registry &)=delete
evmc::address Address
Definition evm.hpp:44
Definition registry.hpp:18