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