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