Package io.grpc.xds.internal.security
Class TlsContextManagerImpl
- java.lang.Object
-
- io.grpc.xds.internal.security.TlsContextManagerImpl
-
- All Implemented Interfaces:
TlsContextManager
public final class TlsContextManagerImpl extends java.lang.Object implements TlsContextManager
Class to manageSslContextProvider
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 ofSslContextProvider
objects as shared resources via ref-counting as described inReferenceCountingMap
.
-
-
Field Summary
Fields Modifier and Type Field Description private ReferenceCountingMap<EnvoyServerProtoData.UpstreamTlsContext,SslContextProvider>
mapForClients
private ReferenceCountingMap<EnvoyServerProtoData.DownstreamTlsContext,SslContextProvider>
mapForServers
-
Constructor Summary
Constructors Constructor Description TlsContextManagerImpl(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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description SslContextProvider
findOrCreateClientSslContextProvider(EnvoyServerProtoData.UpstreamTlsContext upstreamTlsContext)
Creates a SslContextProvider.SslContextProvider
findOrCreateServerSslContextProvider(EnvoyServerProtoData.DownstreamTlsContext downstreamTlsContext)
Creates a SslContextProvider.SslContextProvider
releaseClientSslContextProvider(SslContextProvider clientSslContextProvider)
Releases an instance of the given client-sideSslContextProvider
.SslContextProvider
releaseServerSslContextProvider(SslContextProvider serverSslContextProvider)
Releases an instance of the given server-sideSslContextProvider
.
-
-
-
Field Detail
-
mapForClients
private final ReferenceCountingMap<EnvoyServerProtoData.UpstreamTlsContext,SslContextProvider> mapForClients
-
mapForServers
private final ReferenceCountingMap<EnvoyServerProtoData.DownstreamTlsContext,SslContextProvider> mapForServers
-
-
Constructor Detail
-
TlsContextManagerImpl
public TlsContextManagerImpl(Bootstrapper.BootstrapInfo bootstrapInfo)
Create a TlsContextManagerImpl instance using the passed inBootstrapper.BootstrapInfo
.
-
TlsContextManagerImpl
TlsContextManagerImpl(ReferenceCountingMap.ValueFactory<EnvoyServerProtoData.UpstreamTlsContext,SslContextProvider> clientFactory, ReferenceCountingMap.ValueFactory<EnvoyServerProtoData.DownstreamTlsContext,SslContextProvider> serverFactory)
-
-
Method Detail
-
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
-
-