You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by tr...@apache.org on 2006/03/12 06:13:07 UTC

svn commit: r385248 - in /directory/trunks/mina/core/src/main/java/org/apache/mina: common/IoFuture.java common/support/AbstractIoFilterChain.java transport/socket/nio/support/SocketIoProcessor.java transport/vmpipe/support/VmPipeFilterChain.java

Author: trustin
Date: Sat Mar 11 21:13:05 2006
New Revision: 385248

URL: http://svn.apache.org/viewcvs?rev=385248&view=rev
Log:
* Made sure IoFuture.setValue() calls callback only once
* AbstractIoFilterChain.sessionClosed() calls CloseFuture.setClosed() automatically.

Modified:
    directory/trunks/mina/core/src/main/java/org/apache/mina/common/IoFuture.java
    directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/AbstractIoFilterChain.java
    directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketIoProcessor.java
    directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/support/VmPipeFilterChain.java

Modified: directory/trunks/mina/core/src/main/java/org/apache/mina/common/IoFuture.java
URL: http://svn.apache.org/viewcvs/directory/trunks/mina/core/src/main/java/org/apache/mina/common/IoFuture.java?rev=385248&r1=385247&r2=385248&view=diff
==============================================================================
--- directory/trunks/mina/core/src/main/java/org/apache/mina/common/IoFuture.java (original)
+++ directory/trunks/mina/core/src/main/java/org/apache/mina/common/IoFuture.java Sat Mar 11 21:13:05 2006
@@ -160,6 +160,12 @@
     {
         synchronized( lock )
         {
+            // Allow only once.
+            if( ready )
+            {
+                return;
+            }
+
             result = newValue;
             ready = true;
             lock.notifyAll();

Modified: directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/AbstractIoFilterChain.java
URL: http://svn.apache.org/viewcvs/directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/AbstractIoFilterChain.java?rev=385248&r1=385247&r2=385248&view=diff
==============================================================================
--- directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/AbstractIoFilterChain.java (original)
+++ directory/trunks/mina/core/src/main/java/org/apache/mina/common/support/AbstractIoFilterChain.java Sat Mar 11 21:13:05 2006
@@ -440,6 +440,17 @@
 
     public void sessionClosed( IoSession session )
     {
+        // Update future.
+        try
+        {
+            session.getCloseFuture().setClosed();
+        }
+        catch( Throwable t )
+        {
+            exceptionCaught( session, t );
+        }
+        
+        // And start the chain.
         Entry head = this.head;
         callNextSessionClosed(head, session);
     }

Modified: directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketIoProcessor.java
URL: http://svn.apache.org/viewcvs/directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketIoProcessor.java?rev=385248&r1=385247&r2=385248&view=diff
==============================================================================
--- directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketIoProcessor.java (original)
+++ directory/trunks/mina/core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketIoProcessor.java Sat Mar 11 21:13:05 2006
@@ -248,7 +248,6 @@
                 session.getManagedSessions().remove( session );
 
                 ( ( SocketFilterChain ) session.getFilterChain() ).sessionClosed( session );
-                session.getCloseFuture().setClosed();
             }
         }
     }

Modified: directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/support/VmPipeFilterChain.java
URL: http://svn.apache.org/viewcvs/directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/support/VmPipeFilterChain.java?rev=385248&r1=385247&r2=385248&view=diff
==============================================================================
--- directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/support/VmPipeFilterChain.java (original)
+++ directory/trunks/mina/core/src/main/java/org/apache/mina/transport/vmpipe/support/VmPipeFilterChain.java Sat Mar 11 21:13:05 2006
@@ -97,7 +97,6 @@
             {
                 s.getManagedSessions().remove( s );
                 ( ( VmPipeFilterChain ) s.getFilterChain() ).sessionClosed( session );
-                session.getCloseFuture().setClosed();
                 s.remoteSession.close();
             }
         }