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 中的 下一個
相關文章
相關標籤/搜索