3 #include <launchdarkly/context.hpp>
4 #include <launchdarkly/data/evaluation_detail.hpp>
5 #include <launchdarkly/value.hpp>
12 #include <string_view>
15 namespace launchdarkly::server_side::hooks {
46 HookContext&
Set(std::string key, std::shared_ptr<std::any> value);
53 [[nodiscard]] std::optional<std::shared_ptr<std::any>>
Get(
54 std::string
const& key)
const;
61 [[nodiscard]]
bool Has(std::string
const& key)
const;
64 std::map<std::string, std::shared_ptr<std::any>> data_;
90 [[nodiscard]] std::string_view
Name()
const;
126 [[nodiscard]] std::optional<std::reference_wrapper<Value const>>
Get(std::string
const& key)
const;
146 [[nodiscard]] std::optional<std::shared_ptr<std::any>>
GetShared(
147 std::string
const& key)
const;
154 [[nodiscard]]
bool Has(std::string
const& key)
const;
164 [[nodiscard]] std::vector<std::string>
Keys()
const;
170 std::optional<Value> value;
171 std::optional<std::shared_ptr<std::any>> shared;
176 std::map<std::string, DataEntry> data_;
221 std::shared_ptr<std::any> value);
230 std::map<std::string, EvaluationSeriesData::DataEntry> data_;
258 std::optional<std::string> environment_id);
269 [[nodiscard]] std::string_view
FlagKey()
const;
303 [[nodiscard]] std::string_view
Method()
const;
316 [[nodiscard]] std::optional<std::string_view>
EnvironmentId()
const;
332 std::string flag_key_;
334 Value default_value_;
337 std::optional<std::string> environment_id_;
362 std::optional<double> metric_value,
363 std::optional<std::reference_wrapper<Value const>> data,
365 std::optional<std::string> environment_id);
387 [[nodiscard]] std::string_view
Key()
const;
393 [[nodiscard]] std::optional<double>
MetricValue()
const;
404 [[nodiscard]] std::optional<std::reference_wrapper<Value const>>
Data()
const;
417 [[nodiscard]] std::optional<std::string_view>
EnvironmentId()
const;
435 std::optional<double> metric_value_;
436 std::optional<std::reference_wrapper<Value const>> data_;
438 std::optional<std::string> environment_id_;
461 virtual ~
Hook() =
default;
Definition: context.hpp:29
Definition: evaluation_detail.hpp:18
HookContext const & HookCtx() const
Definition: hook.cpp:139
std::optional< std::string_view > EnvironmentId() const
Definition: hook.cpp:132
Context const & EvaluationContext() const
Definition: hook.cpp:120
EvaluationSeriesContext(std::string flag_key, Context const &context, Value default_value, std::string method, HookContext const &hook_context, std::optional< std::string > environment_id)
Definition: hook.cpp:102
std::string_view Method() const
Definition: hook.cpp:128
Value const & DefaultValue() const
Definition: hook.cpp:124
std::string_view FlagKey() const
Definition: hook.cpp:116
EvaluationSeriesDataBuilder()
EvaluationSeriesData Build() const
Definition: hook.cpp:96
EvaluationSeriesDataBuilder & Set(std::string key, Value value)
Definition: hook.cpp:79
EvaluationSeriesDataBuilder & SetShared(std::string key, std::shared_ptr< std::any > value)
Definition: hook.cpp:87
std::optional< std::shared_ptr< std::any > > GetShared(std::string const &key) const
Definition: hook.cpp:50
std::vector< std::string > Keys() const
Definition: hook.cpp:62
bool Has(std::string const &key) const
Definition: hook.cpp:58
std::optional< std::reference_wrapper< Value const > > Get(std::string const &key) const
Definition: hook.cpp:43
bool Has(std::string const &key) const
Definition: hook.cpp:23
std::optional< std::shared_ptr< std::any > > Get(std::string const &key) const
Definition: hook.cpp:15
HookContext & Set(std::string key, std::shared_ptr< std::any > value)
Definition: hook.cpp:9
virtual HookMetadata const & Metadata() const =0
virtual EvaluationSeriesData AfterEvaluation(EvaluationSeriesContext const &series_context, EvaluationSeriesData data, EvaluationDetail< Value > const &detail)
Definition: hook.cpp:194
virtual void AfterTrack(TrackSeriesContext const &series_context)
Definition: hook.cpp:201
virtual EvaluationSeriesData BeforeEvaluation(EvaluationSeriesContext const &series_context, EvaluationSeriesData data)
Definition: hook.cpp:188
std::optional< std::reference_wrapper< Value const > > Data() const
Definition: hook.cpp:171
TrackSeriesContext(Context const &context, std::string key, std::optional< double > metric_value, std::optional< std::reference_wrapper< Value const >> data, HookContext const &hook_context, std::optional< std::string > environment_id)
Definition: hook.cpp:145
HookContext const & HookCtx() const
Definition: hook.cpp:182
std::optional< std::string_view > EnvironmentId() const
Definition: hook.cpp:175
std::optional< double > MetricValue() const
Definition: hook.cpp:167
Context const & TrackContext() const
Definition: hook.cpp:159
std::string_view Key() const
Definition: hook.cpp:163