【发布时间】:2017-06-13 22:11:05
【问题描述】:
我是 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 进行命令处理?
【问题讨论】: