ctoolbox/workspace/ipc/services/process/
api.rs1use anyhow::Result;
7use async_trait::async_trait;
8use serde::{Deserialize, Serialize};
9
10pub const SERVICE_NAME: &str = "process";
12
13pub const METHOD_SHUTDOWN_TREE: &str = "shutdown_tree";
15
16#[derive(Debug, Clone, Default, Serialize, Deserialize)]
18pub struct ShutdownTreeRequest {
19 pub reason: Option<String>,
21}
22
23#[derive(Debug, Clone, Default, Serialize, Deserialize)]
25pub struct ShutdownTreeResponse {
26 pub acknowledged: bool,
28}
29
30#[async_trait]
35pub trait ProcessService: Send + Sync + std::fmt::Debug {
36 async fn shutdown_tree(
38 &self,
39 request: ShutdownTreeRequest,
40 ) -> Result<ShutdownTreeResponse, crate::workspace::ipc::error::Error>;
41}
42
43#[derive(Debug)]
44pub struct MockProcessService;
45
46#[async_trait]
47impl ProcessService for MockProcessService {
48 async fn shutdown_tree(
49 &self,
50 _request: ShutdownTreeRequest,
51 ) -> Result<ShutdownTreeResponse, crate::workspace::ipc::error::Error> {
52 Ok(ShutdownTreeResponse { acknowledged: true })
53 }
54}