veilid_remote_api/
dht_transaction.rs1use super::*;
2
3#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
4pub struct DhtTransactionRequest {
5 pub dhttx_id: u32,
6 #[serde(flatten)]
7 pub dhttx_op: DhtTransactionRequestOp,
8}
9
10#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
11pub struct DhtTransactionResponse {
12 pub dhttx_id: u32,
13 #[serde(flatten)]
14 pub dhttx_op: DhtTransactionResponseOp,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
18#[serde(tag = "dhttx_op")]
19pub enum DhtTransactionRequestOp {
20 Release,
21 Commit,
22 Rollback,
23 Get {
24 #[schemars(with = "String")]
25 key: RecordKey,
26 subkey: ValueSubkey,
27 },
28 Set {
29 #[schemars(with = "String")]
30 key: RecordKey,
31 subkey: ValueSubkey,
32 #[serde(with = "as_human_base64")]
33 #[schemars(with = "String")]
34 data: Vec<u8>,
35 options: Option<DHTTransactionSetValueOptions>,
36 },
37 Inspect {
38 #[schemars(with = "String")]
39 key: RecordKey,
40 subkeys: Option<ValueSubkeyRangeSet>,
41 #[schemars(default)]
42 scope: DHTReportScope,
43 },
44}
45
46#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
47#[serde(tag = "dhttx_op")]
48pub enum DhtTransactionResponseOp {
49 InvalidId,
50 Release,
51 Commit {
52 #[serde(flatten)]
53 result: ApiResult<()>,
54 },
55 Rollback {
56 #[serde(flatten)]
57 result: ApiResult<()>,
58 },
59 Get {
60 #[serde(flatten)]
61 result: ApiResult<Option<ValueData>>,
62 },
63 Set {
64 #[serde(flatten)]
65 result: ApiResult<Option<ValueData>>,
66 },
67 Inspect {
68 #[serde(flatten)]
69 result: ApiResult<Box<DHTRecordReport>>,
70 },
71}