3 #include "../../data_interfaces/source/ifdv2_synchronizer.hpp"
5 #include <launchdarkly/async/cancellation.hpp>
6 #include <launchdarkly/logging/logger.hpp>
7 #include <launchdarkly/network/requester.hpp>
8 #include <launchdarkly/server_side/config/built/all_built.hpp>
10 #include <boost/asio/any_io_executor.hpp>
17 namespace launchdarkly::server_side::data_systems {
40 boost::asio::any_io_executor
const& executor,
42 std::string polling_base_url,
44 std::optional<std::string> filter_key,
45 std::chrono::seconds poll_interval);
49 async::Future<data_interfaces::FDv2SourceResult>
Next(
50 data_model::Selector selector)
override;
52 void Close()
override;
54 [[nodiscard]] std::string
const&
Identity()
const override;
63 boost::asio::any_io_executor
const& executor,
64 std::chrono::seconds poll_interval,
65 std::string polling_base_url,
67 std::optional<std::string> filter_key);
71 async::Future<network::HttpResult> Request(
72 data_model::Selector
const& selector)
const;
76 network::HttpResult
const& res);
81 async::Future<bool> CreatePollDelayFuture(
82 async::CancellationToken token = {});
85 void RecordPollStarted();
90 async::Future<bool> Delay(std::chrono::nanoseconds duration,
91 async::CancellationToken token = {});
98 std::chrono::seconds
const poll_interval_;
99 std::string
const polling_base_url_;
101 std::optional<std::string>
const filter_key_;
102 network::Requester
const requester_;
103 boost::asio::any_io_executor
const executor_;
107 std::optional<std::chrono::time_point<std::chrono::steady_clock>>
115 static async::Future<data_interfaces::FDv2SourceResult> DoNext(
116 std::shared_ptr<State> state,
117 async::Future<std::monostate> closed,
118 data_model::Selector selector);
124 static async::Future<data_interfaces::FDv2SourceResult> DoPoll(
125 std::shared_ptr<State> state,
126 async::Future<std::monostate> closed,
127 data_model::Selector
const& selector);
131 async::Promise<std::monostate> close_promise_;
134 std::shared_ptr<State> state_;
Definition: http_properties.hpp:70
Definition: ifdv2_synchronizer.hpp:19
Definition: polling_synchronizer.hpp:33
FDv2PollingSynchronizer(boost::asio::any_io_executor const &executor, Logger const &logger, std::string polling_base_url, config::built::HttpProperties const &http_properties, std::optional< std::string > filter_key, std::chrono::seconds poll_interval)
Definition: polling_synchronizer.cpp:81
async::Future< data_interfaces::FDv2SourceResult > Next(data_model::Selector selector) override
Definition: polling_synchronizer.cpp:105
std::string const & Identity() const override
Definition: polling_synchronizer.cpp:114
void Close() override
Definition: polling_synchronizer.cpp:110
Definition: fdv2_source_result.hpp:56