public class DefaultEndpoint extends Object implements RedisChannelWriter, Endpoint, PushHandler
Endpoint
implementation.Constructor and Description |
---|
DefaultEndpoint(ClientOptions clientOptions,
ClientResources clientResources)
Create a new
DefaultEndpoint . |
Modifier and Type | Method and Description |
---|---|
void |
addListener(PushListener listener)
Add a new
listener . |
void |
close()
Close the connection.
|
CompletableFuture<Void> |
closeAsync()
Asynchronously close the
RedisChannelWriter . |
void |
disconnect()
Disconnect the channel.
|
protected <T> T |
doExclusive(Supplier<T> supplier)
Execute a
Supplier callback guarded by an exclusive lock. |
protected List<RedisCommand<?,?,?>> |
drainCommands() |
void |
flushCommands()
Flush pending commands.
|
ClientResources |
getClientResources() |
List<PushListener> |
getPushListeners()
Returns a collection of
PushListener . |
void |
initialState()
Reset the command-handler to the initial not-connected state.
|
boolean |
isClosed() |
protected String |
logPrefix() |
void |
notifyChannelActive(Channel channel)
Notify about channel activation.
|
void |
notifyChannelInactive(Channel channel)
Notify about channel deactivation.
|
void |
notifyDrainQueuedCommands(io.lettuce.core.protocol.HasQueuedCommands queuedCommands)
Signal the endpoint to drain queued commands from the queue holder.
|
void |
notifyException(Throwable t)
Notify about an exception occured in channel/command processing
|
void |
registerConnectionWatchdog(ConnectionWatchdog connectionWatchdog)
Associate a
ConnectionWatchdog with the Endpoint . |
void |
removeListener(PushListener listener)
Remove an existing
listener . |
void |
reset()
Reset the writer state.
|
void |
setAutoFlushCommands(boolean autoFlush)
Disable or enable auto-flush behavior.
|
void |
setConnectionFacade(ConnectionFacade connectionFacade)
Set the corresponding connection facade in order to notify it about channel active/inactive state.
|
<K,V> Collection<RedisCommand<K,V,?>> |
write(Collection<? extends RedisCommand<K,V,?>> commands)
Write multiple commands on the channel.
|
<K,V,T> RedisCommand<K,V,T> |
write(RedisCommand<K,V,T> command)
Write a command on the channel.
|
protected <C extends RedisCommand<?,?,T>,T> |
writeToBuffer(C command) |
protected volatile Channel channel
public DefaultEndpoint(ClientOptions clientOptions, ClientResources clientResources)
DefaultEndpoint
.clientOptions
- client options for this connection, must not be null
.clientResources
- client resources for this connection, must not be null
.public void setConnectionFacade(ConnectionFacade connectionFacade)
RedisChannelWriter
setConnectionFacade
in interface RedisChannelWriter
connectionFacade
- the connection facade (external connection object)public ClientResources getClientResources()
getClientResources
in interface RedisChannelWriter
ClientResources
.public void setAutoFlushCommands(boolean autoFlush)
RedisChannelWriter
true
. If autoFlushCommands is disabled, multiple commands
can be issued without writing them actually to the transport. Commands are buffered until a RedisChannelWriter.flushCommands()
is
issued. After calling RedisChannelWriter.flushCommands()
commands are sent to the transport and executed by Redis.setAutoFlushCommands
in interface RedisChannelWriter
autoFlush
- state of autoFlush.public void addListener(PushListener listener)
PushHandler
listener
.addListener
in interface PushHandler
listener
- the listener, must not be null
.public void removeListener(PushListener listener)
PushHandler
listener
.removeListener
in interface PushHandler
listener
- the listener, must not be null
.public List<PushListener> getPushListeners()
PushHandler
PushListener
.getPushListeners
in interface PushHandler
public <K,V,T> RedisCommand<K,V,T> write(RedisCommand<K,V,T> command)
RedisChannelWriter
write
in interface RedisChannelWriter
T
- result typecommand
- the Redis command.public <K,V> Collection<RedisCommand<K,V,?>> write(Collection<? extends RedisCommand<K,V,?>> commands)
RedisChannelWriter
write
in interface RedisChannelWriter
K
- key typeV
- value typecommands
- the Redis commands.protected <C extends RedisCommand<?,?,T>,T> void writeToBuffer(C command)
public void notifyChannelActive(Channel channel)
Endpoint
notifyChannelActive
in interface Endpoint
channel
- the channelpublic void notifyChannelInactive(Channel channel)
Endpoint
notifyChannelInactive
in interface Endpoint
channel
- the channelpublic void notifyException(Throwable t)
Endpoint
notifyException
in interface Endpoint
t
- the Exceptionpublic void registerConnectionWatchdog(ConnectionWatchdog connectionWatchdog)
Endpoint
ConnectionWatchdog
with the Endpoint
.registerConnectionWatchdog
in interface Endpoint
connectionWatchdog
- the connection watchdog.public void flushCommands()
RedisChannelWriter
flushCommands
in interface RedisChannelWriter
public void close()
close
in interface RedisChannelWriter
close
in interface Closeable
close
in interface AutoCloseable
public CompletableFuture<Void> closeAsync()
RedisChannelWriter
RedisChannelWriter
.closeAsync
in interface AsyncCloseable
closeAsync
in interface RedisChannelWriter
public void disconnect()
public void reset()
reset
in interface RedisChannelWriter
public void initialState()
initialState
in interface Endpoint
public void notifyDrainQueuedCommands(io.lettuce.core.protocol.HasQueuedCommands queuedCommands)
Endpoint
notifyDrainQueuedCommands
in interface Endpoint
queuedCommands
- the queue holder.public boolean isClosed()
protected <T> T doExclusive(Supplier<T> supplier)
Supplier
callback guarded by an exclusive lock.T
- supplier
- protected List<RedisCommand<?,?,?>> drainCommands()
protected String logPrefix()
Copyright © 2022 lettuce.io. All rights reserved.