public class FlushConsolidationHandler
extends io.netty.channel.ChannelDuplexHandler
ChannelDuplexHandler which consolidate Channel.flush() / ChannelHandlerContext.flush()
operations (which also includes
Channel.writeAndFlush(Object) / Channel.writeAndFlush(Object, ChannelPromise) and
ChannelHandlerContext.writeAndFlush(Object) /
ChannelHandlerContext.writeAndFlush(Object, ChannelPromise)).
Flush operations are general speaking expensive as these may trigger a syscall on the transport level. Thus it is in most cases (where write latency can be traded with throughput) a good idea to try to minimize flush operations as much as possible.
When flush(ChannelHandlerContext) is called it will only pass it on to the next
ChannelOutboundHandler in the ChannelPipeline if no read loop is currently ongoing
as it will pick up any pending flushes when channelReadComplete(ChannelHandlerContext) is trigged.
If explicitFlushAfterFlushes is reached the flush will also be forwarded as well.
If the Channel becomes non-writable it will also try to execute any pending flush operations.
The FlushConsolidationHandler should be put as first ChannelHandler in the
ChannelPipeline to have the best effect.
| Constructor and Description |
|---|
FlushConsolidationHandler()
Create new instance which explicit flush after 256 pending flush operations latest.
|
FlushConsolidationHandler(int explicitFlushAfterFlushes)
Create new instance.
|
| Modifier and Type | Method and Description |
|---|---|
void |
channelRead(io.netty.channel.ChannelHandlerContext ctx,
Object msg) |
void |
channelReadComplete(io.netty.channel.ChannelHandlerContext ctx) |
void |
channelWritabilityChanged(io.netty.channel.ChannelHandlerContext ctx) |
void |
close(io.netty.channel.ChannelHandlerContext ctx,
io.netty.channel.ChannelPromise promise) |
void |
disconnect(io.netty.channel.ChannelHandlerContext ctx,
io.netty.channel.ChannelPromise promise) |
void |
exceptionCaught(io.netty.channel.ChannelHandlerContext ctx,
Throwable cause) |
void |
flush(io.netty.channel.ChannelHandlerContext ctx) |
void |
handlerRemoved(io.netty.channel.ChannelHandlerContext ctx) |
bind, connect, deregister, read, writechannelActive, channelInactive, channelRegistered, channelUnregistered, userEventTriggeredpublic FlushConsolidationHandler()
public FlushConsolidationHandler(int explicitFlushAfterFlushes)
explicitFlushAfterFlushes - the number of flushes after which an explicit flush will be done.public void flush(io.netty.channel.ChannelHandlerContext ctx)
throws Exception
flush in interface io.netty.channel.ChannelOutboundHandlerflush in class io.netty.channel.ChannelDuplexHandlerExceptionpublic void channelReadComplete(io.netty.channel.ChannelHandlerContext ctx)
throws Exception
channelReadComplete in interface io.netty.channel.ChannelInboundHandlerchannelReadComplete in class io.netty.channel.ChannelInboundHandlerAdapterExceptionpublic void channelRead(io.netty.channel.ChannelHandlerContext ctx,
Object msg)
throws Exception
channelRead in interface io.netty.channel.ChannelInboundHandlerchannelRead in class io.netty.channel.ChannelInboundHandlerAdapterExceptionpublic void exceptionCaught(io.netty.channel.ChannelHandlerContext ctx,
Throwable cause)
throws Exception
exceptionCaught in interface io.netty.channel.ChannelHandlerexceptionCaught in interface io.netty.channel.ChannelInboundHandlerexceptionCaught in class io.netty.channel.ChannelInboundHandlerAdapterExceptionpublic void disconnect(io.netty.channel.ChannelHandlerContext ctx,
io.netty.channel.ChannelPromise promise)
throws Exception
disconnect in interface io.netty.channel.ChannelOutboundHandlerdisconnect in class io.netty.channel.ChannelDuplexHandlerExceptionpublic void close(io.netty.channel.ChannelHandlerContext ctx,
io.netty.channel.ChannelPromise promise)
throws Exception
close in interface io.netty.channel.ChannelOutboundHandlerclose in class io.netty.channel.ChannelDuplexHandlerExceptionpublic void channelWritabilityChanged(io.netty.channel.ChannelHandlerContext ctx)
throws Exception
channelWritabilityChanged in interface io.netty.channel.ChannelInboundHandlerchannelWritabilityChanged in class io.netty.channel.ChannelInboundHandlerAdapterExceptionCopyright © 2008–2016 The Netty Project. All rights reserved.