use std::collections::BTreeMap;
use nested_enum_utils::enum_conversions;
use quic_rpc_derive::rpc_requests;
use serde::{Deserialize, Serialize};
use super::{RpcResult, RpcService};
use crate::rpc::client::net::NodeStatus;
#[allow(missing_docs)]
#[derive(strum::Display, Debug, Serialize, Deserialize)]
#[enum_conversions(super::Request)]
#[rpc_requests(RpcService)]
pub enum Request {
#[rpc(response = RpcResult<NodeStatus>)]
Status(StatusRequest),
#[rpc(response = RpcResult<StatsResponse>)]
Stats(StatsRequest),
#[rpc(response = ())]
Shutdown(ShutdownRequest),
}
#[allow(missing_docs)]
#[derive(strum::Display, Debug, Serialize, Deserialize)]
#[enum_conversions(super::Response)]
pub enum Response {
Status(RpcResult<NodeStatus>),
Stats(RpcResult<StatsResponse>),
Shutdown(()),
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ShutdownRequest {
pub force: bool,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct StatusRequest;
#[derive(Serialize, Deserialize, Debug)]
pub struct StatsRequest {}
#[derive(Serialize, Deserialize, Debug)]
pub struct CounterStats {
pub value: u64,
pub description: String,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct StatsResponse {
pub stats: BTreeMap<String, CounterStats>,
}