Struct ReadHalf

Source
pub struct ReadHalf<'a, M: RingMem> { /* private fields */ }
Expand description

The reader for the incoming ring buffer of a Queue.

Implementations§

Source§

impl<'a, M: RingMem> ReadHalf<'a, M>

Source

pub fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Error>>

Polls the incoming ring for more packets.

This will automatically manage interrupt masking. The queue will keep interrupts masked until this is called. Once this is called, interrupts will remain unmasked until this or another poll or async read function is called again.

Source

pub fn poll_read_batch<'b>( &'b mut self, cx: &mut Context<'_>, ) -> Poll<Result<ReadBatch<'b, M>, Error>>

Polls the incoming ring for more packets and returns a batch reader for them.

This will manage interrupt masking as described in Self::poll_ready.

Source

pub fn try_read_batch(&mut self) -> Result<ReadBatch<'_, M>, TryReadError>

Tries to get a reader for the next batch of packets.

Source

pub fn read_batch<'b>(&'b mut self) -> BatchRead<'a, 'b, M>

Waits for the next batch of packets to be ready and returns a reader for them.

This will manage interrupt masking as described in Self::poll_ready.

Source

pub fn try_read(&mut self) -> Result<PacketRef<'_, M>, TryReadError>

Tries to read the next packet.

Returns Err(TryReadError::Empty) if the ring is empty.

Source

pub fn read<'b>(&'b mut self) -> Read<'a, 'b, M>

Waits for the next packet to be ready and returns it.

Source

pub fn supports_pending_send_size(&self) -> bool

Indicates whether pending send size notification is supported on the vmbus ring.

Auto Trait Implementations§

§

impl<'a, M> Freeze for ReadHalf<'a, M>

§

impl<'a, M> !RefUnwindSafe for ReadHalf<'a, M>

§

impl<'a, M> Send for ReadHalf<'a, M>
where M: Sync,

§

impl<'a, M> Sync for ReadHalf<'a, M>
where M: Sync,

§

impl<'a, M> Unpin for ReadHalf<'a, M>

§

impl<'a, M> !UnwindSafe for ReadHalf<'a, M>

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoAny for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts into a Box<dyn Any>.
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.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more