Package io.grpc.xds.internal.security
Class TlsContextManagerImpl
java.lang.Object
io.grpc.xds.internal.security.TlsContextManagerImpl
- All Implemented Interfaces:
TlsContextManager
Class to manage
SslContextProvider
objects created from inputs we get from xDS. Used by
gRPC-xds to access the SslContext's and is not public API. This manager manages the life-cycle of
SslContextProvider
objects as shared resources via ref-counting as described in ReferenceCountingMap
.-
Field Summary
FieldsModifier and TypeFieldDescription -
Constructor Summary
ConstructorsConstructorDescriptionTlsContextManagerImpl
(Bootstrapper.BootstrapInfo bootstrapInfo) Create a TlsContextManagerImpl instance using the passed inBootstrapper.BootstrapInfo
.TlsContextManagerImpl
(ReferenceCountingMap.ValueFactory<EnvoyServerProtoData.UpstreamTlsContext, SslContextProvider> clientFactory, ReferenceCountingMap.ValueFactory<EnvoyServerProtoData.DownstreamTlsContext, SslContextProvider> serverFactory) -
Method Summary
Modifier and TypeMethodDescriptionfindOrCreateClientSslContextProvider
(EnvoyServerProtoData.UpstreamTlsContext upstreamTlsContext) Creates a SslContextProvider.findOrCreateServerSslContextProvider
(EnvoyServerProtoData.DownstreamTlsContext downstreamTlsContext) Creates a SslContextProvider.releaseClientSslContextProvider
(SslContextProvider clientSslContextProvider) Releases an instance of the given client-sideSslContextProvider
.releaseServerSslContextProvider
(SslContextProvider serverSslContextProvider) Releases an instance of the given server-sideSslContextProvider
.
-
Field Details
-
mapForClients
private final ReferenceCountingMap<EnvoyServerProtoData.UpstreamTlsContext,SslContextProvider> mapForClients -
mapForServers
private final ReferenceCountingMap<EnvoyServerProtoData.DownstreamTlsContext,SslContextProvider> mapForServers
-
-
Constructor Details
-
TlsContextManagerImpl
Create a TlsContextManagerImpl instance using the passed inBootstrapper.BootstrapInfo
. -
TlsContextManagerImpl
TlsContextManagerImpl(ReferenceCountingMap.ValueFactory<EnvoyServerProtoData.UpstreamTlsContext, SslContextProvider> clientFactory, ReferenceCountingMap.ValueFactory<EnvoyServerProtoData.DownstreamTlsContext, SslContextProvider> serverFactory)
-
-
Method Details
-
findOrCreateServerSslContextProvider
public SslContextProvider findOrCreateServerSslContextProvider(EnvoyServerProtoData.DownstreamTlsContext downstreamTlsContext) Description copied from interface:TlsContextManager
Creates a SslContextProvider. Used for retrieving a server-side SslContext.- Specified by:
findOrCreateServerSslContextProvider
in interfaceTlsContextManager
-
findOrCreateClientSslContextProvider
public SslContextProvider findOrCreateClientSslContextProvider(EnvoyServerProtoData.UpstreamTlsContext upstreamTlsContext) Description copied from interface:TlsContextManager
Creates a SslContextProvider. Used for retrieving a client-side SslContext.- Specified by:
findOrCreateClientSslContextProvider
in interfaceTlsContextManager
-
releaseClientSslContextProvider
public SslContextProvider releaseClientSslContextProvider(SslContextProvider clientSslContextProvider) Description copied from interface:TlsContextManager
Releases an instance of the given client-sideSslContextProvider
.The instance must have been obtained from
TlsContextManager.findOrCreateClientSslContextProvider(io.grpc.xds.EnvoyServerProtoData.UpstreamTlsContext)
. Otherwise will throw IllegalArgumentException.Caller must not release a reference more than once. It's advised that you clear the reference to the instance with the null returned by this method.
- Specified by:
releaseClientSslContextProvider
in interfaceTlsContextManager
-
releaseServerSslContextProvider
public SslContextProvider releaseServerSslContextProvider(SslContextProvider serverSslContextProvider) Description copied from interface:TlsContextManager
Releases an instance of the given server-sideSslContextProvider
.The instance must have been obtained from
TlsContextManager.findOrCreateServerSslContextProvider(io.grpc.xds.EnvoyServerProtoData.DownstreamTlsContext)
. Otherwise will throw IllegalArgumentException.Caller must not release a reference more than once. It's advised that you clear the reference to the instance with the null returned by this method.
- Specified by:
releaseServerSslContextProvider
in interfaceTlsContextManager
-