pub struct BlockingQueue<E>{ /* private fields */ }
Expand description
Blocking bounded queue
E: Send + Sync
- the element type
This is a multiple producers / multiple consumers blocking bounded queue.
Reference: Producer-Consumer
Implementations§
Source§impl<E> BlockingQueue<E>
impl<E> BlockingQueue<E>
Sourcepub fn new(capacity: usize) -> BlockingQueue<E>
pub fn new(capacity: usize) -> BlockingQueue<E>
Create a new queue with size
capacity
use command_executor::blocking_queue::BlockingQueue;
let q: BlockingQueue<i32> = BlockingQueue::new(4);
Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
The current length of the queue. Note that the reported length is correct at the time of checking, the actual length may change between the call and the access to the result value. Should be used for diagnostic and monitoring only.
use command_executor::blocking_queue::BlockingQueue;
let q: BlockingQueue<i32> = BlockingQueue::new(4);
q.enqueue(11);
assert_eq!(q.len(), 1);
Sourcepub fn capacity(&self) -> usize
pub fn capacity(&self) -> usize
The declared capacity of the queue. May be smaller than the actual capacity of the actual storage
Sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Indication if the queue is empty in this point of time. Should be used for diagnostic and monitoring only.
Sourcepub fn is_full(&self) -> bool
pub fn is_full(&self) -> bool
Indication if the queue is full in this point of time. Should be used for diagnostic and monitoring only.
Sourcepub fn wait_empty(&self, timeout: Duration) -> bool
pub fn wait_empty(&self, timeout: Duration) -> bool
Wait until the queue is empty.
Note that the empty state is temporary. This method is mostly useful when we know that no elements are to be enqueued and we want an indication of completion.
Sourcepub fn enqueue(&self, element: E)
pub fn enqueue(&self, element: E)
Enqueue an element. When the queue is full will block until space available.
Sourcepub fn try_enqueue(&self, element: E, timeout: Duration) -> Option<E>
pub fn try_enqueue(&self, element: E, timeout: Duration) -> Option<E>
Enqueue an element with timeout. When timeout is exceeded return the element to caller.
Sourcepub fn dequeue(&self) -> Option<E>
pub fn dequeue(&self) -> Option<E>
Dequeue an element from the queue. When the queue is empty will block until an element is available
Sourcepub fn try_dequeue(&self, timeout: Duration) -> Option<E>
pub fn try_dequeue(&self, timeout: Duration) -> Option<E>
Dequeue and element from the queue with timeout.