You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2005/12/28 03:49:53 UTC

svn commit: r359356 - in /directory/trunk/mina-core/src: main/java/org/apache/mina/transport/socket/nio/ main/java/org/apache/mina/transport/socket/nio/support/ test/java/org/apache/mina/transport/socket/nio/

Author: akarasulu
Date: Tue Dec 27 18:49:40 2005
New Revision: 359356

URL: http://svn.apache.org/viewcvs?rev=359356&view=rev
Log:
merging changes from 359345:359346 on trunk of old trunk after freeze

Added:
    directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionManager.java
Modified:
    directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java
    directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java
    directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSession.java
    directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java
    directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java
    directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionManager.java
    directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java
    directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
    directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramFilterChain.java
    directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java
    directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionManager.java
    directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketAcceptorDelegate.java
    directory/trunk/mina-core/src/test/java/org/apache/mina/transport/socket/nio/AbstractBindTest.java

Modified: directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java
URL: http://svn.apache.org/viewcvs/directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java?rev=359356&r1=359355&r2=359356&view=diff
==============================================================================
--- directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java (original)
+++ directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java Tue Dec 27 18:49:40 2005
@@ -28,7 +28,7 @@
  * @author The Apache Directory Project (dev@directory.apache.org)
  * @version $Rev$, $Date$
  */
-public class DatagramAcceptor extends DelegatedIoAcceptor
+public class DatagramAcceptor extends DelegatedIoAcceptor implements DatagramSessionManager
 {
     /**
      * Creates a new instance.
@@ -37,4 +37,54 @@
     {
         init( new DatagramAcceptorDelegate( this ) );
     }
+
+	public int getReceiveBufferSize()
+	{
+		return ( ( DatagramAcceptorDelegate ) delegate ).getReceiveBufferSize();
+	}
+
+	public void setReceiveBufferSize( int receiveBufferSize )
+	{
+		( ( DatagramAcceptorDelegate ) delegate ).setReceiveBufferSize( receiveBufferSize );
+	}
+
+	public boolean getBroadcast()
+	{
+		return ( ( DatagramAcceptorDelegate ) delegate ).getBroadcast();
+	}
+
+	public void setBroadcast( boolean broadcast )
+	{
+		( ( DatagramAcceptorDelegate ) delegate ).setBroadcast( broadcast );
+	}
+
+	public int getSendBufferSize()
+	{
+		return ( ( DatagramAcceptorDelegate ) delegate ).getSendBufferSize();
+	}
+
+	public void setSendBufferSize( int sendBufferSize )
+	{
+		( ( DatagramAcceptorDelegate ) delegate ).setSendBufferSize( sendBufferSize );
+	}
+
+	public int getTrafficClass()
+	{
+		return ( ( DatagramAcceptorDelegate ) delegate ).getTrafficClass();
+	}
+
+	public void setTrafficClass( int trafficClass )
+	{
+		( ( DatagramAcceptorDelegate ) delegate ).setTrafficClass( trafficClass );
+	}
+
+	public boolean getReuseAddress()
+	{
+		return ( ( DatagramAcceptorDelegate ) delegate ).getReuseAddress();
+	}
+
+	public void setReuseAddress( boolean reuseAddress )
+	{
+		( ( DatagramAcceptorDelegate ) delegate ).setReuseAddress( reuseAddress );
+	}
 }

Modified: directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java
URL: http://svn.apache.org/viewcvs/directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java?rev=359356&r1=359355&r2=359356&view=diff
==============================================================================
--- directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java (original)
+++ directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java Tue Dec 27 18:49:40 2005
@@ -28,7 +28,7 @@
  * @author The Apache Directory Project (dev@directory.apache.org)
  * @version $Rev$, $Date$
  */
-public class DatagramConnector extends DelegatedIoConnector
+public class DatagramConnector extends DelegatedIoConnector implements DatagramSessionManager
 {
     /**
      * Creates a new instance.
@@ -37,4 +37,55 @@
     {
         init( new DatagramConnectorDelegate( this ) );
     }
+
+	public int getReceiveBufferSize()
+	{
+		return ( ( DatagramConnectorDelegate ) delegate ).getReceiveBufferSize();
+	}
+
+	public void setReceiveBufferSize( int receiveBufferSize )
+	{
+		( ( DatagramConnectorDelegate ) delegate ).setReceiveBufferSize( receiveBufferSize );
+	}
+
+	public boolean getBroadcast()
+	{
+		return ( ( DatagramConnectorDelegate ) delegate ).getBroadcast();
+	}
+
+	public void setBroadcast( boolean broadcast )
+	{
+		( ( DatagramConnectorDelegate ) delegate ).setBroadcast( broadcast );
+	}
+
+	public int getSendBufferSize()
+	{
+		return ( ( DatagramConnectorDelegate ) delegate ).getSendBufferSize();
+	}
+
+	public void setSendBufferSize( int sendBufferSize )
+	{
+		( ( DatagramConnectorDelegate ) delegate ).setSendBufferSize( sendBufferSize );
+	}
+
+	public int getTrafficClass()
+	{
+		return ( ( DatagramConnectorDelegate ) delegate ).getTrafficClass();
+	}
+
+	public void setTrafficClass( int trafficClass )
+	{
+		( ( DatagramConnectorDelegate ) delegate ).setTrafficClass( trafficClass );
+	}
+
+
+	public boolean getReuseAddress()
+	{
+		return ( ( DatagramConnectorDelegate ) delegate ).getReuseAddress();
+	}
+
+	public void setReuseAddress( boolean reuseAddress )
+	{
+		( ( DatagramConnectorDelegate ) delegate ).setReuseAddress( reuseAddress );
+	}
 }

Modified: directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSession.java
URL: http://svn.apache.org/viewcvs/directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSession.java?rev=359356&r1=359355&r2=359356&view=diff
==============================================================================
--- directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSession.java (original)
+++ directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSession.java Tue Dec 27 18:49:40 2005
@@ -30,8 +30,44 @@
  */
 public interface DatagramSession extends IoSession
 {
-    boolean getReuseAddress() throws SocketException;
-    void setReuseAddress( boolean on ) throws SocketException;
-    int getTrafficClass() throws SocketException;
-    void setTrafficClass( int tc ) throws SocketException;
+	/**
+	 * @see DatagramSocket#getReceiveBufferSize()
+	 */
+	int getReceiveBufferSize() throws SocketException;
+	/**
+	 * @see DatagramSocket#setReceiveBufferSize(int)
+	 */
+	void setReceiveBufferSize( int receiveBufferSize ) throws SocketException;
+	/**
+	 * @see DatagramSocket#getReuseAddress()
+	 */
+	boolean getReuseAddress() throws SocketException;
+	/**
+	 * @see DatagramSocket#setReuseAddress(boolean)
+	 */
+	void setReuseAddress( boolean reuseAddress ) throws SocketException;
+	/**
+	 * @see DatagramSocket#getBroadcast()
+	 */
+	boolean getBroadcast() throws SocketException;
+	/**
+	 * @see DatagramSocket#setBroadcast(boolean)
+	 */
+	void setBroadcast( boolean broadcast ) throws SocketException;
+	/**
+	 * @see DatagramSocket#getSendBufferSize()
+	 */
+	int getSendBufferSize() throws SocketException;
+	/**
+	 * @see DatagramSocket#setSendBufferSize(int)
+	 */
+	void setSendBufferSize( int sendBufferSize ) throws SocketException;
+	/**
+	 * @see DatagramSocket#getTrafficClass()
+	 */
+	int getTrafficClass() throws SocketException;
+	/**
+	 * @see DatagramSocket#setTrafficClass(int)
+	 */
+	void setTrafficClass( int trafficClass ) throws SocketException;
 }

Added: directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionManager.java
URL: http://svn.apache.org/viewcvs/directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionManager.java?rev=359356&view=auto
==============================================================================
--- directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionManager.java (added)
+++ directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionManager.java Tue Dec 27 18:49:40 2005
@@ -0,0 +1,75 @@
+/*
+ *   @(#) $Id$
+ *
+ *   Copyright 2004 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+package org.apache.mina.transport.socket.nio;
+
+import java.net.DatagramSocket;
+
+import org.apache.mina.common.IoSessionManager;
+
+/**
+ * An {@link IoSessionManager} which provides some common properties related with
+ * NIO UDP/IP sockets.
+ *
+ * @author The Apache Directory Project (dev@directory.apache.org)
+ * @version $Rev$, $Date$
+ *
+ */
+public interface DatagramSessionManager extends IoSessionManager
+{
+	/**
+	 * @see DatagramSocket#getBroadcast()
+	 */
+	boolean getBroadcast();
+	/**
+	 * @see DatagramSocket#setBroadcast(boolean)
+	 */
+	void setBroadcast( boolean broadcast );
+	/**
+	 * @see DatagramSocket#getReuseAddress()
+	 */
+	boolean getReuseAddress();
+	/**
+	 * @see DatagramSocket#setReuseAddress(boolean)
+	 */
+	void setReuseAddress( boolean reuseAddress );
+	/**
+	 * @see DatagramSocket#getReceiveBufferSize()
+	 */
+	int getReceiveBufferSize();
+	/**
+	 * @see DatagramSocket#setReceiveBufferSize(int)
+	 */
+	void setReceiveBufferSize( int receiveBufferSize );
+	/**
+	 * @see DatagramSocket#getSendBufferSize()
+	 */
+	int getSendBufferSize();
+	/**
+	 * @see DatagramSocket#setSendBufferSize(int)
+	 */
+	void setSendBufferSize( int sendBufferSize );
+	/**
+	 * @see DatagramSocket#getTrafficClass()
+	 */
+	int getTrafficClass();
+	/**
+	 * @see DatagramSocket#setTrafficClass(int)
+	 */
+	void setTrafficClass( int trafficClass );
+}

Modified: directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java
URL: http://svn.apache.org/viewcvs/directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java?rev=359356&r1=359355&r2=359356&view=diff
==============================================================================
--- directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java (original)
+++ directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java Tue Dec 27 18:49:40 2005
@@ -70,14 +70,4 @@
     {
         ( ( SocketAcceptorDelegate ) delegate ).setBacklog( backlog );
     }
-
-    public int getProcessors()
-    {
-        return ( ( SocketAcceptorDelegate ) delegate ).getProcessors();
-    }
-
-    public void setProcessors( int nProcessor )
-    {
-        ( ( SocketAcceptorDelegate ) delegate ).setProcessors( nProcessor );
-    }
 }

Modified: directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java
URL: http://svn.apache.org/viewcvs/directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java?rev=359356&r1=359355&r2=359356&view=diff
==============================================================================
--- directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java (original)
+++ directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java Tue Dec 27 18:49:40 2005
@@ -37,15 +37,4 @@
     {
         init( new SocketConnectorDelegate( this ) );
     }
-
-
-    public int getProcessors()
-    {
-        return ( ( SocketConnectorDelegate ) delegate ).getProcessors();
-    }
-
-    public void setProcessors( int nProcessor )
-    {
-        ( ( SocketConnectorDelegate ) delegate ).setProcessors( nProcessor );
-    }
 }

Modified: directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionManager.java
URL: http://svn.apache.org/viewcvs/directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionManager.java?rev=359356&r1=359355&r2=359356&view=diff
==============================================================================
--- directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionManager.java (original)
+++ directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionManager.java Tue Dec 27 18:49:40 2005
@@ -21,24 +21,13 @@
 import org.apache.mina.common.IoSessionManager;
 
 /**
- * An {@link IoSessionManager} which provides some properties related with
- * NIO sockets.
+ * An {@link IoSessionManager} which provides some common properties related with
+ * NIO TCP/IP sockets.
  *
  * @author The Apache Directory Project (dev@directory.apache.org)
  * @version $Rev$, $Date$
  *
  */
-public interface SocketSessionManager
+public interface SocketSessionManager extends IoSessionManager
 {
-    /**
-     * Returns the number of worker threads assigned to perform socket I/O.
-     */
-    int getProcessors();
-    
-    /**
-     * Sets the number of worker threads assigned to perform socket I/O.
-     * Decreasing this number won't stop threads immediately.  It will
-     * not stop until all sessions assigned to it are closed.
-     */
-    void setProcessors( int nProcessor );
 }

Modified: directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java
URL: http://svn.apache.org/viewcvs/directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java?rev=359356&r1=359355&r2=359356&view=diff
==============================================================================
--- directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java (original)
+++ directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java Tue Dec 27 18:49:40 2005
@@ -53,6 +53,11 @@
     private final IoAcceptor wrapper;
     private final int id = nextId ++ ;
     private Selector selector;
+    private boolean broadcast;
+    private boolean reuseAddress;
+    private int receiveBufferSize = -1;
+    private int sendBufferSize = -1;
+    private int trafficClass = -1;
     private final Map channels = new HashMap();
     private final Queue registerQueue = new Queue();
     private final Queue cancelQueue = new Queue();
@@ -209,8 +214,59 @@
         
         return s;
     }
+    
+    public boolean getBroadcast()
+    {
+    	return broadcast;
+    }
+    
+    public void setBroadcast( boolean broadcast )
+    {
+    	this.broadcast = broadcast;
+    }
+    
+    public boolean getReuseAddress()
+    {
+    	return reuseAddress;
+    }
+    
+    public void setReuseAddress( boolean reuseAddress )
+    {
+    	this.reuseAddress = reuseAddress;
+    }
+
 
-    private synchronized void startupWorker() throws IOException
+	public int getReceiveBufferSize()
+	{
+		return receiveBufferSize;
+	}
+
+	public void setReceiveBufferSize( int receiveBufferSize )
+	{
+		this.receiveBufferSize = receiveBufferSize;
+	}
+
+	public int getSendBufferSize()
+	{
+		return sendBufferSize;
+	}
+
+	public void setSendBufferSize( int sendBufferSize )
+	{
+		this.sendBufferSize = sendBufferSize;
+	}
+
+	public int getTrafficClass()
+	{
+		return trafficClass;
+	}
+
+	public void setTrafficClass( int trafficClass )
+	{
+		this.trafficClass = trafficClass;
+	}
+
+	private synchronized void startupWorker() throws IOException
     {
         if( worker == null )
         {
@@ -495,6 +551,20 @@
             try
             {
                 ch = DatagramChannel.open();
+                ch.socket().setReuseAddress( reuseAddress );
+                ch.socket().setBroadcast( broadcast );
+                if( receiveBufferSize > 0 )
+                {
+                	ch.socket().setReceiveBufferSize( receiveBufferSize );
+                }
+                if( sendBufferSize > 0 )
+                {
+                	ch.socket().setSendBufferSize( sendBufferSize );
+                }
+                if( trafficClass > 0 )
+                {
+                	ch.socket().setTrafficClass( trafficClass );
+                }
                 ch.configureBlocking( false );
                 ch.socket().bind( req.address );
                 ch.register( selector, SelectionKey.OP_READ, req );
@@ -516,6 +586,7 @@
                 {
                     try
                     {
+                    	ch.disconnect();
                         ch.close();
                     }
                     catch( Throwable e )
@@ -559,6 +630,7 @@
                     SelectionKey key = ch.keyFor( selector );
                     key.cancel();
                     selector.wakeup(); // wake up again to trigger thread death
+                	ch.disconnect();
                     ch.close();
                 }
             }

Modified: directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
URL: http://svn.apache.org/viewcvs/directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java?rev=359356&r1=359355&r2=359356&view=diff
==============================================================================
--- directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java (original)
+++ directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java Tue Dec 27 18:49:40 2005
@@ -50,6 +50,11 @@
     private final IoConnector wrapper;
     private final int id = nextId ++ ;
     private Selector selector;
+    private boolean broadcast;
+    private boolean reuseAddress;
+    private int receiveBufferSize = -1;
+    private int sendBufferSize = -1;
+    private int trafficClass = -1;
     private final Queue registerQueue = new Queue();
     private final Queue cancelQueue = new Queue();
     private final Queue flushingSessions = new Queue();
@@ -97,7 +102,20 @@
         try
         {
             ch = DatagramChannel.open();
-            ch.socket().setReuseAddress( true );
+            ch.socket().setReuseAddress( reuseAddress );
+            ch.socket().setBroadcast( broadcast );
+            if( receiveBufferSize > 0 )
+            {
+            	ch.socket().setReceiveBufferSize( receiveBufferSize );
+            }
+            if( sendBufferSize > 0 )
+            {
+            	ch.socket().setSendBufferSize( sendBufferSize );
+            }
+            if( trafficClass > 0 )
+            {
+            	ch.socket().setTrafficClass( trafficClass );
+            }
             if( localAddress != null )
             {
                 ch.socket().bind( localAddress );
@@ -116,6 +134,7 @@
             {
                 try
                 {
+                	ch.disconnect();
                     ch.close();
                 }
                 catch( IOException e )
@@ -136,6 +155,7 @@
             {
                 try
                 {
+                	ch.disconnect();
                     ch.close();
                 }
                 catch( IOException e2 )
@@ -156,7 +176,57 @@
         return request;
     }
     
-    private synchronized void startupWorker() throws IOException
+    public boolean getBroadcast()
+    {
+    	return broadcast;
+    }
+    
+    public void setBroadcast( boolean broadcast )
+    {
+    	this.broadcast = broadcast;
+    }
+    
+    public boolean getReuseAddress()
+    {
+    	return reuseAddress;
+    }
+    
+    public void setReuseAddress( boolean reuseAddress )
+    {
+    	this.reuseAddress = reuseAddress;
+    }
+
+	public int getReceiveBufferSize()
+	{
+		return receiveBufferSize;
+	}
+
+	public void setReceiveBufferSize( int receiveBufferSize )
+	{
+		this.receiveBufferSize = receiveBufferSize;
+	}
+
+	public int getSendBufferSize()
+	{
+		return sendBufferSize;
+	}
+
+	public void setSendBufferSize( int sendBufferSize )
+	{
+		this.sendBufferSize = sendBufferSize;
+	}
+
+	public int getTrafficClass()
+	{
+		return trafficClass;
+	}
+
+	public void setTrafficClass( int trafficClass )
+	{
+		this.trafficClass = trafficClass;
+	}
+
+	private synchronized void startupWorker() throws IOException
     {
         if( worker == null )
         {
@@ -540,6 +610,7 @@
                 {
                     try
                     {
+                    	req.channel.disconnect();
                         req.channel.close();
                     }
                     catch (IOException e)
@@ -572,6 +643,7 @@
                 DatagramChannel ch = ( DatagramChannel ) key.channel();
                 try
                 {
+                	ch.disconnect();
                     ch.close();
                 }
                 catch( IOException e )

Modified: directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramFilterChain.java
URL: http://svn.apache.org/viewcvs/directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramFilterChain.java?rev=359356&r1=359355&r2=359356&view=diff
==============================================================================
--- directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramFilterChain.java (original)
+++ directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramFilterChain.java Tue Dec 27 18:49:40 2005
@@ -1,3 +1,21 @@
+/*
+ *   @(#) $Id: DatagramConnectorDelegate.java 351888 2005-12-03 04:39:53Z trustin $
+ *
+ *   Copyright 2004 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
 package org.apache.mina.transport.socket.nio.support;
 
 import org.apache.mina.common.CloseFuture;

Modified: directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java
URL: http://svn.apache.org/viewcvs/directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java?rev=359356&r1=359355&r2=359356&view=diff
==============================================================================
--- directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java (original)
+++ directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java Tue Dec 27 18:49:40 2005
@@ -171,4 +171,33 @@
     {
         managerDelegate.updateTrafficMask( this );
     }
+
+	public int getReceiveBufferSize() throws SocketException {
+		return ch.socket().getReceiveBufferSize();
+	}
+
+	public void setReceiveBufferSize( int receiveBufferSize ) throws SocketException
+	{
+		ch.socket().setReceiveBufferSize( receiveBufferSize );
+	}
+
+	public boolean getBroadcast() throws SocketException
+	{
+		return ch.socket().getBroadcast();
+	}
+
+	public void setBroadcast( boolean broadcast ) throws SocketException
+	{
+		ch.socket().setBroadcast( broadcast );
+	}
+
+	public int getSendBufferSize() throws SocketException
+	{
+		return ch.socket().getSendBufferSize();
+	}
+
+	public void setSendBufferSize( int sendBufferSize ) throws SocketException
+	{
+		ch.socket().setSendBufferSize( sendBufferSize );
+	}
 }

Modified: directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionManager.java
URL: http://svn.apache.org/viewcvs/directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionManager.java?rev=359356&r1=359355&r2=359356&view=diff
==============================================================================
--- directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionManager.java (original)
+++ directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionManager.java Tue Dec 27 18:49:40 2005
@@ -18,7 +18,6 @@
  */
 package org.apache.mina.transport.socket.nio.support;
 
-import org.apache.mina.common.IoSessionManager;
 
 /**
  * A base interface for {@link DatagramAcceptorDelegate} and {@link DatagramConnectorDelegate}.
@@ -26,7 +25,7 @@
  * @author The Apache Directory Project (dev@directory.apache.org)
  * @version $Rev$, $Date$
  */
-interface DatagramSessionManager extends IoSessionManager
+interface DatagramSessionManager extends org.apache.mina.transport.socket.nio.DatagramSessionManager
 {
     /**
      * Requests this processor to flush the write buffer of the specified

Modified: directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketAcceptorDelegate.java
URL: http://svn.apache.org/viewcvs/directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketAcceptorDelegate.java?rev=359356&r1=359355&r2=359356&view=diff
==============================================================================
--- directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketAcceptorDelegate.java (original)
+++ directory/trunk/mina-core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketAcceptorDelegate.java Tue Dec 27 18:49:40 2005
@@ -203,16 +203,6 @@
         }
     }
     
-    public int getProcessors()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    public void setProcessors( int nProcessor )
-    {
-        throw new UnsupportedOperationException();
-    }
-
     private class Worker extends Thread
     {
         public Worker()

Modified: directory/trunk/mina-core/src/test/java/org/apache/mina/transport/socket/nio/AbstractBindTest.java
URL: http://svn.apache.org/viewcvs/directory/trunk/mina-core/src/test/java/org/apache/mina/transport/socket/nio/AbstractBindTest.java?rev=359356&r1=359355&r2=359356&view=diff
==============================================================================
--- directory/trunk/mina-core/src/test/java/org/apache/mina/transport/socket/nio/AbstractBindTest.java (original)
+++ directory/trunk/mina-core/src/test/java/org/apache/mina/transport/socket/nio/AbstractBindTest.java Tue Dec 27 18:49:40 2005
@@ -50,9 +50,11 @@
         this.acceptor = acceptor;
     }
     
-    public void setUp() throws IOException
-    {
-        // Find an availble test port and bind to it.
+	private void bind( boolean reuseAddress ) throws IOException
+	{
+		setReuseAddress( reuseAddress );
+
+    	// Find an availble test port and bind to it.
         boolean socketBound = false;
 
         // Let's start from port #1 to detect possible resource leak
@@ -80,7 +82,19 @@
         }
 
         //System.out.println( "Using port " + port + " for testing." );
-    }
+	}
+
+	private void setReuseAddress( boolean reuseAddress )
+	{
+		if( acceptor instanceof DatagramAcceptor )
+		{
+			( ( DatagramAcceptor ) acceptor ).setReuseAddress( reuseAddress );
+		}
+		else if( acceptor instanceof SocketAcceptor )
+		{
+			( ( SocketAcceptor ) acceptor ).setReuseAddress( reuseAddress );
+		}
+	}
     
     public void tearDown()
     {
@@ -94,8 +108,10 @@
         }
     }
     
-    public void testDuplicateBind()
+    public void testDuplicateBind() throws IOException
     {
+    	bind( false );
+    	
         try
         {
             acceptor.bind( new InetSocketAddress( port ), new EchoProtocolHandler() );
@@ -106,8 +122,10 @@
         }
     }
 
-    public void testDuplicateUnbind()
+    public void testDuplicateUnbind() throws IOException
     {
+    	bind( false );
+    	
         // this should succeed
         acceptor.unbind( new InetSocketAddress( port ) );
         
@@ -124,6 +142,8 @@
     
     public void testManyTimes() throws IOException
     {
+    	bind( true );
+    	
         InetSocketAddress addr = new InetSocketAddress( port );
         EchoProtocolHandler handler = new EchoProtocolHandler();
         for( int i = 0; i < 1024; i++ ) 
@@ -135,7 +155,7 @@
     
     public void _testRegressively() throws IOException
     {
-        tearDown();
+    	setReuseAddress( true );
 
         InetSocketAddress addr = new InetSocketAddress( port );
         EchoProtocolHandler handler = new EchoProtocolHandler();
@@ -149,7 +169,7 @@
                 System.out.println( i + " (" + new Date() + ")" );
             }
         }
-        setUp();
+        bind( false );
     }