QueueHandle

Struct QueueHandle 

Source
pub struct QueueHandle(/* private fields */);
Expand description

Queue handle.

This handle is used to interact with queues created by the driver implementation.

Implementations§

Source§

impl QueueHandle

Source

pub fn new(capacity: usize, item_size: usize) -> Self

Creates a new queue instance.

Source

pub fn leak(self) -> QueuePtr

Converts this object into a pointer without dropping it.

Source

pub unsafe fn from_ptr(ptr: QueuePtr) -> Self

Recovers the object from a leaked pointer.

§Safety
  • The caller must only use pointers created using Self::leak.
  • The caller must ensure the pointer is not shared.
Source

pub unsafe fn ref_from_ptr(ptr: &QueuePtr) -> &Self

Creates a reference to this object from a leaked pointer.

This function is used in the esp-radio code to interact with the queue.

§Safety
  • The caller must only use pointers created using Self::leak.
Source

pub unsafe fn send_to_front( &self, item: *const u8, timeout_us: Option<u32>, ) -> bool

Enqueues a high-priority item.

If the queue is full, this function will block for the given timeout. If timeout is None, the function will block indefinitely.

This function returns true if the item was successfully enqueued, false otherwise.

§Safety

The caller must ensure that item can be dereferenced and points to an allocation of a size equal to the queue’s item size.

Source

pub unsafe fn send_to_back( &self, item: *const u8, timeout_us: Option<u32>, ) -> bool

Enqueues an item.

If the queue is full, this function will block for the given timeout. If timeout is None, the function will block indefinitely.

This function returns true if the item was successfully enqueued, false otherwise.

§Safety

The caller must ensure that item can be dereferenced and points to an allocation of a size equal to the queue’s item size.

Source

pub unsafe fn try_send_to_back_from_isr( &self, item: *const u8, higher_priority_task_waken: Option<&mut bool>, ) -> bool

Attempts to enqueues an item.

If the queue is full, this function will immediately return false.

If a higher priority task is woken up by this operation, the higher_prio_task_waken flag is set to true.

§Safety

The caller must ensure that item can be dereferenced and points to an allocation of a size equal to the queue’s item size.

Source

pub unsafe fn receive(&self, item: *mut u8, timeout_us: Option<u32>) -> bool

Dequeues an item from the queue.

If the queue is empty, this function will block for the given timeout. If timeout is None, the function will block indefinitely.

This function returns true if the item was successfully dequeued, false otherwise.

§Safety

The caller must ensure that item can be dereferenced and points to an allocation of a size equal to the queue’s item size.

Source

pub unsafe fn try_receive_from_isr( &self, item: *mut u8, higher_priority_task_waken: Option<&mut bool>, ) -> bool

Attempts to dequeue an item from the queue.

If the queue is empty, this function will return false immediately.

This function returns true if the item was successfully dequeued, false otherwise.

If a higher priority task is woken up by this operation, the higher_prio_task_waken flag is set to true.

§Safety

The caller must ensure that item can be dereferenced and points to an allocation of a size equal to the queue’s item size.

Source

pub unsafe fn remove(&self, item: *const u8)

Removes an item from the queue.

§Safety

The caller must ensure that item can be dereferenced and points to an allocation of a size equal to the queue’s item size.

Source

pub fn messages_waiting(&self) -> usize

Returns the number of messages in the queue.

Trait Implementations§

Source§

impl Drop for QueueHandle

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl Freeze for QueueHandle

§

impl RefUnwindSafe for QueueHandle

§

impl !Send for QueueHandle

§

impl !Sync for QueueHandle

§

impl Unpin for QueueHandle

§

impl UnwindSafe for QueueHandle

Blanket Implementations§

§

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

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

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, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

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

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

Performs the conversion.
§

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

§

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

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

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

Performs the conversion.