braid_core/antimatter/
messages.rs1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct Fissure {
6 pub a: String,
7 pub b: String,
8 pub conn: String,
9 pub versions: HashMap<String, bool>,
10 pub time: u64,
11 #[serde(default)]
12 pub t: Option<u64>, }
14
15#[derive(Debug, Clone, Serialize, Deserialize)]
16pub struct Patch {
17 pub range: String, pub content: serde_json::Value,
19}
20
21#[derive(Debug, Clone, Serialize, Deserialize)]
22pub struct Version {
23 pub version: String,
24 pub parents: HashMap<String, bool>,
25 #[serde(default)]
26 pub patches: Vec<Patch>,
27 #[serde(default)]
28 pub sort_keys: Option<HashMap<String, String>>, }
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
32#[serde(tag = "type")]
33#[serde(rename_all = "camelCase")]
34pub enum Message {
35 Subscribe {
36 peer: String,
37 conn: String,
38 #[serde(default)]
39 parents: HashMap<String, bool>,
40 #[serde(default)]
41 protocol_version: Option<u32>,
42 },
43 Update {
44 version: String,
45 parents: HashMap<String, bool>,
46 patches: Vec<Patch>,
47 conn: String,
48 #[serde(default)]
49 ackme: Option<String>,
50 },
51 Ack {
52 seen: String, #[serde(default)]
54 version: Option<String>,
55 #[serde(default)]
56 ackme: Option<String>,
57 #[serde(default)]
58 versions: Option<HashMap<String, bool>>, conn: String,
60 #[serde(default)]
61 unsubscribe: bool,
62 },
63 Fissure {
64 fissure: Option<Fissure>, fissures: Option<Vec<Fissure>>, conn: String,
67 },
68 Welcome {
69 versions: Vec<Version>,
70 fissures: Vec<Fissure>,
71 #[serde(default)]
72 parents: HashMap<String, bool>,
73 #[serde(default)]
74 peer: Option<String>,
75 conn: String,
76 },
77 Ackme {
78 ackme: String, versions: HashMap<String, bool>, conn: String,
81 },
82 Unsubscribe {
83 conn: String,
84 },
85}