use jsonrpsee::core::async_trait;
use pezsc_mixnet::Api;
use pezsc_rpc_api::mixnet::error::Error;
pub use pezsc_rpc_api::mixnet::MixnetApiServer;
use pezsp_core::Bytes;
pub struct Mixnet(futures::lock::Mutex<Api>);
impl Mixnet {
pub fn new(api: Api) -> Self {
Self(futures::lock::Mutex::new(api))
}
}
#[async_trait]
impl MixnetApiServer for Mixnet {
async fn submit_extrinsic(&self, extrinsic: Bytes) -> Result<(), Error> {
let fut = {
let mut api = self.0.lock().await;
api.submit_extrinsic(extrinsic).await
};
Ok(fut.await.map_err(Error)?)
}
}