pub struct BlockingQueue<E>where
    E: Send + Sync,{ /* 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>where E: Send + Sync,

source

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);
source

pub fn len(&self) -> usize

The current length of the queue

use command_executor::blocking_queue::BlockingQueue;
let q: BlockingQueue<i32> = BlockingQueue::new(4);
q.enqueue(11);
assert_eq!(q.len(), 1);
source

pub fn capacity(&self) -> usize

The declared capacity of the queue. May be smaller than the actual capacity of the actual storage

source

pub fn is_empty(&self) -> bool

Indication if the queue is empty in this point of time.

source

pub fn is_full(&self) -> bool

Indication if the queue is full in this point of time.

source

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.

source

pub fn enqueue(&self, element: E)

Enqueue an element. When the queue is full will block until space available.

source

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.

source

pub fn dequeue(&self) -> Option<E>

Dequeue an element from the queue. When the queue is empty will block until an element is available

source

pub fn try_dequeue(&self, timeout: Duration) -> Option<E>

Dequeue and element from the queue with timeout.

Auto Trait Implementations§

§

impl<E> RefUnwindSafe for BlockingQueue<E>

§

impl<E> Send for BlockingQueue<E>

§

impl<E> Sync for BlockingQueue<E>

§

impl<E> Unpin for BlockingQueue<E>where E: Unpin,

§

impl<E> UnwindSafe for BlockingQueue<E>

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.