@@ -27,10 +27,32 @@ bool EvaluationReason::InExperiment() const {
2727 return in_experiment_;
2828}
2929
30+ enum EvaluationReason::BigSegmentsStatus
31+ EvaluationReason::BigSegmentsStatus () const {
32+ return big_segments_status_;
33+ }
34+
3035std::optional<std::string> EvaluationReason::BigSegmentStatus () const {
3136 return big_segment_status_;
3237}
3338
39+ EvaluationReason::EvaluationReason (
40+ enum Kind kind,
41+ std::optional<enum ErrorKind> error_kind,
42+ std::optional<std::size_t > rule_index,
43+ std::optional<std::string> rule_id,
44+ std::optional<std::string> prerequisite_key,
45+ bool in_experiment,
46+ enum BigSegmentsStatus big_segments_status)
47+ : kind_(kind),
48+ error_kind_ (error_kind),
49+ rule_index_(rule_index),
50+ rule_id_(std::move(rule_id)),
51+ prerequisite_key_(std::move(prerequisite_key)),
52+ in_experiment_(in_experiment),
53+ big_segments_status_(big_segments_status),
54+ big_segment_status_(std::nullopt ) {}
55+
3456EvaluationReason::EvaluationReason (
3557 enum Kind kind,
3658 std::optional<enum ErrorKind> error_kind,
@@ -45,44 +67,69 @@ EvaluationReason::EvaluationReason(
4567 rule_id_(std::move(rule_id)),
4668 prerequisite_key_(std::move(prerequisite_key)),
4769 in_experiment_(in_experiment),
70+ big_segments_status_(BigSegmentsStatus::kNone ),
4871 big_segment_status_(std::move(big_segment_status)) {}
4972
5073EvaluationReason::EvaluationReason (enum ErrorKind error_kind)
5174 : EvaluationReason(Kind::kError ,
5275 error_kind,
53- std::nullopt ,
54- std::nullopt ,
55- std::nullopt ,
56- false ,
57- std:: nullopt ) {}
76+ /* rule_index= */ std::nullopt ,
77+ /* rule_id= */ std::nullopt ,
78+ /* prerequisite_key= */ std::nullopt ,
79+ /* in_experiment= */ false ,
80+ BigSegmentsStatus:: kNone ) {}
5881
5982EvaluationReason EvaluationReason::Off () {
60- return {Kind::kOff , std::nullopt , std::nullopt , std::nullopt ,
61- std::nullopt , false , std::nullopt };
83+ return {Kind::kOff ,
84+ /* error_kind= */ std::nullopt ,
85+ /* rule_index= */ std::nullopt ,
86+ /* rule_id= */ std::nullopt ,
87+ /* prerequisite_key= */ std::nullopt ,
88+ /* in_experiment= */ false ,
89+ BigSegmentsStatus::kNone };
6290}
6391
6492EvaluationReason EvaluationReason::PrerequisiteFailed (
6593 std::string prerequisite_key) {
66- return {
67- Kind::kPrerequisiteFailed , std::nullopt , std::nullopt , std::nullopt ,
68- std::move (prerequisite_key), false , std::nullopt };
94+ return {Kind::kPrerequisiteFailed ,
95+ /* error_kind= */ std::nullopt ,
96+ /* rule_index= */ std::nullopt ,
97+ /* rule_id= */ std::nullopt ,
98+ std::move (prerequisite_key),
99+ /* in_experiment= */ false ,
100+ BigSegmentsStatus::kNone };
69101}
70102
71103EvaluationReason EvaluationReason::TargetMatch () {
72- return {Kind::kTargetMatch , std::nullopt , std::nullopt , std::nullopt ,
73- std::nullopt , false , std::nullopt };
104+ return {Kind::kTargetMatch ,
105+ /* error_kind= */ std::nullopt ,
106+ /* rule_index= */ std::nullopt ,
107+ /* rule_id= */ std::nullopt ,
108+ /* prerequisite_key= */ std::nullopt ,
109+ /* in_experiment= */ false ,
110+ BigSegmentsStatus::kNone };
74111}
75112
76113EvaluationReason EvaluationReason::Fallthrough (bool in_experiment) {
77- return {Kind::kFallthrough , std::nullopt , std::nullopt , std::nullopt ,
78- std::nullopt , in_experiment, std::nullopt };
114+ return {Kind::kFallthrough ,
115+ /* error_kind= */ std::nullopt ,
116+ /* rule_index= */ std::nullopt ,
117+ /* rule_id= */ std::nullopt ,
118+ /* prerequisite_key= */ std::nullopt ,
119+ in_experiment,
120+ BigSegmentsStatus::kNone };
79121}
80122
81123EvaluationReason EvaluationReason::RuleMatch (std::size_t rule_index,
82124 std::optional<std::string> rule_id,
83125 bool in_experiment) {
84- return {Kind::kRuleMatch , std::nullopt , rule_index, std::move (rule_id),
85- std::nullopt , in_experiment, std::nullopt };
126+ return {Kind::kRuleMatch ,
127+ /* error_kind= */ std::nullopt ,
128+ rule_index,
129+ std::move (rule_id),
130+ /* prerequisite_key= */ std::nullopt ,
131+ in_experiment,
132+ BigSegmentsStatus::kNone };
86133}
87134
88135EvaluationReason EvaluationReason::MalformedFlag () {
@@ -105,8 +152,9 @@ std::ostream& operator<<(std::ostream& out, EvaluationReason const& reason) {
105152 out << " prerequisiteKey: " << reason.prerequisite_key_ .value ();
106153 }
107154 out << " inExperiment: " << reason.in_experiment_ ;
108- if (reason.big_segment_status_ .has_value ()) {
109- out << " bigSegmentStatus: " << reason.big_segment_status_ .value ();
155+ if (reason.big_segments_status_ !=
156+ EvaluationReason::BigSegmentsStatus::kNone ) {
157+ out << " bigSegmentsStatus: " << reason.big_segments_status_ ;
110158 }
111159 out << " }" ;
112160 return out;
@@ -115,7 +163,8 @@ std::ostream& operator<<(std::ostream& out, EvaluationReason const& reason) {
115163bool operator ==(EvaluationReason const & lhs, EvaluationReason const & rhs) {
116164 return lhs.Kind () == rhs.Kind () && lhs.ErrorKind () == rhs.ErrorKind () &&
117165 lhs.InExperiment () == rhs.InExperiment () &&
118- lhs.BigSegmentStatus () == rhs.BigSegmentStatus () &&
166+ lhs.BigSegmentsStatus () == rhs.BigSegmentsStatus () &&
167+ lhs.big_segment_status_ == rhs.big_segment_status_ &&
119168 lhs.PrerequisiteKey () == rhs.PrerequisiteKey () &&
120169 lhs.RuleId () == rhs.RuleId () && lhs.RuleIndex () == rhs.RuleIndex ();
121170}
@@ -149,6 +198,29 @@ std::ostream& operator<<(std::ostream& out,
149198 return out;
150199}
151200
201+ std::ostream& operator <<(
202+ std::ostream& out,
203+ enum EvaluationReason::BigSegmentsStatus const & status) {
204+ switch (status) {
205+ case EvaluationReason::BigSegmentsStatus::kNone :
206+ out << " NONE" ;
207+ break ;
208+ case EvaluationReason::BigSegmentsStatus::kHealthy :
209+ out << " HEALTHY" ;
210+ break ;
211+ case EvaluationReason::BigSegmentsStatus::kStale :
212+ out << " STALE" ;
213+ break ;
214+ case EvaluationReason::BigSegmentsStatus::kNotConfigured :
215+ out << " NOT_CONFIGURED" ;
216+ break ;
217+ case EvaluationReason::BigSegmentsStatus::kStoreError :
218+ out << " STORE_ERROR" ;
219+ break ;
220+ }
221+ return out;
222+ }
223+
152224std::ostream& operator <<(std::ostream& out,
153225 enum EvaluationReason::ErrorKind const & kind) {
154226 switch (kind) {
0 commit comments