C++ Server-Side SDK
LaunchDarkly SDK
background_sync_system.hpp
1 #pragma once
2 
3 #include "../../data_components/change_notifier/change_notifier.hpp"
4 #include "../../data_components/memory_store/memory_store.hpp"
5 #include "../../data_components/status_notifications/data_source_status_manager.hpp"
6 #include "../../data_interfaces/source/idata_synchronizer.hpp"
7 #include "../../data_interfaces/system/idata_system.hpp"
8 
9 #include <launchdarkly/data_model/descriptors.hpp>
10 #include <launchdarkly/logging/logger.hpp>
11 #include <launchdarkly/server_side/config/built/all_built.hpp>
12 
13 #include <boost/asio/any_io_executor.hpp>
14 
15 namespace launchdarkly::server_side::data_systems {
16 
28  public:
30  config::built::ServiceEndpoints const& endpoints,
31  config::built::BackgroundSyncConfig const& background_sync_config,
32  config::built::HttpProperties http_properties,
33  boost::asio::any_io_executor ioc,
35  Logger const& logger);
36 
37  BackgroundSync(BackgroundSync const& item) = delete;
38  BackgroundSync(BackgroundSync&& item) = delete;
39  BackgroundSync& operator=(BackgroundSync const&) = delete;
40  BackgroundSync& operator=(BackgroundSync&&) = delete;
41 
42  std::shared_ptr<data_model::FlagDescriptor> GetFlag(
43  std::string const& key) const override;
44  std::shared_ptr<data_model::SegmentDescriptor> GetSegment(
45  std::string const& key) const override;
46  std::unordered_map<std::string, std::shared_ptr<data_model::FlagDescriptor>>
47  AllFlags() const override;
48  std::unordered_map<std::string,
49  std::shared_ptr<data_model::SegmentDescriptor>>
50  AllSegments() const override;
51 
52  std::string const& Identity() const override;
53 
54  void Initialize() override;
55 
56  bool Initialized() const override;
57 
58  private:
60  data_components::ChangeNotifier change_notifier_;
61  // Needs to be shared to that the source can keep itself alive through
62  // async operations.
63  std::shared_ptr<data_interfaces::IDataSynchronizer> synchronizer_;
64 };
65 } // namespace launchdarkly::server_side::data_systems
Definition: http_properties.hpp:26
Definition: service_endpoints.hpp:11
Definition: data_source_status_manager.hpp:16
IDataSystem obtains data used for flag evaluations and makes it available to other components.
Definition: idata_system.hpp:11
Definition: background_sync_system.hpp:27
bool Initialized() const override
Definition: background_sync_system.cpp:41
std::string const & Identity() const override
Definition: background_sync_system.cpp:45
std::unordered_map< std::string, std::shared_ptr< data_model::SegmentDescriptor > > AllSegments() const override
Get a map of all segments.
Definition: background_sync_system.cpp:66
std::unordered_map< std::string, std::shared_ptr< data_model::FlagDescriptor > > AllFlags() const override
Get a map of all flags.
Definition: background_sync_system.cpp:61
std::shared_ptr< data_model::SegmentDescriptor > GetSegment(std::string const &key) const override
Get the segment named by key. Returns nullptr if no such flag exists.
Definition: background_sync_system.cpp:55
void Initialize() override
Initializes the system. This method will be called before any of the IStore methods are called.
Definition: background_sync_system.cpp:36
std::shared_ptr< data_model::FlagDescriptor > GetFlag(std::string const &key) const override
Get the flag named by key. Returns nullptr if no such flag exists.
Definition: background_sync_system.cpp:50