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 中的 下一个

netty中的ChannelHandler和ChannelPipeline的更多相关文章

  1. netty中的Channel、ChannelPipeline

    一.Channel与ChannelPipeline关系 每一个新创建的 Channel 都将会被分配一个新的 ChannelPipeline.这项关联是永久性 的:Channel 既不能附加另外一个 ...

  2. Netty 中的 handler 和 ChannelPipeline 分析

    上一节我们讲了 Netty 的启动流程,从启动流程入手分析了 Reactor 模型的第一步:channel 如何绑定 Selector.然后讲到了 EventLoop 在启动的时候发挥了什么作用.整个 ...

  3. Netty 框架学习 —— ChannelHandler 与 ChannelPipeline

    ChannelHandler 1. Channel 生命周期 Channel 的生命周期状态如下: 状态 描述 ChannelUnregistered Channel 已经被创建,但还未注册到 Eve ...

  4. netty中的引导Bootstrap服务端

    引导一个应用程序是指对它进行配置,并使它运行起来的过程. 一.Bootstrap 类 引导类的层次结构包括一个抽象的父类和两个具体的引导子类,如图 8-1 所示 服务器致力于使用一个父 Channel ...

  5. 【Netty】ChannelHandler和ChannelPipeline

    一.前言 前面学习了Netty的ByteBuf,接着学习ChannelHandler和ChannelPipeline. 二.ChannelHandler和ChannelPipeline 2.1 Cha ...

  6. Netty实战六之ChannelHandler和ChannelPipeline

    1.Channel的生命周期 Interface Channel定义了一组和ChannelInboundHandler API密切相关的简单但功能强大的状态模型,以下列出Channel的4个状态. C ...

  7. Netty 系列四(ChannelHandler 和 ChannelPipeline).

    一.概念 先来整体的介绍一下这篇博文要介绍的几个概念(Channel.ChannelHandler.ChannelPipeline.ChannelHandlerContext.ChannelPromi ...

  8. Netty的ChannelHandler,ChannelHandlerContext,ChannelPipeline

    本小节一起学习一下ChannelHandler,ChannelHandlerContext,ChannelPipeline这三个Netty常用的组件,不探究它们的底层源码,我们就简单的分析一下用法 首 ...

  9. Netty源码分析之ChannelPipeline(二)—ChannelHandler的添加与删除

    上篇文章中,我们对Netty中ChannelPipeline的构造与初始化进行了分析与总结,本篇文章我们将对ChannelHandler的添加与删除操作进行具体的的代码分析: 一.ChannelHan ...

随机推荐

  1. flink--DateSet开发--简单入门

    开发流程 1. 获得一个execution environment, 2. 加载/创建初始数据, 3. 指定这些数据的转换, 4. 指定将计算结果放在哪里, 5. 触发程序执行 例子: object ...

  2. libssl.so.10: cannot open shared object file: No such file or directory

    今天在使用yum安装东西的时候报错 yum list There was a problem importing one of the Python modulesrequired to run yu ...

  3. jenkins(1): jenkins安装以及从gitlab拉取代码

    1. gitlab前面已经写过了,自己去参考 https://www.cnblogs.com/yitianyouyitian/p/9214940.html 2. jenkins安装 2.1 jdk 安 ...

  4. 2018牛客网暑假ACM多校训练赛(第四场)B Interval Revisited 动态规划

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round4-B.html 题目传送门 - https://www.no ...

  5. 随GCTY

    1.用常数1来取代运行时间中所有加法常数. 2.修改后的运行次数函数中,只保留最高阶项 3.如果最高阶项存在且不是1,则去除与这个项相乘的常数. 如果sum = (1+n)*n/2这条语句再执行10遍 ...

  6. python基础篇_001_初识Python

    一.Python环境 windows环境安装Python步骤 .下载安装包:https://www.python.org/downloads/windows/  .安装:默认安装路径:C:\pytho ...

  7. debian9 开启rc.local服务

    由于某些软件并没有增加开启启动的服务,很多时候需要手工添加,一般我们都是推荐添加命令到 /etc/rc.local 文件,但是 Debian 9 默认不带 /etc/rc.local 文件,而 rc. ...

  8. codeforces 1058B - Vasya and Cornfield

    <题目链接> 题目大意: 给出一个矩形,该矩形的四个顶点分别为:(0,d),(d,0),(n,n−d) and (n−d,n).然后给出一些点的坐标,分别判断这些点是否在该矩形内. 解题分 ...

  9. 前端之HTML(一)

    最近学到前端的一些知识,感觉挺有意思的.总结一下常用的知识.这些只是最简单的东西. 一 HTML,CSS,JS的关系 一个基本的网站包含很多网页,一个网页又有html,css,js组成. html 是 ...

  10. 给有C或C++基础的Python入门 :Python Crash Course 1 - 3

    暑假ACM集训结束,预习下个学期要学习的Python. 前几章比较基础,玩玩学学很快学完了,这里随意写点收获. 第一章 搭建编译环境   用的是最新的Python3.编译器用的是推荐的Geany..具 ...