C++ Client-Side SDK
LaunchDarkly SDK
data_source_update_sink.hpp
1 #pragma once
2 
3 #include <optional>
4 #include <ostream>
5 #include <string>
6 #include <unordered_map>
7 #include <vector>
8 
9 #include <launchdarkly/client_side/data_source_status.hpp>
10 #include <launchdarkly/config/shared/built/service_endpoints.hpp>
11 #include <launchdarkly/context.hpp>
12 #include <launchdarkly/data/evaluation_result.hpp>
13 #include <launchdarkly/data_model/change_set.hpp>
14 #include <launchdarkly/data_model/item_descriptor.hpp>
15 
16 namespace launchdarkly::client_side {
17 
18 using ItemDescriptor = data_model::ItemDescriptor<EvaluationResult>;
19 
20 // One flag's new state: an evaluation result, or an empty descriptor
21 // (tombstone) if the flag was deleted.
22 struct FlagChange {
23  std::string key;
24  ItemDescriptor item;
25 };
26 
27 using FlagChangeSetData = std::vector<FlagChange>;
28 
29 using FlagChangeSet = data_model::ChangeSet<FlagChangeSetData>;
30 
39  public:
40  virtual void Init(Context const& context,
41  std::unordered_map<std::string, ItemDescriptor> data) = 0;
42  virtual void Upsert(Context const& context,
43  std::string key,
44  ItemDescriptor item) = 0;
45 
55  virtual void Apply(Context const& context,
56  FlagChangeSet change_set,
57  bool from_cache) = 0;
58 
59  IDataSourceUpdateSink(IDataSourceUpdateSink const& item) = delete;
61  IDataSourceUpdateSink& operator=(IDataSourceUpdateSink const&) = delete;
62  IDataSourceUpdateSink& operator=(IDataSourceUpdateSink&&) = delete;
63  virtual ~IDataSourceUpdateSink() = default;
64 
65  protected:
66  IDataSourceUpdateSink() = default;
67 };
68 
69 } // namespace launchdarkly::client_side
Definition: context.hpp:29
Definition: data_source_update_sink.hpp:38
virtual void Apply(Context const &context, FlagChangeSet change_set, bool from_cache)=0
Definition: data_source_update_sink.hpp:22