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"
7#include <launchdarkly/server_side/config/built/all_built.hpp>
9#include <launchdarkly/logging/logger.hpp>
10#include <launchdarkly/network/asio_requester.hpp>
12#include <boost/asio/any_io_executor.hpp>
16namespace launchdarkly::server_side::data_systems {
20 public std::enable_shared_from_this<PollingDataSource> {
31 data_model::SDKDataSet
const* bootstrap_data)
override;
33 void ShutdownAsync(std::function<
void()> completion)
override;
35 [[nodiscard]] std::string
const&
Identity()
const override;
39 void HandlePollResult(network::HttpResult
const& res);
41 Logger
const& logger_;
50 network::AsioRequester requester_;
53 std::chrono::seconds polling_interval_;
56 network::HttpRequest request_;
60 std::optional<std::string> etag_;
63 boost::asio::steady_timer timer_;
66 std::chrono::time_point<std::chrono::system_clock> last_poll_start_;
71 void StartPollingTimer();
Definition http_properties.hpp:26
Definition service_endpoints.hpp:11
Definition data_source_status_manager.hpp:16
IDataSynchronizer obtains data via a background synchronization mechanism, updating an IDestination w...
Definition idata_synchronizer.hpp:17
IDestination represents a sink for data received by the SDK. A destination may be a database,...
Definition idestination.hpp:14
Definition polling_data_source.hpp:20
std::string const & Identity() const override
Definition polling_data_source.cpp:60
void ShutdownAsync(std::function< void()> completion) override
Stops the synchronization mechanism. Stop will be called only once after StartAsync....
Definition polling_data_source.cpp:250
void StartAsync(data_interfaces::IDestination *dest, data_model::SDKDataSet const *bootstrap_data) override
Starts synchronizing data into the given IDestination.
Definition polling_data_source.cpp:228
Definition data_source_config.hpp:36