pub struct TransactionPayloadDecoder<'a> { /* private fields */ }
Expand description
Decoder for transaction payload created using TransactionPayloadBuilder
.
Implementations§
Source§impl<'a> TransactionPayloadDecoder<'a>
impl<'a> TransactionPayloadDecoder<'a>
Sourcepub 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
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>
impl<'a> TransactionPayloadDecoder<'a>
Sourcepub fn decode_next_method(
&mut self,
) -> Result<Option<PreparedMethod<'_>>, TransactionPayloadDecoderError>
pub fn decode_next_method( &mut self, ) -> Result<Option<PreparedMethod<'_>>, TransactionPayloadDecoderError>
Decode the next method (if any) in the payload
Sourcepub unsafe fn decode_next_method_unchecked(
&mut self,
) -> Option<PreparedMethod<'_>>
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.