interstice_core/network/
protocol.rs1use 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}