use derive_deftly::Deftly;
use std::sync::Arc;
use tor_rpcbase::{self as rpc, templates::*};
use super::Connection;
#[derive(Debug, serde::Deserialize, Deftly)]
#[derive_deftly(DynMethod)]
#[deftly(rpc(method_name = "rpc:cancel", no_cancel))]
struct RpcCancel {
request_id: crate::msgs::RequestId,
}
impl rpc::RpcMethod for RpcCancel {
type Output = rpc::Nil;
type Update = rpc::NoUpdates;
}
async fn connection_rpc_cancel(
conn: Arc<Connection>,
cancel: Box<RpcCancel>,
_ctx: Arc<dyn rpc::Context>,
) -> Result<rpc::Nil, super::CancelError> {
conn.cancel_request(&cancel.request_id).map(|()| rpc::NIL)
}
rpc::static_rpc_invoke_fn! {
connection_rpc_cancel;
}