Skip to main content

veilid_remote_api/
routing_context.rs

1use super::*;
2
3#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
4pub struct RoutingContextRequest {
5    pub rc_id: u32,
6    #[serde(flatten)]
7    pub rc_op: RoutingContextRequestOp,
8}
9
10#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
11pub struct RoutingContextResponse {
12    pub rc_id: u32,
13    #[serde(flatten)]
14    pub rc_op: RoutingContextResponseOp,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
18#[serde(tag = "rc_op")]
19pub enum RoutingContextRequestOp {
20    Release,
21    WithDefaultSafety,
22    WithSafety {
23        safety_selection: SafetySelection,
24    },
25    WithSequencing {
26        sequencing: Sequencing,
27    },
28    Safety,
29    AppCall {
30        target: Target,
31        #[serde(with = "as_human_base64")]
32        #[schemars(with = "String")]
33        message: Vec<u8>,
34    },
35    AppMessage {
36        target: Target,
37        #[serde(with = "as_human_base64")]
38        #[schemars(with = "String")]
39        message: Vec<u8>,
40    },
41    CreateDhtRecord {
42        #[schemars(with = "String")]
43        kind: CryptoKind,
44        schema: DHTSchema,
45        #[schemars(with = "Option<String>")]
46        owner: Option<KeyPair>,
47    },
48    OpenDhtRecord {
49        #[schemars(with = "String")]
50        key: RecordKey,
51        #[schemars(with = "Option<String>")]
52        writer: Option<KeyPair>,
53    },
54    CloseDhtRecord {
55        #[schemars(with = "String")]
56        key: RecordKey,
57    },
58    DeleteDhtRecord {
59        #[schemars(with = "String")]
60        key: RecordKey,
61    },
62    GetDhtValue {
63        #[schemars(with = "String")]
64        key: RecordKey,
65        subkey: ValueSubkey,
66        force_refresh: bool,
67    },
68    SetDhtValue {
69        #[schemars(with = "String")]
70        key: RecordKey,
71        subkey: ValueSubkey,
72        #[serde(with = "as_human_base64")]
73        #[schemars(with = "String")]
74        data: Vec<u8>,
75        options: Option<SetDHTValueOptions>,
76    },
77    WatchDhtValues {
78        #[schemars(with = "String")]
79        key: RecordKey,
80        subkeys: Option<ValueSubkeyRangeSet>,
81        expiration: Option<Timestamp>,
82        count: Option<u32>,
83    },
84    CancelDhtWatch {
85        #[schemars(with = "String")]
86        key: RecordKey,
87        subkeys: Option<ValueSubkeyRangeSet>,
88    },
89    InspectDhtRecord {
90        #[schemars(with = "String")]
91        key: RecordKey,
92        subkeys: Option<ValueSubkeyRangeSet>,
93        #[schemars(default)]
94        scope: DHTReportScope,
95    },
96}
97
98#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
99#[serde(tag = "rc_op")]
100pub enum RoutingContextResponseOp {
101    InvalidId,
102    Release,
103    WithDefaultSafety {
104        #[serde(flatten)]
105        result: ApiResult<u32>,
106    },
107    WithSafety {
108        #[serde(flatten)]
109        result: ApiResult<u32>,
110    },
111    WithSequencing {
112        value: u32,
113    },
114    Safety {
115        value: SafetySelection,
116    },
117    AppCall {
118        #[serde(flatten)]
119        #[schemars(with = "ApiResult<String>")]
120        result: ApiResultWithVecU8,
121    },
122    AppMessage {
123        #[serde(flatten)]
124        result: ApiResult<()>,
125    },
126    CreateDhtRecord {
127        #[serde(flatten)]
128        result: ApiResult<Box<DHTRecordDescriptor>>,
129    },
130    OpenDhtRecord {
131        #[serde(flatten)]
132        result: ApiResult<Box<DHTRecordDescriptor>>,
133    },
134    CloseDhtRecord {
135        #[serde(flatten)]
136        result: ApiResult<()>,
137    },
138    DeleteDhtRecord {
139        #[serde(flatten)]
140        result: ApiResult<()>,
141    },
142    GetDhtValue {
143        #[serde(flatten)]
144        result: ApiResult<Option<ValueData>>,
145    },
146    SetDhtValue {
147        #[serde(flatten)]
148        result: ApiResult<Option<ValueData>>,
149    },
150    WatchDhtValues {
151        #[serde(flatten)]
152        result: ApiResult<bool>,
153    },
154    CancelDhtWatch {
155        #[serde(flatten)]
156        result: ApiResult<bool>,
157    },
158    InspectDhtRecord {
159        #[serde(flatten)]
160        result: ApiResult<Box<DHTRecordReport>>,
161    },
162}