Author: jvermillard
Date: Wed Feb 15 15:37:21 2012
New Revision: 1244543

URL: http://svn.apache.org/viewvc?rev=1244543&view=rev
Log:
DIRMINA-850 idle checker javadoc

Modified:
    
mina/trunk/core/src/main/java/org/apache/mina/service/idlechecker/IdleChecker.java
    
mina/trunk/core/src/main/java/org/apache/mina/service/idlechecker/IndexedIdleChecker.java

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/service/idlechecker/IdleChecker.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/service/idlechecker/IdleChecker.java?rev=1244543&r1=1244542&r2=1244543&view=diff
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/service/idlechecker/IdleChecker.java
 (original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/service/idlechecker/IdleChecker.java
 Wed Feb 15 15:37:21 2012
@@ -20,12 +20,33 @@ package org.apache.mina.service.idlechec
 
 import org.apache.mina.session.AbstractIoSession;
 
+/**
+ * Utility for checking detecting idle sessions. 
+ * 
+ * @author <a href="http://mina.apache.org";>Apache MINA Project</a>
+ */
 public interface IdleChecker {
 
+    /**
+     * Inform the IdleCheker a session have a write event
+     * @param session the session with the write event
+     * @param time the data in ms (unix time) of the event
+     */
     void sessionWritten(AbstractIoSession session, long time);
 
+    /**
+     * Inform the IdleCheker a session have a read event
+     * @param session the session with the read event
+     * @param time the data in ms (unix time) of the event
+     */
     void sessionRead(AbstractIoSession session, long time);
 
+    /**
+     * Find idle session, to be called for each select() call.
+     * 
+     * @param time current unix time in ms
+     * @return the number of idle event detected
+     */
     int processIdleSession(long time);
 
 }

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/service/idlechecker/IndexedIdleChecker.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/service/idlechecker/IndexedIdleChecker.java?rev=1244543&r1=1244542&r2=1244543&view=diff
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/service/idlechecker/IndexedIdleChecker.java
 (original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/service/idlechecker/IndexedIdleChecker.java
 Wed Feb 15 15:37:21 2012
@@ -27,6 +27,32 @@ import org.apache.mina.session.Attribute
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+/**
+ * An session idle detector using an index in place of polling every session 
every seconds.<br>
+ * 
+ * For each session read/write event :<br>
+ * <ul>
+ * <li>we calculate what is the supposed future idle date</li>
+ * <li>we round it at the next second</li>
+ * <li>we store a reference to this session in a circular buffer like :</li>
+ * </ul>
+ * <pre>
+ * 
+ *               +--- Current time
+ *               |
+ *               v
+ * +---+---+...+---+---+...+---+
+ * | 0 | 1 |   | T |T+1|   |599|
+ * +---+---+...+---+---+...+---+
+ *               |   |
+ *               |   +--> { S2, S7, S12...} (sessions that will TO in one 
second)
+ *               +------> { S5, S6, S8...} (sessions that are idle for the 
maximum delay of 1 hour )
+ * </pre>
+ *
+ *The maximum idle itme is one hour.
+ *
+ * @author <a href="http://mina.apache.org";>Apache MINA Project</a>
+ */
 public class IndexedIdleChecker implements IdleChecker {
 
     private static int MAX_IDLE_TIME_IN_SEC = 60 * 60; // 1 hour max idle
@@ -68,7 +94,7 @@ public class IndexedIdleChecker implemen
         if (idleTimeInMs <= 0L) {
             LOG.debug("no read idle configuration");
         } else {
-            int nextIdleTimeInSeconds = (int) ((timeInMs + idleTimeInMs) / 
1000L);
+            int nextIdleTimeInSeconds = (int) ((timeInMs + idleTimeInMs) / 
1000L) + 1;
             int index = nextIdleTimeInSeconds % MAX_IDLE_TIME_IN_SEC;
             if (readIdleSessionIndex[index] == null) {
                 readIdleSessionIndex[index] = new HashSet<AbstractIoSession>();
@@ -98,7 +124,7 @@ public class IndexedIdleChecker implemen
         if (idleTimeInMs <= 0L) {
             LOG.debug("no write idle configuration");
         } else {
-            int nextIdleTimeInSeconds = (int) ((timeInMs + idleTimeInMs) / 
1000L);
+            int nextIdleTimeInSeconds = (int) ((timeInMs + idleTimeInMs) / 
1000L) + 1;
             int index = nextIdleTimeInSeconds % MAX_IDLE_TIME_IN_SEC;
             if (writeIdleSessionIndex[index] == null) {
                 writeIdleSessionIndex[index] = new 
HashSet<AbstractIoSession>();


Reply via email to