/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 |