pub enum DataTransfer {
VmoTransfer(VmoTransfer),
InlineData(Vec<u8>),
// some variants omitted
}Expand description
Data to be transferred. There are two supported ways data may be conveyed, corresponding to the two members of the DataTransfer union:
-
vmo_transfer: A region within a VMO previously known to the driver. This VMO must have been established via
PacketStreamControl.RegisterVmos(if client-allocated) orPacketStreamControl.AllocateVmos(if driver-allocated). Future requests refer to this buffer by the uniquevmo_id. Because VMOs are reused across requests, the one-time cost of pinning/mapping is amortized. -
data: The payload is provided directly within the message. This mode is intended for small transfers or control information, not high-throughput streaming.
Variants§
VmoTransfer(VmoTransfer)
Data is stored in a region of a registered VMO.
Requires PacketStreamProperties.supported_buffer_types to include CLIENT_OWNED
or DRIVER_OWNED.
InlineData(Vec<u8>)
Embedded data buffer.
Requires PacketStreamProperties.supported_buffer_types to include INLINE.
Implementations§
Source§impl DataTransfer
impl DataTransfer
pub fn ordinal(&self) -> u64
pub fn unknown_variant_for_testing() -> Self
pub fn is_unknown(&self) -> bool
Trait Implementations§
Source§impl Debug for DataTransfer
impl Debug for DataTransfer
Source§impl Decode<DataTransfer, DefaultFuchsiaResourceDialect> for DataTransfer
impl Decode<DataTransfer, DefaultFuchsiaResourceDialect> for DataTransfer
Source§impl Encode<DataTransfer, DefaultFuchsiaResourceDialect> for &mut DataTransfer
impl Encode<DataTransfer, DefaultFuchsiaResourceDialect> for &mut DataTransfer
Source§impl PartialEq for DataTransfer
impl PartialEq for DataTransfer
Source§impl ResourceTypeMarker for DataTransfer
impl ResourceTypeMarker for DataTransfer
Source§type Borrowed<'a> = &'a mut DataTransfer
type Borrowed<'a> = &'a mut DataTransfer
Encode<Self>
type cheaply obtainable from &mut Self::Owned. There are three cases: Read moreSource§fn take_or_borrow<'a>(
value: &'a mut <Self as TypeMarker>::Owned,
) -> Self::Borrowed<'a>
fn take_or_borrow<'a>( value: &'a mut <Self as TypeMarker>::Owned, ) -> Self::Borrowed<'a>
&mut Self::Owned to Self::Borrowed. For
HandleBased types this is “take” (it returns an owned handle and
replaces value with Handle::invalid), and for all other types it is
“borrow” (just converts from one reference to another).Source§impl TypeMarker for DataTransfer
impl TypeMarker for DataTransfer
Source§type Owned = DataTransfer
type Owned = DataTransfer
Source§fn inline_align(_context: Context) -> usize
fn inline_align(_context: Context) -> usize
Source§fn inline_size(_context: Context) -> usize
fn inline_size(_context: Context) -> usize
inline_align.Source§fn encode_is_copy() -> bool
fn encode_is_copy() -> bool
Self::Owned matches the FIDL wire
format and encoding requires no validation. When true, we can optimize
encoding arrays and vectors of Self::Owned to a single memcpy. Read moreSource§fn decode_is_copy() -> bool
fn decode_is_copy() -> bool
Self::Owned matches the FIDL wire
format and decoding requires no validation. When true, we can optimize
decoding arrays and vectors of Self::Owned to a single memcpy.