3 #include "../../data_components/status_notifications/data_source_status_manager.hpp"
4 #include "../../data_interfaces/destination/idestination.hpp"
5 #include "../../data_interfaces/source/idata_synchronizer.hpp"
6 #include "../../data_interfaces/source/ifdv2_synchronizer.hpp"
8 #include <launchdarkly/async/promise.hpp>
9 #include <launchdarkly/connection.hpp>
19 namespace launchdarkly::server_side::data_systems {
39 std::function<std::shared_ptr<data_interfaces::IDataSynchronizer>(
52 async::Future<data_interfaces::FDv2SourceResult>
Next(
53 data_model::Selector selector)
override;
54 void Close()
override;
55 [[nodiscard]] std::string
const&
Identity()
const override;
65 explicit State(async::Future<std::monostate> closed_future);
67 async::Future<data_interfaces::FDv2SourceResult> GetNext();
72 void ResolvePendingAsShutdown();
79 async::Future<std::monostate>
const closed_future_;
81 mutable std::mutex mutex_;
83 std::optional<async::Promise<data_interfaces::FDv2SourceResult>>
85 std::deque<data_interfaces::FDv2SourceResult> result_queue_;
94 explicit ConvertingDestination(std::weak_ptr<State> state);
95 void Init(data_model::SDKDataSet data_set)
override;
96 void Upsert(std::string
const& key,
97 data_model::FlagDescriptor flag)
override;
98 void Upsert(std::string
const& key,
99 data_model::SegmentDescriptor segment)
override;
100 [[nodiscard]] std::string
const&
Identity()
const override;
103 std::weak_ptr<State> state_;
108 async::Promise<std::monostate> close_promise_;
112 std::shared_ptr<State>
const state_;
113 std::unique_ptr<ConvertingDestination>
const destination_;
115 std::unique_ptr<data_components::DataSourceStatusManager>
const
117 std::unique_ptr<IConnection>
const status_subscription_;
119 std::shared_ptr<data_interfaces::IDataSynchronizer>
const fdv1_source_;
123 std::mutex lifecycle_mutex_;
127 bool started_ =
false;
Definition: data_source_status_manager.hpp:16
IDestination represents a sink for data received by the SDK. A destination may be a database,...
Definition: idestination.hpp:14
Definition: ifdv2_synchronizer.hpp:19
Definition: fdv1_adapter_synchronizer.hpp:36
void Close() override
Definition: fdv1_adapter_synchronizer.cpp:191
FDv1AdapterSynchronizer(SourceBuilder source_builder)
Definition: fdv1_adapter_synchronizer.cpp:124
std::string const & Identity() const override
Definition: fdv1_adapter_synchronizer.cpp:203
async::Future< data_interfaces::FDv2SourceResult > Next(data_model::Selector selector) override
Definition: fdv1_adapter_synchronizer.cpp:158
Definition: fdv2_source_result.hpp:56