C++ Server-Side SDK
LaunchDarkly SDK
all_flags_state.hpp
1 #pragma once
2 
3 #include <launchdarkly/data/evaluation_reason.hpp>
4 #include <launchdarkly/value.hpp>
5 
6 #include <cstdint>
7 #include <optional>
8 #include <string>
9 #include <unordered_map>
10 
11 namespace launchdarkly::server_side {
12 
27  public:
28  enum class Options : std::uint8_t {
32  Default = 0,
37  IncludeReasons = (1 << 0),
45  DetailsOnlyForTrackedFlags = (1 << 1),
50  ClientSideOnly = (1 << 2)
51  };
52 
56  class State {
57  public:
58  State(std::uint64_t version,
59  std::optional<std::int64_t> variation,
60  std::optional<EvaluationReason> reason,
61  bool track_events,
62  bool track_reason,
63  std::optional<std::uint64_t> debug_events_until_date);
64 
68  [[nodiscard]] std::uint64_t Version() const;
69 
74  [[nodiscard]] std::optional<std::int64_t> Variation() const;
75 
80  [[nodiscard]] std::optional<EvaluationReason> const& Reason() const;
81 
88  [[nodiscard]] bool TrackEvents() const;
89 
96  [[nodiscard]] bool TrackReason() const;
97 
102  [[nodiscard]] std::optional<std::uint64_t> const& DebugEventsUntilDate()
103  const;
104 
111  [[nodiscard]] bool OmitDetails() const;
112 
113  friend class AllFlagsStateBuilder;
114 
115  private:
116  std::uint64_t version_;
117  std::optional<std::int64_t> variation_;
118  std::optional<EvaluationReason> reason_;
119  bool track_events_;
120  bool track_reason_;
121  std::optional<std::uint64_t> debug_events_until_date_;
122  bool omit_details_;
123  };
124 
130  [[nodiscard]] bool Valid() const;
131 
135  [[nodiscard]] std::unordered_map<std::string, State> const& States() const;
136 
140  [[nodiscard]] std::unordered_map<std::string, Value> const& Values() const;
141 
145  AllFlagsState();
146 
152  AllFlagsState(std::unordered_map<std::string, Value> evaluations,
153  std::unordered_map<std::string, class State> flags_state);
154 
155  private:
156  bool const valid_;
157  std::unordered_map<std::string, class State> const flags_state_;
158  std::unordered_map<std::string, Value> const evaluations_;
159 };
160 
161 void operator|=(AllFlagsState::Options& lhs, AllFlagsState::Options rhs);
164 
167 
168 bool operator==(class AllFlagsState::State const& lhs,
169  class AllFlagsState::State const& rhs);
170 
171 bool operator==(AllFlagsState const& lhs, AllFlagsState const& rhs);
172 
173 } // namespace launchdarkly::server_side
Definition: all_flags_state_builder.hpp:15
Definition: all_flags_state.hpp:56
std::optional< std::int64_t > Variation() const
Definition: all_flags_state.cpp:24
std::optional< std::uint64_t > const & DebugEventsUntilDate() const
Definition: all_flags_state.cpp:40
std::uint64_t Version() const
Definition: all_flags_state.cpp:20
std::optional< EvaluationReason > const & Reason() const
Definition: all_flags_state.cpp:28
bool OmitDetails() const
Definition: all_flags_state.cpp:45
bool TrackEvents() const
Definition: all_flags_state.cpp:32
bool TrackReason() const
Definition: all_flags_state.cpp:36
Definition: all_flags_state.hpp:26
std::unordered_map< std::string, Value > const & Values() const
Definition: all_flags_state.cpp:67
AllFlagsState()
Definition: all_flags_state.cpp:49
std::unordered_map< std::string, State > const & States() const
Definition: all_flags_state.cpp:63
Options
Definition: all_flags_state.hpp:28
bool Valid() const
Definition: all_flags_state.cpp:58