Skip to main content

interstice_core/network/
protocol.rs

1use interstice_abi::{IntersticeValue, Row};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Serialize, Deserialize)]
5pub enum NetworkPacket {
6    Handshake {
7        node_id: String,
8        address: String,
9    },
10    Close,
11    ReducerCall {
12        module_name: String,
13        reducer_name: String,
14        input: IntersticeValue,
15    },
16    QueryCall {
17        request_id: String,
18        module_name: String,
19        query_name: String,
20        input: IntersticeValue,
21    },
22    QueryResponse {
23        request_id: String,
24        result: IntersticeValue,
25    },
26    RequestSubscription(RequestSubscription),
27    TableEvent(TableEventInstance),
28    ModuleEvent(ModuleEventInstance),
29    Error(String),
30}
31
32#[derive(Debug, Serialize, Deserialize, Clone)]
33pub struct RequestSubscription {
34    pub module_name: String,
35    pub table_name: String,
36    pub event: TableEvent,
37}
38
39#[derive(Debug, Serialize, Deserialize, Clone, Copy)]
40pub enum TableEvent {
41    Insert,
42    Update,
43    Delete,
44}
45
46#[derive(Debug, Serialize, Deserialize)]
47pub enum TableEventInstance {
48    TableInsertEvent {
49        module_name: String,
50        table_name: String,
51        inserted_row: Row,
52    },
53    TableUpdateEvent {
54        module_name: String,
55        table_name: String,
56        old_row: Row,
57        new_row: Row,
58    },
59    TableDeleteEvent {
60        module_name: String,
61        table_name: String,
62        deleted_row: Row,
63    },
64}
65
66#[derive(Debug, Serialize, Deserialize)]
67pub enum ModuleEventInstance {
68    Publish { wasm_binary: Vec<u8> },
69    Remove { module_name: String },
70}