netty中的ChannelHandler和ChannelPipeline

netty中的ChannelHandler和ChannelPipeline

ChannelHandler 家族

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

Channel 生命周期

  • channelRegistered: 注册。
  • channelActive: 活跃状态,可接收和发送数据。
  • channelInactive: 处于非活跃状态,没有链接到远程主机。
  • channelUnregistered: 已建立但未注册到一个 EventLoop。

ChannelHandler 生命周期

  • handlerAdded: 当 ChannelHandler 添加到 ChannelPipeline 调用
  • handlerRemoved: 当 ChannelHandler 从 ChannelPipeline 移除时调用
  • exceptionCaught: 当 ChannelPipeline 执行抛出异常时调用

ChannelHandler两个重要的接口:netty

  • ChannelInboundHandler : 处理进站数据和全部状态更改事件。
  • ChannelOutboundHandler : 处理出站数据,容许拦截各类操做。

ChannelPipeline

ChannelPipeline 是一系列ChannelHandler的实例,流经一个Channel的事件能够被ChannelPipeline拦截接口

ChannelPipelines和ChannelHandlers

ChannelHandlerContext

ChannelHandlerContext表明了ChannelPipeline和ChannelHandler之间的关联,是ChannelHandler之间信息传递的桥梁。生命周期

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

Channel_ChannelHandler

  • 一、Channel绑定到ChannelPipeline
  • 二、ChannelPipeline绑定到包含ChannelHandler的Channel
  • 三、ChannelHandler
  • 四、当添加ChannelHandler到ChannelPipeline时,ChannelHandlerContext被建立

Channel中信息的传递:ip

  • Channel或者ChannelPipeline上调用write()方法,会让整个事件在管道中进行传递。
  • ChannelHandler之间的数据传递则经过ChannelHandlerContext调用方法来实现。

channel中事件的传递

  • 事件传递给 ChannelPipeline 的第一个 ChannelHandler
  • ChannelHandler 经过关联的 ChannelHandlerContext 传递事件给 ChannelPipeline 中的 下一个
  • ChannelHandler 经过关联的 ChannelHandlerContext 传递事件给 ChannelPipeline 中的 下一个
相关文章
相关标签/搜索