Skip to main content

CompletionQueue

Struct CompletionQueue 

Source
pub struct CompletionQueue { /* private fields */ }
Expand description

A shared handle to a Completion Queue (CQ).

This struct is thread-safe (Sync) and reference-counted (Arc). It holds a strong reference to the Context that created it, ensuring the device remains open.

Implementations§

Source§

impl CompletionQueue

Source

pub fn create( context: &Context, min_capacity: u32, ) -> IbvResult<CompletionQueue>

Creates a new Completion Queue.

§Arguments
  • context — The device context on which to create the CQ.
  • min_capacity — The minimum number of completion entries this CQ must hold. The hardware may allocate a larger queue.
§Errors
Source

pub fn poll<'poll_buff>( &self, completions: &'poll_buff mut [PollSlot], ) -> IbvResult<PolledCompletions<'poll_buff>>

Polls the CQ for completed work requests.

This method checks the hardware queue for completions. It is non-blocking: if no completions are available, it returns an empty iterator immediately.

§Arguments
  • completions — A mutable slice of PollSlots. This buffer serves as the destination where the NIC/driver will write the completion data. By requiring the caller to provide this buffer, the library avoids internal heap allocations during the hot polling loop. If the buffer length exceeds i32::MAX, only i32::MAX entries will be polled and the remaining slots will be unused; a warning is logged in that case.
§Returns

Returns a PolledCompletions iterator wrapper. This iterator yields owned WorkCompletion values constructed from the data copied by the NIC into the provided completions buffer.

Source

pub fn min_capacity(&self) -> u32

Returns the minimum capacity of the Completion Queue.

Source

pub fn context(&self) -> &Context

Returns a reference to the Context associated with this CQ.

Trait Implementations§

Source§

impl Clone for CompletionQueue

Source§

fn clone(&self) -> CompletionQueue

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CompletionQueue

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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 T
where 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.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

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

Source§

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.