You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by tr...@apache.org on 2007/07/13 15:15:23 UTC
svn commit: r555981 - in
/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio:
SocketIoProcessor.java SocketSessionImpl.java
Author: trustin
Date: Fri Jul 13 06:15:22 2007
New Revision: 555981
URL: http://svn.apache.org/viewvc?view=rev&rev=555981
Log:
Made SocketIoProcessor adjust readBufferSize dynamically
Modified:
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java
Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java?view=diff&rev=555981&r1=555980&r2=555981
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java Fri Jul 13 06:15:22 2007
@@ -230,8 +230,6 @@
SocketChannel ch = session.getChannel();
try {
- buf.clear();
-
int readBytes = 0;
int ret;
@@ -248,6 +246,14 @@
if (readBytes > 0) {
session.getFilterChain().fireMessageReceived(session, buf);
buf = null;
+
+ if (readBytes * 2 < session.getReadBufferSize()) {
+ if (session.getReadBufferSize() > 64) {
+ session.setReadBufferSize(session.getReadBufferSize() >>> 1);
+ }
+ } else if (readBytes == session.getReadBufferSize()) {
+ session.setReadBufferSize(session.getReadBufferSize() << 1);
+ }
}
if (ret < 0) {
scheduleRemove(session);
Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java?view=diff&rev=555981&r1=555980&r2=555981
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java Fri Jul 13 06:15:22 2007
@@ -61,7 +61,7 @@
private SelectionKey key;
- private int readBufferSize;
+ private int readBufferSize = 1024;
/**
* Creates a new instance.
@@ -183,6 +183,10 @@
int getReadBufferSize() {
return readBufferSize;
}
+
+ void setReadBufferSize(int readBufferSize) {
+ this.readBufferSize = readBufferSize;
+ }
private class SessionConfigImpl extends BaseIoSessionConfig implements
SocketSessionConfig {
@@ -327,7 +331,6 @@
ch.socket().setReceiveBufferSize(size);
// Re-retrieve the effective receive buffer size.
size = ch.socket().getReceiveBufferSize();
- SocketSessionImpl.this.readBufferSize = size;
} catch (SocketException e) {
throw new RuntimeIOException(e);
}