struct DescriptorChainRegions {
    regions: SmallVec<[MemRegion; 2]>,
    current_region_index: usize,
    current_region_offset: usize,
    bytes_consumed: usize,
}

Fields§

§regions: SmallVec<[MemRegion; 2]>§current_region_index: usize§current_region_offset: usize§bytes_consumed: usize

Implementations§

source§

impl DescriptorChainRegions

source

fn new(regions: SmallVec<[MemRegion; 2]>) -> Self

source

fn available_bytes(&self) -> usize

source

fn bytes_consumed(&self) -> usize

source

fn get_remaining_regions(&self) -> MemRegionIter<'_>

Returns all the remaining buffers in the DescriptorChain. Calling this function does not consume any bytes from the DescriptorChain. Instead callers should use the consume method to advance the DescriptorChain. Multiple calls to get with no intervening calls to consume will return the same data.

source

fn get_remaining_regions_with_count(&self, count: usize) -> MemRegionIter<'_>

Like get_remaining_regions but guarantees that the combined length of all the returned iovecs is not greater than count. The combined length of the returned iovecs may be less than count but will always be greater than 0 as long as there is still space left in the DescriptorChain.

source

fn get_remaining<'mem>( &self, mem: &'mem GuestMemory ) -> SmallVec<[VolatileSlice<'mem>; 16]>

Returns all the remaining buffers in the DescriptorChain as VolatileSlices of the given GuestMemory. Calling this function does not consume any bytes from the DescriptorChain. Instead callers should use the consume method to advance the DescriptorChain. Multiple calls to get with no intervening calls to consume will return the same data.

source

fn get_remaining_with_count<'mem>( &self, mem: &'mem GuestMemory, count: usize ) -> SmallVec<[VolatileSlice<'mem>; 16]>

Like ‘get_remaining_regions_with_count’ except convert the offsets to volatile slices in the ‘GuestMemory’ given by ‘mem’.

source

fn consume(&mut self, count: usize)

Consumes count bytes from the DescriptorChain. If count is larger than self.available_bytes() then all remaining bytes in the DescriptorChain will be consumed.

source

fn split_at(&mut self, offset: usize) -> DescriptorChainRegions

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
§

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

§

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

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
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, U> TryFrom<U> for T
where 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 T
where 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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V