9#include <absl/container/flat_hash_map.h>
10#include <spdlog/spdlog.h>
15#include <evmc/evmc.hpp>
17 #define interface __STRUCT__
70 asio::awaitable<std::optional<Feature>>
getNewestFeature(
const std::string& name)
const;
85 asio::awaitable<std::optional<Feature>>
getFeature(
const std::string& name,
const evmc::address &
address)
const;
128 asio::awaitable<std::optional<Transformation>>
getTransformation(
const std::string& name,
const evmc::address &
address)
const;
153 asio::awaitable<std::optional<Condition>>
getNewestCondition(
const std::string& name)
const;
168 asio::awaitable<std::optional<Condition>>
getCondition(
const std::string& name,
const evmc::address &
address)
const;
269 asio::strand<asio::io_context::executor_type> _strand;
271 absl::flat_hash_map<std::string, evmc::address> _newest_feature;
272 absl::flat_hash_map<std::string, evmc::address> _newest_transformation;
273 absl::flat_hash_map<std::string, evmc::address> _newest_condition;
275 absl::flat_hash_map<std::string, absl::flat_hash_map<evmc::address, FeatureRecord>> _features;
276 absl::flat_hash_map<std::string, absl::flat_hash_map<evmc::address, TransformationRecord>> _transformations;
277 absl::flat_hash_map<std::string, absl::flat_hash_map<evmc::address, Node<Condition>>> _conditions;
280 absl::flat_hash_map<evmc::address, absl::flat_hash_set<std::string>> _owned_features;
281 absl::flat_hash_map<evmc::address, absl::flat_hash_set<std::string>> _owned_transformations;
282 absl::flat_hash_map<evmc::address, absl::flat_hash_set<std::string>> _owned_conditions;
A class that represents a registry of features, transformations, and conditions.
Definition registry.hpp:37
asio::awaitable< std::optional< Condition > > getNewestCondition(const std::string &name) const
Retrieves the newest condition by name.
Definition registry.cpp:274
asio::awaitable< std::optional< Transformation > > getNewestTransformation(const std::string &name) const
Retrieves the newest transformation by name.
Definition registry.cpp:223
asio::awaitable< bool > isConditionBucketEmpty(const std::string &name) const
Checks if a condition bucket is empty.
Definition registry.cpp:64
asio::awaitable< std::optional< Feature > > getFeature(const std::string &name, const evmc::address &address) const
Retrieves a specific feature by name and address.
Definition registry.cpp:153
asio::awaitable< absl::flat_hash_set< std::string > > getOwnedFeatures(const evmc::address &address) const
Definition registry.cpp:299
asio::awaitable< bool > containsFeatureBucket(const std::string &name) const
Checks if a feature bucket exists in the registry.
Definition registry.cpp:27
asio::awaitable< bool > addTransformation(evmc::address address, Transformation transformation, evmc::address owner, std::filesystem::path source)
Adds a transformation to the registry.
Definition registry.cpp:171
asio::awaitable< std::optional< Feature > > getNewestFeature(const std::string &name) const
Retrieves the newest feature by name.
Definition registry.cpp:145
asio::awaitable< bool > isFeatureBucketEmpty(const std::string &name) const
Checks if a feature bucket is empty.
Definition registry.cpp:34
asio::awaitable< bool > isTransformationBucketEmpty(const std::string &name) const
Checks if a transformation bucket is empty.
Definition registry.cpp:49
asio::awaitable< bool > containsConditionBucket(const std::string &name) const
Checks if a condition bucket exists in the registry.
Definition registry.cpp:57
asio::awaitable< std::optional< Transformation > > getTransformation(const std::string &name, const evmc::address &address) const
Retrieves a specific transformation by name and address.
Definition registry.cpp:231
asio::awaitable< bool > addCondition(evmc::address address, Condition condition, std::filesystem::path source)
Adds a condition to the registry.
Definition registry.cpp:249
Registry & operator=(const Registry &)=delete
asio::awaitable< absl::flat_hash_set< std::string > > getOwnedTransformations(const evmc::address &address) const
Definition registry.cpp:307
asio::awaitable< std::optional< Condition > > getCondition(const std::string &name, const evmc::address &address) const
Retrieves a specific condition by name and address.
Definition registry.cpp:282
Registry(const Registry &)=delete
asio::awaitable< bool > addFeature(evmc::address address, Feature feature, evmc::address owner, std::filesystem::path source)
Adds a feature to the registry.
Definition registry.cpp:73
asio::awaitable< bool > containsTransformationBucket(const std::string &name) const
Checks if a transformation bucket exists in the registry.
Definition registry.cpp:42
asio::awaitable< bool > checkIfSubFeaturesExist(const Feature &feature) const
Recursively checks if all subfeatures exist in the registry.
Definition registry.cpp:11
Definition decentralised_art.hpp:30
Definition registry.hpp:263
std::filesystem::path path
Definition registry.hpp:265
T value
Definition registry.hpp:264