Class DelegatingConnectionContext
- All Implemented Interfaces:
AsyncCloseable
,ListenableAsyncCloseable
,ConnectionContext
,ConnectionInfo
- Direct Known Subclasses:
DelegatingHttpConnectionContext
ConnectionContext
implementation that delegates all calls to a provided ConnectionContext
. Any of
the methods can be overridden by implementations to change the behavior.-
Nested Class Summary
Nested classes/interfaces inherited from interface io.servicetalk.transport.api.ConnectionInfo
ConnectionInfo.Protocol
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionUsed to close/shutdown a resource.Used to close/shutdown a resource, similar toAsyncCloseable.closeAsync()
, but attempts to cleanup state before abruptly closing.protected ConnectionContext
delegate()
Get theConnectionContext
that this class delegates to.Get theExecutionContext
for thisConnectionInfo
.TheSocketAddress
to which the associated connection is bound.onClose()
Returns aCompletable
that is notified once theListenableAsyncCloseable
was closed.Returns aCompletable
that is notified when closing begins.parent()
Returns a reference to a parentConnectionContext
if any.protocol()
Get theConnectionInfo.Protocol
for thisConnectionInfo
.TheSocketAddress
to which the associated connection is connected.<T> T
socketOption
(SocketOption<T> option) Get theSslConfig
for this connection.Get theSSLSession
for this connection.toString()
-
Constructor Details
-
DelegatingConnectionContext
New instance.- Parameters:
delegate
-ConnectionContext
to delegate all calls.
-
-
Method Details
-
delegate
Get theConnectionContext
that this class delegates to.- Returns:
- the
ConnectionContext
that this class delegates to.
-
localAddress
Description copied from interface:ConnectionInfo
TheSocketAddress
to which the associated connection is bound.- Specified by:
localAddress
in interfaceConnectionInfo
- Returns:
- The
SocketAddress
to which the associated connection is bound.
-
remoteAddress
Description copied from interface:ConnectionInfo
TheSocketAddress
to which the associated connection is connected.- Specified by:
remoteAddress
in interfaceConnectionInfo
- Returns:
- The
SocketAddress
to which the associated connection is connected.
-
sslConfig
Description copied from interface:ConnectionInfo
Get theSslConfig
for this connection.- Specified by:
sslConfig
in interfaceConnectionInfo
- Returns:
- The
SslConfig
if SSL/TLS is configured, ornull
otherwise.
-
sslSession
Description copied from interface:ConnectionInfo
Get theSSLSession
for this connection.- Specified by:
sslSession
in interfaceConnectionInfo
- Returns:
- The
SSLSession
if SSL/TLS is enabled, ornull
otherwise.
-
executionContext
Description copied from interface:ConnectionInfo
Get theExecutionContext
for thisConnectionInfo
.The
ExecutionContext.ioExecutor()
will represent the thread responsible for IO for thisConnectionInfo
. Note that this maybe different that what was used to create this object because at this time a specificIoExecutor
has been selected.- Specified by:
executionContext
in interfaceConnectionInfo
- Returns:
- the
ExecutionContext
for thisConnectionInfo
.
-
socketOption
Description copied from interface:ConnectionInfo
- Specified by:
socketOption
in interfaceConnectionInfo
- Type Parameters:
T
- the type of theSocketOption
value.- Parameters:
option
-SocketOption
to get.- Returns:
- the
SocketOption
value of typeT
for thisConnectionInfo
ornull
if thisSocketOption
is not supported by thisConnectionInfo
. - See Also:
-
protocol
Description copied from interface:ConnectionInfo
Get theConnectionInfo.Protocol
for thisConnectionInfo
.- Specified by:
protocol
in interfaceConnectionInfo
- Returns:
- the
ConnectionInfo.Protocol
for thisConnectionInfo
.
-
parent
Description copied from interface:ConnectionContext
Returns a reference to a parentConnectionContext
if any.This method is useful when multiple virtual streams are multiplexed over a single connection to get access to the actual
ConnectionContext
that represents network.- Specified by:
parent
in interfaceConnectionContext
- Returns:
- a reference to a parent
ConnectionContext
if any. Otherwise, returnsnull
.
-
onClose
Description copied from interface:ListenableAsyncCloseable
Returns aCompletable
that is notified once theListenableAsyncCloseable
was closed.- Specified by:
onClose
in interfaceListenableAsyncCloseable
- Returns:
- the
Completable
that is notified on close.
-
onClosing
Description copied from interface:ListenableAsyncCloseable
Returns aCompletable
that is notified when closing begins.Closing begin might be when a close operation is initiated locally (e.g. subscribing to
AsyncCloseable.closeAsync()
) or it could also be a transport event received from a remote peer (e.g. read aconnection: close
header).For backwards compatibility this method maybe functionally equivalent to
ListenableAsyncCloseable.onClose()
. Therefore, provides a best-effort leading edge notification of closing, but may fall back to notification on trailing edge.The goal of this method is often to notify asap when closing so this method may not be offloaded and care must be taken to avoid blocking if subscribing to the return
Completable
.- Specified by:
onClosing
in interfaceListenableAsyncCloseable
- Returns:
- a
Completable
that is notified when closing begins.
-
closeAsync
Description copied from interface:AsyncCloseable
Used to close/shutdown a resource.- Specified by:
closeAsync
in interfaceAsyncCloseable
- Returns:
- A
Completable
that is notified once the close is complete.
-
closeAsyncGracefully
Description copied from interface:AsyncCloseable
Used to close/shutdown a resource, similar toAsyncCloseable.closeAsync()
, but attempts to cleanup state before abruptly closing. This provides a hint that implementations can use to stop accepting new work and finish in flight work. This method is implemented on a "best effort" basis and may be equivalent toAsyncCloseable.closeAsync()
.Note: Implementations may or may not apply a timeout for this operation to complete, if a caller does not want to wait indefinitely, and are unsure if the implementation applies a timeout, it is advisable to apply a timeout and force a call to
AsyncCloseable.closeAsync()
.- Specified by:
closeAsyncGracefully
in interfaceAsyncCloseable
- Returns:
- A
Completable
that is notified once the close is complete.
-
toString
-