cyfs_lib/trans/
input_request.rs1use super::output_request::*;
2use crate::{NDNInputRequestCommon, TransTaskControlAction, TransTaskInfo, TransTaskStatus};
3use cyfs_base::{*};
4use cyfs_core::TransContext;
5use cyfs_util::cache::FileDirRef;
6
7use serde::{Deserialize, Serialize};
8use std::path::PathBuf;
9use std::str::FromStr;
10
11pub struct TransGetContextInputRequest {
12 pub common: NDNInputRequestCommon,
13 pub context_id: Option<ObjectId>,
14 pub context_path: Option<String>,
15}
16
17pub type TransGetContextInputResponse = TransGetContextOutputResponse;
18
19pub struct TransUpdateContextInputRequest {
20 pub common: NDNInputRequestCommon,
21
22 pub context: TransContext,
23 pub access: Option<AccessString>,
24}
25
26#[derive(Debug)]
27pub struct TransCreateTaskInputRequest {
28 pub common: NDNInputRequestCommon,
29 pub object_id: ObjectId,
30 pub local_path: PathBuf,
32 pub device_list: Vec<DeviceId>,
33
34 pub group: Option<String>,
35 pub context: Option<String>,
36
37 pub auto_start: bool,
38}
39
40impl TransCreateTaskInputRequest {
41 pub fn check_valid(&self) -> BuckyResult<()> {
42 self.common.check_param_with_referer(&self.object_id)
43 }
44}
45
46#[derive(Debug)]
48pub struct TransControlTaskInputRequest {
49 pub common: NDNInputRequestCommon,
51 pub task_id: String,
52 pub action: TransTaskControlAction,
53}
54
55#[derive(Debug)]
56pub struct TransGetTaskStateInputRequest {
57 pub common: NDNInputRequestCommon,
59 pub task_id: String,
60}
61
62pub type TransGetTaskStateInputResponse = TransGetTaskStateOutputResponse;
63
64#[derive(Debug, Clone, Copy)]
66pub enum TransPublishChunkMethod {
67 Track,
69 Copy,
71 None
73}
74
75impl Default for TransPublishChunkMethod {
76 fn default() -> Self {
77 Self::Track
78 }
79}
80
81impl TryFrom<u8> for TransPublishChunkMethod {
82 type Error = BuckyError;
83
84 fn try_from(v: u8) -> BuckyResult<Self> {
85 match v {
86 0 => Ok(Self::Track),
87 1 => Ok(Self::Copy),
88 2 => Ok(Self::None),
89 _ => Err(BuckyError::new(BuckyErrorCode::InvalidInput, format!("invalid track chunk method {}", v)))
90 }
91 }
92}
93
94impl Into<u8> for TransPublishChunkMethod {
95 fn into(self) -> u8 {
96 match self {
97 Self::Track => 0,
98 Self::Copy => 1,
99 Self::None => 2
100 }
101 }
102}
103
104impl FromStr for TransPublishChunkMethod {
105 type Err = BuckyError;
106
107 fn from_str(str: &str) -> BuckyResult<Self> {
108 match str {
109 "Track" => Ok(Self::Track),
110 "Copy" => Ok(Self::Copy),
111 "None" => Ok(Self::None),
112 _ => Err(BuckyError::new(BuckyErrorCode::InvalidInput, format!("invalid chunk method {}", str)))
113 }
114 }
115}
116
117impl ProtobufTransform<TransPublishChunkMethod> for i32 {
118 fn transform(value: TransPublishChunkMethod) -> BuckyResult<Self> {
119 Ok(Into::<u8>::into(value) as i32)
120 }
121}
122
123impl ProtobufTransform<Option<i32>> for TransPublishChunkMethod {
124 fn transform(value: Option<i32>) -> BuckyResult<Self> {
125 value.map(|v| Self::try_from(v as u8)).unwrap_or(Ok(Self::Track))
126 }
127}
128
129#[derive(Debug)]
130pub struct TransPublishFileInputRequest {
131 pub common: NDNInputRequestCommon,
133 pub owner: ObjectId,
135
136 pub local_path: PathBuf,
138 pub chunk_size: u32,
140 pub chunk_method: TransPublishChunkMethod,
142
143 pub access: Option<AccessString>,
144
145 pub file_id: Option<ObjectId>,
146 pub dirs: Option<Vec<FileDirRef>>,
148}
149
150#[derive(Debug)]
151pub struct TransQueryTasksInputRequest {
152 pub common: NDNInputRequestCommon,
153 pub task_status: Option<TransTaskStatus>,
154 pub range: Option<(u64, u32)>,
155}
156
157#[derive(Debug, Serialize, Deserialize)]
158pub struct TransPublishFileInputResponse {
159 pub file_id: ObjectId,
160}
161
162#[derive(Debug, Serialize, Deserialize)]
163pub struct TransCreateTaskInputResponse {
164 pub task_id: String,
165}
166
167pub struct TransQueryTasksInputResponse {
168 pub task_list: Vec<TransTaskInfo>,
169}
170
171#[derive(Debug)]
173pub struct TransGetTaskGroupStateInputRequest {
174 pub common: NDNInputRequestCommon,
175 pub group_type: TransTaskGroupType,
176 pub group: String,
177 pub speed_when: Option<u64>,
178}
179
180pub type TransGetTaskGroupStateInputResponse = TransGetTaskGroupStateOutputResponse;
181
182#[derive(Debug)]
184pub struct TransControlTaskGroupInputRequest {
185 pub common: NDNInputRequestCommon,
186 pub group_type: TransTaskGroupType,
187 pub group: String,
188 pub action: TransTaskGroupControlAction,
189}
190
191pub type TransControlTaskGroupInputResponse = TransControlTaskGroupOutputResponse;