Netty原理基本介绍
pipleline原理图
基本介绍
图一为ChannelPipleline的处理流程图。可以看出netty通过socket收发数据,用户在创建netty Channel实例的时候,需要将数据处理逻辑的Handler设置到channel的pipeline中。socket读取数据后channel会按照pipeline中的handler如Handler1 -> Handler2 -> ... HandlerM顺序依次处理。发送数据是channel会按照相反的顺序HandlerM -> .. -> Handler2 -> Handler1处理数据。在处理的过程当中如果pipeline中的Handler与收发数据的处理的类型不符合,则跳过,如发送数据是发现为InboundHandler这跳过本次逻辑,下面以读取数据为例,对netty如何跳过的源码进行分析:
DefaultChannelPipeline Construct方法图
上图为DefaultChannelPipeline的初始化方法,tail,head pipeline的头指针、未指针。
TailText数据读取
上图为TailText类的数据读取方法,在数据读取前会寻找下一个OutboundHandlerContext,OutbountHandlerContext为OutboundHandler的上下文
HeadText获取下一个Handler