Coverage Report

Created: 2023-11-12 09:30

/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.01k
  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
220
  std::string name() const override { return name_param; }
config.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions14NetworkFilters21HttpConnectionManagerL28date_provider_singleton_nameEEEEE4nameEv
Line
Count
Source
37
220
  std::string name() const override { return name_param; }
config.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions14NetworkFilters21HttpConnectionManagerL44route_config_provider_manager_singleton_nameEEEEE4nameEv
Line
Count
Source
37
220
  std::string name() const override { return name_param; }
config.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions14NetworkFilters21HttpConnectionManagerL52scoped_routes_config_provider_manager_singleton_nameEEEEE4nameEv
Line
Count
Source
37
220
  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
220
  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
220
  std::string name() const override { return name_param; }
tracer_manager_impl.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_7TracingL29tracer_manager_singleton_nameEEEEE4nameEv
Line
Count
Source
37
220
  std::string name() const override { return name_param; }
metadata.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_6ConfigL41const_metadata_shared_pool_singleton_nameEEEEE4nameEv
Line
Count
Source
37
252
  std::string name() const override { return name_param; }
http_server_properties_cache_manager_impl.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_4HttpL48alternate_protocols_cache_manager_singleton_nameEEEEE4nameEv
Line
Count
Source
37
60
  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; }
evaluator.cc:_ZNK5Envoy9Singleton16RegistrationImplIXadsoKcL_ZNS_10Extensions7Filters6Common4ExprL33expression_builder_singleton_nameEEEEE4nameEv
Line
Count
Source
37
20
  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; }
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; }
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
48.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
72.0k
  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
   */
71
49.5k
  template <class T> std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb) {
72
49.5k
    return std::dynamic_pointer_cast<T>(get(name, cb));
73
49.5k
  }
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> ()>)
Line
Count
Source
71
3.26k
  template <class T> std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb) {
72
3.26k
    return std::dynamic_pointer_cast<T>(get(name, cb));
73
3.26k
  }
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> ()>)
Line
Count
Source
71
6.61k
  template <class T> std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb) {
72
6.61k
    return std::dynamic_pointer_cast<T>(get(name, cb));
73
6.61k
  }
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> ()>)
Line
Count
Source
71
6.61k
  template <class T> std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb) {
72
6.61k
    return std::dynamic_pointer_cast<T>(get(name, cb));
73
6.61k
  }
std::__1::shared_ptr<Envoy::Router::ScopedRoutesConfigProviderManager> Envoy::Singleton::Manager::getTyped<Envoy::Router::ScopedRoutesConfigProviderManager>(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> ()>)
Line
Count
Source
71
6.61k
  template <class T> std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb) {
72
6.61k
    return std::dynamic_pointer_cast<T>(get(name, cb));
73
6.61k
  }
std::__1::shared_ptr<Envoy::Filter::FilterConfigProviderManager<Envoy::Filter::NamedHttpFilterFactoryCb, Envoy::Server::Configuration::UpstreamFactoryContext> > Envoy::Singleton::Manager::getTyped<Envoy::Filter::FilterConfigProviderManager<Envoy::Filter::NamedHttpFilterFactoryCb, 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> ()>)
Line
Count
Source
71
3.33k
  template <class T> std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb) {
72
3.33k
    return std::dynamic_pointer_cast<T>(get(name, cb));
73
3.33k
  }
std::__1::shared_ptr<Envoy::Filter::FilterConfigProviderManager<Envoy::Filter::NamedHttpFilterFactoryCb, Envoy::Server::Configuration::FactoryContext> > Envoy::Singleton::Manager::getTyped<Envoy::Filter::FilterConfigProviderManager<Envoy::Filter::NamedHttpFilterFactoryCb, 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> ()>)
Line
Count
Source
71
6.61k
  template <class T> std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb) {
72
6.61k
    return std::dynamic_pointer_cast<T>(get(name, cb));
73
6.61k
  }
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> ()>)
Line
Count
Source
71
6.61k
  template <class T> std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb) {
72
6.61k
    return std::dynamic_pointer_cast<T>(get(name, cb));
73
6.61k
  }
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> ()>)
Line
Count
Source
71
3.26k
  template <class T> std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb) {
72
3.26k
    return std::dynamic_pointer_cast<T>(get(name, cb));
73
3.26k
  }
std::__1::shared_ptr<Envoy::Http::HttpServerPropertiesCacheManager> Envoy::Singleton::Manager::getTyped<Envoy::Http::HttpServerPropertiesCacheManager>(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> ()>)
Line
Count
Source
71
5.27k
  template <class T> std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb) {
72
5.27k
    return std::dynamic_pointer_cast<T>(get(name, cb));
73
5.27k
  }
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> ()>)
Line
Count
Source
71
1.16k
  template <class T> std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb) {
72
1.16k
    return std::dynamic_pointer_cast<T>(get(name, cb));
73
1.16k
  }
Unexecuted instantiation: 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> ()>)
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> ()>)
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> ()>)
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> ()>)
Line
Count
Source
71
2
  template <class T> std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb) {
72
2
    return std::dynamic_pointer_cast<T>(get(name, cb));
73
2
  }
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> ()>)
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> ()>)
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> ()>)
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> ()>)
Line
Count
Source
71
2
  template <class T> std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb) {
72
2
    return std::dynamic_pointer_cast<T>(get(name, cb));
73
2
  }
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> ()>)
Unexecuted instantiation: 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> ()>)
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> ()>)
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> ()>)
Line
Count
Source
71
154
  template <class T> std::shared_ptr<T> getTyped(const std::string& name, SingletonFactoryCb cb) {
72
154
    return std::dynamic_pointer_cast<T>(get(name, cb));
73
154
  }
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> ()>)
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> ()>)
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> ()>)
74
75
  /**
76
   * This is a non-constructing getter. Use when the caller can deal with instances where
77
   * the singleton being accessed may not have been constructed previously.
78
   * @return InstancePtr the singleton. nullptr if the singleton does not exist.
79
   */
80
43
  template <class T> std::shared_ptr<T> getTyped(const std::string& name) {
81
43
    return std::dynamic_pointer_cast<T>(get(name, [] { return nullptr; }));
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
81
43
    return std::dynamic_pointer_cast<T>(get(name, [] { return nullptr; }));
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
82
43
  }
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
80
43
  template <class T> std::shared_ptr<T> getTyped(const std::string& name) {
81
43
    return std::dynamic_pointer_cast<T>(get(name, [] { return nullptr; }));
82
43
  }
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&)
83
84
  /**
85
   * Get a singleton and create it if it does not exist.
86
   * @param name supplies the singleton name. Must be registered via RegistrationImpl.
87
   * @param singleton supplies the singleton creation callback. This will only be called if the
88
   *        singleton does not already exist. NOTE: The manager only stores a weak pointer. This
89
   *        allows a singleton to be cleaned up if it is not needed any more. All code that uses
90
   *        singletons must store the shared_ptr for as long as the singleton is needed.
91
   * @return InstancePtr the singleton.
92
   */
93
  virtual InstanceSharedPtr get(const std::string& name, SingletonFactoryCb) PURE;
94
};
95
96
using ManagerPtr = std::unique_ptr<Manager>;
97
98
} // namespace Singleton
99
} // namespace Envoy