您的位置:首页 > 其它

netty中的ChannelHandler和ChannelPipeline

2017-11-10 14:12 447 查看

netty中的ChannelHandler和ChannelPipeline

ChannelHandler 家族

https://www.w3cschool.cn/essential_netty_in_action/

Channel 生命周期



channelRegistered: 注册。

channelActive: 活跃状态,可接收和发送数据。

channelInactive: 处于非活跃状态,没有连接到远程主机。

channelUnregistered: 已创建但未注册到一个 EventLoop。


ChannelHandler 生命周期



handlerAdded: 当 ChannelHandler 添加到 ChannelPipeline 调用

handlerRemoved: 当 ChannelHandler 从 ChannelPipeline 移除时调用

exceptionCaught: 当 ChannelPipeline 执行抛出异常时调用


ChannelHandler两个重要的接口:



ChannelInboundHandler : 处理进站数据和所有状态更改事件。

ChannelOutboundHandler : 处理出站数据,允许拦截各种操作。


ChannelPipeline

ChannelPipeline 是一系列ChannelHandler的实例,流经一个Channel的事件可以被ChannelPipeline拦截



ChannelHandlerContext

ChannelHandlerContext代表了ChannelPipeline和ChannelHandler之间的关联,是ChannelHandler之间信息传递的桥梁。

ChannelPipeline、Channel、ChannelHandler、ChannelHandlerContext之间的关系。





1、Channel绑定到ChannelPipeline

2、ChannelPipeline绑定到包含ChannelHandler的Channel

3、ChannelHandler

4、当添加ChannelHandler到ChannelPipeline时,ChannelHandlerContext被创建


Channel中信息的传递:



Channel或者ChannelPipeline上调用write()方法,会让整个事件在管道中进行传递。

ChannelHandler之间的数据传递则通过ChannelHandlerContext调用方法来实现。







事件传递给 ChannelPipeline 的第一个 ChannelHandler

ChannelHandler 通过关联的 ChannelHandlerContext 传递事件给 ChannelPipeline 中的 下一个

ChannelHandler 通过关联的 ChannelHandlerContext 传递事件给 ChannelPipeline 中的 下一个

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: