Netty的深入浅出--58.channel与channelHandler及channelHandlerContext

这是上一章我们重点分析的部分

这一章我们继续往下分析 

这里要首先下一个定义:ChannelContext是ChannelHandler和ChannelPipeline之间交互的桥梁

addLast里面创建的对象是要到达一个指定事件发生的时候才会被执行

查看ChannelInitializer

 

 我们可以看到,我们自定义的MyServerInitializer也是继承于ChannelInitializer

我们可以看到 ChannelInitializer简化了我们的编程,通过一个initChannel方法将若干个程序里面所需要的处理器添加到了pipeline当中

 

因此我们可以看出 ChannelInitializer是一个很重要的组件。

我们可以看到ChannelInitializer继承了ChannelInboundHandlerAdapter类(它是处理入栈数据的处理器适配器,而ChannelOutboundHandlerAdapter是处理出栈的处理器适配器)。它经常使用在handler()、childHandler()方法中。

 现在我们来研究一下这里的ChannelPipeline.addlast()方法到底做了什么

 将ChannelHandler插入到pipeline的最后一个位置

 查看addLast的实现

 

查看AbstracChannelHandlerContext

 

 

 

 

doc文档中就说了我之前下的那个定义,channelhandlercontext即可以通知channelpipeline中的下一个channelhandler,还可以动态修改channelpipeline对象

 

描述的意思是你可以提前保存好一个ChannelHandlerContext对象然后可以供其他线程或者外部事件去触发使用它

 

一个ChannelHandler可以有多个ChannelHandlerContext,因为一个ChannelHandler实例可以被多个ChannelPipeline所添加

 

每加入一次ChannelHandler就会产生一个ChannelContext对象,在下面的例子中FactorialHandler fh只有一个实例,但是它对于了四个ChannelHandlerContext对象。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值