Package netscape.ldap

Class LDAPResponseListener

  • All Implemented Interfaces:
    java.io.Serializable

    public class LDAPResponseListener
    extends java.lang.Object
    Represents the message queue associated with a particular LDAP operation or operations.
    See Also:
    Serialized Form
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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.
      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.
      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 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.
        Returns:
        a response for an LDAP operation or null if there are no more outstanding requests.
        Throws:
        LDAPException - Network error exception
        LDAPInterruptedException - The invoking thread was interrupted
      • 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.

        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
        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