Struct DataPacket

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

An incoming data packet.

Implementations§

Source§

impl<T: RingMem> DataPacket<'_, T>

Source

pub fn reader(&self) -> impl MemoryRead + '_

A reader for the data payload.

N.B. This reads the payload in place, so multiple instantiations of the reader may see multiple different results if the (malicious) opposite endpoint is mutating the ring buffer.

Source

pub fn transaction_id(&self) -> Option<u64>

The packet’s transaction ID. Set if and only if a completion packet was requested.

Source

pub fn external_range_count(&self) -> usize

The number of GPA direct ranges.

Source

pub fn read_external_ranges( &self, ) -> Result<MultiPagedRangeBuf<GpnList>, ExternalDataError>

Reads the GPA direct range descriptors from the packet.

Source

pub fn transfer_buffer_id(&self) -> Option<u16>

Reads the transfer buffer ID from the packet, or None if this is not a transfer packet.

Source

pub fn read_transfer_ranges<'a, I>( &self, transfer_buf: I, ) -> Result<MultiPagedRangeBuf<GpnList>, AccessError>
where I: Iterator<Item = PagedRange<'a>>,

Reads the transfer descriptors from the packet using the provided buffer. This buffer should be the one associated with the value returned from transfer_buffer_id().

Auto Trait Implementations§

§

impl<'a, T> Freeze for DataPacket<'a, T>

§

impl<'a, T> RefUnwindSafe for DataPacket<'a, T>
where T: RefUnwindSafe,

§

impl<'a, T> Send for DataPacket<'a, T>
where T: Sync,

§

impl<'a, T> Sync for DataPacket<'a, T>
where T: Sync,

§

impl<'a, T> Unpin for DataPacket<'a, T>

§

impl<'a, T> UnwindSafe for DataPacket<'a, T>
where T: RefUnwindSafe,

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.

§

impl<T> IntoAny for T
where T: Any,

§

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