interstice_abi/host_calls/
mod.rs1mod audio;
2mod file;
3mod gpu;
4mod input;
5
6pub use gpu::*;
7pub use input::*;
8
9use crate::{IntersticeValue, Row};
10use serde::{Deserialize, Serialize};
11
12#[derive(Debug, Deserialize, Serialize)]
13pub enum HostCall {
14 CallReducer(CallReducerRequest),
15 Log(LogRequest),
16 InsertRow(InsertRowRequest),
17 UpdateRow(UpdateRowRequest),
18 DeleteRow(DeleteRowRequest),
19 TableScan(TableScanRequest),
20 Gpu(GpuCall),
21 Audio,
22 Input,
23 File,
24}
25
26#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
27pub enum NodeSelection {
28 Current,
29 Other(String),
30}
31
32#[derive(Debug, Serialize, Deserialize)]
33pub enum ModuleSelection {
34 Current,
35 Other(String),
36}
37
38#[derive(Debug, Serialize, Deserialize)]
39pub struct CallReducerRequest {
40 pub node_selection: NodeSelection,
41 pub module_selection: ModuleSelection,
42 pub reducer_name: String,
43 pub input: IntersticeValue,
44}
45
46pub type CallReducerResponse = IntersticeValue;
47
48#[derive(Debug, Serialize, Deserialize)]
49pub struct LogRequest {
50 pub message: String,
51}
52
53#[derive(Debug, Deserialize, Serialize)]
54pub struct InsertRowRequest {
55 pub module_selection: ModuleSelection,
56 pub table_name: String,
57 pub row: Row,
58}
59
60#[derive(Debug, Deserialize, Serialize)]
61pub enum InsertRowResponse {
62 Ok,
63 Err(String),
64}
65
66#[derive(Debug, Deserialize, Serialize)]
67pub struct UpdateRowRequest {
68 pub module_selection: ModuleSelection,
69 pub table_name: String,
70 pub row: Row,
71}
72
73#[derive(Debug, Deserialize, Serialize)]
74pub enum UpdateRowResponse {
75 Ok,
76 Err(String),
77}
78
79#[derive(Debug, Deserialize, Serialize)]
80pub struct DeleteRowRequest {
81 pub module_selection: ModuleSelection,
82 pub table_name: String,
83 pub key: IntersticeValue,
84}
85
86#[derive(Debug, Deserialize, Serialize)]
87pub enum DeleteRowResponse {
88 Ok,
89 Err(String),
90}
91
92#[derive(Debug, Deserialize, Serialize)]
93pub struct TableScanRequest {
94 pub module_selection: ModuleSelection,
95 pub table_name: String,
96}
97
98#[derive(Debug, Deserialize, Serialize)]
99pub struct TableScanResponse {
100 pub rows: Vec<Row>,
101}
102
103pub fn get_reducer_wrapper_name(reducer_name: &str) -> String {
104 format!("__interstice_reducer_wrapper_{}", reducer_name)
105}