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>
18 namespace launchdarkly::server_side::evaluation {
20 double const kBucketScale = 100'000.0;
22 enum RolloutKindLookup {
43 using Seed = std::int64_t;
58 friend std::ostream& operator<<(std::ostream& os,
62 std::variant<KeyAndSalt, Seed> prefix_;
65 using ContextHashValue = double;
81 tl::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_;
118 tl::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
BucketPrefix(Seed seed)
Definition: bucketing.cpp:25
Definition: bucketing.hpp:88
Definition: evaluation_error.hpp:9
Definition: bucketing.hpp:38