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/08/18 06:51:53 UTC
svn commit: r567232 - in /mina:
branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/
branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/
trunk/core/src/main/java/org/apache/mina/transport/socket/nio/
Author: trustin
Date: Fri Aug 17 21:51:52 2007
New Revision: 567232
URL: http://svn.apache.org/viewvc?view=rev&rev=567232
Log:
Related issue: DIRMINA-305 (SocketIoProcessor is biased to write operations.)
* Added fairness control to the read method
Modified:
mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
Modified: mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
URL: http://svn.apache.org/viewvc/mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java?view=diff&rev=567232&r1=567231&r2=567232
==============================================================================
--- mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java (original)
+++ mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java Fri Aug 17 21:51:52 2007
@@ -251,7 +251,13 @@
session.setReadBufferSize(session.getReadBufferSize() >>> 1);
}
} else if (readBytes == session.getReadBufferSize()) {
- session.setReadBufferSize(session.getReadBufferSize() << 1);
+ int newReadBufferSize = session.getReadBufferSize() << 1;
+ if (newReadBufferSize <= (((SocketSessionConfig) session.getConfig()).getReceiveBufferSize() << 1)) {
+ // read buffer size shouldn't get bigger than
+ // twice of the receive buffer size because of
+ // read-write fairness.
+ session.setReadBufferSize(newReadBufferSize);
+ }
}
}
if (ret < 0) {
Modified: mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
URL: http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java?view=diff&rev=567232&r1=567231&r2=567232
==============================================================================
--- mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java (original)
+++ mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java Fri Aug 17 21:51:52 2007
@@ -216,7 +216,13 @@
session.setReadBufferSize(session.getReadBufferSize() >>> 1);
}
} else if (readBytes == session.getReadBufferSize()) {
- session.setReadBufferSize(session.getReadBufferSize() << 1);
+ int newReadBufferSize = session.getReadBufferSize() << 1;
+ if (newReadBufferSize <= (((SocketSessionConfig) session.getConfig()).getReceiveBufferSize() << 1)) {
+ // read buffer size shouldn't get bigger than
+ // twice of the receive buffer size because of
+ // read-write fairness.
+ session.setReadBufferSize(newReadBufferSize);
+ }
}
}
if (ret < 0) {
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=567232&r1=567231&r2=567232
==============================================================================
--- 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 Aug 17 21:51:52 2007
@@ -247,7 +247,13 @@
session.setReadBufferSize(session.getReadBufferSize() >>> 1);
}
} else if (readBytes == session.getReadBufferSize()) {
- session.setReadBufferSize(session.getReadBufferSize() << 1);
+ int newReadBufferSize = session.getReadBufferSize() << 1;
+ if (newReadBufferSize <= (session.getConfig().getReceiveBufferSize() << 1)) {
+ // read buffer size shouldn't get bigger than
+ // twice of the receive buffer size because of
+ // read-write fairness.
+ session.setReadBufferSize(newReadBufferSize);
+ }
}
}
if (ret < 0) {