pub struct TransactionContext<'ix_data> { /* private fields */ }Expand description
Loaded transaction shared between runtime and programs.
This context is valid for the entire duration of a transaction being processed.
Implementations§
Source§impl<'ix_data> TransactionContext<'ix_data>
impl<'ix_data> TransactionContext<'ix_data>
Sourcepub fn new(
transaction_accounts: Vec<(Address, AccountSharedData)>,
rent: Rent,
instruction_stack_capacity: usize,
instruction_trace_capacity: usize,
) -> TransactionContext<'ix_data>
pub fn new( transaction_accounts: Vec<(Address, AccountSharedData)>, rent: Rent, instruction_stack_capacity: usize, instruction_trace_capacity: usize, ) -> TransactionContext<'ix_data>
Constructs a new TransactionContext
Sourcepub fn deconstruct_without_keys(
self,
) -> Result<Vec<AccountSharedData>, InstructionError>
pub fn deconstruct_without_keys( self, ) -> Result<Vec<AccountSharedData>, InstructionError>
Used in mock_process_instruction
pub fn accounts(&self) -> &Rc<TransactionAccounts>
Sourcepub fn get_number_of_accounts(&self) -> u16
pub fn get_number_of_accounts(&self) -> u16
Returns the total number of accounts loaded in this Transaction
Sourcepub fn get_key_of_account_at_index(
&self,
index_in_transaction: u16,
) -> Result<&Address, InstructionError>
pub fn get_key_of_account_at_index( &self, index_in_transaction: u16, ) -> Result<&Address, InstructionError>
Searches for an account by its key
Sourcepub fn find_index_of_account(&self, pubkey: &Address) -> Option<u16>
pub fn find_index_of_account(&self, pubkey: &Address) -> Option<u16>
Searches for an account by its key
Sourcepub fn get_instruction_trace_capacity(&self) -> usize
pub fn get_instruction_trace_capacity(&self) -> usize
Gets the max length of the instruction trace
Sourcepub fn get_instruction_trace_length(&self) -> usize
pub fn get_instruction_trace_length(&self) -> usize
Returns the instruction trace length.
Not counting the last empty instruction which is always pre-reserved for the next instruction.
See also get_next_instruction_context().
Sourcepub fn get_instruction_context_at_index_in_trace(
&self,
index_in_trace: usize,
) -> Result<InstructionContext<'_, '_>, InstructionError>
pub fn get_instruction_context_at_index_in_trace( &self, index_in_trace: usize, ) -> Result<InstructionContext<'_, '_>, InstructionError>
Gets a view on an instruction by its index in the trace
Sourcepub fn get_instruction_context_at_nesting_level(
&self,
nesting_level: usize,
) -> Result<InstructionContext<'_, '_>, InstructionError>
pub fn get_instruction_context_at_nesting_level( &self, nesting_level: usize, ) -> Result<InstructionContext<'_, '_>, InstructionError>
Gets a view on the instruction by its nesting level in the stack
Sourcepub fn get_instruction_stack_capacity(&self) -> usize
pub fn get_instruction_stack_capacity(&self) -> usize
Gets the max height of the instruction stack
Sourcepub fn get_instruction_stack_height(&self) -> usize
pub fn get_instruction_stack_height(&self) -> usize
Gets instruction stack height, top-level instructions are height
solana_instruction::TRANSACTION_LEVEL_STACK_HEIGHT
Sourcepub fn get_current_instruction_context(
&self,
) -> Result<InstructionContext<'_, '_>, InstructionError>
pub fn get_current_instruction_context( &self, ) -> Result<InstructionContext<'_, '_>, InstructionError>
Returns a view on the current instruction
Sourcepub fn get_next_instruction_context(
&self,
) -> Result<InstructionContext<'_, '_>, InstructionError>
pub fn get_next_instruction_context( &self, ) -> Result<InstructionContext<'_, '_>, InstructionError>
Returns a view on the next instruction. This function assumes it has already been
configured with the correct values in prepare_next_instruction or
prepare_next_top_level_instruction
Sourcepub fn configure_next_instruction(
&mut self,
program_index: u16,
instruction_accounts: Vec<InstructionAccount>,
deduplication_map: Vec<u8>,
instruction_data: Cow<'ix_data, [u8]>,
) -> Result<(), InstructionError>
pub fn configure_next_instruction( &mut self, program_index: u16, instruction_accounts: Vec<InstructionAccount>, deduplication_map: Vec<u8>, instruction_data: Cow<'ix_data, [u8]>, ) -> Result<(), InstructionError>
Configures the next instruction.
The last InstructionContext is always empty and pre-reserved for the next instruction.
Sourcepub fn configure_next_instruction_for_tests(
&mut self,
program_index: u16,
instruction_accounts: Vec<InstructionAccount>,
instruction_data: Vec<u8>,
) -> Result<(), InstructionError>
pub fn configure_next_instruction_for_tests( &mut self, program_index: u16, instruction_accounts: Vec<InstructionAccount>, instruction_data: Vec<u8>, ) -> Result<(), InstructionError>
A version of configure_next_instruction to help creating the deduplication map in tests
Sourcepub fn push(&mut self) -> Result<(), InstructionError>
pub fn push(&mut self) -> Result<(), InstructionError>
Pushes the next instruction
Sourcepub fn pop(&mut self) -> Result<(), InstructionError>
pub fn pop(&mut self) -> Result<(), InstructionError>
Pops the current instruction
Sourcepub fn get_return_data(&self) -> (&Address, &[u8])
pub fn get_return_data(&self) -> (&Address, &[u8])
Gets the return data of the current instruction or any above
Sourcepub fn set_return_data(
&mut self,
program_id: Address,
data: Vec<u8>,
) -> Result<(), InstructionError>
pub fn set_return_data( &mut self, program_id: Address, data: Vec<u8>, ) -> Result<(), InstructionError>
Set the return data of the current instruction
Sourcepub fn access_violation_handler(
&self,
stricter_abi_and_runtime_constraints: bool,
account_data_direct_mapping: bool,
) -> Box<dyn Fn(&mut MemoryRegion, u64, AccessType, u64, u64)>
pub fn access_violation_handler( &self, stricter_abi_and_runtime_constraints: bool, account_data_direct_mapping: bool, ) -> Box<dyn Fn(&mut MemoryRegion, u64, AccessType, u64, u64)>
Returns a new account data write access handler
Sourcepub fn take_instruction_trace(&mut self) -> Vec<InstructionFrame<'_>>
pub fn take_instruction_trace(&mut self) -> Vec<InstructionFrame<'_>>
Take ownership of the instruction trace
Trait Implementations§
Auto Trait Implementations§
impl<'ix_data> Freeze for TransactionContext<'ix_data>
impl<'ix_data> !RefUnwindSafe for TransactionContext<'ix_data>
impl<'ix_data> !Send for TransactionContext<'ix_data>
impl<'ix_data> !Sync for TransactionContext<'ix_data>
impl<'ix_data> Unpin for TransactionContext<'ix_data>
impl<'ix_data> !UnwindSafe for TransactionContext<'ix_data>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more