pub struct InstructionContext { /* private fields */ }Expand description
Loaded instruction shared between runtime and programs.
This context is valid for the entire duration of a (possibly cross program) instruction being processed.
Implementations§
Source§impl InstructionContext
impl InstructionContext
Sourcepub fn configure(
&mut self,
program_accounts: &[IndexOfAccount],
instruction_accounts: &[InstructionAccount],
instruction_data: &[u8],
)
Available on non-target_os="solana" only.
pub fn configure( &mut self, program_accounts: &[IndexOfAccount], instruction_accounts: &[InstructionAccount], instruction_data: &[u8], )
target_os="solana" only.Used together with TransactionContext::get_next_instruction_context()
Sourcepub fn get_stack_height(&self) -> usize
pub fn get_stack_height(&self) -> usize
How many Instructions were on the stack after this one was pushed
That is the number of nested parent Instructions plus one (itself).
Sourcepub fn get_number_of_program_accounts(&self) -> IndexOfAccount
pub fn get_number_of_program_accounts(&self) -> IndexOfAccount
Number of program accounts
Sourcepub fn get_number_of_instruction_accounts(&self) -> IndexOfAccount
pub fn get_number_of_instruction_accounts(&self) -> IndexOfAccount
Number of accounts in this Instruction (without program accounts)
Sourcepub fn check_number_of_instruction_accounts(
&self,
expected_at_least: IndexOfAccount,
) -> Result<(), InstructionError>
pub fn check_number_of_instruction_accounts( &self, expected_at_least: IndexOfAccount, ) -> Result<(), InstructionError>
Assert that enough accounts were supplied to this Instruction
Sourcepub fn get_instruction_data(&self) -> &[u8] ⓘ
pub fn get_instruction_data(&self) -> &[u8] ⓘ
Data parameter for the programs process_instruction handler
Sourcepub fn find_index_of_program_account(
&self,
transaction_context: &TransactionContext,
pubkey: &Pubkey,
) -> Option<IndexOfAccount>
pub fn find_index_of_program_account( &self, transaction_context: &TransactionContext, pubkey: &Pubkey, ) -> Option<IndexOfAccount>
Searches for a program account by its key
Sourcepub fn find_index_of_instruction_account(
&self,
transaction_context: &TransactionContext,
pubkey: &Pubkey,
) -> Option<IndexOfAccount>
pub fn find_index_of_instruction_account( &self, transaction_context: &TransactionContext, pubkey: &Pubkey, ) -> Option<IndexOfAccount>
Searches for an instruction account by its key
Sourcepub fn get_index_of_program_account_in_transaction(
&self,
program_account_index: IndexOfAccount,
) -> Result<IndexOfAccount, InstructionError>
pub fn get_index_of_program_account_in_transaction( &self, program_account_index: IndexOfAccount, ) -> Result<IndexOfAccount, InstructionError>
Translates the given instruction wide program_account_index into a transaction wide index
Sourcepub fn get_index_of_instruction_account_in_transaction(
&self,
instruction_account_index: IndexOfAccount,
) -> Result<IndexOfAccount, InstructionError>
pub fn get_index_of_instruction_account_in_transaction( &self, instruction_account_index: IndexOfAccount, ) -> Result<IndexOfAccount, InstructionError>
Translates the given instruction wide instruction_account_index into a transaction wide index
Sourcepub fn is_instruction_account_duplicate(
&self,
instruction_account_index: IndexOfAccount,
) -> Result<Option<IndexOfAccount>, InstructionError>
pub fn is_instruction_account_duplicate( &self, instruction_account_index: IndexOfAccount, ) -> Result<Option<IndexOfAccount>, InstructionError>
Returns Some(instruction_account_index) if this is a duplicate
and None if it is the first account with this key
Sourcepub fn get_last_program_key<'a, 'b: 'a>(
&'a self,
transaction_context: &'b TransactionContext,
) -> Result<&'b Pubkey, InstructionError>
pub fn get_last_program_key<'a, 'b: 'a>( &'a self, transaction_context: &'b TransactionContext, ) -> Result<&'b Pubkey, InstructionError>
Gets the key of the last program account of this Instruction
Sourcepub fn try_borrow_last_program_account<'a, 'b: 'a>(
&'a self,
transaction_context: &'b TransactionContext,
) -> Result<BorrowedAccount<'a>, InstructionError>
pub fn try_borrow_last_program_account<'a, 'b: 'a>( &'a self, transaction_context: &'b TransactionContext, ) -> Result<BorrowedAccount<'a>, InstructionError>
Gets the last program account of this Instruction
Sourcepub fn try_borrow_program_account<'a, 'b: 'a>(
&'a self,
transaction_context: &'b TransactionContext,
program_account_index: IndexOfAccount,
) -> Result<BorrowedAccount<'a>, InstructionError>
pub fn try_borrow_program_account<'a, 'b: 'a>( &'a self, transaction_context: &'b TransactionContext, program_account_index: IndexOfAccount, ) -> Result<BorrowedAccount<'a>, InstructionError>
Tries to borrow a program account from this Instruction
Sourcepub fn try_borrow_instruction_account<'a, 'b: 'a>(
&'a self,
transaction_context: &'b TransactionContext,
instruction_account_index: IndexOfAccount,
) -> Result<BorrowedAccount<'a>, InstructionError>
pub fn try_borrow_instruction_account<'a, 'b: 'a>( &'a self, transaction_context: &'b TransactionContext, instruction_account_index: IndexOfAccount, ) -> Result<BorrowedAccount<'a>, InstructionError>
Gets an instruction account of this Instruction
Sourcepub fn is_instruction_account_signer(
&self,
instruction_account_index: IndexOfAccount,
) -> Result<bool, InstructionError>
pub fn is_instruction_account_signer( &self, instruction_account_index: IndexOfAccount, ) -> Result<bool, InstructionError>
Returns whether an instruction account is a signer
Sourcepub fn is_instruction_account_writable(
&self,
instruction_account_index: IndexOfAccount,
) -> Result<bool, InstructionError>
pub fn is_instruction_account_writable( &self, instruction_account_index: IndexOfAccount, ) -> Result<bool, InstructionError>
Returns whether an instruction account is writable
Sourcepub fn get_signers(
&self,
transaction_context: &TransactionContext,
) -> Result<HashSet<Pubkey>, InstructionError>
pub fn get_signers( &self, transaction_context: &TransactionContext, ) -> Result<HashSet<Pubkey>, InstructionError>
Calculates the set of all keys of signer instruction accounts in this Instruction
Trait Implementations§
Source§impl Clone for InstructionContext
impl Clone for InstructionContext
Source§fn clone(&self) -> InstructionContext
fn clone(&self) -> InstructionContext
1.0.0 · Source§const fn clone_from(&mut self, source: &Self)
const fn clone_from(&mut self, source: &Self)
source. Read more