ChannelHandlerContext

2018-10-06  本文已影响124人  勃列日涅夫

ChannelHandlerContext代表了一个ChannelHandler和ChannelPipeline之间的关系,ChannelHandlerContext创建于ChannelHandler被载入到ChannelPipeline的时候,ChannelHandlerContext主要功能是管理在同一ChannelPipeline中各个ChannelHandler的交互

ChannelHandlerContext,Channel,ChannelPipeline提供的一些方法,下图时三者者之间的关系

图片.png

关于ChannelHandlerContext 的write方式有三种
其一通过:ChannelHandlerContext .channel 的write方法
其二通过:ChannelHandlerContext.pipeline的write方法
其三通过:继承接口ChannelOutboundInvoker的write方法

一二方法相似:通过Channel或者ChannelPipeline调用write方法都会使事件沿着管道传播,这点很重要的,从一个Channel到下一个Channel的移动是由ChannelHandlerContext管控的。

第三种方法:当需要在ChannelPipeline中的某些具体的地方开始传播一个事件,就需要用到第三种
这样做的好处:减少事件在那些对该事件不感兴趣的处理器传播的损耗。防止那些“感兴趣”的处理器处理后产生不好的影响

ChannelHandlerContext 类

public interface ChannelHandlerContext extends AttributeMap, ChannelInboundInvoker, ChannelOutboundInvoker {

    Channel channel();
    ChannelHandlerContext read();

    ChannelHandlerContext flush();

    ChannelPipeline pipeline();

    ByteBufAllocator alloc();
//其他省略

}
上一篇下一篇

猜你喜欢

热点阅读