1

我想处理“xx bytecount sid newline payload”和“xx 000 sid newline”类型的消息。我正在使用字符串编码器和解码器。不幸的是,这与第一个不匹配。我知道我可以编写一个自定义解码器并创建一个动态缓冲区并继续注入数据,直到达到有效负载的字节数。但是,如果我的自定义编码器成功命中,我该如何跳过字符串编码器和解码器。

还有一个问题 。如何读取自定义解码器中剩余的字节数。假设我能够读取计数如何将其设置为状态变量以读取更多数据

4

1 回答 1

3

如果我是你,我只会编写一个解码器来解码两种消息类型。如果您坚持在管道中保留多个解码器,您也可以这样做。

首先,将解码第一个消息类型(xxx bytecount ...)的解码器插入到管道中。

其次,当遇到第二种消息类型时,解码器不会被编程。对于它不理解的消息类型,让它只是将消息转发给下一个处理程序。然后解码第二种消息类型的第二个解码器将对其进行解码。

第三,对解码第二个消息类型(xxx 000 ...)的第二个解码器进行编程,检查接收到的消息是否是由第一个解码器解码的消息。如果是这样,第二个解码器应该将消息逐字转发给下一个处理程序。

于 2013-01-03T06:35:42.427 回答