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();
//其他省略
}