openvcs_core/
plugin_protocol.rs

1use 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}