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) {