Pipeline 和 ChannelPipeline

说明

1.ChannelPipeline是一个Handler的集合,它负责处理和拦截inbount或者outbound的事件和操作,相当于一个贯穿Netty的链(也可以这样理解:ChannelPipeline是保存ChannelHandler的List,用于处理或拦截Channel的入站事件和出站操作)
2.ChannelPipeline 实现了一种高级形式的拦截过滤器模式,使用户可以完全控制事件的处理方式,以及Channel中各个的ChannelHandler如何相互交互
3.在Netty中每个Channel都有且仅有一个ChannelPipeline与之对应
image.png
一个Channel包含了一个ChannelPipeline,而ChannelPipeline又维护了一个由ChannelHandlerContext组成的双向链表,并且每个ChannelHandlerContext中又关联着一个ChannelHandler
入站事件和出站事件在一个双向链表中,入站事件会从链表head往后传递到最后一个入站的handler,出站事件会从链表tail往前传递到最前一个出站的handler,两种类型的handler互不干扰

常用方法

image.png