Skip to main content

veilid_remote_api/
dht_transaction.rs

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