Author: elecharny
Date: Sun Mar  1 22:39:07 2009
New Revision: 749144

URL: http://svn.apache.org/viewvc?rev=749144&view=rev
Log:
Applied Serge's patch for DIRMINA-665

Modified:
    
mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java?rev=749144&r1=749143&r2=749144&view=diff
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
 (original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
 Sun Mar  1 22:39:07 2009
@@ -29,6 +29,7 @@
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.mina.core.buffer.IoBuffer;
 import org.apache.mina.core.file.DefaultFileRegion;
@@ -98,6 +99,12 @@
     // The Session creation's time */
     private final long creationTime;
 
+    /** An id generator guaranteed to generate unique IDs for the session */
+    private static AtomicLong idGenerator = new AtomicLong(0);
+    
+    /** The session ID */
+    private long sessionId;
+    
     /**
      * A future that will be set 'closed' when the connection is closed.
      */
@@ -157,16 +164,19 @@
         
         // TODO add documentation
         closeFuture.addListener(SCHEDULED_COUNTER_RESETTER);
+        
+        // Set a new ID for this session
+        sessionId = idGenerator.incrementAndGet();
     }
 
     /**
      * {...@inheritdoc}
      * 
-     * TODO this method implementation is totally wrong. It has to
-     * be rewritten.
+     * We use an AtomicLong to guarantee that the session ID are
+     * unique.
      */
     public final long getId() {
-        return hashCode() & 0xFFFFFFFFL;
+        return sessionId;
     }
 
     /**


Reply via email to