我的目的是为我拥有的每条消息创建一个编解码器子类。例如,我有一个握手消息,所以我会有一个用于所述握手消息的编解码器。我有另一个具体的信息,并附有自己的具体编解码器。
消息的标题以操作码开头,我想知道,如果我不告诉它如何确定,那么Netty将如何知道用于解码字节缓冲区的编解码器?
我想到了一些方法,但似乎没有任何意义。我是否需要制作某种包含已解析标题和未解析主体的中间粗略消息?
但问题仍然存在,如何选择用于解码身体的编解码器?我是否手动执行此操作(例如,我的编解码器实例数组,这对我来说没有意义),然后我会像codecs[opcode]
那样访问,或者Netty是否有东西为我做这个选择?< / p>
答案 0 :(得分:2)
通常的模式是在管道中有一个操作码解码处理程序。一旦解码器读取操作码并确定操作码映射到哪个消息处理程序,它就会将映射的消息处理程序添加到管道并自行删除。完成(或失败)后,操作码解码处理程序将被添加回管道并删除先前的消息处理程序。