use crate::transactions::{transaction::Transaction, types::Signature};
use core::fmt::{Display, Error, Formatter};
use serde::{Deserialize, Serialize};
use tari_common_types::waiting_requests::RequestKey;
use tari_crypto::tari_utilities::hex::Hex;
#[derive(Debug, Serialize, Deserialize)]
#[allow(clippy::large_enum_variant)]
pub enum MempoolRequest {
GetStats,
GetState,
GetTxStateByExcessSig(Signature),
SubmitTransaction(Transaction),
}
impl Display for MempoolRequest {
fn fmt(&self, f: &mut Formatter) -> Result<(), Error> {
match self {
MempoolRequest::GetStats => f.write_str("GetStats"),
MempoolRequest::GetState => f.write_str("GetState"),
MempoolRequest::GetTxStateByExcessSig(sig) => {
f.write_str(&format!("GetTxStateByExcessSig ({})", sig.get_signature().to_hex()))
},
MempoolRequest::SubmitTransaction(tx) => f.write_str(&format!(
"SubmitTransaction ({})",
tx.body.kernels()[0].excess_sig.get_signature().to_hex()
)),
}
}
}
#[derive(Debug, Serialize, Deserialize)]
pub struct MempoolServiceRequest {
pub request_key: RequestKey,
pub request: MempoolRequest,
}