netty如何确定读取何时完成?
How does netty determine when a read is complete?
下面是回显服务器的ChannelHandler
。
Netty 框架将调用 channelReadComplete()
方法来通知处理程序对 channelRead()
的最后一次调用是当前批次中的最后一条消息。
我的问题是,由于数据是在中继线上传输的,Netty 如何知道 a batch of message
何时完成?
channelReadComplete() 一旦没有更多数据可从底层传输读取,就会被触发。在谈论 SocketChannels 时,这将是以下两种情况之一:
- 阅读(...) returns 0
- read(...) 得到了一个传递给它的缓冲区,该缓冲区有 1024 个字节要填充,但填充的字节数少于 1024 个。
下面是回显服务器的ChannelHandler
。
Netty 框架将调用 channelReadComplete()
方法来通知处理程序对 channelRead()
的最后一次调用是当前批次中的最后一条消息。
我的问题是,由于数据是在中继线上传输的,Netty 如何知道 a batch of message
何时完成?
channelReadComplete() 一旦没有更多数据可从底层传输读取,就会被触发。在谈论 SocketChannels 时,这将是以下两种情况之一:
- 阅读(...) returns 0
- read(...) 得到了一个传递给它的缓冲区,该缓冲区有 1024 个字节要填充,但填充的字节数少于 1024 个。