solana_svm/
transaction_execution_result.rs

1// Re-exported since these have moved to `solana_sdk`.
2#[deprecated(
3    since = "1.18.0",
4    note = "Please use `solana_sdk::inner_instruction` types instead"
5)]
6pub use solana_sdk::inner_instruction::{InnerInstruction, InnerInstructionsList};
7use {
8    crate::account_loader::LoadedTransaction,
9    solana_program_runtime::loaded_programs::ProgramCacheEntry,
10    solana_sdk::{pubkey::Pubkey, transaction, transaction_context::TransactionReturnData},
11    std::{collections::HashMap, sync::Arc},
12};
13
14#[derive(Debug, Default, Clone, PartialEq)]
15pub struct TransactionLoadedAccountsStats {
16    pub loaded_accounts_data_size: u32,
17    pub loaded_accounts_count: usize,
18}
19
20#[derive(Debug, Clone)]
21pub struct ExecutedTransaction {
22    pub loaded_transaction: LoadedTransaction,
23    pub execution_details: TransactionExecutionDetails,
24    pub programs_modified_by_tx: HashMap<Pubkey, Arc<ProgramCacheEntry>>,
25}
26
27impl ExecutedTransaction {
28    pub fn was_successful(&self) -> bool {
29        self.execution_details.was_successful()
30    }
31}
32
33#[derive(Clone, Debug, Eq, PartialEq)]
34pub struct TransactionExecutionDetails {
35    pub status: transaction::Result<()>,
36    pub log_messages: Option<Vec<String>>,
37    pub inner_instructions: Option<InnerInstructionsList>,
38    pub return_data: Option<TransactionReturnData>,
39    pub executed_units: u64,
40    /// The change in accounts data len for this transaction.
41    /// NOTE: This value is valid IFF `status` is `Ok`.
42    pub accounts_data_len_delta: i64,
43}
44
45impl TransactionExecutionDetails {
46    pub fn was_successful(&self) -> bool {
47        self.status.is_ok()
48    }
49}