ByteToMessageDecoder中的多条消息会发生什么?

时间:2014-01-22 06:44:38

标签: netty

我有一个关于ByteToMessageDecoder的问题。 decode方法具有签名

public void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out)

其中out是管道中下一个处理程序的输出。如果我多次调用out.add()来插入多条消息,那么下一个处理程序会看到什么?

例如,

  1. 管道是ByteToMessageDecoder -> SimpleChannelInboundHandler<String>
  2. ByteToMessageDecoder的{​​{1}}方法中,我致电decodeout.add("first")out.add("second")
  3. 鉴于out.add("third")的消息处理方法具有签名SimpleChannelInboundHandler,我将为protected void channelRead0(ChannelHandlerContext ctx, String message)参数看到什么? message会被调用三次吗?

1 个答案:

答案 0 :(得分:4)

列表中包含的每条消息都将通过fireChannelRead(...)调用转发到下一个处理程序。因此,在您的示例中,您的处理程序将被调用三次。