Skip to main content

DevelopmentNodeEnvironment_MicrosoftVSCodeDependency_22NodeVersion_Bundle_Clean_Debug_ElectronProfile_EsbuildCompiler_Mountain/RPC/CocoonService/Initialization/
CancelOperation.rs

1//! Cancel an in-flight Mountain-originated operation by request id. Looks
2//! up the cancellation token in `Service.ActiveOperations` and fires it.
3
4use tonic::{Response, Status};
5
6use crate::{
7	RPC::CocoonService::CocoonServiceImpl,
8	Vine::Generated::{CancelOperationRequest, Empty},
9	dev_log,
10};
11
12pub async fn Fn(Service:&CocoonServiceImpl, Request:CancelOperationRequest) -> Result<Response<Empty>, Status> {
13	dev_log!(
14		"cocoon",
15		"[CocoonService] Cancel operation request: {}",
16		Request.request_identifier_to_cancel
17	);
18
19	if let Some(Token) = Service.ActiveOperations.read().await.get(&Request.request_identifier_to_cancel) {
20		dev_log!(
21			"cocoon",
22			"[CocoonService] Triggering cancellation token for operation {}",
23			Request.request_identifier_to_cancel
24		);
25
26		Token.cancel();
27	} else {
28		dev_log!(
29			"cocoon",
30			"warn: [CocoonService] No active operation found for cancellation: {}",
31			Request.request_identifier_to_cancel
32		);
33	}
34
35	Ok(Response::new(Empty {}))
36}