12、Netty源码分析:ChannelHandler

本文深入解析Netty网络框架中ChannelHandler、ChannelHandlerContext与Pipeline三大核心组件的功能、类结构、事件处理机制以及它们之间的协作关系,帮助你理解Netty事件传播与流水线处理模型。

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三者的功能与关系。

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