You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2010/05/17 01:56:14 UTC
svn commit: r944944 -
/directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/controls/PagedSearchContext.java
Author: elecharny
Date: Sun May 16 23:56:14 2010
New Revision: 944944
URL: http://svn.apache.org/viewvc?rev=944944&view=rev
Log:
o Used an AtomicInteger for the cookie
o Compute the cookie to avoid collisions
Modified:
directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/controls/PagedSearchContext.java
Modified: directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/controls/PagedSearchContext.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/controls/PagedSearchContext.java?rev=944944&r1=944943&r2=944944&view=diff
==============================================================================
--- directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/controls/PagedSearchContext.java (original)
+++ directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/controls/PagedSearchContext.java Sun May 16 23:56:14 2010
@@ -21,6 +21,7 @@ package org.apache.directory.server.ldap
import java.util.HashSet;
import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
import org.apache.directory.server.core.filtering.EntryFilteringCursor;
import org.apache.directory.server.ldap.LdapSession;
@@ -52,13 +53,13 @@ public class PagedSearchContext
private byte[] cookie;
/** The integer value for the cookie */
- private int cookieValue;
+ private AtomicInteger cookieValue;
/** The associated cursor for the current search request */
private EntryFilteringCursor cursor;
/**
- * Creates a new instance of this class, storing the Searchrequest into it.
+ * Creates a new instance of this class, storing the SearchRequest into it.
*/
public PagedSearchContext( InternalSearchRequest searchRequest )
{
@@ -68,9 +69,9 @@ public class PagedSearchContext
// We compute a key for this cookie. It combines the search request
// and some time seed, in order to avoid possible collisions, as
// a user may send more than one PagedSearch on the same session.
- cookieValue = (int)(System.nanoTime()*17) + searchRequest.getMessageId();
+ cookieValue = new AtomicInteger( searchRequest.getMessageId() << 16 );
- cookie = Value.getBytes( cookieValue );
+ cookie = Value.getBytes( cookieValue.get() );
}
@@ -89,7 +90,7 @@ public class PagedSearchContext
public int getCookieValue()
{
- return cookieValue;
+ return cookieValue.get();
}
@@ -101,8 +102,7 @@ public class PagedSearchContext
*/
public byte[] getNewCookie()
{
- cookieValue = cookieValue + (int)(System.nanoTime()*17);
- cookie = Value.getBytes( cookieValue );
+ cookie = Value.getBytes( cookieValue.incrementAndGet() );
return cookie;
}