【发布时间】:2013-07-03 14:19:04
【问题描述】:
我是第一次使用 Jetty 9 EndPoint。
但我不知道如何使用 EndPoint.flush(ByteBuffer) 方法返回码。
我应该无限循环直到调用成功吗?
Javadoc 只是说
返回: True IFF 所有缓冲区都已被消耗,并且端点已将数据刷新到其目的地(即不缓冲任何数据)。
顺便说一下,我调用的实例是 SslConnection$DecryptedEndPoint
感谢任何见解,因为我找不到任何文档说明为什么不鼓励使用 SocketEndpoint 而首选 SelectChannelEndpoint。
有点离题,但无论如何;
令我惊讶的是,我在 NetworkTrafficSelectChannelEndPoint 中发现了这个:
操作 |= 用于代替 &=(在 jetty-all-9.0.3.v20130506-sources.jar 中找到)
@Override
public boolean flush(ByteBuffer... buffers) throws IOException
{
boolean flushed=true;
for (ByteBuffer b : buffers)
{
if (b.hasRemaining())
{
int position = b.position();
flushed|=super.flush(b); // <<-- shouldn't it be &=
int l=b.position()-position;
notifyOutgoing(b, position, l);
if (!flushed)
break;
}
}
return flushed;
}
【问题讨论】:
标签: java jetty endpoint embedded-jetty jetty-8