diff --git a/openfeature/client_api.h b/openfeature/client_api.h index b3c7e34..d55e424 100644 --- a/openfeature/client_api.h +++ b/openfeature/client_api.h @@ -113,7 +113,15 @@ template ClientAPI::EvaluateFlag( ValueType default_value, const std::optional& ctx, ProviderCallable provider_call) { - ProviderStatus status = GetProviderStatus(); + std::shared_ptr manager = + provider_repository_.GetFeatureProviderStatusManager(domain_); + if (!manager) { + return std::make_unique( + default_value, Reason::kError, std::nullopt, FlagMetadata(), + ErrorCode::kGeneral, "Provider status manager not found for domain"); + } + + ProviderStatus status = manager->GetStatus(); if (status == ProviderStatus::kNotReady) { return std::make_unique( default_value, Reason::kError, std::nullopt, FlagMetadata(), @@ -125,8 +133,7 @@ std::unique_ptr ClientAPI::EvaluateFlag( ErrorCode::kProviderFatal, "Provider is in fatal error state"); } - std::shared_ptr provider = - provider_repository_.GetProvider(domain_); + std::shared_ptr provider = manager->GetProvider(); if (!provider) { return std::make_unique( default_value, Reason::kError, std::nullopt, FlagMetadata(),