12、Netty源码分析:ChannelHandler

ChannelHandler用来处理channel的I/O事件,其类结构如下:
*

它所能处理的事件如下:

*

在netty中,ChannelHandler不会直接添加到pipeline中,而是通过ChannelHandlerContext进行一层包装,通过ChannelHandlerContext可实现事件传播,其类图如下:

*

ChannelHandlerContext的功能与ChannelHandler类似,当调用fireXXX方法时会触发handler相应的方法,如下:

*

ChannelHandlerContext通过它的成员参数prev和next来形成链表,当有事件进入链表时能进行向上传播或者向下传播。
*

默认的一般使用DefaultChannelHandlerContext

netty中通过pipeline将处理channel的操作形成一条流水线,它的功能如下:

*

pipeline的参数如下:

*

在创建默认的pipeline时会先初始化head和tail节点 ,当添加新的handler时会添加到两者中间。

*

addFirst为例看下handler, context, pipeline三者的联系:

*

总结:本文主要介绍了ChannelHandler, ChannelHandlerContext, Pipeline三者的功能与关系。

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: