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 2005/04/06 07:18:33 UTC

svn commit: r160253 - in directory/network/trunk/src: examples/org/apache/mina/examples/registry/Main.java java/org/apache/mina/registry/Service.java java/org/apache/mina/registry/SimpleServiceRegistry.java

Author: trustin
Date: Tue Apr  5 22:18:31 2005
New Revision: 160253

URL: http://svn.apache.org/viewcvs?view=rev&rev=160253
Log:
Fixed: Users cannot specify the interface to bind on to ServiceRegistry.

Modified:
    directory/network/trunk/src/examples/org/apache/mina/examples/registry/Main.java
    directory/network/trunk/src/java/org/apache/mina/registry/Service.java
    directory/network/trunk/src/java/org/apache/mina/registry/SimpleServiceRegistry.java

Modified: directory/network/trunk/src/examples/org/apache/mina/examples/registry/Main.java
URL: http://svn.apache.org/viewcvs/directory/network/trunk/src/examples/org/apache/mina/examples/registry/Main.java?view=diff&r1=160252&r2=160253
==============================================================================
--- directory/network/trunk/src/examples/org/apache/mina/examples/registry/Main.java (original)
+++ directory/network/trunk/src/examples/org/apache/mina/examples/registry/Main.java Tue Apr  5 22:18:31 2005
@@ -3,9 +3,12 @@
  */
 package org.apache.mina.examples.registry;
 
+import java.net.InetSocketAddress;
+
 import org.apache.mina.common.TransportType;
 import org.apache.mina.examples.echoserver.EchoProtocolHandler;
 import org.apache.mina.examples.reverser.ReverseProtocolProvider;
+import org.apache.mina.protocol.vmpipe.VmPipeAddress;
 import org.apache.mina.registry.Service;
 import org.apache.mina.registry.ServiceRegistry;
 import org.apache.mina.registry.SimpleServiceRegistry;
@@ -26,20 +29,27 @@
         ServiceRegistry registry = new SimpleServiceRegistry();
 
         // Register echo service
-        registry.bind( new Service( "echo", TransportType.SOCKET, 8080 ),
-                new EchoProtocolHandler() );
-        registry.bind( new Service( "echo", TransportType.DATAGRAM, 8080 ),
-                new EchoProtocolHandler() );
+        registry.bind( new Service( "echo", TransportType.SOCKET,
+                                    new InetSocketAddress( 8080 ) ),
+                       new EchoProtocolHandler() );
+
+        registry.bind( new Service( "echo", TransportType.DATAGRAM,
+                                    new InetSocketAddress( 8080 ) ),
+                       new EchoProtocolHandler() );
 
         // Register reverse service
-        registry.bind( new Service( "reverse", TransportType.SOCKET, 8081 ),
-                new ReverseProtocolProvider() );
-        registry.bind(
-                new Service( "reverse", TransportType.DATAGRAM, 8081 ),
-                new ReverseProtocolProvider() );
-        registry.bind( new Service( "reverse", TransportType.VM_PIPE, 8081 ),
-                new ReverseProtocolProvider() );
+        registry.bind( new Service( "reverse", TransportType.SOCKET,
+                                    new InetSocketAddress( 8081 ) ),
+                       new ReverseProtocolProvider() );
+
+        registry.bind( new Service( "reverse", TransportType.DATAGRAM,
+                                    new InetSocketAddress( 8081 ) ),
+                       new ReverseProtocolProvider() );
+
+        registry.bind( new Service( "reverse", TransportType.VM_PIPE,
+                                    new VmPipeAddress( 8081 ) ),
+                       new ReverseProtocolProvider() );
         
-        System.out.println(registry.getAllServices());
+        System.out.println( registry.getAllServices() );
     }
 }

Modified: directory/network/trunk/src/java/org/apache/mina/registry/Service.java
URL: http://svn.apache.org/viewcvs/directory/network/trunk/src/java/org/apache/mina/registry/Service.java?view=diff&r1=160252&r2=160253
==============================================================================
--- directory/network/trunk/src/java/org/apache/mina/registry/Service.java (original)
+++ directory/network/trunk/src/java/org/apache/mina/registry/Service.java Tue Apr  5 22:18:31 2005
@@ -19,8 +19,10 @@
 package org.apache.mina.registry;
 
 import java.io.Serializable;
+import java.net.SocketAddress;
 
 import org.apache.mina.common.TransportType;
+import org.apache.mina.protocol.vmpipe.VmPipeAddress;
 
 /**
  * Represents a service that is registered to {@link ServiceRegistry}.
@@ -36,24 +38,31 @@
 
     private final TransportType transportType;
 
-    private final int port;
+    private final SocketAddress address;
 
     /**
      * Creates a new instance with the specified protocol name, transport type,
-     * and port number.
+     * and socket address to be bound.
      */
-    public Service( String name, TransportType transportType, int port )
+    public Service( String name, TransportType transportType, SocketAddress address )
     {
         if( name == null )
             throw new NullPointerException( "name" );
         if( transportType == null )
             throw new NullPointerException( "transportType" );
-        if( port < 0 || port > 65535 )
-            throw new IllegalArgumentException( "port: " + port );
+        if( address == null )
+            throw new NullPointerException( "address" );
+
+        if( transportType == TransportType.VM_PIPE &&
+            !( address instanceof VmPipeAddress ) )
+        {
+            throw new IllegalArgumentException(
+                    "VM_PIPE transport type accepts only VmPipeAddress: " + address.getClass() );
+        }
 
         this.name = name;
         this.transportType = transportType;
-        this.port = port;
+        this.address = address;
     }
 
     /**
@@ -73,17 +82,17 @@
     }
 
     /**
-     * Returns the port number this service is bound on.
+     * Returns the socket address this service is bound on.
      */
-    public int getPort()
+    public SocketAddress getAddress()
     {
-        return port;
+        return address;
     }
 
     public int hashCode()
     {
         return ( ( name.hashCode() * 37 ) ^ transportType.hashCode() * 37 )
-                ^ port;
+                ^ address.hashCode();
     }
 
     public boolean equals( Object o )
@@ -98,7 +107,7 @@
         Service that = ( Service ) o;
         return this.name.equals( that.name )
                 && this.transportType == that.transportType
-                && this.port == that.port;
+                && this.address.equals( that.address );
     }
 
     public Object clone()
@@ -114,6 +123,6 @@
     }
     
     public String toString() {
-        return "(" + transportType + ", " + name + ", " + port + ')';
+        return "(" + transportType + ", " + name + ", " + address + ')';
     }
 }

Modified: directory/network/trunk/src/java/org/apache/mina/registry/SimpleServiceRegistry.java
URL: http://svn.apache.org/viewcvs/directory/network/trunk/src/java/org/apache/mina/registry/SimpleServiceRegistry.java?view=diff&r1=160252&r2=160253
==============================================================================
--- directory/network/trunk/src/java/org/apache/mina/registry/SimpleServiceRegistry.java (original)
+++ directory/network/trunk/src/java/org/apache/mina/registry/SimpleServiceRegistry.java Tue Apr  5 22:18:31 2005
@@ -5,6 +5,7 @@
 
 import java.io.IOException;
 import java.net.InetSocketAddress;
+import java.net.SocketAddress;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Set;
@@ -66,7 +67,7 @@
             throws IOException
     {
         IoAcceptor acceptor = findIoAcceptor( service.getTransportType() );
-        acceptor.bind( new InetSocketAddress( service.getPort() ), ioHandler );
+        acceptor.bind( service.getAddress(), ioHandler );
         startThreadPools();
         services.add( service );
     }
@@ -77,16 +78,7 @@
     {
         ProtocolAcceptor acceptor = findProtocolAcceptor( service
                 .getTransportType() );
-        if( acceptor instanceof VmPipeAcceptor )
-        {
-            acceptor.bind( new VmPipeAddress( service.getPort() ),
-                    protocolProvider );
-        }
-        else
-        {
-            acceptor.bind( new InetSocketAddress( service.getPort() ),
-                    protocolProvider );
-        }
+        acceptor.bind( service.getAddress(), protocolProvider );
         startThreadPools();
         services.add( service );
     }
@@ -97,7 +89,7 @@
                 .getTransportType() );
         try
         {
-            acceptor.unbind( new InetSocketAddress( service.getPort() ) );
+            acceptor.unbind( service.getAddress() );
         }
         catch( Exception e )
         {
@@ -106,7 +98,7 @@
         
         try
         {
-            acceptor.unbind( new VmPipeAddress( service.getPort() ) );
+            acceptor.unbind( service.getAddress() );
         }
         catch( Exception e )
         {
@@ -167,7 +159,23 @@
         while( it.hasNext() )
         {
             Service s = ( Service ) it.next();
-            if( s.getPort() == port )
+            SocketAddress addr = ( SocketAddress ) s.getAddress();
+            int servicePort;
+            
+            if( addr instanceof InetSocketAddress )
+            {
+                servicePort = ( ( InetSocketAddress ) addr ).getPort();
+            }
+            else if( addr instanceof VmPipeAddress )
+            {
+                servicePort = ( ( VmPipeAddress ) addr ).getPort();
+            }
+            else
+            {
+                servicePort = -1; // this cannot happen 
+            }
+            
+            if( servicePort == port )
             {
                 result.add( s );
             }