程序员

netty源码分析(24)- pipeline总结

2019-03-01  本文已影响0人  Jorgezhong

从18到23节都是在学习pipeline里面的内容,包括了ChannelHandlerChannelHandlerContext,事件的传播。本节进行总结一下。

  1. inbound事件的的同类顺序传播
  2. outbound事件的同类逆序传播
  3. exception事件链表顺序传播
三个问题

当调用pipeline.addLast(handler)的时候,其过程会实例化一个ChannelHandlerContext,其过程会调用instanceof关键子,判断handler是属于ChannelInboundHandler还是ChannelOutboundHandler,分别用boolean类型的变量inboundoutbound来标识。

inbound类型的事件传播和添加顺序正相关而outbound类型的事件和添加顺序逆相关

触发方式大体分两种,从开始节点触发从当前节点触发
当用户调用类似ctx.channel().pipeline().fireXXX()的时候,表示从开始节点触发,对于inbound事件和exception事件来说,开始节点是HeadContext,对于outbound事件来说,开始节点是TailContext
当用户调用ctx.fireXXXctx.write(XX)的时候,表示从当前节点触发,事件往下进行传播。

上一篇 下一篇

猜你喜欢

热点阅读