use std::collections::BTreeMap;
use anyhow::Result;
use quic_rpc::RpcClient;
use super::net::NodeStatus;
use crate::rpc::proto::{node::*, RpcService};
#[derive(Debug, Clone)]
#[repr(transparent)]
pub struct Client {
pub(super) rpc: RpcClient<RpcService>,
}
impl Client {
pub fn new(rpc: RpcClient<RpcService>) -> Self {
Self { rpc }
}
pub async fn shutdown(&self, force: bool) -> Result<()> {
self.rpc.rpc(ShutdownRequest { force }).await?;
Ok(())
}
pub async fn stats(&self) -> Result<BTreeMap<String, CounterStats>> {
let res = self.rpc.rpc(StatsRequest {}).await??;
Ok(res.stats)
}
pub async fn status(&self) -> Result<NodeStatus> {
let response = self.rpc.rpc(StatusRequest).await??;
Ok(response)
}
}