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],
)
pub fn configure( &mut self, program_accounts: &[IndexOfAccount], instruction_accounts: &[InstructionAccount], instruction_data: &[u8], )
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§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for InstructionContext
impl Debug for InstructionContext
Source§impl Default for InstructionContext
impl Default for InstructionContext
Source§fn default() -> InstructionContext
fn default() -> InstructionContext
Source§impl PartialEq for InstructionContext
impl PartialEq for InstructionContext
impl Eq for InstructionContext
impl StructuralPartialEq for InstructionContext
Auto Trait Implementations§
impl Freeze for InstructionContext
impl RefUnwindSafe for InstructionContext
impl Send for InstructionContext
impl Sync for InstructionContext
impl Unpin for InstructionContext
impl UnwindSafe for InstructionContext
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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