dmc_dsg/
json_protocol.rs

1use cyfs_base::*;
2use serde::{Serialize, Deserialize};
3
4pub enum JsonProtocol {
5    CreatePushTask,
6    CreatePushTaskResp,
7    CreatePullTask,
8    CreatePullTaskResp,
9    GetPushTaskState,
10    GetPushTaskStateResp,
11    GetDMCAccount,
12    GetDMCAccountResp,
13    SetDMCAccount,
14    SetDMCAccountResp,
15    ReportCyfsInfo,
16    ReportCyfsInfoResp,
17    AddMerkle,
18    AddMerkleResp,
19    ChallengeResp,
20    ChallengeRespResp,
21    Arbitration,
22    ArbitrationResp,
23    GetTaskList,
24    GetTaskListResp,
25    GetTaskChunkList,
26    GetTaskChunkListResp,
27    SetMinerDecId,
28    SetMinerDecIdResp,
29    Stack,
30    StackResp,
31    Bill,
32    BillResp,
33    Mint,
34    MintResp,
35    GetPullTaskState,
36    GetPullTaskStateResp,
37    Recovery,
38    RecoveryResp,
39    GetRecoveryState,
40    GetRecoveryStateResp,
41}
42
43#[derive(Serialize, Deserialize, Copy, Clone, RawEncode, RawDecode, Eq, PartialEq)]
44pub enum StoreType {
45    Backup,
46    Cache
47}
48
49impl ToString for StoreType {
50    fn to_string(&self) -> String {
51        match self {
52            StoreType::Backup => {"Backup".to_string()}
53            StoreType::Cache => {"Cache".to_string()}
54        }
55    }
56}
57
58#[derive(Serialize, Deserialize)]
59pub struct CreatePushTask {
60    pub chunk_list: Vec<String>,
61    pub http_url: Option<String>,
62    pub store_type: StoreType,
63    pub dmc_account: Option<String>,
64}
65
66#[derive(Serialize, Deserialize)]
67pub struct CreatePullTask {
68    pub task_id: String,
69}
70
71#[derive(Serialize, Deserialize, RawEncode, RawDecode)]
72pub enum DsgPushTaskState {
73    WaitingSpace,
74    Syncing(Vec<(String, String, String)>),
75    Finished(Vec<(String, String, String, String)>),
76    Error(String),
77}
78
79#[derive(Serialize, Deserialize, RawEncode, RawDecode)]
80pub enum DsgPullTaskState {
81    Init,
82    Downloading,
83    Finished,
84    Err(String)
85}
86
87#[derive(Serialize, Deserialize)]
88pub struct AddMerkleReq {
89    pub order_id: String,
90    pub merkle_root: String,
91    pub data_block_count: u64,
92}
93
94#[derive(Serialize, Deserialize)]
95pub struct ChallengeRespReq {
96    pub order_id: String,
97    pub reply_hash: String,
98}
99
100#[derive(Serialize, Deserialize)]
101pub struct ArbitrationReq {
102    pub order_id: String,
103    pub data: Vec<u8>,
104    pub cut_merkle: Vec<String>
105}
106
107#[derive(Serialize, Deserialize)]
108pub struct GetTaskList {
109    pub offset: u64,
110    pub length: u64,
111}
112
113#[derive(Serialize, Deserialize)]
114pub struct ResultList<T: Serialize + for<'a> Deserialize<'a>> {
115    pub sum: u64,
116    #[serde(bound(deserialize = "Vec<T>: for<'a> Deserialize<'a>"))]
117    pub list: Vec<T>
118}
119
120#[derive(Serialize, Deserialize)]
121pub struct GetTaskChunkList {
122    pub task_id: String,
123}
124
125#[derive(Serialize, Deserialize)]
126pub struct SetDMCAccount {
127    pub dmc_account: String,
128    pub dmc_key: String,
129}
130
131#[derive(Serialize, Deserialize)]
132pub struct BillReq {
133    pub asset: String,
134    pub price: f64,
135    pub memo: String,
136}
137
138#[derive(RawDecode, RawEncode, Clone, Serialize, Deserialize)]
139pub enum DsgRecoveryTaskState {
140    Init,
141    Recovering,
142    Finished(Vec<(String, String)>),
143    Err(String)
144}