@@ -37,8 +37,17 @@ auto const kAsioConcurrencyHint = 1;
3737auto const kDataSourceShutdownWait = std::chrono::milliseconds(100 );
3838
3939// Hook method names
40- static const std::string kMethodVariation = " Variation" ;
41- static const std::string kMethodVariationDetail = " VariationDetail" ;
40+ // Method names for hooks
41+ static const std::string kMethodBoolVariation = " BoolVariation" ;
42+ static const std::string kMethodBoolVariationDetail = " BoolVariationDetail" ;
43+ static const std::string kMethodStringVariation = " StringVariation" ;
44+ static const std::string kMethodStringVariationDetail = " StringVariationDetail" ;
45+ static const std::string kMethodDoubleVariation = " DoubleVariation" ;
46+ static const std::string kMethodDoubleVariationDetail = " DoubleVariationDetail" ;
47+ static const std::string kMethodIntVariation = " IntVariation" ;
48+ static const std::string kMethodIntVariationDetail = " IntVariationDetail" ;
49+ static const std::string kMethodJsonVariation = " JsonVariation" ;
50+ static const std::string kMethodJsonVariationDetail = " JsonVariationDetail" ;
4251
4352static std::unique_ptr<data_interfaces::IDataSystem> MakeDataSystem (
4453 config::built::HttpProperties const & http_properties,
@@ -319,9 +328,10 @@ Value ClientImpl::Variation(Context const& ctx,
319328 enum Value::Type value_type,
320329 IClient::FlagKey const & key,
321330 Value const & default_value,
322- hooks::HookContext const & hook_context) {
331+ hooks::HookContext const & hook_context,
332+ std::string const & method_name) {
323333 auto result = *VariationInternal (ctx, key, default_value, events_default_,
324- hook_context);
334+ hook_context, method_name );
325335 if (result.Type () != value_type) {
326336 return default_value;
327337 }
@@ -333,17 +343,14 @@ EvaluationDetail<Value> ClientImpl::VariationInternal(
333343 IClient::FlagKey const & key,
334344 Value const & default_value,
335345 EventScope const & event_scope,
336- hooks::HookContext const & hook_context) {
337- // Determine method name based on which event scope is being used
338- std::string const & method = (&event_scope == &events_with_reasons_)
339- ? kMethodVariationDetail
340- : kMethodVariation ;
341-
346+ hooks::HookContext const & hook_context,
347+ std::string const & method_name) {
342348 // Execute beforeEvaluation hooks
343349 std::optional<hooks::EvaluationSeriesExecutor> executor;
344350 if (!config_.Hooks ().empty ()) {
345351 hooks::EvaluationSeriesContext series_context (
346- key, context, default_value, method, hook_context, std::nullopt );
352+ key, context, default_value, method_name, hook_context, std::nullopt );
353+ // Executor only created if there are hooks.
347354 executor.emplace (config_.Hooks (), logger_);
348355 executor->BeforeEvaluation (series_context);
349356 }
@@ -355,7 +362,7 @@ EvaluationDetail<Value> ClientImpl::VariationInternal(
355362 // Execute afterEvaluation hooks
356363 if (executor) {
357364 hooks::EvaluationSeriesContext series_context (
358- key, context, default_value, method , hook_context, std::nullopt );
365+ key, context, default_value, method_name , hook_context, std::nullopt );
359366 executor->AfterEvaluation (series_context, detail);
360367 }
361368
@@ -376,7 +383,7 @@ EvaluationDetail<Value> ClientImpl::VariationInternal(
376383 // Execute afterEvaluation hooks
377384 if (executor) {
378385 hooks::EvaluationSeriesContext series_context (
379- key, context, default_value, method , hook_context, std::nullopt );
386+ key, context, default_value, method_name , hook_context, std::nullopt );
380387 executor->AfterEvaluation (series_context, detail);
381388 }
382389
@@ -391,7 +398,7 @@ EvaluationDetail<Value> ClientImpl::VariationInternal(
391398 // Execute afterEvaluation hooks
392399 if (executor) {
393400 hooks::EvaluationSeriesContext series_context (
394- key, context, default_value, method , hook_context, std::nullopt );
401+ key, context, default_value, method_name , hook_context, std::nullopt );
395402 executor->AfterEvaluation (series_context, detail);
396403 }
397404
@@ -459,7 +466,7 @@ EvaluationDetail<bool> ClientImpl::BoolVariationDetail(
459466 bool default_value) {
460467 static hooks::HookContext empty_hook_context;
461468 return VariationDetail<bool >(ctx, Value::Type::kBool , key, default_value,
462- empty_hook_context);
469+ empty_hook_context, kMethodBoolVariationDetail );
463470}
464471
465472EvaluationDetail<bool > ClientImpl::BoolVariationDetail (
@@ -468,23 +475,23 @@ EvaluationDetail<bool> ClientImpl::BoolVariationDetail(
468475 bool default_value,
469476 hooks::HookContext const & hook_context) {
470477 return VariationDetail<bool >(ctx, Value::Type::kBool , key, default_value,
471- hook_context);
478+ hook_context, kMethodBoolVariationDetail );
472479}
473480
474481bool ClientImpl::BoolVariation (Context const & ctx,
475482 IClient::FlagKey const & key,
476483 bool default_value) {
477484 static hooks::HookContext empty_hook_context;
478485 return Variation (ctx, Value::Type::kBool , key, default_value,
479- empty_hook_context);
486+ empty_hook_context, kMethodBoolVariation );
480487}
481488
482489bool ClientImpl::BoolVariation (Context const & ctx,
483490 IClient::FlagKey const & key,
484491 bool default_value,
485492 hooks::HookContext const & hook_context) {
486493 return Variation (ctx, Value::Type::kBool , key, default_value,
487- hook_context);
494+ hook_context, kMethodBoolVariation );
488495}
489496
490497EvaluationDetail<std::string> ClientImpl::StringVariationDetail (
@@ -493,7 +500,8 @@ EvaluationDetail<std::string> ClientImpl::StringVariationDetail(
493500 std::string default_value) {
494501 static hooks::HookContext empty_hook_context;
495502 return VariationDetail<std::string>(ctx, Value::Type::kString , key,
496- default_value, empty_hook_context);
503+ default_value, empty_hook_context,
504+ kMethodStringVariationDetail );
497505}
498506
499507EvaluationDetail<std::string> ClientImpl::StringVariationDetail (
@@ -502,23 +510,24 @@ EvaluationDetail<std::string> ClientImpl::StringVariationDetail(
502510 std::string default_value,
503511 hooks::HookContext const & hook_context) {
504512 return VariationDetail<std::string>(ctx, Value::Type::kString , key,
505- default_value, hook_context);
513+ default_value, hook_context,
514+ kMethodStringVariationDetail );
506515}
507516
508517std::string ClientImpl::StringVariation (Context const & ctx,
509518 IClient::FlagKey const & key,
510519 std::string default_value) {
511520 static hooks::HookContext empty_hook_context;
512521 return Variation (ctx, Value::Type::kString , key, default_value,
513- empty_hook_context);
522+ empty_hook_context, kMethodStringVariation );
514523}
515524
516525std::string ClientImpl::StringVariation (Context const & ctx,
517526 IClient::FlagKey const & key,
518527 std::string default_value,
519528 hooks::HookContext const & hook_context) {
520529 return Variation (ctx, Value::Type::kString , key, default_value,
521- hook_context);
530+ hook_context, kMethodStringVariation );
522531}
523532
524533EvaluationDetail<double > ClientImpl::DoubleVariationDetail (
@@ -527,7 +536,8 @@ EvaluationDetail<double> ClientImpl::DoubleVariationDetail(
527536 double default_value) {
528537 static hooks::HookContext empty_hook_context;
529538 return VariationDetail<double >(ctx, Value::Type::kNumber , key,
530- default_value, empty_hook_context);
539+ default_value, empty_hook_context,
540+ kMethodDoubleVariationDetail );
531541}
532542
533543EvaluationDetail<double > ClientImpl::DoubleVariationDetail (
@@ -536,23 +546,24 @@ EvaluationDetail<double> ClientImpl::DoubleVariationDetail(
536546 double default_value,
537547 hooks::HookContext const & hook_context) {
538548 return VariationDetail<double >(ctx, Value::Type::kNumber , key,
539- default_value, hook_context);
549+ default_value, hook_context,
550+ kMethodDoubleVariationDetail );
540551}
541552
542553double ClientImpl::DoubleVariation (Context const & ctx,
543554 IClient::FlagKey const & key,
544555 double default_value) {
545556 static hooks::HookContext empty_hook_context;
546557 return Variation (ctx, Value::Type::kNumber , key, default_value,
547- empty_hook_context);
558+ empty_hook_context, kMethodDoubleVariation );
548559}
549560
550561double ClientImpl::DoubleVariation (Context const & ctx,
551562 IClient::FlagKey const & key,
552563 double default_value,
553564 hooks::HookContext const & hook_context) {
554565 return Variation (ctx, Value::Type::kNumber , key, default_value,
555- hook_context);
566+ hook_context, kMethodDoubleVariation );
556567}
557568
558569EvaluationDetail<int > ClientImpl::IntVariationDetail (
@@ -561,7 +572,7 @@ EvaluationDetail<int> ClientImpl::IntVariationDetail(
561572 int default_value) {
562573 static hooks::HookContext empty_hook_context;
563574 return VariationDetail<int >(ctx, Value::Type::kNumber , key, default_value,
564- empty_hook_context);
575+ empty_hook_context, kMethodIntVariationDetail );
565576}
566577
567578EvaluationDetail<int > ClientImpl::IntVariationDetail (
@@ -570,23 +581,23 @@ EvaluationDetail<int> ClientImpl::IntVariationDetail(
570581 int default_value,
571582 hooks::HookContext const & hook_context) {
572583 return VariationDetail<int >(ctx, Value::Type::kNumber , key, default_value,
573- hook_context);
584+ hook_context, kMethodIntVariationDetail );
574585}
575586
576587int ClientImpl::IntVariation (Context const & ctx,
577588 IClient::FlagKey const & key,
578589 int default_value) {
579590 static hooks::HookContext empty_hook_context;
580591 return Variation (ctx, Value::Type::kNumber , key, default_value,
581- empty_hook_context);
592+ empty_hook_context, kMethodIntVariation );
582593}
583594
584595int ClientImpl::IntVariation (Context const & ctx,
585596 IClient::FlagKey const & key,
586597 int default_value,
587598 hooks::HookContext const & hook_context) {
588599 return Variation (ctx, Value::Type::kNumber , key, default_value,
589- hook_context);
600+ hook_context, kMethodIntVariation );
590601}
591602
592603EvaluationDetail<Value> ClientImpl::JsonVariationDetail (
@@ -595,7 +606,7 @@ EvaluationDetail<Value> ClientImpl::JsonVariationDetail(
595606 Value default_value) {
596607 static hooks::HookContext empty_hook_context;
597608 return VariationInternal (ctx, key, default_value, events_with_reasons_,
598- empty_hook_context);
609+ empty_hook_context, kMethodJsonVariationDetail );
599610}
600611
601612EvaluationDetail<Value> ClientImpl::JsonVariationDetail (
@@ -604,23 +615,23 @@ EvaluationDetail<Value> ClientImpl::JsonVariationDetail(
604615 Value default_value,
605616 hooks::HookContext const & hook_context) {
606617 return VariationInternal (ctx, key, default_value, events_with_reasons_,
607- hook_context);
618+ hook_context, kMethodJsonVariationDetail );
608619}
609620
610621Value ClientImpl::JsonVariation (Context const & ctx,
611622 IClient::FlagKey const & key,
612623 Value default_value) {
613624 static hooks::HookContext empty_hook_context;
614625 return *VariationInternal (ctx, key, default_value, events_default_,
615- empty_hook_context);
626+ empty_hook_context, kMethodJsonVariation );
616627}
617628
618629Value ClientImpl::JsonVariation (Context const & ctx,
619630 IClient::FlagKey const & key,
620631 Value default_value,
621632 hooks::HookContext const & hook_context) {
622633 return *VariationInternal (ctx, key, default_value, events_default_,
623- hook_context);
634+ hook_context, kMethodJsonVariation );
624635}
625636
626637IDataSourceStatusProvider& ClientImpl::DataSourceStatus () {
0 commit comments