3 #include "../../data_interfaces/source/ifdv2_condition.hpp"
5 #include <launchdarkly/async/cancellation.hpp>
6 #include <launchdarkly/async/promise.hpp>
8 #include <boost/asio/any_io_executor.hpp>
17 namespace launchdarkly::server_side::data_systems {
32 std::chrono::milliseconds timeout);
36 [[nodiscard]] async::Future<Type>
Execute()
override;
38 void Close()
override;
58 async::Promise<Type> promise;
59 std::optional<async::CancellationSource> timer_cancel;
62 boost::asio::any_io_executor
const executor_;
63 std::chrono::milliseconds
const timeout_;
64 std::shared_ptr<State>
const state_;
75 std::chrono::milliseconds timeout);
90 std::chrono::milliseconds timeout);
104 std::chrono::milliseconds timeout);
106 [[nodiscard]] std::unique_ptr<data_interfaces::IFDv2Condition> Build()
113 boost::asio::any_io_executor
const executor_;
114 std::chrono::milliseconds
const timeout_;
124 std::chrono::milliseconds timeout);
126 [[nodiscard]] std::unique_ptr<data_interfaces::IFDv2Condition> Build()
133 boost::asio::any_io_executor
const executor_;
134 std::chrono::milliseconds
const timeout_;
148 std::vector<std::unique_ptr<data_interfaces::IFDv2Condition>>
164 [[nodiscard]] async::Future<data_interfaces::IFDv2Condition::Type>
165 GetFuture(async::CancellationToken token);
172 struct PendingEntry {
174 async::Promise<data_interfaces::IFDv2Condition::Type> promise;
175 std::unique_ptr<async::CancellationCallback> cancel_cb;
180 std::int64_t next_id = 0;
181 std::vector<PendingEntry> pending;
182 std::optional<data_interfaces::IFDv2Condition::Type> aggregate_result;
185 std::vector<std::unique_ptr<data_interfaces::IFDv2Condition>> conditions_;
186 std::shared_ptr<State>
const state_;
Definition: ifdv2_condition.hpp:88
Definition: ifdv2_condition.hpp:36
Type
Definition: ifdv2_condition.hpp:38
Definition: conditions.hpp:145
async::Future< data_interfaces::IFDv2Condition::Type > GetFuture(async::CancellationToken token)
Definition: conditions.cpp:164
Definition: conditions.hpp:101
data_interfaces::IFDv2Condition::Type GetType() const override
Definition: conditions.cpp:101
Definition: conditions.hpp:72
void Inform(data_interfaces::FDv2SourceResult const &result) override
Definition: conditions.cpp:76
Type GetType() const override
Definition: conditions.hpp:79
Definition: conditions.hpp:121
data_interfaces::IFDv2Condition::Type GetType() const override
Definition: conditions.cpp:114
Definition: conditions.hpp:87
Type GetType() const override
Definition: conditions.hpp:94
void Inform(data_interfaces::FDv2SourceResult const &result) override
Definition: conditions.cpp:90
Definition: conditions.hpp:29
async::Future< Type > Execute() override
Definition: conditions.cpp:24
void Close() override
Definition: conditions.cpp:29
void CancelTimer()
Definition: conditions.cpp:64
void ArmTimer()
Definition: conditions.cpp:44
Definition: fdv2_source_result.hpp:56