如果第一个解码器/编码器对用于此目的,如何添加多个网络解码器并有条件地跳过其他解码器

时间:2013-01-01 04:36:04

标签: netty

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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

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