You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by jv...@apache.org on 2011/04/16 21:12:46 UTC

svn commit: r1094030 - in /mina/branches/3.0/core/src/main/java/org/apache/mina: IoSession.java session/AbstractIoSession.java transport/tcp/NioSelectorProcessor.java transport/tcp/NioTcpSession.java

Author: jvermillard
Date: Sat Apr 16 19:12:46 2011
New Revision: 1094030

URL: http://svn.apache.org/viewvc?rev=1094030&view=rev
Log:
session state

Modified:
    mina/branches/3.0/core/src/main/java/org/apache/mina/IoSession.java
    mina/branches/3.0/core/src/main/java/org/apache/mina/session/AbstractIoSession.java
    mina/branches/3.0/core/src/main/java/org/apache/mina/transport/tcp/NioSelectorProcessor.java
    mina/branches/3.0/core/src/main/java/org/apache/mina/transport/tcp/NioTcpSession.java

Modified: mina/branches/3.0/core/src/main/java/org/apache/mina/IoSession.java
URL: http://svn.apache.org/viewvc/mina/branches/3.0/core/src/main/java/org/apache/mina/IoSession.java?rev=1094030&r1=1094029&r2=1094030&view=diff
==============================================================================
--- mina/branches/3.0/core/src/main/java/org/apache/mina/IoSession.java (original)
+++ mina/branches/3.0/core/src/main/java/org/apache/mina/IoSession.java Sat Apr 16 19:12:46 2011
@@ -239,4 +239,16 @@ public interface IoSession {
      * @return the set of names of all user-defined attributes.
      */
     Set<Object> getAttributeNames();
+    
+    
+    SessionState getState();
+    
+    /**
+     * State of a {@link IoSession}
+     * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+     *
+     */
+    public enum SessionState {
+        CREATED,CONNECTED,CLOSING,CLOSED
+    }
 }
\ No newline at end of file

Modified: mina/branches/3.0/core/src/main/java/org/apache/mina/session/AbstractIoSession.java
URL: http://svn.apache.org/viewvc/mina/branches/3.0/core/src/main/java/org/apache/mina/session/AbstractIoSession.java?rev=1094030&r1=1094029&r2=1094030&view=diff
==============================================================================
--- mina/branches/3.0/core/src/main/java/org/apache/mina/session/AbstractIoSession.java (original)
+++ mina/branches/3.0/core/src/main/java/org/apache/mina/session/AbstractIoSession.java Sat Apr 16 19:12:46 2011
@@ -66,6 +66,9 @@ public abstract class AbstractIoSession 
     /** unique identifier generator */
     private static final AtomicLong NEXT_ID = new AtomicLong(0);
 
+    
+    protected SessionState state;
+    
     /**
      * Create an {@link IoSession} with a unique identifier (
      * {@link IoSession#getId()}) and an associated {@link IoService}
@@ -79,8 +82,12 @@ public abstract class AbstractIoSession 
         creationTime = System.currentTimeMillis();
         this.service = service;
         LOG.debug("Created new session with id : {}", id);
+        this.state=SessionState.CREATED;
     }
 
+    public SessionState getState() {
+        return state;
+    }
     /**
      * {@inheritDoc}
      */

Modified: mina/branches/3.0/core/src/main/java/org/apache/mina/transport/tcp/NioSelectorProcessor.java
URL: http://svn.apache.org/viewvc/mina/branches/3.0/core/src/main/java/org/apache/mina/transport/tcp/NioSelectorProcessor.java?rev=1094030&r1=1094029&r2=1094030&view=diff
==============================================================================
--- mina/branches/3.0/core/src/main/java/org/apache/mina/transport/tcp/NioSelectorProcessor.java (original)
+++ mina/branches/3.0/core/src/main/java/org/apache/mina/transport/tcp/NioSelectorProcessor.java Sat Apr 16 19:12:46 2011
@@ -209,6 +209,7 @@ public class NioSelectorProcessor implem
                             SelectionKey key = session.getSocketChannel().register(selector, SelectionKey.OP_READ);
                             key.attach(session);
                             sessionKey.put(session, key);
+                            session.setConnected();
                         }
                     }
 

Modified: mina/branches/3.0/core/src/main/java/org/apache/mina/transport/tcp/NioTcpSession.java
URL: http://svn.apache.org/viewvc/mina/branches/3.0/core/src/main/java/org/apache/mina/transport/tcp/NioTcpSession.java?rev=1094030&r1=1094029&r2=1094030&view=diff
==============================================================================
--- mina/branches/3.0/core/src/main/java/org/apache/mina/transport/tcp/NioTcpSession.java (original)
+++ mina/branches/3.0/core/src/main/java/org/apache/mina/transport/tcp/NioTcpSession.java Sat Apr 16 19:12:46 2011
@@ -46,6 +46,7 @@ public class NioTcpSession extends Abstr
     public SocketChannel getSocketChannel() {
         return channel;
     }
+    
     /**
      * {@inheritDoc}
      */
@@ -141,5 +142,11 @@ public class NioTcpSession extends Abstr
         // TODO Auto-generated method stub
         return null;
     }
-    
+
+    void setConnected() {
+        if (getState() != SessionState.CREATED) {
+            throw new RuntimeException("Trying to open a non created session");
+        }
+        state = SessionState.CONNECTED;    
+    }
 }
\ No newline at end of file