2014-01-22 66 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(...)調用轉發給下一個處理程序。所以你的處理程序將在你的例子中被調用三次。

相關問題