Add EncodedTransaction::Raw

This commit is contained in:
Michael Vines
2020-07-10 10:52:45 -07:00
parent dce7739b75
commit 60b1bcddb5

View File

@@ -132,6 +132,8 @@ pub struct TransactionWithStatusMeta {
pub enum TransactionEncoding {
Binary,
Json,
JsonParsed, // same as Json in 1.1
Raw,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
@@ -139,11 +141,13 @@ pub enum TransactionEncoding {
pub enum EncodedTransaction {
Binary(String),
Json(RpcTransaction),
Raw(Transaction),
}
impl EncodedTransaction {
pub fn encode(transaction: Transaction, encoding: TransactionEncoding) -> Self {
if encoding == TransactionEncoding::Json {
match encoding {
TransactionEncoding::Json | TransactionEncoding::JsonParsed => {
EncodedTransaction::Json(RpcTransaction {
signatures: transaction
.signatures
@@ -171,10 +175,11 @@ impl EncodedTransaction {
.collect(),
},
})
} else {
EncodedTransaction::Binary(
}
TransactionEncoding::Binary => EncodedTransaction::Binary(
bs58::encode(bincode::serialize(&transaction).unwrap()).into_string(),
)
),
TransactionEncoding::Raw => EncodedTransaction::Raw(transaction),
}
}
pub fn decode(&self) -> Option<Transaction> {
@@ -184,6 +189,7 @@ impl EncodedTransaction {
.into_vec()
.ok()
.and_then(|bytes| bincode::deserialize(&bytes).ok()),
EncodedTransaction::Raw(transaction) => Some(transaction.clone()),
}
}
}