Skip to main content

interstice_abi/host_calls/
mod.rs

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