Author: trustin
Date: Fri Aug 17 19:27:05 2007
New Revision: 567208

URL: http://svn.apache.org/viewvc?view=rev&rev=567208
Log:
Resolved issue: DIRMINA-417 (Move idleTime and writeTimeout property to 
IoSessionConfig (from IoSession).)
* Moved idleTime and writeTimeout property to IoSessionConfig
* Added IoSessionConfig.setAll() and added its default implementation to 
AbstractIoSessionConfig
* Removed SerialSessionConfig.timeout because it can be replaced with 
IoService.connectTimeout


Added:
    
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/AbstractDatagramSessionConfig.java
   (with props)
    
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/AbstractSocketSessionConfig.java
   (with props)
Modified:
    mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java
    
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSessionConfig.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IdleStatusChecker.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoSession.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionConfig.java
    
mina/trunk/core/src/main/java/org/apache/mina/handler/stream/StreamIoHandler.java
    
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionImpl.java
    
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultDatagramSessionConfig.java
    
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultSocketSessionConfig.java
    
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
    
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java
    
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/DefaultVmPipeSessionConfig.java
    
mina/trunk/core/src/test/java/org/apache/mina/filter/stream/StreamWriteFilterTest.java
    
mina/trunk/core/src/test/java/org/apache/mina/transport/AbstractBindTest.java
    
mina/trunk/example/src/main/java/org/apache/mina/example/echoserver/EchoProtocolHandler.java
    
mina/trunk/example/src/main/java/org/apache/mina/example/httpserver/codec/ServerHandler.java
    
mina/trunk/example/src/main/java/org/apache/mina/example/netcat/NetCatProtocolHandler.java
    
mina/trunk/example/src/main/java/org/apache/mina/example/sumup/ServerSessionHandler.java
    
mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/IoSessionManager.java
    
mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/IoSessionManagerMBean.java
    
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/DefaultSerialSessionConfig.java
    
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java
    
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSessionConfig.java

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java 
(original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java 
Fri Aug 17 19:27:05 2007
@@ -52,15 +52,6 @@
 
     private boolean closing;
 
-    // Configuration variables
-    private int idleTimeForRead;
-
-    private int idleTimeForWrite;
-
-    private int idleTimeForBoth;
-
-    private int writeTimeout;
-
     private TrafficMask trafficMask = TrafficMask.ALL;
 
     // Status variables
@@ -315,58 +306,6 @@
         synchronized (attributes) {
             return new HashSet<String>(attributes.keySet());
         }
-    }
-
-    public int getIdleTime(IdleStatus status) {
-        if (status == IdleStatus.BOTH_IDLE) {
-            return idleTimeForBoth;
-        }
-
-        if (status == IdleStatus.READER_IDLE) {
-            return idleTimeForRead;
-        }
-
-        if (status == IdleStatus.WRITER_IDLE) {
-            return idleTimeForWrite;
-        }
-
-        throw new IllegalArgumentException("Unknown idle status: " + status);
-    }
-
-    public long getIdleTimeInMillis(IdleStatus status) {
-        return getIdleTime(status) * 1000L;
-    }
-
-    public void setIdleTime(IdleStatus status, int idleTime) {
-        if (idleTime < 0) {
-            throw new IllegalArgumentException("Illegal idle time: " + 
idleTime);
-        }
-
-        if (status == IdleStatus.BOTH_IDLE) {
-            idleTimeForBoth = idleTime;
-        } else if (status == IdleStatus.READER_IDLE) {
-            idleTimeForRead = idleTime;
-        } else if (status == IdleStatus.WRITER_IDLE) {
-            idleTimeForWrite = idleTime;
-        } else {
-            throw new IllegalArgumentException("Unknown idle status: " + 
status);
-        }
-    }
-
-    public int getWriteTimeout() {
-        return writeTimeout;
-    }
-
-    public long getWriteTimeoutInMillis() {
-        return writeTimeout * 1000L;
-    }
-
-    public void setWriteTimeout(int writeTimeout) {
-        if (writeTimeout < 0) {
-            throw new IllegalArgumentException("Illegal write timeout: "
-                    + writeTimeout);
-        }
-        this.writeTimeout = writeTimeout;
     }
 
     public TrafficMask getTrafficMask() {

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSessionConfig.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSessionConfig.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSessionConfig.java
 (original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSessionConfig.java
 Fri Aug 17 19:27:05 2007
@@ -27,6 +27,83 @@
  * @version $Rev$, $Date$
  */
 public abstract class AbstractIoSessionConfig implements IoSessionConfig {
+
+    private int idleTimeForRead;
+    private int idleTimeForWrite;
+    private int idleTimeForBoth;
+    private int writeTimeout;
+
     protected AbstractIoSessionConfig() {
+    }
+    
+    public final void setAll(IoSessionConfig config) {
+        if (config == null) {
+            throw new NullPointerException("config");
+        }
+        
+        setIdleTime(IdleStatus.BOTH_IDLE, 
config.getIdleTime(IdleStatus.BOTH_IDLE));
+        setIdleTime(IdleStatus.READER_IDLE, 
config.getIdleTime(IdleStatus.READER_IDLE));
+        setIdleTime(IdleStatus.WRITER_IDLE, 
config.getIdleTime(IdleStatus.WRITER_IDLE));
+        setWriteTimeout(config.getWriteTimeout());
+        
+        doSetAll(config);
+    }
+    
+    /**
+     * Implement this method to set all transport-specific configuration
+     * properties retrieved from the specified <tt>config</tt>.
+     */
+    protected abstract void doSetAll(IoSessionConfig config);
+
+    public int getIdleTime(IdleStatus status) {
+        if (status == IdleStatus.BOTH_IDLE) {
+            return idleTimeForBoth;
+        }
+
+        if (status == IdleStatus.READER_IDLE) {
+            return idleTimeForRead;
+        }
+
+        if (status == IdleStatus.WRITER_IDLE) {
+            return idleTimeForWrite;
+        }
+
+        throw new IllegalArgumentException("Unknown idle status: " + status);
+    }
+
+    public long getIdleTimeInMillis(IdleStatus status) {
+        return getIdleTime(status) * 1000L;
+    }
+
+    public void setIdleTime(IdleStatus status, int idleTime) {
+        if (idleTime < 0) {
+            throw new IllegalArgumentException("Illegal idle time: " + 
idleTime);
+        }
+
+        if (status == IdleStatus.BOTH_IDLE) {
+            idleTimeForBoth = idleTime;
+        } else if (status == IdleStatus.READER_IDLE) {
+            idleTimeForRead = idleTime;
+        } else if (status == IdleStatus.WRITER_IDLE) {
+            idleTimeForWrite = idleTime;
+        } else {
+            throw new IllegalArgumentException("Unknown idle status: " + 
status);
+        }
+    }
+
+    public int getWriteTimeout() {
+        return writeTimeout;
+    }
+
+    public long getWriteTimeoutInMillis() {
+        return writeTimeout * 1000L;
+    }
+
+    public void setWriteTimeout(int writeTimeout) {
+        if (writeTimeout < 0) {
+            throw new IllegalArgumentException("Illegal write timeout: "
+                    + writeTimeout);
+        }
+        this.writeTimeout = writeTimeout;
     }
 }

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/common/IdleStatusChecker.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/IdleStatusChecker.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IdleStatusChecker.java 
(original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/IdleStatusChecker.java 
Fri Aug 17 19:27:05 2007
@@ -84,15 +84,15 @@
 
     private void notifyIdleSession(AbstractIoSession session, long 
currentTime) {
         notifyIdleSession0(session, currentTime, session
-                .getIdleTimeInMillis(IdleStatus.BOTH_IDLE),
+                .getConfig().getIdleTimeInMillis(IdleStatus.BOTH_IDLE),
                 IdleStatus.BOTH_IDLE, Math.max(session.getLastIoTime(), session
                         .getLastIdleTime(IdleStatus.BOTH_IDLE)));
         notifyIdleSession0(session, currentTime, session
-                .getIdleTimeInMillis(IdleStatus.READER_IDLE),
+                .getConfig().getIdleTimeInMillis(IdleStatus.READER_IDLE),
                 IdleStatus.READER_IDLE, Math.max(session.getLastReadTime(),
                         session.getLastIdleTime(IdleStatus.READER_IDLE)));
         notifyIdleSession0(session, currentTime, session
-                .getIdleTimeInMillis(IdleStatus.WRITER_IDLE),
+                .getConfig().getIdleTimeInMillis(IdleStatus.WRITER_IDLE),
                 IdleStatus.WRITER_IDLE, Math.max(session.getLastWriteTime(),
                         session.getLastIdleTime(IdleStatus.WRITER_IDLE)));
     }

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/IoSession.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/IoSession.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IoSession.java 
(original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/IoSession.java Fri Aug 
17 19:27:05 2007
@@ -251,36 +251,6 @@
     SocketAddress getServiceAddress();
 
     /**
-     * Returns idle time for the specified type of idleness in seconds.
-     */
-    int getIdleTime(IdleStatus status);
-
-    /**
-     * Returns idle time for the specified type of idleness in milliseconds.
-     */
-    long getIdleTimeInMillis(IdleStatus status);
-
-    /**
-     * Sets idle time for the specified type of idleness in seconds.
-     */
-    void setIdleTime(IdleStatus status, int idleTime);
-
-    /**
-     * Returns write timeout in seconds.
-     */
-    int getWriteTimeout();
-
-    /**
-     * Returns write timeout in milliseconds.
-     */
-    long getWriteTimeoutInMillis();
-
-    /**
-     * Sets write timeout in seconds.
-     */
-    void setWriteTimeout(int writeTimeout);
-
-    /**
      * Returns the current [EMAIL PROTECTED] TrafficMask} of this session.
      */
     TrafficMask getTrafficMask();

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionConfig.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionConfig.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionConfig.java 
(original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionConfig.java 
Fri Aug 17 19:27:05 2007
@@ -26,4 +26,39 @@
  * @version $Rev$, $Date$
  */
 public interface IoSessionConfig {
+    /**
+     * Returns idle time for the specified type of idleness in seconds.
+     */
+    int getIdleTime(IdleStatus status);
+
+    /**
+     * Returns idle time for the specified type of idleness in milliseconds.
+     */
+    long getIdleTimeInMillis(IdleStatus status);
+
+    /**
+     * Sets idle time for the specified type of idleness in seconds.
+     */
+    void setIdleTime(IdleStatus status, int idleTime);
+
+    /**
+     * Returns write timeout in seconds.
+     */
+    int getWriteTimeout();
+
+    /**
+     * Returns write timeout in milliseconds.
+     */
+    long getWriteTimeoutInMillis();
+
+    /**
+     * Sets write timeout in seconds.
+     */
+    void setWriteTimeout(int writeTimeout);
+    
+    /**
+     * Sets all configuration properties retrieved from the specified
+     * <tt>config</tt>.
+     */
+    void setAll(IoSessionConfig config);
 }

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/handler/stream/StreamIoHandler.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/handler/stream/StreamIoHandler.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/handler/stream/StreamIoHandler.java
 (original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/handler/stream/StreamIoHandler.java
 Fri Aug 17 19:27:05 2007
@@ -102,8 +102,8 @@
     @Override
     public void sessionOpened(IoSession session) {
         // Set timeouts
-        session.setWriteTimeout(writeTimeout);
-        session.setIdleTime(IdleStatus.READER_IDLE, readTimeout);
+        session.getConfig().setWriteTimeout(writeTimeout);
+        session.getConfig().setIdleTime(IdleStatus.READER_IDLE, readTimeout);
 
         // Create streams
         InputStream in = new IoSessionInputStream();

Added: 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/AbstractDatagramSessionConfig.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/AbstractDatagramSessionConfig.java?view=auto&rev=567208
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/AbstractDatagramSessionConfig.java
 (added)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/AbstractDatagramSessionConfig.java
 Fri Aug 17 19:27:05 2007
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.AbstractIoSessionConfig;
+import org.apache.mina.common.IoSessionConfig;
+
+/**
+ * @author The Apache MINA Project ([EMAIL PROTECTED])
+ * @version $Rev$, $Date$
+ */
+abstract class AbstractDatagramSessionConfig extends
+        AbstractIoSessionConfig implements DatagramSessionConfig {
+
+    protected AbstractDatagramSessionConfig() {
+    }
+
+    protected void doSetAll(IoSessionConfig config) {
+        if (config instanceof DatagramSessionConfig) {
+            DatagramSessionConfig cfg = (DatagramSessionConfig) config;
+            setBroadcast(cfg.isBroadcast());
+            setReceiveBufferSize(cfg.getReceiveBufferSize());
+            setReuseAddress(cfg.isReuseAddress());
+            setSendBufferSize(cfg.getSendBufferSize());
+    
+            if (getTrafficClass() != cfg.getTrafficClass()) {
+                setTrafficClass(cfg.getTrafficClass());
+            }
+        }
+    }
+
+}
\ No newline at end of file

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

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

Added: 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/AbstractSocketSessionConfig.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/AbstractSocketSessionConfig.java?view=auto&rev=567208
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/AbstractSocketSessionConfig.java
 (added)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/AbstractSocketSessionConfig.java
 Fri Aug 17 19:27:05 2007
@@ -0,0 +1,52 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.AbstractIoSessionConfig;
+import org.apache.mina.common.IoSessionConfig;
+
+/**
+ * @author The Apache MINA Project ([EMAIL PROTECTED])
+ * @version $Rev$, $Date$
+ */
+abstract class AbstractSocketSessionConfig extends AbstractIoSessionConfig
+        implements SocketSessionConfig {
+
+    protected AbstractSocketSessionConfig() {
+    }
+
+    protected final void doSetAll(IoSessionConfig config) {
+        if (config instanceof SocketSessionConfig) {
+            SocketSessionConfig cfg = (SocketSessionConfig) config;
+            setKeepAlive(cfg.isKeepAlive());
+            setOobInline(cfg.isOobInline());
+            setReceiveBufferSize(cfg.getReceiveBufferSize());
+            setReuseAddress(cfg.isReuseAddress());
+            setSendBufferSize(cfg.getSendBufferSize());
+            setSoLinger(cfg.getSoLinger());
+            setTcpNoDelay(cfg.isTcpNoDelay());
+
+            if (getTrafficClass() != cfg.getTrafficClass()) {
+                setTrafficClass(cfg.getTrafficClass());
+            }
+        }
+    }
+
+}
\ No newline at end of file

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

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

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionImpl.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionImpl.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionImpl.java
 (original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionImpl.java
 Fri Aug 17 19:27:05 2007
@@ -36,7 +36,6 @@
 import org.apache.mina.common.IoService;
 import org.apache.mina.common.IoServiceMetadata;
 import org.apache.mina.common.IoSession;
-import org.apache.mina.common.IoSessionConfig;
 import org.apache.mina.common.RuntimeIOException;
 import org.apache.mina.common.WriteFuture;
 import org.apache.mina.common.WriteRequest;
@@ -93,7 +92,7 @@
         // serviceAddress represents the same address in IPv4.
         this.localAddress = service.getLocalAddress();
 
-        applySettings();
+        this.config.setAll(service.getSessionConfig());
     }
 
     /**
@@ -109,23 +108,7 @@
         this.localAddress = (InetSocketAddress) ch.socket()
                 .getLocalSocketAddress();
 
-        applySettings();
-    }
-
-    private void applySettings() {
-        // Apply the initial session settings
-        IoSessionConfig sessionConfig = getService().getSessionConfig();
-        if (sessionConfig instanceof DatagramSessionConfig) {
-            DatagramSessionConfig cfg = (DatagramSessionConfig) sessionConfig;
-            this.config.setBroadcast(cfg.isBroadcast());
-            this.config.setReceiveBufferSize(cfg.getReceiveBufferSize());
-            this.config.setReuseAddress(cfg.isReuseAddress());
-            this.config.setSendBufferSize(cfg.getSendBufferSize());
-
-            if (this.config.getTrafficClass() != cfg.getTrafficClass()) {
-                this.config.setTrafficClass(cfg.getTrafficClass());
-            }
-        }
+        this.config.setAll(service.getSessionConfig());
     }
 
     public IoService getService() {
@@ -238,9 +221,8 @@
         return readBufferSize;
     }
 
-    private class SessionConfigImpl extends DefaultDatagramSessionConfig
-            implements DatagramSessionConfig {
-        @Override
+    private class SessionConfigImpl extends AbstractDatagramSessionConfig {
+
         public int getReceiveBufferSize() {
             try {
                 return ch.socket().getReceiveBufferSize();
@@ -249,7 +231,6 @@
             }
         }
 
-        @Override
         public void setReceiveBufferSize(int receiveBufferSize) {
             if 
(DefaultDatagramSessionConfig.isSetReceiveBufferSizeAvailable()) {
                 try {
@@ -263,7 +244,6 @@
             }
         }
 
-        @Override
         public boolean isBroadcast() {
             try {
                 return ch.socket().getBroadcast();
@@ -272,7 +252,6 @@
             }
         }
 
-        @Override
         public void setBroadcast(boolean broadcast) {
             try {
                 ch.socket().setBroadcast(broadcast);
@@ -281,7 +260,6 @@
             }
         }
 
-        @Override
         public int getSendBufferSize() {
             try {
                 return ch.socket().getSendBufferSize();
@@ -290,7 +268,6 @@
             }
         }
 
-        @Override
         public void setSendBufferSize(int sendBufferSize) {
             if (DefaultDatagramSessionConfig.isSetSendBufferSizeAvailable()) {
                 try {
@@ -301,7 +278,6 @@
             }
         }
 
-        @Override
         public boolean isReuseAddress() {
             try {
                 return ch.socket().getReuseAddress();
@@ -310,7 +286,6 @@
             }
         }
 
-        @Override
         public void setReuseAddress(boolean reuseAddress) {
             try {
                 ch.socket().setReuseAddress(reuseAddress);
@@ -319,7 +294,6 @@
             }
         }
 
-        @Override
         public int getTrafficClass() {
             if (DefaultDatagramSessionConfig.isGetTrafficClassAvailable()) {
                 try {
@@ -332,7 +306,6 @@
             }
         }
 
-        @Override
         public void setTrafficClass(int trafficClass) {
             if (DefaultDatagramSessionConfig.isSetTrafficClassAvailable()) {
                 try {

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultDatagramSessionConfig.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultDatagramSessionConfig.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultDatagramSessionConfig.java
 (original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultDatagramSessionConfig.java
 Fri Aug 17 19:27:05 2007
@@ -22,7 +22,6 @@
 import java.net.DatagramSocket;
 import java.net.SocketException;
 
-import org.apache.mina.common.AbstractIoSessionConfig;
 import org.apache.mina.common.ExceptionMonitor;
 
 /**
@@ -31,8 +30,8 @@
  * @author The Apache MINA Project ([EMAIL PROTECTED])
  * @version $Rev: 439913 $, $Date: 2006-09-04 05:12:43 +0200 (mån, 04 sep 
2006) $
  */
-class DefaultDatagramSessionConfig extends AbstractIoSessionConfig implements
-        DatagramSessionConfig {
+class DefaultDatagramSessionConfig extends AbstractDatagramSessionConfig {
+
     private static boolean SET_RECEIVE_BUFFER_SIZE_AVAILABLE = false;
 
     private static boolean SET_SEND_BUFFER_SIZE_AVAILABLE = false;
@@ -129,7 +128,7 @@
      */
     DefaultDatagramSessionConfig() {
     }
-
+    
     /**
      * @see DatagramSocket#getBroadcast()
      */

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultSocketSessionConfig.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultSocketSessionConfig.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultSocketSessionConfig.java
 (original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultSocketSessionConfig.java
 Fri Aug 17 19:27:05 2007
@@ -30,7 +30,6 @@
 import java.util.Map;
 import java.util.Map.Entry;
 
-import org.apache.mina.common.AbstractIoSessionConfig;
 import org.apache.mina.common.ExceptionMonitor;
 
 /**
@@ -39,8 +38,8 @@
  * @author The Apache MINA Project ([EMAIL PROTECTED])
  * @version $Rev$, $Date$
  */
-class DefaultSocketSessionConfig extends AbstractIoSessionConfig implements
-        SocketSessionConfig {
+class DefaultSocketSessionConfig extends AbstractSocketSessionConfig {
+
     private static Map<InetSocketAddress, InetAddress> TEST_ADDRESSES = new 
LinkedHashMap<InetSocketAddress, InetAddress>();
 
     private static boolean SET_RECEIVE_BUFFER_SIZE_AVAILABLE = false;

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
 (original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
 Fri Aug 17 19:27:05 2007
@@ -279,20 +279,20 @@
 
     private void notifyIdleness(SocketSessionImpl session, long currentTime) {
         notifyIdleness0(session, currentTime, session
-                .getIdleTimeInMillis(IdleStatus.BOTH_IDLE),
+                .getConfig().getIdleTimeInMillis(IdleStatus.BOTH_IDLE),
                 IdleStatus.BOTH_IDLE, Math.max(session.getLastIoTime(), session
                         .getLastIdleTime(IdleStatus.BOTH_IDLE)));
         notifyIdleness0(session, currentTime, session
-                .getIdleTimeInMillis(IdleStatus.READER_IDLE),
+                .getConfig().getIdleTimeInMillis(IdleStatus.READER_IDLE),
                 IdleStatus.READER_IDLE, Math.max(session.getLastReadTime(),
                         session.getLastIdleTime(IdleStatus.READER_IDLE)));
         notifyIdleness0(session, currentTime, session
-                .getIdleTimeInMillis(IdleStatus.WRITER_IDLE),
+                .getConfig().getIdleTimeInMillis(IdleStatus.WRITER_IDLE),
                 IdleStatus.WRITER_IDLE, Math.max(session.getLastWriteTime(),
                         session.getLastIdleTime(IdleStatus.WRITER_IDLE)));
 
         notifyWriteTimeout(session, currentTime, session
-                .getWriteTimeoutInMillis(), session.getLastWriteTime());
+                .getConfig().getWriteTimeoutInMillis(), 
session.getLastWriteTime());
     }
 
     private void notifyIdleness0(SocketSessionImpl session, long currentTime,

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java
 (original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java
 Fri Aug 17 19:27:05 2007
@@ -27,7 +27,6 @@
 import java.util.Queue;
 
 import org.apache.mina.common.AbstractIoSession;
-import org.apache.mina.common.AbstractIoSessionConfig;
 import org.apache.mina.common.ByteBuffer;
 import org.apache.mina.common.DefaultIoServiceMetadata;
 import org.apache.mina.common.FileRegion;
@@ -36,7 +35,6 @@
 import org.apache.mina.common.IoService;
 import org.apache.mina.common.IoServiceMetadata;
 import org.apache.mina.common.IoSession;
-import org.apache.mina.common.IoSessionConfig;
 import org.apache.mina.common.RuntimeIOException;
 import org.apache.mina.common.WriteRequest;
 
@@ -84,23 +82,7 @@
         this.ch = ch;
         this.writeRequestQueue = new LinkedList<WriteRequest>();
         this.handler = service.getHandler();
-
-        // Apply the initial session settings
-        IoSessionConfig sessionConfig = service.getSessionConfig();
-        if (sessionConfig instanceof SocketSessionConfig) {
-            SocketSessionConfig cfg = (SocketSessionConfig) sessionConfig;
-            this.config.setKeepAlive(cfg.isKeepAlive());
-            this.config.setOobInline(cfg.isOobInline());
-            this.config.setReceiveBufferSize(cfg.getReceiveBufferSize());
-            this.config.setReuseAddress(cfg.isReuseAddress());
-            this.config.setSendBufferSize(cfg.getSendBufferSize());
-            this.config.setSoLinger(cfg.getSoLinger());
-            this.config.setTcpNoDelay(cfg.isTcpNoDelay());
-
-            if (this.config.getTrafficClass() != cfg.getTrafficClass()) {
-                this.config.setTrafficClass(cfg.getTrafficClass());
-            }
-        }
+        this.config.setAll(service.getSessionConfig());
     }
 
     public IoService getService() {
@@ -206,8 +188,7 @@
         this.readBufferSize = readBufferSize;
     }
 
-    private class SessionConfigImpl extends AbstractIoSessionConfig implements
-            SocketSessionConfig {
+    private class SessionConfigImpl extends AbstractSocketSessionConfig {
         public boolean isKeepAlive() {
             try {
                 return ch.socket().getKeepAlive();

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/DefaultVmPipeSessionConfig.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/DefaultVmPipeSessionConfig.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/DefaultVmPipeSessionConfig.java
 (original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/DefaultVmPipeSessionConfig.java
 Fri Aug 17 19:27:05 2007
@@ -20,6 +20,7 @@
 package org.apache.mina.transport.vmpipe;
 
 import org.apache.mina.common.AbstractIoSessionConfig;
+import org.apache.mina.common.IoSessionConfig;
 
 /**
  * A default implementation of [EMAIL PROTECTED] VmPipeSessionConfig}.
@@ -30,5 +31,9 @@
 class DefaultVmPipeSessionConfig extends AbstractIoSessionConfig implements
         VmPipeSessionConfig {
     DefaultVmPipeSessionConfig() {
+    }
+
+    @Override
+    protected void doSetAll(IoSessionConfig config) {
     }
 }

Modified: 
mina/trunk/core/src/test/java/org/apache/mina/filter/stream/StreamWriteFilterTest.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/test/java/org/apache/mina/filter/stream/StreamWriteFilterTest.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- 
mina/trunk/core/src/test/java/org/apache/mina/filter/stream/StreamWriteFilterTest.java
 (original)
+++ 
mina/trunk/core/src/test/java/org/apache/mina/filter/stream/StreamWriteFilterTest.java
 Fri Aug 17 19:27:05 2007
@@ -488,7 +488,7 @@
         public void sessionCreated(IoSession session) throws Exception {
             super.sessionCreated(session);
 
-            session.setIdleTime(IdleStatus.READER_IDLE, 5);
+            session.getConfig().setIdleTime(IdleStatus.READER_IDLE, 5);
         }
 
         @Override

Modified: 
mina/trunk/core/src/test/java/org/apache/mina/transport/AbstractBindTest.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/test/java/org/apache/mina/transport/AbstractBindTest.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- 
mina/trunk/core/src/test/java/org/apache/mina/transport/AbstractBindTest.java 
(original)
+++ 
mina/trunk/core/src/test/java/org/apache/mina/transport/AbstractBindTest.java 
Fri Aug 17 19:27:05 2007
@@ -178,7 +178,7 @@
                         .setReceiveBufferSize(2048);
             }
 
-            session.setIdleTime(IdleStatus.BOTH_IDLE, 10);
+            session.getConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
         }
 
         @Override

Modified: 
mina/trunk/example/src/main/java/org/apache/mina/example/echoserver/EchoProtocolHandler.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/example/src/main/java/org/apache/mina/example/echoserver/EchoProtocolHandler.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- 
mina/trunk/example/src/main/java/org/apache/mina/example/echoserver/EchoProtocolHandler.java
 (original)
+++ 
mina/trunk/example/src/main/java/org/apache/mina/example/echoserver/EchoProtocolHandler.java
 Fri Aug 17 19:27:05 2007
@@ -47,7 +47,7 @@
             config.setReceiveBufferSize(2048);
         }
 
-        session.setIdleTime(IdleStatus.BOTH_IDLE, 10);
+        session.getConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
 
         // We're going to use SSL negotiation notification.
         session.setAttribute(SSLFilter.USE_NOTIFICATION);

Modified: 
mina/trunk/example/src/main/java/org/apache/mina/example/httpserver/codec/ServerHandler.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/example/src/main/java/org/apache/mina/example/httpserver/codec/ServerHandler.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- 
mina/trunk/example/src/main/java/org/apache/mina/example/httpserver/codec/ServerHandler.java
 (original)
+++ 
mina/trunk/example/src/main/java/org/apache/mina/example/httpserver/codec/ServerHandler.java
 Fri Aug 17 19:27:05 2007
@@ -36,7 +36,7 @@
     @Override
     public void sessionOpened(IoSession session) {
         // set idle time to 60 seconds
-        session.setIdleTime(IdleStatus.BOTH_IDLE, 60);
+        session.getConfig().setIdleTime(IdleStatus.BOTH_IDLE, 60);
     }
 
     @Override

Modified: 
mina/trunk/example/src/main/java/org/apache/mina/example/netcat/NetCatProtocolHandler.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/example/src/main/java/org/apache/mina/example/netcat/NetCatProtocolHandler.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- 
mina/trunk/example/src/main/java/org/apache/mina/example/netcat/NetCatProtocolHandler.java
 (original)
+++ 
mina/trunk/example/src/main/java/org/apache/mina/example/netcat/NetCatProtocolHandler.java
 Fri Aug 17 19:27:05 2007
@@ -38,7 +38,7 @@
         // Set reader idle time to 10 seconds.
         // sessionIdle(...) method will be invoked when no data is read
         // for 10 seconds.
-        session.setIdleTime(IdleStatus.READER_IDLE, 10);
+        session.getConfig().setIdleTime(IdleStatus.READER_IDLE, 10);
     }
 
     @Override

Modified: 
mina/trunk/example/src/main/java/org/apache/mina/example/sumup/ServerSessionHandler.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/example/src/main/java/org/apache/mina/example/sumup/ServerSessionHandler.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- 
mina/trunk/example/src/main/java/org/apache/mina/example/sumup/ServerSessionHandler.java
 (original)
+++ 
mina/trunk/example/src/main/java/org/apache/mina/example/sumup/ServerSessionHandler.java
 Fri Aug 17 19:27:05 2007
@@ -37,7 +37,7 @@
     @Override
     public void sessionOpened(IoSession session) {
         // set idle time to 60 seconds
-        session.setIdleTime(IdleStatus.BOTH_IDLE, 60);
+        session.getConfig().setIdleTime(IdleStatus.BOTH_IDLE, 60);
 
         // initial sum is zero
         session.setAttachment(new Integer(0));

Modified: 
mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/IoSessionManager.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/IoSessionManager.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- 
mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/IoSessionManager.java
 (original)
+++ 
mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/IoSessionManager.java
 Fri Aug 17 19:27:05 2007
@@ -151,29 +151,6 @@
         session.getFilterChain().remove("LoggerFirst");
     }
 
-    //  IDLE monitoring
-
-    /**
-     * @see archean.util.mina.IoSessionManagerMBean#getReadIdleTime()
-     */
-    public long getReadIdleTime() {
-        return session.getIdleTimeInMillis(IdleStatus.READER_IDLE);
-    }
-
-    /**
-     * @see archean.util.mina.IoSessionManagerMBean#getWriteIdleTime()
-     */
-    public long getWriteIdleTime() {
-        return session.getIdleTimeInMillis(IdleStatus.WRITER_IDLE);
-    }
-
-    /**
-     * @see archean.util.mina.IoSessionManagerMBean#getBothIdleTime()
-     */
-    public long getBothIdleTime() {
-        return session.getIdleTimeInMillis(IdleStatus.BOTH_IDLE);
-    }
-
     public float getByteReadThroughtput() {
         IoSessionStat stats = (IoSessionStat) session
                 .getAttribute(StatCollector.KEY);

Modified: 
mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/IoSessionManagerMBean.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/IoSessionManagerMBean.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- 
mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/IoSessionManagerMBean.java
 (original)
+++ 
mina/trunk/integration-jmx/src/main/java/org/apache/mina/integration/jmx/IoSessionManagerMBean.java
 Fri Aug 17 19:27:05 2007
@@ -22,7 +22,8 @@
 import java.util.Date;
 
 /**
- * MBean interface for the session manager, it's used for instrumenting 
IoSession 
+ * MBean interface for the session manager, it's used for instrumenting 
IoSession
+ *  
  * @author The Apache MINA Project ([EMAIL PROTECTED])
  * @version $Rev$, $Date$
  */
@@ -111,24 +112,6 @@
      * remove the logging filter at begining of the chain
      */
     public void removeFirstLoggingFilter();
-
-    /**
-     * read and write IDLE time
-     * @return idle time in milli-seconds
-     */
-    public long getBothIdleTime();
-
-    /**
-     * read IDLE time
-     * @return read idle time in milli-seconds
-     */
-    public long getReadIdleTime();
-
-    /**
-     * write IDLE time
-     * @return write idle time in milli-seconds
-     */
-    public long getWriteIdleTime();
 
     /**
      * get the read bytes per second throughput

Modified: 
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/DefaultSerialSessionConfig.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/DefaultSerialSessionConfig.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- 
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/DefaultSerialSessionConfig.java
 (original)
+++ 
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/DefaultSerialSessionConfig.java
 Fri Aug 17 19:27:05 2007
@@ -20,6 +20,7 @@
 package org.apache.mina.transport.serial;
 
 import org.apache.mina.common.AbstractIoSessionConfig;
+import org.apache.mina.common.IoSessionConfig;
 
 /**
  * The default configuration for a serial session [EMAIL PROTECTED] 
SerialSessionConfig}.
@@ -29,8 +30,6 @@
  */
 public class DefaultSerialSessionConfig extends AbstractIoSessionConfig 
implements SerialSessionConfig {
 
-    private int timeout = 2000;
-
     private int receiveThreshold = -1;
 
     private int inputBufferSize = 8;
@@ -40,6 +39,14 @@
     public DefaultSerialSessionConfig() {
 
     }
+    
+    protected void doSetAll(IoSessionConfig config) {
+        if (config instanceof SerialSessionConfig) {
+            SerialSessionConfig cfg = (SerialSessionConfig) config;
+            setInputBufferSize(cfg.getInputBufferSize());
+            setReceiveThreshold(cfg.getReceiveThreshold());
+        }
+    }
 
     public int getInputBufferSize() {
         return inputBufferSize;
@@ -63,13 +70,5 @@
 
     public void setReceiveThreshold(int bytes) {
         receiveThreshold = bytes;
-    }
-
-    public int getTimeout() {
-        return timeout;
-    }
-
-    public void setTimeout(int timeout) {
-        this.timeout = timeout;
     }
 }

Modified: 
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- 
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java
 (original)
+++ 
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java
 Fri Aug 17 19:27:05 2007
@@ -130,8 +130,13 @@
 
         SerialSessionConfig config = (SerialSessionConfig) getSessionConfig();
 
-        SerialPort serialPort = (SerialPort) portId.open(user, config
-                .getTimeout());
+        long connectTimeout = getConnectTimeoutMillis();
+        if (connectTimeout > Integer.MAX_VALUE) {
+            connectTimeout = Integer.MAX_VALUE;
+        }
+        
+        SerialPort serialPort = (SerialPort) portId.open(
+                user, (int) connectTimeout);
 
         serialPort.setSerialPortParams(portAddress.getBauds(), portAddress
                 .getDataBitsForRXTX(), portAddress.getStopBitsForRXTX(),

Modified: 
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSessionConfig.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSessionConfig.java?view=diff&rev=567208&r1=567207&r2=567208
==============================================================================
--- 
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSessionConfig.java
 (original)
+++ 
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSessionConfig.java
 Fri Aug 17 19:27:05 2007
@@ -31,18 +31,6 @@
 public interface SerialSessionConfig extends IoSessionConfig {
 
     /**
-     * Gets the timeout for port opening in milliseconds.
-     * @return timeout for port opening in milliseconds
-     */
-    int getTimeout();
-
-    /**
-     * Sets the timeout for opening the port. Value in milliseconds.
-     * @param timeout the timeout value in millseconds
-     */
-    public void setTimeout(int timeout);
-
-    /**
      * Gets the input buffer size. Note that this method is advisory and the 
underlying OS 
      * may choose not to report correct values for the buffer size.
      * @return input buffer size in bytes


Reply via email to