Author: trustin
Date: Thu Dec  6 02:55:53 2007
New Revision: 601695

URL: http://svn.apache.org/viewvc?rev=601695&view=rev
Log:
* Added 'force' parameter to AbstractIoSession.updateThroughput
* Added DummySession.updateThroughput() method with the force parameter

Modified:
    mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java
    
mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFilterChain.java
    mina/trunk/core/src/main/java/org/apache/mina/common/DummySession.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IdleStatusChecker.java

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java?rev=601695&r1=601694&r2=601695&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java 
(original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java 
Thu Dec  6 02:55:53 2007
@@ -460,11 +460,25 @@
         return writtenMessagesThroughput;
     }
     
-    protected final void updateThroughput(long currentTime) {
+    /**
+     * Update all statistical properties related with throughput assuming
+     * the specified time is the current time.  By default this method returns
+     * silently without updating the throughput properties if they were 
+     * calculated already within last 
+     * [EMAIL PROTECTED] IoSessionConfig#getThroughputCalculationInterval() 
calculation interval}.
+     * If, however, <tt>force</tt> is specified as <tt>true</tt>, this method 
+     * updates the throughput properties immediately.
+
+     * @param currentTime the current time in milliseconds
+     */
+    protected final void updateThroughput(long currentTime, boolean force) {
         int interval = (int) (currentTime - lastThroughputCalculationTime);
+        
         long minInterval = 
getConfig().getThroughputCalculationIntervalInMillis();
         if (minInterval == 0 || interval < minInterval) {
-            return;
+            if (!force) {
+                return;
+            }
         }
         
         readBytesThroughput = (readBytes - lastReadBytes) * 1000.0 / interval;

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFilterChain.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFilterChain.java?rev=601695&r1=601694&r2=601695&view=diff
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFilterChain.java 
(original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoFilterChain.java 
Thu Dec  6 02:55:53 2007
@@ -363,19 +363,19 @@
     private void callNextSessionClosed(Entry entry, IoSession session) {
         try {
             entry.getFilter().sessionClosed(entry.getNextFilter(), session);
-
         } catch (Throwable e) {
             fireExceptionCaught(e);
         }
     }
 
     public void fireSessionIdle(IdleStatus status) {
+        session.increaseIdleCount(status, System.currentTimeMillis());
         Entry head = this.head;
         callNextSessionIdle(head, session, status);
     }
 
-    private void callNextSessionIdle(Entry entry, IoSession session,
-            IdleStatus status) {
+    private void callNextSessionIdle(
+            Entry entry, IoSession session, IdleStatus status) {
         try {
             entry.getFilter().sessionIdle(entry.getNextFilter(), session,
                     status);
@@ -390,11 +390,11 @@
         callNextMessageReceived(head, session, message);
     }
 
-    private void callNextMessageReceived(Entry entry, IoSession session,
-            Object message) {
+    private void callNextMessageReceived(
+            Entry entry, IoSession session, Object message) {
         try {
-            entry.getFilter().messageReceived(entry.getNextFilter(), session,
-                    message);
+            entry.getFilter().messageReceived(
+                    entry.getNextFilter(), session, message);
         } catch (Throwable e) {
             fireExceptionCaught(e);
         }

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/DummySession.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/DummySession.java?rev=601695&r1=601694&r2=601695&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/DummySession.java 
(original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/DummySession.java Thu 
Dec  6 02:55:53 2007
@@ -71,8 +71,7 @@
         IoAcceptor acceptor = new AbstractIoAcceptor(
                 new AbstractIoSessionConfig() {
                     @Override
-                    protected void doSetAll(IoSessionConfig config) {
-                    }
+                    protected void doSetAll(IoSessionConfig config) {}
                 }) {
 
             @Override
@@ -257,5 +256,17 @@
         }
 
         this.transportMetadata = transportMetadata;
+    }
+
+    /**
+     * Update all statistical properties related with throughput.  By default
+     * this method returns silently without updating the throughput properties
+     * if they were calculated already within last 
+     * [EMAIL PROTECTED] IoSessionConfig#getThroughputCalculationInterval() 
calculation interval}.
+     * If, however, <tt>force</tt> is specified as <tt>true</tt>, this method
+     * updates the throughput properties immediately.
+     */
+    public void updateThroughput(boolean force) {
+        super.updateThroughput(System.currentTimeMillis(), force);
     }
 }

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/common/IdleStatusChecker.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/IdleStatusChecker.java?rev=601695&r1=601694&r2=601695&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IdleStatusChecker.java 
(original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/IdleStatusChecker.java 
Thu Dec  6 02:55:53 2007
@@ -255,7 +255,6 @@
             long idleTime, IdleStatus status, long lastIoTime) {
         if (idleTime > 0 && lastIoTime != 0
                 && currentTime - lastIoTime >= idleTime) {
-            session.increaseIdleCount(status, currentTime);
             session.getFilterChain().fireSessionIdle(status);
         }
     }
@@ -281,6 +280,6 @@
 
     private static void updateThroughput(
             AbstractIoSession session, long currentTime) {
-        session.updateThroughput(currentTime);
+        session.updateThroughput(currentTime, false);
     }
 }


Reply via email to