Class HandleMap

java.lang.Object
org.ldaptive.transport.netty.HandleMap

final class HandleMap extends Object
Container for operation handles that are waiting on a response from the LDAP server.
  • Field Details

    • LOGGER

      private static final org.slf4j.Logger LOGGER
      Logger for this class.
    • THROTTLE_REQUESTS_PROPERTY

      private static final String THROTTLE_REQUESTS_PROPERTY
      Ldap netty transport system property.
      See Also:
    • THROTTLE_TIMEOUT_PROPERTY

      private static final String THROTTLE_TIMEOUT_PROPERTY
      Ldap netty transport system property.
      See Also:
    • THROTTLE_REQUESTS

      private static final int THROTTLE_REQUESTS
      If property is greater than zero, use the throttle semaphore.
    • THROTTLE_TIMEOUT

      private static final Duration THROTTLE_TIMEOUT
      Maximum time to wait for the throttle semaphore. Default is 60 seconds.
    • pending

      private final Map<Integer,DefaultOperationHandle> pending
      Map of message IDs to their operation handle.
    • notificationLock

      private final AtomicBoolean notificationLock
      Only one notification can occur at a time.
    • throttle

      private final Semaphore throttle
      Semaphore to throttle incoming requests.
    • open

      private boolean open
      Whether this queue is currently accepting new handles.
  • Constructor Details

    • HandleMap

      HandleMap()
      Creates a new handle map.
  • Method Details

    • open

      public void open()
      Open this queue to receive new handles.
    • close

      public void close()
      Close the queue to new handles.
    • isOpen

      public boolean isOpen()
      Returns whether this handle map is open.
      Returns:
      is open
    • get

      public DefaultOperationHandle get(int id)
      Returns the operation handle for the supplied message id. Returns null if this queue is not open.
      Parameters:
      id - message id
      Returns:
      operation handle or null
    • remove

      public DefaultOperationHandle remove(int id)
      Removes the operation handle from the supplied message id. Returns null if this queue is not open.
      Parameters:
      id - message id
      Returns:
      operation handle or null
    • put

      public DefaultOperationHandle put(int id, DefaultOperationHandle handle) throws LdapException
      Puts the supplied operation handle into the queue if the supplied id doesn't already exist in the queue.
      Parameters:
      id - message id
      handle - to put
      Returns:
      null or existing operation handle for the id
      Throws:
      LdapException - if this queue is not open
    • handles

      Returns all the operation handles in the queue.
      Returns:
      all operation handles
    • size

      public int size()
      Returns the size of this queue.
      Returns:
      queue size
    • clear

      public void clear()
      Removes all operation handles from the queue.
    • acquireThrottle

      private void acquireThrottle() throws LdapException
      Attempt to acquire the throttle semaphore. No-op if throttling is not enabled.
      Throws:
      LdapException - if the semaphore cannot be acquired or the thread is interrupted
    • releaseThrottle

      private void releaseThrottle(int permits)
      Release permits on the throttle semaphore. No-op if throttling is not enabled.
      Parameters:
      permits - number of permits to release
    • abandonRequests

      public void abandonRequests()
      Invokes DefaultOperationHandle.abandon() for all handles that have sent a request but not received a response. This method removes all handles from the queue.
    • notifyOperationHandles

      public void notifyOperationHandles(LdapException e)
      Notifies all operation handles in the queue that an exception has occurred. See DefaultOperationHandle.exception(LdapException). This method removes all handles from the queue.
      Parameters:
      e - exception to provides to handles
    • notifyOperationHandles

      public void notifyOperationHandles(UnsolicitedNotification notification)
      Send the supplied notification to all handles waiting for a response.
      Parameters:
      notification - to send to response handles
    • toString

      public String toString()
      Overrides:
      toString in class Object