ChannelHandlerContext
通道处理器上下文。
当ChannelHandler添加到ChannelPipeline时,每一个处理器都会分配一个上下文与之绑定,生死不离。上下文可以自身处理器与其他的处理器进行交互,因为上下文并不会改变处理器本身,所以上下文是安全的。
处理器与上下文和管道的关系图
上下文中的方法有一个特点 : 它的事件传播是从它本身作为起点,它不需要流经整个管道。
而通道和管道的方法:都是需要从管道的一端传播到另一端,需要流经整个管道。
这样一来导致调用ChannelHandler处理器的数量是不同的,当然也会产生不同的效果。
在上下文中可以调用管道来动态增、删、改处理器,可以保存上下文供后面使用。
处理器和上下文的高级用法:
1. 将处理器添加到管道中实现动态协议切换
2. 缓存上下文
一个处理器是可以供多个管道使用的,但是要添加@Sharable标记该处理是安全共享的,共享一个处理器可以收集不同channel的统计信息或者使用一个ChannelHandler来统计连接数、处理全局数据等。
以上只是我个人理解,仅供参考,如有错误,请包涵指正!