RPC: add err
field to TransactionStatus, alongside the now deprecated status
field (#9296)
automerge
This commit is contained in:
@ -5,7 +5,7 @@ use bincode;
|
||||
use solana_sdk::{
|
||||
clock::Slot,
|
||||
message::MessageHeader,
|
||||
transaction::{Result, Transaction},
|
||||
transaction::{Result, Transaction, TransactionError},
|
||||
};
|
||||
|
||||
/// A duplicate representation of a Message for pretty JSON serialization
|
||||
@ -26,12 +26,35 @@ pub struct TransactionStatusMeta {
|
||||
pub post_balances: Vec<u64>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct RpcTransactionStatusMeta {
|
||||
pub err: Option<TransactionError>,
|
||||
pub status: Result<()>, // This field is deprecated. See https://github.com/solana-labs/solana/issues/9302
|
||||
pub fee: u64,
|
||||
pub pre_balances: Vec<u64>,
|
||||
pub post_balances: Vec<u64>,
|
||||
}
|
||||
|
||||
impl From<TransactionStatusMeta> for RpcTransactionStatusMeta {
|
||||
fn from(meta: TransactionStatusMeta) -> Self {
|
||||
Self {
|
||||
err: meta.status.clone().err(),
|
||||
status: meta.status,
|
||||
fee: meta.fee,
|
||||
pre_balances: meta.pre_balances,
|
||||
post_balances: meta.post_balances,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct TransactionStatus {
|
||||
pub slot: Slot,
|
||||
pub confirmations: Option<usize>,
|
||||
pub status: Result<()>,
|
||||
pub err: Option<TransactionError>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
||||
@ -74,7 +97,7 @@ pub struct RpcMessage {
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct TransactionWithStatusMeta {
|
||||
pub transaction: EncodedTransaction,
|
||||
pub meta: Option<TransactionStatusMeta>,
|
||||
pub meta: Option<RpcTransactionStatusMeta>,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
|
||||
|
Reference in New Issue
Block a user