netscape.ldap
Class LDAPSearchListener

java.lang.Object
  |
  +--netscape.ldap.LDAPMessageQueue
        |
        +--netscape.ldap.LDAPSearchListener
All Implemented Interfaces:
java.io.Serializable

public class LDAPSearchListener
extends netscape.ldap.LDAPMessageQueue

Manages search results, references and responses returned on one or more search requests

See Also:
Serialized Form

Method Summary
 int getMessageCount()
          Returns the count of queued messages
 int[] getMessageIDs()
          Returns message IDs for all outstanding requests
 int getRequestCount()
          Returns the number of outstanding requests.
 LDAPMessage getResponse()
          Blocks until a search result, reference or response is available, * or until all operations associated with the object have completed * or been canceled.
 boolean isResponseReceived()
          Reports true if a response has been received from the server.
 void merge(LDAPSearchListener listener2)
          Merge two response listeners.
 java.lang.String toString()
          String representation of the object
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Method Detail

getResponse

public LDAPMessage getResponse()
                        throws LDAPException
Blocks until a search result, reference or response is available, * or until all operations associated with the object have completed * or been canceled.

Returns:
a search result, search reference, search response message, or null if there are no more outstanding requests.
Throws:
LDAPException - Network error exception
LDAPInterruptedException - The invoking thread was interrupted
See Also:
LDAPResponse, LDAPSearchResult, LDAPSearchResultReference

merge

public void merge(LDAPSearchListener listener2)
Merge two response listeners. Move/append the content from another response listener to this one.

To be used for synchronization of asynchronous LDAP operations where requests are sent by one thread but processed by another one.

A client may be implemented in such a way that one thread makes LDAP requests and calls l.getMessageIDs(), while another thread is responsible for processing of responses (call l.getResponse()). Both threads are using the same listener objects. In such a case, a race condition may occur, where a LDAP response message is retrieved and the request terminated (request ID removed) before the first thread has a chance to execute l.getMessageIDs(). The proper way to handle this scenario is to create a separate listener for each new request, and after l.getMessageIDs() has been invoked, merge the new request with the existing one.

Parameters:
listener2 - the listener with which to merge

isResponseReceived

public boolean isResponseReceived()
Reports true if a response has been received from the server.

Returns:
a flag indicating whether the response message queue is empty.

getMessageIDs

public int[] getMessageIDs()
Returns message IDs for all outstanding requests

Overrides:
getMessageIDs in class netscape.ldap.LDAPMessageQueue
Returns:
message ID array.

getMessageCount

public int getMessageCount()
Returns the count of queued messages

Returns:
message count.

getRequestCount

public int getRequestCount()
Returns the number of outstanding requests.

Returns:
outstanding request count.

toString

public java.lang.String toString()
String representation of the object

Overrides:
toString in class java.lang.Object