Skip to content

Commit

Permalink
feat: use history for statuses
Browse files Browse the repository at this point in the history
  • Loading branch information
Dodecahedr0x committed Feb 10, 2025
1 parent 8cefa4e commit a4a6a82
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 12 deletions.
12 changes: 3 additions & 9 deletions crates/core/src/rpc/full.rs
Original file line number Diff line number Diff line change
Expand Up @@ -235,18 +235,12 @@ impl Full for SurfpoolFullRpc {
.map(|signature| {
signature
.map(|signature| {
state_reader.svm.get_transaction(&signature).map(|tx| {
tx.clone().ok().map(|_tx| TransactionStatus {
slot: 0,
confirmations: Some(5),
status: Ok(()),
err: None,
confirmation_status: Some(TransactionConfirmationStatus::Finalized),
})
state_reader.history.get(&signature).map(|tx| {
tx.clone()
.into_status(state_reader.epoch_info.absolute_slot)
})
})
.flatten()
.flatten()
})
.collect::<Vec<Option<TransactionStatus>>>();
let rpc_client = state_reader.rpc_client.clone();
Expand Down
22 changes: 19 additions & 3 deletions crates/core/src/simnet/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,10 @@ use solana_sdk::{
};
use solana_transaction_status::{
option_serializer::OptionSerializer, EncodedConfirmedTransactionWithStatusMeta,
EncodedTransaction, EncodedTransactionWithStatusMeta, UiCompiledInstruction,
UiInnerInstructions, UiInstruction, UiMessage, UiRawMessage, UiReturnDataEncoding,
UiTransaction, UiTransactionReturnData, UiTransactionStatusMeta,
EncodedTransaction, EncodedTransactionWithStatusMeta, TransactionConfirmationStatus,
TransactionStatus, UiCompiledInstruction, UiInnerInstructions, UiInstruction, UiMessage,
UiRawMessage, UiReturnDataEncoding, UiTransaction, UiTransactionReturnData,
UiTransactionStatusMeta,
};
use std::{
collections::HashMap,
Expand All @@ -44,6 +45,21 @@ pub struct TransactionWithStatusMeta(
Option<TransactionError>,
);

impl TransactionWithStatusMeta {
pub fn into_status(&self, current_slot: u64) -> TransactionStatus {
TransactionStatus {
slot: self.0,
confirmations: Some((current_slot - self.0) as usize),
status: match self.3.clone() {
Some(err) => Err(err),
None => Ok(()),
},
err: self.3.clone(),
confirmation_status: Some(TransactionConfirmationStatus::Finalized),
}
}
}

impl Into<EncodedConfirmedTransactionWithStatusMeta> for TransactionWithStatusMeta {
fn into(self) -> EncodedConfirmedTransactionWithStatusMeta {
let slot = self.0;
Expand Down

0 comments on commit a4a6a82

Please sign in to comment.