美文网首页
ReplayingDecoder的使用

ReplayingDecoder的使用

作者: shoyu666 | 来源:发表于2020-03-13 20:44 被阅读0次
    这里以MqttDecoder为例解析ReplayingDecoder的使用
    ByteBuf是容器,里面数据可多可少
    netty的数据是链式传递的
    
    image.png
    class MqttDecoder{
        /**
        * @param ByteBuf buffer //这个是传递给MqttDecoder的ByteBuf是ReplayingDecoder创建并持有的ByteBuf
        *
        **/
       decode(ChannelHandlerContext ctx, ByteBuf buffer, List<Object> out)
    }   
    
    ReplayingDecoder的作用就是一个ByteBuf缓存,持续收集数据
    checkPoint的作用是记录当前的读index,也可以理解为清空已经使用了的数据
    
    下面通过流程演示下解析过程
    image.png image.png image.png image.png
    可以看到3号包被清除了一半,ReplayingDecoder现在只有缓存30字节,
    但是READ_FIXED_HEADER已经解析成功了,进入READ_VARIABLE_HEADER阶段,后面收到的数据都喂给READ_VARIABLE_HEADER阶段
    

    相关文章

      网友评论

          本文标题:ReplayingDecoder的使用

          本文链接:https://www.haomeiwen.com/subject/ndyyshtx.html