3 #include "data_kind.hpp"
4 #include "tagged_data.hpp"
6 #include <launchdarkly/data_model/descriptors.hpp>
7 #include <launchdarkly/data_model/flag.hpp>
8 #include <launchdarkly/data_model/rule_clause.hpp>
9 #include <launchdarkly/data_model/segment.hpp>
15 namespace launchdarkly::server_side::data_components {
29 using DataType = std::array<TaggedData<std::set<std::string>>,
30 static_cast<std::size_t
>(DataKind::kKindCount)>;
31 void Set(DataKind kind, std::string key);
33 void Remove(DataKind kind, std::string
const& key);
35 [[nodiscard]]
bool Contains(DataKind kind, std::string
const& key)
const;
37 [[nodiscard]] std::set<std::string>
const& SetForKind(DataKind kind);
43 [[nodiscard]] std::size_t
Size()
const;
45 [[nodiscard]]
typename DataType::const_iterator begin()
const;
47 [[nodiscard]]
typename DataType::const_iterator end()
const;
50 [[nodiscard]] std::set<std::string>
const& Data(DataKind kind)
const;
52 [[nodiscard]] std::set<std::string>& Data(DataKind kind);
71 std::array<TaggedData<std::unordered_map<std::string, DependencySet>>,
72 static_cast<std::size_t
>(DataKind::kKindCount)>;
75 [[nodiscard]] std::optional<DependencySet> Get(
77 std::string
const& key)
const;
81 [[nodiscard]]
typename DataType::const_iterator begin()
const;
83 [[nodiscard]]
typename DataType::const_iterator end()
const;
103 data_model::FlagDescriptor
const& flag);
112 data_model::SegmentDescriptor
const& segment);
124 std::string
const& key,
137 std::string
const& key,
148 static void CalculateClauseDeps(
150 std::vector<data_model::Clause>
const& clauses);
Definition: dependency_tracker.hpp:67
Definition: dependency_tracker.hpp:26
std::size_t Size() const
Definition: dependency_tracker.cpp:27
Definition: dependency_tracker.hpp:94
void UpdateDependencies(std::string const &key, data_model::FlagDescriptor const &flag)
Definition: dependency_tracker.cpp:99
void Clear()
Definition: dependency_tracker.cpp:193
void CalculateChanges(DataKind kind, std::string const &key, DependencySet &dependency_set)
Definition: dependency_tracker.cpp:130