macro_rules! parse_pending_transactions {
($res:ident, $txns:expr) => {
$txns.for_each(|tx_key, txn| {
match integer_encoding::VarInt::decode_var(&tx_key) {
Some((tx_id, _)) => {
$res.push(Transaction {
id: tx_id,
to: txn.to.into(),
value: txn.value.clone().into(),
method: txn.method,
params: txn.params.clone(),
approved: txn.approved.clone().into_iter().map(From::from).collect(),
});
}
None => anyhow::bail!("Error decoding varint"),
}
Ok(())
})?;
};
}
macro_rules! parse_pending_transactions_v3 {
($res:ident, $txns:expr) => {
$txns.for_each(|tx_key, txn| {
match integer_encoding::VarInt::decode_var(&tx_key) {
Some((tx_id, _)) => {
$res.push(Transaction {
id: tx_id,
to: txn.to.into(),
value: txn.value.clone().into(),
method: txn.method,
params: txn.params.clone(),
approved: txn.approved.clone().into_iter().map(From::from).collect(),
});
}
None => anyhow::bail!("Error decoding varint"),
}
Ok(())
})?;
};
}
macro_rules! parse_pending_transactions_v4 {
($res:ident, $txns:expr) => {
$txns.for_each(|tx_id, txn| {
$res.push(Transaction {
id: tx_id.0,
to: txn.to.into(),
value: txn.value.clone().into(),
method: txn.method,
params: txn.params.clone(),
approved: txn.approved.clone().into_iter().map(From::from).collect(),
});
Ok(())
})?;
};
}
pub(crate) use parse_pending_transactions;
pub(crate) use parse_pending_transactions_v3;
pub(crate) use parse_pending_transactions_v4;