3#include "evaluation_error.hpp"
5#include <launchdarkly/attribute_reference.hpp>
6#include <launchdarkly/context.hpp>
7#include <launchdarkly/data_model/flag.hpp>
9#include <tl/expected.hpp>
18namespace launchdarkly::server_side::evaluation {
20double const kBucketScale = 100'000.0;
22enum RolloutKindLookup {
43 using Seed = std::int64_t;
58 friend std::ostream& operator<<(std::ostream& os,
62 std::variant<KeyAndSalt, Seed> prefix_;
65using ContextHashValue = double;
81tl::expected<std::pair<ContextHashValue, RolloutKindLookup>,
Error> Bucket(
86 std::string
const& context_kind);
91 data_model::Flag::Rollout::WeightedVariation weighted_variation,
94 BucketResult(data_model::Flag::Variation variation,
bool in_experiment);
98 [[nodiscard]] std::size_t VariationIndex()
const;
100 [[nodiscard]]
bool InExperiment()
const;
103 std::size_t variation_index_;
118tl::expected<BucketResult, Error> Variation(
119 data_model::Flag::VariationOrRollout
const& variation_or_rollout,
120 std::string
const& flag_key,
122 std::optional<std::string>
const& salt);
Definition attribute_reference.hpp:34
Definition context.hpp:29
Definition bucketing.hpp:36
Definition bucketing.hpp:88
Definition evaluation_error.hpp:9
Definition bucketing.hpp:38