Coverage Report

Created: 2024-09-19 09:45

/proc/self/cwd/envoy/singleton/manager.h
Line
Count
Source (jump to first uncovered line)
1
#pragma once
2
3
#include <functional>
4
#include <memory>
5
#include <string>
6
7
#include "envoy/common/pure.h"
8
#include "envoy/config/typed_config.h"
9
#include "envoy/registry/registry.h"
10
#include "envoy/singleton/instance.h"
11
12
namespace Envoy {
13
namespace Singleton {
14
15
/**
16
 * An abstract registration for a singleton entry.
17
 */
18
class Registration : public Config::UntypedFactory {
19
public:
20
0
  std::string category() const override { return "envoy.singleton"; }
21
};
22
23
/**
24
 * A concrete implementation of a singleton registration. All singletons are referenced by name
25
 * and must be statically registered ahead of time. This can be done like so:
26
 *
27
 * static constexpr char foo_singleton_name[] = "foo_singleton";
28
 * static Registry::RegisterFactory<Singleton::RegistrationImpl<foo_singleton_name>,
29
 *                                  Singleton::Registration>
30
 *     date_provider_singleton_registered_;
31
 *
32
 * Once this is done, the singleton can be get/set via the manager. See the Manager interface
33
 * for more information.
34
 */
35
template <const char* name_param> class RegistrationImpl : public Registration {
36
public:
37
2.14k
  std::string name() const override { return name_param; }
evaluator.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions7Filters6Common4ExprL33expression_builder_singleton_nameEEEEE4nameEv
Line
Count
Source
37
36
  std::string name() const override { return name_param; }
upstream_impl.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_8UpstreamL62upstream_network_filter_config_provider_manager_singleton_nameEEEEE4nameEv
Line
Count
Source
37
236
  std::string name() const override { return name_param; }
config.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions14NetworkFilters21HttpConnectionManagerL28date_provider_singleton_nameEEEEE4nameEv
Line
Count
Source
37
236
  std::string name() const override { return name_param; }
config.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions14NetworkFilters21HttpConnectionManagerL44route_config_provider_manager_singleton_nameEEEEE4nameEv
Line
Count
Source
37
236
  std::string name() const override { return name_param; }
config.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions14NetworkFilters21HttpConnectionManagerL52scoped_routes_config_provider_manager_singleton_nameEEEEE4nameEv
Line
Count
Source
37
236
  std::string name() const override { return name_param; }
filter_chain_helper.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_4HttpL56downstream_filter_config_provider_manager_singleton_nameEEEEE4nameEv
Line
Count
Source
37
236
  std::string name() const override { return name_param; }
filter_chain_helper.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_4HttpL54upstream_filter_config_provider_manager_singleton_nameEEEEE4nameEv
Line
Count
Source
37
236
  std::string name() const override { return name_param; }
tracer_manager_impl.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_7TracingL29tracer_manager_singleton_nameEEEEE4nameEv
Line
Count
Source
37
236
  std::string name() const override { return name_param; }
metadata.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_6ConfigL41const_metadata_shared_pool_singleton_nameEEEEE4nameEv
Line
Count
Source
37
264
  std::string name() const override { return name_param; }
config.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions13AccessLoggers7FluentdL42fluentd_access_logger_cache_singleton_nameEEEEE4nameEv
Line
Count
Source
37
8
  std::string name() const override { return name_param; }
config_utils.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions13AccessLoggers10GrpcCommonL39grpc_access_logger_cache_singleton_nameEEEEE4nameEv
Line
Count
Source
37
8
  std::string name() const override { return name_param; }
config.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions13AccessLoggers13OpenTelemetryL49open_telemetry_access_logger_cache_singleton_nameEEEEE4nameEv
Line
Count
Source
37
8
  std::string name() const override { return name_param; }
cluster_store.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions6Common19DynamicForwardProxyL50dynamic_forward_proxy_cluster_store_singleton_nameEEEEE4nameEv
Line
Count
Source
37
12
  std::string name() const override { return name_param; }
config.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions14NetworkFilters10DubboProxyL50dubbo_route_config_provider_manager_singleton_nameEEEEE4nameEv
Line
Count
Source
37
8
  std::string name() const override { return name_param; }
local_ratelimit.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions14NetworkFilters20LocalRateLimitFilterL37shared_local_ratelimit_singleton_nameEEEEE4nameEv
Line
Count
Source
37
16
  std::string name() const override { return name_param; }
local_ratelimit_impl.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions7Filters6Common14LocalRateLimitL53local_ratelimit_share_provider_manager_singleton_nameEEEEE4nameEv
Line
Count
Source
37
20
  std::string name() const override { return name_param; }
cluster_refresh_manager_impl.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions6Common5RedisL36redis_refresh_manager_singleton_nameEEEEE4nameEv
Line
Count
Source
37
8
  std::string name() const override { return name_param; }
config.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions14NetworkFilters11ThriftProxyL51thrift_route_config_provider_manager_singleton_nameEEEEE4nameEv
Line
Count
Source
37
8
  std::string name() const override { return name_param; }
config.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions14NetworkFilters12GenericProxyL52generic_route_config_provider_manager_singleton_nameEEEEE4nameEv
Line
Count
Source
37
8
  std::string name() const override { return name_param; }
config.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions14NetworkFilters12GenericProxyL47generic_proxy_code_or_flag_stats_singleton_nameEEEEE4nameEv
Line
Count
Source
37
8
  std::string name() const override { return name_param; }
config.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions10UdpFilters8UdpProxyL57udp_session_filter_config_provider_manager_singleton_nameEEEEE4nameEv
Line
Count
Source
37
8
  std::string name() const override { return name_param; }
dns_cache_manager_impl.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions6Common19DynamicForwardProxyL32dns_cache_manager_singleton_nameEEEEE4nameEv
Line
Count
Source
37
12
  std::string name() const override { return name_param; }
config.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions16TransportSockets4Alts12_GLOBAL__N_132alts_shared_state_singleton_nameEEEEE4nameEv
Line
Count
Source
37
8
  std::string name() const override { return name_param; }
admin.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions6Common3TapL32tap_admin_handler_singleton_nameEEEEE4nameEv
Line
Count
Source
37
12
  std::string name() const override { return name_param; }
config.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions11HttpFilters5Cache19FileSystemHttpCache12_GLOBAL__N_147file_system_http_cache_singleton_singleton_nameEEEEE4nameEv
Line
Count
Source
37
8
  std::string name() const override { return name_param; }
async_file_manager_factory.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions6Common10AsyncFilesL51async_file_manager_factory_singleton_singleton_nameEEEEE4nameEv
Line
Count
Source
37
12
  std::string name() const override { return name_param; }
simple_http_cache.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions11HttpFilters5CacheL42simple_http_cache_singleton_singleton_nameEEEEE4nameEv
Line
Count
Source
37
8
  std::string name() const override { return name_param; }
internal_listener_registry.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions9Bootstrap16InternalListenerL41internal_listener_registry_singleton_nameEEEEE4nameEv
Line
Count
Source
37
8
  std::string name() const override { return name_param; }
config.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions14GeoipProviders7MaxmindL53maxmind_geolocation_provider_singleton_singleton_nameEEEEE4nameEv
Line
Count
Source
37
8
  std::string name() const override { return name_param; }
38
};
39
40
/**
41
 * Macro used to statically register singletons managed by the singleton manager
42
 * defined in envoy/singleton/manager.h. After the NAME has been registered use the
43
 * SINGLETON_MANAGER_REGISTERED_NAME macro to access the name registered with the
44
 * singleton manager.
45
 */
46
#define SINGLETON_MANAGER_REGISTRATION(NAME)                                                       \
47
  static constexpr char NAME##_singleton_name[] = #NAME "_singleton";                              \
48
  static Envoy::Registry::RegisterInternalFactory<                                                 \
49
      Envoy::Singleton::RegistrationImpl<NAME##_singleton_name>, Envoy::Singleton::Registration>   \
50
      NAME##_singleton_registered_;
51
52
41.3k
#define SINGLETON_MANAGER_REGISTERED_NAME(NAME) NAME##_singleton_name
53
54
/**
55
 * Callback function used to create a singleton.
56
 */
57
using SingletonFactoryCb = std::function<InstanceSharedPtr()>;
58
59
/**
60
 * A manager for all server-side singletons.
61
 */
62
class Manager {
63
public:
64
66.2k
  virtual ~Manager() = default;
65
66
  /**
67
   * This is a helper on top of get() that casts the object stored to the specified type. Since the
68
   * manager only stores pointers to the base interface, dynamic_cast provides some level of
69
   * protection via RTTI.
70
   * @param name the unique name of the singleton instance. This should be provided by the macro
71
   * SINGLETON_MANAGER_REGISTERED_NAME.
72
   * @param cb supplies the singleton creation callback. This will only be called if the singleton
73
   * does not already exist.
74
   * @param pin supplies whether the singleton should be pinned. By default, the manager only stores
75
   * a weak pointer. This allows a singleton to be cleaned up if it is not needed any more. All code
76
   * that uses singletons must store the shared_ptr for as long as the singleton is needed. But if
77
   * the pin is set to true, the singleton will be stored as a shared_ptr. This is useful if the
78
   * users want to keep the singleton around for the lifetime of the server even if it is not used
79
   * for a while.
80
   * @return InstancePtr the singleton cast to the specified type. nullptr if the singleton does not
81
   * exist.
82
   */
83
  template <class T>
84
42.3k
  std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb, bool pin = false) {
85
42.3k
    return std::dynamic_pointer_cast<T>(get(name, cb, pin));
86
42.3k
  }
std::__1::shared_ptr<Envoy::Extensions::Filters::Common::Expr::BuilderInstance> Envoy::Singleton::Manager::getTyped<Envoy::Extensions::Filters::Common::Expr::BuilderInstance>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Line
Count
Source
84
403
  std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb, bool pin = false) {
85
403
    return std::dynamic_pointer_cast<T>(get(name, cb, pin));
86
403
  }
std::__1::shared_ptr<Envoy::Filter::FilterConfigProviderManager<std::__1::function<void (Envoy::Network::FilterManager&)>, Envoy::Server::Configuration::UpstreamFactoryContext> > Envoy::Singleton::Manager::getTyped<Envoy::Filter::FilterConfigProviderManager<std::__1::function<void (Envoy::Network::FilterManager&)>, Envoy::Server::Configuration::UpstreamFactoryContext> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Line
Count
Source
84
2.40k
  std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb, bool pin = false) {
85
2.40k
    return std::dynamic_pointer_cast<T>(get(name, cb, pin));
86
2.40k
  }
std::__1::shared_ptr<Envoy::Http::TlsCachingDateProviderImpl> Envoy::Singleton::Manager::getTyped<Envoy::Http::TlsCachingDateProviderImpl>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Line
Count
Source
84
6.74k
  std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb, bool pin = false) {
85
6.74k
    return std::dynamic_pointer_cast<T>(get(name, cb, pin));
86
6.74k
  }
std::__1::shared_ptr<Envoy::Router::RouteConfigProviderManager> Envoy::Singleton::Manager::getTyped<Envoy::Router::RouteConfigProviderManager>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Line
Count
Source
84
6.74k
  std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb, bool pin = false) {
85
6.74k
    return std::dynamic_pointer_cast<T>(get(name, cb, pin));
86
6.74k
  }
std::__1::shared_ptr<Envoy::Config::ConfigProviderManager> Envoy::Singleton::Manager::getTyped<Envoy::Config::ConfigProviderManager>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Line
Count
Source
84
6.74k
  std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb, bool pin = false) {
85
6.74k
    return std::dynamic_pointer_cast<T>(get(name, cb, pin));
86
6.74k
  }
std::__1::shared_ptr<Envoy::Filter::FilterConfigProviderManager<std::__1::function<void (Envoy::Http::FilterChainFactoryCallbacks&)>, Envoy::Server::Configuration::UpstreamFactoryContext> > Envoy::Singleton::Manager::getTyped<Envoy::Filter::FilterConfigProviderManager<std::__1::function<void (Envoy::Http::FilterChainFactoryCallbacks&)>, Envoy::Server::Configuration::UpstreamFactoryContext> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Line
Count
Source
84
2.40k
  std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb, bool pin = false) {
85
2.40k
    return std::dynamic_pointer_cast<T>(get(name, cb, pin));
86
2.40k
  }
std::__1::shared_ptr<Envoy::Filter::FilterConfigProviderManager<std::__1::function<void (Envoy::Http::FilterChainFactoryCallbacks&)>, Envoy::Server::Configuration::FactoryContext> > Envoy::Singleton::Manager::getTyped<Envoy::Filter::FilterConfigProviderManager<std::__1::function<void (Envoy::Http::FilterChainFactoryCallbacks&)>, Envoy::Server::Configuration::FactoryContext> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Line
Count
Source
84
6.74k
  std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb, bool pin = false) {
85
6.74k
    return std::dynamic_pointer_cast<T>(get(name, cb, pin));
86
6.74k
  }
std::__1::shared_ptr<Envoy::Tracing::TracerManagerImpl> Envoy::Singleton::Manager::getTyped<Envoy::Tracing::TracerManagerImpl>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Line
Count
Source
84
6.74k
  std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb, bool pin = false) {
85
6.74k
    return std::dynamic_pointer_cast<T>(get(name, cb, pin));
86
6.74k
  }
std::__1::shared_ptr<Envoy::SharedPool::ObjectSharedPool<envoy::config::core::v3::Metadata const, Envoy::MessageUtil, Envoy::MessageUtil, void> > Envoy::Singleton::Manager::getTyped<Envoy::SharedPool::ObjectSharedPool<envoy::config::core::v3::Metadata const, Envoy::MessageUtil, Envoy::MessageUtil, void> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Line
Count
Source
84
2.40k
  std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb, bool pin = false) {
85
2.40k
    return std::dynamic_pointer_cast<T>(get(name, cb, pin));
86
2.40k
  }
Unexecuted instantiation: std::__1::shared_ptr<Envoy::Extensions::AccessLoggers::Fluentd::FluentdAccessLoggerCacheImpl> Envoy::Singleton::Manager::getTyped<Envoy::Extensions::AccessLoggers::Fluentd::FluentdAccessLoggerCacheImpl>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Unexecuted instantiation: std::__1::shared_ptr<Envoy::Extensions::AccessLoggers::GrpcCommon::GrpcAccessLoggerCacheImpl> Envoy::Singleton::Manager::getTyped<Envoy::Extensions::AccessLoggers::GrpcCommon::GrpcAccessLoggerCacheImpl>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Unexecuted instantiation: std::__1::shared_ptr<Envoy::Extensions::AccessLoggers::OpenTelemetry::GrpcAccessLoggerCacheImpl> Envoy::Singleton::Manager::getTyped<Envoy::Extensions::AccessLoggers::OpenTelemetry::GrpcAccessLoggerCacheImpl>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Unexecuted instantiation: std::__1::shared_ptr<Envoy::Extensions::Common::DynamicForwardProxy::DFPClusterStore> Envoy::Singleton::Manager::getTyped<Envoy::Extensions::Common::DynamicForwardProxy::DFPClusterStore>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Unexecuted instantiation: std::__1::shared_ptr<Envoy::Rds::Common::RouteConfigProviderManager<envoy::extensions::filters::network::dubbo_proxy::v3::Drds, envoy::extensions::filters::network::dubbo_proxy::v3::MultipleRouteConfiguration> > Envoy::Singleton::Manager::getTyped<Envoy::Rds::Common::RouteConfigProviderManager<envoy::extensions::filters::network::dubbo_proxy::v3::Drds, envoy::extensions::filters::network::dubbo_proxy::v3::MultipleRouteConfiguration> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
std::__1::shared_ptr<Envoy::Extensions::NetworkFilters::LocalRateLimitFilter::SharedRateLimitSingleton> Envoy::Singleton::Manager::getTyped<Envoy::Extensions::NetworkFilters::LocalRateLimitFilter::SharedRateLimitSingleton>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Line
Count
Source
84
992
  std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb, bool pin = false) {
85
992
    return std::dynamic_pointer_cast<T>(get(name, cb, pin));
86
992
  }
Unexecuted instantiation: std::__1::shared_ptr<Envoy::Extensions::Filters::Common::LocalRateLimit::ShareProviderManager> Envoy::Singleton::Manager::getTyped<Envoy::Extensions::Filters::Common::LocalRateLimit::ShareProviderManager>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Unexecuted instantiation: std::__1::shared_ptr<Envoy::Extensions::Common::Redis::ClusterRefreshManager> Envoy::Singleton::Manager::getTyped<Envoy::Extensions::Common::Redis::ClusterRefreshManager>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Unexecuted instantiation: std::__1::shared_ptr<Envoy::Rds::Common::RouteConfigProviderManager<envoy::extensions::filters::network::thrift_proxy::v3::Trds, envoy::extensions::filters::network::thrift_proxy::v3::RouteConfiguration> > Envoy::Singleton::Manager::getTyped<Envoy::Rds::Common::RouteConfigProviderManager<envoy::extensions::filters::network::thrift_proxy::v3::Trds, envoy::extensions::filters::network::thrift_proxy::v3::RouteConfiguration> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Unexecuted instantiation: std::__1::shared_ptr<Envoy::Rds::Common::RouteConfigProviderManager<envoy::extensions::filters::network::generic_proxy::v3::GenericRds, envoy::extensions::filters::network::generic_proxy::v3::RouteConfiguration> > Envoy::Singleton::Manager::getTyped<Envoy::Rds::Common::RouteConfigProviderManager<envoy::extensions::filters::network::generic_proxy::v3::GenericRds, envoy::extensions::filters::network::generic_proxy::v3::RouteConfiguration> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Unexecuted instantiation: std::__1::shared_ptr<Envoy::Extensions::NetworkFilters::GenericProxy::CodeOrFlags> Envoy::Singleton::Manager::getTyped<Envoy::Extensions::NetworkFilters::GenericProxy::CodeOrFlags>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Unexecuted instantiation: std::__1::shared_ptr<Envoy::Filter::FilterConfigProviderManager<std::__1::function<void (Envoy::Network::UdpSessionFilterChainFactoryCallbacks&)>, Envoy::Server::Configuration::FactoryContext> > Envoy::Singleton::Manager::getTyped<Envoy::Filter::FilterConfigProviderManager<std::__1::function<void (Envoy::Network::UdpSessionFilterChainFactoryCallbacks&)>, Envoy::Server::Configuration::FactoryContext> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Unexecuted instantiation: std::__1::shared_ptr<Envoy::Extensions::Common::DynamicForwardProxy::DnsCacheManager> Envoy::Singleton::Manager::getTyped<Envoy::Extensions::Common::DynamicForwardProxy::DnsCacheManager>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Unexecuted instantiation: config.cc:std::__1::shared_ptr<Envoy::Extensions::TransportSockets::Alts::(anonymous namespace)::AltsSharedState> Envoy::Singleton::Manager::getTyped<Envoy::Extensions::TransportSockets::Alts::(anonymous namespace)::AltsSharedState>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
std::__1::shared_ptr<Envoy::Extensions::Common::Tap::AdminHandler> Envoy::Singleton::Manager::getTyped<Envoy::Extensions::Common::Tap::AdminHandler>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Line
Count
Source
84
1
  std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb, bool pin = false) {
85
1
    return std::dynamic_pointer_cast<T>(get(name, cb, pin));
86
1
  }
Unexecuted instantiation: config.cc:std::__1::shared_ptr<Envoy::Extensions::HttpFilters::Cache::FileSystemHttpCache::(anonymous namespace)::CacheSingleton> Envoy::Singleton::Manager::getTyped<Envoy::Extensions::HttpFilters::Cache::FileSystemHttpCache::(anonymous namespace)::CacheSingleton>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
std::__1::shared_ptr<Envoy::Extensions::Common::AsyncFiles::AsyncFileManagerFactory> Envoy::Singleton::Manager::getTyped<Envoy::Extensions::Common::AsyncFiles::AsyncFileManagerFactory>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Line
Count
Source
84
13
  std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb, bool pin = false) {
85
13
    return std::dynamic_pointer_cast<T>(get(name, cb, pin));
86
13
  }
Unexecuted instantiation: std::__1::shared_ptr<Envoy::Extensions::HttpFilters::Cache::SimpleHttpCache> Envoy::Singleton::Manager::getTyped<Envoy::Extensions::HttpFilters::Cache::SimpleHttpCache>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Unexecuted instantiation: std::__1::shared_ptr<Envoy::Extensions::Bootstrap::InternalListener::TlsInternalListenerRegistry> Envoy::Singleton::Manager::getTyped<Envoy::Extensions::Bootstrap::InternalListener::TlsInternalListenerRegistry>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
Unexecuted instantiation: std::__1::shared_ptr<Envoy::Extensions::GeoipProviders::Maxmind::DriverSingleton> Envoy::Singleton::Manager::getTyped<Envoy::Extensions::GeoipProviders::Maxmind::DriverSingleton>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<std::__1::shared_ptr<Envoy::Singleton::Instance> ()>, bool)
87
88
  /**
89
   * This is a non-constructing getter. Use when the caller can deal with instances where
90
   * the singleton being accessed may not have been constructed previously.
91
   * @param name the unique name of singleton instance. This should be provided by the macro
92
   * SINGLETON_MANAGER_REGISTERED_NAME.
93
   * @return InstancePtr the singleton cast to the specified type. nullptr if the singleton does not
94
   * exist.
95
   */
96
54
  template <class T> std::shared_ptr<T> getTyped(const std::string& name) {
97
54
    return std::dynamic_pointer_cast<T>(get(
98
54
        name, [] { return nullptr; }, false));
Envoy::Singleton::Manager::getTyped<Envoy::Network::InternalListenerRegistry>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda()#1}::operator()() const
Line
Count
Source
98
54
        name, [] { return nullptr; }, false));
Unexecuted instantiation: Envoy::Singleton::Manager::getTyped<Envoy::Extensions::Bootstrap::InternalListener::TlsInternalListenerRegistry>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::{lambda()#1}::operator()() const
99
54
  }
std::__1::shared_ptr<Envoy::Network::InternalListenerRegistry> Envoy::Singleton::Manager::getTyped<Envoy::Network::InternalListenerRegistry>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
Line
Count
Source
96
54
  template <class T> std::shared_ptr<T> getTyped(const std::string& name) {
97
54
    return std::dynamic_pointer_cast<T>(get(
98
54
        name, [] { return nullptr; }, false));
99
54
  }
Unexecuted instantiation: std::__1::shared_ptr<Envoy::Extensions::Bootstrap::InternalListener::TlsInternalListenerRegistry> Envoy::Singleton::Manager::getTyped<Envoy::Extensions::Bootstrap::InternalListener::TlsInternalListenerRegistry>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
100
101
  /**
102
   * Get a singleton and create it if it does not exist.
103
   * @param name the unique name of the singleton instance. This should be provided by the macro
104
   * SINGLETON_MANAGER_REGISTERED_NAME.
105
   * @param cb supplies the singleton creation callback. This will only be called if the singleton
106
   * does not already exist.
107
   * @param pin supplies whether the singleton should be pinned. By default, the manager only stores
108
   * a weak pointer. This allows a singleton to be cleaned up if it is not needed any more. All code
109
   * that uses singletons must store the shared_ptr for as long as the singleton is needed. But if
110
   * the pin is set to true, the singleton will be stored as a shared_ptr. This is useful if the
111
   * users want to keep the singleton around for the lifetime of the server even if it is not used
112
   * for a while.
113
   * @return InstancePtr the singleton cast to the specified type. nullptr if the singleton does not
114
   * exist.
115
   */
116
  virtual InstanceSharedPtr get(const std::string& name, SingletonFactoryCb cb, bool pin) PURE;
117
};
118
119
using ManagerPtr = std::unique_ptr<Manager>;
120
121
} // namespace Singleton
122
} // namespace Envoy