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 2009/03/08 18:21:08 UTC

svn commit: r751472 - in /mina/trunk/core/src/main/java/org/apache/mina/core/polling: AbstractPollingConnectionlessIoAcceptor.java AbstractPollingIoAcceptor.java

Author: elecharny
Date: Sun Mar  8 17:21:07 2009
New Revision: 751472

URL: http://svn.apache.org/viewvc?rev=751472&view=rev
Log:
o Added some comments in the AbstractPollingConnectionlessAcceptor
o Renamed the startupWorker() method to startupAcceptor()

Modified:
    mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java

Modified: mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java?rev=751472&r1=751471&r2=751472&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java Sun Mar  8 17:21:07 2009
@@ -134,7 +134,7 @@
     protected IoFuture dispose0() throws Exception {
         unbind();
         if (!disposalFuture.isDone()) {
-            startupWorker();
+            startupAcceptor();
             wakeup();
         }
         return disposalFuture;
@@ -146,22 +146,39 @@
     @Override
     protected final Set<SocketAddress> bindInternal(
             List<? extends SocketAddress> localAddresses) throws Exception {
+        // Create a bind request as a Future operation. When the selector
+        // have handled the registration, it will signal this future.
         AcceptorOperationFuture request = new AcceptorOperationFuture(localAddresses);
 
+        // adds the Registration request to the queue for the Workers
+        // to handle
         registerQueue.add(request);
-        startupWorker();
+
+        // creates the Acceptor instance and has the local
+        // executor kick it off.
+        startupAcceptor();
+        
+        // As we just started the acceptor, we have to unblock the select()
+        // in order to process the bind request we just have added to the 
+        // registerQueue.
         wakeup();
 
+        // Now, we wait until this request is completed.
         request.awaitUninterruptibly();
 
         if (request.getException() != null) {
             throw request.getException();
         }
 
+        // Update the local addresses.
+        // setLocalAddresses() shouldn't be called from the worker thread
+        // because of deadlock.
         Set<SocketAddress> newLocalAddresses = new HashSet<SocketAddress>();
-        for (H handle: boundHandles.values()) {
+
+        for (H handle:boundHandles.values()) {
             newLocalAddresses.add(localAddress(handle));
         }
+        
         return newLocalAddresses;
     }
 
@@ -174,7 +191,7 @@
         AcceptorOperationFuture request = new AcceptorOperationFuture(localAddresses);
 
         cancelQueue.add(request);
-        startupWorker();
+        startupAcceptor();
         wakeup();
 
         request.awaitUninterruptibly();
@@ -297,7 +314,10 @@
         }
     }
 
-    private void startupWorker() {
+    /**
+     * Starts the inner Acceptor thread.
+     */
+    private void startupAcceptor() {
         if (!selectable) {
             registerQueue.clear();
             cancelQueue.clear();

Modified: mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java?rev=751472&r1=751471&r2=751472&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java Sun Mar  8 17:21:07 2009
@@ -334,7 +334,7 @@
         // because of deadlock.
         Set<SocketAddress> newLocalAddresses = new HashSet<SocketAddress>();
         
-        for (H handle : boundHandles.values()) {
+        for (H handle:boundHandles.values()) {
             newLocalAddresses.add(localAddress(handle));
         }