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