C++ Server-Side SDK
LaunchDarkly SDK
Loading...
Searching...
No Matches
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
15namespace launchdarkly::server_side::evaluation {
16
17class 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:
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)