public class FlushConsolidationHandler extends ChannelDuplexHandler
ChannelDuplexHandler
能够综合八十二万六千二百四十四亿三千四百八十三万三千八百四十一 / 八十二万六千二百四十四亿三千四百八十三万九千三百六十七操作(其也包括八二六二四四三四八四六零七八 / 八二六二四四三四八五二七八九和ChannelOutboundInvoker.writeAndFlush(Object)
/ 八二六二四四三四八六七七九○ )。
冲洗操作一般来说非常昂贵,因为这些操作可能触发传送级别上的系统调用。 因此,在大多数情况下(写延迟可以与吞吐量进行交易)是一个好主意,尽可能地尽量减少刷新操作。
如果读取循环当前正在进行, flush(ChannelHandlerContext)
将不会被传递到ChannelPipeline
中的下一个ChannelOutboundHandler
,因为当channelReadComplete(ChannelHandlerContext)
被触发时,它将拾取任何未决的刷新。 如果没有读循环正在进行,则行为取决于consolidateWhenNoReadInProgress
构造函数参数:
false
,刷新直接传递给下一个处理程序; true
,则将下一个处理程序的调用作为事件循环中的单独任务提交。 在高吞吐量下,这使得有机会在任务执行之前处理其他冲洗,从而将多次冲洗分配到一个冲洗中。 explicitFlushAfterFlushes
则也会转发刷新(无论是在读取循环中,还是在读取循环外进行批处理时)。
如果Channel
变得不可写,它也会尝试执行任何挂起的刷新操作。
FlushConsolidationHandler
应该放在ChannelPipeline
的第一个ChannelHandler
以获得最佳效果。
ChannelHandler.Sharable
Constructor and Description |
---|
FlushConsolidationHandler()
创建新的实例,在最新的256个挂起的刷新操作后显式刷新。
|
FlushConsolidationHandler(int explicitFlushAfterFlushes)
在没有正在读取的情况下,创建不巩固刷新的新实例。
|
FlushConsolidationHandler(int explicitFlushAfterFlushes, boolean consolidateWhenNoReadInProgress)
创建新的实例。
|
Modifier and Type | Method and Description |
---|---|
void |
channelRead(ChannelHandlerContext ctx, java.lang.Object msg)
|
void |
channelReadComplete(ChannelHandlerContext ctx)
|
void |
channelWritabilityChanged(ChannelHandlerContext ctx)
|
void |
close(ChannelHandlerContext ctx, ChannelPromise promise)
|
void |
disconnect(ChannelHandlerContext ctx, ChannelPromise promise)
|
void |
exceptionCaught(ChannelHandlerContext ctx, java.lang.Throwable cause)
|
void |
flush(ChannelHandlerContext ctx)
|
void |
handlerAdded(ChannelHandlerContext ctx)
子类可以忽略这个方法。
|
void |
handlerRemoved(ChannelHandlerContext ctx)
子类可以忽略这个方法。
|
bind, connect, deregister, read, write
channelActive, channelInactive, channelRegistered, channelUnregistered, userEventTriggered
ensureNotSharable, isSharable
public FlushConsolidationHandler()
public FlushConsolidationHandler(int explicitFlushAfterFlushes)
explicitFlushAfterFlushes
- 在完成显式刷新之后的刷新次数。
public FlushConsolidationHandler(int explicitFlushAfterFlushes, boolean consolidateWhenNoReadInProgress)
explicitFlushAfterFlushes
- 在完成显式刷新之后的刷新次数。
consolidateWhenNoReadInProgress
- 即使当前没有读取循环正在进行时是否合并冲洗。
public void handlerAdded(ChannelHandlerContext ctx) throws java.lang.Exception
ChannelHandlerAdapter
handlerAdded
在界面
ChannelHandler
handlerAdded
在课堂上
ChannelHandlerAdapter
java.lang.Exception
public void flush(ChannelHandlerContext ctx) throws java.lang.Exception
ChannelDuplexHandler
ChannelHandlerContext.flush()
转发到ChannelPipeline
中的下一个ChannelOutboundHandler
。
子类可以重写此方法来更改行为。
flush
在界面
ChannelOutboundHandler
flush
在课堂上
ChannelDuplexHandler
ctx
- 进行刷新操作的ChannelHandlerContext
java.lang.Exception
- 发生错误时抛出
public void channelReadComplete(ChannelHandlerContext ctx) throws java.lang.Exception
ChannelInboundHandlerAdapter
ChannelHandlerContext.fireChannelReadComplete()
转发至ChannelPipeline
中的下一个ChannelInboundHandler
。
子类可以重写此方法来更改行为。
channelReadComplete
在界面
ChannelInboundHandler
channelReadComplete
在课堂上
ChannelInboundHandlerAdapter
java.lang.Exception
public void channelRead(ChannelHandlerContext ctx, java.lang.Object msg) throws java.lang.Exception
ChannelInboundHandlerAdapter
ChannelHandlerContext.fireChannelRead(Object)
转发到ChannelPipeline
中的下一个ChannelInboundHandler
。
子类可以重写此方法来更改行为。
channelRead
在界面
ChannelInboundHandler
channelRead
在课堂上
ChannelInboundHandlerAdapter
java.lang.Exception
public void exceptionCaught(ChannelHandlerContext ctx, java.lang.Throwable cause) throws java.lang.Exception
ChannelInboundHandlerAdapter
ChannelHandlerContext.fireExceptionCaught(Throwable)
转发到ChannelPipeline
中的下一个ChannelHandler
。
子类可以重写此方法来更改行为。
exceptionCaught
在界面
ChannelHandler
exceptionCaught
在界面
ChannelInboundHandler
exceptionCaught
在课堂
ChannelInboundHandlerAdapter
java.lang.Exception
public void disconnect(ChannelHandlerContext ctx, ChannelPromise promise) throws java.lang.Exception
ChannelDuplexHandler
ChannelOutboundInvoker.disconnect(ChannelPromise)
转发至ChannelPipeline
中的下一个ChannelOutboundHandler
。
子类可以重写此方法来更改行为。
disconnect
在界面
ChannelOutboundHandler
disconnect
在课堂上
ChannelDuplexHandler
ctx
- 为其进行断开操作的ChannelHandlerContext
promise
- 操作完成后通知ChannelPromise
java.lang.Exception
- 发生错误时抛出
public void close(ChannelHandlerContext ctx, ChannelPromise promise) throws java.lang.Exception
ChannelDuplexHandler
ChannelOutboundInvoker.close(ChannelPromise)
转发到ChannelPipeline
中的下一个ChannelOutboundHandler
。
子类可以重写此方法来更改行为。
close
接口
ChannelOutboundHandler
close
在课堂上
ChannelDuplexHandler
ctx
- ChannelHandlerContext
进行关闭操作
promise
- 在操作完成后通知ChannelPromise
java.lang.Exception
- 发生错误时抛出
public void channelWritabilityChanged(ChannelHandlerContext ctx) throws java.lang.Exception
ChannelInboundHandlerAdapter
ChannelHandlerContext.fireChannelWritabilityChanged()
转发到ChannelPipeline
中的下一个ChannelInboundHandler
。
子类可以重写此方法来更改行为。
channelWritabilityChanged
在界面
ChannelInboundHandler
channelWritabilityChanged
在课堂
ChannelInboundHandlerAdapter
java.lang.Exception
public void handlerRemoved(ChannelHandlerContext ctx) throws java.lang.Exception
ChannelHandlerAdapter
handlerRemoved
接口
ChannelHandler
handlerRemoved
在课堂上
ChannelHandlerAdapter
java.lang.Exception
Copyright © 2008–2018 The Netty Project. All rights reserved.