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 manageSslContextProviderobjects 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 ofSslContextProviderobjects as shared resources via ref-counting as described inReferenceCountingMap.
-
-
Field Summary
Fields Modifier and Type Field Description private ReferenceCountingMap<EnvoyServerProtoData.UpstreamTlsContext,SslContextProvider>mapForClientsprivate 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 SslContextProviderfindOrCreateClientSslContextProvider(EnvoyServerProtoData.UpstreamTlsContext upstreamTlsContext)Creates a SslContextProvider.SslContextProviderfindOrCreateServerSslContextProvider(EnvoyServerProtoData.DownstreamTlsContext downstreamTlsContext)Creates a SslContextProvider.SslContextProviderreleaseClientSslContextProvider(SslContextProvider clientSslContextProvider)Releases an instance of the given client-sideSslContextProvider.SslContextProviderreleaseServerSslContextProvider(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:TlsContextManagerCreates a SslContextProvider. Used for retrieving a server-side SslContext.- Specified by:
findOrCreateServerSslContextProviderin interfaceTlsContextManager
-
findOrCreateClientSslContextProvider
public SslContextProvider findOrCreateClientSslContextProvider(EnvoyServerProtoData.UpstreamTlsContext upstreamTlsContext)
Description copied from interface:TlsContextManagerCreates a SslContextProvider. Used for retrieving a client-side SslContext.- Specified by:
findOrCreateClientSslContextProviderin interfaceTlsContextManager
-
releaseClientSslContextProvider
public SslContextProvider releaseClientSslContextProvider(SslContextProvider clientSslContextProvider)
Description copied from interface:TlsContextManagerReleases 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:
releaseClientSslContextProviderin interfaceTlsContextManager
-
releaseServerSslContextProvider
public SslContextProvider releaseServerSslContextProvider(SslContextProvider serverSslContextProvider)
Description copied from interface:TlsContextManagerReleases 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:
releaseServerSslContextProviderin interfaceTlsContextManager
-
-