C++ Server-Side SDK
LaunchDarkly SDK
event_factory.hpp
1 #pragma once
2 
3 #include <launchdarkly/context.hpp>
4 #include <launchdarkly/data/evaluation_detail.hpp>
5 #include <launchdarkly/data_model/flag.hpp>
6 #include <launchdarkly/events/data/events.hpp>
7 
8 #include <optional>
9 #include <string>
10 
11 namespace launchdarkly::server_side {
12 
13 class EventFactory {
14  enum class ReasonPolicy {
15  Default = 0,
16  Require = 1,
17  };
18 
19  public:
20  [[nodiscard]] static EventFactory WithReasons();
21  [[nodiscard]] static EventFactory WithoutReasons();
22 
23  [[nodiscard]] events::InputEvent UnknownFlag(std::string const& key,
24  Context const& ctx,
26  Value default_val) const;
27 
28  [[nodiscard]] events::InputEvent Eval(
29  std::string const& key,
30  Context const& ctx,
31  std::optional<data_model::Flag> const& flag,
33  Value default_value,
34  std::optional<std::string> prereq_of) const;
35 
36  [[nodiscard]] events::InputEvent Identify(Context ctx) const;
37 
38  [[nodiscard]] events::InputEvent Custom(
39  Context const& ctx,
40  std::string event_name,
41  std::optional<Value> data,
42  std::optional<double> metric_value) const;
43 
44  private:
45  EventFactory(ReasonPolicy reason_policy);
46  events::InputEvent FeatureRequest(
47  std::string const& key,
48  Context const& ctx,
49  std::optional<data_model::Flag> const& flag,
51  Value default_val,
52  std::optional<std::string> prereq_of) const;
53 
54  ReasonPolicy const reason_policy_;
55  std::function<events::Date()> now_;
56 };
57 } // namespace launchdarkly::server_side
Definition: context.hpp:29
Definition: evaluation_detail.hpp:18
Definition: value.hpp:42
Definition: event_factory.hpp:13