Author: jvermillard
Date: Thu Nov  6 01:46:39 2008
New Revision: 711811

URL: http://svn.apache.org/viewvc?rev=711811&view=rev
Log:
removed IoService idleing
cleaned IdleStatusCheker
removed refrence to IdlStatusChecker from IoAbstractService
added the Idle checking task only on the service needing it (vmpipe & serial)


Modified:
    
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java
    
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java
    
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java
    
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/IoService.java
    
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/IoServiceListenerSupport.java
    
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/IoServiceStatistics.java
    
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
    
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/IdleStatusChecker.java
    
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java
    
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
    
mina/sandbox/jvermillard/mina-cleaning/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java

Modified: 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java?rev=711811&r1=711810&r2=711811&view=diff
==============================================================================
--- 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java
 (original)
+++ 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java
 Thu Nov  6 01:46:39 2008
@@ -571,7 +571,7 @@
         // process idle sessions
         if (currentTime - lastIdleCheckTime >= 1000) {
             lastIdleCheckTime = currentTime;
-            IdleStatusChecker.notifyIdleness(
+            AbstractIoSession.notifyIdleness(
                     getListeners().getManagedSessions().values().iterator(),
                     currentTime);
         }

Modified: 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java?rev=711811&r1=711810&r2=711811&view=diff
==============================================================================
--- 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java
 (original)
+++ 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java
 Thu Nov  6 01:46:39 2008
@@ -612,7 +612,7 @@
         // process idle sessions
         if (currentTime - lastIdleCheckTime >= 1000) {
             lastIdleCheckTime = currentTime;
-            IdleStatusChecker.notifyIdleness(allSessions(), currentTime);
+            AbstractIoSession.notifyIdleness(allSessions(), currentTime);
         }
     }
 

Modified: 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java?rev=711811&r1=711810&r2=711811&view=diff
==============================================================================
--- 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java
 (original)
+++ 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java
 Thu Nov  6 01:46:39 2008
@@ -105,12 +105,9 @@
             _stats.setLastWriteTime(s.getActivationTime());
             _stats.setLastThroughputCalculationTime(s.getActivationTime());
 
-            // Start idleness notification.
-            idleStatusChecker.addService(s);
         }
 
         public void serviceDeactivated(IoService service) {
-            idleStatusChecker.removeService((AbstractIoService) service);
         }
 
         public void serviceIdle(IoService service, IdleStatus idleStatus) {
@@ -147,17 +144,11 @@
 
     private IoFuture disposalFuture;
 
-    private final IdleStatusChecker idleStatusChecker = new 
IdleStatusChecker();
-
     /**
      * [EMAIL PROTECTED]
      */
     private IoServiceStatistics stats = new IoServiceStatistics(this);
     
-    /**
-     * Reference to the object holding all the idle state vars.
-     */    
-    private IoServiceIdleState idleState = new IoServiceIdleState(this);
 
     /**
      * Constructor for [EMAIL PROTECTED] AbstractIoService}. You need to 
provide a default
@@ -208,8 +199,6 @@
         }
 
         threadName = getClass().getSimpleName() + '-' + id.incrementAndGet();
-
-        executeWorker(idleStatusChecker.getNotifyingTask(), 
"idleStatusChecker");
     }
 
     /**
@@ -300,8 +289,7 @@
                 }
             }
         }
-
-        idleStatusChecker.getNotifyingTask().cancel();
+        
         if (disposalFuture != null) {
             disposalFuture.awaitUninterruptibly();
         }
@@ -398,13 +386,6 @@
     /**
      * [EMAIL PROTECTED]
      */
-    public IoServiceIdleState getIdleState() {
-        return idleState;
-    }
-
-    /**
-     * [EMAIL PROTECTED]
-     */
     public IoServiceStatistics getStatistics() {
         return stats;
     }
@@ -442,9 +423,6 @@
         return listeners;
     }
 
-    protected final IdleStatusChecker getIdleStatusChecker() {
-        return idleStatusChecker;
-    }
 
     protected final void executeWorker(Runnable worker) {
         executeWorker(worker, null);
@@ -561,10 +539,4 @@
         return stats.getScheduledWriteMessages();
     }
     
-    /**
-     * TODO
-     */    
-    public void notifyIdleness(long currentTime) {
-        idleState.notifyIdleness(currentTime);
-    }
 }

Modified: 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/IoService.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/IoService.java?rev=711811&r1=711810&r2=711811&view=diff
==============================================================================
--- 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/IoService.java
 (original)
+++ 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/IoService.java
 Thu Nov  6 01:46:39 2008
@@ -190,13 +190,6 @@
     int getScheduledWriteMessages();
 
     /**
-     * Returns the IoServiceIdleState for this service.
-     * 
-     * @return The idle state object for this service.
-     */
-    IoServiceIdleState getIdleState();
-
-    /**
      * Returns the IoServiceStatistics object for this service.
      * 
      * @return The statistics object for this service.

Modified: 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/IoServiceListenerSupport.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/IoServiceListenerSupport.java?rev=711811&r1=711810&r2=711811&view=diff
==============================================================================
--- 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/IoServiceListenerSupport.java
 (original)
+++ 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/IoServiceListenerSupport.java
 Thu Nov  6 01:46:39 2008
@@ -136,25 +136,6 @@
     }
 
     /**
-     * Calls [EMAIL PROTECTED] IoServiceListener#serviceIdle(IoService, 
IdleStatus)}
-     * for all registered listeners.
-     */
-    public void fireServiceIdle(IdleStatus status) {
-        if (!activated.get()) {
-            return;
-        }
-
-        for (IoServiceListener l : listeners) {
-            try {
-                l.serviceIdle(service, status);
-            } catch (Throwable e) {
-                ExceptionMonitor.getInstance().exceptionCaught(e);
-            }
-        }
-    }
-
-
-    /**
      * Calls [EMAIL PROTECTED] IoServiceListener#serviceDeactivated(IoService)}
      * for all registered listeners.
      */

Modified: 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/IoServiceStatistics.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/IoServiceStatistics.java?rev=711811&r1=711810&r2=711811&view=diff
==============================================================================
--- 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/IoServiceStatistics.java
 (original)
+++ 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/service/IoServiceStatistics.java
 Thu Nov  6 01:46:39 2008
@@ -315,7 +315,6 @@
     public final void increaseReadBytes(long increment, long currentTime) {
         readBytes.addAndGet(increment);
         lastReadTime = currentTime;
-        service.getIdleState().resetIdleCountForRead();
     }
 
     /**
@@ -324,7 +323,6 @@
     public final void increaseReadMessages(long currentTime) {
         readMessages.incrementAndGet();
         lastReadTime = currentTime;
-        service.getIdleState().resetIdleCountForRead();
     }
     
     /**
@@ -333,7 +331,6 @@
     public final void increaseWrittenBytes(int increment, long currentTime) {
         writtenBytes.addAndGet(increment);
         lastWriteTime = currentTime;
-        service.getIdleState().resetIdleCountForWrite();
     }
 
     /**
@@ -342,7 +339,6 @@
     public final void increaseWrittenMessages(long currentTime) {
         writtenMessages.incrementAndGet();
         lastWriteTime = currentTime;
-        service.getIdleState().resetIdleCountForWrite();
     }
     
     /**

Modified: 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java?rev=711811&r1=711810&r2=711811&view=diff
==============================================================================
--- 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
 (original)
+++ 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
 Thu Nov  6 01:46:39 2008
@@ -24,6 +24,7 @@
 import java.io.IOException;
 import java.net.SocketAddress;
 import java.nio.channels.FileChannel;
+import java.util.Iterator;
 import java.util.Queue;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -48,6 +49,7 @@
 import org.apache.mina.core.write.WriteException;
 import org.apache.mina.core.write.WriteRequest;
 import org.apache.mina.core.write.WriteRequestQueue;
+import org.apache.mina.core.write.WriteTimeoutException;
 import org.apache.mina.core.write.WriteToClosedSessionException;
 import org.apache.mina.util.CircularQueue;
 import org.apache.mina.util.ExceptionMonitor;
@@ -1153,6 +1155,81 @@
     }
 
     /**
+     * Fires a [EMAIL PROTECTED] IoEventType#SESSION_IDLE} event to any 
applicable
+     * sessions in the specified collection.
+     *
+     * @param currentTime the current time (i.e. [EMAIL PROTECTED] 
System#currentTimeMillis()})
+     */
+    public static void notifyIdleness(Iterator<? extends IoSession> sessions, 
long currentTime) {
+        IoSession s = null;
+        while (sessions.hasNext()) {
+            s = sessions.next();
+            notifyIdleSession(s, currentTime);
+        }
+    }
+
+    /**
+     * Fires a [EMAIL PROTECTED] IoEventType#SESSION_IDLE} event if applicable 
for the
+     * specified [EMAIL PROTECTED] session}.
+     *
+     * @param currentTime the current time (i.e. [EMAIL PROTECTED] 
System#currentTimeMillis()})
+     */
+    public static void notifyIdleSession(IoSession session, long currentTime) {
+        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);
+    }
+
+    private static void notifyIdleSession0(
+            IoSession 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(
+            IoSession session, long currentTime) {
+
+        long writeTimeout = session.getConfig().getWriteTimeoutInMillis();
+        if (writeTimeout > 0 &&
+                currentTime - session.getLastWriteTime() >= writeTimeout &&
+                !session.getWriteRequestQueue().isEmpty(session)) {
+            WriteRequest request = session.getCurrentWriteRequest();
+            if (request != null) {
+                session.setCurrentWriteRequest(null);
+                WriteTimeoutException cause = new 
WriteTimeoutException(request);
+                request.getFuture().setException(cause);
+                session.getFilterChain().fireExceptionCaught(cause);
+                // WriteException is an IOException, so we close the session.
+                session.close();
+            }
+        }
+    }
+
+    
+    
+    /**
      * TODO Add method documentation. Name is ridiculously too long.
      */
     private class CloseRequestAwareWriteRequestQueue implements 
WriteRequestQueue {

Modified: 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/IdleStatusChecker.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/IdleStatusChecker.java?rev=711811&r1=711810&r2=711811&view=diff
==============================================================================
--- 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/IdleStatusChecker.java
 (original)
+++ 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/core/session/IdleStatusChecker.java
 Thu Nov  6 01:46:39 2008
@@ -25,52 +25,62 @@
 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;
-import org.apache.mina.core.service.IoService;
-import org.apache.mina.core.write.WriteRequest;
-import org.apache.mina.core.write.WriteTimeoutException;
 import org.apache.mina.util.ConcurrentHashSet;
 
 /**
  * Detects idle sessions and fires <tt>sessionIdle</tt> events to them.
+ * To be used for service unable to trigger idle events alone, like VmPipe
+ * or SerialTransport. Polling base transport are advised to trigger idle 
+ * events alone, using the poll/select timeout. 
  *
  * @author The Apache MINA Project ([EMAIL PROTECTED])
  * @version $Rev: 525369 $, $Date: 2007-04-04 05:05:11 +0200 (mer., 04 avr. 
2007) $
  */
 public class IdleStatusChecker {
-    private final Set<AbstractIoSession> sessions =
+    
+       // the list of session to check
+       private final Set<AbstractIoSession> sessions =
         new ConcurrentHashSet<AbstractIoSession>();
-    private final Set<AbstractIoService> services =
-        new ConcurrentHashSet<AbstractIoService>();
 
+    /* create a task you can execute in the transport code,
+     * if the transport is like NIO or APR you don't need to call it,
+     * you just need to call the needed static sessions on select()/poll() 
+     * timeout.
+     */ 
     private final NotifyingTask notifyingTask = new NotifyingTask();
+    
     private final IoFutureListener<IoFuture> sessionCloseListener =
         new SessionCloseListener();
 
     public IdleStatusChecker() {}
 
+    /**
+     * Add the session for being checked for idle. 
+     * @param session the session to check
+     */
     public void addSession(AbstractIoSession session) {
         sessions.add(session);
         CloseFuture closeFuture = session.getCloseFuture();
+        
+        // isn't service reponsability to remove the session nicely ?
         closeFuture.addListener(sessionCloseListener);
     }
 
-    public void addService(AbstractIoService service) {
-        services.add(service);
-    }
-
-    public void removeSession(AbstractIoSession session) {
+    /**
+     * remove a session from the list of session being checked.
+     * @param session
+     */
+    private void removeSession(AbstractIoSession session) {
         sessions.remove(session);
     }
 
-    public void removeService(AbstractIoService service) {
-        services.remove(service);
-    }
-
     public NotifyingTask getNotifyingTask() {
         return notifyingTask;
     }
 
+    /**
+     * The class to place in the transport executor for checking the sessions 
idle 
+     */
     public class NotifyingTask implements Runnable {
         private volatile boolean cancelled;
         private volatile Thread thread;
@@ -81,7 +91,7 @@
                 while (!cancelled) {
                     // Check idleness with fixed delay (1 second).
                     long currentTime = System.currentTimeMillis();
-                    notifyServices(currentTime);
+
                     notifySessions(currentTime);
 
                     try {
@@ -103,22 +113,12 @@
             }
         }
 
-        private void notifyServices(long currentTime) {
-            Iterator<AbstractIoService> it = services.iterator();
-            while (it.hasNext()) {
-                AbstractIoService service = it.next();
-                if (service.isActive()) {
-                    notifyIdleness(service, currentTime, false);
-                }
-            }
-        }
-
         private void notifySessions(long currentTime) {
             Iterator<AbstractIoSession> it = sessions.iterator();
             while (it.hasNext()) {
                 AbstractIoSession session = it.next();
                 if (session.isConnected()) {
-                    notifyIdleSession(session, currentTime);
+                    AbstractIoSession.notifyIdleSession(session, currentTime);
                 }
             }
         }
@@ -129,99 +129,4 @@
             removeSession((AbstractIoSession) future.getSession());
         }
     }
-
-    /**
-     * Fires a [EMAIL PROTECTED] IoEventType#SESSION_IDLE} event to any 
applicable
-     * sessions in the specified collection.
-     *
-     * @param currentTime the current time (i.e. [EMAIL PROTECTED] 
System#currentTimeMillis()})
-     */
-    public static void notifyIdleness(Iterator<? extends IoSession> sessions, 
long currentTime) {
-        IoSession s = null;
-        while (sessions.hasNext()) {
-            s = sessions.next();
-            notifyIdleSession(s, currentTime);
-        }
-    }
-
-    public static void notifyIdleness(IoService service, long currentTime) {
-        notifyIdleness(service, currentTime, true);
-    }
-
-    private static void notifyIdleness(IoService service, long currentTime, 
boolean includeSessions) {
-        if (!(service instanceof AbstractIoService)) {
-            return;
-        }
-
-        ((AbstractIoService) service).notifyIdleness(currentTime);
-
-        if (includeSessions) {
-            notifyIdleness(service.getManagedSessions().values().iterator(), 
currentTime);
-        }
-    }
-
-    /**
-     * Fires a [EMAIL PROTECTED] IoEventType#SESSION_IDLE} event if applicable 
for the
-     * specified [EMAIL PROTECTED] session}.
-     *
-     * @param currentTime the current time (i.e. [EMAIL PROTECTED] 
System#currentTimeMillis()})
-     */
-    public static void notifyIdleSession(IoSession session, long currentTime) {
-        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(
-            IoSession 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(
-            IoSession session, long currentTime) {
-
-        long writeTimeout = session.getConfig().getWriteTimeoutInMillis();
-        if (writeTimeout > 0 &&
-                currentTime - session.getLastWriteTime() >= writeTimeout &&
-                !session.getWriteRequestQueue().isEmpty(session)) {
-            WriteRequest request = session.getCurrentWriteRequest();
-            if (request != null) {
-                session.setCurrentWriteRequest(null);
-                WriteTimeoutException cause = new 
WriteTimeoutException(request);
-                request.getFuture().setException(cause);
-                session.getFilterChain().fireExceptionCaught(cause);
-                // WriteException is an IOException, so we close the session.
-                session.close();
-            }
-        }
-    }
-
-    private static void updateThroughput(
-            IoSession session, long currentTime) {
-        session.updateThroughput(currentTime, false);
-    }
 }
\ No newline at end of file

Modified: 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java?rev=711811&r1=711810&r2=711811&view=diff
==============================================================================
--- 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java
 (original)
+++ 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java
 Thu Nov  6 01:46:39 2008
@@ -32,6 +32,7 @@
 import org.apache.mina.core.service.AbstractIoAcceptor;
 import org.apache.mina.core.service.IoHandler;
 import org.apache.mina.core.service.TransportMetadata;
+import org.apache.mina.core.session.IdleStatusChecker;
 import org.apache.mina.core.session.IoSession;
 
 /**
@@ -42,6 +43,10 @@
  * @version $Rev$, $Date$
  */
 public final class VmPipeAcceptor extends AbstractIoAcceptor {
+       
+       // object used for checking session idle
+       private IdleStatusChecker idleChecker;
+       
     static final Map<VmPipeAddress, VmPipe> boundHandlers = new 
HashMap<VmPipeAddress, VmPipe>();
 
     /**
@@ -56,6 +61,10 @@
      */
     public VmPipeAcceptor(Executor executor) {
         super(new DefaultVmPipeSessionConfig(), executor);
+        idleChecker = new IdleStatusChecker();
+        // we schedule the idle status checking task in this service exceutor
+        // it will be woke up every seconds
+        executeWorker(idleChecker.getNotifyingTask(), "idleStatusChecker");
     }
 
     public TransportMetadata getTransportMetadata() {
@@ -86,6 +95,8 @@
 
     @Override
     protected IoFuture dispose0() throws Exception {
+       // stop the idle checking task
+       idleChecker.getNotifyingTask().cancel();
         unbind();
         return null;
     }

Modified: 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java?rev=711811&r1=711810&r2=711811&view=diff
==============================================================================
--- 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
 (original)
+++ 
mina/sandbox/jvermillard/mina-cleaning/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
 Thu Nov  6 01:46:39 2008
@@ -33,9 +33,12 @@
 import org.apache.mina.core.service.AbstractIoConnector;
 import org.apache.mina.core.service.IoHandler;
 import org.apache.mina.core.service.TransportMetadata;
+import org.apache.mina.core.session.IdleStatusChecker;
 import org.apache.mina.core.session.IoSessionInitializer;
 import org.apache.mina.util.ExceptionMonitor;
 
+import com.sun.corba.se.spi.legacy.connection.GetEndPointInfoAgainException;
+
 /**
  * Connects to [EMAIL PROTECTED] IoHandler}s which is bound on the specified
  * [EMAIL PROTECTED] VmPipeAddress}.
@@ -45,6 +48,9 @@
  */
 public final class VmPipeConnector extends AbstractIoConnector {
 
+       // object used for checking session idle
+       private IdleStatusChecker idleChecker;
+       
     /**
      * Creates a new instance.
      */
@@ -57,6 +63,10 @@
      */
     public VmPipeConnector(Executor executor) {
         super(new DefaultVmPipeSessionConfig(), executor);
+        idleChecker = new IdleStatusChecker();
+        // we schedule the idle status checking task in this service exceutor
+        // it will be woke up every seconds
+        executeWorker(idleChecker.getNotifyingTask(), "idleStatusChecker");
     }
 
     public TransportMetadata getTransportMetadata() {
@@ -103,7 +113,7 @@
 
             // The following sentences don't throw any exceptions.
             getListeners().fireSessionCreated(localSession);
-            getIdleStatusChecker().addSession(localSession);
+            idleChecker.addSession(localSession);
         } catch (Throwable t) {
             future.setException(t);
             return future;
@@ -119,7 +129,7 @@
 
             // The following sentences don't throw any exceptions.
             entry.getListeners().fireSessionCreated(remoteSession);
-            getIdleStatusChecker().addSession(remoteSession);
+            idleChecker.addSession(remoteSession);
         } catch (Throwable t) {
             ExceptionMonitor.getInstance().exceptionCaught(t);
             remoteSession.close();
@@ -135,6 +145,8 @@
 
     @Override
     protected IoFuture dispose0() throws Exception {
+       // stop the idle checking task
+       idleChecker.getNotifyingTask().cancel();
         return null;
     }
 

Modified: 
mina/sandbox/jvermillard/mina-cleaning/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/jvermillard/mina-cleaning/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java?rev=711811&r1=711810&r2=711811&view=diff
==============================================================================
--- 
mina/sandbox/jvermillard/mina-cleaning/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java
 (original)
+++ 
mina/sandbox/jvermillard/mina-cleaning/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java
 Thu Nov  6 01:46:39 2008
@@ -49,6 +49,8 @@
  */
 public final class SerialConnector extends AbstractIoConnector {
     private final Logger log;
+    
+    private IdleStatusChecker idleChecker;
 
     public SerialConnector() {
         this(null);
@@ -57,6 +59,12 @@
     public SerialConnector(Executor executor) {
         super(new DefaultSerialSessionConfig(), executor);
         log = LoggerFactory.getLogger(SerialConnector.class);
+        
+        idleChecker = new IdleStatusChecker();
+        // we schedule the idle status checking task in this service exceutor
+        // it will be woke up every seconds
+        executeWorker(idleChecker.getNotifyingTask(), "idleStatusChecker");
+        
     }
 
     @Override
@@ -125,6 +133,8 @@
 
     @Override
     protected IoFuture dispose0() throws Exception {
+       // stop the idle checking task
+       idleChecker.getNotifyingTask().cancel();
         return null;
     }
 
@@ -171,6 +181,6 @@
     }
 
     IdleStatusChecker getIdleStatusChecker0() {
-        return super.getIdleStatusChecker();
+        return idleChecker;
     }
-}
+}
\ No newline at end of file


Reply via email to