C++ Server-Side SDK
LaunchDarkly SDK
evaluator.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/logging/logger.hpp>
7 #include <launchdarkly/value.hpp>
8 
9 #include "evaluation_error.hpp"
10 #include "evaluation_stack.hpp"
11 
12 #include "../data_interfaces/store/istore.hpp"
13 #include "../events/event_scope.hpp"
14 
15 namespace launchdarkly::server_side::evaluation {
16 
17 class Evaluator {
18  public:
25  Evaluator(Logger& logger, data_interfaces::IStore const& source);
26 
37  data_model::Flag const& flag,
38  Context const& context,
39  EventScope const& event_scope);
40 
48  [[nodiscard]] EvaluationDetail<Value> Evaluate(data_model::Flag const& flag,
49  Context const& context);
50 
51  private:
52  [[nodiscard]] EvaluationDetail<Value> Evaluate(
53  std::optional<std::string> parent_key,
54  data_model::Flag const& flag,
55  Context const& context,
56  EvaluationStack& stack,
57  EventScope const& event_scope);
58 
59  [[nodiscard]] EvaluationDetail<Value> FlagVariation(
60  data_model::Flag const& flag,
61  data_model::Flag::Variation variation_index,
62  EvaluationReason reason) const;
63 
64  [[nodiscard]] EvaluationDetail<Value> OffValue(
65  data_model::Flag const& flag,
66  EvaluationReason reason) const;
67 
68  void LogError(std::string const& key, Error const& error) const;
69 
70  Logger& logger_;
71  data_interfaces::IStore const& source_;
72 };
73 } // namespace launchdarkly::server_side::evaluation
Definition: context.hpp:29
Definition: evaluation_detail.hpp:18
Definition: evaluation_reason.hpp:13
Definition: event_scope.hpp:14
IStore provides shared ownership of flag and segment domain objects.
Definition: istore.hpp:15
Definition: evaluation_error.hpp:9
EvaluationDetail< Value > Evaluate(data_model::Flag const &flag, Context const &context, EventScope const &event_scope)
Evaluator(Logger &logger, data_interfaces::IStore const &source)
Definition: evaluator.cpp:23