netscape.ldap
Class LDAPResponseListener
java.lang.Object
netscape.ldap.LDAPMessageQueue
netscape.ldap.LDAPResponseListener
- java.io.Serializable
public class LDAPResponseListener
extends netscape.ldap.LDAPMessageQueue
Represents the message queue associated with a particular LDAP
operation or operations.
int[] | getMessageIDs() - Returns message IDs for all outstanding requests
|
LDAPResponse | getResponse() - Blocks until a response is available, or until all operations
associated with the object have completed or been canceled, and
returns the response.
|
boolean | isResponseReceived() - Reports true if a response has been received from the server.
|
void | merge(LDAPResponseListener listener2) - Merge two response listeners.
|
getMessageIDs
public int[] getMessageIDs()
Returns message IDs for all outstanding requests
getResponse
public LDAPResponse getResponse()
throws LDAPException
Blocks until a response is available, or until all operations
associated with the object have completed or been canceled, and
returns the response.
- a response for an LDAP operation or null if there are no
more outstanding requests.
isResponseReceived
public boolean isResponseReceived()
Reports true if a response has been received from the server.
- a flag indicating whether the response message queue is empty.
merge
public void merge(LDAPResponseListener 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.
listener2
- the listener with which to merge