9#include <absl/container/flat_hash_map.h>
10#include <spdlog/spdlog.h>
31 Registry(asio::io_context & io_context);
39 asio::awaitable<std::optional<Particle>>
getNewestParticle(
const std::string& name)
const;
40 asio::awaitable<std::optional<Particle>>
getParticle(
const std::string& name,
const evm::Address & address)
const;
66 asio::awaitable<std::optional<Feature>>
getNewestFeature(
const std::string& name)
const;
81 asio::awaitable<std::optional<Feature>>
getFeature(
const std::string& name,
const evm::Address & address)
const;
149 asio::awaitable<std::optional<Condition>>
getNewestCondition(
const std::string& name)
const;
164 asio::awaitable<std::optional<Condition>>
getCondition(
const std::string& name,
const evm::Address & address)
const;
251 asio::strand<asio::io_context::executor_type> _strand;
253 absl::flat_hash_map<std::string, evm::Address> _newest_particle;
254 absl::flat_hash_map<std::string, evm::Address> _newest_feature;
255 absl::flat_hash_map<std::string, evm::Address> _newest_transformation;
256 absl::flat_hash_map<std::string, evm::Address> _newest_condition;
258 absl::flat_hash_map<std::string, absl::flat_hash_map<evm::Address, ParticleRecord>> _particles;
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_particles;
265 absl::flat_hash_map<evm::Address, absl::flat_hash_set<std::string>> _owned_features;
266 absl::flat_hash_map<evm::Address, absl::flat_hash_set<std::string>> _owned_transformations;
267 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:385
asio::awaitable< bool > isFeatureBucketEmpty(const std::string &name) const
Checks if a feature bucket is empty.
Definition registry.cpp:33
asio::awaitable< absl::flat_hash_set< std::string > > getOwnedParticles(const evm::Address &address) const
Definition registry.cpp:369
asio::awaitable< bool > containsTransformationBucket(const std::string &name) const
Checks if a transformation bucket exists in the registry.
Definition registry.cpp:41
asio::awaitable< std::optional< Condition > > getNewestCondition(const std::string &name) const
Retrieves the newest condition by name.
Definition registry.cpp:344
asio::awaitable< std::optional< Transformation > > getNewestTransformation(const std::string &name) const
Retrieves the newest transformation by name.
Definition registry.cpp:281
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:289
asio::awaitable< absl::flat_hash_set< std::string > > getOwnedConditions(const evm::Address &address) const
Definition registry.cpp:393
asio::awaitable< bool > containsFeatureBucket(const std::string &name) const
Checks if a feature bucket exists in the registry.
Definition registry.cpp:26
asio::awaitable< std::optional< Particle > > getNewestParticle(const std::string &name) const
Definition registry.cpp:138
asio::awaitable< absl::flat_hash_set< std::string > > getOwnedFeatures(const evm::Address &address) const
Definition registry.cpp:377
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:226
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:352
asio::awaitable< bool > isTransformationBucketEmpty(const std::string &name) const
Checks if a transformation bucket is empty.
Definition registry.cpp:48
asio::awaitable< std::optional< Particle > > getParticle(const std::string &name, const evm::Address &address) const
Definition registry.cpp:146
asio::awaitable< bool > addParticle(evm::Address address, ParticleRecord particle)
Definition registry.cpp:71
asio::awaitable< bool > containsParticleBucket(const std::string &name) const
Definition registry.cpp:11
Registry(const Registry &)=delete
asio::awaitable< bool > addTransformation(evm::Address address, TransformationRecord transformation)
Adds a transformation to the registry.
Definition registry.cpp:244
asio::awaitable< bool > isParticleBucketEmpty(const std::string &name) const
Definition registry.cpp:18
asio::awaitable< bool > addCondition(evm::Address address, ConditionRecord condition)
Adds a condition to the registry.
Definition registry.cpp:307
asio::awaitable< std::optional< Feature > > getNewestFeature(const std::string &name) const
Retrieves the newest feature by name.
Definition registry.cpp:218
asio::awaitable< bool > addFeature(evm::Address address, FeatureRecord feature)
Adds a feature to the registry.
Definition registry.cpp:163
asio::awaitable< bool > containsConditionBucket(const std::string &name) const
Checks if a condition bucket exists in the registry.
Definition registry.cpp:56
asio::awaitable< bool > isConditionBucketEmpty(const std::string &name) const
Checks if a condition bucket is empty.
Definition registry.cpp:63
Registry & operator=(const Registry &)=delete
evmc::address Address
Definition evm.hpp:44
Definition registry.hpp:18