You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by el...@apache.org on 2008/10/28 00:47:56 UTC

svn commit: r708386 - /mina/trunk/core/src/main/java/org/apache/mina/core/session/IdleStatusChecker.java

Author: elecharny
Date: Mon Oct 27 16:47:56 2008
New Revision: 708386

URL: http://svn.apache.org/viewvc?rev=708386&view=rev
Log:
o Simplified a method by suppressing some useless test and branch.
o Using IoSession as an argument instead of AbstractIoSession for two methods
o Removed some method chaining to facilitate the debugging

Modified:
    mina/trunk/core/src/main/java/org/apache/mina/core/session/IdleStatusChecker.java

Modified: mina/trunk/core/src/main/java/org/apache/mina/core/session/IdleStatusChecker.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/session/IdleStatusChecker.java?rev=708386&r1=708385&r2=708386&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/core/session/IdleStatusChecker.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/core/session/IdleStatusChecker.java Mon Oct 27 16:47:56 2008
@@ -22,6 +22,7 @@
 import java.util.Iterator;
 import java.util.Set;
 
+import org.apache.mina.core.future.CloseFuture;
 import org.apache.mina.core.future.IoFuture;
 import org.apache.mina.core.future.IoFutureListener;
 import org.apache.mina.core.service.AbstractIoService;
@@ -50,7 +51,8 @@
 
     public void addSession(AbstractIoSession session) {
         sessions.add(session);
-        session.getCloseFuture().addListener(sessionCloseListener);
+        CloseFuture closeFuture = session.getCloseFuture();
+        closeFuture.addListener(sessionCloseListener);
     }
 
     public void addService(AbstractIoService service) {
@@ -165,53 +167,29 @@
      * @param currentTime the current time (i.e. {@link System#currentTimeMillis()})
      */
     public static void notifyIdleSession(IoSession session, long currentTime) {
-        if (session instanceof AbstractIoSession) {
-            AbstractIoSession s = (AbstractIoSession) session;
-            notifyIdleSession1(
-                    s, currentTime,
-                    s.getConfig().getIdleTimeInMillis(IdleStatus.BOTH_IDLE),
-                    IdleStatus.BOTH_IDLE, Math.max(
-                            s.getLastIoTime(),
-                            s.getLastIdleTime(IdleStatus.BOTH_IDLE)));
-
-            notifyIdleSession1(
-                    s, currentTime,
-                    s.getConfig().getIdleTimeInMillis(IdleStatus.READER_IDLE),
-                    IdleStatus.READER_IDLE, Math.max(
-                            s.getLastReadTime(),
-                            s.getLastIdleTime(IdleStatus.READER_IDLE)));
-
-            notifyIdleSession1(
-                    s, currentTime,
-                    s.getConfig().getIdleTimeInMillis(IdleStatus.WRITER_IDLE),
-                    IdleStatus.WRITER_IDLE, Math.max(
-                            s.getLastWriteTime(),
-                            s.getLastIdleTime(IdleStatus.WRITER_IDLE)));
-
-            notifyWriteTimeout(s, currentTime);
-            updateThroughput(s, currentTime);
-        } else {
-            notifyIdleSession0(
-                    session, currentTime,
-                    session.getConfig().getIdleTimeInMillis(IdleStatus.BOTH_IDLE),
-                    IdleStatus.BOTH_IDLE, Math.max(
-                            session.getLastIoTime(),
-                            session.getLastIdleTime(IdleStatus.BOTH_IDLE)));
-
-            notifyIdleSession0(
-                    session, currentTime,
-                    session.getConfig().getIdleTimeInMillis(IdleStatus.READER_IDLE),
-                    IdleStatus.READER_IDLE, Math.max(
-                            session.getLastReadTime(),
-                            session.getLastIdleTime(IdleStatus.READER_IDLE)));
-
-            notifyIdleSession0(
-                    session, currentTime,
-                    session.getConfig().getIdleTimeInMillis(IdleStatus.WRITER_IDLE),
-                    IdleStatus.WRITER_IDLE, Math.max(
-                            session.getLastWriteTime(),
-                            session.getLastIdleTime(IdleStatus.WRITER_IDLE)));
-        }
+        notifyIdleSession0(
+                session, currentTime,
+                session.getConfig().getIdleTimeInMillis(IdleStatus.BOTH_IDLE),
+                IdleStatus.BOTH_IDLE, Math.max(
+                    session.getLastIoTime(),
+                    session.getLastIdleTime(IdleStatus.BOTH_IDLE)));
+
+        notifyIdleSession0(
+                session, currentTime,
+                session.getConfig().getIdleTimeInMillis(IdleStatus.READER_IDLE),
+                IdleStatus.READER_IDLE, Math.max(
+                    session.getLastReadTime(),
+                    session.getLastIdleTime(IdleStatus.READER_IDLE)));
+
+        notifyIdleSession0(
+                session, currentTime,
+                session.getConfig().getIdleTimeInMillis(IdleStatus.WRITER_IDLE),
+                IdleStatus.WRITER_IDLE, Math.max(
+                    session.getLastWriteTime(),
+                    session.getLastIdleTime(IdleStatus.WRITER_IDLE)));
+
+        notifyWriteTimeout(session, currentTime);
+        updateThroughput(session, currentTime);
     }
 
     private static void notifyIdleSession0(
@@ -223,17 +201,8 @@
         }
     }
 
-    private static void notifyIdleSession1(
-            AbstractIoSession session, long currentTime,
-            long idleTime, IdleStatus status, long lastIoTime) {
-        if (idleTime > 0 && lastIoTime != 0
-                && currentTime - lastIoTime >= idleTime) {
-            session.getFilterChain().fireSessionIdle(status);
-        }
-    }
-
     private static void notifyWriteTimeout(
-            AbstractIoSession session, long currentTime) {
+            IoSession session, long currentTime) {
 
         long writeTimeout = session.getConfig().getWriteTimeoutInMillis();
         if (writeTimeout > 0 &&
@@ -252,7 +221,7 @@
     }
 
     private static void updateThroughput(
-            AbstractIoSession session, long currentTime) {
+            IoSession session, long currentTime) {
         session.updateThroughput(currentTime, false);
     }
 }
\ No newline at end of file