* Gets the gRPC control plane management server from the API config source. The result is either
template <class Proto> static absl::Status checkTransportVersion(const Proto& api_config_source) {
return {ALL_SUBSCRIPTION_STATS(POOL_COUNTER(scope), POOL_GAUGE(scope), POOL_TEXT_READOUT(scope),
* Get a Factory from the registry with a particular name (and templated type) with error checking
ExceptionUtil::throwEnvoyException("Provided name for static registration lookup was empty.");
* Get a Factory from the registry with a particular name (and templated type) with error checking
template <class Factory> static Factory& getAndCheckFactoryByName(const std::string& name) {
Runtime::runtimeFeatureEnabled("envoy.reloadable_features.no_extension_lookup_by_name")) {
if (Runtime::runtimeFeatureEnabled("envoy.reloadable_features.no_extension_lookup_by_name")) {
template <class Factory> static Factory* getFactoryByType(const Protobuf::Any& typed_config) {
return Registry::FactoryRegistry<Factory>::getFactoryByType(getFactoryType(typed_config));
* @param enclosing_message proto that contains a field 'typed_config'. Note: the enclosing proto
* Truncates the message to a length less than default GRPC trailers size limit (by default 8KiB).
* @param api_config_source envoy::config::core::v3::ApiConfigSource. Must have config type GRPC.
* @param grpc_service_idx index of the grpc service in the api_config_source. If there's no entry
* @param api_config_source envoy::config::core::v3::ApiConfigSource. Must have config type GRPC.
* @param grpc_service_idx index of the grpc service in the api_config_source. If there's no entry
static BackOffStrategyPtr prepareDnsRefreshStrategy(const T& config, uint64_t dns_refresh_rate_ms,
return std::make_unique<JitteredExponentialBackOffStrategy>(base_interval_ms, max_interval_ms,
* found in the config or 2. default base interval and default maximum interval is specified or 3.
return buildJitteredExponentialBackOffStrategy(absl::nullopt, random, default_base_interval_ms,
return buildJitteredExponentialBackOffStrategy(config.retry_policy().retry_back_off(), random,
return buildJitteredExponentialBackOffStrategy(absl::nullopt, random, default_base_interval_ms,