Struct TransactionPayloadDecoder

Source
pub struct TransactionPayloadDecoder<'a> { /* private fields */ }
Expand description

Decoder for transaction payload created using TransactionPayloadBuilder.

Implementations§

Source§

impl<'a> TransactionPayloadDecoder<'a>

Source

pub fn new( payload: &'a [u128], external_args_buffer: &'a mut [*mut c_void], output_buffer: &'a mut [MaybeUninit<u128>], output_buffer_offsets: &'a mut [MaybeUninit<(u32, u32)>], map_context: fn(TransactionMethodContext) -> MethodContext, ) -> Self

Create new instance.

The size of external_args_buffer defines max number of bytes allocated for ExternalArgs, which impacts the number of arguments that can be represented by ExternalArgs. The size is specified in pointers with #[slot] argument using one pointer, #[input] two pointers and #[output] three pointers each.

The size of output_buffer defines how big the total size of #[output] and return values could be in all methods of the payload together.

The size of output_buffer_offsets defines how many #[output] arguments and return values could exist in all methods of the payload together.

Source§

impl<'a> TransactionPayloadDecoder<'a>

Source

pub fn decode_next_method( &mut self, ) -> Result<Option<PreparedMethod<'_>>, TransactionPayloadDecoderError>

Decode the next method (if any) in the payload

Source

pub unsafe fn decode_next_method_unchecked( &mut self, ) -> Option<PreparedMethod<'_>>

Decode the next method (if any) in the payload without checking size.

§Safety

Must be used with trusted input created using TransactionPayloadBuilder or pre-verified using Self::decode_next_method() earlier.

Trait Implementations§

Source§

impl<'a> Debug for TransactionPayloadDecoder<'a>

Source§

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

Formats the value using the given formatter. Read more

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

Source§

type Output = T

Should always be Self
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.