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;
}
/**