My dear friends,
I got a question when I read the source code,how is the SocketIoProcessor
class dealing the situation that the buf is smaller than the data expected
in the SocketChannel?
sorry for my poor English.
Source code in the SocketIoProcessor class
private void read(SocketSessionImpl session) {
ByteBuffer buf = ByteBuffer.allocate(session.getReadBufferSize());
SocketChannel ch = session.getChannel();
try {
int readBytes = 0;
int ret;
try {
while ((ret = ch.read(buf.buf())) > 0) {
readBytes += ret;
}
} finally {
buf.flip();
}
session.increaseReadBytes(readBytes);
if (readBytes > 0) {
session.getFilterChain().fireMessageReceived(session, buf);
buf = null;
if (readBytes * 2 < session.getReadBufferSize()) {
session.decreaseReadBufferSize();
} else if (readBytes == session.getReadBufferSize()) {
session.increaseReadBufferSize();
}
}
if (ret < 0) {
scheduleRemove(session);
}
} catch (Throwable e) {
if (e instanceof IOException)
scheduleRemove(session);
session.getFilterChain().fireExceptionCaught(session, e);
} finally {
if (buf != null)
buf.release();
}
}
Best regards,
Andy (张园)
Mobile Internet Division
-------------------------------------------------------
Address: Building A9,Neusoft Park,No.2 Xinxiu Street,Hunnan
Industrial Park ,Shenyang 110179, PRC
Tel: +86 024 83669709 13998390079
Email:[EMAIL PROTECTED]
Website: http://www.neusoft.com
----------------------------------------------------------------------------------------------
Confidentiality Notice: The information contained in this e-mail and any
accompanying attachment(s) is intended only for the use of the intended
recipient and may be confidential and/or privileged of Neusoft Group Ltd., its
subsidiaries and/or its affiliates. If any reader of this communication is not
the intended recipient, unauthorized use, forwarding, printing, storing,
disclosure or copying is strictly prohibited, and may be unlawful. If you have
received this communication in error, please immediately notify the sender by
return e-mail, and delete the original message and all copies from your system.
Thank you.
-----------------------------------------------------------------------------------------------