diff --git a/openfeature/client_api.h b/openfeature/client_api.h index b3c7e34..50b7d78 100644 --- a/openfeature/client_api.h +++ b/openfeature/client_api.h @@ -113,7 +113,16 @@ 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::kProviderFatal, + "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 +134,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(),