【Netty】SimpleChannelInboundHandler如何根据数据类型处理消息

server/2025/3/19 8:56:07/
类匹配机制
  1. SimpleChannelInboundHandler在构造时,会通过泛型获取要处理的消息类型
  2. 在经过解码器处理后,netty会根据具体的消息类型,将其传递给能够处理该类型的 handler
工作流程
java">解码器 ---->消息类型判断  ----> 对应类型的SimpleChannelInboundHandler
实现原理
泛型类型获取
java">public abstract class SimpleChannelInboundHandler<I> extends ChannelInboundHandlerAdapter {private final TypeParameterMatcher matcher;protected SimpleChannelInboundHandler() {// 通过泛型获取要处理的消息类型matcher = TypeParameterMatcher.find(this, SimpleChannelInboundHandler.class, "I");}
}
消息类型匹配
java">public boolean acceptInboundMessage(Object msg) throws Exception {// 判断消息是否是当前处理器可以处理的类型return matcher.match(msg);
}
消息处理流程
java">@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {boolean release = true;try {// 检查消息类型是否匹配if (acceptInboundMessage(msg)) {@SuppressWarnings("unchecked")I imsg = (I) msg;// 如果匹配,调用 channelRead0 处理消息channelRead0(ctx, imsg);} else {// 如果不匹配,将消息传递给下一个处理器release = false;ctx.fireChannelRead(msg);}} finally {if (autoRelease && release) {ReferenceCountUtil.release(msg);}}
}

http://www.ppmy.cn/server/176198.html

相关文章

使用Flask和OpenCV 实现树莓派与客户端的视频流传输与显示

使用 Python 和 OpenCV 实现树莓派与客户端的视频流传输与显示 在计算机视觉和物联网领域&#xff0c;经常需要将树莓派作为视频流服务器&#xff0c;通过网络将摄像头画面传输到客户端进行处理和显示。本文将详细介绍如何利用picamera2库、Flask 框架以及 OpenCV 库&#xff…

Linux文件

1.Open函数 高频使用的Linux系统调用&#xff1a;open write read close Linux自带的工具&#xff1a;man手册&#xff1a; man 1是普通的shell命令&#xff0c;比如ls man 2是系统调用函数&#xff0c;比如open&#xff0c;write说明 在Linux系统库的定义&#xff1a; int o…

LEED绿色建筑评价五大指标

LEED&#xff08;Leadership in Energy and Environmental Design&#xff09;绿色建筑评价体系包含五大核心指标&#xff0c;具体如下&#xff1a; 可持续场地&#xff08;Sustainable Sites, SS&#xff09; 评估建筑选址、土地利用、交通便利性及对周边环境的影响。 鼓励减…

实战设计模式之解释器模式

概述 作为一种行为设计模式&#xff0c;解释器模式提供了一种方法来定义语言的文法规则&#xff0c;并通过这些规则解析和处理特定类型的语言句子。简单来说&#xff0c;解释器模式允许我们定义一个代表某种语言中语法规则的对象结构&#xff0c;从而能够根据这些规则理解并处理…

Java通过Apache POI操作Excel

1、添加依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.9</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-oox…

深入探索Spring Boot 配置文件:类型、加载顺序与最佳实践

目录 Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 application.properties&#xff08;属性文件&#xff09;1.2 application.yml&#xff08;YAML文件&#xff09; 二、application.properties 和 application.yml 的优缺点分析1. application.properties1.1 优…

人工智能中神经网络是如何进行学习的

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。https://www.captainbed.cn/north 文章目录 引言神经网络的学习过程1. 前向传播2. 计算损失3. 反向传播反向传播的步骤 4. 参数更新5. 重…

宜宾数字园区:树莓集团布局的深远意义

树莓集团布局宜宾数字园区&#xff0c;是其深耕数字产业、拓展全国版图的重要一步&#xff0c;具有深远的战略意义。 产业带动效应 宜宾数字园区的建设&#xff0c;有效带动当地数字产业的集聚和发展。通过吸引软件开发、人工智能、大数据等领域的企业入驻&#xff0c;形成较…