Skip to main content

cccc_sdk/
protocol.rs

1use serde::{Deserialize, Serialize};
2use serde_json::{Map, Value};
3
4use crate::DaemonError;
5
6/// Daemon IPC v1 request envelope.
7#[derive(Clone, Debug, Serialize)]
8pub struct DaemonRequest<'a> {
9    pub v: u32,
10    pub op: &'a str,
11    pub args: &'a Map<String, Value>,
12}
13
14/// Daemon IPC v1 response envelope.
15#[derive(Clone, Debug, Deserialize)]
16pub struct DaemonResponse {
17    pub v: u32,
18    pub ok: bool,
19    #[serde(default)]
20    pub result: Map<String, Value>,
21    #[serde(default)]
22    pub error: Option<DaemonError>,
23}
24
25/// Stable fields returned by `ping`; unknown fields remain available through
26/// [`CCCCClient::call`](crate::CCCCClient::call).
27#[derive(Clone, Debug, Deserialize)]
28pub struct PingResult {
29    #[serde(default)]
30    pub version: String,
31    #[serde(default)]
32    pub pid: u64,
33    #[serde(default)]
34    pub ts: String,
35    #[serde(default)]
36    pub ipc_v: u32,
37    #[serde(default)]
38    pub capabilities: Map<String, Value>,
39    #[serde(default)]
40    pub implementation: Option<String>,
41    #[serde(default)]
42    pub compatibility: Option<String>,
43}