zoukankan      html  css  js  c++  java
  • netty中的ChannelHandler和ChannelPipeline

    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拦截

    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 404
    hibernate官方新手教程 (转载)
    OpenStreetMap初探(一)——了解OpenStreetMap
    fopen 參数具体解释
    怎样将程序猿写出来的程序打包成安装包(最简单的)
    poj 2253 Frogger (最长路中的最短路)
    android笔记6——intent的使用
    uva 11133
    天津出差系列(五)----第五天
    贪心2--均分纸牌
  • 原文地址:https://www.cnblogs.com/rwxwsblog/p/7814386.html
Copyright © 2011-2022 走看看