2014-01-22 21 views
2

我有一个关于ByteToMessageDecoder的问题。该decode方法签名ByteToMessageDecoder中的多条消息会发生什么?

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

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

例如,

  1. 管道ByteToMessageDecoder -> SimpleChannelInboundHandler<String>
  2. ByteToMessageDecoderdecode方法,我称之为out.add("first")out.add("second")out.add("third")

鉴于SimpleChannelInboundHandler的消息处理方法有签名protected void channelRead0(ChannelHandlerContext ctx, String message) ,我会看到message参数? channelRead0会被称为三次吗?

+0

我想尝试一下,发现是不可能的? –

回答

4

列表中包含的每条消息都将通过fireChannelRead(...)调用转发给下一个处理程序。所以你的处理程序将在你的例子中被调用三次。

相关问题