当前位置: 首页 > news >正文

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

类匹配机制
  1. SimpleChannelInboundHandler在构造时,会通过泛型获取要处理的消息类型
  2. 在经过解码器处理后,netty会根据具体的消息类型,将其传递给能够处理该类型的 handler
工作流程
解码器 ---->消息类型判断  ----> 对应类型的SimpleChannelInboundHandler
实现原理
泛型类型获取
public abstract class SimpleChannelInboundHandler<I> extends ChannelInboundHandlerAdapter {
    private final TypeParameterMatcher matcher;
    
    protected SimpleChannelInboundHandler() {
        // 通过泛型获取要处理的消息类型
        matcher = TypeParameterMatcher.find(this, SimpleChannelInboundHandler.class, "I");
    }
}
消息类型匹配
public boolean acceptInboundMessage(Object msg) throws Exception {
    // 判断消息是否是当前处理器可以处理的类型
    return matcher.match(msg);
}
消息处理流程
@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);
        }
    }
}

相关文章:

  • 区块链 智能合约安全 | 整型溢出漏洞
  • 对于memset(b, 1, sizeof b)赋值为16843009情况
  • Ansys 2024 R1 安装出现错误码-8544解决方法
  • SPACE_GAME
  • Qt-搭建开发环境
  • 【新能源汽车“心脏”赋能:三电系统研发、测试与应用匹配的恒压恒流源技术秘籍】
  • TF中 Arg 节点
  • 【canvas】一键自动布局:如何让流程图节点自动找到最佳位置
  • 【错误解决】ollama使用huggingface拉取模型异常
  • 第七章-PHP字符串操作
  • 精准git动图拆解​
  • 【NTP系列】chrony同步原理
  • java版鸿鹄招采系统源码 招投标系统源码 供应商招投标平台源码
  • 使用Mybatis 连接数据库 项目示例
  • 图解LLM智能体(LLM Agents):构建与运作机制的全面解析
  • 网络编程——套接字、创建服务器、创建客户端
  • PyQt基础——简单闹钟ui实现(图形化界面、定时器事件)
  • CH347使用笔记:CH347结合STM32CubeIDE实现单片机下载与调试
  • [Banana Pi BPI-R4] RDK 和联发科推出Wi-Fi 7 宽带 CPE 的新硬件参考平台
  • 大语言模型中的 Function Calling
  • 陈宝良 高寿仙 彭勇︱明清社会的皇权、商帮与市井百态
  • 综艺还有怎样的新可能?挖掘小众文化领域
  • 龙湖集团:今年前4个月销售220.8亿元,4月新增两块土地储备
  • 工行回应两售出金条疑似有杂质:情况不属实,疑似杂质应为金条售出后的外部附着物
  • 罕见沙尘再度入川,官方:沙尘传输高度达到平流层,远超以往
  • 远离军事前线的另一面暗斗:除了“断水”,印度还试图牵制对巴国际援助