mod service;
pub use service::MempoolRpcService;
#[cfg(test)]
mod test;
use tari_comms::protocol::rpc::{Request, Response, RpcStatus};
use tari_comms_rpc_macros::tari_rpc;
use crate::{
mempool::service::MempoolHandle,
proto::{
mempool::{StateResponse, StatsResponse, TxStorage},
types::{Signature, Transaction},
},
};
#[tari_rpc(protocol_name = b"t/mempool/1", server_struct = MempoolRpcServer, client_struct = MempoolRpcClient)]
pub trait MempoolService: Send + Sync + 'static {
#[rpc(method = 1)]
async fn get_stats(&self, request: Request<()>) -> Result<Response<StatsResponse>, RpcStatus>;
#[rpc(method = 2)]
async fn get_state(&self, request: Request<()>) -> Result<Response<StateResponse>, RpcStatus>;
#[rpc(method = 3)]
async fn get_transaction_state_by_excess_sig(
&self,
request: Request<Signature>,
) -> Result<Response<TxStorage>, RpcStatus>;
#[rpc(method = 4)]
async fn submit_transaction(&self, request: Request<Transaction>) -> Result<Response<TxStorage>, RpcStatus>;
}
pub fn create_mempool_rpc_service(mempool: MempoolHandle) -> MempoolRpcServer<MempoolRpcService> {
MempoolRpcServer::new(MempoolRpcService::new(mempool))
}