Class DelegatingConnectionFactory<ResolvedAddress,C extends ListenableAsyncCloseable>
- Type Parameters:
ResolvedAddress
- The type of resolved addresses that can be used for connecting.C
- The type of connections created by this factory.
- All Implemented Interfaces:
ConnectionFactory<ResolvedAddress,
,C> AsyncCloseable
,ListenableAsyncCloseable
ConnectionFactory
that delegates all methods to another ConnectionFactory
.-
Constructor Summary
ConstructorsConstructorDescriptionCreate a new instance. -
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 final ConnectionFactory<ResolvedAddress,
C> delegate()
Returns theConnectionFactory
delegate.newConnection
(ResolvedAddress resolvedAddress, ContextMap context, TransportObserver observer) Creates and asynchronously returns a connection.newConnection
(ResolvedAddress resolvedAddress, TransportObserver observer) Deprecated.onClose()
Returns aCompletable
that is notified once theListenableAsyncCloseable
was closed.Returns aCompletable
that is notified when closing begins.
-
Constructor Details
-
DelegatingConnectionFactory
Create a new instance.- Parameters:
delegate
-ConnectionFactory
to which all methods are delegated.
-
-
Method Details
-
newConnection
@Deprecated public Single<C> newConnection(ResolvedAddress resolvedAddress, @Nullable TransportObserver observer) Deprecated.Description copied from interface:ConnectionFactory
Creates and asynchronously returns a connection.- Specified by:
newConnection
in interfaceConnectionFactory<ResolvedAddress,
C extends ListenableAsyncCloseable> - Parameters:
resolvedAddress
- to connect.observer
-TransportObserver
for the newly created connection.- Returns:
Single
that emits the created connection.
-
newConnection
public Single<C> newConnection(ResolvedAddress resolvedAddress, @Nullable ContextMap context, @Nullable TransportObserver observer) Description copied from interface:ConnectionFactory
Creates and asynchronously returns a connection.- Specified by:
newConnection
in interfaceConnectionFactory<ResolvedAddress,
C extends ListenableAsyncCloseable> - Parameters:
resolvedAddress
- to connect.context
-context
of the caller (e.g. request context) ornull
if no context provided.null
context may also mean that a connection is created outside the normal request processing (e.g. health-checking).observer
-TransportObserver
for the newly created connection ornull
if no observer provided.- Returns:
Single
that emits the created connection.
-
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.
-
delegate
Returns theConnectionFactory
delegate.- Returns:
- Delegate
ConnectionFactory
.
-