1use objects::object::ChangeId;
3use serde::{Deserialize, Serialize};
4
5use crate::{ObjectId, ObjectInfo};
6
7pub const TRANSPORT_MODE_NATIVE_PACK: &str = "native-pack";
8
9#[allow(dead_code)]
10pub const PARTIAL_FETCH_DISABLED: &str = "disabled";
11#[allow(dead_code)]
12pub const PARTIAL_FETCH_ENABLED: &str = "enabled";
13#[allow(dead_code)]
14pub const PARTIAL_FETCH_REQUIRED: &str = "required";
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
17pub struct PushRequest {
18 #[serde(default)]
19 pub repo_path: Option<String>,
20 pub target_thread: String,
21 pub local_state: ChangeId,
22 pub create_thread: bool,
23 pub force: bool,
24 pub objects: Vec<ObjectInfo>,
25 #[serde(default)]
26 pub transfer_id: String,
27 #[serde(default)]
28 pub transport_mode: String,
29 #[serde(default)]
30 pub resume_offset: u64,
31 #[serde(default)]
32 pub chunk_index: u32,
33 #[serde(default)]
34 pub checkpoint: Vec<u8>,
35 #[serde(default)]
36 pub is_complete: bool,
37 #[serde(default)]
38 pub partial_fetch_status: String,
39 #[serde(default)]
40 pub allow_partial_fetch: bool,
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize)]
44pub struct PushReady {
45 pub remote_head: Option<ChangeId>,
46 pub have_objects: Vec<ObjectId>,
47 pub want_objects: Vec<ObjectId>,
48 #[serde(default)]
49 pub transfer_id: String,
50 #[serde(default)]
51 pub transport_mode: String,
52 #[serde(default)]
53 pub resume_offset: u64,
54 #[serde(default)]
55 pub chunk_index: u32,
56 #[serde(default)]
57 pub checkpoint: Vec<u8>,
58 #[serde(default)]
59 pub is_complete: bool,
60 #[serde(default)]
61 pub partial_fetch_status: String,
62 #[serde(default)]
63 pub missing_objects: Vec<ObjectId>,
64}
65
66#[derive(Debug, Clone, Serialize, Deserialize)]
67pub struct PushComplete {
68 pub success: bool,
69 pub new_state: Option<ChangeId>,
70 pub error: Option<String>,
71 #[serde(default)]
72 pub transfer_id: String,
73 #[serde(default)]
74 pub transport_mode: String,
75 #[serde(default)]
76 pub resume_offset: u64,
77 #[serde(default)]
78 pub chunk_index: u32,
79 #[serde(default)]
80 pub checkpoint: Vec<u8>,
81 #[serde(default)]
82 pub is_complete: bool,
83}
84
85#[derive(Debug, Clone, Serialize, Deserialize)]
86pub struct PullRequest {
87 #[serde(default)]
88 pub repo_path: Option<String>,
89 pub remote_thread: String,
90 pub local_thread: Option<String>,
91 pub target_state: Option<ChangeId>,
92 #[serde(default)]
93 pub depth: Option<u32>,
94 #[serde(default)]
95 pub exclude_states: Vec<ChangeId>,
96 #[serde(default)]
97 pub transfer_id: String,
98 #[serde(default)]
99 pub transport_mode: String,
100 #[serde(default)]
101 pub resume_offset: u64,
102 #[serde(default)]
103 pub chunk_index: u32,
104 #[serde(default)]
105 pub checkpoint: Vec<u8>,
106 #[serde(default)]
107 pub is_complete: bool,
108 #[serde(default)]
109 pub partial_fetch_status: String,
110 #[serde(default)]
111 pub allow_partial_fetch: bool,
112 #[serde(default)]
113 pub fresh_full_pull: bool,
114}
115
116#[derive(Debug, Clone, Serialize, Deserialize)]
117pub struct PullReady {
118 pub remote_state: ChangeId,
119 pub objects_to_fetch: Vec<ObjectInfo>,
120 #[serde(default)]
121 pub transfer_id: String,
122 #[serde(default)]
123 pub transport_mode: String,
124 #[serde(default)]
125 pub resume_offset: u64,
126 #[serde(default)]
127 pub chunk_index: u32,
128 #[serde(default)]
129 pub checkpoint: Vec<u8>,
130 #[serde(default)]
131 pub is_complete: bool,
132 #[serde(default)]
133 pub partial_fetch_status: String,
134 #[serde(default)]
135 pub missing_objects: Vec<ObjectId>,
136 #[serde(default)]
137 pub full_closure_available: bool,
138 #[serde(default)]
139 pub object_count: u32,
140}
141
142#[derive(Debug, Clone, Serialize, Deserialize)]
143pub struct PullComplete {
144 pub success: bool,
145 pub final_state: Option<ChangeId>,
146 pub error: Option<String>,
147 #[serde(default)]
148 pub transfer_id: String,
149 #[serde(default)]
150 pub transport_mode: String,
151 #[serde(default)]
152 pub resume_offset: u64,
153 #[serde(default)]
154 pub chunk_index: u32,
155 #[serde(default)]
156 pub checkpoint: Vec<u8>,
157 #[serde(default)]
158 pub is_complete: bool,
159}