我正在写一个Netty客户端与嵌入式设备交谈。我查看了教程,但不确定我的设计是否能在Netty中正常工作。 ByteToMessage解码器是否可以仅解码部分消息并允许上游处理程序解码其余部分?如果是这样,您如何通过上游传递消息和缓冲区?或者是否有不同的机制?
我正在实施的协议包含以下字段:
我想将此处理分解为不同的处理程序,以降低每个处理程序的复杂性。
我的初始设计是使用大小为4的FixedLengthFrameDecoder,然后使用ByteToMessageDecoder将序列号和消息类型转换为对象,并跳过保留字段的1个字节。
这是我被卡住的地方。 我想将该消息传递给下一个处理程序,并根据消息类型,我希望它继续从bytebuffer读取以处理可选的消息部分。这是你可以做的事情,还是每个字节需要流经整个链?
我可能会切换到ReplayingDecoder并尝试在一个解码器中完成所有操作,但这将是一个相当大的解码器,我想避免。