Class FifoDeliveryQueue

java.lang.Object
org.apache.qpid.protonj2.client.util.FifoDeliveryQueue
All Implemented Interfaces:
DeliveryQueue

public final class FifoDeliveryQueue extends Object implements DeliveryQueue
Simple first in / first out Delivery Queue.
  • Constructor Details

    • FifoDeliveryQueue

      public FifoDeliveryQueue(int queueDepth)
      Creates a new first in / first out message queue with the given queue depth
      Parameters:
      queueDepth - The Queue depth to configure for this FIFO Message Queue.
  • Method Details

    • enqueueFirst

      public void enqueueFirst(ClientDelivery envelope)
      Description copied from interface: DeliveryQueue
      Adds the given Delivery to the front of the queue.
      Specified by:
      enqueueFirst in interface DeliveryQueue
      Parameters:
      envelope - The in-bound Delivery to enqueue.
    • enqueue

      public void enqueue(ClientDelivery envelope)
      Description copied from interface: DeliveryQueue
      Adds the given Delivery to the end of the Delivery queue.
      Specified by:
      enqueue in interface DeliveryQueue
      Parameters:
      envelope - The in-bound Delivery to enqueue.
    • dequeue

      public ClientDelivery dequeue(long timeout) throws InterruptedException
      Description copied from interface: DeliveryQueue
      Used to get an Delivery. The amount of time this method blocks is based on the timeout value that is supplied to it.
      • If the timeout value is less than zero the dequeue operation blocks until a Delivery is enqueued or the queue is stopped.
      • If the timeout value is zero the dequeue operation will not block and will either return the next Delivery on the Queue or null to indicate the queue is empty.
      • If the timeout value is greater than zero then the method will either return the next Delivery in the queue or block until the timeout (in milliseconds) has expired or until a new Delivery is placed onto the queue.
      Specified by:
      dequeue in interface DeliveryQueue
      Parameters:
      timeout - The amount of time to wait for an entry to be added before returning null.
      Returns:
      null if we timeout or if the Receiver is closed.
      Throws:
      InterruptedException - if the wait is interrupted.
    • dequeueNoWait

      public ClientDelivery dequeueNoWait()
      Description copied from interface: DeliveryQueue
      Used to get an enqueued Delivery if on exists, otherwise returns null.
      Specified by:
      dequeueNoWait in interface DeliveryQueue
      Returns:
      the next Delivery in the Queue if one exists, otherwise null.
    • start

      public void start()
      Description copied from interface: DeliveryQueue
      Starts the Delivery Queue. An non-started Queue will always return null for any of the Queue methods.
      Specified by:
      start in interface DeliveryQueue
    • stop

      public void stop()
      Description copied from interface: DeliveryQueue
      Stops the Delivery Queue. Deliveries cannot be read from the Queue when it is in the stopped state and any waiters will be woken.
      Specified by:
      stop in interface DeliveryQueue
    • close

      public void close()
      Description copied from interface: DeliveryQueue
      Closes the Delivery Queue. No Delivery can be added or removed from the Queue once it has entered the closed state.
      Specified by:
      close in interface DeliveryQueue
    • isRunning

      public boolean isRunning()
      Specified by:
      isRunning in interface DeliveryQueue
      Returns:
      true if the Queue is not in the stopped or closed state.
    • isClosed

      public boolean isClosed()
      Specified by:
      isClosed in interface DeliveryQueue
      Returns:
      true if the Queue has been closed.
    • isEmpty

      public boolean isEmpty()
      Specified by:
      isEmpty in interface DeliveryQueue
      Returns:
      true if there are no deliveries in the queue.
    • size

      public int size()
      Description copied from interface: DeliveryQueue
      Returns the number of deliveries currently in the Queue. This value is only meaningful at the time of the call as the size of the Queue changes rapidly as deliveries arrive and are consumed.
      Specified by:
      size in interface DeliveryQueue
      Returns:
      the current number of Delivery objects in the Queue.
    • clear

      public void clear()
      Description copied from interface: DeliveryQueue
      Clears the Queue of any queued Delivery values.
      Specified by:
      clear in interface DeliveryQueue
    • toString

      public String toString()
      Overrides:
      toString in class Object