Skip to main content

interstice_abi/host_calls/
mod.rs

1mod 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}