Class DefaultPartitionedClientGroup<U,R,Client extends ListenableAsyncCloseable>
- java.lang.Object
-
- io.servicetalk.client.api.internal.DefaultPartitionedClientGroup<U,R,Client>
-
- Type Parameters:
U
- the type of address before resolution (unresolved address)R
- the type of address after resolution (resolved address)Client
- the type of client to connect to the partitions
- All Implemented Interfaces:
ClientGroup<PartitionAttributes,Client>
,AsyncCloseable
,ListenableAsyncCloseable
public final class DefaultPartitionedClientGroup<U,R,Client extends ListenableAsyncCloseable> extends java.lang.Object implements ClientGroup<PartitionAttributes,Client>
An implementation ofClientGroup
that can be used for partitioned client use-cases wherePartitionAttributes
are discovered throughPartitionedServiceDiscovererEvent
s.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
DefaultPartitionedClientGroup.PartitionedClientFactory<U,R,Client>
Factory for building partitioned clients.
-
Constructor Summary
Constructors Constructor Description DefaultPartitionedClientGroup(java.util.function.Function<PartitionAttributes,Client> closedPartitionClient, java.util.function.Function<PartitionAttributes,Client> unknownPartitionClient, DefaultPartitionedClientGroup.PartitionedClientFactory<U,R,Client> clientFactory, PartitionMapFactory partitionMapFactory, Publisher<PartitionedServiceDiscovererEvent<R>> psdEvents, int psdMaxQueueSize)
Creates a new instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Completable
closeAsync()
Used to close/shutdown a resource.Completable
closeAsyncGracefully()
Used to close/shutdown a resource, similar toAsyncCloseable.closeAsync()
, but attempts to cleanup state before abruptly closing.Client
get(PartitionAttributes partitionAttributes)
Return theClientGroup
identified by the providedkey
or create a new one when none exists.Completable
onClose()
Returns aCompletable
that is notified once theListenableAsyncCloseable
was closed.
-
-
-
Constructor Detail
-
DefaultPartitionedClientGroup
public DefaultPartitionedClientGroup(java.util.function.Function<PartitionAttributes,Client> closedPartitionClient, java.util.function.Function<PartitionAttributes,Client> unknownPartitionClient, DefaultPartitionedClientGroup.PartitionedClientFactory<U,R,Client> clientFactory, PartitionMapFactory partitionMapFactory, Publisher<PartitionedServiceDiscovererEvent<R>> psdEvents, int psdMaxQueueSize)
Creates a new instance.- Parameters:
closedPartitionClient
- factory for clients that handle requests for a closed partitionunknownPartitionClient
- factory for clients that handles requests for an unknown partitionclientFactory
- used to create clients for newly discovered partitionspartitionMapFactory
- factory to provide aPartitionMap
implementation appropriate for the use-casepsdEvents
- the stream ofPartitionedServiceDiscovererEvent
spsdMaxQueueSize
- max number of new partitions to queue up
-
-
Method Detail
-
onClose
public Completable 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.
-
closeAsync
public Completable 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
public Completable 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.
-
get
public Client get(PartitionAttributes partitionAttributes)
Description copied from interface:ClientGroup
Return theClientGroup
identified by the providedkey
or create a new one when none exists.- Specified by:
get
in interfaceClientGroup<U,R>
- Parameters:
partitionAttributes
- the key identifying the client to return or create, this key may contain attributes about the requested client in order to create new instances- Returns:
- a client assigned to the provided
key
, either by looking up an existing or creating a new instance if non-existent
-
-