博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
netty中的ChannelHandler和ChannelPipeline
阅读量:7250 次
发布时间:2019-06-29

本文共 1206 字,大约阅读时间需要 4 分钟。

netty中的ChannelHandler和ChannelPipeline

ChannelHandler 家族

Channel 生命周期

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

ChannelHandler 生命周期

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

ChannelHandler两个重要的接口:

  • ChannelInboundHandler : 处理进站数据和所有状态更改事件。
  • ChannelOutboundHandler : 处理出站数据,允许拦截各种操作。

ChannelPipeline

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

ChannelPipelines和ChannelHandlers

ChannelHandlerContext

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

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

Channel_ChannelHandler

  • 1、Channel绑定到ChannelPipeline
  • 2、ChannelPipeline绑定到包含ChannelHandler的Channel
  • 3、ChannelHandler
  • 4、当添加ChannelHandler到ChannelPipeline时,ChannelHandlerContext被创建

Channel中信息的传递:

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

channel中事件的传递

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

转载地址:http://qzhbm.baihongyu.com/

你可能感兴趣的文章
centos7.3安装RabbitMQ
查看>>
【转】ORACLE的REDO与UNDO
查看>>
python 格式化输出之%号
查看>>
VS2015配置使用Sqlite以及EF6框架记录
查看>>
C#获取本机所有IP地址(包括局域网和本机外网IP)
查看>>
【leetcode】Valid Triangle Number
查看>>
微信扫二维码缓存的问题
查看>>
getContext() , getApplicationContext() , getBaseContext() and “this”的区别
查看>>
C# int数组转string字符串
查看>>
引用是具有特殊语义的指针
查看>>
maven配置默认jdk版本
查看>>
IOS-网络SOCKET操作
查看>>
【poj解题】1308
查看>>
寒假作业2
查看>>
Docker部署SonarQube
查看>>
VMware vs openStack对比直观优势
查看>>
Centos6.5 Qt4开发 Cannot find -lGL QApplication not file or dir
查看>>
C 基于socket实现简单的文件传输
查看>>
linux运维社区站点收集
查看>>
Python_sklearn机器学习库学习笔记(五)k-means(聚类)
查看>>