Struct fidl::encoding::Decoder

source ·
pub struct Decoder<'a, D: ResourceDialect> {
    pub context: Context,
    pub buf: &'a [u8],
    /* private fields */
}
Expand description

Decoding state

Fields§

§context: Context

Decoding context.

§buf: &'a [u8]

Buffer from which to read data.

Implementations§

source§

impl<'a, D: ResourceDialect> Decoder<'a, D>

source

pub fn decode_into<T: TypeMarker>( header: &TransactionHeader, buf: &'a [u8], handles: &'a mut [<D::Handle as HandleFor<D>>::HandleInfo], value: &mut T::Owned, ) -> Result<()>
where T::Owned: Decode<T, D>,

Decodes a value of FIDL type T into the Rust type T::Owned from the provided data and handle buffers. Assumes the buffers came from inside a transaction message wrapped by header.

source

pub fn decode_with_context<T: TypeMarker>( context: Context, buf: &'a [u8], handles: &'a mut [<D::Handle as HandleFor<D>>::HandleInfo], value: &mut T::Owned, ) -> Result<()>
where T::Owned: Decode<T, D>,

Decodes a value of FIDL type T into the Rust type T::Owned from the provided data and handle buffers, using the specified context.

WARNING: Do not call this directly unless you know what you’re doing. FIDL uses Context to coordinate soft migrations, so improper uses of this function could result in ABI breakage.

source

pub fn next_out_of_line(&self) -> usize

The position of the next out of line block and the end of the current blocks.

source

pub fn remaining_handles(&self) -> usize

The number of handles that have not yet been consumed.

source

pub fn debug_check_bounds<T: TypeMarker>(&self, offset: usize)

In debug mode only, asserts that there is enough room in the buffer to read an object of type T at offset.

source

pub fn read_num<T: Numeric>(&mut self, offset: usize) -> T

Decodes a primitive numeric type. The caller must ensure that self.buf has room for reading T::inline_size bytes as offset.

source

pub unsafe fn out_of_line_offset(&mut self, len: usize) -> Result<usize>

Returns an offset for reading len out-of-line bytes. Validates that padding bytes at the end are zero if len is not a multiple of 8.

§Safety

The caller must ensure that len is nonzero.

source

pub fn check_padding(&self, offset: usize, len: usize) -> Result<()>

Checks that the specified padding bytes are in fact zeroes. Like Decode::decode, the caller is responsible for bounds checks.

source

pub fn check_inline_envelope_padding( &self, value_offset: usize, value_len: usize, ) -> Result<()>

Checks the padding of the inline value portion of an envelope. Like Decode::decode, the caller is responsible for bounds checks.

Note: check_padding could be used instead, but doing so leads to long compilation times which is why this method exists.

source

pub fn take_next_handle( &mut self, expected_object_type: ObjectType, expected_rights: Rights, ) -> Result<D::Handle>

Take the next handle from the handles list.

source

pub fn drop_next_handle(&mut self) -> Result<()>

Drops the next handle in the handle array.

Trait Implementations§

source§

impl<'a, D: Debug + ResourceDialect> Debug for Decoder<'a, D>
where D::Handle: Debug,

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a, D> Freeze for Decoder<'a, D>

§

impl<'a, D> RefUnwindSafe for Decoder<'a, D>

§

impl<'a, D> Send for Decoder<'a, D>
where D: Send, <<D as ResourceDialect>::Handle as HandleFor<D>>::HandleInfo: Send,

§

impl<'a, D> Sync for Decoder<'a, D>
where D: Sync, <<D as ResourceDialect>::Handle as HandleFor<D>>::HandleInfo: Sync,

§

impl<'a, D> Unpin for Decoder<'a, D>
where D: Unpin,

§

impl<'a, D> !UnwindSafe for Decoder<'a, D>

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, D> Encode<Ambiguous1, D> for T
where D: ResourceDialect,

source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
source§

impl<T, D> Encode<Ambiguous2, D> for T
where D: ResourceDialect,

source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. 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> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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<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