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}