私はNettyを初めて使い、カスタム方法でメッセージを処理する必要があります。私は以下のインターフェースを持っています:Nettyのメッセージを処理する
public interface Command{ }
public interface CommandFactory{
Command(byte b)
}
public interface CommandProcessor{
void process(Command c, Object arg)
}
今私はクライアントからいくつかのデータを受け取り、それを処理します。私はそのためにReplayingDecoder<Void>
を実装しています:
public class CommandDecoder extends ReplayingDecoder<Void>{
private CommandFactory cmf;
private CommandProcessor cmp;
void decode(ChannelHandlerContext ctx, ByteBuf in, List<AnyRef> out){
Command command = cmf.command (
in.readByte()
);
String arg = new String (
in.readBytes (
in.readShort()
).array()
);
cmp.process(command, arg); //<------------ Here
}
}
私はそれについてはわかりません。私はデコーダ内でコマンドを処理します。最小限に言えば奇妙に見えます。多分、私は復号化されたcommmand
とarg
をさらにchannel pipeline
に渡すべきでしょう。
しかし、ChannelInboundHandler
はコマンド処理を選択できますか?