Skip to main content

proto/
message_pushpull.rs

1// SPDX-License-Identifier: Apache-2.0
2use 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}