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 2006/01/26 06:26:05 UTC

svn commit: r372449 [1/2] - in /directory/sandbox/trustin/dirmina-158/core/src: main/java/org/apache/mina/common/ main/java/org/apache/mina/common/support/ main/java/org/apache/mina/registry/ main/java/org/apache/mina/transport/socket/nio/ main/java/or...

Author: trustin
Date: Wed Jan 25 21:24:58 2006
New Revision: 372449

URL: http://svn.apache.org/viewcvs?rev=372449&view=rev
Log:
* Added IoSessionConfig and its implementations
* Added IoServiceConfig and its implementations
* Added IoAcceptorConfig and its implementations
* Added IoConnectorConfig and its implementations
* Replaced all transport-type specific properties with the Config classes above

Added:
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoAcceptorConfig.java   (with props)
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoConnectorConfig.java   (with props)
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoServiceConfig.java   (with props)
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoSessionConfig.java   (with props)
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/RuntimeIOException.java   (with props)
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoAcceptorConfig.java   (with props)
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoConnectorConfig.java   (with props)
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoServiceConfig.java   (with props)
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptorConfig.java   (with props)
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnectorConfig.java   (with props)
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionConfig.java   (with props)
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptorConfig.java   (with props)
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnectorConfig.java   (with props)
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionConfig.java   (with props)
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionConfigImpl.java   (with props)
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketSessionConfigImpl.java   (with props)
Removed:
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/registry/
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramService.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSession.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSession.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeSession.java
Modified:
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoAcceptor.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoConnector.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoService.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoSession.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoAcceptor.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoConnector.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoService.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/DelegatedIoAcceptor.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/DelegatedIoConnector.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramService.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketAcceptorDelegate.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketConnectorDelegate.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketIoProcessor.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/support/SocketSessionImpl.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/vmpipe/support/VmPipe.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/vmpipe/support/VmPipeSessionImpl.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/util/IdentityHashSet.java
    directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/util/SessionUtil.java
    directory/sandbox/trustin/dirmina-158/core/src/test/java/org/apache/mina/common/FutureTest.java
    directory/sandbox/trustin/dirmina-158/core/src/test/java/org/apache/mina/common/IoFilterChainTest.java
    directory/sandbox/trustin/dirmina-158/core/src/test/java/org/apache/mina/filter/StreamWriteFilterTest.java
    directory/sandbox/trustin/dirmina-158/core/src/test/java/org/apache/mina/filter/ThreadPoolFilterRegressionTest.java
    directory/sandbox/trustin/dirmina-158/core/src/test/java/org/apache/mina/filter/codec/CumulativeProtocolDecoderTest.java
    directory/sandbox/trustin/dirmina-158/core/src/test/java/org/apache/mina/filter/codec/textline/TextLineDecoderTest.java
    directory/sandbox/trustin/dirmina-158/core/src/test/java/org/apache/mina/filter/codec/textline/TextLineEncoderTest.java
    directory/sandbox/trustin/dirmina-158/core/src/test/java/org/apache/mina/handler/chain/ChainedIoHandlerTest.java
    directory/sandbox/trustin/dirmina-158/core/src/test/java/org/apache/mina/transport/AbstractBindTest.java
    directory/sandbox/trustin/dirmina-158/core/src/test/java/org/apache/mina/transport/AbstractTrafficControlTest.java
    directory/sandbox/trustin/dirmina-158/core/src/test/java/org/apache/mina/transport/socket/nio/DatagramTrafficControlTest.java
    directory/sandbox/trustin/dirmina-158/core/src/test/java/org/apache/mina/transport/socket/nio/SocketTrafficControlTest.java
    directory/sandbox/trustin/dirmina-158/core/src/test/java/org/apache/mina/transport/vmpipe/VmPipeTrafficControlTest.java

Modified: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoAcceptor.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoAcceptor.java?rev=372449&r1=372448&r2=372449&view=diff
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoAcceptor.java (original)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoAcceptor.java Wed Jan 25 21:24:58 2006
@@ -20,7 +20,6 @@
 
 import java.io.IOException;
 import java.net.SocketAddress;
-import java.util.Collection;
 
 /**
  * Accepts incoming connection, communicates with clients, and fires events to
@@ -55,12 +54,10 @@
      * Binds to the specified <code>address</code> and handles incoming
      * connections with the specified <code>handler</code>.
      *
-     * @param filterChainBuilder
-     *            an {@link IoFilterChainBuilder} that will modify the
-     *            {@link IoFilterChain} of a newly created {@link IoSession}
+     * @param config the configuration
      * @throws IOException if failed to bind
      */
-    void bind( SocketAddress address, IoHandler handler, IoFilterChainBuilder filterChainBuilder ) throws IOException;
+    void bind( SocketAddress address, IoHandler handler, IoAcceptorConfig config ) throws IOException;
 
     /**
      * Unbinds from the specified <code>address</code> and disconnects all clients
@@ -69,20 +66,6 @@
     void unbind( SocketAddress address );
     
     /**
-     * Returns all sessions currently connected to the specified local address.
-     * 
-     * @param address the local address to return all sessions for. Must have
-     *        been bound previously.
-     * @return the sessions.
-     * @throws IllegalArgumentException if the specified <tt>address</tt> has 
-     *         not been bound.
-     * @throws UnsupportedOperationException if this operation isn't supported
-     *         for the particular transport type implemented by this 
-     *         {@link IoAcceptor}.
-     */
-    Collection getManagedSessions( SocketAddress address );
-    
-    /**
      * (Optional) Returns an {@link IoSession} that is bound to the specified
      * <tt>localAddress</tt> and <tt>remoteAddress</tt> which reuses
      * the <tt>localAddress</tt> that is already bound by {@link IoAcceptor}
@@ -97,16 +80,4 @@
      *                                  not bound yet. (see {@link #bind(SocketAddress, IoHandler)})
      */
     IoSession newSession( SocketAddress remoteAddress, SocketAddress localAddress );
-    
-    /**
-     * Returns <tt>true</tt> if and only if all clients are disconnected
-     * when this acceptor unbinds the related local address.
-     */
-    boolean isDisconnectClientsOnUnbind();
-    
-    /**
-     * Sets whether all clients are disconnected when this acceptor unbinds the
-     * related local address.  The default value is <tt>true</tt>.
-     */
-    void setDisconnectClientsOnUnbind( boolean disconnectClientsOnUnbind );
 }

Added: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoAcceptorConfig.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoAcceptorConfig.java?rev=372449&view=auto
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoAcceptorConfig.java (added)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoAcceptorConfig.java Wed Jan 25 21:24:58 2006
@@ -0,0 +1,40 @@
+/*
+ *   @(#) $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.common;
+
+/**
+ * A configuration which is used to configure {@link IoAcceptor}.
+ * 
+ * @author The Apache Directory Project (dev@directory.apache.org)
+ * @version $Rev$, $Date$
+ */
+public interface IoAcceptorConfig extends IoServiceConfig
+{
+    /**
+     * Returns <tt>true</tt> if and only if all clients are disconnected
+     * when this acceptor unbinds the related local address.
+     */
+    boolean isDisconnectOnUnbind();
+    
+    /**
+     * Sets whether all clients are disconnected when this acceptor unbinds the
+     * related local address.  The default value is <tt>true</tt>.
+     */
+    void setDisconnectOnUnbind( boolean disconnectOnUnbind );
+}

Propchange: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoAcceptorConfig.java
------------------------------------------------------------------------------
    svn:keywords = HeadURL Id LastChangedBy LastChangedDate LastChangedRevision

Modified: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoConnector.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoConnector.java?rev=372449&r1=372448&r2=372449&view=diff
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoConnector.java (original)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoConnector.java Wed Jan 25 21:24:58 2006
@@ -55,13 +55,11 @@
      * successfully, events are fired to the specified
      * <code>handler</code>.
      * 
-     * @param filterChainBuilder
-     *            an {@link IoFilterChainBuilder} that will modify the
-     *            {@link IoFilterChain} of a newly created {@link IoSession}
+     * @param config the configuration
      * @return {@link ConnectFuture} that will tell the result of the connection attempt
      */
     ConnectFuture connect( SocketAddress address, IoHandler handler,
-                           IoFilterChainBuilder filterChainBuilder );
+                           IoConnectorConfig config );
 
     /**
      * Connects to the specified <code>address</code>.  If communication starts
@@ -79,26 +77,9 @@
      * successfully, events are fired to the specified
      * <code>handler</code>.
      * 
-     * @param filterChainBuilder
-     *            an {@link IoFilterChainBuilder} that will modify the
-     *            {@link IoFilterChain} of a newly created {@link IoSession}
+     * @param config the configuration
      * @return {@link ConnectFuture} that will tell the result of the connection attempt
      */
     ConnectFuture connect( SocketAddress address, SocketAddress localAddress,
-                           IoHandler handler, IoFilterChainBuilder filterChainBuilder );
-    
-    /**
-     * Returns the connect timeout in seconds.
-     */
-    int getConnectTimeout();
-
-    /**
-     * Returns the connect timeout in milliseconds.
-     */
-    long getConnectTimeoutMillis();
-
-    /**
-     * Sets the connect timeout in seconds.
-     */
-    void setConnectTimeout( int connectTimeout );
+                           IoHandler handler, IoConnectorConfig config );
 }

Added: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoConnectorConfig.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoConnectorConfig.java?rev=372449&view=auto
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoConnectorConfig.java (added)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoConnectorConfig.java Wed Jan 25 21:24:58 2006
@@ -0,0 +1,43 @@
+/*
+ *   @(#) $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.common;
+
+/**
+ * A configuration which is used to configure {@link IoConnector}.
+ * 
+ * @author The Apache Directory Project (dev@directory.apache.org)
+ * @version $Rev$, $Date$
+ */
+public interface IoConnectorConfig extends IoServiceConfig
+{
+    /**
+     * Returns the connect timeout in seconds.
+     */
+    int getConnectTimeout();
+
+    /**
+     * Returns the connect timeout in milliseconds.
+     */
+    long getConnectTimeoutMillis();
+
+    /**
+     * Sets the connect timeout in seconds.
+     */
+    void setConnectTimeout( int connectTimeout );
+}

Propchange: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoConnectorConfig.java
------------------------------------------------------------------------------
    svn:keywords = HeadURL Id LastChangedBy LastChangedDate LastChangedRevision

Modified: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoService.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoService.java?rev=372449&r1=372448&r2=372449&view=diff
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoService.java (original)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoService.java Wed Jan 25 21:24:58 2006
@@ -18,6 +18,9 @@
  */
 package org.apache.mina.common;
 
+import java.net.SocketAddress;
+import java.util.Set;
+
 
 /**
  * Base interface for all {@link IoAcceptor}s and {@link IoConnector}s
@@ -26,34 +29,26 @@
  * @author The Apache Directory Project (dev@directory.apache.org)
  * @version $Rev$, $Date$
  */
-public interface IoService {
-    
-    /**
-     * Returns the {@link IoFilterChainBuilder} which will modify the
-     * {@link IoFilterChain} of all {@link IoSession}s which is managed
-     * by this manager.
-     * The default value is an empty {@link DefaultIoFilterChainBuilder}.
-     */
-    IoFilterChainBuilder getFilterChainBuilder();
-    
+public interface IoService
+{
     /**
-     * Sets the {@link IoFilterChainBuilder} which will modify the
-     * {@link IoFilterChain} of all {@link IoSession}s which is managed
-     * by this manager.
-     * If you specify <tt>null</tt> this property will be set to
-     * an empty {@link DefaultIoFilterChainBuilder}.
+     * Returns all sessions with the specified remote or local address,
+     * which are currently managed by this service.
+     * {@link IoAcceptor} will assume the specified <tt>address</tt> is a local
+     * address, and {@link IoConnector} will assume it's a remote address.
+     * 
+     * @param address the address to return all sessions for.
+     * @return the sessions. An empty collection if there's no session.
+     * @throws IllegalArgumentException if the specified <tt>address</tt> has 
+     *         not been bound.
+     * @throws UnsupportedOperationException if this operation isn't supported
+     *         for the particular transport type implemented by this {@link IoService}.
      */
-    void setFilterChainBuilder( IoFilterChainBuilder builder );
-    
+    Set getManagedSessions( SocketAddress address );
+
     /**
-     * A shortcut for <tt>( ( DefaultIoFilterChainBuilder ) </tt>{@link #getFilterChainBuilder()}<tt> )</tt>.
-     * Please note that the returned object is not a <b>real</b> {@link IoFilterChain}
-     * but a {@link DefaultIoFilterChainBuilder}.  Modifying the returned builder
-     * won't affect the existing {@link IoSession}s at all, because
-     * {@link IoFilterChainBuilder}s affect only newly created {@link IoSession}s.
-     *
-     * @throws IllegalStateException if the current {@link IoFilterChainBuilder} is
-     *                               not a {@link DefaultIoFilterChainBuilder}
+     * Returns the default configuration which is used when you didn't specify
+     * any configuration.
      */
-    DefaultIoFilterChainBuilder getFilterChain();
+    IoServiceConfig getDefaultConfig();
 }

Added: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoServiceConfig.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoServiceConfig.java?rev=372449&view=auto
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoServiceConfig.java (added)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoServiceConfig.java Wed Jan 25 21:24:58 2006
@@ -0,0 +1,62 @@
+/*
+ *   @(#) $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.common;
+
+/**
+ * A configuration which is used to configure {@link IoService}.
+ * 
+ * @author The Apache Directory Project (dev@directory.apache.org)
+ * @version $Rev$, $Date$
+ */
+public interface IoServiceConfig
+{
+    /**
+     * Resturns the default configuration of the new {@link IoSession}s.
+     */
+    IoSessionConfig getSessionConfig();
+    
+    /**
+     * Returns the {@link IoFilterChainBuilder} which will modify the
+     * {@link IoFilterChain} of all {@link IoSession}s which is managed
+     * by this manager.
+     * The default value is an empty {@link DefaultIoFilterChainBuilder}.
+     */
+    IoFilterChainBuilder getFilterChainBuilder();
+    
+    /**
+     * Sets the {@link IoFilterChainBuilder} which will modify the
+     * {@link IoFilterChain} of all {@link IoSession}s which is managed
+     * by this manager.
+     * If you specify <tt>null</tt> this property will be set to
+     * an empty {@link DefaultIoFilterChainBuilder}.
+     */
+    void setFilterChainBuilder( IoFilterChainBuilder builder );
+    
+    /**
+     * A shortcut for <tt>( ( DefaultIoFilterChainBuilder ) </tt>{@link #getFilterChainBuilder()}<tt> )</tt>.
+     * Please note that the returned object is not a <b>real</b> {@link IoFilterChain}
+     * but a {@link DefaultIoFilterChainBuilder}.  Modifying the returned builder
+     * won't affect the existing {@link IoSession}s at all, because
+     * {@link IoFilterChainBuilder}s affect only newly created {@link IoSession}s.
+     *
+     * @throws IllegalStateException if the current {@link IoFilterChainBuilder} is
+     *                               not a {@link DefaultIoFilterChainBuilder}
+     */
+    DefaultIoFilterChainBuilder getFilterChain();
+}

Propchange: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoServiceConfig.java
------------------------------------------------------------------------------
    svn:keywords = HeadURL Id LastChangedBy LastChangedDate LastChangedRevision

Modified: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoSession.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoSession.java?rev=372449&r1=372448&r2=372449&view=diff
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoSession.java (original)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoSession.java Wed Jan 25 21:24:58 2006
@@ -60,6 +60,11 @@
     IoHandler getHandler();
 
     /**
+     * Returns the configuration of this session.
+     */
+    IoSessionConfig getConfig();
+    
+    /**
      * Returns the filter chain that only affects this session.
      */
     IoFilterChain getFilterChain();

Added: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoSessionConfig.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoSessionConfig.java?rev=372449&view=auto
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoSessionConfig.java (added)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoSessionConfig.java Wed Jan 25 21:24:58 2006
@@ -0,0 +1,29 @@
+/*
+ *   @(#) $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.common;
+
+/**
+ * The configuration of {@link IoSession}.
+ * 
+ * @author The Apache Directory Project (dev@directory.apache.org)
+ * @version $Rev$, $Date$
+ */
+public interface IoSessionConfig
+{
+}

Propchange: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/IoSessionConfig.java
------------------------------------------------------------------------------
    svn:keywords = HeadURL Id LastChangedBy LastChangedDate LastChangedRevision

Added: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/RuntimeIOException.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/RuntimeIOException.java?rev=372449&view=auto
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/RuntimeIOException.java (added)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/RuntimeIOException.java Wed Jan 25 21:24:58 2006
@@ -0,0 +1,50 @@
+/*
+ *   @(#) $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.common;
+
+/**
+ * A unchecked version of {@link java.io.IOException}.
+ *
+ * @author The Apache Directory Project (dev@directory.apache.org)
+ * @version $Rev$, $Date$
+ */
+public class RuntimeIOException extends RuntimeException
+{
+    private static final long serialVersionUID = 9029092241311939548L;
+
+    public RuntimeIOException()
+    {
+        super();
+    }
+
+    public RuntimeIOException( String message )
+    {
+        super( message );
+    }
+
+    public RuntimeIOException( String message, Throwable cause )
+    {
+        super( message, cause );
+    }
+
+    public RuntimeIOException( Throwable cause )
+    {
+        super( cause );
+    }
+}

Propchange: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/RuntimeIOException.java
------------------------------------------------------------------------------
    svn:keywords = HeadURL Id LastChangedBy LastChangedDate LastChangedRevision

Modified: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoAcceptor.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoAcceptor.java?rev=372449&r1=372448&r2=372449&view=diff
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoAcceptor.java (original)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoAcceptor.java Wed Jan 25 21:24:58 2006
@@ -20,10 +20,9 @@
 
 import java.io.IOException;
 import java.net.SocketAddress;
-import java.util.Collection;
 
 import org.apache.mina.common.IoAcceptor;
-import org.apache.mina.common.IoFilterChainBuilder;
+import org.apache.mina.common.IoAcceptorConfig;
 import org.apache.mina.common.IoHandler;
 import org.apache.mina.common.IoSession;
 
@@ -35,30 +34,13 @@
  */
 public abstract class BaseIoAcceptor extends BaseIoService implements IoAcceptor
 {
-    private boolean disconnectClientsOnUnbind = true;
-    
     protected BaseIoAcceptor()
     {
     }
     
     public void bind( SocketAddress address, IoHandler handler ) throws IOException
     {
-        this.bind( address, handler, IoFilterChainBuilder.NOOP );
-    }
-
-    public Collection getManagedSessions( SocketAddress address )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean isDisconnectClientsOnUnbind()
-    {
-        return disconnectClientsOnUnbind;
-    }
-
-    public void setDisconnectClientsOnUnbind( boolean disconnectClientsOnUnbind )
-    {
-        this.disconnectClientsOnUnbind = disconnectClientsOnUnbind;
+        this.bind( address, handler, ( IoAcceptorConfig ) getDefaultConfig() );
     }
     
     public IoSession newSession( SocketAddress remoteAddress, SocketAddress localAddress )

Added: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoAcceptorConfig.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoAcceptorConfig.java?rev=372449&view=auto
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoAcceptorConfig.java (added)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoAcceptorConfig.java Wed Jan 25 21:24:58 2006
@@ -0,0 +1,48 @@
+/*
+ *   @(#) $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.common.support;
+
+import org.apache.mina.common.IoAcceptorConfig;
+
+/**
+ * A base implementation of {@link IoAcceptorConfig}.
+ * 
+ * @author The Apache Directory Project (dev@directory.apache.org)
+ * @version $Rev$, $Date$
+ */
+public abstract class BaseIoAcceptorConfig extends BaseIoServiceConfig implements IoAcceptorConfig
+{
+    private boolean disconnectOnUnbind = true;
+    
+    protected BaseIoAcceptorConfig()
+    {
+        super();
+    }
+
+
+    public boolean isDisconnectOnUnbind()
+    {
+        return disconnectOnUnbind;
+    }
+
+    public void setDisconnectOnUnbind( boolean disconnectClientsOnUnbind )
+    {
+        this.disconnectOnUnbind = disconnectClientsOnUnbind;
+    }
+}

Propchange: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoAcceptorConfig.java
------------------------------------------------------------------------------
    svn:keywords = HeadURL Id LastChangedBy LastChangedDate LastChangedRevision

Modified: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoConnector.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoConnector.java?rev=372449&r1=372448&r2=372449&view=diff
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoConnector.java (original)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoConnector.java Wed Jan 25 21:24:58 2006
@@ -22,7 +22,7 @@
 
 import org.apache.mina.common.ConnectFuture;
 import org.apache.mina.common.IoConnector;
-import org.apache.mina.common.IoFilterChainBuilder;
+import org.apache.mina.common.IoConnectorConfig;
 import org.apache.mina.common.IoHandler;
 
 /**
@@ -33,38 +33,17 @@
  */
 public abstract class BaseIoConnector extends BaseIoService implements IoConnector
 {
-    private int defaultConnectTimeout = 60; // 1 minute
-
     protected BaseIoConnector()
     {
     }
     
     public ConnectFuture connect( SocketAddress address, IoHandler handler )
     {
-        return connect( address, handler, IoFilterChainBuilder.NOOP );
+        return connect( address, handler, ( IoConnectorConfig ) getDefaultConfig() );
     }
 
     public ConnectFuture connect( SocketAddress address, SocketAddress localAddress, IoHandler handler )
     {
-        return connect( address, localAddress, handler, IoFilterChainBuilder.NOOP );
+        return connect( address, localAddress, handler, ( IoConnectorConfig ) getDefaultConfig() );
     }
-
-    public int getConnectTimeout()
-    {
-        return defaultConnectTimeout;
-    }
-
-    public long getConnectTimeoutMillis()
-    {
-        return defaultConnectTimeout * 1000L;
-    }
-
-    public void setConnectTimeout( int defaultConnectTimeout )
-    {
-        if( defaultConnectTimeout <= 0 )
-        {
-            throw new IllegalArgumentException( "defaultConnectTimeout: " + defaultConnectTimeout );
-        }
-        this.defaultConnectTimeout = defaultConnectTimeout;
-    }    
 }

Added: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoConnectorConfig.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoConnectorConfig.java?rev=372449&view=auto
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoConnectorConfig.java (added)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoConnectorConfig.java Wed Jan 25 21:24:58 2006
@@ -0,0 +1,56 @@
+/*
+ *   @(#) $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.common.support;
+
+import org.apache.mina.common.IoConnectorConfig;
+
+/**
+ * A base implementation of {@link IoConnectorConfig}.
+ * 
+ * @author The Apache Directory Project (dev@directory.apache.org)
+ * @version $Rev$, $Date$
+ */
+public abstract class BaseIoConnectorConfig extends BaseIoServiceConfig implements IoConnectorConfig
+{
+    private int connectTimeout = 60; // 1 minute
+
+    protected BaseIoConnectorConfig()
+    {
+        super();
+    }
+
+    public int getConnectTimeout()
+    {
+        return connectTimeout;
+    }
+
+    public long getConnectTimeoutMillis()
+    {
+        return connectTimeout * 1000L;
+    }
+
+    public void setConnectTimeout( int connectTimeout )
+    {
+        if( connectTimeout <= 0 )
+        {
+            throw new IllegalArgumentException( "connectTimeout: " + connectTimeout );
+        }
+        this.connectTimeout = connectTimeout;
+    }    
+}

Propchange: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoConnectorConfig.java
------------------------------------------------------------------------------
    svn:keywords = HeadURL Id LastChangedBy LastChangedDate LastChangedRevision

Modified: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoService.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoService.java?rev=372449&r1=372448&r2=372449&view=diff
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoService.java (original)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoService.java Wed Jan 25 21:24:58 2006
@@ -18,8 +18,9 @@
  */
 package org.apache.mina.common.support;
 
-import org.apache.mina.common.DefaultIoFilterChainBuilder;
-import org.apache.mina.common.IoFilterChainBuilder;
+import java.net.SocketAddress;
+import java.util.Set;
+
 import org.apache.mina.common.IoService;
 
 /**
@@ -30,39 +31,12 @@
  */
 public abstract class BaseIoService implements IoService {
 
-    /**
-     * Current filter chain builder.
-     */
-    protected IoFilterChainBuilder filterChainBuilder = new DefaultIoFilterChainBuilder();
-
     protected BaseIoService()
     {
     }
     
-    public IoFilterChainBuilder getFilterChainBuilder()
-    {
-        return filterChainBuilder;
-    }
-
-    public void setFilterChainBuilder( IoFilterChainBuilder builder )
-    {
-        if( builder == null )
-        {
-            builder = new DefaultIoFilterChainBuilder();
-        }
-        filterChainBuilder = builder;
-    }
-    
-    public DefaultIoFilterChainBuilder getFilterChain()
+    public Set getManagedSessions( SocketAddress address )
     {
-        if( filterChainBuilder instanceof DefaultIoFilterChainBuilder )
-        {
-            return ( DefaultIoFilterChainBuilder ) filterChainBuilder;
-        }
-        else
-        {
-            throw new IllegalStateException(
-                    "Current filter chain builder is not a DefaultIoFilterChainBuilder." );
-        }
+        throw new UnsupportedOperationException();
     }
 }

Added: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoServiceConfig.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoServiceConfig.java?rev=372449&view=auto
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoServiceConfig.java (added)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoServiceConfig.java Wed Jan 25 21:24:58 2006
@@ -0,0 +1,81 @@
+/*
+ *   @(#) $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.common.support;
+
+import org.apache.mina.common.DefaultIoFilterChainBuilder;
+import org.apache.mina.common.IoFilterChainBuilder;
+import org.apache.mina.common.IoServiceConfig;
+
+/**
+ * A base implementation of {@link IoServiceConfig}.
+ * 
+ * @author The Apache Directory Project (dev@directory.apache.org)
+ * @version $Rev$, $Date$
+ */
+public abstract class BaseIoServiceConfig implements IoServiceConfig, Cloneable
+{
+    /**
+     * Current filter chain builder.
+     */
+    private IoFilterChainBuilder filterChainBuilder = new DefaultIoFilterChainBuilder();
+
+    public BaseIoServiceConfig()
+    {
+        super();
+    }
+
+    public IoFilterChainBuilder getFilterChainBuilder()
+    {
+        return filterChainBuilder;
+    }
+
+    public void setFilterChainBuilder( IoFilterChainBuilder builder )
+    {
+        if( builder == null )
+        {
+            builder = new DefaultIoFilterChainBuilder();
+        }
+        filterChainBuilder = builder;
+    }
+    
+    public DefaultIoFilterChainBuilder getFilterChain()
+    {
+        if( filterChainBuilder instanceof DefaultIoFilterChainBuilder )
+        {
+            return ( DefaultIoFilterChainBuilder ) filterChainBuilder;
+        }
+        else
+        {
+            throw new IllegalStateException(
+                    "Current filter chain builder is not a DefaultIoFilterChainBuilder." );
+        }
+    }
+    
+    public Object clone()
+    {
+        try
+        {
+            return super.clone();
+        }
+        catch( CloneNotSupportedException e )
+        {
+            throw ( InternalError ) new InternalError().initCause( e );
+        }
+    }
+}

Propchange: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/BaseIoServiceConfig.java
------------------------------------------------------------------------------
    svn:keywords = HeadURL Id LastChangedBy LastChangedDate LastChangedRevision

Modified: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/DelegatedIoAcceptor.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/DelegatedIoAcceptor.java?rev=372449&r1=372448&r2=372449&view=diff
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/DelegatedIoAcceptor.java (original)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/DelegatedIoAcceptor.java Wed Jan 25 21:24:58 2006
@@ -20,12 +20,12 @@
 
 import java.io.IOException;
 import java.net.SocketAddress;
-import java.util.Collection;
+import java.util.Set;
 
-import org.apache.mina.common.DefaultIoFilterChainBuilder;
 import org.apache.mina.common.IoAcceptor;
-import org.apache.mina.common.IoFilterChainBuilder;
+import org.apache.mina.common.IoAcceptorConfig;
 import org.apache.mina.common.IoHandler;
+import org.apache.mina.common.IoServiceConfig;
 import org.apache.mina.common.IoSession;
 
 /**
@@ -59,9 +59,9 @@
         delegate.bind( address, handler );
     }
 
-    public void bind( SocketAddress address, IoHandler handler, IoFilterChainBuilder filterChainBuilder ) throws IOException
+    public void bind( SocketAddress address, IoHandler handler, IoAcceptorConfig config ) throws IOException
     {
-        delegate.bind( address, handler, filterChainBuilder );
+        delegate.bind( address, handler, config );
     }
 
     public void unbind( SocketAddress address )
@@ -69,7 +69,7 @@
         delegate.unbind( address );
     }
 
-    public Collection getManagedSessions( SocketAddress address )
+    public Set getManagedSessions( SocketAddress address )
     {
         return delegate.getManagedSessions( address );
     }
@@ -79,28 +79,8 @@
         return delegate.newSession( remoteAddress, localAddress );
     }
 
-    public IoFilterChainBuilder getFilterChainBuilder()
+    public IoServiceConfig getDefaultConfig()
     {
-        return delegate.getFilterChainBuilder();
-    }
-
-    public void setFilterChainBuilder( IoFilterChainBuilder builder )
-    {
-        delegate.setFilterChainBuilder( builder );
-    }
-    
-    public DefaultIoFilterChainBuilder getFilterChain()
-    {
-        return delegate.getFilterChain();
-    }
-
-    public boolean isDisconnectClientsOnUnbind()
-    {
-        return delegate.isDisconnectClientsOnUnbind();
-    }
-
-    public void setDisconnectClientsOnUnbind( boolean disconnectClientsOnUnbind )
-    {
-        delegate.setDisconnectClientsOnUnbind( disconnectClientsOnUnbind );
+        return delegate.getDefaultConfig();
     }
 }

Modified: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/DelegatedIoConnector.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/DelegatedIoConnector.java?rev=372449&r1=372448&r2=372449&view=diff
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/DelegatedIoConnector.java (original)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/common/support/DelegatedIoConnector.java Wed Jan 25 21:24:58 2006
@@ -19,12 +19,13 @@
 package org.apache.mina.common.support;
 
 import java.net.SocketAddress;
+import java.util.Set;
 
 import org.apache.mina.common.ConnectFuture;
-import org.apache.mina.common.DefaultIoFilterChainBuilder;
 import org.apache.mina.common.IoConnector;
-import org.apache.mina.common.IoFilterChainBuilder;
+import org.apache.mina.common.IoConnectorConfig;
 import org.apache.mina.common.IoHandler;
+import org.apache.mina.common.IoServiceConfig;
 
 /**
  * A delegated {@link IoConnector} that wraps the other {@link IoConnector}.
@@ -57,9 +58,9 @@
         return delegate.connect( address, handler );
     }
 
-    public ConnectFuture connect( SocketAddress address, IoHandler handler, IoFilterChainBuilder filterChainBuilder )
+    public ConnectFuture connect( SocketAddress address, IoHandler handler, IoConnectorConfig config )
     {
-        return delegate.connect( address, handler, filterChainBuilder );
+        return delegate.connect( address, handler, config );
     }
 
     public ConnectFuture connect( SocketAddress address, SocketAddress localAddress,
@@ -69,38 +70,18 @@
     }
 
     public ConnectFuture connect( SocketAddress address, SocketAddress localAddress,
-                                  IoHandler handler, IoFilterChainBuilder filterChainBuilder )
+                                  IoHandler handler, IoConnectorConfig config )
     {
-        return delegate.connect( address, localAddress, handler, filterChainBuilder );
+        return delegate.connect( address, localAddress, handler, config );
     }
 
-    public int getConnectTimeout()
+    public Set getManagedSessions( SocketAddress address )
     {
-        return delegate.getConnectTimeout();
+        return delegate.getManagedSessions( address );
     }
-
-    public long getConnectTimeoutMillis()
-    {
-        return delegate.getConnectTimeoutMillis();
-    }
-
-    public void setConnectTimeout( int connectTimeout )
-    {
-        delegate.setConnectTimeout( connectTimeout );
-    }
-
-    public IoFilterChainBuilder getFilterChainBuilder()
-    {
-        return delegate.getFilterChainBuilder();
-    }
-
-    public void setFilterChainBuilder( IoFilterChainBuilder builder )
-    {
-        delegate.setFilterChainBuilder( builder );
-    }
-
-    public DefaultIoFilterChainBuilder getFilterChain()
+    
+    public IoServiceConfig getDefaultConfig()
     {
-        return delegate.getFilterChain();
+        return delegate.getDefaultConfig();
     }
 }

Modified: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java?rev=372449&r1=372448&r2=372449&view=diff
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java (original)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java Wed Jan 25 21:24:58 2006
@@ -28,7 +28,7 @@
  * @author The Apache Directory Project (dev@directory.apache.org)
  * @version $Rev$, $Date$
  */
-public class DatagramAcceptor extends DelegatedIoAcceptor implements DatagramService
+public class DatagramAcceptor extends DelegatedIoAcceptor
 {
     /**
      * Creates a new instance.
@@ -36,55 +36,5 @@
     public DatagramAcceptor()
     {
         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 );
     }
 }

Added: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptorConfig.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptorConfig.java?rev=372449&view=auto
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptorConfig.java (added)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptorConfig.java Wed Jan 25 21:24:58 2006
@@ -0,0 +1,52 @@
+/*
+ *   @(#) $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 org.apache.mina.common.IoAcceptorConfig;
+import org.apache.mina.common.IoSessionConfig;
+import org.apache.mina.common.RuntimeIOException;
+import org.apache.mina.common.support.BaseIoAcceptorConfig;
+import org.apache.mina.transport.socket.nio.support.DatagramSessionConfigImpl;
+
+/**
+ * An {@link IoAcceptorConfig} for {@link DatagramAcceptor}.
+ *
+ * @author The Apache Directory Project (dev@directory.apache.org)
+ * @version $Rev$, $Date$
+ */
+public class DatagramAcceptorConfig extends BaseIoAcceptorConfig implements IoAcceptorConfig
+{
+    private final DatagramSessionConfig sessionConfig = new DatagramSessionConfigImpl();
+
+    /**
+     * Creates a new instance.
+     * 
+     * @throws RuntimeIOException if failed to get the default configuration
+     */
+    public DatagramAcceptorConfig()
+    {
+        super();
+    }
+
+    public IoSessionConfig getSessionConfig()
+    {
+        return sessionConfig;
+    }
+}

Propchange: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptorConfig.java
------------------------------------------------------------------------------
    svn:keywords = HeadURL Id LastChangedBy LastChangedDate LastChangedRevision

Modified: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java?rev=372449&r1=372448&r2=372449&view=diff
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java (original)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java Wed Jan 25 21:24:58 2006
@@ -28,7 +28,7 @@
  * @author The Apache Directory Project (dev@directory.apache.org)
  * @version $Rev$, $Date$
  */
-public class DatagramConnector extends DelegatedIoConnector implements DatagramService
+public class DatagramConnector extends DelegatedIoConnector
 {
     /**
      * Creates a new instance.
@@ -36,56 +36,5 @@
     public DatagramConnector()
     {
         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 );
     }
 }

Added: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnectorConfig.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnectorConfig.java?rev=372449&view=auto
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnectorConfig.java (added)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnectorConfig.java Wed Jan 25 21:24:58 2006
@@ -0,0 +1,52 @@
+/*
+ *   @(#) $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 org.apache.mina.common.IoConnectorConfig;
+import org.apache.mina.common.IoSessionConfig;
+import org.apache.mina.common.RuntimeIOException;
+import org.apache.mina.common.support.BaseIoConnectorConfig;
+import org.apache.mina.transport.socket.nio.support.DatagramSessionConfigImpl;
+
+/**
+ * An {@link IoConnectorConfig} for {@link DatagramConnector}.
+ *
+ * @author The Apache Directory Project (dev@directory.apache.org)
+ * @version $Rev$, $Date$
+ */
+public class DatagramConnectorConfig extends BaseIoConnectorConfig
+{
+    private final DatagramSessionConfig sessionConfig = new DatagramSessionConfigImpl();
+
+    /**
+     * Creates a new instance.
+     * 
+     * @throws RuntimeIOException if failed to get the default configuration
+     */
+    public DatagramConnectorConfig()
+    {
+        super();
+    }
+
+
+    public IoSessionConfig getSessionConfig()
+    {
+        return sessionConfig;
+    }
+}

Propchange: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnectorConfig.java
------------------------------------------------------------------------------
    svn:keywords = HeadURL Id LastChangedBy LastChangedDate LastChangedRevision

Added: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionConfig.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionConfig.java?rev=372449&view=auto
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionConfig.java (added)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionConfig.java Wed Jan 25 21:24:58 2006
@@ -0,0 +1,82 @@
+/*
+ *   @(#) $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.IoSessionConfig;
+
+/**
+ * An {@link IoSessionConfig} for datagram transport type.
+ *
+ * @author The Apache Directory Project (dev@directory.apache.org)
+ * @version $Rev$, $Date$
+ */
+public interface DatagramSessionConfig extends IoSessionConfig
+{
+    /**
+     * @see DatagramSocket#getBroadcast()
+     */
+    boolean isBroadcast();
+    
+    /**
+     * @see DatagramSocket#setBroadcast(boolean)
+     */
+    void setBroadcast( boolean broadcast );
+    
+    /**
+     * @see DatagramSocket#getReuseAddress()
+     */
+    boolean isReuseAddress();
+    
+    /**
+     * @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 );
+}

Propchange: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionConfig.java
------------------------------------------------------------------------------
    svn:keywords = HeadURL Id LastChangedBy LastChangedDate LastChangedRevision

Modified: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java?rev=372449&r1=372448&r2=372449&view=diff
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java (original)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java Wed Jan 25 21:24:58 2006
@@ -37,37 +37,4 @@
     {
         init( new SocketAcceptorDelegate( this ) );
     }
-
-    public int getReceiveBufferSize()
-    {
-        return ( ( SocketAcceptorDelegate ) delegate ).getReceiveBufferSize();
-    }
-
-    /**
-     * @param receiveBufferSize <tt>-1</tt> to use the default value.
-     */
-    public void setReceiveBufferSize( int receiveBufferSize )
-    {
-        ( ( SocketAcceptorDelegate ) delegate ).setReceiveBufferSize( receiveBufferSize );
-    }
-
-    public boolean isReuseAddress()
-    {
-        return ( ( SocketAcceptorDelegate ) delegate ).isReuseAddress();
-    }
-
-    public void setReuseAddress( boolean reuseAddress )
-    {
-        ( ( SocketAcceptorDelegate ) delegate ).setReuseAddress( reuseAddress );
-    }
-
-    public int getBacklog()
-    {
-        return ( ( SocketAcceptorDelegate ) delegate ).getBacklog();
-    }
-
-    public void setBacklog( int backlog )
-    {
-        ( ( SocketAcceptorDelegate ) delegate ).setBacklog( backlog );
-    }
 }

Added: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptorConfig.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptorConfig.java?rev=372449&view=auto
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptorConfig.java (added)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptorConfig.java Wed Jan 25 21:24:58 2006
@@ -0,0 +1,106 @@
+/*
+ *   @(#) $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.io.IOException;
+import java.net.ServerSocket;
+
+import org.apache.mina.common.ExceptionMonitor;
+import org.apache.mina.common.IoAcceptorConfig;
+import org.apache.mina.common.IoSessionConfig;
+import org.apache.mina.common.RuntimeIOException;
+import org.apache.mina.common.support.BaseIoAcceptorConfig;
+import org.apache.mina.transport.socket.nio.support.SocketSessionConfigImpl;
+
+/**
+ * An {@link IoAcceptorConfig} for {@link SocketAcceptor}.
+ *
+ * @author The Apache Directory Project (dev@directory.apache.org)
+ * @version $Rev$, $Date$
+ */
+public class SocketAcceptorConfig extends BaseIoAcceptorConfig
+{
+    private IoSessionConfig sessionConfig = new SocketSessionConfigImpl();
+    private int backlog = 50;
+    private boolean reuseAddress;
+    
+    /**
+     * Creates a new instance.
+     * 
+     * @throws RuntimeIOException if failed to get the default configuration
+     */
+    public SocketAcceptorConfig()
+    {
+        ServerSocket s = null;
+        try
+        {
+            s = new ServerSocket();
+            reuseAddress = s.getReuseAddress();
+        }
+        catch( IOException e )
+        {
+            throw new RuntimeIOException( "Failed to get the default configuration.", e );
+        }
+        finally
+        {
+            if( s != null )
+            {
+                try
+                {
+                    s.close();
+                }
+                catch( IOException e )
+                {
+                    ExceptionMonitor.getInstance().exceptionCaught( e );
+                }
+            }
+        }
+    }
+
+    public IoSessionConfig getSessionConfig()
+    {
+        return sessionConfig;
+    }
+
+    /**
+     * @see ServerSocket#getReuseAddress()
+     */
+    public boolean isReuseAddress()
+    {
+        return reuseAddress;
+    }
+    
+    /**
+     * @see ServerSocket#setReuseAddress(boolean)
+     */
+    public void setReuseAddress( boolean reuseAddress )
+    {
+        this.reuseAddress = reuseAddress;
+    }
+    
+    public int getBacklog()
+    {
+        return backlog;
+    }
+    
+    public void setBacklog( int backlog )
+    {
+        this.backlog = backlog;
+    }
+}

Propchange: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptorConfig.java
------------------------------------------------------------------------------
    svn:keywords = HeadURL Id LastChangedBy LastChangedDate LastChangedRevision

Added: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnectorConfig.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnectorConfig.java?rev=372449&view=auto
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnectorConfig.java (added)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnectorConfig.java Wed Jan 25 21:24:58 2006
@@ -0,0 +1,50 @@
+/*
+ *   @(#) $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 org.apache.mina.common.IoConnectorConfig;
+import org.apache.mina.common.IoSessionConfig;
+import org.apache.mina.common.RuntimeIOException;
+import org.apache.mina.common.support.BaseIoConnectorConfig;
+import org.apache.mina.transport.socket.nio.support.SocketSessionConfigImpl;
+
+/**
+ * An {@link IoConnectorConfig} for {@link SocketConnector}.
+ *
+ * @author The Apache Directory Project (dev@directory.apache.org)
+ * @version $Rev$, $Date$
+ */
+public class SocketConnectorConfig extends BaseIoConnectorConfig
+{
+    private IoSessionConfig sessionConfig = new SocketSessionConfigImpl();
+
+    /**
+     * Creates a new instance.
+     * 
+     * @throws RuntimeIOException if failed to get the default configuration
+     */
+    public SocketConnectorConfig()
+    {
+    }
+
+    public IoSessionConfig getSessionConfig()
+    {
+        return sessionConfig;
+    }
+}

Propchange: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnectorConfig.java
------------------------------------------------------------------------------
    svn:keywords = HeadURL Id LastChangedBy LastChangedDate LastChangedRevision

Added: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionConfig.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionConfig.java?rev=372449&view=auto
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionConfig.java (added)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionConfig.java Wed Jan 25 21:24:58 2006
@@ -0,0 +1,114 @@
+/*
+ *   @(#) $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.Socket;
+
+import org.apache.mina.common.IoSessionConfig;
+
+/**
+ * An {@link IoSessionConfig} for socket transport type.
+ *
+ * @author The Apache Directory Project (dev@directory.apache.org)
+ * @version $Rev$, $Date$
+ */
+public interface SocketSessionConfig extends IoSessionConfig
+{
+    /**
+     * @see Socket#getReuseAddress()
+     */
+    boolean isReuseAddress();
+    
+    /**
+     * @see Socket#setReuseAddress(boolean)
+     */
+    void setReuseAddress( boolean reuseAddress );
+
+    /**
+     * @see Socket#getReceiveBufferSize()
+     */
+    int getReceiveBufferSize();
+
+    /**
+     * @see Socket#setReceiveBufferSize(int)
+     */
+    void setReceiveBufferSize( int receiveBufferSize );
+
+    /**
+     * @see Socket#getSendBufferSize()
+     */
+    int getSendBufferSize();
+
+    /**
+     * @see Socket#setSendBufferSize(int)
+     */
+    void setSendBufferSize( int sendBufferSize );
+
+    /**
+     * @see Socket#getTrafficClass()
+     */
+    int getTrafficClass();
+
+    /**
+     * @see Socket#setTrafficClass(int)
+     */
+    void setTrafficClass( int trafficClass );
+
+    /**
+     * @see Socket#getKeepAlive()
+     */
+    boolean isKeepAlive();
+
+    /**
+     * @see Socket#setKeepAlive(boolean)
+     */
+    void setKeepAlive( boolean keepAlive );
+
+    /**
+     * @see Socket#getOOBInline()
+     */
+    boolean isOobInline();
+
+    /**
+     * @see Socket#setOOBInline(boolean)
+     */
+    void setOobInline( boolean oobInline );
+
+    /**
+     * @see Socket#getSoLinger()
+     */
+    int getSoLinger();
+
+    /**
+     * @param soLinger Please specify a negative value to disable <tt>SO_LINGER</tt>.
+     * 
+     * @see Socket#setSoLinger(boolean, int)
+     */
+    void setSoLinger( int soLinger );
+
+    /**
+     * @see Socket#getTcpNoDelay()
+     */
+    boolean isTcpNoDelay();
+
+    /**
+     * @see Socket#setTcpNoDelay(boolean)
+     */
+    void setTcpNoDelay( boolean tcpNoDelay );
+}

Propchange: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionConfig.java
------------------------------------------------------------------------------
    svn:keywords = HeadURL Id LastChangedBy LastChangedDate LastChangedRevision

Modified: directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java
URL: http://svn.apache.org/viewcvs/directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java?rev=372449&r1=372448&r2=372449&view=diff
==============================================================================
--- directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java (original)
+++ directory/sandbox/trustin/dirmina-158/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java Wed Jan 25 21:24:58 2006
@@ -32,11 +32,14 @@
 import org.apache.mina.common.ByteBuffer;
 import org.apache.mina.common.ExceptionMonitor;
 import org.apache.mina.common.IoAcceptor;
-import org.apache.mina.common.IoFilterChainBuilder;
+import org.apache.mina.common.IoAcceptorConfig;
 import org.apache.mina.common.IoHandler;
+import org.apache.mina.common.IoServiceConfig;
 import org.apache.mina.common.IoSession;
 import org.apache.mina.common.IoFilter.WriteRequest;
 import org.apache.mina.common.support.BaseIoAcceptor;
+import org.apache.mina.transport.socket.nio.DatagramAcceptorConfig;
+import org.apache.mina.transport.socket.nio.DatagramSessionConfig;
 import org.apache.mina.util.Queue;
 
 /**
@@ -52,11 +55,7 @@
     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 DatagramAcceptorConfig defaultConfig = new DatagramAcceptorConfig();
     private final Map channels = new HashMap();
     private final Queue registerQueue = new Queue();
     private final Queue cancelQueue = new Queue();
@@ -71,13 +70,17 @@
         this.wrapper = wrapper;
     }
 
-    public void bind( SocketAddress address, IoHandler handler, IoFilterChainBuilder filterChainBuilder )
+    public void bind( SocketAddress address, IoHandler handler, IoAcceptorConfig config )
             throws IOException
     {
         if( address == null )
             throw new NullPointerException( "address" );
         if( handler == null )
             throw new NullPointerException( "handler" );
+        if( config == null )
+        {
+            config = ( IoAcceptorConfig ) getDefaultConfig();
+        }
 
         if( !( address instanceof InetSocketAddress ) )
             throw new IllegalArgumentException( "Unexpected address type: "
@@ -85,12 +88,7 @@
         if( ( ( InetSocketAddress ) address ).getPort() == 0 )
             throw new IllegalArgumentException( "Unsupported port number: 0" );
         
-        if( filterChainBuilder == null )
-        {
-            filterChainBuilder = IoFilterChainBuilder.NOOP;
-        }
-
-        RegistrationRequest request = new RegistrationRequest( address, handler, filterChainBuilder );
+        RegistrationRequest request = new RegistrationRequest( address, handler, config );
         synchronized( this )
         {
             synchronized( registerQueue )
@@ -195,14 +193,15 @@
         }
 
         RegistrationRequest req = ( RegistrationRequest ) key.attachment();
-        DatagramSessionImpl s = new DatagramSessionImpl( wrapper, this, ch, req.handler );
+        DatagramSessionImpl s = new DatagramSessionImpl(
+                wrapper, this,
+                ( DatagramSessionConfig ) req.config, ch, req.handler );
         s.setRemoteAddress( remoteAddress );
         s.setSelectionKey( key );
         
         try
         {
-            this.filterChainBuilder.buildFilterChain( s.getFilterChain() );
-            req.filterChainBuilder.buildFilterChain( s.getFilterChain() );
+            req.config.getFilterChainBuilder().buildFilterChain( s.getFilterChain() );
             ( ( DatagramFilterChain ) s.getFilterChain() ).sessionCreated( s );
         }
         catch( Throwable t )
@@ -213,57 +212,11 @@
         return s;
     }
     
-    public boolean getBroadcast()
+    public IoServiceConfig getDefaultConfig()
     {
-        return broadcast;
+        return defaultConfig;
     }
     
-    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 )
@@ -374,8 +327,10 @@
             DatagramChannel ch = ( DatagramChannel ) key.channel();
 
             RegistrationRequest req = ( RegistrationRequest ) key.attachment();
-            DatagramSessionImpl session =
-                new DatagramSessionImpl( wrapper, this, ch, req.handler );
+            DatagramSessionImpl session = new DatagramSessionImpl(
+                    wrapper, this,
+                    ( DatagramSessionConfig ) req.config.getSessionConfig(),
+                    ch, req.handler );
             session.setSelectionKey( key );
             
             try
@@ -402,7 +357,7 @@
     private void readSession( DatagramSessionImpl session )
     {
 
-        ByteBuffer readBuf = ByteBuffer.allocate( 2048 );
+        ByteBuffer readBuf = ByteBuffer.allocate( session.getReadBufferSize() );
         try
         {
             SocketAddress remoteAddress = session.getChannel().receive(
@@ -549,20 +504,22 @@
             try
             {
                 ch = DatagramChannel.open();
-                ch.socket().setReuseAddress( reuseAddress );
-                ch.socket().setBroadcast( broadcast );
-                if( receiveBufferSize > 0 )
+                DatagramSessionConfig cfg;
+                if( req.config.getSessionConfig() instanceof DatagramSessionConfig )
                 {
-                    ch.socket().setReceiveBufferSize( receiveBufferSize );
+                    cfg = ( DatagramSessionConfig ) req.config.getSessionConfig();
                 }
-                if( sendBufferSize > 0 )
-                {
-                    ch.socket().setSendBufferSize( sendBufferSize );
-                }
-                if( trafficClass > 0 )
+                else
                 {
-                    ch.socket().setTrafficClass( trafficClass );
+                    cfg = ( DatagramSessionConfig ) getDefaultConfig().getSessionConfig();
                 }
+
+                ch.socket().setReuseAddress( cfg.isReuseAddress() );
+                ch.socket().setBroadcast( cfg.isBroadcast() );
+                ch.socket().setReceiveBufferSize( cfg.getReceiveBufferSize() );
+                ch.socket().setSendBufferSize( cfg.getSendBufferSize() );
+                ch.socket().setTrafficClass( cfg.getTrafficClass() );
+                
                 ch.configureBlocking( false );
                 ch.socket().bind( req.address );
                 ch.register( selector, SelectionKey.OP_READ, req );
@@ -658,16 +615,16 @@
     {
         private final SocketAddress address;
         private final IoHandler handler;
-        private final IoFilterChainBuilder filterChainBuilder;
+        private final IoAcceptorConfig config;
 
         private Throwable exception; 
         private boolean done;
         
-        private RegistrationRequest( SocketAddress address, IoHandler handler, IoFilterChainBuilder filterChainBuilder )
+        private RegistrationRequest( SocketAddress address, IoHandler handler, IoAcceptorConfig config )
         {
             this.address = address;
             this.handler = handler;
-            this.filterChainBuilder = filterChainBuilder;
+            this.config = config;
         }
     }