Class DelegatingServiceDiscoverer<UnresolvedAddress,ResolvedAddress,E extends ServiceDiscovererEvent<ResolvedAddress>>
- Type Parameters:
UnresolvedAddress
- The type of address before resolution.ResolvedAddress
- The type of address after resolution.E
- Type ofServiceDiscovererEvent
s published fromdiscover(Object)
.
- All Implemented Interfaces:
ServiceDiscoverer<UnresolvedAddress,
,ResolvedAddress, E> AsyncCloseable
,ListenableAsyncCloseable
ServiceDiscoverer
that delegates all methods to another ServiceDiscoverer
.-
Constructor Summary
ConstructorsConstructorDescriptionCreates 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 ServiceDiscoverer<UnresolvedAddress,
ResolvedAddress, E> delegate()
Returns theServiceDiscoverer
delegate.discover
(UnresolvedAddress address) Subscribe to the service discovery system for changes in the availableServiceDiscoverer
associated withaddress
.onClose()
Returns aCompletable
that is notified once theListenableAsyncCloseable
was closed.Returns aCompletable
that is notified when closing begins.toString()
-
Constructor Details
-
DelegatingServiceDiscoverer
Creates a new instance.- Parameters:
delegate
-ServiceDiscoverer
to which all methods are delegated.
-
-
Method Details
-
delegate
Returns theServiceDiscoverer
delegate.- Returns:
- Delegate
ServiceDiscoverer
.
-
discover
Description copied from interface:ServiceDiscoverer
Subscribe to the service discovery system for changes in the availableServiceDiscoverer
associated withaddress
.In general a call to this method will continue to discover changes related to
address
until theSubscription
corresponding to the return value iscancelled
orPublisher
fails with an error. The returnedPublisher
should nevercomplete
because underlying system may run for a long period of time and updates may be required at any time in the future. The returnedPublisher
MUST support re-subscribes to allow underlying systems retry failures or re-subscribe aftercancellation
.- Specified by:
discover
in interfaceServiceDiscoverer<UnresolvedAddress,
ResolvedAddress, E extends ServiceDiscovererEvent<ResolvedAddress>> - Parameters:
address
- the service address to discover. Examples of what this address maybe are:- hostname/port (e.g. InetAddress)
- service name
- it may be a list of attributes which describe the service attributes to resolve
- something else
- Returns:
- a
Publisher
that represents a stream of events from the service discovery system.
-
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
-