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/11/05 03:03:45 UTC
svn commit: r591865 -
/mina/trunk/core/src/main/java/org/apache/mina/filter/traffic/TrafficShapingFilter.java
Author: trustin
Date: Sun Nov 4 18:03:44 2007
New Revision: 591865
URL: http://svn.apache.org/viewvc?rev=591865&view=rev
Log:
Related issue: DIRMINA-144 (Traffic shaping filter)
* More precise traffic control by adjusting MaxReadBufferSize as soon as possible.
Modified:
mina/trunk/core/src/main/java/org/apache/mina/filter/traffic/TrafficShapingFilter.java
Modified: mina/trunk/core/src/main/java/org/apache/mina/filter/traffic/TrafficShapingFilter.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/traffic/TrafficShapingFilter.java?rev=591865&r1=591864&r2=591865&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/filter/traffic/TrafficShapingFilter.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/filter/traffic/TrafficShapingFilter.java Sun Nov 4 18:03:44 2007
@@ -120,6 +120,7 @@
"You can't add the same filter instance more than once. Create another instance and add it.");
}
parent.getSession().setAttribute(STATE, new State());
+ adjustReadBufferSize(parent.getSession());
}
@Override
@@ -163,19 +164,13 @@
state.readStartTime = 0;
state.suspendedRead = suspendTime != 0;
- if (session.getConfig().getReadBufferSize() > maxReadThroughput) {
- session.getConfig().setReadBufferSize(maxReadThroughput);
- }
- if (session.getConfig().getMaxReadBufferSize() > maxReadThroughput) {
- session.getConfig().setMaxReadBufferSize(maxReadThroughput);
- }
+ adjustReadBufferSize(session);
}
}
}
if (suspendTime != 0) {
session.suspendRead();
- System.out.println(messageSizeEstimator.estimateSize(message) + ", " + suspendTime);
scheduledExecutor.schedule(new Runnable() {
public void run() {
synchronized (state) {
@@ -187,6 +182,20 @@
}
nextFilter.messageReceived(session, message);
+ }
+
+ private void adjustReadBufferSize(IoSession session) {
+ int maxReadThroughput = this.maxReadThroughput;
+ if (maxReadThroughput == 0) {
+ return;
+ }
+
+ if (session.getConfig().getReadBufferSize() > maxReadThroughput) {
+ session.getConfig().setReadBufferSize(maxReadThroughput);
+ }
+ if (session.getConfig().getMaxReadBufferSize() > maxReadThroughput) {
+ session.getConfig().setMaxReadBufferSize(maxReadThroughput);
+ }
}
@Override