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 2012/05/03 14:01:04 UTC

svn commit: r1333412 - in /mina/trunk: core/src/main/java/org/apache/mina/api/ core/src/main/java/org/apache/mina/service/ core/src/main/java/org/apache/mina/service/client/ examples/src/main/java/org/apache/mina/examples/echoserver/

Author: elecharny
Date: Thu May  3 12:01:03 2012
New Revision: 1333412

URL: http://svn.apache.org/viewvc?rev=1333412&view=rev
Log:
Change the IoService interface to allow the addition/removal of more than one listener at the same time

Modified:
    mina/trunk/core/src/main/java/org/apache/mina/api/IoService.java
    mina/trunk/core/src/main/java/org/apache/mina/service/AbstractIoService.java
    mina/trunk/core/src/main/java/org/apache/mina/service/client/AbstractIoClient.java
    mina/trunk/examples/src/main/java/org/apache/mina/examples/echoserver/NioEchoServer.java

Modified: mina/trunk/core/src/main/java/org/apache/mina/api/IoService.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/api/IoService.java?rev=1333412&r1=1333411&r2=1333412&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/api/IoService.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/api/IoService.java Thu May  3 12:01:03 2012
@@ -26,8 +26,8 @@ import javax.net.ssl.SSLException;
 import org.apache.mina.service.IoHandler;
 
 /**
- * Base interface for all {@link IoServer}s and {@link IoClient}s that provide I/O service and manage {@link IoSession}
- * s.
+ * Base interface for all {@link IoServer}s and {@link IoClient}s that provide I/O service 
+ * and manage {@link IoSession}s.
  * 
  * @author <a href="http://mina.apache.org">Apache MINA Project</a>
  */
@@ -41,24 +41,31 @@ public interface IoService {
     Map<Long, IoSession> getManagedSessions();
 
     /**
-     * Adds an {@link IoServiceListener} that listens any events related with this service.
+     * Adds some {@link IoServiceListener} that listens any events related with this service.
+     * 
+     * @param listeners The {@link IoServiceListener} to add
      */
-    void addListener(IoServiceListener listener);
+    void addListeners(IoServiceListener... listeners);
 
     /**
-     * Removed an existing {@link IoServiceListener} that listens any events related with this service.
+     * Removed some existing {@link IoServiceListener} that listens any events related with this service.
+     * 
+     * @param listeners The {@link IoServiceListener} to rmove
      */
-    void removeListener(IoServiceListener listener);
+    void removeListeners(IoServiceListener... listeners);
 
     /**
      * Returns the handler which will handle all the connections managed by this service.
+     * 
+     * @return The {@link IoService} {@link IoHandler}
      */
-
     IoHandler getHandler();
 
     /**
-     * Sets the handler which will handle all connections managed by this service. The handler can only be set before
-     * the service is started.
+     * Sets the handler which will handle all connections managed by this service. The handler can 
+     * only be set before the service is started. We can have only one {@link IoHandler} per service.
+     * 
+     * @param handler The {@link IoHandler} associated with this service
      */
     void setHandler(IoHandler handler);
 
@@ -71,23 +78,29 @@ public interface IoService {
 
     /**
      * Set the list of filters for this service. Must be called before the service is bound/connected
+     * 
+     * @param The list of filters to inject in the filters chain
      */
     void setFilters(IoFilter... filters);
 
     /**
      * Returns the default configuration of the new {@link IoSession}s
      * created by this service.
+     * 
+     * @return The default configuration for this {@link IoService}
      */
     IoSessionConfig getSessionConfig();
 
     /**
      * Tells if the service provide some encryption (SSL/TLS)
+     * 
      * @return <code>true</code> if the service is secured
      */
     boolean isSecured();
 
     /**
-     * Initialize the service in secured mode for the given session
+     * Initialize the service in secured mode for the given session.
+     * 
      * @param session The {@link IoSession} to secure
      */
     void initSecured(IoSession session) throws SSLException;

Modified: mina/trunk/core/src/main/java/org/apache/mina/service/AbstractIoService.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/service/AbstractIoService.java?rev=1333412&r1=1333411&r2=1333412&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/service/AbstractIoService.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/service/AbstractIoService.java Thu May  3 12:01:03 2012
@@ -106,9 +106,15 @@ public abstract class AbstractIoService 
      * {@inheritDoc}
      */
     @Override
-    public void addListener(IoServiceListener listener) {
-        if (listener != null) {
-            listeners.add(listener);
+    public void addListeners(IoServiceListener... listeners) {
+        if (listeners != null) {
+            for (IoServiceListener listener : listeners) {
+                // Don't add an existing listener into the list
+                if (!this.listeners.contains(listener)) {
+                    this.listeners.add(listener);
+                }
+            }
+
             return;
         }
 
@@ -120,10 +126,16 @@ public abstract class AbstractIoService 
      * {@inheritDoc}
      */
     @Override
-    public void removeListener(IoServiceListener listener) {
-        if (listener != null) {
-            listeners.remove(listener);
+    public void removeListeners(IoServiceListener... listeners) {
+        if (listeners != null) {
+            for (IoServiceListener listener : listeners) {
+                this.listeners.remove(listener);
+            }
+
+            return;
         }
+
+        LOG.warn("Trying to remove Null Listener");
     }
 
     /**

Modified: mina/trunk/core/src/main/java/org/apache/mina/service/client/AbstractIoClient.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/service/client/AbstractIoClient.java?rev=1333412&r1=1333411&r2=1333412&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/service/client/AbstractIoClient.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/service/client/AbstractIoClient.java Thu May  3 12:01:03 2012
@@ -47,11 +47,11 @@ public abstract class AbstractIoClient e
     }
 
     @Override
-    public void addListener(IoServiceListener listener) {
+    public void addListeners(IoServiceListener... listeners) {
     }
 
     @Override
-    public void removeListener(IoServiceListener listener) {
+    public void removeListeners(IoServiceListener... listeners) {
     }
 
     @Override

Modified: mina/trunk/examples/src/main/java/org/apache/mina/examples/echoserver/NioEchoServer.java
URL: http://svn.apache.org/viewvc/mina/trunk/examples/src/main/java/org/apache/mina/examples/echoserver/NioEchoServer.java?rev=1333412&r1=1333411&r2=1333412&view=diff
==============================================================================
--- mina/trunk/examples/src/main/java/org/apache/mina/examples/echoserver/NioEchoServer.java (original)
+++ mina/trunk/examples/src/main/java/org/apache/mina/examples/echoserver/NioEchoServer.java Thu May  3 12:01:03 2012
@@ -96,7 +96,7 @@ public class NioEchoServer {
             }
         });
 
-        acceptor.addListener(new IoServiceListener() {
+        acceptor.addListeners(new IoServiceListener() {
 
             @Override
             public void sessionDestroyed(IoSession session) {