3 #include "data_sources/data_source.hpp"
4 #include "data_sources/data_source_status_manager.hpp"
5 #include "flag_manager/flag_manager.hpp"
7 #include <launchdarkly/client_side/client.hpp>
8 #include <launchdarkly/client_side/data_source_status.hpp>
9 #include <launchdarkly/client_side/flag_notifier.hpp>
10 #include <launchdarkly/config/client.hpp>
11 #include <launchdarkly/context.hpp>
12 #include <launchdarkly/data/evaluation_detail.hpp>
13 #include <launchdarkly/error.hpp>
14 #include <launchdarkly/events/event_processor_interface.hpp>
15 #include <launchdarkly/logging/logger.hpp>
16 #include <launchdarkly/value.hpp>
18 #include <boost/asio/executor_work_guard.hpp>
19 #include <boost/asio/io_context.hpp>
21 #include <condition_variable>
25 #include <shared_mutex>
28 #include <unordered_set>
30 namespace launchdarkly::client_side {
43 [[nodiscard]] std::unordered_map<FlagKey, Value>
AllFlags()
const override;
45 void Track(std::string event_name,
47 double metric_value)
override;
49 void Track(std::string event_name,
Value data)
override;
51 void Track(std::string event_name)
override;
60 bool default_value)
override;
63 std::string default_value)
override;
67 std::string default_value)
override;
73 double default_value)
override;
78 int default_value)
override;
83 Value default_value)
override;
99 std::unordered_set<std::string>* visited =
nullptr);
100 void TrackInternal(std::string event_name,
101 std::optional<Value> data,
102 std::optional<double> metric_value);
104 template <
typename F>
105 auto ReadContextSynchronized(F fn)
const
106 -> std::invoke_result_t<F, Context const&> {
107 std::shared_lock lock(context_mutex_);
111 void UpdateContextSynchronized(
Context context);
113 void RestartDataSource();
115 std::future<bool> StartAsyncInternal();
121 boost::asio::io_context ioc_;
122 boost::asio::executor_work_guard<boost::asio::io_context::executor_type>
126 mutable std::shared_mutex context_mutex_;
129 std::function<std::shared_ptr<data_sources::IDataSource>()>
130 data_source_factory_;
132 std::shared_ptr<data_sources::IDataSource> data_source_;
134 std::unique_ptr<events::IEventProcessor> event_processor_;
136 mutable std::mutex init_mutex_;
137 std::condition_variable init_waiter_;
141 std::thread run_thread_;
143 bool eval_reasons_available_;
Definition: context.hpp:29
Definition: evaluation_detail.hpp:18
Definition: client_impl.hpp:31
bool Initialized() const override
Definition: client_impl.cpp:206
std::string StringVariation(FlagKey const &key, std::string default_value) override
Definition: client_impl.cpp:391
Value JsonVariation(FlagKey const &key, Value default_value) override
Definition: client_impl.cpp:424
EvaluationDetail< Value > JsonVariationDetail(FlagKey const &key, Value default_value) override
Definition: client_impl.cpp:418
void FlushAsync() override
Definition: client_impl.cpp:242
flag_manager::IFlagNotifier & FlagNotifier() override
Definition: client_impl.cpp:434
EvaluationDetail< int > IntVariationDetail(FlagKey const &key, int default_value) override
Definition: client_impl.cpp:408
std::future< bool > IdentifyAsync(Context context) override
Definition: client_impl.cpp:161
std::future< bool > StartAsync() override
Definition: client_impl.cpp:202
void Track(std::string event_name, Value data, double metric_value) override
Definition: client_impl.cpp:228
std::unordered_map< FlagKey, Value > AllFlags() const override
Definition: client_impl.cpp:210
EvaluationDetail< std::string > StringVariationDetail(FlagKey const &key, std::string default_value) override
Definition: client_impl.cpp:384
data_sources::IDataSourceStatusProvider & DataSourceStatus() override
Definition: client_impl.cpp:430
bool BoolVariation(FlagKey const &key, bool default_value) override
Definition: client_impl.cpp:379
EvaluationDetail< double > DoubleVariationDetail(FlagKey const &key, double default_value) override
Definition: client_impl.cpp:397
int IntVariation(FlagKey const &key, int default_value) override
Definition: client_impl.cpp:414
double DoubleVariation(FlagKey const &key, double default_value) override
Definition: client_impl.cpp:403
EvaluationDetail< bool > BoolVariationDetail(FlagKey const &key, bool default_value) override
Definition: client_impl.cpp:373
Definition: client.hpp:26
std::string FlagKey
Definition: client.hpp:31
Definition: data_source_status_manager.hpp:17
Definition: data_source_status.hpp:83
Definition: flag_manager.hpp:11
Definition: flag_notifier.hpp:18
Definition: http_properties.hpp:70
Definition: config.hpp:20