T
- connection type.K
- connection key type.F
- type of the CompletionStage
handle of the connection progress.public class AsyncConnectionProvider<K,T extends AsyncCloseable,F extends CompletionStage<T>> extends Object
getConnection(Object)
Connection requests} are synchronized with a shared synchronzer object
per
ConnectionKey
. Multiple threads requesting a connection for the same ConnectionKey
share the same
synchronizer and are not required to wait until a previous asynchronous connection is established but participate in existing
connection initializations. Shared synchronization leads to a fair synchronization amongst multiple threads waiting to obtain
a connection.
Constructor and Description |
---|
AsyncConnectionProvider(Function<? extends K,? extends F> connectionFactory)
Create a new
AsyncConnectionProvider . |
Modifier and Type | Method and Description |
---|---|
CompletableFuture<Void> |
close()
Close all connections.
|
void |
close(K key)
Close a connection by its connection
key . |
void |
forEach(BiConsumer<? super K,? super T> action)
Execute an action for all established and pending
AsyncCloseable s. |
void |
forEach(Consumer<? super T> action)
Execute an action for all established and pending connections.
|
F |
getConnection(K key)
Request a connection for the given the connection
key and return a CompletionStage that is notified about
the connection outcome. |
int |
getConnectionCount() |
void |
register(K key,
T connection)
Register a connection identified by
key . |
public AsyncConnectionProvider(Function<? extends K,? extends F> connectionFactory)
AsyncConnectionProvider
.connectionFactory
- must not be null
.public F getConnection(K key)
key
and return a CompletionStage
that is notified about
the connection outcome.key
- the connection key
, must not be null
.public void register(K key, T connection)
key
. Overwrites existing entries.key
- the connection key
.connection
- the connection object.public int getConnectionCount()
public CompletableFuture<Void> close()
public void close(K key)
key
. Pending connections are closed using future chaining.key
- the connection key
, must not be null
.public void forEach(Consumer<? super T> action)
action
- the action.public void forEach(BiConsumer<? super K,? super T> action)
AsyncCloseable
s.action
- the action.Copyright © 2021 lettuce.io. All rights reserved.