You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by tr...@apache.org on 2007/04/03 08:51:48 UTC

svn commit: r525060 - in /mina: branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/ branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/ trunk/core/src/main/java/org/apache/mina/transport/socket/nio/ trunk/cor...

Author: trustin
Date: Mon Apr  2 23:51:46 2007
New Revision: 525060

URL: http://svn.apache.org/viewvc?view=rev&rev=525060
Log:
Related issue: DIRMINA-365 (Make use of covariant return types)
* Applied covariant return types to all core classes (except VM pipe transport in trunk.  It needs more work.)
* We can't do much with covariant return type not introducing transport-specific session types such as SocketSession, so you will have to use trunk to get the most out of it.  1.1 has limited support on the other hand.


Added:
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSession.java   (with props)
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSession.java   (with props)
    mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeSession.java   (with props)
Modified:
    mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java
    mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java
    mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramServiceConfig.java
    mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java
    mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java
    mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java
    mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/support/VmPipeSessionImpl.java

Modified: mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java
URL: http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java?view=diff&rev=525060&r1=525059&r2=525060
==============================================================================
--- mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java (original)
+++ mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java Mon Apr  2 23:51:46 2007
@@ -19,13 +19,13 @@
  */
 package org.apache.mina.transport.socket.nio;
 
+import java.util.concurrent.Executor;
+
 import org.apache.mina.common.IoAcceptor;
 import org.apache.mina.common.support.DelegatedIoAcceptor;
 import org.apache.mina.transport.socket.nio.support.DatagramAcceptorDelegate;
 import org.apache.mina.util.NewThreadExecutor;
 
-import java.util.concurrent.Executor;
-
 /**
  * {@link IoAcceptor} for datagram transport (UDP/IP).
  *
@@ -50,6 +50,12 @@
     public DatagramAcceptor( Executor executor )
     {
         init( new DatagramAcceptorDelegate( this, executor ) );
+    }
+    
+    @Override
+    public DatagramAcceptorConfig getDefaultConfig()
+    {
+        return ( DatagramAcceptorConfig ) super.getDefaultConfig();
     }
 
     /**

Modified: mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java
URL: http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java?view=diff&rev=525060&r1=525059&r2=525060
==============================================================================
--- mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java (original)
+++ mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java Mon Apr  2 23:51:46 2007
@@ -19,11 +19,12 @@
  */
 package org.apache.mina.transport.socket.nio;
 
+import java.util.concurrent.Executor;
+
 import org.apache.mina.common.IoConnector;
 import org.apache.mina.common.support.DelegatedIoConnector;
 import org.apache.mina.transport.socket.nio.support.DatagramConnectorDelegate;
 import org.apache.mina.util.NewThreadExecutor;
-import java.util.concurrent.Executor;
 
 /**
  * {@link IoConnector} for datagram transport (UDP/IP).
@@ -49,6 +50,12 @@
     public DatagramConnector( Executor executor )
     {
         init( new DatagramConnectorDelegate( this, executor ) );
+    }
+
+    @Override
+    public DatagramConnectorConfig getDefaultConfig()
+    {
+        return ( DatagramConnectorConfig ) super.getDefaultConfig();
     }
 
     /**

Modified: mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramServiceConfig.java
URL: http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramServiceConfig.java?view=diff&rev=525060&r1=525059&r2=525060
==============================================================================
--- mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramServiceConfig.java (original)
+++ mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramServiceConfig.java Mon Apr  2 23:51:46 2007
@@ -30,6 +30,8 @@
  */
 public interface DatagramServiceConfig extends IoServiceConfig
 {
+    DatagramSessionConfig getSessionConfig();
+    
     /**
      * Returns the {@link IoSessionRecycler} for this service.
      */

Modified: mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java
URL: http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java?view=diff&rev=525060&r1=525059&r2=525060
==============================================================================
--- mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java (original)
+++ mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java Mon Apr  2 23:51:46 2007
@@ -336,7 +336,7 @@
         return ioProcessors[processorDistributor++ % processorCount];
     }
 
-    public IoServiceConfig getDefaultConfig()
+    public SocketAcceptorConfig getDefaultConfig()
     {
         return defaultConfig;
     }
@@ -387,7 +387,7 @@
                 }
                 else
                 {
-                    cfg = ( SocketAcceptorConfig ) getDefaultConfig();
+                    cfg = getDefaultConfig();
                 }
 
                 ssc.socket().setReuseAddress( cfg.isReuseAddress() );

Modified: mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java
URL: http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java?view=diff&rev=525060&r1=525059&r2=525060
==============================================================================
--- mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java (original)
+++ mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java Mon Apr  2 23:51:46 2007
@@ -219,7 +219,7 @@
         return request;
     }
 
-    public IoServiceConfig getDefaultConfig()
+    public SocketConnectorConfig getDefaultConfig()
     {
         return defaultConfig;
     }

Modified: mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java
URL: http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java?view=diff&rev=525060&r1=525059&r2=525060
==============================================================================
--- mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java (original)
+++ mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java Mon Apr  2 23:51:46 2007
@@ -265,7 +265,7 @@
         req.config.getThreadModel().buildFilterChain( session.getFilterChain() );
     }
 
-    public IoServiceConfig getDefaultConfig()
+    public DatagramAcceptorConfig getDefaultConfig()
     {
         return defaultConfig;
     }
@@ -555,7 +555,7 @@
                 }
                 else
                 {
-                    cfg = ( DatagramSessionConfig ) getDefaultConfig().getSessionConfig();
+                    cfg = getDefaultConfig().getSessionConfig();
                 }
 
                 ch.socket().setReuseAddress( cfg.isReuseAddress() );

Modified: mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
URL: http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java?view=diff&rev=525060&r1=525059&r2=525060
==============================================================================
--- mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java (original)
+++ mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java Mon Apr  2 23:51:46 2007
@@ -120,7 +120,7 @@
             }
             else
             {
-                cfg = ( DatagramSessionConfig ) getDefaultConfig().getSessionConfig();
+                cfg = getDefaultConfig().getSessionConfig();
             }
 
             ch.socket().setReuseAddress( cfg.isReuseAddress() );
@@ -187,7 +187,7 @@
         return request;
     }
 
-    public IoServiceConfig getDefaultConfig()
+    public DatagramConnectorConfig getDefaultConfig()
     {
         return defaultConfig;
     }

Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java?view=diff&rev=525060&r1=525059&r2=525060
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java Mon Apr  2 23:51:46 2007
@@ -19,6 +19,7 @@
  */
 package org.apache.mina.transport.socket.nio;
 
+import java.net.InetSocketAddress;
 import java.util.concurrent.Executor;
 
 import org.apache.mina.common.IoAcceptor;
@@ -52,7 +53,15 @@
     {
         init( new DatagramAcceptorDelegate( this, executor ) );
     }
+    
+    public DatagramSessionConfig getSessionConfig() {
+        return ( ( DatagramAcceptorDelegate ) delegate ).getSessionConfig();
+    }
 
+    public InetSocketAddress getLocalAddress() {
+        return ( ( DatagramAcceptorDelegate ) delegate ).getLocalAddress();
+    }
+    
     /**
      * Returns the {@link IoSessionRecycler} for this service.
      */

Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java?view=diff&rev=525060&r1=525059&r2=525060
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java Mon Apr  2 23:51:46 2007
@@ -23,6 +23,7 @@
 
 import org.apache.mina.common.IoConnector;
 import org.apache.mina.common.support.DelegatedIoConnector;
+import org.apache.mina.transport.socket.nio.support.DatagramAcceptorDelegate;
 import org.apache.mina.transport.socket.nio.support.DatagramConnectorDelegate;
 import org.apache.mina.util.NewThreadExecutor;
 
@@ -50,5 +51,9 @@
     public DatagramConnector( Executor executor )
     {
         init( new DatagramConnectorDelegate( this, executor ) );
+    }
+
+    public DatagramSessionConfig getSessionConfig() {
+        return ( ( DatagramAcceptorDelegate ) delegate ).getSessionConfig();
     }
 }

Added: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSession.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSession.java?view=auto&rev=525060
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSession.java (added)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSession.java Mon Apr  2 23:51:46 2007
@@ -0,0 +1,12 @@
+package org.apache.mina.transport.socket.nio;
+
+import java.net.InetSocketAddress;
+
+import org.apache.mina.common.BroadcastIoSession;
+
+public interface DatagramSession extends BroadcastIoSession {
+    DatagramSessionConfig getConfig();
+    InetSocketAddress getRemoteAddress();
+    InetSocketAddress getLocalAddress();
+    InetSocketAddress getServiceAddress();
+}

Propchange: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSession.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSession.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java?view=diff&rev=525060&r1=525059&r2=525060
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java Mon Apr  2 23:51:46 2007
@@ -20,6 +20,7 @@
 package org.apache.mina.transport.socket.nio;
 
 import java.io.IOException;
+import java.net.InetSocketAddress;
 import java.net.ServerSocket;
 import java.net.SocketAddress;
 import java.nio.channels.SelectionKey;
@@ -158,6 +159,15 @@
     public TransportType getTransportType() {
         return TransportType.SOCKET;
     }
+    
+    public SocketSessionConfig getSessionConfig() {
+        return (SocketSessionConfig) super.getSessionConfig();
+    }
+    
+    @Override
+    public InetSocketAddress getLocalAddress() {
+        return (InetSocketAddress) super.getLocalAddress();
+    }
 
     /**
      * @see ServerSocket#getReuseAddress()
@@ -419,7 +429,7 @@
                 // Configure the server socket,
                 ssc.socket().setReuseAddress( isReuseAddress() );
                 ssc.socket().setReceiveBufferSize(
-                    ( ( SocketSessionConfig ) getSessionConfig() ).getReceiveBufferSize() );
+                    getSessionConfig().getReceiveBufferSize() );
 
                 // and bind.
                 ssc.socket().bind( getLocalAddress(), getBacklog() );

Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java?view=diff&rev=525060&r1=525059&r2=525060
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java Mon Apr  2 23:51:46 2007
@@ -126,6 +126,10 @@
     public TransportType getTransportType() {
         return TransportType.SOCKET;
     }
+    
+    public SocketSessionConfig getSessionConfig() {
+        return (SocketSessionConfig) super.getSessionConfig();
+    }
 
     /**
      * How many seconds to keep the connection thread alive between connection requests

Added: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSession.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSession.java?view=auto&rev=525060
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSession.java (added)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSession.java Mon Apr  2 23:51:46 2007
@@ -0,0 +1,12 @@
+package org.apache.mina.transport.socket.nio;
+
+import java.net.InetSocketAddress;
+
+import org.apache.mina.common.IoSession;
+
+public interface SocketSession extends IoSession {
+    SocketSessionConfig getConfig();
+    InetSocketAddress getRemoteAddress();
+    InetSocketAddress getLocalAddress();
+    InetSocketAddress getServiceAddress();
+}

Propchange: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSession.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSession.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java?view=diff&rev=525060&r1=525059&r2=525060
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java Mon Apr  2 23:51:46 2007
@@ -19,7 +19,7 @@
  */
 package org.apache.mina.transport.socket.nio;
 
-import java.net.SocketAddress;
+import java.net.InetSocketAddress;
 import java.net.SocketException;
 import java.nio.channels.SelectionKey;
 import java.nio.channels.SocketChannel;
@@ -44,7 +44,7 @@
  * @author The Apache MINA Project (dev@mina.apache.org)
  * @version $Rev$, $Date$
  */
-class SocketSessionImpl extends BaseIoSession
+class SocketSessionImpl extends BaseIoSession implements SocketSession
 {
     private final IoService service;
     private final SocketSessionConfig config = new SessionConfigImpl();
@@ -94,7 +94,7 @@
         return service;
     }
     
-    public IoSessionConfig getConfig()
+    public SocketSessionConfig getConfig()
     {
         return config;
     }
@@ -174,14 +174,18 @@
         return TransportType.SOCKET;
     }
 
-    public SocketAddress getRemoteAddress()
+    public InetSocketAddress getRemoteAddress()
     {
-        return ch.socket().getRemoteSocketAddress();
+        return (InetSocketAddress) ch.socket().getRemoteSocketAddress();
     }
 
-    public SocketAddress getLocalAddress()
+    public InetSocketAddress getLocalAddress()
     {
-        return ch.socket().getLocalSocketAddress();
+        return (InetSocketAddress) ch.socket().getLocalSocketAddress();
+    }
+    
+    public InetSocketAddress getServiceAddress() {
+        return (InetSocketAddress) super.getServiceAddress();
     }
 
     protected void updateTrafficMask()

Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java?view=diff&rev=525060&r1=525059&r2=525060
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java Mon Apr  2 23:51:46 2007
@@ -20,6 +20,7 @@
 package org.apache.mina.transport.socket.nio.support;
 
 import java.io.IOException;
+import java.net.InetSocketAddress;
 import java.net.SocketAddress;
 import java.nio.channels.DatagramChannel;
 import java.nio.channels.SelectionKey;
@@ -105,7 +106,15 @@
     public TransportType getTransportType() {
         return TransportType.DATAGRAM;
     }
-
+    
+    public DatagramSessionConfig getSessionConfig() {
+        return (DatagramSessionConfig) super.getSessionConfig();
+    }
+    
+    public InetSocketAddress getLocalAddress() {
+        return (InetSocketAddress) super.getLocalAddress();
+    }
+    
     protected void doBind() throws IOException
     {
         RegistrationRequest request = new RegistrationRequest();
@@ -202,7 +211,7 @@
 
             // If a new session needs to be created.
             DatagramSessionImpl datagramSession = new DatagramSessionImpl(
-                    wrapper, this, ch, getHandler(), remoteAddress );
+                    wrapper, this, ch, getHandler(), (InetSocketAddress) remoteAddress );
             datagramSession.setSelectionKey( key );
             
             getSessionRecycler().put( datagramSession );
@@ -371,7 +380,7 @@
     private void readSession( DatagramChannel channel ) throws Exception
     {
         ByteBuffer readBuf = ByteBuffer.allocate(
-                ( ( DatagramSessionConfig ) getSessionConfig() ).getReceiveBufferSize() );
+                getSessionConfig().getReceiveBufferSize() );
 
         SocketAddress remoteAddress = channel.receive( readBuf.buf() );
         if( remoteAddress != null )
@@ -499,7 +508,7 @@
             try
             {
                 ch = DatagramChannel.open();
-                DatagramSessionConfig cfg = ( DatagramSessionConfig ) getSessionConfig();
+                DatagramSessionConfig cfg = getSessionConfig();
                 ch.socket().setReuseAddress( cfg.isReuseAddress() );
                 ch.socket().setBroadcast( cfg.isBroadcast() );
                 ch.socket().setReceiveBufferSize( cfg.getReceiveBufferSize() );

Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java?view=diff&rev=525060&r1=525059&r2=525060
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java Mon Apr  2 23:51:46 2007
@@ -101,6 +101,10 @@
     public TransportType getTransportType() {
         return TransportType.DATAGRAM;
     }
+    
+    public DatagramSessionConfig getSessionConfig() {
+        return (DatagramSessionConfig) super.getSessionConfig();
+    }
 
     protected ConnectFuture doConnect( SocketAddress remoteAddress, SocketAddress localAddress )
     {
@@ -109,7 +113,7 @@
         try
         {
             ch = DatagramChannel.open();
-            DatagramSessionConfig cfg = ( DatagramSessionConfig ) getSessionConfig();
+            DatagramSessionConfig cfg = getSessionConfig();
             
             ch.socket().setReuseAddress( cfg.isReuseAddress() );
             ch.socket().setBroadcast( cfg.isBroadcast() );

Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java?view=diff&rev=525060&r1=525059&r2=525060
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java Mon Apr  2 23:51:46 2007
@@ -19,6 +19,7 @@
  */
 package org.apache.mina.transport.socket.nio.support;
 
+import java.net.InetSocketAddress;
 import java.net.SocketAddress;
 import java.net.SocketException;
 import java.nio.channels.DatagramChannel;
@@ -26,7 +27,6 @@
 import java.util.LinkedList;
 import java.util.Queue;
 
-import org.apache.mina.common.BroadcastIoSession;
 import org.apache.mina.common.ByteBuffer;
 import org.apache.mina.common.IoAcceptor;
 import org.apache.mina.common.IoConnector;
@@ -40,6 +40,7 @@
 import org.apache.mina.common.WriteFuture;
 import org.apache.mina.common.IoFilter.WriteRequest;
 import org.apache.mina.common.support.BaseIoSession;
+import org.apache.mina.transport.socket.nio.DatagramSession;
 import org.apache.mina.transport.socket.nio.DatagramSessionConfig;
 import org.apache.mina.transport.socket.nio.DefaultDatagramSessionConfig;
 
@@ -49,7 +50,7 @@
  * @author The Apache MINA Project (dev@mina.apache.org)
  * @version $Rev$, $Date$
  */
-class DatagramSessionImpl extends BaseIoSession implements BroadcastIoSession
+class DatagramSessionImpl extends BaseIoSession implements DatagramSession
 {
     private final IoService service;
     private final DatagramSessionConfig config = new SessionConfigImpl();
@@ -58,8 +59,8 @@
     private final DatagramChannel ch;
     private final Queue<WriteRequest> writeRequestQueue = new LinkedList<WriteRequest>();
     private final IoHandler handler;
-    private final SocketAddress localAddress;
-    private final SocketAddress remoteAddress;
+    private final InetSocketAddress localAddress;
+    private final InetSocketAddress remoteAddress;
     private SelectionKey key;
     private int readBufferSize;
 
@@ -69,7 +70,7 @@
     DatagramSessionImpl( IoAcceptor service,
                          DatagramService managerDelegate,
                          DatagramChannel ch, IoHandler defaultHandler,
-                         SocketAddress remoteAddress )
+                         InetSocketAddress remoteAddress )
     {
         this.service = service;
         this.managerDelegate = managerDelegate;
@@ -80,7 +81,7 @@
         // We didn't set the localAddress by calling getLocalSocketAddress() to avoid
         // the case that getLocalSocketAddress() returns IPv6 address while
         // serviceAddress represents the same address in IPv4.
-        this.localAddress = service.getLocalAddress();
+        this.localAddress = (InetSocketAddress) service.getLocalAddress();
 
         applySettings();
     }
@@ -96,8 +97,8 @@
         this.managerDelegate = managerDelegate;
         this.ch = ch;
         this.handler = defaultHandler;
-        this.remoteAddress = ch.socket().getRemoteSocketAddress();
-        this.localAddress = ch.socket().getLocalSocketAddress();
+        this.remoteAddress = (InetSocketAddress) ch.socket().getRemoteSocketAddress();
+        this.localAddress = (InetSocketAddress) ch.socket().getLocalSocketAddress();
 
         applySettings();
     }
@@ -125,7 +126,7 @@
         return service;
     }
 
-    public IoSessionConfig getConfig()
+    public DatagramSessionConfig getConfig()
     {
         return config;
     }
@@ -219,14 +220,19 @@
         return TransportType.DATAGRAM;
     }
 
-    public SocketAddress getRemoteAddress()
+    public InetSocketAddress getRemoteAddress()
     {
         return remoteAddress;
     }
 
-    public SocketAddress getLocalAddress()
+    public InetSocketAddress getLocalAddress()
     {
         return localAddress;
+    }
+    
+    public InetSocketAddress getServiceAddress()
+    {
+        return (InetSocketAddress) super.getServiceAddress();
     }
 
     protected void updateTrafficMask()

Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java?view=diff&rev=525060&r1=525059&r2=525060
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java Mon Apr  2 23:51:46 2007
@@ -52,6 +52,10 @@
     public TransportType getTransportType() {
         return TransportType.VM_PIPE;
     }
+    
+    public VmPipeSessionConfig getSessionConfig() {
+        return (VmPipeSessionConfig) super.getSessionConfig();
+    }
 
     protected void doBind() throws IOException
     {

Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java?view=diff&rev=525060&r1=525059&r2=525060
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java Mon Apr  2 23:51:46 2007
@@ -57,6 +57,10 @@
     public TransportType getTransportType() {
         return TransportType.VM_PIPE;
     }
+    
+    public VmPipeSessionConfig getSessionConfig() {
+        return (VmPipeSessionConfig) super.getSessionConfig();
+    }
 
     protected ConnectFuture doConnect( SocketAddress remoteAddress, SocketAddress localAddress )
     {
@@ -86,7 +90,7 @@
             // The following sentences don't throw any exceptions.
             localSession.setAttribute( AbstractIoFilterChain.CONNECT_FUTURE, future );
             getListeners().fireSessionCreated( localSession );
-            VmPipeIdleStatusChecker.getInstance().addSession( localSession);
+            VmPipeIdleStatusChecker.getInstance().addSession( localSession );
         }
         catch( Throwable t )
         {

Added: mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeSession.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeSession.java?view=auto&rev=525060
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeSession.java (added)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeSession.java Mon Apr  2 23:51:46 2007
@@ -0,0 +1,14 @@
+package org.apache.mina.transport.vmpipe;
+
+import org.apache.mina.common.IoSession;
+
+public interface VmPipeSession extends IoSession {
+    VmPipeSessionConfig getConfig();
+    /* FIXME: These methods can return AnonymousSocketAddress.
+     *        We need to create a port number manager like O/S do for port
+     *        numbers.
+    VmPipeAddress getRemoteAddress();
+    VmPipeAddress getLocalAddress();
+    VmPipeAddress getServiceAddress();
+    */
+}

Propchange: mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeSession.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeSession.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/support/VmPipeSessionImpl.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/support/VmPipeSessionImpl.java?view=diff&rev=525060&r1=525059&r2=525060
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/support/VmPipeSessionImpl.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/support/VmPipeSessionImpl.java Mon Apr  2 23:51:46 2007
@@ -29,12 +29,13 @@
 import org.apache.mina.common.IoHandler;
 import org.apache.mina.common.IoService;
 import org.apache.mina.common.IoSession;
-import org.apache.mina.common.IoSessionConfig;
 import org.apache.mina.common.TransportType;
 import org.apache.mina.common.IoFilter.WriteRequest;
 import org.apache.mina.common.support.BaseIoSession;
-import org.apache.mina.common.support.BaseIoSessionConfig;
 import org.apache.mina.common.support.IoServiceListenerSupport;
+import org.apache.mina.transport.vmpipe.DefaultVmPipeSessionConfig;
+import org.apache.mina.transport.vmpipe.VmPipeSession;
+import org.apache.mina.transport.vmpipe.VmPipeSessionConfig;
 
 /**
  * A {@link IoSession} for in-VM transport (VM_PIPE).
@@ -42,11 +43,9 @@
  * @author The Apache Directory Project (mina-dev@directory.apache.org)
  * @version $Rev$, $Date$
  */
-public class VmPipeSessionImpl extends BaseIoSession
+public class VmPipeSessionImpl extends BaseIoSession implements VmPipeSession
 {
-    private static final IoSessionConfig CONFIG = new BaseIoSessionConfig()
-    {
-    };
+    private static final VmPipeSessionConfig CONFIG = new DefaultVmPipeSessionConfig();
 
     private final IoService service;
     private final IoServiceListenerSupport serviceListeners;
@@ -105,7 +104,7 @@
         return serviceListeners;
     }
 
-    public IoSessionConfig getConfig()
+    public VmPipeSessionConfig getConfig()
     {
         return CONFIG;
     }