openvcs_core/
plugin_protocol.rs1use crate::models::VcsEvent;
2use serde::{Deserialize, Serialize};
3
4#[cfg(feature = "plugin-protocol")]
5use serde_json::Value;
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct RpcRequest {
9 pub id: u64,
10 pub method: String,
11 #[serde(default)]
12 pub params: Value,
13}
14
15#[derive(Debug, Clone, Serialize, Deserialize)]
16pub struct RpcResponse {
17 pub id: u64,
18 pub ok: bool,
19 #[serde(default)]
20 pub result: Value,
21 #[serde(default)]
22 pub error: Option<String>,
23 #[serde(default, skip_serializing_if = "Option::is_none")]
24 pub error_code: Option<String>,
25 #[serde(default, skip_serializing_if = "Option::is_none")]
26 pub error_data: Option<Value>,
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize)]
30#[serde(untagged)]
31pub enum PluginMessage {
32 Request(RpcRequest),
33 Response(RpcResponse),
34 Event { event: VcsEvent },
35}