你如何在Netty中进行部分解码?

时间:2017-01-19 12:54:14

标签: netty

我正在写一个Netty客户端与嵌入式设备交谈。我查看了教程,但不确定我的设计是否能在Netty中正常工作。 ByteToMessage解码器是否可以仅解码部分消息并允许上游处理程序解码其余部分?如果是这样,您如何通过上游传递消息和缓冲区?或者是否有不同的机制?

我正在实施的协议包含以下字段:

  1. 16位序列号
  2. 8位消息类型
  3. 为未来使用字段保留8位
  4. 可选 - 可能为空且可能是AES加密(取决于#2)长度不同的长度消息数据字段。
  5. 我想将此处理分解为不同的处理程序,以降低每个处理程序的复杂性。

    我的初始设计是使用大小为4的FixedLengthFrameDecoder,然后使用ByteToMessageDecoder将序列号和消息类型转换为对象,并跳过保留字段的1个字节。

    这是我被卡住的地方。 我想将该消息传递给下一个处理程序,并根据消息类型,我希望它继续从bytebuffer读取以处理可选的消息部分。这是你可以做的事情,还是每个字节需要流经整个链?

    我可能会切换到ReplayingDecoder并尝试在一个解码器中完成所有操作,但这将是一个相当大的解码器,我想避免。

0 个答案:

没有答案