Skip to main content

rustfs_protos/generated/proto_gen/
node_service.rs

1// This file is @generated by prost-build.
2/// ---
3#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4pub struct Error {
5    #[prost(uint32, tag = "1")]
6    pub code: u32,
7    #[prost(string, tag = "2")]
8    pub error_info: ::prost::alloc::string::String,
9}
10#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11pub struct PingRequest {
12    #[prost(uint64, tag = "1")]
13    pub version: u64,
14    #[prost(bytes = "bytes", tag = "2")]
15    pub body: ::prost::bytes::Bytes,
16}
17#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18pub struct PingResponse {
19    #[prost(uint64, tag = "1")]
20    pub version: u64,
21    #[prost(bytes = "bytes", tag = "2")]
22    pub body: ::prost::bytes::Bytes,
23}
24#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25pub struct HealBucketRequest {
26    #[prost(string, tag = "1")]
27    pub bucket: ::prost::alloc::string::String,
28    #[prost(string, tag = "2")]
29    pub options: ::prost::alloc::string::String,
30    #[prost(bytes = "bytes", tag = "3")]
31    pub bucket_incarnation_id: ::prost::bytes::Bytes,
32}
33#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
34pub struct HealBucketResponse {
35    #[prost(bool, tag = "1")]
36    pub success: bool,
37    #[prost(message, optional, tag = "2")]
38    pub error: ::core::option::Option<Error>,
39}
40#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
41pub struct ListBucketRequest {
42    #[prost(string, tag = "1")]
43    pub options: ::prost::alloc::string::String,
44}
45#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
46pub struct ListBucketResponse {
47    #[prost(bool, tag = "1")]
48    pub success: bool,
49    #[prost(string, repeated, tag = "2")]
50    pub bucket_infos: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
51    #[prost(message, optional, tag = "3")]
52    pub error: ::core::option::Option<Error>,
53}
54#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
55pub struct MakeBucketRequest {
56    #[prost(string, tag = "1")]
57    pub name: ::prost::alloc::string::String,
58    #[prost(string, tag = "2")]
59    pub options: ::prost::alloc::string::String,
60}
61#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
62pub struct MakeBucketResponse {
63    #[prost(bool, tag = "1")]
64    pub success: bool,
65    #[prost(message, optional, tag = "2")]
66    pub error: ::core::option::Option<Error>,
67}
68#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
69pub struct GetBucketInfoRequest {
70    #[prost(string, tag = "1")]
71    pub bucket: ::prost::alloc::string::String,
72    #[prost(string, tag = "2")]
73    pub options: ::prost::alloc::string::String,
74}
75#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
76pub struct GetBucketInfoResponse {
77    #[prost(bool, tag = "1")]
78    pub success: bool,
79    #[prost(string, tag = "2")]
80    pub bucket_info: ::prost::alloc::string::String,
81    #[prost(message, optional, tag = "3")]
82    pub error: ::core::option::Option<Error>,
83}
84#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
85pub struct DeleteBucketRequest {
86    #[prost(string, tag = "1")]
87    pub bucket: ::prost::alloc::string::String,
88    #[prost(string, tag = "2")]
89    pub options: ::prost::alloc::string::String,
90}
91#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
92pub struct DeleteBucketResponse {
93    #[prost(bool, tag = "1")]
94    pub success: bool,
95    #[prost(message, optional, tag = "2")]
96    pub error: ::core::option::Option<Error>,
97}
98#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
99pub struct ReadAllRequest {
100    /// indicate which one in the disks
101    #[prost(string, tag = "1")]
102    pub disk: ::prost::alloc::string::String,
103    #[prost(string, tag = "2")]
104    pub volume: ::prost::alloc::string::String,
105    #[prost(string, tag = "3")]
106    pub path: ::prost::alloc::string::String,
107}
108#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
109pub struct ReadAllResponse {
110    #[prost(bool, tag = "1")]
111    pub success: bool,
112    #[prost(bytes = "bytes", tag = "2")]
113    pub data: ::prost::bytes::Bytes,
114    #[prost(message, optional, tag = "3")]
115    pub error: ::core::option::Option<Error>,
116}
117#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
118pub struct WriteAllRequest {
119    /// indicate which one in the disks
120    #[prost(string, tag = "1")]
121    pub disk: ::prost::alloc::string::String,
122    #[prost(string, tag = "2")]
123    pub volume: ::prost::alloc::string::String,
124    #[prost(string, tag = "3")]
125    pub path: ::prost::alloc::string::String,
126    #[prost(bytes = "bytes", tag = "4")]
127    pub data: ::prost::bytes::Bytes,
128}
129#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
130pub struct WriteAllResponse {
131    #[prost(bool, tag = "1")]
132    pub success: bool,
133    #[prost(message, optional, tag = "2")]
134    pub error: ::core::option::Option<Error>,
135}
136#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
137pub struct CompareAndUpdateFileRequest {
138    /// indicate which one in the disks
139    #[prost(string, tag = "1")]
140    pub disk: ::prost::alloc::string::String,
141    #[prost(string, tag = "2")]
142    pub volume: ::prost::alloc::string::String,
143    #[prost(string, tag = "3")]
144    pub path: ::prost::alloc::string::String,
145    #[prost(bytes = "bytes", optional, tag = "4")]
146    pub expected: ::core::option::Option<::prost::bytes::Bytes>,
147    #[prost(bytes = "bytes", optional, tag = "5")]
148    pub replacement: ::core::option::Option<::prost::bytes::Bytes>,
149}
150#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
151pub struct CompareAndUpdateFileResponse {
152    #[prost(bool, tag = "1")]
153    pub success: bool,
154    #[prost(enumeration = "CompareAndUpdateFileOutcome", tag = "2")]
155    pub outcome: i32,
156    #[prost(message, optional, tag = "3")]
157    pub error: ::core::option::Option<Error>,
158}
159#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
160pub struct DeleteRequest {
161    /// indicate which one in the disks
162    #[prost(string, tag = "1")]
163    pub disk: ::prost::alloc::string::String,
164    #[prost(string, tag = "2")]
165    pub volume: ::prost::alloc::string::String,
166    #[prost(string, tag = "3")]
167    pub path: ::prost::alloc::string::String,
168    #[prost(string, tag = "4")]
169    pub options: ::prost::alloc::string::String,
170    /// Optional scanner publication lease token. When present, the target binds
171    /// the complete delete operation to its movement read admission.
172    #[prost(bytes = "bytes", tag = "5")]
173    pub scanner_publication_lease_token: ::prost::bytes::Bytes,
174    #[prost(bytes = "bytes", tag = "6")]
175    pub bucket_incarnation_id: ::prost::bytes::Bytes,
176}
177#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
178pub struct DeleteResponse {
179    #[prost(bool, tag = "1")]
180    pub success: bool,
181    #[prost(message, optional, tag = "2")]
182    pub error: ::core::option::Option<Error>,
183}
184#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
185pub struct VerifyFileRequest {
186    /// indicate which one in the disks
187    #[prost(string, tag = "1")]
188    pub disk: ::prost::alloc::string::String,
189    #[prost(string, tag = "2")]
190    pub volume: ::prost::alloc::string::String,
191    #[prost(string, tag = "3")]
192    pub path: ::prost::alloc::string::String,
193    #[prost(string, tag = "4")]
194    pub file_info: ::prost::alloc::string::String,
195}
196#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
197pub struct VerifyFileResponse {
198    #[prost(bool, tag = "1")]
199    pub success: bool,
200    #[prost(string, tag = "2")]
201    pub check_parts_resp: ::prost::alloc::string::String,
202    #[prost(message, optional, tag = "3")]
203    pub error: ::core::option::Option<Error>,
204}
205#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
206pub struct ReadPartsRequest {
207    #[prost(string, tag = "1")]
208    pub disk: ::prost::alloc::string::String,
209    #[prost(string, tag = "2")]
210    pub bucket: ::prost::alloc::string::String,
211    #[prost(string, repeated, tag = "3")]
212    pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
213}
214#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
215pub struct ReadPartsResponse {
216    #[prost(bool, tag = "1")]
217    pub success: bool,
218    #[prost(bytes = "bytes", tag = "2")]
219    pub object_part_infos: ::prost::bytes::Bytes,
220    #[prost(message, optional, tag = "3")]
221    pub error: ::core::option::Option<Error>,
222}
223#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
224pub struct CheckPartsRequest {
225    /// indicate which one in the disks
226    #[prost(string, tag = "1")]
227    pub disk: ::prost::alloc::string::String,
228    #[prost(string, tag = "2")]
229    pub volume: ::prost::alloc::string::String,
230    #[prost(string, tag = "3")]
231    pub path: ::prost::alloc::string::String,
232    #[prost(string, tag = "4")]
233    pub file_info: ::prost::alloc::string::String,
234}
235#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
236pub struct CheckPartsResponse {
237    #[prost(bool, tag = "1")]
238    pub success: bool,
239    #[prost(string, tag = "2")]
240    pub check_parts_resp: ::prost::alloc::string::String,
241    #[prost(message, optional, tag = "3")]
242    pub error: ::core::option::Option<Error>,
243}
244#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
245pub struct RenamePartRequest {
246    #[prost(string, tag = "1")]
247    pub disk: ::prost::alloc::string::String,
248    #[prost(string, tag = "2")]
249    pub src_volume: ::prost::alloc::string::String,
250    #[prost(string, tag = "3")]
251    pub src_path: ::prost::alloc::string::String,
252    #[prost(string, tag = "4")]
253    pub dst_volume: ::prost::alloc::string::String,
254    #[prost(string, tag = "5")]
255    pub dst_path: ::prost::alloc::string::String,
256    #[prost(bytes = "bytes", tag = "6")]
257    pub meta: ::prost::bytes::Bytes,
258}
259#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
260pub struct RenamePartResponse {
261    #[prost(bool, tag = "1")]
262    pub success: bool,
263    #[prost(message, optional, tag = "2")]
264    pub error: ::core::option::Option<Error>,
265}
266#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
267pub struct PreparePartTransactionRequest {
268    #[prost(string, tag = "1")]
269    pub disk: ::prost::alloc::string::String,
270    #[prost(string, tag = "2")]
271    pub src_volume: ::prost::alloc::string::String,
272    #[prost(string, tag = "3")]
273    pub src_path: ::prost::alloc::string::String,
274    #[prost(string, tag = "4")]
275    pub dst_volume: ::prost::alloc::string::String,
276    #[prost(string, tag = "5")]
277    pub dst_path: ::prost::alloc::string::String,
278    #[prost(bytes = "bytes", tag = "6")]
279    pub meta: ::prost::bytes::Bytes,
280}
281#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
282pub struct PreparePartTransactionResponse {
283    #[prost(bool, tag = "1")]
284    pub success: bool,
285    #[prost(message, optional, tag = "2")]
286    pub error: ::core::option::Option<Error>,
287}
288#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
289pub struct SettlePartTransactionRequest {
290    #[prost(string, tag = "1")]
291    pub disk: ::prost::alloc::string::String,
292    #[prost(string, tag = "2")]
293    pub volume: ::prost::alloc::string::String,
294    #[prost(string, tag = "3")]
295    pub path: ::prost::alloc::string::String,
296    #[prost(bool, tag = "4")]
297    pub rollback: bool,
298}
299#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
300pub struct SettlePartTransactionResponse {
301    #[prost(bool, tag = "1")]
302    pub success: bool,
303    #[prost(message, optional, tag = "2")]
304    pub error: ::core::option::Option<Error>,
305}
306#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
307pub struct RenameFileRequest {
308    #[prost(string, tag = "1")]
309    pub disk: ::prost::alloc::string::String,
310    #[prost(string, tag = "2")]
311    pub src_volume: ::prost::alloc::string::String,
312    #[prost(string, tag = "3")]
313    pub src_path: ::prost::alloc::string::String,
314    #[prost(string, tag = "4")]
315    pub dst_volume: ::prost::alloc::string::String,
316    #[prost(string, tag = "5")]
317    pub dst_path: ::prost::alloc::string::String,
318    /// Apply the destination's payload/metadata durability policy before success.
319    #[prost(bool, tag = "6")]
320    pub durable: bool,
321}
322#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
323pub struct RenameFileResponse {
324    #[prost(bool, tag = "1")]
325    pub success: bool,
326    #[prost(message, optional, tag = "2")]
327    pub error: ::core::option::Option<Error>,
328    #[prost(bool, tag = "3")]
329    pub durability_applied: bool,
330}
331#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
332pub struct WriteRequest {
333    /// indicate which one in the disks
334    #[prost(string, tag = "1")]
335    pub disk: ::prost::alloc::string::String,
336    #[prost(string, tag = "2")]
337    pub volume: ::prost::alloc::string::String,
338    #[prost(string, tag = "3")]
339    pub path: ::prost::alloc::string::String,
340    #[prost(bool, tag = "4")]
341    pub is_append: bool,
342    #[prost(bytes = "bytes", tag = "5")]
343    pub data: ::prost::bytes::Bytes,
344}
345#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
346pub struct WriteResponse {
347    #[prost(bool, tag = "1")]
348    pub success: bool,
349    #[prost(message, optional, tag = "2")]
350    pub error: ::core::option::Option<Error>,
351}
352#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
353pub struct ReadAtRequest {
354    /// indicate which one in the disks
355    #[prost(string, tag = "1")]
356    pub disk: ::prost::alloc::string::String,
357    #[prost(string, tag = "2")]
358    pub volume: ::prost::alloc::string::String,
359    #[prost(string, tag = "3")]
360    pub path: ::prost::alloc::string::String,
361    #[prost(int64, tag = "4")]
362    pub offset: i64,
363    #[prost(int64, tag = "5")]
364    pub length: i64,
365}
366#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
367pub struct ReadAtResponse {
368    #[prost(bool, tag = "1")]
369    pub success: bool,
370    #[prost(bytes = "bytes", tag = "2")]
371    pub data: ::prost::bytes::Bytes,
372    #[prost(int64, tag = "3")]
373    pub read_size: i64,
374    #[prost(message, optional, tag = "4")]
375    pub error: ::core::option::Option<Error>,
376}
377#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
378pub struct ListDirRequest {
379    /// indicate which one in the disks
380    #[prost(string, tag = "1")]
381    pub disk: ::prost::alloc::string::String,
382    #[prost(string, tag = "2")]
383    pub volume: ::prost::alloc::string::String,
384    #[prost(string, tag = "3")]
385    pub dir_path: ::prost::alloc::string::String,
386    #[prost(int32, tag = "4")]
387    pub count: i32,
388}
389#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
390pub struct ListDirResponse {
391    #[prost(bool, tag = "1")]
392    pub success: bool,
393    #[prost(string, repeated, tag = "2")]
394    pub volumes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
395    #[prost(message, optional, tag = "3")]
396    pub error: ::core::option::Option<Error>,
397}
398#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
399pub struct WalkDirRequest {
400    /// indicate which one in the disks
401    #[prost(string, tag = "1")]
402    pub disk: ::prost::alloc::string::String,
403    #[prost(bytes = "bytes", tag = "2")]
404    pub walk_dir_options: ::prost::bytes::Bytes,
405}
406#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
407pub struct WalkDirResponse {
408    #[prost(bool, tag = "1")]
409    pub success: bool,
410    #[prost(string, tag = "2")]
411    pub meta_cache_entry: ::prost::alloc::string::String,
412    #[prost(string, optional, tag = "3")]
413    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
414}
415#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
416pub struct RenameDataRequest {
417    /// indicate which one in the disks
418    #[prost(string, tag = "1")]
419    pub disk: ::prost::alloc::string::String,
420    #[prost(string, tag = "2")]
421    pub src_volume: ::prost::alloc::string::String,
422    #[prost(string, tag = "3")]
423    pub src_path: ::prost::alloc::string::String,
424    #[prost(string, tag = "4")]
425    pub file_info: ::prost::alloc::string::String,
426    #[prost(string, tag = "5")]
427    pub dst_volume: ::prost::alloc::string::String,
428    #[prost(string, tag = "6")]
429    pub dst_path: ::prost::alloc::string::String,
430    #[prost(bytes = "bytes", tag = "7")]
431    pub file_info_bin: ::prost::bytes::Bytes,
432    /// Optional target-side scanner publication lease.  Empty preserves the
433    /// legacy rename request body; a non-empty token is checked at the target's
434    /// rename linearization point.
435    #[prost(bytes = "bytes", tag = "8")]
436    pub scanner_publication_lease_token: ::prost::bytes::Bytes,
437    /// Required by RenameDataAtIncarnation; never accepted by legacy RenameData.
438    #[prost(bytes = "bytes", tag = "9")]
439    pub bucket_incarnation_id: ::prost::bytes::Bytes,
440}
441#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
442pub struct RenameDataResponse {
443    #[prost(bool, tag = "1")]
444    pub success: bool,
445    #[prost(string, tag = "2")]
446    pub rename_data_resp: ::prost::alloc::string::String,
447    #[prost(message, optional, tag = "3")]
448    pub error: ::core::option::Option<Error>,
449    #[prost(bytes = "bytes", tag = "4")]
450    pub rename_data_resp_bin: ::prost::bytes::Bytes,
451}
452#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
453pub struct MakeVolumesRequest {
454    /// indicate which one in the disks
455    #[prost(string, tag = "1")]
456    pub disk: ::prost::alloc::string::String,
457    #[prost(string, repeated, tag = "2")]
458    pub volumes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
459}
460#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
461pub struct MakeVolumesResponse {
462    #[prost(bool, tag = "1")]
463    pub success: bool,
464    #[prost(message, optional, tag = "2")]
465    pub error: ::core::option::Option<Error>,
466}
467#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
468pub struct MakeVolumeRequest {
469    /// indicate which one in the disks
470    #[prost(string, tag = "1")]
471    pub disk: ::prost::alloc::string::String,
472    #[prost(string, tag = "2")]
473    pub volume: ::prost::alloc::string::String,
474}
475#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
476pub struct MakeVolumeResponse {
477    #[prost(bool, tag = "1")]
478    pub success: bool,
479    #[prost(message, optional, tag = "2")]
480    pub error: ::core::option::Option<Error>,
481}
482#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
483pub struct ListVolumesRequest {
484    /// indicate which one in the disks
485    #[prost(string, tag = "1")]
486    pub disk: ::prost::alloc::string::String,
487}
488#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
489pub struct ListVolumesResponse {
490    #[prost(bool, tag = "1")]
491    pub success: bool,
492    #[prost(string, repeated, tag = "2")]
493    pub volume_infos: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
494    #[prost(message, optional, tag = "3")]
495    pub error: ::core::option::Option<Error>,
496}
497#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
498pub struct StatVolumeRequest {
499    /// indicate which one in the disks
500    #[prost(string, tag = "1")]
501    pub disk: ::prost::alloc::string::String,
502    #[prost(string, tag = "2")]
503    pub volume: ::prost::alloc::string::String,
504}
505#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
506pub struct StatVolumeResponse {
507    #[prost(bool, tag = "1")]
508    pub success: bool,
509    #[prost(string, tag = "2")]
510    pub volume_info: ::prost::alloc::string::String,
511    #[prost(message, optional, tag = "3")]
512    pub error: ::core::option::Option<Error>,
513}
514#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
515pub struct DeletePathsRequest {
516    #[prost(string, tag = "1")]
517    pub disk: ::prost::alloc::string::String,
518    #[prost(string, tag = "2")]
519    pub volume: ::prost::alloc::string::String,
520    #[prost(string, repeated, tag = "3")]
521    pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
522}
523#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
524pub struct DeletePathsResponse {
525    #[prost(bool, tag = "1")]
526    pub success: bool,
527    #[prost(message, optional, tag = "2")]
528    pub error: ::core::option::Option<Error>,
529}
530#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
531pub struct SnapshotLeaseRequest {
532    #[prost(string, tag = "1")]
533    pub disk: ::prost::alloc::string::String,
534    #[prost(string, tag = "2")]
535    pub volume: ::prost::alloc::string::String,
536    #[prost(string, tag = "3")]
537    pub path: ::prost::alloc::string::String,
538    #[prost(uint64, tag = "4")]
539    pub ttl_ms: u64,
540}
541#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
542pub struct SnapshotLeaseRenewRequest {
543    #[prost(string, tag = "1")]
544    pub disk: ::prost::alloc::string::String,
545    #[prost(string, tag = "2")]
546    pub volume: ::prost::alloc::string::String,
547    #[prost(string, tag = "3")]
548    pub path: ::prost::alloc::string::String,
549    #[prost(bytes = "bytes", tag = "4")]
550    pub token: ::prost::bytes::Bytes,
551    #[prost(uint64, tag = "5")]
552    pub ttl_ms: u64,
553}
554#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
555pub struct SnapshotLeaseReleaseRequest {
556    #[prost(string, tag = "1")]
557    pub disk: ::prost::alloc::string::String,
558    #[prost(string, tag = "2")]
559    pub volume: ::prost::alloc::string::String,
560    #[prost(string, tag = "3")]
561    pub path: ::prost::alloc::string::String,
562    #[prost(bytes = "bytes", tag = "4")]
563    pub token: ::prost::bytes::Bytes,
564}
565#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
566pub struct SnapshotLeaseResponse {
567    #[prost(bool, tag = "1")]
568    pub success: bool,
569    #[prost(bytes = "bytes", tag = "2")]
570    pub token: ::prost::bytes::Bytes,
571    #[prost(uint32, tag = "3")]
572    pub protocol_version: u32,
573    #[prost(message, optional, tag = "4")]
574    pub error: ::core::option::Option<Error>,
575}
576#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
577pub struct SnapshotLeaseMutationResponse {
578    #[prost(bool, tag = "1")]
579    pub success: bool,
580    #[prost(message, optional, tag = "2")]
581    pub error: ::core::option::Option<Error>,
582}
583#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
584pub struct ReadMetadataRequest {
585    #[prost(string, tag = "1")]
586    pub disk: ::prost::alloc::string::String,
587    #[prost(string, tag = "2")]
588    pub volume: ::prost::alloc::string::String,
589    #[prost(string, tag = "3")]
590    pub path: ::prost::alloc::string::String,
591}
592#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
593pub struct ReadMetadataResponse {
594    #[prost(bool, tag = "1")]
595    pub success: bool,
596    #[prost(message, optional, tag = "2")]
597    pub error: ::core::option::Option<Error>,
598    #[prost(bytes = "bytes", tag = "3")]
599    pub data: ::prost::bytes::Bytes,
600}
601#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
602pub struct UpdateMetadataRequest {
603    #[prost(string, tag = "1")]
604    pub disk: ::prost::alloc::string::String,
605    #[prost(string, tag = "2")]
606    pub volume: ::prost::alloc::string::String,
607    #[prost(string, tag = "3")]
608    pub path: ::prost::alloc::string::String,
609    #[prost(string, tag = "4")]
610    pub file_info: ::prost::alloc::string::String,
611    #[prost(string, tag = "5")]
612    pub opts: ::prost::alloc::string::String,
613    #[prost(bytes = "bytes", tag = "6")]
614    pub file_info_bin: ::prost::bytes::Bytes,
615    #[prost(bytes = "bytes", tag = "7")]
616    pub opts_bin: ::prost::bytes::Bytes,
617}
618#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
619pub struct UpdateMetadataResponse {
620    #[prost(bool, tag = "1")]
621    pub success: bool,
622    #[prost(message, optional, tag = "2")]
623    pub error: ::core::option::Option<Error>,
624}
625#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
626pub struct WriteMetadataRequest {
627    /// indicate which one in the disks
628    #[prost(string, tag = "1")]
629    pub disk: ::prost::alloc::string::String,
630    #[prost(string, tag = "2")]
631    pub volume: ::prost::alloc::string::String,
632    #[prost(string, tag = "3")]
633    pub path: ::prost::alloc::string::String,
634    #[prost(string, tag = "4")]
635    pub file_info: ::prost::alloc::string::String,
636    #[prost(bytes = "bytes", tag = "5")]
637    pub file_info_bin: ::prost::bytes::Bytes,
638    #[prost(bytes = "bytes", tag = "6")]
639    pub bucket_incarnation_id: ::prost::bytes::Bytes,
640}
641#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
642pub struct WriteMetadataResponse {
643    #[prost(bool, tag = "1")]
644    pub success: bool,
645    #[prost(message, optional, tag = "2")]
646    pub error: ::core::option::Option<Error>,
647}
648#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
649pub struct ReadVersionRequest {
650    #[prost(string, tag = "1")]
651    pub disk: ::prost::alloc::string::String,
652    #[prost(string, tag = "2")]
653    pub volume: ::prost::alloc::string::String,
654    #[prost(string, tag = "3")]
655    pub path: ::prost::alloc::string::String,
656    #[prost(string, tag = "4")]
657    pub version_id: ::prost::alloc::string::String,
658    #[prost(string, tag = "5")]
659    pub opts: ::prost::alloc::string::String,
660    #[prost(bytes = "bytes", tag = "6")]
661    pub opts_bin: ::prost::bytes::Bytes,
662}
663#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
664pub struct ReadVersionResponse {
665    #[prost(bool, tag = "1")]
666    pub success: bool,
667    #[prost(string, tag = "2")]
668    pub file_info: ::prost::alloc::string::String,
669    #[prost(message, optional, tag = "3")]
670    pub error: ::core::option::Option<Error>,
671    #[prost(bytes = "bytes", tag = "4")]
672    pub file_info_bin: ::prost::bytes::Bytes,
673}
674#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
675pub struct BatchReadVersionRequest {
676    #[prost(string, tag = "1")]
677    pub disk: ::prost::alloc::string::String,
678    #[prost(string, tag = "2")]
679    pub batch_read_version_req: ::prost::alloc::string::String,
680    #[prost(bytes = "bytes", tag = "3")]
681    pub batch_read_version_req_bin: ::prost::bytes::Bytes,
682}
683#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
684pub struct BatchReadVersionResponse {
685    #[prost(bool, tag = "1")]
686    pub success: bool,
687    #[prost(string, repeated, tag = "2")]
688    pub batch_read_version_resps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
689    #[prost(message, optional, tag = "3")]
690    pub error: ::core::option::Option<Error>,
691    #[prost(bytes = "bytes", repeated, tag = "4")]
692    pub batch_read_version_resps_bin: ::prost::alloc::vec::Vec<::prost::bytes::Bytes>,
693}
694#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
695pub struct ReadXlRequest {
696    #[prost(string, tag = "1")]
697    pub disk: ::prost::alloc::string::String,
698    #[prost(string, tag = "2")]
699    pub volume: ::prost::alloc::string::String,
700    #[prost(string, tag = "3")]
701    pub path: ::prost::alloc::string::String,
702    #[prost(bool, tag = "4")]
703    pub read_data: bool,
704}
705#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
706pub struct ReadXlResponse {
707    #[prost(bool, tag = "1")]
708    pub success: bool,
709    #[prost(string, tag = "2")]
710    pub raw_file_info: ::prost::alloc::string::String,
711    #[prost(message, optional, tag = "3")]
712    pub error: ::core::option::Option<Error>,
713    #[prost(bytes = "bytes", tag = "4")]
714    pub raw_file_info_bin: ::prost::bytes::Bytes,
715}
716#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
717pub struct DeleteVersionRequest {
718    #[prost(string, tag = "1")]
719    pub disk: ::prost::alloc::string::String,
720    #[prost(string, tag = "2")]
721    pub volume: ::prost::alloc::string::String,
722    #[prost(string, tag = "3")]
723    pub path: ::prost::alloc::string::String,
724    #[prost(string, tag = "4")]
725    pub file_info: ::prost::alloc::string::String,
726    #[prost(bool, tag = "5")]
727    pub force_del_marker: bool,
728    #[prost(string, tag = "6")]
729    pub opts: ::prost::alloc::string::String,
730    /// msgpack payloads mirroring the JSON fields above (grpc-optimization P2). Senders dual-write
731    /// both; receivers prefer the \*\_bin form and fall back to the JSON string when it is empty.
732    #[prost(bytes = "bytes", tag = "7")]
733    pub file_info_bin: ::prost::bytes::Bytes,
734    #[prost(bytes = "bytes", tag = "8")]
735    pub opts_bin: ::prost::bytes::Bytes,
736    #[prost(bytes = "bytes", tag = "9")]
737    pub bucket_incarnation_id: ::prost::bytes::Bytes,
738}
739#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
740pub struct DeleteVersionResponse {
741    #[prost(bool, tag = "1")]
742    pub success: bool,
743    #[prost(string, tag = "2")]
744    pub raw_file_info: ::prost::alloc::string::String,
745    #[prost(message, optional, tag = "3")]
746    pub error: ::core::option::Option<Error>,
747}
748#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
749pub struct DeleteVersionsRequest {
750    #[prost(string, tag = "1")]
751    pub disk: ::prost::alloc::string::String,
752    #[prost(string, tag = "2")]
753    pub volume: ::prost::alloc::string::String,
754    #[prost(string, repeated, tag = "3")]
755    pub versions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
756    #[prost(string, tag = "4")]
757    pub opts: ::prost::alloc::string::String,
758    /// msgpack payloads mirroring the JSON fields above (grpc-optimization P2). Senders dual-write
759    /// both; receivers prefer the \*\_bin form and fall back to the JSON string when it is empty.
760    #[prost(bytes = "bytes", repeated, tag = "5")]
761    pub versions_bin: ::prost::alloc::vec::Vec<::prost::bytes::Bytes>,
762    #[prost(bytes = "bytes", tag = "6")]
763    pub opts_bin: ::prost::bytes::Bytes,
764}
765#[derive(Clone, PartialEq, ::prost::Message)]
766pub struct DeleteVersionsResponse {
767    #[prost(bool, tag = "1")]
768    pub success: bool,
769    #[prost(string, repeated, tag = "2")]
770    pub errors: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
771    #[prost(message, optional, tag = "3")]
772    pub error: ::core::option::Option<Error>,
773    /// Senders dual-write the legacy strings and typed entries. Receivers prefer typed entries
774    /// when present and fall back to strings for peers that predate this field. Code zero means success.
775    #[prost(message, repeated, tag = "4")]
776    pub item_errors: ::prost::alloc::vec::Vec<Error>,
777}
778#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
779pub struct ReadMultipleRequest {
780    #[prost(string, tag = "1")]
781    pub disk: ::prost::alloc::string::String,
782    #[prost(string, tag = "2")]
783    pub read_multiple_req: ::prost::alloc::string::String,
784    #[prost(bytes = "bytes", tag = "3")]
785    pub read_multiple_req_bin: ::prost::bytes::Bytes,
786}
787#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
788pub struct ReadMultipleResponse {
789    #[prost(bool, tag = "1")]
790    pub success: bool,
791    #[prost(string, repeated, tag = "2")]
792    pub read_multiple_resps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
793    #[prost(message, optional, tag = "3")]
794    pub error: ::core::option::Option<Error>,
795    #[prost(bytes = "bytes", repeated, tag = "4")]
796    pub read_multiple_resps_bin: ::prost::alloc::vec::Vec<::prost::bytes::Bytes>,
797}
798#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
799pub struct DeleteVolumeRequest {
800    #[prost(string, tag = "1")]
801    pub disk: ::prost::alloc::string::String,
802    #[prost(string, tag = "2")]
803    pub volume: ::prost::alloc::string::String,
804    /// When false (default), a non-empty volume is refused (VolumeNotEmpty); when
805    /// true, the volume is deleted recursively. Old peers omit this field, which
806    /// decodes to false — the safe, non-recursive behavior (backlog#799 B1).
807    #[prost(bool, tag = "3")]
808    pub force: bool,
809}
810#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
811pub struct DeleteVolumeResponse {
812    #[prost(bool, tag = "1")]
813    pub success: bool,
814    #[prost(message, optional, tag = "2")]
815    pub error: ::core::option::Option<Error>,
816}
817#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
818pub struct DiskInfoRequest {
819    #[prost(string, tag = "1")]
820    pub disk: ::prost::alloc::string::String,
821    #[prost(string, tag = "2")]
822    pub opts: ::prost::alloc::string::String,
823}
824#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
825pub struct DiskInfoResponse {
826    #[prost(bool, tag = "1")]
827    pub success: bool,
828    #[prost(string, tag = "2")]
829    pub disk_info: ::prost::alloc::string::String,
830    #[prost(message, optional, tag = "3")]
831    pub error: ::core::option::Option<Error>,
832}
833/// lock api have same argument type
834#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
835pub struct GenerallyLockRequest {
836    #[prost(string, tag = "1")]
837    pub args: ::prost::alloc::string::String,
838}
839#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
840pub struct GenerallyLockResponse {
841    #[prost(bool, tag = "1")]
842    pub success: bool,
843    #[prost(string, optional, tag = "2")]
844    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
845    /// JSON serialized LockInfo
846    #[prost(string, optional, tag = "3")]
847    pub lock_info: ::core::option::Option<::prost::alloc::string::String>,
848}
849#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
850pub struct BatchGenerallyLockRequest {
851    #[prost(string, repeated, tag = "1")]
852    pub args: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
853}
854#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
855pub struct GenerallyLockResult {
856    #[prost(bool, tag = "1")]
857    pub success: bool,
858    #[prost(string, optional, tag = "2")]
859    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
860    /// JSON serialized LockInfo
861    #[prost(string, optional, tag = "3")]
862    pub lock_info: ::core::option::Option<::prost::alloc::string::String>,
863}
864#[derive(Clone, PartialEq, ::prost::Message)]
865pub struct BatchGenerallyLockResponse {
866    #[prost(message, repeated, tag = "1")]
867    pub results: ::prost::alloc::vec::Vec<GenerallyLockResult>,
868}
869#[derive(Clone, PartialEq, ::prost::Message)]
870pub struct Mss {
871    #[prost(map = "string, string", tag = "1")]
872    pub value: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
873}
874#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
875pub struct LocalStorageInfoRequest {
876    #[prost(bool, tag = "1")]
877    pub metrics: bool,
878}
879#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
880pub struct LocalStorageInfoResponse {
881    #[prost(bool, tag = "1")]
882    pub success: bool,
883    #[prost(bytes = "bytes", tag = "2")]
884    pub storage_info: ::prost::bytes::Bytes,
885    #[prost(string, optional, tag = "3")]
886    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
887    #[prost(enumeration = "ControlPlaneErrorCode", optional, tag = "4")]
888    pub error_code: ::core::option::Option<i32>,
889}
890#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
891pub struct ServerInfoRequest {
892    #[prost(bool, tag = "1")]
893    pub metrics: bool,
894}
895#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
896pub struct ServerInfoResponse {
897    #[prost(bool, tag = "1")]
898    pub success: bool,
899    #[prost(bytes = "bytes", tag = "2")]
900    pub server_properties: ::prost::bytes::Bytes,
901    #[prost(string, optional, tag = "3")]
902    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
903}
904#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
905pub struct GetCpusRequest {}
906#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
907pub struct GetCpusResponse {
908    #[prost(bool, tag = "1")]
909    pub success: bool,
910    #[prost(bytes = "bytes", tag = "2")]
911    pub cpus: ::prost::bytes::Bytes,
912    #[prost(string, optional, tag = "3")]
913    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
914}
915#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
916pub struct GetNetInfoRequest {}
917#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
918pub struct GetNetInfoResponse {
919    #[prost(bool, tag = "1")]
920    pub success: bool,
921    #[prost(bytes = "bytes", tag = "2")]
922    pub net_info: ::prost::bytes::Bytes,
923    #[prost(string, optional, tag = "3")]
924    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
925}
926#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
927pub struct GetPartitionsRequest {}
928#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
929pub struct GetPartitionsResponse {
930    #[prost(bool, tag = "1")]
931    pub success: bool,
932    #[prost(bytes = "bytes", tag = "2")]
933    pub partitions: ::prost::bytes::Bytes,
934    #[prost(string, optional, tag = "3")]
935    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
936}
937#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
938pub struct GetOsInfoRequest {}
939#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
940pub struct GetOsInfoResponse {
941    #[prost(bool, tag = "1")]
942    pub success: bool,
943    #[prost(bytes = "bytes", tag = "2")]
944    pub os_info: ::prost::bytes::Bytes,
945    #[prost(string, optional, tag = "3")]
946    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
947}
948#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
949pub struct GetSeLinuxInfoRequest {}
950#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
951pub struct GetSeLinuxInfoResponse {
952    #[prost(bool, tag = "1")]
953    pub success: bool,
954    #[prost(bytes = "bytes", tag = "2")]
955    pub sys_services: ::prost::bytes::Bytes,
956    #[prost(string, optional, tag = "3")]
957    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
958}
959#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
960pub struct GetSysConfigRequest {}
961#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
962pub struct GetSysConfigResponse {
963    #[prost(bool, tag = "1")]
964    pub success: bool,
965    #[prost(bytes = "bytes", tag = "2")]
966    pub sys_config: ::prost::bytes::Bytes,
967    #[prost(string, optional, tag = "3")]
968    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
969}
970#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
971pub struct GetSysErrorsRequest {}
972#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
973pub struct GetSysErrorsResponse {
974    #[prost(bool, tag = "1")]
975    pub success: bool,
976    #[prost(bytes = "bytes", tag = "2")]
977    pub sys_errors: ::prost::bytes::Bytes,
978    #[prost(string, optional, tag = "3")]
979    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
980}
981#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
982pub struct GetMemInfoRequest {}
983#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
984pub struct GetMemInfoResponse {
985    #[prost(bool, tag = "1")]
986    pub success: bool,
987    #[prost(bytes = "bytes", tag = "2")]
988    pub mem_info: ::prost::bytes::Bytes,
989    #[prost(string, optional, tag = "3")]
990    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
991}
992#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
993pub struct GetMetricsRequest {
994    #[prost(bytes = "bytes", tag = "1")]
995    pub metric_type: ::prost::bytes::Bytes,
996    #[prost(bytes = "bytes", tag = "2")]
997    pub opts: ::prost::bytes::Bytes,
998}
999#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1000pub struct GetMetricsResponse {
1001    #[prost(bool, tag = "1")]
1002    pub success: bool,
1003    #[prost(bytes = "bytes", tag = "2")]
1004    pub realtime_metrics: ::prost::bytes::Bytes,
1005    #[prost(string, optional, tag = "3")]
1006    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1007}
1008#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1009pub struct GetProcInfoRequest {}
1010#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1011pub struct GetProcInfoResponse {
1012    #[prost(bool, tag = "1")]
1013    pub success: bool,
1014    #[prost(bytes = "bytes", tag = "2")]
1015    pub proc_info: ::prost::bytes::Bytes,
1016    #[prost(string, optional, tag = "3")]
1017    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1018}
1019#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1020pub struct StartProfilingRequest {
1021    #[prost(string, tag = "1")]
1022    pub profiler: ::prost::alloc::string::String,
1023}
1024#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1025pub struct StartProfilingResponse {
1026    #[prost(bool, tag = "1")]
1027    pub success: bool,
1028    #[prost(string, optional, tag = "2")]
1029    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1030}
1031#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1032pub struct DownloadProfileDataRequest {}
1033#[derive(Clone, PartialEq, ::prost::Message)]
1034pub struct DownloadProfileDataResponse {
1035    #[prost(bool, tag = "1")]
1036    pub success: bool,
1037    #[prost(map = "string, bytes", tag = "2")]
1038    pub data: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::bytes::Bytes>,
1039    #[prost(string, optional, tag = "3")]
1040    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1041}
1042#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1043pub struct GetBucketStatsDataRequest {
1044    #[prost(string, tag = "1")]
1045    pub bucket: ::prost::alloc::string::String,
1046}
1047#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1048pub struct GetBucketStatsDataResponse {
1049    #[prost(bool, tag = "1")]
1050    pub success: bool,
1051    #[prost(bytes = "bytes", tag = "2")]
1052    pub bucket_stats: ::prost::bytes::Bytes,
1053    #[prost(string, optional, tag = "3")]
1054    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1055}
1056#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1057pub struct GetSrMetricsDataRequest {}
1058#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1059pub struct GetSrMetricsDataResponse {
1060    #[prost(bool, tag = "1")]
1061    pub success: bool,
1062    #[prost(bytes = "bytes", tag = "2")]
1063    pub sr_metrics_summary: ::prost::bytes::Bytes,
1064    #[prost(string, optional, tag = "3")]
1065    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1066}
1067#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1068pub struct GetAllBucketStatsRequest {}
1069#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1070pub struct GetAllBucketStatsResponse {
1071    #[prost(bool, tag = "1")]
1072    pub success: bool,
1073    #[prost(bytes = "bytes", tag = "2")]
1074    pub bucket_stats_map: ::prost::bytes::Bytes,
1075    #[prost(string, optional, tag = "3")]
1076    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1077}
1078#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1079pub struct LoadBucketMetadataRequest {
1080    #[prost(string, tag = "1")]
1081    pub bucket: ::prost::alloc::string::String,
1082    #[prost(bool, tag = "2")]
1083    pub scanner_maintenance_change: bool,
1084}
1085#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1086pub struct LoadBucketMetadataResponse {
1087    #[prost(bool, tag = "1")]
1088    pub success: bool,
1089    #[prost(string, optional, tag = "2")]
1090    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1091    #[prost(enumeration = "ControlPlaneErrorCode", optional, tag = "3")]
1092    pub error_code: ::core::option::Option<i32>,
1093}
1094#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1095pub struct DeleteBucketMetadataRequest {
1096    #[prost(string, tag = "1")]
1097    pub bucket: ::prost::alloc::string::String,
1098}
1099#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1100pub struct DeleteBucketMetadataResponse {
1101    #[prost(bool, tag = "1")]
1102    pub success: bool,
1103    #[prost(string, optional, tag = "2")]
1104    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1105}
1106#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1107pub struct DeletePolicyRequest {
1108    #[prost(string, tag = "1")]
1109    pub policy_name: ::prost::alloc::string::String,
1110}
1111#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1112pub struct DeletePolicyResponse {
1113    #[prost(bool, tag = "1")]
1114    pub success: bool,
1115    #[prost(string, optional, tag = "2")]
1116    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1117    #[prost(enumeration = "ControlPlaneErrorCode", optional, tag = "3")]
1118    pub error_code: ::core::option::Option<i32>,
1119}
1120#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1121pub struct LoadPolicyRequest {
1122    #[prost(string, tag = "1")]
1123    pub policy_name: ::prost::alloc::string::String,
1124}
1125#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1126pub struct LoadPolicyResponse {
1127    #[prost(bool, tag = "1")]
1128    pub success: bool,
1129    #[prost(string, optional, tag = "2")]
1130    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1131    #[prost(enumeration = "ControlPlaneErrorCode", optional, tag = "3")]
1132    pub error_code: ::core::option::Option<i32>,
1133}
1134#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1135pub struct LoadPolicyMappingRequest {
1136    #[prost(string, tag = "1")]
1137    pub user_or_group: ::prost::alloc::string::String,
1138    #[prost(uint64, tag = "2")]
1139    pub user_type: u64,
1140    #[prost(bool, tag = "3")]
1141    pub is_group: bool,
1142}
1143#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1144pub struct LoadPolicyMappingResponse {
1145    #[prost(bool, tag = "1")]
1146    pub success: bool,
1147    #[prost(string, optional, tag = "2")]
1148    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1149    #[prost(enumeration = "ControlPlaneErrorCode", optional, tag = "3")]
1150    pub error_code: ::core::option::Option<i32>,
1151}
1152#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1153pub struct DeleteUserRequest {
1154    #[prost(string, tag = "1")]
1155    pub access_key: ::prost::alloc::string::String,
1156}
1157#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1158pub struct DeleteUserResponse {
1159    #[prost(bool, tag = "1")]
1160    pub success: bool,
1161    #[prost(string, optional, tag = "2")]
1162    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1163    #[prost(enumeration = "ControlPlaneErrorCode", optional, tag = "3")]
1164    pub error_code: ::core::option::Option<i32>,
1165}
1166#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1167pub struct DeleteServiceAccountRequest {
1168    #[prost(string, tag = "1")]
1169    pub access_key: ::prost::alloc::string::String,
1170}
1171#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1172pub struct DeleteServiceAccountResponse {
1173    #[prost(bool, tag = "1")]
1174    pub success: bool,
1175    #[prost(string, optional, tag = "2")]
1176    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1177    #[prost(enumeration = "ControlPlaneErrorCode", optional, tag = "3")]
1178    pub error_code: ::core::option::Option<i32>,
1179}
1180#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1181pub struct LoadUserRequest {
1182    #[prost(string, tag = "1")]
1183    pub access_key: ::prost::alloc::string::String,
1184    #[prost(bool, tag = "2")]
1185    pub temp: bool,
1186}
1187#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1188pub struct LoadUserResponse {
1189    #[prost(bool, tag = "1")]
1190    pub success: bool,
1191    #[prost(string, optional, tag = "2")]
1192    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1193    #[prost(enumeration = "ControlPlaneErrorCode", optional, tag = "3")]
1194    pub error_code: ::core::option::Option<i32>,
1195}
1196#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1197pub struct LoadServiceAccountRequest {
1198    #[prost(string, tag = "1")]
1199    pub access_key: ::prost::alloc::string::String,
1200}
1201#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1202pub struct LoadServiceAccountResponse {
1203    #[prost(bool, tag = "1")]
1204    pub success: bool,
1205    #[prost(string, optional, tag = "2")]
1206    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1207    #[prost(enumeration = "ControlPlaneErrorCode", optional, tag = "3")]
1208    pub error_code: ::core::option::Option<i32>,
1209}
1210#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1211pub struct LoadGroupRequest {
1212    #[prost(string, tag = "1")]
1213    pub group: ::prost::alloc::string::String,
1214}
1215#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1216pub struct LoadGroupResponse {
1217    #[prost(bool, tag = "1")]
1218    pub success: bool,
1219    #[prost(string, optional, tag = "2")]
1220    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1221    #[prost(enumeration = "ControlPlaneErrorCode", optional, tag = "3")]
1222    pub error_code: ::core::option::Option<i32>,
1223}
1224#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1225pub struct ReloadSiteReplicationConfigRequest {}
1226#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1227pub struct ReloadSiteReplicationConfigResponse {
1228    #[prost(bool, tag = "1")]
1229    pub success: bool,
1230    #[prost(string, optional, tag = "2")]
1231    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1232    #[prost(enumeration = "ControlPlaneErrorCode", optional, tag = "3")]
1233    pub error_code: ::core::option::Option<i32>,
1234}
1235#[derive(Clone, PartialEq, ::prost::Message)]
1236pub struct SignalServiceRequest {
1237    #[prost(message, optional, tag = "1")]
1238    pub vars: ::core::option::Option<Mss>,
1239}
1240#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1241pub struct SignalServiceResponse {
1242    #[prost(bool, tag = "1")]
1243    pub success: bool,
1244    #[prost(string, optional, tag = "2")]
1245    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1246    #[prost(uint32, tag = "3")]
1247    pub protocol_version: u32,
1248    /// Redacted fingerprint of the KMS configuration this node is running.
1249    /// Only set for the "kms" dynamic config subsystem, and left unset when the
1250    /// responder has no KMS configuration. Peers built before that subsystem
1251    /// reject the signal outright rather than answering without this field.
1252    #[prost(string, optional, tag = "4")]
1253    pub config_fingerprint: ::core::option::Option<::prost::alloc::string::String>,
1254}
1255#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1256pub struct ScannerActivityRequest {
1257    #[prost(bytes = "bytes", tag = "1")]
1258    pub challenge: ::prost::bytes::Bytes,
1259    #[prost(uint32, tag = "2")]
1260    pub protocol_version: u32,
1261    #[prost(string, tag = "3")]
1262    pub acknowledge_instance_id: ::prost::alloc::string::String,
1263    #[prost(uint64, tag = "4")]
1264    pub acknowledge_dirty_usage_generation: u64,
1265}
1266#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1267pub struct ScannerActivityResponse {
1268    #[prost(string, tag = "1")]
1269    pub instance_id: ::prost::alloc::string::String,
1270    #[prost(uint64, tag = "2")]
1271    pub namespace_generation: u64,
1272    #[prost(uint64, tag = "3")]
1273    pub maintenance_generation: u64,
1274    #[prost(uint32, tag = "4")]
1275    pub protocol_version: u32,
1276    #[prost(bytes = "bytes", tag = "5")]
1277    pub topology_digest: ::prost::bytes::Bytes,
1278    #[prost(bool, tag = "6")]
1279    pub data_movement_active: bool,
1280    #[prost(bytes = "bytes", tag = "7")]
1281    pub response_proof: ::prost::bytes::Bytes,
1282    #[prost(uint64, tag = "8")]
1283    pub dirty_usage_generation: u64,
1284    #[prost(bool, tag = "9")]
1285    pub dirty_usage_pending: bool,
1286    /// v7 fields.  They are optional so v6 peers can continue to decode the
1287    /// response shape while newer readers fail closed when they are absent.
1288    #[prost(uint64, optional, tag = "10")]
1289    pub movement_generation: ::core::option::Option<u64>,
1290    #[prost(bool, optional, tag = "11")]
1291    pub publication_blocked: ::core::option::Option<bool>,
1292}
1293#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1294pub struct ScannerDirtyUsageBucket {
1295    #[prost(string, tag = "1")]
1296    pub bucket: ::prost::alloc::string::String,
1297    #[prost(uint64, tag = "2")]
1298    pub generation: u64,
1299    #[prost(bytes = "bytes", tag = "3")]
1300    pub bucket_incarnation: ::prost::bytes::Bytes,
1301}
1302#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1303pub struct ScannerDirtyUsageSnapshotRequest {
1304    #[prost(bytes = "bytes", tag = "1")]
1305    pub challenge: ::prost::bytes::Bytes,
1306    #[prost(uint32, tag = "2")]
1307    pub protocol_version: u32,
1308}
1309#[derive(Clone, PartialEq, ::prost::Message)]
1310pub struct ScannerDirtyUsageSnapshotResponse {
1311    #[prost(string, tag = "1")]
1312    pub instance_id: ::prost::alloc::string::String,
1313    #[prost(uint64, tag = "2")]
1314    pub generation: u64,
1315    #[prost(uint64, tag = "3")]
1316    pub pending_bucket_count: u64,
1317    #[prost(uint32, tag = "4")]
1318    pub protocol_version: u32,
1319    /// Incomplete snapshots are all-or-nothing and carry no bucket entries.
1320    #[prost(bool, tag = "5")]
1321    pub complete: bool,
1322    #[prost(message, repeated, tag = "6")]
1323    pub buckets: ::prost::alloc::vec::Vec<ScannerDirtyUsageBucket>,
1324    #[prost(bytes = "bytes", tag = "7")]
1325    pub response_proof: ::prost::bytes::Bytes,
1326    #[prost(string, tag = "8")]
1327    pub owner_id: ::prost::alloc::string::String,
1328}
1329/// Receiver-only protocol. Producers must retain whole-cycle ACK until they
1330/// have a durable per-bucket publication proof.
1331#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1332pub struct ScannerScopedDirtyUsageEntry {
1333    #[prost(string, tag = "1")]
1334    pub bucket: ::prost::alloc::string::String,
1335    #[prost(bytes = "bytes", tag = "2")]
1336    pub bucket_incarnation: ::prost::bytes::Bytes,
1337    #[prost(uint64, tag = "3")]
1338    pub generation: u64,
1339}
1340#[derive(Clone, PartialEq, ::prost::Message)]
1341pub struct ScannerScopedDirtyUsageAckRequest {
1342    #[prost(bytes = "bytes", tag = "1")]
1343    pub challenge: ::prost::bytes::Bytes,
1344    #[prost(uint32, tag = "2")]
1345    pub protocol_version: u32,
1346    #[prost(string, tag = "3")]
1347    pub owner_id: ::prost::alloc::string::String,
1348    #[prost(string, tag = "4")]
1349    pub instance_id: ::prost::alloc::string::String,
1350    /// Only scope 1 (a complete bucket) is supported; zero is invalid.
1351    #[prost(uint32, tag = "5")]
1352    pub scope: u32,
1353    #[prost(bool, tag = "6")]
1354    pub probe_only: bool,
1355    #[prost(message, repeated, tag = "7")]
1356    pub entries: ::prost::alloc::vec::Vec<ScannerScopedDirtyUsageEntry>,
1357}
1358#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1359pub struct ScannerScopedDirtyUsageAckResponse {
1360    #[prost(uint32, tag = "1")]
1361    pub protocol_version: u32,
1362    #[prost(string, tag = "2")]
1363    pub owner_id: ::prost::alloc::string::String,
1364    #[prost(string, tag = "3")]
1365    pub instance_id: ::prost::alloc::string::String,
1366    #[prost(bool, tag = "4")]
1367    pub supported: bool,
1368    #[prost(uint32, tag = "5")]
1369    pub max_entries: u32,
1370    #[prost(uint32, tag = "6")]
1371    pub max_request_bytes: u32,
1372    #[prost(uint64, tag = "7")]
1373    pub cleared: u64,
1374    #[prost(bytes = "bytes", tag = "8")]
1375    pub response_proof: ::prost::bytes::Bytes,
1376}
1377/// A short-lived storage-owned read admission used only around a final
1378/// scanner metadata publication.  It is intentionally separate from the
1379/// ScannerActivity observation wire so v6/v7 rolling compatibility remains
1380/// unchanged.
1381#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1382pub struct ScannerPublicationLeaseRequest {
1383    #[prost(bytes = "bytes", tag = "1")]
1384    pub challenge: ::prost::bytes::Bytes,
1385    #[prost(uint64, tag = "2")]
1386    pub expected_movement_generation: u64,
1387    #[prost(uint64, tag = "3")]
1388    pub ttl_ms: u64,
1389    /// The activity instance is a process session nonce.  It is intentionally
1390    /// separate from the storage-owned deployment identity returned by the
1391    /// lease response so a restart cannot reuse an old session token.
1392    #[prost(string, tag = "4")]
1393    pub expected_session_id: ::prost::alloc::string::String,
1394    /// A non-empty token turns the acquire RPC into an in-place validation of an
1395    /// existing lease.  Keeping this on the existing RPC lets old peers reject
1396    /// the proof without changing the v7 activity wire shape.
1397    #[prost(bytes = "bytes", tag = "5")]
1398    pub token: ::prost::bytes::Bytes,
1399}
1400#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1401pub struct ScannerPublicationLeaseResponse {
1402    #[prost(bool, tag = "1")]
1403    pub success: bool,
1404    #[prost(bytes = "bytes", tag = "2")]
1405    pub token: ::prost::bytes::Bytes,
1406    #[prost(uint64, tag = "3")]
1407    pub movement_generation: u64,
1408    #[prost(uint64, tag = "4")]
1409    pub lease_ttl_ms: u64,
1410    #[prost(message, optional, tag = "5")]
1411    pub error: ::core::option::Option<Error>,
1412    #[prost(bytes = "bytes", tag = "6")]
1413    pub response_proof: ::prost::bytes::Bytes,
1414    #[prost(string, tag = "7")]
1415    pub owner_id: ::prost::alloc::string::String,
1416    #[prost(string, tag = "8")]
1417    pub session_id: ::prost::alloc::string::String,
1418}
1419#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1420pub struct ScannerPublicationLeaseReleaseRequest {
1421    #[prost(bytes = "bytes", tag = "1")]
1422    pub challenge: ::prost::bytes::Bytes,
1423    #[prost(bytes = "bytes", tag = "2")]
1424    pub token: ::prost::bytes::Bytes,
1425    #[prost(string, tag = "3")]
1426    pub owner_id: ::prost::alloc::string::String,
1427    #[prost(string, tag = "4")]
1428    pub session_id: ::prost::alloc::string::String,
1429}
1430#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1431pub struct ScannerPublicationLeaseReleaseResponse {
1432    #[prost(bool, tag = "1")]
1433    pub success: bool,
1434    #[prost(message, optional, tag = "2")]
1435    pub error: ::core::option::Option<Error>,
1436    #[prost(bytes = "bytes", tag = "3")]
1437    pub response_proof: ::prost::bytes::Bytes,
1438}
1439#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1440pub struct BackgroundHealStatusRequest {
1441    #[prost(uint32, tag = "1")]
1442    pub protocol_version: u32,
1443}
1444#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1445pub struct BackgroundHealStatusResponse {
1446    #[prost(bool, tag = "1")]
1447    pub success: bool,
1448    #[prost(bytes = "bytes", tag = "2")]
1449    pub bg_heal_state: ::prost::bytes::Bytes,
1450    #[prost(string, optional, tag = "3")]
1451    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1452    #[prost(enumeration = "ControlPlaneErrorCode", optional, tag = "4")]
1453    pub error_code: ::core::option::Option<i32>,
1454}
1455#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1456pub struct ReplacementRecoveryStatusRequest {}
1457#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1458pub struct ReplacementRecoveryStatusResponse {
1459    #[prost(bool, tag = "1")]
1460    pub success: bool,
1461    #[prost(bytes = "bytes", tag = "2")]
1462    pub recovery_status: ::prost::bytes::Bytes,
1463    #[prost(string, optional, tag = "3")]
1464    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1465    #[prost(enumeration = "ControlPlaneErrorCode", optional, tag = "4")]
1466    pub error_code: ::core::option::Option<i32>,
1467}
1468#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1469pub struct HealControlRequest {
1470    #[prost(uint32, tag = "1")]
1471    pub version: u32,
1472    #[prost(string, tag = "2")]
1473    pub topology_fingerprint: ::prost::alloc::string::String,
1474    #[prost(bytes = "bytes", tag = "3")]
1475    pub command: ::prost::bytes::Bytes,
1476}
1477#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1478pub struct HealControlResponse {
1479    #[prost(bool, tag = "1")]
1480    pub success: bool,
1481    #[prost(bytes = "bytes", tag = "2")]
1482    pub result: ::prost::bytes::Bytes,
1483    #[prost(string, optional, tag = "3")]
1484    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1485    #[prost(bytes = "bytes", tag = "4")]
1486    pub response_proof: ::prost::bytes::Bytes,
1487}
1488#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1489pub struct GetMetacacheListingRequest {
1490    #[prost(bytes = "bytes", tag = "1")]
1491    pub opts: ::prost::bytes::Bytes,
1492}
1493#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1494pub struct GetMetacacheListingResponse {
1495    #[prost(bool, tag = "1")]
1496    pub success: bool,
1497    #[prost(bytes = "bytes", tag = "2")]
1498    pub metacache: ::prost::bytes::Bytes,
1499    #[prost(string, optional, tag = "3")]
1500    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1501}
1502#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1503pub struct UpdateMetacacheListingRequest {
1504    #[prost(bytes = "bytes", tag = "1")]
1505    pub metacache: ::prost::bytes::Bytes,
1506}
1507#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1508pub struct UpdateMetacacheListingResponse {
1509    #[prost(bool, tag = "1")]
1510    pub success: bool,
1511    #[prost(bytes = "bytes", tag = "2")]
1512    pub metacache: ::prost::bytes::Bytes,
1513    #[prost(string, optional, tag = "3")]
1514    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1515}
1516#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1517pub struct ReloadPoolMetaRequest {}
1518#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1519pub struct ReloadPoolMetaResponse {
1520    #[prost(bool, tag = "1")]
1521    pub success: bool,
1522    #[prost(string, optional, tag = "2")]
1523    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1524    #[prost(enumeration = "ControlPlaneErrorCode", optional, tag = "3")]
1525    pub error_code: ::core::option::Option<i32>,
1526}
1527#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1528pub struct StopRebalanceRequest {
1529    #[prost(string, tag = "1")]
1530    pub expected_rebalance_id: ::prost::alloc::string::String,
1531}
1532#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1533pub struct StopRebalanceResponse {
1534    #[prost(bool, tag = "1")]
1535    pub success: bool,
1536    #[prost(string, optional, tag = "2")]
1537    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1538    #[prost(enumeration = "ControlPlaneErrorCode", optional, tag = "3")]
1539    pub error_code: ::core::option::Option<i32>,
1540}
1541#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1542pub struct LoadRebalanceMetaRequest {
1543    #[prost(bool, tag = "1")]
1544    pub start_rebalance: bool,
1545}
1546#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1547pub struct LoadRebalanceMetaResponse {
1548    #[prost(bool, tag = "1")]
1549    pub success: bool,
1550    #[prost(string, optional, tag = "2")]
1551    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1552    #[prost(enumeration = "ControlPlaneErrorCode", optional, tag = "3")]
1553    pub error_code: ::core::option::Option<i32>,
1554}
1555#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1556pub struct StartDecommissionRequest {
1557    #[prost(uint32, repeated, tag = "1")]
1558    pub pool_indices: ::prost::alloc::vec::Vec<u32>,
1559}
1560#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1561pub struct StartDecommissionResponse {
1562    #[prost(bool, tag = "1")]
1563    pub success: bool,
1564    #[prost(string, optional, tag = "2")]
1565    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1566    #[prost(enumeration = "ControlPlaneErrorCode", optional, tag = "3")]
1567    pub error_code: ::core::option::Option<i32>,
1568}
1569#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1570pub struct CancelDecommissionRequest {
1571    #[prost(uint32, tag = "1")]
1572    pub pool_index: u32,
1573}
1574#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1575pub struct CancelDecommissionResponse {
1576    #[prost(bool, tag = "1")]
1577    pub success: bool,
1578    #[prost(string, optional, tag = "2")]
1579    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1580    #[prost(enumeration = "ControlPlaneErrorCode", optional, tag = "3")]
1581    pub error_code: ::core::option::Option<i32>,
1582}
1583#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1584pub struct ClearDecommissionRequest {
1585    #[prost(uint32, tag = "1")]
1586    pub pool_index: u32,
1587}
1588#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1589pub struct ClearDecommissionResponse {
1590    #[prost(bool, tag = "1")]
1591    pub success: bool,
1592    #[prost(string, optional, tag = "2")]
1593    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1594    #[prost(enumeration = "ControlPlaneErrorCode", optional, tag = "3")]
1595    pub error_code: ::core::option::Option<i32>,
1596}
1597#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1598pub struct LoadTransitionTierConfigRequest {}
1599#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1600pub struct LoadTransitionTierConfigResponse {
1601    #[prost(bool, tag = "1")]
1602    pub success: bool,
1603    #[prost(string, optional, tag = "2")]
1604    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1605    #[prost(enumeration = "ControlPlaneErrorCode", optional, tag = "3")]
1606    pub error_code: ::core::option::Option<i32>,
1607}
1608#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1609pub struct TierDailyStatsRequest {}
1610/// One node's own rolling-day transition counters, per remote tier.
1611///
1612/// `tier_daily_stats` is a msgpack map of tier name to the responder's 24-bin
1613/// ring plus the clock that ring was last aged to. A node counts only the
1614/// transitions it completed itself, so a caller sums the rings of every node to
1615/// obtain a cluster total. A peer that does not implement this RPC answers
1616/// UNIMPLEMENTED, which the caller reports as a non-reporting node rather than
1617/// as zero activity.
1618#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1619pub struct TierDailyStatsResponse {
1620    #[prost(bool, tag = "1")]
1621    pub success: bool,
1622    #[prost(bytes = "bytes", tag = "2")]
1623    pub tier_daily_stats: ::prost::bytes::Bytes,
1624    #[prost(string, optional, tag = "3")]
1625    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1626}
1627#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1628pub struct TierMutationPrepareRequest {
1629    #[prost(uint32, tag = "1")]
1630    pub version: u32,
1631    #[prost(string, tag = "2")]
1632    pub mutation_id: ::prost::alloc::string::String,
1633    #[prost(bytes = "bytes", tag = "3")]
1634    pub canonical_payload: ::prost::bytes::Bytes,
1635}
1636#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1637pub struct TierMutationCommitRequest {
1638    #[prost(uint32, tag = "1")]
1639    pub version: u32,
1640    #[prost(string, tag = "2")]
1641    pub mutation_id: ::prost::alloc::string::String,
1642    #[prost(bytes = "bytes", tag = "3")]
1643    pub canonical_payload: ::prost::bytes::Bytes,
1644}
1645#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1646pub struct TierMutationAbortRequest {
1647    #[prost(uint32, tag = "1")]
1648    pub version: u32,
1649    #[prost(string, tag = "2")]
1650    pub mutation_id: ::prost::alloc::string::String,
1651    #[prost(bytes = "bytes", tag = "3")]
1652    pub canonical_payload: ::prost::bytes::Bytes,
1653}
1654#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1655pub struct TierMutationControlResponse {
1656    #[prost(bool, tag = "1")]
1657    pub success: bool,
1658    #[prost(enumeration = "TierMutationPeerState", tag = "2")]
1659    pub state: i32,
1660    #[prost(bool, tag = "3")]
1661    pub applied: bool,
1662    #[prost(string, optional, tag = "4")]
1663    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1664    #[prost(bytes = "bytes", tag = "5")]
1665    pub response_proof: ::prost::bytes::Bytes,
1666    #[prost(enumeration = "TierMutationFailureClass", tag = "6")]
1667    pub failure_class: i32,
1668}
1669#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1670pub struct GetLiveEventsRequest {
1671    #[prost(uint64, tag = "1")]
1672    pub after_sequence: u64,
1673    #[prost(uint32, tag = "2")]
1674    pub limit: u32,
1675}
1676#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1677pub struct GetLiveEventsResponse {
1678    #[prost(bool, tag = "1")]
1679    pub success: bool,
1680    #[prost(bytes = "bytes", tag = "2")]
1681    pub events: ::prost::bytes::Bytes,
1682    #[prost(uint64, tag = "3")]
1683    pub next_sequence: u64,
1684    #[prost(bool, tag = "4")]
1685    pub truncated: bool,
1686    #[prost(string, optional, tag = "5")]
1687    pub error_info: ::core::option::Option<::prost::alloc::string::String>,
1688}
1689/// Typed control-plane error discriminants carried alongside the legacy
1690/// error_info string on control-plane responses. Rolling-upgrade compat:
1691/// old peers ignore the field and keep reading error_info.
1692/// RUSTFS_COMPAT_TODO(not-initialized-error-code-v1): legacy string dual-write. Remove after the minimum supported RustFS peer version always sends error_code.
1693#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1694#[repr(i32)]
1695pub enum ControlPlaneErrorCode {
1696    ControlPlaneErrorUnspecified = 0,
1697    /// The peer answered but its storage/IAM layer is not initialized yet
1698    /// (legacy string form: "errServerNotInitialized").
1699    ControlPlaneErrorNotInitialized = 1,
1700    /// The peer rejected a control-plane request before changing durable state.
1701    /// error_info carries the actionable validation reason.
1702    ControlPlaneErrorInvalidArgument = 2,
1703}
1704impl ControlPlaneErrorCode {
1705    /// String value of the enum field names used in the ProtoBuf definition.
1706    ///
1707    /// The values are not transformed in any way and thus are considered stable
1708    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1709    pub fn as_str_name(&self) -> &'static str {
1710        match self {
1711            Self::ControlPlaneErrorUnspecified => "CONTROL_PLANE_ERROR_UNSPECIFIED",
1712            Self::ControlPlaneErrorNotInitialized => "CONTROL_PLANE_ERROR_NOT_INITIALIZED",
1713            Self::ControlPlaneErrorInvalidArgument => "CONTROL_PLANE_ERROR_INVALID_ARGUMENT",
1714        }
1715    }
1716    /// Creates an enum from field names used in the ProtoBuf definition.
1717    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1718        match value {
1719            "CONTROL_PLANE_ERROR_UNSPECIFIED" => Some(Self::ControlPlaneErrorUnspecified),
1720            "CONTROL_PLANE_ERROR_NOT_INITIALIZED" => Some(Self::ControlPlaneErrorNotInitialized),
1721            "CONTROL_PLANE_ERROR_INVALID_ARGUMENT" => Some(Self::ControlPlaneErrorInvalidArgument),
1722            _ => None,
1723        }
1724    }
1725}
1726#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1727#[repr(i32)]
1728pub enum CompareAndUpdateFileOutcome {
1729    CompareAndUpdateFileUnspecified = 0,
1730    CompareAndUpdateFileUpdated = 1,
1731    CompareAndUpdateFileMissing = 2,
1732    CompareAndUpdateFileMismatch = 3,
1733}
1734impl CompareAndUpdateFileOutcome {
1735    /// String value of the enum field names used in the ProtoBuf definition.
1736    ///
1737    /// The values are not transformed in any way and thus are considered stable
1738    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1739    pub fn as_str_name(&self) -> &'static str {
1740        match self {
1741            Self::CompareAndUpdateFileUnspecified => "COMPARE_AND_UPDATE_FILE_UNSPECIFIED",
1742            Self::CompareAndUpdateFileUpdated => "COMPARE_AND_UPDATE_FILE_UPDATED",
1743            Self::CompareAndUpdateFileMissing => "COMPARE_AND_UPDATE_FILE_MISSING",
1744            Self::CompareAndUpdateFileMismatch => "COMPARE_AND_UPDATE_FILE_MISMATCH",
1745        }
1746    }
1747    /// Creates an enum from field names used in the ProtoBuf definition.
1748    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1749        match value {
1750            "COMPARE_AND_UPDATE_FILE_UNSPECIFIED" => Some(Self::CompareAndUpdateFileUnspecified),
1751            "COMPARE_AND_UPDATE_FILE_UPDATED" => Some(Self::CompareAndUpdateFileUpdated),
1752            "COMPARE_AND_UPDATE_FILE_MISSING" => Some(Self::CompareAndUpdateFileMissing),
1753            "COMPARE_AND_UPDATE_FILE_MISMATCH" => Some(Self::CompareAndUpdateFileMismatch),
1754            _ => None,
1755        }
1756    }
1757}
1758#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1759#[repr(i32)]
1760pub enum TierMutationPeerState {
1761    Unspecified = 0,
1762    Prepared = 1,
1763    Committed = 2,
1764    Aborted = 3,
1765}
1766impl TierMutationPeerState {
1767    /// String value of the enum field names used in the ProtoBuf definition.
1768    ///
1769    /// The values are not transformed in any way and thus are considered stable
1770    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1771    pub fn as_str_name(&self) -> &'static str {
1772        match self {
1773            Self::Unspecified => "TIER_MUTATION_PEER_STATE_UNSPECIFIED",
1774            Self::Prepared => "TIER_MUTATION_PEER_STATE_PREPARED",
1775            Self::Committed => "TIER_MUTATION_PEER_STATE_COMMITTED",
1776            Self::Aborted => "TIER_MUTATION_PEER_STATE_ABORTED",
1777        }
1778    }
1779    /// Creates an enum from field names used in the ProtoBuf definition.
1780    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1781        match value {
1782            "TIER_MUTATION_PEER_STATE_UNSPECIFIED" => Some(Self::Unspecified),
1783            "TIER_MUTATION_PEER_STATE_PREPARED" => Some(Self::Prepared),
1784            "TIER_MUTATION_PEER_STATE_COMMITTED" => Some(Self::Committed),
1785            "TIER_MUTATION_PEER_STATE_ABORTED" => Some(Self::Aborted),
1786            _ => None,
1787        }
1788    }
1789}
1790#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1791#[repr(i32)]
1792pub enum TierMutationFailureClass {
1793    Unspecified = 0,
1794    PreDispatchRejected = 1,
1795    Ambiguous = 2,
1796}
1797impl TierMutationFailureClass {
1798    /// String value of the enum field names used in the ProtoBuf definition.
1799    ///
1800    /// The values are not transformed in any way and thus are considered stable
1801    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1802    pub fn as_str_name(&self) -> &'static str {
1803        match self {
1804            Self::Unspecified => "TIER_MUTATION_FAILURE_CLASS_UNSPECIFIED",
1805            Self::PreDispatchRejected => "TIER_MUTATION_FAILURE_CLASS_PRE_DISPATCH_REJECTED",
1806            Self::Ambiguous => "TIER_MUTATION_FAILURE_CLASS_AMBIGUOUS",
1807        }
1808    }
1809    /// Creates an enum from field names used in the ProtoBuf definition.
1810    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1811        match value {
1812            "TIER_MUTATION_FAILURE_CLASS_UNSPECIFIED" => Some(Self::Unspecified),
1813            "TIER_MUTATION_FAILURE_CLASS_PRE_DISPATCH_REJECTED" => Some(Self::PreDispatchRejected),
1814            "TIER_MUTATION_FAILURE_CLASS_AMBIGUOUS" => Some(Self::Ambiguous),
1815            _ => None,
1816        }
1817    }
1818}
1819/// Generated client implementations.
1820pub mod node_service_client {
1821    #![allow(unused_variables, dead_code, missing_docs, clippy::wildcard_imports, clippy::let_unit_value)]
1822    use tonic::codegen::http::Uri;
1823    use tonic::codegen::*;
1824    #[derive(Debug, Clone)]
1825    pub struct NodeServiceClient<T> {
1826        inner: tonic::client::Grpc<T>,
1827    }
1828    impl NodeServiceClient<tonic::transport::Channel> {
1829        /// Attempt to create a new client by connecting to a given endpoint.
1830        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1831        where
1832            D: TryInto<tonic::transport::Endpoint>,
1833            D::Error: Into<StdError>,
1834        {
1835            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1836            Ok(Self::new(conn))
1837        }
1838    }
1839    impl<T> NodeServiceClient<T>
1840    where
1841        T: tonic::client::GrpcService<tonic::body::Body>,
1842        T::Error: Into<StdError>,
1843        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1844        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1845    {
1846        pub fn new(inner: T) -> Self {
1847            let inner = tonic::client::Grpc::new(inner);
1848            Self { inner }
1849        }
1850        pub fn with_origin(inner: T, origin: Uri) -> Self {
1851            let inner = tonic::client::Grpc::with_origin(inner, origin);
1852            Self { inner }
1853        }
1854        pub fn with_interceptor<F>(inner: T, interceptor: F) -> NodeServiceClient<InterceptedService<T, F>>
1855        where
1856            F: tonic::service::Interceptor,
1857            T::ResponseBody: Default,
1858            T: tonic::codegen::Service<
1859                    http::Request<tonic::body::Body>,
1860                    Response = http::Response<<T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody>,
1861                >,
1862            <T as tonic::codegen::Service<http::Request<tonic::body::Body>>>::Error:
1863                Into<StdError> + std::marker::Send + std::marker::Sync,
1864        {
1865            NodeServiceClient::new(InterceptedService::new(inner, interceptor))
1866        }
1867        /// Compress requests with the given encoding.
1868        ///
1869        /// This requires the server to support it otherwise it might respond with an
1870        /// error.
1871        #[must_use]
1872        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1873            self.inner = self.inner.send_compressed(encoding);
1874            self
1875        }
1876        /// Enable decompressing responses.
1877        #[must_use]
1878        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1879            self.inner = self.inner.accept_compressed(encoding);
1880            self
1881        }
1882        /// Limits the maximum size of a decoded message.
1883        ///
1884        /// Default: `4MB`
1885        #[must_use]
1886        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1887            self.inner = self.inner.max_decoding_message_size(limit);
1888            self
1889        }
1890        /// Limits the maximum size of an encoded message.
1891        ///
1892        /// Default: `usize::MAX`
1893        #[must_use]
1894        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1895            self.inner = self.inner.max_encoding_message_size(limit);
1896            self
1897        }
1898        /// -------------------------------meta service--------------------------
1899        pub async fn ping(
1900            &mut self,
1901            request: impl tonic::IntoRequest<super::PingRequest>,
1902        ) -> std::result::Result<tonic::Response<super::PingResponse>, tonic::Status> {
1903            self.inner
1904                .ready()
1905                .await
1906                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
1907            let codec = tonic_prost::ProstCodec::default();
1908            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/Ping");
1909            let mut req = request.into_request();
1910            req.extensions_mut()
1911                .insert(GrpcMethod::new("node_service.NodeService", "Ping"));
1912            self.inner.unary(req, path, codec).await
1913        }
1914        pub async fn heal_bucket(
1915            &mut self,
1916            request: impl tonic::IntoRequest<super::HealBucketRequest>,
1917        ) -> std::result::Result<tonic::Response<super::HealBucketResponse>, tonic::Status> {
1918            self.inner
1919                .ready()
1920                .await
1921                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
1922            let codec = tonic_prost::ProstCodec::default();
1923            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/HealBucket");
1924            let mut req = request.into_request();
1925            req.extensions_mut()
1926                .insert(GrpcMethod::new("node_service.NodeService", "HealBucket"));
1927            self.inner.unary(req, path, codec).await
1928        }
1929        pub async fn heal_bucket_at_incarnation(
1930            &mut self,
1931            request: impl tonic::IntoRequest<super::HealBucketRequest>,
1932        ) -> std::result::Result<tonic::Response<super::HealBucketResponse>, tonic::Status> {
1933            self.inner
1934                .ready()
1935                .await
1936                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
1937            let codec = tonic_prost::ProstCodec::default();
1938            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/HealBucketAtIncarnation");
1939            let mut req = request.into_request();
1940            req.extensions_mut()
1941                .insert(GrpcMethod::new("node_service.NodeService", "HealBucketAtIncarnation"));
1942            self.inner.unary(req, path, codec).await
1943        }
1944        pub async fn list_bucket(
1945            &mut self,
1946            request: impl tonic::IntoRequest<super::ListBucketRequest>,
1947        ) -> std::result::Result<tonic::Response<super::ListBucketResponse>, tonic::Status> {
1948            self.inner
1949                .ready()
1950                .await
1951                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
1952            let codec = tonic_prost::ProstCodec::default();
1953            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ListBucket");
1954            let mut req = request.into_request();
1955            req.extensions_mut()
1956                .insert(GrpcMethod::new("node_service.NodeService", "ListBucket"));
1957            self.inner.unary(req, path, codec).await
1958        }
1959        pub async fn make_bucket(
1960            &mut self,
1961            request: impl tonic::IntoRequest<super::MakeBucketRequest>,
1962        ) -> std::result::Result<tonic::Response<super::MakeBucketResponse>, tonic::Status> {
1963            self.inner
1964                .ready()
1965                .await
1966                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
1967            let codec = tonic_prost::ProstCodec::default();
1968            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/MakeBucket");
1969            let mut req = request.into_request();
1970            req.extensions_mut()
1971                .insert(GrpcMethod::new("node_service.NodeService", "MakeBucket"));
1972            self.inner.unary(req, path, codec).await
1973        }
1974        pub async fn get_bucket_info(
1975            &mut self,
1976            request: impl tonic::IntoRequest<super::GetBucketInfoRequest>,
1977        ) -> std::result::Result<tonic::Response<super::GetBucketInfoResponse>, tonic::Status> {
1978            self.inner
1979                .ready()
1980                .await
1981                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
1982            let codec = tonic_prost::ProstCodec::default();
1983            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetBucketInfo");
1984            let mut req = request.into_request();
1985            req.extensions_mut()
1986                .insert(GrpcMethod::new("node_service.NodeService", "GetBucketInfo"));
1987            self.inner.unary(req, path, codec).await
1988        }
1989        pub async fn delete_bucket(
1990            &mut self,
1991            request: impl tonic::IntoRequest<super::DeleteBucketRequest>,
1992        ) -> std::result::Result<tonic::Response<super::DeleteBucketResponse>, tonic::Status> {
1993            self.inner
1994                .ready()
1995                .await
1996                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
1997            let codec = tonic_prost::ProstCodec::default();
1998            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DeleteBucket");
1999            let mut req = request.into_request();
2000            req.extensions_mut()
2001                .insert(GrpcMethod::new("node_service.NodeService", "DeleteBucket"));
2002            self.inner.unary(req, path, codec).await
2003        }
2004        pub async fn read_all(
2005            &mut self,
2006            request: impl tonic::IntoRequest<super::ReadAllRequest>,
2007        ) -> std::result::Result<tonic::Response<super::ReadAllResponse>, tonic::Status> {
2008            self.inner
2009                .ready()
2010                .await
2011                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2012            let codec = tonic_prost::ProstCodec::default();
2013            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ReadAll");
2014            let mut req = request.into_request();
2015            req.extensions_mut()
2016                .insert(GrpcMethod::new("node_service.NodeService", "ReadAll"));
2017            self.inner.unary(req, path, codec).await
2018        }
2019        pub async fn write_all(
2020            &mut self,
2021            request: impl tonic::IntoRequest<super::WriteAllRequest>,
2022        ) -> std::result::Result<tonic::Response<super::WriteAllResponse>, tonic::Status> {
2023            self.inner
2024                .ready()
2025                .await
2026                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2027            let codec = tonic_prost::ProstCodec::default();
2028            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/WriteAll");
2029            let mut req = request.into_request();
2030            req.extensions_mut()
2031                .insert(GrpcMethod::new("node_service.NodeService", "WriteAll"));
2032            self.inner.unary(req, path, codec).await
2033        }
2034        pub async fn compare_and_update_file(
2035            &mut self,
2036            request: impl tonic::IntoRequest<super::CompareAndUpdateFileRequest>,
2037        ) -> std::result::Result<tonic::Response<super::CompareAndUpdateFileResponse>, tonic::Status> {
2038            self.inner
2039                .ready()
2040                .await
2041                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2042            let codec = tonic_prost::ProstCodec::default();
2043            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/CompareAndUpdateFile");
2044            let mut req = request.into_request();
2045            req.extensions_mut()
2046                .insert(GrpcMethod::new("node_service.NodeService", "CompareAndUpdateFile"));
2047            self.inner.unary(req, path, codec).await
2048        }
2049        pub async fn delete(
2050            &mut self,
2051            request: impl tonic::IntoRequest<super::DeleteRequest>,
2052        ) -> std::result::Result<tonic::Response<super::DeleteResponse>, tonic::Status> {
2053            self.inner
2054                .ready()
2055                .await
2056                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2057            let codec = tonic_prost::ProstCodec::default();
2058            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/Delete");
2059            let mut req = request.into_request();
2060            req.extensions_mut()
2061                .insert(GrpcMethod::new("node_service.NodeService", "Delete"));
2062            self.inner.unary(req, path, codec).await
2063        }
2064        pub async fn delete_at_incarnation(
2065            &mut self,
2066            request: impl tonic::IntoRequest<super::DeleteRequest>,
2067        ) -> std::result::Result<tonic::Response<super::DeleteResponse>, tonic::Status> {
2068            self.inner
2069                .ready()
2070                .await
2071                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2072            let codec = tonic_prost::ProstCodec::default();
2073            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DeleteAtIncarnation");
2074            let mut req = request.into_request();
2075            req.extensions_mut()
2076                .insert(GrpcMethod::new("node_service.NodeService", "DeleteAtIncarnation"));
2077            self.inner.unary(req, path, codec).await
2078        }
2079        pub async fn acquire_snapshot_lease(
2080            &mut self,
2081            request: impl tonic::IntoRequest<super::SnapshotLeaseRequest>,
2082        ) -> std::result::Result<tonic::Response<super::SnapshotLeaseResponse>, tonic::Status> {
2083            self.inner
2084                .ready()
2085                .await
2086                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2087            let codec = tonic_prost::ProstCodec::default();
2088            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/AcquireSnapshotLease");
2089            let mut req = request.into_request();
2090            req.extensions_mut()
2091                .insert(GrpcMethod::new("node_service.NodeService", "AcquireSnapshotLease"));
2092            self.inner.unary(req, path, codec).await
2093        }
2094        pub async fn renew_snapshot_lease(
2095            &mut self,
2096            request: impl tonic::IntoRequest<super::SnapshotLeaseRenewRequest>,
2097        ) -> std::result::Result<tonic::Response<super::SnapshotLeaseResponse>, tonic::Status> {
2098            self.inner
2099                .ready()
2100                .await
2101                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2102            let codec = tonic_prost::ProstCodec::default();
2103            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/RenewSnapshotLease");
2104            let mut req = request.into_request();
2105            req.extensions_mut()
2106                .insert(GrpcMethod::new("node_service.NodeService", "RenewSnapshotLease"));
2107            self.inner.unary(req, path, codec).await
2108        }
2109        pub async fn release_snapshot_lease(
2110            &mut self,
2111            request: impl tonic::IntoRequest<super::SnapshotLeaseReleaseRequest>,
2112        ) -> std::result::Result<tonic::Response<super::SnapshotLeaseMutationResponse>, tonic::Status> {
2113            self.inner
2114                .ready()
2115                .await
2116                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2117            let codec = tonic_prost::ProstCodec::default();
2118            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ReleaseSnapshotLease");
2119            let mut req = request.into_request();
2120            req.extensions_mut()
2121                .insert(GrpcMethod::new("node_service.NodeService", "ReleaseSnapshotLease"));
2122            self.inner.unary(req, path, codec).await
2123        }
2124        pub async fn verify_file(
2125            &mut self,
2126            request: impl tonic::IntoRequest<super::VerifyFileRequest>,
2127        ) -> std::result::Result<tonic::Response<super::VerifyFileResponse>, tonic::Status> {
2128            self.inner
2129                .ready()
2130                .await
2131                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2132            let codec = tonic_prost::ProstCodec::default();
2133            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/VerifyFile");
2134            let mut req = request.into_request();
2135            req.extensions_mut()
2136                .insert(GrpcMethod::new("node_service.NodeService", "VerifyFile"));
2137            self.inner.unary(req, path, codec).await
2138        }
2139        pub async fn read_parts(
2140            &mut self,
2141            request: impl tonic::IntoRequest<super::ReadPartsRequest>,
2142        ) -> std::result::Result<tonic::Response<super::ReadPartsResponse>, tonic::Status> {
2143            self.inner
2144                .ready()
2145                .await
2146                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2147            let codec = tonic_prost::ProstCodec::default();
2148            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ReadParts");
2149            let mut req = request.into_request();
2150            req.extensions_mut()
2151                .insert(GrpcMethod::new("node_service.NodeService", "ReadParts"));
2152            self.inner.unary(req, path, codec).await
2153        }
2154        pub async fn check_parts(
2155            &mut self,
2156            request: impl tonic::IntoRequest<super::CheckPartsRequest>,
2157        ) -> std::result::Result<tonic::Response<super::CheckPartsResponse>, tonic::Status> {
2158            self.inner
2159                .ready()
2160                .await
2161                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2162            let codec = tonic_prost::ProstCodec::default();
2163            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/CheckParts");
2164            let mut req = request.into_request();
2165            req.extensions_mut()
2166                .insert(GrpcMethod::new("node_service.NodeService", "CheckParts"));
2167            self.inner.unary(req, path, codec).await
2168        }
2169        pub async fn prepare_part_transaction(
2170            &mut self,
2171            request: impl tonic::IntoRequest<super::PreparePartTransactionRequest>,
2172        ) -> std::result::Result<tonic::Response<super::PreparePartTransactionResponse>, tonic::Status> {
2173            self.inner
2174                .ready()
2175                .await
2176                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2177            let codec = tonic_prost::ProstCodec::default();
2178            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/PreparePartTransaction");
2179            let mut req = request.into_request();
2180            req.extensions_mut()
2181                .insert(GrpcMethod::new("node_service.NodeService", "PreparePartTransaction"));
2182            self.inner.unary(req, path, codec).await
2183        }
2184        pub async fn rename_part(
2185            &mut self,
2186            request: impl tonic::IntoRequest<super::RenamePartRequest>,
2187        ) -> std::result::Result<tonic::Response<super::RenamePartResponse>, tonic::Status> {
2188            self.inner
2189                .ready()
2190                .await
2191                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2192            let codec = tonic_prost::ProstCodec::default();
2193            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/RenamePart");
2194            let mut req = request.into_request();
2195            req.extensions_mut()
2196                .insert(GrpcMethod::new("node_service.NodeService", "RenamePart"));
2197            self.inner.unary(req, path, codec).await
2198        }
2199        pub async fn settle_part_transaction(
2200            &mut self,
2201            request: impl tonic::IntoRequest<super::SettlePartTransactionRequest>,
2202        ) -> std::result::Result<tonic::Response<super::SettlePartTransactionResponse>, tonic::Status> {
2203            self.inner
2204                .ready()
2205                .await
2206                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2207            let codec = tonic_prost::ProstCodec::default();
2208            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/SettlePartTransaction");
2209            let mut req = request.into_request();
2210            req.extensions_mut()
2211                .insert(GrpcMethod::new("node_service.NodeService", "SettlePartTransaction"));
2212            self.inner.unary(req, path, codec).await
2213        }
2214        pub async fn rename_file(
2215            &mut self,
2216            request: impl tonic::IntoRequest<super::RenameFileRequest>,
2217        ) -> std::result::Result<tonic::Response<super::RenameFileResponse>, tonic::Status> {
2218            self.inner
2219                .ready()
2220                .await
2221                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2222            let codec = tonic_prost::ProstCodec::default();
2223            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/RenameFile");
2224            let mut req = request.into_request();
2225            req.extensions_mut()
2226                .insert(GrpcMethod::new("node_service.NodeService", "RenameFile"));
2227            self.inner.unary(req, path, codec).await
2228        }
2229        pub async fn write(
2230            &mut self,
2231            request: impl tonic::IntoRequest<super::WriteRequest>,
2232        ) -> std::result::Result<tonic::Response<super::WriteResponse>, tonic::Status> {
2233            self.inner
2234                .ready()
2235                .await
2236                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2237            let codec = tonic_prost::ProstCodec::default();
2238            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/Write");
2239            let mut req = request.into_request();
2240            req.extensions_mut()
2241                .insert(GrpcMethod::new("node_service.NodeService", "Write"));
2242            self.inner.unary(req, path, codec).await
2243        }
2244        pub async fn write_stream(
2245            &mut self,
2246            request: impl tonic::IntoStreamingRequest<Message = super::WriteRequest>,
2247        ) -> std::result::Result<tonic::Response<tonic::codec::Streaming<super::WriteResponse>>, tonic::Status> {
2248            self.inner
2249                .ready()
2250                .await
2251                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2252            let codec = tonic_prost::ProstCodec::default();
2253            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/WriteStream");
2254            let mut req = request.into_streaming_request();
2255            req.extensions_mut()
2256                .insert(GrpcMethod::new("node_service.NodeService", "WriteStream"));
2257            self.inner.streaming(req, path, codec).await
2258        }
2259        /// rpc Append(AppendRequest) returns (AppendResponse) {};
2260        pub async fn read_at(
2261            &mut self,
2262            request: impl tonic::IntoStreamingRequest<Message = super::ReadAtRequest>,
2263        ) -> std::result::Result<tonic::Response<tonic::codec::Streaming<super::ReadAtResponse>>, tonic::Status> {
2264            self.inner
2265                .ready()
2266                .await
2267                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2268            let codec = tonic_prost::ProstCodec::default();
2269            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ReadAt");
2270            let mut req = request.into_streaming_request();
2271            req.extensions_mut()
2272                .insert(GrpcMethod::new("node_service.NodeService", "ReadAt"));
2273            self.inner.streaming(req, path, codec).await
2274        }
2275        pub async fn list_dir(
2276            &mut self,
2277            request: impl tonic::IntoRequest<super::ListDirRequest>,
2278        ) -> std::result::Result<tonic::Response<super::ListDirResponse>, tonic::Status> {
2279            self.inner
2280                .ready()
2281                .await
2282                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2283            let codec = tonic_prost::ProstCodec::default();
2284            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ListDir");
2285            let mut req = request.into_request();
2286            req.extensions_mut()
2287                .insert(GrpcMethod::new("node_service.NodeService", "ListDir"));
2288            self.inner.unary(req, path, codec).await
2289        }
2290        pub async fn walk_dir(
2291            &mut self,
2292            request: impl tonic::IntoRequest<super::WalkDirRequest>,
2293        ) -> std::result::Result<tonic::Response<tonic::codec::Streaming<super::WalkDirResponse>>, tonic::Status> {
2294            self.inner
2295                .ready()
2296                .await
2297                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2298            let codec = tonic_prost::ProstCodec::default();
2299            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/WalkDir");
2300            let mut req = request.into_request();
2301            req.extensions_mut()
2302                .insert(GrpcMethod::new("node_service.NodeService", "WalkDir"));
2303            self.inner.server_streaming(req, path, codec).await
2304        }
2305        pub async fn rename_data(
2306            &mut self,
2307            request: impl tonic::IntoRequest<super::RenameDataRequest>,
2308        ) -> std::result::Result<tonic::Response<super::RenameDataResponse>, tonic::Status> {
2309            self.inner
2310                .ready()
2311                .await
2312                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2313            let codec = tonic_prost::ProstCodec::default();
2314            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/RenameData");
2315            let mut req = request.into_request();
2316            req.extensions_mut()
2317                .insert(GrpcMethod::new("node_service.NodeService", "RenameData"));
2318            self.inner.unary(req, path, codec).await
2319        }
2320        pub async fn rename_data_at_incarnation(
2321            &mut self,
2322            request: impl tonic::IntoRequest<super::RenameDataRequest>,
2323        ) -> std::result::Result<tonic::Response<super::RenameDataResponse>, tonic::Status> {
2324            self.inner
2325                .ready()
2326                .await
2327                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2328            let codec = tonic_prost::ProstCodec::default();
2329            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/RenameDataAtIncarnation");
2330            let mut req = request.into_request();
2331            req.extensions_mut()
2332                .insert(GrpcMethod::new("node_service.NodeService", "RenameDataAtIncarnation"));
2333            self.inner.unary(req, path, codec).await
2334        }
2335        pub async fn make_volumes(
2336            &mut self,
2337            request: impl tonic::IntoRequest<super::MakeVolumesRequest>,
2338        ) -> std::result::Result<tonic::Response<super::MakeVolumesResponse>, tonic::Status> {
2339            self.inner
2340                .ready()
2341                .await
2342                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2343            let codec = tonic_prost::ProstCodec::default();
2344            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/MakeVolumes");
2345            let mut req = request.into_request();
2346            req.extensions_mut()
2347                .insert(GrpcMethod::new("node_service.NodeService", "MakeVolumes"));
2348            self.inner.unary(req, path, codec).await
2349        }
2350        pub async fn make_volume(
2351            &mut self,
2352            request: impl tonic::IntoRequest<super::MakeVolumeRequest>,
2353        ) -> std::result::Result<tonic::Response<super::MakeVolumeResponse>, tonic::Status> {
2354            self.inner
2355                .ready()
2356                .await
2357                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2358            let codec = tonic_prost::ProstCodec::default();
2359            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/MakeVolume");
2360            let mut req = request.into_request();
2361            req.extensions_mut()
2362                .insert(GrpcMethod::new("node_service.NodeService", "MakeVolume"));
2363            self.inner.unary(req, path, codec).await
2364        }
2365        pub async fn list_volumes(
2366            &mut self,
2367            request: impl tonic::IntoRequest<super::ListVolumesRequest>,
2368        ) -> std::result::Result<tonic::Response<super::ListVolumesResponse>, tonic::Status> {
2369            self.inner
2370                .ready()
2371                .await
2372                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2373            let codec = tonic_prost::ProstCodec::default();
2374            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ListVolumes");
2375            let mut req = request.into_request();
2376            req.extensions_mut()
2377                .insert(GrpcMethod::new("node_service.NodeService", "ListVolumes"));
2378            self.inner.unary(req, path, codec).await
2379        }
2380        pub async fn stat_volume(
2381            &mut self,
2382            request: impl tonic::IntoRequest<super::StatVolumeRequest>,
2383        ) -> std::result::Result<tonic::Response<super::StatVolumeResponse>, tonic::Status> {
2384            self.inner
2385                .ready()
2386                .await
2387                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2388            let codec = tonic_prost::ProstCodec::default();
2389            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/StatVolume");
2390            let mut req = request.into_request();
2391            req.extensions_mut()
2392                .insert(GrpcMethod::new("node_service.NodeService", "StatVolume"));
2393            self.inner.unary(req, path, codec).await
2394        }
2395        pub async fn delete_paths(
2396            &mut self,
2397            request: impl tonic::IntoRequest<super::DeletePathsRequest>,
2398        ) -> std::result::Result<tonic::Response<super::DeletePathsResponse>, tonic::Status> {
2399            self.inner
2400                .ready()
2401                .await
2402                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2403            let codec = tonic_prost::ProstCodec::default();
2404            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DeletePaths");
2405            let mut req = request.into_request();
2406            req.extensions_mut()
2407                .insert(GrpcMethod::new("node_service.NodeService", "DeletePaths"));
2408            self.inner.unary(req, path, codec).await
2409        }
2410        pub async fn update_metadata(
2411            &mut self,
2412            request: impl tonic::IntoRequest<super::UpdateMetadataRequest>,
2413        ) -> std::result::Result<tonic::Response<super::UpdateMetadataResponse>, tonic::Status> {
2414            self.inner
2415                .ready()
2416                .await
2417                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2418            let codec = tonic_prost::ProstCodec::default();
2419            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/UpdateMetadata");
2420            let mut req = request.into_request();
2421            req.extensions_mut()
2422                .insert(GrpcMethod::new("node_service.NodeService", "UpdateMetadata"));
2423            self.inner.unary(req, path, codec).await
2424        }
2425        pub async fn read_metadata(
2426            &mut self,
2427            request: impl tonic::IntoRequest<super::ReadMetadataRequest>,
2428        ) -> std::result::Result<tonic::Response<super::ReadMetadataResponse>, tonic::Status> {
2429            self.inner
2430                .ready()
2431                .await
2432                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2433            let codec = tonic_prost::ProstCodec::default();
2434            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ReadMetadata");
2435            let mut req = request.into_request();
2436            req.extensions_mut()
2437                .insert(GrpcMethod::new("node_service.NodeService", "ReadMetadata"));
2438            self.inner.unary(req, path, codec).await
2439        }
2440        pub async fn write_metadata(
2441            &mut self,
2442            request: impl tonic::IntoRequest<super::WriteMetadataRequest>,
2443        ) -> std::result::Result<tonic::Response<super::WriteMetadataResponse>, tonic::Status> {
2444            self.inner
2445                .ready()
2446                .await
2447                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2448            let codec = tonic_prost::ProstCodec::default();
2449            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/WriteMetadata");
2450            let mut req = request.into_request();
2451            req.extensions_mut()
2452                .insert(GrpcMethod::new("node_service.NodeService", "WriteMetadata"));
2453            self.inner.unary(req, path, codec).await
2454        }
2455        pub async fn write_metadata_at_incarnation(
2456            &mut self,
2457            request: impl tonic::IntoRequest<super::WriteMetadataRequest>,
2458        ) -> std::result::Result<tonic::Response<super::WriteMetadataResponse>, tonic::Status> {
2459            self.inner
2460                .ready()
2461                .await
2462                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2463            let codec = tonic_prost::ProstCodec::default();
2464            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/WriteMetadataAtIncarnation");
2465            let mut req = request.into_request();
2466            req.extensions_mut()
2467                .insert(GrpcMethod::new("node_service.NodeService", "WriteMetadataAtIncarnation"));
2468            self.inner.unary(req, path, codec).await
2469        }
2470        pub async fn read_version(
2471            &mut self,
2472            request: impl tonic::IntoRequest<super::ReadVersionRequest>,
2473        ) -> std::result::Result<tonic::Response<super::ReadVersionResponse>, tonic::Status> {
2474            self.inner
2475                .ready()
2476                .await
2477                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2478            let codec = tonic_prost::ProstCodec::default();
2479            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ReadVersion");
2480            let mut req = request.into_request();
2481            req.extensions_mut()
2482                .insert(GrpcMethod::new("node_service.NodeService", "ReadVersion"));
2483            self.inner.unary(req, path, codec).await
2484        }
2485        pub async fn batch_read_version(
2486            &mut self,
2487            request: impl tonic::IntoRequest<super::BatchReadVersionRequest>,
2488        ) -> std::result::Result<tonic::Response<super::BatchReadVersionResponse>, tonic::Status> {
2489            self.inner
2490                .ready()
2491                .await
2492                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2493            let codec = tonic_prost::ProstCodec::default();
2494            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/BatchReadVersion");
2495            let mut req = request.into_request();
2496            req.extensions_mut()
2497                .insert(GrpcMethod::new("node_service.NodeService", "BatchReadVersion"));
2498            self.inner.unary(req, path, codec).await
2499        }
2500        pub async fn read_xl(
2501            &mut self,
2502            request: impl tonic::IntoRequest<super::ReadXlRequest>,
2503        ) -> std::result::Result<tonic::Response<super::ReadXlResponse>, tonic::Status> {
2504            self.inner
2505                .ready()
2506                .await
2507                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2508            let codec = tonic_prost::ProstCodec::default();
2509            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ReadXL");
2510            let mut req = request.into_request();
2511            req.extensions_mut()
2512                .insert(GrpcMethod::new("node_service.NodeService", "ReadXL"));
2513            self.inner.unary(req, path, codec).await
2514        }
2515        pub async fn delete_version(
2516            &mut self,
2517            request: impl tonic::IntoRequest<super::DeleteVersionRequest>,
2518        ) -> std::result::Result<tonic::Response<super::DeleteVersionResponse>, tonic::Status> {
2519            self.inner
2520                .ready()
2521                .await
2522                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2523            let codec = tonic_prost::ProstCodec::default();
2524            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DeleteVersion");
2525            let mut req = request.into_request();
2526            req.extensions_mut()
2527                .insert(GrpcMethod::new("node_service.NodeService", "DeleteVersion"));
2528            self.inner.unary(req, path, codec).await
2529        }
2530        pub async fn delete_version_at_incarnation(
2531            &mut self,
2532            request: impl tonic::IntoRequest<super::DeleteVersionRequest>,
2533        ) -> std::result::Result<tonic::Response<super::DeleteVersionResponse>, tonic::Status> {
2534            self.inner
2535                .ready()
2536                .await
2537                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2538            let codec = tonic_prost::ProstCodec::default();
2539            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DeleteVersionAtIncarnation");
2540            let mut req = request.into_request();
2541            req.extensions_mut()
2542                .insert(GrpcMethod::new("node_service.NodeService", "DeleteVersionAtIncarnation"));
2543            self.inner.unary(req, path, codec).await
2544        }
2545        pub async fn delete_retired_marker(
2546            &mut self,
2547            request: impl tonic::IntoRequest<super::DeleteVersionRequest>,
2548        ) -> std::result::Result<tonic::Response<super::DeleteVersionResponse>, tonic::Status> {
2549            self.inner
2550                .ready()
2551                .await
2552                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2553            let codec = tonic_prost::ProstCodec::default();
2554            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DeleteRetiredMarker");
2555            let mut req = request.into_request();
2556            req.extensions_mut()
2557                .insert(GrpcMethod::new("node_service.NodeService", "DeleteRetiredMarker"));
2558            self.inner.unary(req, path, codec).await
2559        }
2560        pub async fn delete_versions(
2561            &mut self,
2562            request: impl tonic::IntoRequest<super::DeleteVersionsRequest>,
2563        ) -> std::result::Result<tonic::Response<super::DeleteVersionsResponse>, tonic::Status> {
2564            self.inner
2565                .ready()
2566                .await
2567                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2568            let codec = tonic_prost::ProstCodec::default();
2569            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DeleteVersions");
2570            let mut req = request.into_request();
2571            req.extensions_mut()
2572                .insert(GrpcMethod::new("node_service.NodeService", "DeleteVersions"));
2573            self.inner.unary(req, path, codec).await
2574        }
2575        pub async fn read_multiple(
2576            &mut self,
2577            request: impl tonic::IntoRequest<super::ReadMultipleRequest>,
2578        ) -> std::result::Result<tonic::Response<super::ReadMultipleResponse>, tonic::Status> {
2579            self.inner
2580                .ready()
2581                .await
2582                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2583            let codec = tonic_prost::ProstCodec::default();
2584            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ReadMultiple");
2585            let mut req = request.into_request();
2586            req.extensions_mut()
2587                .insert(GrpcMethod::new("node_service.NodeService", "ReadMultiple"));
2588            self.inner.unary(req, path, codec).await
2589        }
2590        pub async fn delete_volume(
2591            &mut self,
2592            request: impl tonic::IntoRequest<super::DeleteVolumeRequest>,
2593        ) -> std::result::Result<tonic::Response<super::DeleteVolumeResponse>, tonic::Status> {
2594            self.inner
2595                .ready()
2596                .await
2597                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2598            let codec = tonic_prost::ProstCodec::default();
2599            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DeleteVolume");
2600            let mut req = request.into_request();
2601            req.extensions_mut()
2602                .insert(GrpcMethod::new("node_service.NodeService", "DeleteVolume"));
2603            self.inner.unary(req, path, codec).await
2604        }
2605        pub async fn disk_info(
2606            &mut self,
2607            request: impl tonic::IntoRequest<super::DiskInfoRequest>,
2608        ) -> std::result::Result<tonic::Response<super::DiskInfoResponse>, tonic::Status> {
2609            self.inner
2610                .ready()
2611                .await
2612                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2613            let codec = tonic_prost::ProstCodec::default();
2614            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DiskInfo");
2615            let mut req = request.into_request();
2616            req.extensions_mut()
2617                .insert(GrpcMethod::new("node_service.NodeService", "DiskInfo"));
2618            self.inner.unary(req, path, codec).await
2619        }
2620        pub async fn lock(
2621            &mut self,
2622            request: impl tonic::IntoRequest<super::GenerallyLockRequest>,
2623        ) -> std::result::Result<tonic::Response<super::GenerallyLockResponse>, tonic::Status> {
2624            self.inner
2625                .ready()
2626                .await
2627                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2628            let codec = tonic_prost::ProstCodec::default();
2629            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/Lock");
2630            let mut req = request.into_request();
2631            req.extensions_mut()
2632                .insert(GrpcMethod::new("node_service.NodeService", "Lock"));
2633            self.inner.unary(req, path, codec).await
2634        }
2635        pub async fn un_lock(
2636            &mut self,
2637            request: impl tonic::IntoRequest<super::GenerallyLockRequest>,
2638        ) -> std::result::Result<tonic::Response<super::GenerallyLockResponse>, tonic::Status> {
2639            self.inner
2640                .ready()
2641                .await
2642                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2643            let codec = tonic_prost::ProstCodec::default();
2644            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/UnLock");
2645            let mut req = request.into_request();
2646            req.extensions_mut()
2647                .insert(GrpcMethod::new("node_service.NodeService", "UnLock"));
2648            self.inner.unary(req, path, codec).await
2649        }
2650        pub async fn force_un_lock(
2651            &mut self,
2652            request: impl tonic::IntoRequest<super::GenerallyLockRequest>,
2653        ) -> std::result::Result<tonic::Response<super::GenerallyLockResponse>, tonic::Status> {
2654            self.inner
2655                .ready()
2656                .await
2657                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2658            let codec = tonic_prost::ProstCodec::default();
2659            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ForceUnLock");
2660            let mut req = request.into_request();
2661            req.extensions_mut()
2662                .insert(GrpcMethod::new("node_service.NodeService", "ForceUnLock"));
2663            self.inner.unary(req, path, codec).await
2664        }
2665        pub async fn refresh(
2666            &mut self,
2667            request: impl tonic::IntoRequest<super::GenerallyLockRequest>,
2668        ) -> std::result::Result<tonic::Response<super::GenerallyLockResponse>, tonic::Status> {
2669            self.inner
2670                .ready()
2671                .await
2672                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2673            let codec = tonic_prost::ProstCodec::default();
2674            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/Refresh");
2675            let mut req = request.into_request();
2676            req.extensions_mut()
2677                .insert(GrpcMethod::new("node_service.NodeService", "Refresh"));
2678            self.inner.unary(req, path, codec).await
2679        }
2680        pub async fn lock_batch(
2681            &mut self,
2682            request: impl tonic::IntoRequest<super::BatchGenerallyLockRequest>,
2683        ) -> std::result::Result<tonic::Response<super::BatchGenerallyLockResponse>, tonic::Status> {
2684            self.inner
2685                .ready()
2686                .await
2687                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2688            let codec = tonic_prost::ProstCodec::default();
2689            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/LockBatch");
2690            let mut req = request.into_request();
2691            req.extensions_mut()
2692                .insert(GrpcMethod::new("node_service.NodeService", "LockBatch"));
2693            self.inner.unary(req, path, codec).await
2694        }
2695        pub async fn un_lock_batch(
2696            &mut self,
2697            request: impl tonic::IntoRequest<super::BatchGenerallyLockRequest>,
2698        ) -> std::result::Result<tonic::Response<super::BatchGenerallyLockResponse>, tonic::Status> {
2699            self.inner
2700                .ready()
2701                .await
2702                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2703            let codec = tonic_prost::ProstCodec::default();
2704            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/UnLockBatch");
2705            let mut req = request.into_request();
2706            req.extensions_mut()
2707                .insert(GrpcMethod::new("node_service.NodeService", "UnLockBatch"));
2708            self.inner.unary(req, path, codec).await
2709        }
2710        pub async fn local_storage_info(
2711            &mut self,
2712            request: impl tonic::IntoRequest<super::LocalStorageInfoRequest>,
2713        ) -> std::result::Result<tonic::Response<super::LocalStorageInfoResponse>, tonic::Status> {
2714            self.inner
2715                .ready()
2716                .await
2717                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2718            let codec = tonic_prost::ProstCodec::default();
2719            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/LocalStorageInfo");
2720            let mut req = request.into_request();
2721            req.extensions_mut()
2722                .insert(GrpcMethod::new("node_service.NodeService", "LocalStorageInfo"));
2723            self.inner.unary(req, path, codec).await
2724        }
2725        pub async fn server_info(
2726            &mut self,
2727            request: impl tonic::IntoRequest<super::ServerInfoRequest>,
2728        ) -> std::result::Result<tonic::Response<super::ServerInfoResponse>, tonic::Status> {
2729            self.inner
2730                .ready()
2731                .await
2732                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2733            let codec = tonic_prost::ProstCodec::default();
2734            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ServerInfo");
2735            let mut req = request.into_request();
2736            req.extensions_mut()
2737                .insert(GrpcMethod::new("node_service.NodeService", "ServerInfo"));
2738            self.inner.unary(req, path, codec).await
2739        }
2740        pub async fn get_cpus(
2741            &mut self,
2742            request: impl tonic::IntoRequest<super::GetCpusRequest>,
2743        ) -> std::result::Result<tonic::Response<super::GetCpusResponse>, tonic::Status> {
2744            self.inner
2745                .ready()
2746                .await
2747                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2748            let codec = tonic_prost::ProstCodec::default();
2749            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetCpus");
2750            let mut req = request.into_request();
2751            req.extensions_mut()
2752                .insert(GrpcMethod::new("node_service.NodeService", "GetCpus"));
2753            self.inner.unary(req, path, codec).await
2754        }
2755        pub async fn get_net_info(
2756            &mut self,
2757            request: impl tonic::IntoRequest<super::GetNetInfoRequest>,
2758        ) -> std::result::Result<tonic::Response<super::GetNetInfoResponse>, tonic::Status> {
2759            self.inner
2760                .ready()
2761                .await
2762                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2763            let codec = tonic_prost::ProstCodec::default();
2764            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetNetInfo");
2765            let mut req = request.into_request();
2766            req.extensions_mut()
2767                .insert(GrpcMethod::new("node_service.NodeService", "GetNetInfo"));
2768            self.inner.unary(req, path, codec).await
2769        }
2770        pub async fn get_partitions(
2771            &mut self,
2772            request: impl tonic::IntoRequest<super::GetPartitionsRequest>,
2773        ) -> std::result::Result<tonic::Response<super::GetPartitionsResponse>, tonic::Status> {
2774            self.inner
2775                .ready()
2776                .await
2777                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2778            let codec = tonic_prost::ProstCodec::default();
2779            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetPartitions");
2780            let mut req = request.into_request();
2781            req.extensions_mut()
2782                .insert(GrpcMethod::new("node_service.NodeService", "GetPartitions"));
2783            self.inner.unary(req, path, codec).await
2784        }
2785        pub async fn get_os_info(
2786            &mut self,
2787            request: impl tonic::IntoRequest<super::GetOsInfoRequest>,
2788        ) -> std::result::Result<tonic::Response<super::GetOsInfoResponse>, tonic::Status> {
2789            self.inner
2790                .ready()
2791                .await
2792                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2793            let codec = tonic_prost::ProstCodec::default();
2794            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetOsInfo");
2795            let mut req = request.into_request();
2796            req.extensions_mut()
2797                .insert(GrpcMethod::new("node_service.NodeService", "GetOsInfo"));
2798            self.inner.unary(req, path, codec).await
2799        }
2800        pub async fn get_se_linux_info(
2801            &mut self,
2802            request: impl tonic::IntoRequest<super::GetSeLinuxInfoRequest>,
2803        ) -> std::result::Result<tonic::Response<super::GetSeLinuxInfoResponse>, tonic::Status> {
2804            self.inner
2805                .ready()
2806                .await
2807                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2808            let codec = tonic_prost::ProstCodec::default();
2809            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetSELinuxInfo");
2810            let mut req = request.into_request();
2811            req.extensions_mut()
2812                .insert(GrpcMethod::new("node_service.NodeService", "GetSELinuxInfo"));
2813            self.inner.unary(req, path, codec).await
2814        }
2815        pub async fn get_sys_config(
2816            &mut self,
2817            request: impl tonic::IntoRequest<super::GetSysConfigRequest>,
2818        ) -> std::result::Result<tonic::Response<super::GetSysConfigResponse>, tonic::Status> {
2819            self.inner
2820                .ready()
2821                .await
2822                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2823            let codec = tonic_prost::ProstCodec::default();
2824            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetSysConfig");
2825            let mut req = request.into_request();
2826            req.extensions_mut()
2827                .insert(GrpcMethod::new("node_service.NodeService", "GetSysConfig"));
2828            self.inner.unary(req, path, codec).await
2829        }
2830        pub async fn get_sys_errors(
2831            &mut self,
2832            request: impl tonic::IntoRequest<super::GetSysErrorsRequest>,
2833        ) -> std::result::Result<tonic::Response<super::GetSysErrorsResponse>, tonic::Status> {
2834            self.inner
2835                .ready()
2836                .await
2837                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2838            let codec = tonic_prost::ProstCodec::default();
2839            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetSysErrors");
2840            let mut req = request.into_request();
2841            req.extensions_mut()
2842                .insert(GrpcMethod::new("node_service.NodeService", "GetSysErrors"));
2843            self.inner.unary(req, path, codec).await
2844        }
2845        pub async fn get_mem_info(
2846            &mut self,
2847            request: impl tonic::IntoRequest<super::GetMemInfoRequest>,
2848        ) -> std::result::Result<tonic::Response<super::GetMemInfoResponse>, tonic::Status> {
2849            self.inner
2850                .ready()
2851                .await
2852                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2853            let codec = tonic_prost::ProstCodec::default();
2854            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetMemInfo");
2855            let mut req = request.into_request();
2856            req.extensions_mut()
2857                .insert(GrpcMethod::new("node_service.NodeService", "GetMemInfo"));
2858            self.inner.unary(req, path, codec).await
2859        }
2860        pub async fn get_metrics(
2861            &mut self,
2862            request: impl tonic::IntoRequest<super::GetMetricsRequest>,
2863        ) -> std::result::Result<tonic::Response<super::GetMetricsResponse>, tonic::Status> {
2864            self.inner
2865                .ready()
2866                .await
2867                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2868            let codec = tonic_prost::ProstCodec::default();
2869            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetMetrics");
2870            let mut req = request.into_request();
2871            req.extensions_mut()
2872                .insert(GrpcMethod::new("node_service.NodeService", "GetMetrics"));
2873            self.inner.unary(req, path, codec).await
2874        }
2875        pub async fn get_proc_info(
2876            &mut self,
2877            request: impl tonic::IntoRequest<super::GetProcInfoRequest>,
2878        ) -> std::result::Result<tonic::Response<super::GetProcInfoResponse>, tonic::Status> {
2879            self.inner
2880                .ready()
2881                .await
2882                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2883            let codec = tonic_prost::ProstCodec::default();
2884            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetProcInfo");
2885            let mut req = request.into_request();
2886            req.extensions_mut()
2887                .insert(GrpcMethod::new("node_service.NodeService", "GetProcInfo"));
2888            self.inner.unary(req, path, codec).await
2889        }
2890        pub async fn start_profiling(
2891            &mut self,
2892            request: impl tonic::IntoRequest<super::StartProfilingRequest>,
2893        ) -> std::result::Result<tonic::Response<super::StartProfilingResponse>, tonic::Status> {
2894            self.inner
2895                .ready()
2896                .await
2897                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2898            let codec = tonic_prost::ProstCodec::default();
2899            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/StartProfiling");
2900            let mut req = request.into_request();
2901            req.extensions_mut()
2902                .insert(GrpcMethod::new("node_service.NodeService", "StartProfiling"));
2903            self.inner.unary(req, path, codec).await
2904        }
2905        pub async fn download_profile_data(
2906            &mut self,
2907            request: impl tonic::IntoRequest<super::DownloadProfileDataRequest>,
2908        ) -> std::result::Result<tonic::Response<super::DownloadProfileDataResponse>, tonic::Status> {
2909            self.inner
2910                .ready()
2911                .await
2912                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2913            let codec = tonic_prost::ProstCodec::default();
2914            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DownloadProfileData");
2915            let mut req = request.into_request();
2916            req.extensions_mut()
2917                .insert(GrpcMethod::new("node_service.NodeService", "DownloadProfileData"));
2918            self.inner.unary(req, path, codec).await
2919        }
2920        pub async fn get_bucket_stats(
2921            &mut self,
2922            request: impl tonic::IntoRequest<super::GetBucketStatsDataRequest>,
2923        ) -> std::result::Result<tonic::Response<super::GetBucketStatsDataResponse>, tonic::Status> {
2924            self.inner
2925                .ready()
2926                .await
2927                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2928            let codec = tonic_prost::ProstCodec::default();
2929            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetBucketStats");
2930            let mut req = request.into_request();
2931            req.extensions_mut()
2932                .insert(GrpcMethod::new("node_service.NodeService", "GetBucketStats"));
2933            self.inner.unary(req, path, codec).await
2934        }
2935        pub async fn get_sr_metrics(
2936            &mut self,
2937            request: impl tonic::IntoRequest<super::GetSrMetricsDataRequest>,
2938        ) -> std::result::Result<tonic::Response<super::GetSrMetricsDataResponse>, tonic::Status> {
2939            self.inner
2940                .ready()
2941                .await
2942                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2943            let codec = tonic_prost::ProstCodec::default();
2944            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetSRMetrics");
2945            let mut req = request.into_request();
2946            req.extensions_mut()
2947                .insert(GrpcMethod::new("node_service.NodeService", "GetSRMetrics"));
2948            self.inner.unary(req, path, codec).await
2949        }
2950        pub async fn get_all_bucket_stats(
2951            &mut self,
2952            request: impl tonic::IntoRequest<super::GetAllBucketStatsRequest>,
2953        ) -> std::result::Result<tonic::Response<super::GetAllBucketStatsResponse>, tonic::Status> {
2954            self.inner
2955                .ready()
2956                .await
2957                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2958            let codec = tonic_prost::ProstCodec::default();
2959            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetAllBucketStats");
2960            let mut req = request.into_request();
2961            req.extensions_mut()
2962                .insert(GrpcMethod::new("node_service.NodeService", "GetAllBucketStats"));
2963            self.inner.unary(req, path, codec).await
2964        }
2965        pub async fn load_bucket_metadata(
2966            &mut self,
2967            request: impl tonic::IntoRequest<super::LoadBucketMetadataRequest>,
2968        ) -> std::result::Result<tonic::Response<super::LoadBucketMetadataResponse>, tonic::Status> {
2969            self.inner
2970                .ready()
2971                .await
2972                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2973            let codec = tonic_prost::ProstCodec::default();
2974            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/LoadBucketMetadata");
2975            let mut req = request.into_request();
2976            req.extensions_mut()
2977                .insert(GrpcMethod::new("node_service.NodeService", "LoadBucketMetadata"));
2978            self.inner.unary(req, path, codec).await
2979        }
2980        pub async fn delete_bucket_metadata(
2981            &mut self,
2982            request: impl tonic::IntoRequest<super::DeleteBucketMetadataRequest>,
2983        ) -> std::result::Result<tonic::Response<super::DeleteBucketMetadataResponse>, tonic::Status> {
2984            self.inner
2985                .ready()
2986                .await
2987                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
2988            let codec = tonic_prost::ProstCodec::default();
2989            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DeleteBucketMetadata");
2990            let mut req = request.into_request();
2991            req.extensions_mut()
2992                .insert(GrpcMethod::new("node_service.NodeService", "DeleteBucketMetadata"));
2993            self.inner.unary(req, path, codec).await
2994        }
2995        pub async fn delete_policy(
2996            &mut self,
2997            request: impl tonic::IntoRequest<super::DeletePolicyRequest>,
2998        ) -> std::result::Result<tonic::Response<super::DeletePolicyResponse>, tonic::Status> {
2999            self.inner
3000                .ready()
3001                .await
3002                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3003            let codec = tonic_prost::ProstCodec::default();
3004            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DeletePolicy");
3005            let mut req = request.into_request();
3006            req.extensions_mut()
3007                .insert(GrpcMethod::new("node_service.NodeService", "DeletePolicy"));
3008            self.inner.unary(req, path, codec).await
3009        }
3010        pub async fn load_policy(
3011            &mut self,
3012            request: impl tonic::IntoRequest<super::LoadPolicyRequest>,
3013        ) -> std::result::Result<tonic::Response<super::LoadPolicyResponse>, tonic::Status> {
3014            self.inner
3015                .ready()
3016                .await
3017                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3018            let codec = tonic_prost::ProstCodec::default();
3019            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/LoadPolicy");
3020            let mut req = request.into_request();
3021            req.extensions_mut()
3022                .insert(GrpcMethod::new("node_service.NodeService", "LoadPolicy"));
3023            self.inner.unary(req, path, codec).await
3024        }
3025        pub async fn load_policy_mapping(
3026            &mut self,
3027            request: impl tonic::IntoRequest<super::LoadPolicyMappingRequest>,
3028        ) -> std::result::Result<tonic::Response<super::LoadPolicyMappingResponse>, tonic::Status> {
3029            self.inner
3030                .ready()
3031                .await
3032                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3033            let codec = tonic_prost::ProstCodec::default();
3034            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/LoadPolicyMapping");
3035            let mut req = request.into_request();
3036            req.extensions_mut()
3037                .insert(GrpcMethod::new("node_service.NodeService", "LoadPolicyMapping"));
3038            self.inner.unary(req, path, codec).await
3039        }
3040        pub async fn delete_user(
3041            &mut self,
3042            request: impl tonic::IntoRequest<super::DeleteUserRequest>,
3043        ) -> std::result::Result<tonic::Response<super::DeleteUserResponse>, tonic::Status> {
3044            self.inner
3045                .ready()
3046                .await
3047                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3048            let codec = tonic_prost::ProstCodec::default();
3049            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DeleteUser");
3050            let mut req = request.into_request();
3051            req.extensions_mut()
3052                .insert(GrpcMethod::new("node_service.NodeService", "DeleteUser"));
3053            self.inner.unary(req, path, codec).await
3054        }
3055        pub async fn delete_service_account(
3056            &mut self,
3057            request: impl tonic::IntoRequest<super::DeleteServiceAccountRequest>,
3058        ) -> std::result::Result<tonic::Response<super::DeleteServiceAccountResponse>, tonic::Status> {
3059            self.inner
3060                .ready()
3061                .await
3062                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3063            let codec = tonic_prost::ProstCodec::default();
3064            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/DeleteServiceAccount");
3065            let mut req = request.into_request();
3066            req.extensions_mut()
3067                .insert(GrpcMethod::new("node_service.NodeService", "DeleteServiceAccount"));
3068            self.inner.unary(req, path, codec).await
3069        }
3070        pub async fn load_user(
3071            &mut self,
3072            request: impl tonic::IntoRequest<super::LoadUserRequest>,
3073        ) -> std::result::Result<tonic::Response<super::LoadUserResponse>, tonic::Status> {
3074            self.inner
3075                .ready()
3076                .await
3077                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3078            let codec = tonic_prost::ProstCodec::default();
3079            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/LoadUser");
3080            let mut req = request.into_request();
3081            req.extensions_mut()
3082                .insert(GrpcMethod::new("node_service.NodeService", "LoadUser"));
3083            self.inner.unary(req, path, codec).await
3084        }
3085        pub async fn load_service_account(
3086            &mut self,
3087            request: impl tonic::IntoRequest<super::LoadServiceAccountRequest>,
3088        ) -> std::result::Result<tonic::Response<super::LoadServiceAccountResponse>, tonic::Status> {
3089            self.inner
3090                .ready()
3091                .await
3092                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3093            let codec = tonic_prost::ProstCodec::default();
3094            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/LoadServiceAccount");
3095            let mut req = request.into_request();
3096            req.extensions_mut()
3097                .insert(GrpcMethod::new("node_service.NodeService", "LoadServiceAccount"));
3098            self.inner.unary(req, path, codec).await
3099        }
3100        pub async fn load_group(
3101            &mut self,
3102            request: impl tonic::IntoRequest<super::LoadGroupRequest>,
3103        ) -> std::result::Result<tonic::Response<super::LoadGroupResponse>, tonic::Status> {
3104            self.inner
3105                .ready()
3106                .await
3107                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3108            let codec = tonic_prost::ProstCodec::default();
3109            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/LoadGroup");
3110            let mut req = request.into_request();
3111            req.extensions_mut()
3112                .insert(GrpcMethod::new("node_service.NodeService", "LoadGroup"));
3113            self.inner.unary(req, path, codec).await
3114        }
3115        pub async fn reload_site_replication_config(
3116            &mut self,
3117            request: impl tonic::IntoRequest<super::ReloadSiteReplicationConfigRequest>,
3118        ) -> std::result::Result<tonic::Response<super::ReloadSiteReplicationConfigResponse>, tonic::Status> {
3119            self.inner
3120                .ready()
3121                .await
3122                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3123            let codec = tonic_prost::ProstCodec::default();
3124            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ReloadSiteReplicationConfig");
3125            let mut req = request.into_request();
3126            req.extensions_mut()
3127                .insert(GrpcMethod::new("node_service.NodeService", "ReloadSiteReplicationConfig"));
3128            self.inner.unary(req, path, codec).await
3129        }
3130        /// rpc VerifyBinary() returns () {};
3131        /// rpc CommitBinary() returns () {};
3132        pub async fn signal_service(
3133            &mut self,
3134            request: impl tonic::IntoRequest<super::SignalServiceRequest>,
3135        ) -> std::result::Result<tonic::Response<super::SignalServiceResponse>, tonic::Status> {
3136            self.inner
3137                .ready()
3138                .await
3139                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3140            let codec = tonic_prost::ProstCodec::default();
3141            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/SignalService");
3142            let mut req = request.into_request();
3143            req.extensions_mut()
3144                .insert(GrpcMethod::new("node_service.NodeService", "SignalService"));
3145            self.inner.unary(req, path, codec).await
3146        }
3147        pub async fn scanner_activity(
3148            &mut self,
3149            request: impl tonic::IntoRequest<super::ScannerActivityRequest>,
3150        ) -> std::result::Result<tonic::Response<super::ScannerActivityResponse>, tonic::Status> {
3151            self.inner
3152                .ready()
3153                .await
3154                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3155            let codec = tonic_prost::ProstCodec::default();
3156            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ScannerActivity");
3157            let mut req = request.into_request();
3158            req.extensions_mut()
3159                .insert(GrpcMethod::new("node_service.NodeService", "ScannerActivity"));
3160            self.inner.unary(req, path, codec).await
3161        }
3162        pub async fn scanner_dirty_usage_snapshot(
3163            &mut self,
3164            request: impl tonic::IntoRequest<super::ScannerDirtyUsageSnapshotRequest>,
3165        ) -> std::result::Result<tonic::Response<super::ScannerDirtyUsageSnapshotResponse>, tonic::Status> {
3166            self.inner
3167                .ready()
3168                .await
3169                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3170            let codec = tonic_prost::ProstCodec::default();
3171            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ScannerDirtyUsageSnapshot");
3172            let mut req = request.into_request();
3173            req.extensions_mut()
3174                .insert(GrpcMethod::new("node_service.NodeService", "ScannerDirtyUsageSnapshot"));
3175            self.inner.unary(req, path, codec).await
3176        }
3177        pub async fn acquire_scanner_publication_lease(
3178            &mut self,
3179            request: impl tonic::IntoRequest<super::ScannerPublicationLeaseRequest>,
3180        ) -> std::result::Result<tonic::Response<super::ScannerPublicationLeaseResponse>, tonic::Status> {
3181            self.inner
3182                .ready()
3183                .await
3184                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3185            let codec = tonic_prost::ProstCodec::default();
3186            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/AcquireScannerPublicationLease");
3187            let mut req = request.into_request();
3188            req.extensions_mut()
3189                .insert(GrpcMethod::new("node_service.NodeService", "AcquireScannerPublicationLease"));
3190            self.inner.unary(req, path, codec).await
3191        }
3192        pub async fn release_scanner_publication_lease(
3193            &mut self,
3194            request: impl tonic::IntoRequest<super::ScannerPublicationLeaseReleaseRequest>,
3195        ) -> std::result::Result<tonic::Response<super::ScannerPublicationLeaseReleaseResponse>, tonic::Status> {
3196            self.inner
3197                .ready()
3198                .await
3199                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3200            let codec = tonic_prost::ProstCodec::default();
3201            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ReleaseScannerPublicationLease");
3202            let mut req = request.into_request();
3203            req.extensions_mut()
3204                .insert(GrpcMethod::new("node_service.NodeService", "ReleaseScannerPublicationLease"));
3205            self.inner.unary(req, path, codec).await
3206        }
3207        pub async fn background_heal_status(
3208            &mut self,
3209            request: impl tonic::IntoRequest<super::BackgroundHealStatusRequest>,
3210        ) -> std::result::Result<tonic::Response<super::BackgroundHealStatusResponse>, tonic::Status> {
3211            self.inner
3212                .ready()
3213                .await
3214                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3215            let codec = tonic_prost::ProstCodec::default();
3216            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/BackgroundHealStatus");
3217            let mut req = request.into_request();
3218            req.extensions_mut()
3219                .insert(GrpcMethod::new("node_service.NodeService", "BackgroundHealStatus"));
3220            self.inner.unary(req, path, codec).await
3221        }
3222        pub async fn replacement_recovery_status(
3223            &mut self,
3224            request: impl tonic::IntoRequest<super::ReplacementRecoveryStatusRequest>,
3225        ) -> std::result::Result<tonic::Response<super::ReplacementRecoveryStatusResponse>, tonic::Status> {
3226            self.inner
3227                .ready()
3228                .await
3229                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3230            let codec = tonic_prost::ProstCodec::default();
3231            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ReplacementRecoveryStatus");
3232            let mut req = request.into_request();
3233            req.extensions_mut()
3234                .insert(GrpcMethod::new("node_service.NodeService", "ReplacementRecoveryStatus"));
3235            self.inner.unary(req, path, codec).await
3236        }
3237        pub async fn get_metacache_listing(
3238            &mut self,
3239            request: impl tonic::IntoRequest<super::GetMetacacheListingRequest>,
3240        ) -> std::result::Result<tonic::Response<super::GetMetacacheListingResponse>, tonic::Status> {
3241            self.inner
3242                .ready()
3243                .await
3244                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3245            let codec = tonic_prost::ProstCodec::default();
3246            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetMetacacheListing");
3247            let mut req = request.into_request();
3248            req.extensions_mut()
3249                .insert(GrpcMethod::new("node_service.NodeService", "GetMetacacheListing"));
3250            self.inner.unary(req, path, codec).await
3251        }
3252        pub async fn update_metacache_listing(
3253            &mut self,
3254            request: impl tonic::IntoRequest<super::UpdateMetacacheListingRequest>,
3255        ) -> std::result::Result<tonic::Response<super::UpdateMetacacheListingResponse>, tonic::Status> {
3256            self.inner
3257                .ready()
3258                .await
3259                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3260            let codec = tonic_prost::ProstCodec::default();
3261            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/UpdateMetacacheListing");
3262            let mut req = request.into_request();
3263            req.extensions_mut()
3264                .insert(GrpcMethod::new("node_service.NodeService", "UpdateMetacacheListing"));
3265            self.inner.unary(req, path, codec).await
3266        }
3267        pub async fn reload_pool_meta(
3268            &mut self,
3269            request: impl tonic::IntoRequest<super::ReloadPoolMetaRequest>,
3270        ) -> std::result::Result<tonic::Response<super::ReloadPoolMetaResponse>, tonic::Status> {
3271            self.inner
3272                .ready()
3273                .await
3274                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3275            let codec = tonic_prost::ProstCodec::default();
3276            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ReloadPoolMeta");
3277            let mut req = request.into_request();
3278            req.extensions_mut()
3279                .insert(GrpcMethod::new("node_service.NodeService", "ReloadPoolMeta"));
3280            self.inner.unary(req, path, codec).await
3281        }
3282        pub async fn stop_rebalance(
3283            &mut self,
3284            request: impl tonic::IntoRequest<super::StopRebalanceRequest>,
3285        ) -> std::result::Result<tonic::Response<super::StopRebalanceResponse>, tonic::Status> {
3286            self.inner
3287                .ready()
3288                .await
3289                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3290            let codec = tonic_prost::ProstCodec::default();
3291            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/StopRebalance");
3292            let mut req = request.into_request();
3293            req.extensions_mut()
3294                .insert(GrpcMethod::new("node_service.NodeService", "StopRebalance"));
3295            self.inner.unary(req, path, codec).await
3296        }
3297        pub async fn load_rebalance_meta(
3298            &mut self,
3299            request: impl tonic::IntoRequest<super::LoadRebalanceMetaRequest>,
3300        ) -> std::result::Result<tonic::Response<super::LoadRebalanceMetaResponse>, tonic::Status> {
3301            self.inner
3302                .ready()
3303                .await
3304                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3305            let codec = tonic_prost::ProstCodec::default();
3306            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/LoadRebalanceMeta");
3307            let mut req = request.into_request();
3308            req.extensions_mut()
3309                .insert(GrpcMethod::new("node_service.NodeService", "LoadRebalanceMeta"));
3310            self.inner.unary(req, path, codec).await
3311        }
3312        pub async fn start_decommission(
3313            &mut self,
3314            request: impl tonic::IntoRequest<super::StartDecommissionRequest>,
3315        ) -> std::result::Result<tonic::Response<super::StartDecommissionResponse>, tonic::Status> {
3316            self.inner
3317                .ready()
3318                .await
3319                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3320            let codec = tonic_prost::ProstCodec::default();
3321            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/StartDecommission");
3322            let mut req = request.into_request();
3323            req.extensions_mut()
3324                .insert(GrpcMethod::new("node_service.NodeService", "StartDecommission"));
3325            self.inner.unary(req, path, codec).await
3326        }
3327        pub async fn cancel_decommission(
3328            &mut self,
3329            request: impl tonic::IntoRequest<super::CancelDecommissionRequest>,
3330        ) -> std::result::Result<tonic::Response<super::CancelDecommissionResponse>, tonic::Status> {
3331            self.inner
3332                .ready()
3333                .await
3334                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3335            let codec = tonic_prost::ProstCodec::default();
3336            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/CancelDecommission");
3337            let mut req = request.into_request();
3338            req.extensions_mut()
3339                .insert(GrpcMethod::new("node_service.NodeService", "CancelDecommission"));
3340            self.inner.unary(req, path, codec).await
3341        }
3342        pub async fn clear_decommission(
3343            &mut self,
3344            request: impl tonic::IntoRequest<super::ClearDecommissionRequest>,
3345        ) -> std::result::Result<tonic::Response<super::ClearDecommissionResponse>, tonic::Status> {
3346            self.inner
3347                .ready()
3348                .await
3349                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3350            let codec = tonic_prost::ProstCodec::default();
3351            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/ClearDecommission");
3352            let mut req = request.into_request();
3353            req.extensions_mut()
3354                .insert(GrpcMethod::new("node_service.NodeService", "ClearDecommission"));
3355            self.inner.unary(req, path, codec).await
3356        }
3357        pub async fn load_transition_tier_config(
3358            &mut self,
3359            request: impl tonic::IntoRequest<super::LoadTransitionTierConfigRequest>,
3360        ) -> std::result::Result<tonic::Response<super::LoadTransitionTierConfigResponse>, tonic::Status> {
3361            self.inner
3362                .ready()
3363                .await
3364                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3365            let codec = tonic_prost::ProstCodec::default();
3366            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/LoadTransitionTierConfig");
3367            let mut req = request.into_request();
3368            req.extensions_mut()
3369                .insert(GrpcMethod::new("node_service.NodeService", "LoadTransitionTierConfig"));
3370            self.inner.unary(req, path, codec).await
3371        }
3372        pub async fn tier_daily_stats(
3373            &mut self,
3374            request: impl tonic::IntoRequest<super::TierDailyStatsRequest>,
3375        ) -> std::result::Result<tonic::Response<super::TierDailyStatsResponse>, tonic::Status> {
3376            self.inner
3377                .ready()
3378                .await
3379                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3380            let codec = tonic_prost::ProstCodec::default();
3381            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/TierDailyStats");
3382            let mut req = request.into_request();
3383            req.extensions_mut()
3384                .insert(GrpcMethod::new("node_service.NodeService", "TierDailyStats"));
3385            self.inner.unary(req, path, codec).await
3386        }
3387        pub async fn get_live_events(
3388            &mut self,
3389            request: impl tonic::IntoRequest<super::GetLiveEventsRequest>,
3390        ) -> std::result::Result<tonic::Response<super::GetLiveEventsResponse>, tonic::Status> {
3391            self.inner
3392                .ready()
3393                .await
3394                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
3395            let codec = tonic_prost::ProstCodec::default();
3396            let path = http::uri::PathAndQuery::from_static("/node_service.NodeService/GetLiveEvents");
3397            let mut req = request.into_request();
3398            req.extensions_mut()
3399                .insert(GrpcMethod::new("node_service.NodeService", "GetLiveEvents"));
3400            self.inner.unary(req, path, codec).await
3401        }
3402    }
3403}
3404/// Generated server implementations.
3405pub mod node_service_server {
3406    #![allow(unused_variables, dead_code, missing_docs, clippy::wildcard_imports, clippy::let_unit_value)]
3407    use tonic::codegen::*;
3408    /// Generated trait containing gRPC methods that should be implemented for use with NodeServiceServer.
3409    #[async_trait]
3410    pub trait NodeService: std::marker::Send + std::marker::Sync + 'static {
3411        /// -------------------------------meta service--------------------------
3412        async fn ping(
3413            &self,
3414            request: tonic::Request<super::PingRequest>,
3415        ) -> std::result::Result<tonic::Response<super::PingResponse>, tonic::Status>;
3416        async fn heal_bucket(
3417            &self,
3418            request: tonic::Request<super::HealBucketRequest>,
3419        ) -> std::result::Result<tonic::Response<super::HealBucketResponse>, tonic::Status>;
3420        async fn heal_bucket_at_incarnation(
3421            &self,
3422            request: tonic::Request<super::HealBucketRequest>,
3423        ) -> std::result::Result<tonic::Response<super::HealBucketResponse>, tonic::Status>;
3424        async fn list_bucket(
3425            &self,
3426            request: tonic::Request<super::ListBucketRequest>,
3427        ) -> std::result::Result<tonic::Response<super::ListBucketResponse>, tonic::Status>;
3428        async fn make_bucket(
3429            &self,
3430            request: tonic::Request<super::MakeBucketRequest>,
3431        ) -> std::result::Result<tonic::Response<super::MakeBucketResponse>, tonic::Status>;
3432        async fn get_bucket_info(
3433            &self,
3434            request: tonic::Request<super::GetBucketInfoRequest>,
3435        ) -> std::result::Result<tonic::Response<super::GetBucketInfoResponse>, tonic::Status>;
3436        async fn delete_bucket(
3437            &self,
3438            request: tonic::Request<super::DeleteBucketRequest>,
3439        ) -> std::result::Result<tonic::Response<super::DeleteBucketResponse>, tonic::Status>;
3440        async fn read_all(
3441            &self,
3442            request: tonic::Request<super::ReadAllRequest>,
3443        ) -> std::result::Result<tonic::Response<super::ReadAllResponse>, tonic::Status>;
3444        async fn write_all(
3445            &self,
3446            request: tonic::Request<super::WriteAllRequest>,
3447        ) -> std::result::Result<tonic::Response<super::WriteAllResponse>, tonic::Status>;
3448        async fn compare_and_update_file(
3449            &self,
3450            request: tonic::Request<super::CompareAndUpdateFileRequest>,
3451        ) -> std::result::Result<tonic::Response<super::CompareAndUpdateFileResponse>, tonic::Status>;
3452        async fn delete(
3453            &self,
3454            request: tonic::Request<super::DeleteRequest>,
3455        ) -> std::result::Result<tonic::Response<super::DeleteResponse>, tonic::Status>;
3456        async fn delete_at_incarnation(
3457            &self,
3458            request: tonic::Request<super::DeleteRequest>,
3459        ) -> std::result::Result<tonic::Response<super::DeleteResponse>, tonic::Status>;
3460        async fn acquire_snapshot_lease(
3461            &self,
3462            request: tonic::Request<super::SnapshotLeaseRequest>,
3463        ) -> std::result::Result<tonic::Response<super::SnapshotLeaseResponse>, tonic::Status>;
3464        async fn renew_snapshot_lease(
3465            &self,
3466            request: tonic::Request<super::SnapshotLeaseRenewRequest>,
3467        ) -> std::result::Result<tonic::Response<super::SnapshotLeaseResponse>, tonic::Status>;
3468        async fn release_snapshot_lease(
3469            &self,
3470            request: tonic::Request<super::SnapshotLeaseReleaseRequest>,
3471        ) -> std::result::Result<tonic::Response<super::SnapshotLeaseMutationResponse>, tonic::Status>;
3472        async fn verify_file(
3473            &self,
3474            request: tonic::Request<super::VerifyFileRequest>,
3475        ) -> std::result::Result<tonic::Response<super::VerifyFileResponse>, tonic::Status>;
3476        async fn read_parts(
3477            &self,
3478            request: tonic::Request<super::ReadPartsRequest>,
3479        ) -> std::result::Result<tonic::Response<super::ReadPartsResponse>, tonic::Status>;
3480        async fn check_parts(
3481            &self,
3482            request: tonic::Request<super::CheckPartsRequest>,
3483        ) -> std::result::Result<tonic::Response<super::CheckPartsResponse>, tonic::Status>;
3484        async fn prepare_part_transaction(
3485            &self,
3486            request: tonic::Request<super::PreparePartTransactionRequest>,
3487        ) -> std::result::Result<tonic::Response<super::PreparePartTransactionResponse>, tonic::Status>;
3488        async fn rename_part(
3489            &self,
3490            request: tonic::Request<super::RenamePartRequest>,
3491        ) -> std::result::Result<tonic::Response<super::RenamePartResponse>, tonic::Status>;
3492        async fn settle_part_transaction(
3493            &self,
3494            request: tonic::Request<super::SettlePartTransactionRequest>,
3495        ) -> std::result::Result<tonic::Response<super::SettlePartTransactionResponse>, tonic::Status>;
3496        async fn rename_file(
3497            &self,
3498            request: tonic::Request<super::RenameFileRequest>,
3499        ) -> std::result::Result<tonic::Response<super::RenameFileResponse>, tonic::Status>;
3500        async fn write(
3501            &self,
3502            request: tonic::Request<super::WriteRequest>,
3503        ) -> std::result::Result<tonic::Response<super::WriteResponse>, tonic::Status>;
3504        /// Server streaming response type for the WriteStream method.
3505        type WriteStreamStream: tonic::codegen::tokio_stream::Stream<Item = std::result::Result<super::WriteResponse, tonic::Status>>
3506            + std::marker::Send
3507            + 'static;
3508        async fn write_stream(
3509            &self,
3510            request: tonic::Request<tonic::Streaming<super::WriteRequest>>,
3511        ) -> std::result::Result<tonic::Response<Self::WriteStreamStream>, tonic::Status>;
3512        /// Server streaming response type for the ReadAt method.
3513        type ReadAtStream: tonic::codegen::tokio_stream::Stream<Item = std::result::Result<super::ReadAtResponse, tonic::Status>>
3514            + std::marker::Send
3515            + 'static;
3516        /// rpc Append(AppendRequest) returns (AppendResponse) {};
3517        async fn read_at(
3518            &self,
3519            request: tonic::Request<tonic::Streaming<super::ReadAtRequest>>,
3520        ) -> std::result::Result<tonic::Response<Self::ReadAtStream>, tonic::Status>;
3521        async fn list_dir(
3522            &self,
3523            request: tonic::Request<super::ListDirRequest>,
3524        ) -> std::result::Result<tonic::Response<super::ListDirResponse>, tonic::Status>;
3525        /// Server streaming response type for the WalkDir method.
3526        type WalkDirStream: tonic::codegen::tokio_stream::Stream<Item = std::result::Result<super::WalkDirResponse, tonic::Status>>
3527            + std::marker::Send
3528            + 'static;
3529        async fn walk_dir(
3530            &self,
3531            request: tonic::Request<super::WalkDirRequest>,
3532        ) -> std::result::Result<tonic::Response<Self::WalkDirStream>, tonic::Status>;
3533        async fn rename_data(
3534            &self,
3535            request: tonic::Request<super::RenameDataRequest>,
3536        ) -> std::result::Result<tonic::Response<super::RenameDataResponse>, tonic::Status>;
3537        async fn rename_data_at_incarnation(
3538            &self,
3539            request: tonic::Request<super::RenameDataRequest>,
3540        ) -> std::result::Result<tonic::Response<super::RenameDataResponse>, tonic::Status>;
3541        async fn make_volumes(
3542            &self,
3543            request: tonic::Request<super::MakeVolumesRequest>,
3544        ) -> std::result::Result<tonic::Response<super::MakeVolumesResponse>, tonic::Status>;
3545        async fn make_volume(
3546            &self,
3547            request: tonic::Request<super::MakeVolumeRequest>,
3548        ) -> std::result::Result<tonic::Response<super::MakeVolumeResponse>, tonic::Status>;
3549        async fn list_volumes(
3550            &self,
3551            request: tonic::Request<super::ListVolumesRequest>,
3552        ) -> std::result::Result<tonic::Response<super::ListVolumesResponse>, tonic::Status>;
3553        async fn stat_volume(
3554            &self,
3555            request: tonic::Request<super::StatVolumeRequest>,
3556        ) -> std::result::Result<tonic::Response<super::StatVolumeResponse>, tonic::Status>;
3557        async fn delete_paths(
3558            &self,
3559            request: tonic::Request<super::DeletePathsRequest>,
3560        ) -> std::result::Result<tonic::Response<super::DeletePathsResponse>, tonic::Status>;
3561        async fn update_metadata(
3562            &self,
3563            request: tonic::Request<super::UpdateMetadataRequest>,
3564        ) -> std::result::Result<tonic::Response<super::UpdateMetadataResponse>, tonic::Status>;
3565        async fn read_metadata(
3566            &self,
3567            request: tonic::Request<super::ReadMetadataRequest>,
3568        ) -> std::result::Result<tonic::Response<super::ReadMetadataResponse>, tonic::Status>;
3569        async fn write_metadata(
3570            &self,
3571            request: tonic::Request<super::WriteMetadataRequest>,
3572        ) -> std::result::Result<tonic::Response<super::WriteMetadataResponse>, tonic::Status>;
3573        async fn write_metadata_at_incarnation(
3574            &self,
3575            request: tonic::Request<super::WriteMetadataRequest>,
3576        ) -> std::result::Result<tonic::Response<super::WriteMetadataResponse>, tonic::Status>;
3577        async fn read_version(
3578            &self,
3579            request: tonic::Request<super::ReadVersionRequest>,
3580        ) -> std::result::Result<tonic::Response<super::ReadVersionResponse>, tonic::Status>;
3581        async fn batch_read_version(
3582            &self,
3583            request: tonic::Request<super::BatchReadVersionRequest>,
3584        ) -> std::result::Result<tonic::Response<super::BatchReadVersionResponse>, tonic::Status>;
3585        async fn read_xl(
3586            &self,
3587            request: tonic::Request<super::ReadXlRequest>,
3588        ) -> std::result::Result<tonic::Response<super::ReadXlResponse>, tonic::Status>;
3589        async fn delete_version(
3590            &self,
3591            request: tonic::Request<super::DeleteVersionRequest>,
3592        ) -> std::result::Result<tonic::Response<super::DeleteVersionResponse>, tonic::Status>;
3593        async fn delete_version_at_incarnation(
3594            &self,
3595            request: tonic::Request<super::DeleteVersionRequest>,
3596        ) -> std::result::Result<tonic::Response<super::DeleteVersionResponse>, tonic::Status>;
3597        async fn delete_retired_marker(
3598            &self,
3599            request: tonic::Request<super::DeleteVersionRequest>,
3600        ) -> std::result::Result<tonic::Response<super::DeleteVersionResponse>, tonic::Status>;
3601        async fn delete_versions(
3602            &self,
3603            request: tonic::Request<super::DeleteVersionsRequest>,
3604        ) -> std::result::Result<tonic::Response<super::DeleteVersionsResponse>, tonic::Status>;
3605        async fn read_multiple(
3606            &self,
3607            request: tonic::Request<super::ReadMultipleRequest>,
3608        ) -> std::result::Result<tonic::Response<super::ReadMultipleResponse>, tonic::Status>;
3609        async fn delete_volume(
3610            &self,
3611            request: tonic::Request<super::DeleteVolumeRequest>,
3612        ) -> std::result::Result<tonic::Response<super::DeleteVolumeResponse>, tonic::Status>;
3613        async fn disk_info(
3614            &self,
3615            request: tonic::Request<super::DiskInfoRequest>,
3616        ) -> std::result::Result<tonic::Response<super::DiskInfoResponse>, tonic::Status>;
3617        async fn lock(
3618            &self,
3619            request: tonic::Request<super::GenerallyLockRequest>,
3620        ) -> std::result::Result<tonic::Response<super::GenerallyLockResponse>, tonic::Status>;
3621        async fn un_lock(
3622            &self,
3623            request: tonic::Request<super::GenerallyLockRequest>,
3624        ) -> std::result::Result<tonic::Response<super::GenerallyLockResponse>, tonic::Status>;
3625        async fn force_un_lock(
3626            &self,
3627            request: tonic::Request<super::GenerallyLockRequest>,
3628        ) -> std::result::Result<tonic::Response<super::GenerallyLockResponse>, tonic::Status>;
3629        async fn refresh(
3630            &self,
3631            request: tonic::Request<super::GenerallyLockRequest>,
3632        ) -> std::result::Result<tonic::Response<super::GenerallyLockResponse>, tonic::Status>;
3633        async fn lock_batch(
3634            &self,
3635            request: tonic::Request<super::BatchGenerallyLockRequest>,
3636        ) -> std::result::Result<tonic::Response<super::BatchGenerallyLockResponse>, tonic::Status>;
3637        async fn un_lock_batch(
3638            &self,
3639            request: tonic::Request<super::BatchGenerallyLockRequest>,
3640        ) -> std::result::Result<tonic::Response<super::BatchGenerallyLockResponse>, tonic::Status>;
3641        async fn local_storage_info(
3642            &self,
3643            request: tonic::Request<super::LocalStorageInfoRequest>,
3644        ) -> std::result::Result<tonic::Response<super::LocalStorageInfoResponse>, tonic::Status>;
3645        async fn server_info(
3646            &self,
3647            request: tonic::Request<super::ServerInfoRequest>,
3648        ) -> std::result::Result<tonic::Response<super::ServerInfoResponse>, tonic::Status>;
3649        async fn get_cpus(
3650            &self,
3651            request: tonic::Request<super::GetCpusRequest>,
3652        ) -> std::result::Result<tonic::Response<super::GetCpusResponse>, tonic::Status>;
3653        async fn get_net_info(
3654            &self,
3655            request: tonic::Request<super::GetNetInfoRequest>,
3656        ) -> std::result::Result<tonic::Response<super::GetNetInfoResponse>, tonic::Status>;
3657        async fn get_partitions(
3658            &self,
3659            request: tonic::Request<super::GetPartitionsRequest>,
3660        ) -> std::result::Result<tonic::Response<super::GetPartitionsResponse>, tonic::Status>;
3661        async fn get_os_info(
3662            &self,
3663            request: tonic::Request<super::GetOsInfoRequest>,
3664        ) -> std::result::Result<tonic::Response<super::GetOsInfoResponse>, tonic::Status>;
3665        async fn get_se_linux_info(
3666            &self,
3667            request: tonic::Request<super::GetSeLinuxInfoRequest>,
3668        ) -> std::result::Result<tonic::Response<super::GetSeLinuxInfoResponse>, tonic::Status>;
3669        async fn get_sys_config(
3670            &self,
3671            request: tonic::Request<super::GetSysConfigRequest>,
3672        ) -> std::result::Result<tonic::Response<super::GetSysConfigResponse>, tonic::Status>;
3673        async fn get_sys_errors(
3674            &self,
3675            request: tonic::Request<super::GetSysErrorsRequest>,
3676        ) -> std::result::Result<tonic::Response<super::GetSysErrorsResponse>, tonic::Status>;
3677        async fn get_mem_info(
3678            &self,
3679            request: tonic::Request<super::GetMemInfoRequest>,
3680        ) -> std::result::Result<tonic::Response<super::GetMemInfoResponse>, tonic::Status>;
3681        async fn get_metrics(
3682            &self,
3683            request: tonic::Request<super::GetMetricsRequest>,
3684        ) -> std::result::Result<tonic::Response<super::GetMetricsResponse>, tonic::Status>;
3685        async fn get_proc_info(
3686            &self,
3687            request: tonic::Request<super::GetProcInfoRequest>,
3688        ) -> std::result::Result<tonic::Response<super::GetProcInfoResponse>, tonic::Status>;
3689        async fn start_profiling(
3690            &self,
3691            request: tonic::Request<super::StartProfilingRequest>,
3692        ) -> std::result::Result<tonic::Response<super::StartProfilingResponse>, tonic::Status>;
3693        async fn download_profile_data(
3694            &self,
3695            request: tonic::Request<super::DownloadProfileDataRequest>,
3696        ) -> std::result::Result<tonic::Response<super::DownloadProfileDataResponse>, tonic::Status>;
3697        async fn get_bucket_stats(
3698            &self,
3699            request: tonic::Request<super::GetBucketStatsDataRequest>,
3700        ) -> std::result::Result<tonic::Response<super::GetBucketStatsDataResponse>, tonic::Status>;
3701        async fn get_sr_metrics(
3702            &self,
3703            request: tonic::Request<super::GetSrMetricsDataRequest>,
3704        ) -> std::result::Result<tonic::Response<super::GetSrMetricsDataResponse>, tonic::Status>;
3705        async fn get_all_bucket_stats(
3706            &self,
3707            request: tonic::Request<super::GetAllBucketStatsRequest>,
3708        ) -> std::result::Result<tonic::Response<super::GetAllBucketStatsResponse>, tonic::Status>;
3709        async fn load_bucket_metadata(
3710            &self,
3711            request: tonic::Request<super::LoadBucketMetadataRequest>,
3712        ) -> std::result::Result<tonic::Response<super::LoadBucketMetadataResponse>, tonic::Status>;
3713        async fn delete_bucket_metadata(
3714            &self,
3715            request: tonic::Request<super::DeleteBucketMetadataRequest>,
3716        ) -> std::result::Result<tonic::Response<super::DeleteBucketMetadataResponse>, tonic::Status>;
3717        async fn delete_policy(
3718            &self,
3719            request: tonic::Request<super::DeletePolicyRequest>,
3720        ) -> std::result::Result<tonic::Response<super::DeletePolicyResponse>, tonic::Status>;
3721        async fn load_policy(
3722            &self,
3723            request: tonic::Request<super::LoadPolicyRequest>,
3724        ) -> std::result::Result<tonic::Response<super::LoadPolicyResponse>, tonic::Status>;
3725        async fn load_policy_mapping(
3726            &self,
3727            request: tonic::Request<super::LoadPolicyMappingRequest>,
3728        ) -> std::result::Result<tonic::Response<super::LoadPolicyMappingResponse>, tonic::Status>;
3729        async fn delete_user(
3730            &self,
3731            request: tonic::Request<super::DeleteUserRequest>,
3732        ) -> std::result::Result<tonic::Response<super::DeleteUserResponse>, tonic::Status>;
3733        async fn delete_service_account(
3734            &self,
3735            request: tonic::Request<super::DeleteServiceAccountRequest>,
3736        ) -> std::result::Result<tonic::Response<super::DeleteServiceAccountResponse>, tonic::Status>;
3737        async fn load_user(
3738            &self,
3739            request: tonic::Request<super::LoadUserRequest>,
3740        ) -> std::result::Result<tonic::Response<super::LoadUserResponse>, tonic::Status>;
3741        async fn load_service_account(
3742            &self,
3743            request: tonic::Request<super::LoadServiceAccountRequest>,
3744        ) -> std::result::Result<tonic::Response<super::LoadServiceAccountResponse>, tonic::Status>;
3745        async fn load_group(
3746            &self,
3747            request: tonic::Request<super::LoadGroupRequest>,
3748        ) -> std::result::Result<tonic::Response<super::LoadGroupResponse>, tonic::Status>;
3749        async fn reload_site_replication_config(
3750            &self,
3751            request: tonic::Request<super::ReloadSiteReplicationConfigRequest>,
3752        ) -> std::result::Result<tonic::Response<super::ReloadSiteReplicationConfigResponse>, tonic::Status>;
3753        /// rpc VerifyBinary() returns () {};
3754        /// rpc CommitBinary() returns () {};
3755        async fn signal_service(
3756            &self,
3757            request: tonic::Request<super::SignalServiceRequest>,
3758        ) -> std::result::Result<tonic::Response<super::SignalServiceResponse>, tonic::Status>;
3759        async fn scanner_activity(
3760            &self,
3761            request: tonic::Request<super::ScannerActivityRequest>,
3762        ) -> std::result::Result<tonic::Response<super::ScannerActivityResponse>, tonic::Status>;
3763        async fn scanner_dirty_usage_snapshot(
3764            &self,
3765            request: tonic::Request<super::ScannerDirtyUsageSnapshotRequest>,
3766        ) -> std::result::Result<tonic::Response<super::ScannerDirtyUsageSnapshotResponse>, tonic::Status>;
3767        async fn acquire_scanner_publication_lease(
3768            &self,
3769            request: tonic::Request<super::ScannerPublicationLeaseRequest>,
3770        ) -> std::result::Result<tonic::Response<super::ScannerPublicationLeaseResponse>, tonic::Status>;
3771        async fn release_scanner_publication_lease(
3772            &self,
3773            request: tonic::Request<super::ScannerPublicationLeaseReleaseRequest>,
3774        ) -> std::result::Result<tonic::Response<super::ScannerPublicationLeaseReleaseResponse>, tonic::Status>;
3775        async fn background_heal_status(
3776            &self,
3777            request: tonic::Request<super::BackgroundHealStatusRequest>,
3778        ) -> std::result::Result<tonic::Response<super::BackgroundHealStatusResponse>, tonic::Status>;
3779        async fn replacement_recovery_status(
3780            &self,
3781            request: tonic::Request<super::ReplacementRecoveryStatusRequest>,
3782        ) -> std::result::Result<tonic::Response<super::ReplacementRecoveryStatusResponse>, tonic::Status>;
3783        async fn get_metacache_listing(
3784            &self,
3785            request: tonic::Request<super::GetMetacacheListingRequest>,
3786        ) -> std::result::Result<tonic::Response<super::GetMetacacheListingResponse>, tonic::Status>;
3787        async fn update_metacache_listing(
3788            &self,
3789            request: tonic::Request<super::UpdateMetacacheListingRequest>,
3790        ) -> std::result::Result<tonic::Response<super::UpdateMetacacheListingResponse>, tonic::Status>;
3791        async fn reload_pool_meta(
3792            &self,
3793            request: tonic::Request<super::ReloadPoolMetaRequest>,
3794        ) -> std::result::Result<tonic::Response<super::ReloadPoolMetaResponse>, tonic::Status>;
3795        async fn stop_rebalance(
3796            &self,
3797            request: tonic::Request<super::StopRebalanceRequest>,
3798        ) -> std::result::Result<tonic::Response<super::StopRebalanceResponse>, tonic::Status>;
3799        async fn load_rebalance_meta(
3800            &self,
3801            request: tonic::Request<super::LoadRebalanceMetaRequest>,
3802        ) -> std::result::Result<tonic::Response<super::LoadRebalanceMetaResponse>, tonic::Status>;
3803        async fn start_decommission(
3804            &self,
3805            request: tonic::Request<super::StartDecommissionRequest>,
3806        ) -> std::result::Result<tonic::Response<super::StartDecommissionResponse>, tonic::Status>;
3807        async fn cancel_decommission(
3808            &self,
3809            request: tonic::Request<super::CancelDecommissionRequest>,
3810        ) -> std::result::Result<tonic::Response<super::CancelDecommissionResponse>, tonic::Status>;
3811        async fn clear_decommission(
3812            &self,
3813            request: tonic::Request<super::ClearDecommissionRequest>,
3814        ) -> std::result::Result<tonic::Response<super::ClearDecommissionResponse>, tonic::Status>;
3815        async fn load_transition_tier_config(
3816            &self,
3817            request: tonic::Request<super::LoadTransitionTierConfigRequest>,
3818        ) -> std::result::Result<tonic::Response<super::LoadTransitionTierConfigResponse>, tonic::Status>;
3819        async fn tier_daily_stats(
3820            &self,
3821            request: tonic::Request<super::TierDailyStatsRequest>,
3822        ) -> std::result::Result<tonic::Response<super::TierDailyStatsResponse>, tonic::Status>;
3823        async fn get_live_events(
3824            &self,
3825            request: tonic::Request<super::GetLiveEventsRequest>,
3826        ) -> std::result::Result<tonic::Response<super::GetLiveEventsResponse>, tonic::Status>;
3827    }
3828    #[derive(Debug)]
3829    pub struct NodeServiceServer<T> {
3830        inner: Arc<T>,
3831        accept_compression_encodings: EnabledCompressionEncodings,
3832        send_compression_encodings: EnabledCompressionEncodings,
3833        max_decoding_message_size: Option<usize>,
3834        max_encoding_message_size: Option<usize>,
3835    }
3836    impl<T> NodeServiceServer<T> {
3837        pub fn new(inner: T) -> Self {
3838            Self::from_arc(Arc::new(inner))
3839        }
3840        pub fn from_arc(inner: Arc<T>) -> Self {
3841            Self {
3842                inner,
3843                accept_compression_encodings: Default::default(),
3844                send_compression_encodings: Default::default(),
3845                max_decoding_message_size: None,
3846                max_encoding_message_size: None,
3847            }
3848        }
3849        pub fn with_interceptor<F>(inner: T, interceptor: F) -> InterceptedService<Self, F>
3850        where
3851            F: tonic::service::Interceptor,
3852        {
3853            InterceptedService::new(Self::new(inner), interceptor)
3854        }
3855        /// Enable decompressing requests with the given encoding.
3856        #[must_use]
3857        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
3858            self.accept_compression_encodings.enable(encoding);
3859            self
3860        }
3861        /// Compress responses with the given encoding, if the client supports it.
3862        #[must_use]
3863        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
3864            self.send_compression_encodings.enable(encoding);
3865            self
3866        }
3867        /// Limits the maximum size of a decoded message.
3868        ///
3869        /// Default: `4MB`
3870        #[must_use]
3871        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
3872            self.max_decoding_message_size = Some(limit);
3873            self
3874        }
3875        /// Limits the maximum size of an encoded message.
3876        ///
3877        /// Default: `usize::MAX`
3878        #[must_use]
3879        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
3880            self.max_encoding_message_size = Some(limit);
3881            self
3882        }
3883    }
3884    impl<T, B> tonic::codegen::Service<http::Request<B>> for NodeServiceServer<T>
3885    where
3886        T: NodeService,
3887        B: Body + std::marker::Send + 'static,
3888        B::Error: Into<StdError> + std::marker::Send + 'static,
3889    {
3890        type Response = http::Response<tonic::body::Body>;
3891        type Error = std::convert::Infallible;
3892        type Future = BoxFuture<Self::Response, Self::Error>;
3893        fn poll_ready(&mut self, _cx: &mut Context<'_>) -> Poll<std::result::Result<(), Self::Error>> {
3894            Poll::Ready(Ok(()))
3895        }
3896        fn call(&mut self, req: http::Request<B>) -> Self::Future {
3897            match req.uri().path() {
3898                "/node_service.NodeService/Ping" => {
3899                    #[allow(non_camel_case_types)]
3900                    struct PingSvc<T: NodeService>(pub Arc<T>);
3901                    impl<T: NodeService> tonic::server::UnaryService<super::PingRequest> for PingSvc<T> {
3902                        type Response = super::PingResponse;
3903                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
3904                        fn call(&mut self, request: tonic::Request<super::PingRequest>) -> Self::Future {
3905                            let inner = Arc::clone(&self.0);
3906                            let fut = async move { <T as NodeService>::ping(&inner, request).await };
3907                            Box::pin(fut)
3908                        }
3909                    }
3910                    let accept_compression_encodings = self.accept_compression_encodings;
3911                    let send_compression_encodings = self.send_compression_encodings;
3912                    let max_decoding_message_size = self.max_decoding_message_size;
3913                    let max_encoding_message_size = self.max_encoding_message_size;
3914                    let inner = self.inner.clone();
3915                    let fut = async move {
3916                        let method = PingSvc(inner);
3917                        let codec = tonic_prost::ProstCodec::default();
3918                        let mut grpc = tonic::server::Grpc::new(codec)
3919                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
3920                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
3921                        let res = grpc.unary(method, req).await;
3922                        Ok(res)
3923                    };
3924                    Box::pin(fut)
3925                }
3926                "/node_service.NodeService/HealBucket" => {
3927                    #[allow(non_camel_case_types)]
3928                    struct HealBucketSvc<T: NodeService>(pub Arc<T>);
3929                    impl<T: NodeService> tonic::server::UnaryService<super::HealBucketRequest> for HealBucketSvc<T> {
3930                        type Response = super::HealBucketResponse;
3931                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
3932                        fn call(&mut self, request: tonic::Request<super::HealBucketRequest>) -> Self::Future {
3933                            let inner = Arc::clone(&self.0);
3934                            let fut = async move { <T as NodeService>::heal_bucket(&inner, request).await };
3935                            Box::pin(fut)
3936                        }
3937                    }
3938                    let accept_compression_encodings = self.accept_compression_encodings;
3939                    let send_compression_encodings = self.send_compression_encodings;
3940                    let max_decoding_message_size = self.max_decoding_message_size;
3941                    let max_encoding_message_size = self.max_encoding_message_size;
3942                    let inner = self.inner.clone();
3943                    let fut = async move {
3944                        let method = HealBucketSvc(inner);
3945                        let codec = tonic_prost::ProstCodec::default();
3946                        let mut grpc = tonic::server::Grpc::new(codec)
3947                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
3948                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
3949                        let res = grpc.unary(method, req).await;
3950                        Ok(res)
3951                    };
3952                    Box::pin(fut)
3953                }
3954                "/node_service.NodeService/HealBucketAtIncarnation" => {
3955                    #[allow(non_camel_case_types)]
3956                    struct HealBucketAtIncarnationSvc<T: NodeService>(pub Arc<T>);
3957                    impl<T: NodeService> tonic::server::UnaryService<super::HealBucketRequest> for HealBucketAtIncarnationSvc<T> {
3958                        type Response = super::HealBucketResponse;
3959                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
3960                        fn call(&mut self, request: tonic::Request<super::HealBucketRequest>) -> Self::Future {
3961                            let inner = Arc::clone(&self.0);
3962                            let fut = async move { <T as NodeService>::heal_bucket_at_incarnation(&inner, request).await };
3963                            Box::pin(fut)
3964                        }
3965                    }
3966                    let accept_compression_encodings = self.accept_compression_encodings;
3967                    let send_compression_encodings = self.send_compression_encodings;
3968                    let max_decoding_message_size = self.max_decoding_message_size;
3969                    let max_encoding_message_size = self.max_encoding_message_size;
3970                    let inner = self.inner.clone();
3971                    let fut = async move {
3972                        let method = HealBucketAtIncarnationSvc(inner);
3973                        let codec = tonic_prost::ProstCodec::default();
3974                        let mut grpc = tonic::server::Grpc::new(codec)
3975                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
3976                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
3977                        let res = grpc.unary(method, req).await;
3978                        Ok(res)
3979                    };
3980                    Box::pin(fut)
3981                }
3982                "/node_service.NodeService/ListBucket" => {
3983                    #[allow(non_camel_case_types)]
3984                    struct ListBucketSvc<T: NodeService>(pub Arc<T>);
3985                    impl<T: NodeService> tonic::server::UnaryService<super::ListBucketRequest> for ListBucketSvc<T> {
3986                        type Response = super::ListBucketResponse;
3987                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
3988                        fn call(&mut self, request: tonic::Request<super::ListBucketRequest>) -> Self::Future {
3989                            let inner = Arc::clone(&self.0);
3990                            let fut = async move { <T as NodeService>::list_bucket(&inner, request).await };
3991                            Box::pin(fut)
3992                        }
3993                    }
3994                    let accept_compression_encodings = self.accept_compression_encodings;
3995                    let send_compression_encodings = self.send_compression_encodings;
3996                    let max_decoding_message_size = self.max_decoding_message_size;
3997                    let max_encoding_message_size = self.max_encoding_message_size;
3998                    let inner = self.inner.clone();
3999                    let fut = async move {
4000                        let method = ListBucketSvc(inner);
4001                        let codec = tonic_prost::ProstCodec::default();
4002                        let mut grpc = tonic::server::Grpc::new(codec)
4003                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4004                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4005                        let res = grpc.unary(method, req).await;
4006                        Ok(res)
4007                    };
4008                    Box::pin(fut)
4009                }
4010                "/node_service.NodeService/MakeBucket" => {
4011                    #[allow(non_camel_case_types)]
4012                    struct MakeBucketSvc<T: NodeService>(pub Arc<T>);
4013                    impl<T: NodeService> tonic::server::UnaryService<super::MakeBucketRequest> for MakeBucketSvc<T> {
4014                        type Response = super::MakeBucketResponse;
4015                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4016                        fn call(&mut self, request: tonic::Request<super::MakeBucketRequest>) -> Self::Future {
4017                            let inner = Arc::clone(&self.0);
4018                            let fut = async move { <T as NodeService>::make_bucket(&inner, request).await };
4019                            Box::pin(fut)
4020                        }
4021                    }
4022                    let accept_compression_encodings = self.accept_compression_encodings;
4023                    let send_compression_encodings = self.send_compression_encodings;
4024                    let max_decoding_message_size = self.max_decoding_message_size;
4025                    let max_encoding_message_size = self.max_encoding_message_size;
4026                    let inner = self.inner.clone();
4027                    let fut = async move {
4028                        let method = MakeBucketSvc(inner);
4029                        let codec = tonic_prost::ProstCodec::default();
4030                        let mut grpc = tonic::server::Grpc::new(codec)
4031                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4032                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4033                        let res = grpc.unary(method, req).await;
4034                        Ok(res)
4035                    };
4036                    Box::pin(fut)
4037                }
4038                "/node_service.NodeService/GetBucketInfo" => {
4039                    #[allow(non_camel_case_types)]
4040                    struct GetBucketInfoSvc<T: NodeService>(pub Arc<T>);
4041                    impl<T: NodeService> tonic::server::UnaryService<super::GetBucketInfoRequest> for GetBucketInfoSvc<T> {
4042                        type Response = super::GetBucketInfoResponse;
4043                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4044                        fn call(&mut self, request: tonic::Request<super::GetBucketInfoRequest>) -> Self::Future {
4045                            let inner = Arc::clone(&self.0);
4046                            let fut = async move { <T as NodeService>::get_bucket_info(&inner, request).await };
4047                            Box::pin(fut)
4048                        }
4049                    }
4050                    let accept_compression_encodings = self.accept_compression_encodings;
4051                    let send_compression_encodings = self.send_compression_encodings;
4052                    let max_decoding_message_size = self.max_decoding_message_size;
4053                    let max_encoding_message_size = self.max_encoding_message_size;
4054                    let inner = self.inner.clone();
4055                    let fut = async move {
4056                        let method = GetBucketInfoSvc(inner);
4057                        let codec = tonic_prost::ProstCodec::default();
4058                        let mut grpc = tonic::server::Grpc::new(codec)
4059                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4060                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4061                        let res = grpc.unary(method, req).await;
4062                        Ok(res)
4063                    };
4064                    Box::pin(fut)
4065                }
4066                "/node_service.NodeService/DeleteBucket" => {
4067                    #[allow(non_camel_case_types)]
4068                    struct DeleteBucketSvc<T: NodeService>(pub Arc<T>);
4069                    impl<T: NodeService> tonic::server::UnaryService<super::DeleteBucketRequest> for DeleteBucketSvc<T> {
4070                        type Response = super::DeleteBucketResponse;
4071                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4072                        fn call(&mut self, request: tonic::Request<super::DeleteBucketRequest>) -> Self::Future {
4073                            let inner = Arc::clone(&self.0);
4074                            let fut = async move { <T as NodeService>::delete_bucket(&inner, request).await };
4075                            Box::pin(fut)
4076                        }
4077                    }
4078                    let accept_compression_encodings = self.accept_compression_encodings;
4079                    let send_compression_encodings = self.send_compression_encodings;
4080                    let max_decoding_message_size = self.max_decoding_message_size;
4081                    let max_encoding_message_size = self.max_encoding_message_size;
4082                    let inner = self.inner.clone();
4083                    let fut = async move {
4084                        let method = DeleteBucketSvc(inner);
4085                        let codec = tonic_prost::ProstCodec::default();
4086                        let mut grpc = tonic::server::Grpc::new(codec)
4087                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4088                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4089                        let res = grpc.unary(method, req).await;
4090                        Ok(res)
4091                    };
4092                    Box::pin(fut)
4093                }
4094                "/node_service.NodeService/ReadAll" => {
4095                    #[allow(non_camel_case_types)]
4096                    struct ReadAllSvc<T: NodeService>(pub Arc<T>);
4097                    impl<T: NodeService> tonic::server::UnaryService<super::ReadAllRequest> for ReadAllSvc<T> {
4098                        type Response = super::ReadAllResponse;
4099                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4100                        fn call(&mut self, request: tonic::Request<super::ReadAllRequest>) -> Self::Future {
4101                            let inner = Arc::clone(&self.0);
4102                            let fut = async move { <T as NodeService>::read_all(&inner, request).await };
4103                            Box::pin(fut)
4104                        }
4105                    }
4106                    let accept_compression_encodings = self.accept_compression_encodings;
4107                    let send_compression_encodings = self.send_compression_encodings;
4108                    let max_decoding_message_size = self.max_decoding_message_size;
4109                    let max_encoding_message_size = self.max_encoding_message_size;
4110                    let inner = self.inner.clone();
4111                    let fut = async move {
4112                        let method = ReadAllSvc(inner);
4113                        let codec = tonic_prost::ProstCodec::default();
4114                        let mut grpc = tonic::server::Grpc::new(codec)
4115                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4116                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4117                        let res = grpc.unary(method, req).await;
4118                        Ok(res)
4119                    };
4120                    Box::pin(fut)
4121                }
4122                "/node_service.NodeService/WriteAll" => {
4123                    #[allow(non_camel_case_types)]
4124                    struct WriteAllSvc<T: NodeService>(pub Arc<T>);
4125                    impl<T: NodeService> tonic::server::UnaryService<super::WriteAllRequest> for WriteAllSvc<T> {
4126                        type Response = super::WriteAllResponse;
4127                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4128                        fn call(&mut self, request: tonic::Request<super::WriteAllRequest>) -> Self::Future {
4129                            let inner = Arc::clone(&self.0);
4130                            let fut = async move { <T as NodeService>::write_all(&inner, request).await };
4131                            Box::pin(fut)
4132                        }
4133                    }
4134                    let accept_compression_encodings = self.accept_compression_encodings;
4135                    let send_compression_encodings = self.send_compression_encodings;
4136                    let max_decoding_message_size = self.max_decoding_message_size;
4137                    let max_encoding_message_size = self.max_encoding_message_size;
4138                    let inner = self.inner.clone();
4139                    let fut = async move {
4140                        let method = WriteAllSvc(inner);
4141                        let codec = tonic_prost::ProstCodec::default();
4142                        let mut grpc = tonic::server::Grpc::new(codec)
4143                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4144                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4145                        let res = grpc.unary(method, req).await;
4146                        Ok(res)
4147                    };
4148                    Box::pin(fut)
4149                }
4150                "/node_service.NodeService/CompareAndUpdateFile" => {
4151                    #[allow(non_camel_case_types)]
4152                    struct CompareAndUpdateFileSvc<T: NodeService>(pub Arc<T>);
4153                    impl<T: NodeService> tonic::server::UnaryService<super::CompareAndUpdateFileRequest> for CompareAndUpdateFileSvc<T> {
4154                        type Response = super::CompareAndUpdateFileResponse;
4155                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4156                        fn call(&mut self, request: tonic::Request<super::CompareAndUpdateFileRequest>) -> Self::Future {
4157                            let inner = Arc::clone(&self.0);
4158                            let fut = async move { <T as NodeService>::compare_and_update_file(&inner, request).await };
4159                            Box::pin(fut)
4160                        }
4161                    }
4162                    let accept_compression_encodings = self.accept_compression_encodings;
4163                    let send_compression_encodings = self.send_compression_encodings;
4164                    let max_decoding_message_size = self.max_decoding_message_size;
4165                    let max_encoding_message_size = self.max_encoding_message_size;
4166                    let inner = self.inner.clone();
4167                    let fut = async move {
4168                        let method = CompareAndUpdateFileSvc(inner);
4169                        let codec = tonic_prost::ProstCodec::default();
4170                        let mut grpc = tonic::server::Grpc::new(codec)
4171                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4172                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4173                        let res = grpc.unary(method, req).await;
4174                        Ok(res)
4175                    };
4176                    Box::pin(fut)
4177                }
4178                "/node_service.NodeService/Delete" => {
4179                    #[allow(non_camel_case_types)]
4180                    struct DeleteSvc<T: NodeService>(pub Arc<T>);
4181                    impl<T: NodeService> tonic::server::UnaryService<super::DeleteRequest> for DeleteSvc<T> {
4182                        type Response = super::DeleteResponse;
4183                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4184                        fn call(&mut self, request: tonic::Request<super::DeleteRequest>) -> Self::Future {
4185                            let inner = Arc::clone(&self.0);
4186                            let fut = async move { <T as NodeService>::delete(&inner, request).await };
4187                            Box::pin(fut)
4188                        }
4189                    }
4190                    let accept_compression_encodings = self.accept_compression_encodings;
4191                    let send_compression_encodings = self.send_compression_encodings;
4192                    let max_decoding_message_size = self.max_decoding_message_size;
4193                    let max_encoding_message_size = self.max_encoding_message_size;
4194                    let inner = self.inner.clone();
4195                    let fut = async move {
4196                        let method = DeleteSvc(inner);
4197                        let codec = tonic_prost::ProstCodec::default();
4198                        let mut grpc = tonic::server::Grpc::new(codec)
4199                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4200                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4201                        let res = grpc.unary(method, req).await;
4202                        Ok(res)
4203                    };
4204                    Box::pin(fut)
4205                }
4206                "/node_service.NodeService/DeleteAtIncarnation" => {
4207                    #[allow(non_camel_case_types)]
4208                    struct DeleteAtIncarnationSvc<T: NodeService>(pub Arc<T>);
4209                    impl<T: NodeService> tonic::server::UnaryService<super::DeleteRequest> for DeleteAtIncarnationSvc<T> {
4210                        type Response = super::DeleteResponse;
4211                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4212                        fn call(&mut self, request: tonic::Request<super::DeleteRequest>) -> Self::Future {
4213                            let inner = Arc::clone(&self.0);
4214                            let fut = async move { <T as NodeService>::delete_at_incarnation(&inner, request).await };
4215                            Box::pin(fut)
4216                        }
4217                    }
4218                    let accept_compression_encodings = self.accept_compression_encodings;
4219                    let send_compression_encodings = self.send_compression_encodings;
4220                    let max_decoding_message_size = self.max_decoding_message_size;
4221                    let max_encoding_message_size = self.max_encoding_message_size;
4222                    let inner = self.inner.clone();
4223                    let fut = async move {
4224                        let method = DeleteAtIncarnationSvc(inner);
4225                        let codec = tonic_prost::ProstCodec::default();
4226                        let mut grpc = tonic::server::Grpc::new(codec)
4227                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4228                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4229                        let res = grpc.unary(method, req).await;
4230                        Ok(res)
4231                    };
4232                    Box::pin(fut)
4233                }
4234                "/node_service.NodeService/AcquireSnapshotLease" => {
4235                    #[allow(non_camel_case_types)]
4236                    struct AcquireSnapshotLeaseSvc<T: NodeService>(pub Arc<T>);
4237                    impl<T: NodeService> tonic::server::UnaryService<super::SnapshotLeaseRequest> for AcquireSnapshotLeaseSvc<T> {
4238                        type Response = super::SnapshotLeaseResponse;
4239                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4240                        fn call(&mut self, request: tonic::Request<super::SnapshotLeaseRequest>) -> Self::Future {
4241                            let inner = Arc::clone(&self.0);
4242                            let fut = async move { <T as NodeService>::acquire_snapshot_lease(&inner, request).await };
4243                            Box::pin(fut)
4244                        }
4245                    }
4246                    let accept_compression_encodings = self.accept_compression_encodings;
4247                    let send_compression_encodings = self.send_compression_encodings;
4248                    let max_decoding_message_size = self.max_decoding_message_size;
4249                    let max_encoding_message_size = self.max_encoding_message_size;
4250                    let inner = self.inner.clone();
4251                    let fut = async move {
4252                        let method = AcquireSnapshotLeaseSvc(inner);
4253                        let codec = tonic_prost::ProstCodec::default();
4254                        let mut grpc = tonic::server::Grpc::new(codec)
4255                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4256                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4257                        let res = grpc.unary(method, req).await;
4258                        Ok(res)
4259                    };
4260                    Box::pin(fut)
4261                }
4262                "/node_service.NodeService/RenewSnapshotLease" => {
4263                    #[allow(non_camel_case_types)]
4264                    struct RenewSnapshotLeaseSvc<T: NodeService>(pub Arc<T>);
4265                    impl<T: NodeService> tonic::server::UnaryService<super::SnapshotLeaseRenewRequest> for RenewSnapshotLeaseSvc<T> {
4266                        type Response = super::SnapshotLeaseResponse;
4267                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4268                        fn call(&mut self, request: tonic::Request<super::SnapshotLeaseRenewRequest>) -> Self::Future {
4269                            let inner = Arc::clone(&self.0);
4270                            let fut = async move { <T as NodeService>::renew_snapshot_lease(&inner, request).await };
4271                            Box::pin(fut)
4272                        }
4273                    }
4274                    let accept_compression_encodings = self.accept_compression_encodings;
4275                    let send_compression_encodings = self.send_compression_encodings;
4276                    let max_decoding_message_size = self.max_decoding_message_size;
4277                    let max_encoding_message_size = self.max_encoding_message_size;
4278                    let inner = self.inner.clone();
4279                    let fut = async move {
4280                        let method = RenewSnapshotLeaseSvc(inner);
4281                        let codec = tonic_prost::ProstCodec::default();
4282                        let mut grpc = tonic::server::Grpc::new(codec)
4283                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4284                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4285                        let res = grpc.unary(method, req).await;
4286                        Ok(res)
4287                    };
4288                    Box::pin(fut)
4289                }
4290                "/node_service.NodeService/ReleaseSnapshotLease" => {
4291                    #[allow(non_camel_case_types)]
4292                    struct ReleaseSnapshotLeaseSvc<T: NodeService>(pub Arc<T>);
4293                    impl<T: NodeService> tonic::server::UnaryService<super::SnapshotLeaseReleaseRequest> for ReleaseSnapshotLeaseSvc<T> {
4294                        type Response = super::SnapshotLeaseMutationResponse;
4295                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4296                        fn call(&mut self, request: tonic::Request<super::SnapshotLeaseReleaseRequest>) -> Self::Future {
4297                            let inner = Arc::clone(&self.0);
4298                            let fut = async move { <T as NodeService>::release_snapshot_lease(&inner, request).await };
4299                            Box::pin(fut)
4300                        }
4301                    }
4302                    let accept_compression_encodings = self.accept_compression_encodings;
4303                    let send_compression_encodings = self.send_compression_encodings;
4304                    let max_decoding_message_size = self.max_decoding_message_size;
4305                    let max_encoding_message_size = self.max_encoding_message_size;
4306                    let inner = self.inner.clone();
4307                    let fut = async move {
4308                        let method = ReleaseSnapshotLeaseSvc(inner);
4309                        let codec = tonic_prost::ProstCodec::default();
4310                        let mut grpc = tonic::server::Grpc::new(codec)
4311                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4312                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4313                        let res = grpc.unary(method, req).await;
4314                        Ok(res)
4315                    };
4316                    Box::pin(fut)
4317                }
4318                "/node_service.NodeService/VerifyFile" => {
4319                    #[allow(non_camel_case_types)]
4320                    struct VerifyFileSvc<T: NodeService>(pub Arc<T>);
4321                    impl<T: NodeService> tonic::server::UnaryService<super::VerifyFileRequest> for VerifyFileSvc<T> {
4322                        type Response = super::VerifyFileResponse;
4323                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4324                        fn call(&mut self, request: tonic::Request<super::VerifyFileRequest>) -> Self::Future {
4325                            let inner = Arc::clone(&self.0);
4326                            let fut = async move { <T as NodeService>::verify_file(&inner, request).await };
4327                            Box::pin(fut)
4328                        }
4329                    }
4330                    let accept_compression_encodings = self.accept_compression_encodings;
4331                    let send_compression_encodings = self.send_compression_encodings;
4332                    let max_decoding_message_size = self.max_decoding_message_size;
4333                    let max_encoding_message_size = self.max_encoding_message_size;
4334                    let inner = self.inner.clone();
4335                    let fut = async move {
4336                        let method = VerifyFileSvc(inner);
4337                        let codec = tonic_prost::ProstCodec::default();
4338                        let mut grpc = tonic::server::Grpc::new(codec)
4339                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4340                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4341                        let res = grpc.unary(method, req).await;
4342                        Ok(res)
4343                    };
4344                    Box::pin(fut)
4345                }
4346                "/node_service.NodeService/ReadParts" => {
4347                    #[allow(non_camel_case_types)]
4348                    struct ReadPartsSvc<T: NodeService>(pub Arc<T>);
4349                    impl<T: NodeService> tonic::server::UnaryService<super::ReadPartsRequest> for ReadPartsSvc<T> {
4350                        type Response = super::ReadPartsResponse;
4351                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4352                        fn call(&mut self, request: tonic::Request<super::ReadPartsRequest>) -> Self::Future {
4353                            let inner = Arc::clone(&self.0);
4354                            let fut = async move { <T as NodeService>::read_parts(&inner, request).await };
4355                            Box::pin(fut)
4356                        }
4357                    }
4358                    let accept_compression_encodings = self.accept_compression_encodings;
4359                    let send_compression_encodings = self.send_compression_encodings;
4360                    let max_decoding_message_size = self.max_decoding_message_size;
4361                    let max_encoding_message_size = self.max_encoding_message_size;
4362                    let inner = self.inner.clone();
4363                    let fut = async move {
4364                        let method = ReadPartsSvc(inner);
4365                        let codec = tonic_prost::ProstCodec::default();
4366                        let mut grpc = tonic::server::Grpc::new(codec)
4367                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4368                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4369                        let res = grpc.unary(method, req).await;
4370                        Ok(res)
4371                    };
4372                    Box::pin(fut)
4373                }
4374                "/node_service.NodeService/CheckParts" => {
4375                    #[allow(non_camel_case_types)]
4376                    struct CheckPartsSvc<T: NodeService>(pub Arc<T>);
4377                    impl<T: NodeService> tonic::server::UnaryService<super::CheckPartsRequest> for CheckPartsSvc<T> {
4378                        type Response = super::CheckPartsResponse;
4379                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4380                        fn call(&mut self, request: tonic::Request<super::CheckPartsRequest>) -> Self::Future {
4381                            let inner = Arc::clone(&self.0);
4382                            let fut = async move { <T as NodeService>::check_parts(&inner, request).await };
4383                            Box::pin(fut)
4384                        }
4385                    }
4386                    let accept_compression_encodings = self.accept_compression_encodings;
4387                    let send_compression_encodings = self.send_compression_encodings;
4388                    let max_decoding_message_size = self.max_decoding_message_size;
4389                    let max_encoding_message_size = self.max_encoding_message_size;
4390                    let inner = self.inner.clone();
4391                    let fut = async move {
4392                        let method = CheckPartsSvc(inner);
4393                        let codec = tonic_prost::ProstCodec::default();
4394                        let mut grpc = tonic::server::Grpc::new(codec)
4395                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4396                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4397                        let res = grpc.unary(method, req).await;
4398                        Ok(res)
4399                    };
4400                    Box::pin(fut)
4401                }
4402                "/node_service.NodeService/PreparePartTransaction" => {
4403                    #[allow(non_camel_case_types)]
4404                    struct PreparePartTransactionSvc<T: NodeService>(pub Arc<T>);
4405                    impl<T: NodeService> tonic::server::UnaryService<super::PreparePartTransactionRequest> for PreparePartTransactionSvc<T> {
4406                        type Response = super::PreparePartTransactionResponse;
4407                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4408                        fn call(&mut self, request: tonic::Request<super::PreparePartTransactionRequest>) -> Self::Future {
4409                            let inner = Arc::clone(&self.0);
4410                            let fut = async move { <T as NodeService>::prepare_part_transaction(&inner, request).await };
4411                            Box::pin(fut)
4412                        }
4413                    }
4414                    let accept_compression_encodings = self.accept_compression_encodings;
4415                    let send_compression_encodings = self.send_compression_encodings;
4416                    let max_decoding_message_size = self.max_decoding_message_size;
4417                    let max_encoding_message_size = self.max_encoding_message_size;
4418                    let inner = self.inner.clone();
4419                    let fut = async move {
4420                        let method = PreparePartTransactionSvc(inner);
4421                        let codec = tonic_prost::ProstCodec::default();
4422                        let mut grpc = tonic::server::Grpc::new(codec)
4423                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4424                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4425                        let res = grpc.unary(method, req).await;
4426                        Ok(res)
4427                    };
4428                    Box::pin(fut)
4429                }
4430                "/node_service.NodeService/RenamePart" => {
4431                    #[allow(non_camel_case_types)]
4432                    struct RenamePartSvc<T: NodeService>(pub Arc<T>);
4433                    impl<T: NodeService> tonic::server::UnaryService<super::RenamePartRequest> for RenamePartSvc<T> {
4434                        type Response = super::RenamePartResponse;
4435                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4436                        fn call(&mut self, request: tonic::Request<super::RenamePartRequest>) -> Self::Future {
4437                            let inner = Arc::clone(&self.0);
4438                            let fut = async move { <T as NodeService>::rename_part(&inner, request).await };
4439                            Box::pin(fut)
4440                        }
4441                    }
4442                    let accept_compression_encodings = self.accept_compression_encodings;
4443                    let send_compression_encodings = self.send_compression_encodings;
4444                    let max_decoding_message_size = self.max_decoding_message_size;
4445                    let max_encoding_message_size = self.max_encoding_message_size;
4446                    let inner = self.inner.clone();
4447                    let fut = async move {
4448                        let method = RenamePartSvc(inner);
4449                        let codec = tonic_prost::ProstCodec::default();
4450                        let mut grpc = tonic::server::Grpc::new(codec)
4451                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4452                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4453                        let res = grpc.unary(method, req).await;
4454                        Ok(res)
4455                    };
4456                    Box::pin(fut)
4457                }
4458                "/node_service.NodeService/SettlePartTransaction" => {
4459                    #[allow(non_camel_case_types)]
4460                    struct SettlePartTransactionSvc<T: NodeService>(pub Arc<T>);
4461                    impl<T: NodeService> tonic::server::UnaryService<super::SettlePartTransactionRequest> for SettlePartTransactionSvc<T> {
4462                        type Response = super::SettlePartTransactionResponse;
4463                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4464                        fn call(&mut self, request: tonic::Request<super::SettlePartTransactionRequest>) -> Self::Future {
4465                            let inner = Arc::clone(&self.0);
4466                            let fut = async move { <T as NodeService>::settle_part_transaction(&inner, request).await };
4467                            Box::pin(fut)
4468                        }
4469                    }
4470                    let accept_compression_encodings = self.accept_compression_encodings;
4471                    let send_compression_encodings = self.send_compression_encodings;
4472                    let max_decoding_message_size = self.max_decoding_message_size;
4473                    let max_encoding_message_size = self.max_encoding_message_size;
4474                    let inner = self.inner.clone();
4475                    let fut = async move {
4476                        let method = SettlePartTransactionSvc(inner);
4477                        let codec = tonic_prost::ProstCodec::default();
4478                        let mut grpc = tonic::server::Grpc::new(codec)
4479                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4480                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4481                        let res = grpc.unary(method, req).await;
4482                        Ok(res)
4483                    };
4484                    Box::pin(fut)
4485                }
4486                "/node_service.NodeService/RenameFile" => {
4487                    #[allow(non_camel_case_types)]
4488                    struct RenameFileSvc<T: NodeService>(pub Arc<T>);
4489                    impl<T: NodeService> tonic::server::UnaryService<super::RenameFileRequest> for RenameFileSvc<T> {
4490                        type Response = super::RenameFileResponse;
4491                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4492                        fn call(&mut self, request: tonic::Request<super::RenameFileRequest>) -> Self::Future {
4493                            let inner = Arc::clone(&self.0);
4494                            let fut = async move { <T as NodeService>::rename_file(&inner, request).await };
4495                            Box::pin(fut)
4496                        }
4497                    }
4498                    let accept_compression_encodings = self.accept_compression_encodings;
4499                    let send_compression_encodings = self.send_compression_encodings;
4500                    let max_decoding_message_size = self.max_decoding_message_size;
4501                    let max_encoding_message_size = self.max_encoding_message_size;
4502                    let inner = self.inner.clone();
4503                    let fut = async move {
4504                        let method = RenameFileSvc(inner);
4505                        let codec = tonic_prost::ProstCodec::default();
4506                        let mut grpc = tonic::server::Grpc::new(codec)
4507                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4508                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4509                        let res = grpc.unary(method, req).await;
4510                        Ok(res)
4511                    };
4512                    Box::pin(fut)
4513                }
4514                "/node_service.NodeService/Write" => {
4515                    #[allow(non_camel_case_types)]
4516                    struct WriteSvc<T: NodeService>(pub Arc<T>);
4517                    impl<T: NodeService> tonic::server::UnaryService<super::WriteRequest> for WriteSvc<T> {
4518                        type Response = super::WriteResponse;
4519                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4520                        fn call(&mut self, request: tonic::Request<super::WriteRequest>) -> Self::Future {
4521                            let inner = Arc::clone(&self.0);
4522                            let fut = async move { <T as NodeService>::write(&inner, request).await };
4523                            Box::pin(fut)
4524                        }
4525                    }
4526                    let accept_compression_encodings = self.accept_compression_encodings;
4527                    let send_compression_encodings = self.send_compression_encodings;
4528                    let max_decoding_message_size = self.max_decoding_message_size;
4529                    let max_encoding_message_size = self.max_encoding_message_size;
4530                    let inner = self.inner.clone();
4531                    let fut = async move {
4532                        let method = WriteSvc(inner);
4533                        let codec = tonic_prost::ProstCodec::default();
4534                        let mut grpc = tonic::server::Grpc::new(codec)
4535                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4536                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4537                        let res = grpc.unary(method, req).await;
4538                        Ok(res)
4539                    };
4540                    Box::pin(fut)
4541                }
4542                "/node_service.NodeService/WriteStream" => {
4543                    #[allow(non_camel_case_types)]
4544                    struct WriteStreamSvc<T: NodeService>(pub Arc<T>);
4545                    impl<T: NodeService> tonic::server::StreamingService<super::WriteRequest> for WriteStreamSvc<T> {
4546                        type Response = super::WriteResponse;
4547                        type ResponseStream = T::WriteStreamStream;
4548                        type Future = BoxFuture<tonic::Response<Self::ResponseStream>, tonic::Status>;
4549                        fn call(&mut self, request: tonic::Request<tonic::Streaming<super::WriteRequest>>) -> Self::Future {
4550                            let inner = Arc::clone(&self.0);
4551                            let fut = async move { <T as NodeService>::write_stream(&inner, request).await };
4552                            Box::pin(fut)
4553                        }
4554                    }
4555                    let accept_compression_encodings = self.accept_compression_encodings;
4556                    let send_compression_encodings = self.send_compression_encodings;
4557                    let max_decoding_message_size = self.max_decoding_message_size;
4558                    let max_encoding_message_size = self.max_encoding_message_size;
4559                    let inner = self.inner.clone();
4560                    let fut = async move {
4561                        let method = WriteStreamSvc(inner);
4562                        let codec = tonic_prost::ProstCodec::default();
4563                        let mut grpc = tonic::server::Grpc::new(codec)
4564                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4565                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4566                        let res = grpc.streaming(method, req).await;
4567                        Ok(res)
4568                    };
4569                    Box::pin(fut)
4570                }
4571                "/node_service.NodeService/ReadAt" => {
4572                    #[allow(non_camel_case_types)]
4573                    struct ReadAtSvc<T: NodeService>(pub Arc<T>);
4574                    impl<T: NodeService> tonic::server::StreamingService<super::ReadAtRequest> for ReadAtSvc<T> {
4575                        type Response = super::ReadAtResponse;
4576                        type ResponseStream = T::ReadAtStream;
4577                        type Future = BoxFuture<tonic::Response<Self::ResponseStream>, tonic::Status>;
4578                        fn call(&mut self, request: tonic::Request<tonic::Streaming<super::ReadAtRequest>>) -> Self::Future {
4579                            let inner = Arc::clone(&self.0);
4580                            let fut = async move { <T as NodeService>::read_at(&inner, request).await };
4581                            Box::pin(fut)
4582                        }
4583                    }
4584                    let accept_compression_encodings = self.accept_compression_encodings;
4585                    let send_compression_encodings = self.send_compression_encodings;
4586                    let max_decoding_message_size = self.max_decoding_message_size;
4587                    let max_encoding_message_size = self.max_encoding_message_size;
4588                    let inner = self.inner.clone();
4589                    let fut = async move {
4590                        let method = ReadAtSvc(inner);
4591                        let codec = tonic_prost::ProstCodec::default();
4592                        let mut grpc = tonic::server::Grpc::new(codec)
4593                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4594                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4595                        let res = grpc.streaming(method, req).await;
4596                        Ok(res)
4597                    };
4598                    Box::pin(fut)
4599                }
4600                "/node_service.NodeService/ListDir" => {
4601                    #[allow(non_camel_case_types)]
4602                    struct ListDirSvc<T: NodeService>(pub Arc<T>);
4603                    impl<T: NodeService> tonic::server::UnaryService<super::ListDirRequest> for ListDirSvc<T> {
4604                        type Response = super::ListDirResponse;
4605                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4606                        fn call(&mut self, request: tonic::Request<super::ListDirRequest>) -> Self::Future {
4607                            let inner = Arc::clone(&self.0);
4608                            let fut = async move { <T as NodeService>::list_dir(&inner, request).await };
4609                            Box::pin(fut)
4610                        }
4611                    }
4612                    let accept_compression_encodings = self.accept_compression_encodings;
4613                    let send_compression_encodings = self.send_compression_encodings;
4614                    let max_decoding_message_size = self.max_decoding_message_size;
4615                    let max_encoding_message_size = self.max_encoding_message_size;
4616                    let inner = self.inner.clone();
4617                    let fut = async move {
4618                        let method = ListDirSvc(inner);
4619                        let codec = tonic_prost::ProstCodec::default();
4620                        let mut grpc = tonic::server::Grpc::new(codec)
4621                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4622                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4623                        let res = grpc.unary(method, req).await;
4624                        Ok(res)
4625                    };
4626                    Box::pin(fut)
4627                }
4628                "/node_service.NodeService/WalkDir" => {
4629                    #[allow(non_camel_case_types)]
4630                    struct WalkDirSvc<T: NodeService>(pub Arc<T>);
4631                    impl<T: NodeService> tonic::server::ServerStreamingService<super::WalkDirRequest> for WalkDirSvc<T> {
4632                        type Response = super::WalkDirResponse;
4633                        type ResponseStream = T::WalkDirStream;
4634                        type Future = BoxFuture<tonic::Response<Self::ResponseStream>, tonic::Status>;
4635                        fn call(&mut self, request: tonic::Request<super::WalkDirRequest>) -> Self::Future {
4636                            let inner = Arc::clone(&self.0);
4637                            let fut = async move { <T as NodeService>::walk_dir(&inner, request).await };
4638                            Box::pin(fut)
4639                        }
4640                    }
4641                    let accept_compression_encodings = self.accept_compression_encodings;
4642                    let send_compression_encodings = self.send_compression_encodings;
4643                    let max_decoding_message_size = self.max_decoding_message_size;
4644                    let max_encoding_message_size = self.max_encoding_message_size;
4645                    let inner = self.inner.clone();
4646                    let fut = async move {
4647                        let method = WalkDirSvc(inner);
4648                        let codec = tonic_prost::ProstCodec::default();
4649                        let mut grpc = tonic::server::Grpc::new(codec)
4650                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4651                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4652                        let res = grpc.server_streaming(method, req).await;
4653                        Ok(res)
4654                    };
4655                    Box::pin(fut)
4656                }
4657                "/node_service.NodeService/RenameData" => {
4658                    #[allow(non_camel_case_types)]
4659                    struct RenameDataSvc<T: NodeService>(pub Arc<T>);
4660                    impl<T: NodeService> tonic::server::UnaryService<super::RenameDataRequest> for RenameDataSvc<T> {
4661                        type Response = super::RenameDataResponse;
4662                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4663                        fn call(&mut self, request: tonic::Request<super::RenameDataRequest>) -> Self::Future {
4664                            let inner = Arc::clone(&self.0);
4665                            let fut = async move { <T as NodeService>::rename_data(&inner, request).await };
4666                            Box::pin(fut)
4667                        }
4668                    }
4669                    let accept_compression_encodings = self.accept_compression_encodings;
4670                    let send_compression_encodings = self.send_compression_encodings;
4671                    let max_decoding_message_size = self.max_decoding_message_size;
4672                    let max_encoding_message_size = self.max_encoding_message_size;
4673                    let inner = self.inner.clone();
4674                    let fut = async move {
4675                        let method = RenameDataSvc(inner);
4676                        let codec = tonic_prost::ProstCodec::default();
4677                        let mut grpc = tonic::server::Grpc::new(codec)
4678                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4679                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4680                        let res = grpc.unary(method, req).await;
4681                        Ok(res)
4682                    };
4683                    Box::pin(fut)
4684                }
4685                "/node_service.NodeService/RenameDataAtIncarnation" => {
4686                    #[allow(non_camel_case_types)]
4687                    struct RenameDataAtIncarnationSvc<T: NodeService>(pub Arc<T>);
4688                    impl<T: NodeService> tonic::server::UnaryService<super::RenameDataRequest> for RenameDataAtIncarnationSvc<T> {
4689                        type Response = super::RenameDataResponse;
4690                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4691                        fn call(&mut self, request: tonic::Request<super::RenameDataRequest>) -> Self::Future {
4692                            let inner = Arc::clone(&self.0);
4693                            let fut = async move { <T as NodeService>::rename_data_at_incarnation(&inner, request).await };
4694                            Box::pin(fut)
4695                        }
4696                    }
4697                    let accept_compression_encodings = self.accept_compression_encodings;
4698                    let send_compression_encodings = self.send_compression_encodings;
4699                    let max_decoding_message_size = self.max_decoding_message_size;
4700                    let max_encoding_message_size = self.max_encoding_message_size;
4701                    let inner = self.inner.clone();
4702                    let fut = async move {
4703                        let method = RenameDataAtIncarnationSvc(inner);
4704                        let codec = tonic_prost::ProstCodec::default();
4705                        let mut grpc = tonic::server::Grpc::new(codec)
4706                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4707                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4708                        let res = grpc.unary(method, req).await;
4709                        Ok(res)
4710                    };
4711                    Box::pin(fut)
4712                }
4713                "/node_service.NodeService/MakeVolumes" => {
4714                    #[allow(non_camel_case_types)]
4715                    struct MakeVolumesSvc<T: NodeService>(pub Arc<T>);
4716                    impl<T: NodeService> tonic::server::UnaryService<super::MakeVolumesRequest> for MakeVolumesSvc<T> {
4717                        type Response = super::MakeVolumesResponse;
4718                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4719                        fn call(&mut self, request: tonic::Request<super::MakeVolumesRequest>) -> Self::Future {
4720                            let inner = Arc::clone(&self.0);
4721                            let fut = async move { <T as NodeService>::make_volumes(&inner, request).await };
4722                            Box::pin(fut)
4723                        }
4724                    }
4725                    let accept_compression_encodings = self.accept_compression_encodings;
4726                    let send_compression_encodings = self.send_compression_encodings;
4727                    let max_decoding_message_size = self.max_decoding_message_size;
4728                    let max_encoding_message_size = self.max_encoding_message_size;
4729                    let inner = self.inner.clone();
4730                    let fut = async move {
4731                        let method = MakeVolumesSvc(inner);
4732                        let codec = tonic_prost::ProstCodec::default();
4733                        let mut grpc = tonic::server::Grpc::new(codec)
4734                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4735                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4736                        let res = grpc.unary(method, req).await;
4737                        Ok(res)
4738                    };
4739                    Box::pin(fut)
4740                }
4741                "/node_service.NodeService/MakeVolume" => {
4742                    #[allow(non_camel_case_types)]
4743                    struct MakeVolumeSvc<T: NodeService>(pub Arc<T>);
4744                    impl<T: NodeService> tonic::server::UnaryService<super::MakeVolumeRequest> for MakeVolumeSvc<T> {
4745                        type Response = super::MakeVolumeResponse;
4746                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4747                        fn call(&mut self, request: tonic::Request<super::MakeVolumeRequest>) -> Self::Future {
4748                            let inner = Arc::clone(&self.0);
4749                            let fut = async move { <T as NodeService>::make_volume(&inner, request).await };
4750                            Box::pin(fut)
4751                        }
4752                    }
4753                    let accept_compression_encodings = self.accept_compression_encodings;
4754                    let send_compression_encodings = self.send_compression_encodings;
4755                    let max_decoding_message_size = self.max_decoding_message_size;
4756                    let max_encoding_message_size = self.max_encoding_message_size;
4757                    let inner = self.inner.clone();
4758                    let fut = async move {
4759                        let method = MakeVolumeSvc(inner);
4760                        let codec = tonic_prost::ProstCodec::default();
4761                        let mut grpc = tonic::server::Grpc::new(codec)
4762                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4763                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4764                        let res = grpc.unary(method, req).await;
4765                        Ok(res)
4766                    };
4767                    Box::pin(fut)
4768                }
4769                "/node_service.NodeService/ListVolumes" => {
4770                    #[allow(non_camel_case_types)]
4771                    struct ListVolumesSvc<T: NodeService>(pub Arc<T>);
4772                    impl<T: NodeService> tonic::server::UnaryService<super::ListVolumesRequest> for ListVolumesSvc<T> {
4773                        type Response = super::ListVolumesResponse;
4774                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4775                        fn call(&mut self, request: tonic::Request<super::ListVolumesRequest>) -> Self::Future {
4776                            let inner = Arc::clone(&self.0);
4777                            let fut = async move { <T as NodeService>::list_volumes(&inner, request).await };
4778                            Box::pin(fut)
4779                        }
4780                    }
4781                    let accept_compression_encodings = self.accept_compression_encodings;
4782                    let send_compression_encodings = self.send_compression_encodings;
4783                    let max_decoding_message_size = self.max_decoding_message_size;
4784                    let max_encoding_message_size = self.max_encoding_message_size;
4785                    let inner = self.inner.clone();
4786                    let fut = async move {
4787                        let method = ListVolumesSvc(inner);
4788                        let codec = tonic_prost::ProstCodec::default();
4789                        let mut grpc = tonic::server::Grpc::new(codec)
4790                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4791                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4792                        let res = grpc.unary(method, req).await;
4793                        Ok(res)
4794                    };
4795                    Box::pin(fut)
4796                }
4797                "/node_service.NodeService/StatVolume" => {
4798                    #[allow(non_camel_case_types)]
4799                    struct StatVolumeSvc<T: NodeService>(pub Arc<T>);
4800                    impl<T: NodeService> tonic::server::UnaryService<super::StatVolumeRequest> for StatVolumeSvc<T> {
4801                        type Response = super::StatVolumeResponse;
4802                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4803                        fn call(&mut self, request: tonic::Request<super::StatVolumeRequest>) -> Self::Future {
4804                            let inner = Arc::clone(&self.0);
4805                            let fut = async move { <T as NodeService>::stat_volume(&inner, request).await };
4806                            Box::pin(fut)
4807                        }
4808                    }
4809                    let accept_compression_encodings = self.accept_compression_encodings;
4810                    let send_compression_encodings = self.send_compression_encodings;
4811                    let max_decoding_message_size = self.max_decoding_message_size;
4812                    let max_encoding_message_size = self.max_encoding_message_size;
4813                    let inner = self.inner.clone();
4814                    let fut = async move {
4815                        let method = StatVolumeSvc(inner);
4816                        let codec = tonic_prost::ProstCodec::default();
4817                        let mut grpc = tonic::server::Grpc::new(codec)
4818                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4819                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4820                        let res = grpc.unary(method, req).await;
4821                        Ok(res)
4822                    };
4823                    Box::pin(fut)
4824                }
4825                "/node_service.NodeService/DeletePaths" => {
4826                    #[allow(non_camel_case_types)]
4827                    struct DeletePathsSvc<T: NodeService>(pub Arc<T>);
4828                    impl<T: NodeService> tonic::server::UnaryService<super::DeletePathsRequest> for DeletePathsSvc<T> {
4829                        type Response = super::DeletePathsResponse;
4830                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4831                        fn call(&mut self, request: tonic::Request<super::DeletePathsRequest>) -> Self::Future {
4832                            let inner = Arc::clone(&self.0);
4833                            let fut = async move { <T as NodeService>::delete_paths(&inner, request).await };
4834                            Box::pin(fut)
4835                        }
4836                    }
4837                    let accept_compression_encodings = self.accept_compression_encodings;
4838                    let send_compression_encodings = self.send_compression_encodings;
4839                    let max_decoding_message_size = self.max_decoding_message_size;
4840                    let max_encoding_message_size = self.max_encoding_message_size;
4841                    let inner = self.inner.clone();
4842                    let fut = async move {
4843                        let method = DeletePathsSvc(inner);
4844                        let codec = tonic_prost::ProstCodec::default();
4845                        let mut grpc = tonic::server::Grpc::new(codec)
4846                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4847                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4848                        let res = grpc.unary(method, req).await;
4849                        Ok(res)
4850                    };
4851                    Box::pin(fut)
4852                }
4853                "/node_service.NodeService/UpdateMetadata" => {
4854                    #[allow(non_camel_case_types)]
4855                    struct UpdateMetadataSvc<T: NodeService>(pub Arc<T>);
4856                    impl<T: NodeService> tonic::server::UnaryService<super::UpdateMetadataRequest> for UpdateMetadataSvc<T> {
4857                        type Response = super::UpdateMetadataResponse;
4858                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4859                        fn call(&mut self, request: tonic::Request<super::UpdateMetadataRequest>) -> Self::Future {
4860                            let inner = Arc::clone(&self.0);
4861                            let fut = async move { <T as NodeService>::update_metadata(&inner, request).await };
4862                            Box::pin(fut)
4863                        }
4864                    }
4865                    let accept_compression_encodings = self.accept_compression_encodings;
4866                    let send_compression_encodings = self.send_compression_encodings;
4867                    let max_decoding_message_size = self.max_decoding_message_size;
4868                    let max_encoding_message_size = self.max_encoding_message_size;
4869                    let inner = self.inner.clone();
4870                    let fut = async move {
4871                        let method = UpdateMetadataSvc(inner);
4872                        let codec = tonic_prost::ProstCodec::default();
4873                        let mut grpc = tonic::server::Grpc::new(codec)
4874                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4875                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4876                        let res = grpc.unary(method, req).await;
4877                        Ok(res)
4878                    };
4879                    Box::pin(fut)
4880                }
4881                "/node_service.NodeService/ReadMetadata" => {
4882                    #[allow(non_camel_case_types)]
4883                    struct ReadMetadataSvc<T: NodeService>(pub Arc<T>);
4884                    impl<T: NodeService> tonic::server::UnaryService<super::ReadMetadataRequest> for ReadMetadataSvc<T> {
4885                        type Response = super::ReadMetadataResponse;
4886                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4887                        fn call(&mut self, request: tonic::Request<super::ReadMetadataRequest>) -> Self::Future {
4888                            let inner = Arc::clone(&self.0);
4889                            let fut = async move { <T as NodeService>::read_metadata(&inner, request).await };
4890                            Box::pin(fut)
4891                        }
4892                    }
4893                    let accept_compression_encodings = self.accept_compression_encodings;
4894                    let send_compression_encodings = self.send_compression_encodings;
4895                    let max_decoding_message_size = self.max_decoding_message_size;
4896                    let max_encoding_message_size = self.max_encoding_message_size;
4897                    let inner = self.inner.clone();
4898                    let fut = async move {
4899                        let method = ReadMetadataSvc(inner);
4900                        let codec = tonic_prost::ProstCodec::default();
4901                        let mut grpc = tonic::server::Grpc::new(codec)
4902                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4903                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4904                        let res = grpc.unary(method, req).await;
4905                        Ok(res)
4906                    };
4907                    Box::pin(fut)
4908                }
4909                "/node_service.NodeService/WriteMetadata" => {
4910                    #[allow(non_camel_case_types)]
4911                    struct WriteMetadataSvc<T: NodeService>(pub Arc<T>);
4912                    impl<T: NodeService> tonic::server::UnaryService<super::WriteMetadataRequest> for WriteMetadataSvc<T> {
4913                        type Response = super::WriteMetadataResponse;
4914                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4915                        fn call(&mut self, request: tonic::Request<super::WriteMetadataRequest>) -> Self::Future {
4916                            let inner = Arc::clone(&self.0);
4917                            let fut = async move { <T as NodeService>::write_metadata(&inner, request).await };
4918                            Box::pin(fut)
4919                        }
4920                    }
4921                    let accept_compression_encodings = self.accept_compression_encodings;
4922                    let send_compression_encodings = self.send_compression_encodings;
4923                    let max_decoding_message_size = self.max_decoding_message_size;
4924                    let max_encoding_message_size = self.max_encoding_message_size;
4925                    let inner = self.inner.clone();
4926                    let fut = async move {
4927                        let method = WriteMetadataSvc(inner);
4928                        let codec = tonic_prost::ProstCodec::default();
4929                        let mut grpc = tonic::server::Grpc::new(codec)
4930                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4931                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4932                        let res = grpc.unary(method, req).await;
4933                        Ok(res)
4934                    };
4935                    Box::pin(fut)
4936                }
4937                "/node_service.NodeService/WriteMetadataAtIncarnation" => {
4938                    #[allow(non_camel_case_types)]
4939                    struct WriteMetadataAtIncarnationSvc<T: NodeService>(pub Arc<T>);
4940                    impl<T: NodeService> tonic::server::UnaryService<super::WriteMetadataRequest> for WriteMetadataAtIncarnationSvc<T> {
4941                        type Response = super::WriteMetadataResponse;
4942                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4943                        fn call(&mut self, request: tonic::Request<super::WriteMetadataRequest>) -> Self::Future {
4944                            let inner = Arc::clone(&self.0);
4945                            let fut = async move { <T as NodeService>::write_metadata_at_incarnation(&inner, request).await };
4946                            Box::pin(fut)
4947                        }
4948                    }
4949                    let accept_compression_encodings = self.accept_compression_encodings;
4950                    let send_compression_encodings = self.send_compression_encodings;
4951                    let max_decoding_message_size = self.max_decoding_message_size;
4952                    let max_encoding_message_size = self.max_encoding_message_size;
4953                    let inner = self.inner.clone();
4954                    let fut = async move {
4955                        let method = WriteMetadataAtIncarnationSvc(inner);
4956                        let codec = tonic_prost::ProstCodec::default();
4957                        let mut grpc = tonic::server::Grpc::new(codec)
4958                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4959                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4960                        let res = grpc.unary(method, req).await;
4961                        Ok(res)
4962                    };
4963                    Box::pin(fut)
4964                }
4965                "/node_service.NodeService/ReadVersion" => {
4966                    #[allow(non_camel_case_types)]
4967                    struct ReadVersionSvc<T: NodeService>(pub Arc<T>);
4968                    impl<T: NodeService> tonic::server::UnaryService<super::ReadVersionRequest> for ReadVersionSvc<T> {
4969                        type Response = super::ReadVersionResponse;
4970                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4971                        fn call(&mut self, request: tonic::Request<super::ReadVersionRequest>) -> Self::Future {
4972                            let inner = Arc::clone(&self.0);
4973                            let fut = async move { <T as NodeService>::read_version(&inner, request).await };
4974                            Box::pin(fut)
4975                        }
4976                    }
4977                    let accept_compression_encodings = self.accept_compression_encodings;
4978                    let send_compression_encodings = self.send_compression_encodings;
4979                    let max_decoding_message_size = self.max_decoding_message_size;
4980                    let max_encoding_message_size = self.max_encoding_message_size;
4981                    let inner = self.inner.clone();
4982                    let fut = async move {
4983                        let method = ReadVersionSvc(inner);
4984                        let codec = tonic_prost::ProstCodec::default();
4985                        let mut grpc = tonic::server::Grpc::new(codec)
4986                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
4987                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
4988                        let res = grpc.unary(method, req).await;
4989                        Ok(res)
4990                    };
4991                    Box::pin(fut)
4992                }
4993                "/node_service.NodeService/BatchReadVersion" => {
4994                    #[allow(non_camel_case_types)]
4995                    struct BatchReadVersionSvc<T: NodeService>(pub Arc<T>);
4996                    impl<T: NodeService> tonic::server::UnaryService<super::BatchReadVersionRequest> for BatchReadVersionSvc<T> {
4997                        type Response = super::BatchReadVersionResponse;
4998                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
4999                        fn call(&mut self, request: tonic::Request<super::BatchReadVersionRequest>) -> Self::Future {
5000                            let inner = Arc::clone(&self.0);
5001                            let fut = async move { <T as NodeService>::batch_read_version(&inner, request).await };
5002                            Box::pin(fut)
5003                        }
5004                    }
5005                    let accept_compression_encodings = self.accept_compression_encodings;
5006                    let send_compression_encodings = self.send_compression_encodings;
5007                    let max_decoding_message_size = self.max_decoding_message_size;
5008                    let max_encoding_message_size = self.max_encoding_message_size;
5009                    let inner = self.inner.clone();
5010                    let fut = async move {
5011                        let method = BatchReadVersionSvc(inner);
5012                        let codec = tonic_prost::ProstCodec::default();
5013                        let mut grpc = tonic::server::Grpc::new(codec)
5014                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5015                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5016                        let res = grpc.unary(method, req).await;
5017                        Ok(res)
5018                    };
5019                    Box::pin(fut)
5020                }
5021                "/node_service.NodeService/ReadXL" => {
5022                    #[allow(non_camel_case_types)]
5023                    struct ReadXLSvc<T: NodeService>(pub Arc<T>);
5024                    impl<T: NodeService> tonic::server::UnaryService<super::ReadXlRequest> for ReadXLSvc<T> {
5025                        type Response = super::ReadXlResponse;
5026                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5027                        fn call(&mut self, request: tonic::Request<super::ReadXlRequest>) -> Self::Future {
5028                            let inner = Arc::clone(&self.0);
5029                            let fut = async move { <T as NodeService>::read_xl(&inner, request).await };
5030                            Box::pin(fut)
5031                        }
5032                    }
5033                    let accept_compression_encodings = self.accept_compression_encodings;
5034                    let send_compression_encodings = self.send_compression_encodings;
5035                    let max_decoding_message_size = self.max_decoding_message_size;
5036                    let max_encoding_message_size = self.max_encoding_message_size;
5037                    let inner = self.inner.clone();
5038                    let fut = async move {
5039                        let method = ReadXLSvc(inner);
5040                        let codec = tonic_prost::ProstCodec::default();
5041                        let mut grpc = tonic::server::Grpc::new(codec)
5042                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5043                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5044                        let res = grpc.unary(method, req).await;
5045                        Ok(res)
5046                    };
5047                    Box::pin(fut)
5048                }
5049                "/node_service.NodeService/DeleteVersion" => {
5050                    #[allow(non_camel_case_types)]
5051                    struct DeleteVersionSvc<T: NodeService>(pub Arc<T>);
5052                    impl<T: NodeService> tonic::server::UnaryService<super::DeleteVersionRequest> for DeleteVersionSvc<T> {
5053                        type Response = super::DeleteVersionResponse;
5054                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5055                        fn call(&mut self, request: tonic::Request<super::DeleteVersionRequest>) -> Self::Future {
5056                            let inner = Arc::clone(&self.0);
5057                            let fut = async move { <T as NodeService>::delete_version(&inner, request).await };
5058                            Box::pin(fut)
5059                        }
5060                    }
5061                    let accept_compression_encodings = self.accept_compression_encodings;
5062                    let send_compression_encodings = self.send_compression_encodings;
5063                    let max_decoding_message_size = self.max_decoding_message_size;
5064                    let max_encoding_message_size = self.max_encoding_message_size;
5065                    let inner = self.inner.clone();
5066                    let fut = async move {
5067                        let method = DeleteVersionSvc(inner);
5068                        let codec = tonic_prost::ProstCodec::default();
5069                        let mut grpc = tonic::server::Grpc::new(codec)
5070                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5071                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5072                        let res = grpc.unary(method, req).await;
5073                        Ok(res)
5074                    };
5075                    Box::pin(fut)
5076                }
5077                "/node_service.NodeService/DeleteVersionAtIncarnation" => {
5078                    #[allow(non_camel_case_types)]
5079                    struct DeleteVersionAtIncarnationSvc<T: NodeService>(pub Arc<T>);
5080                    impl<T: NodeService> tonic::server::UnaryService<super::DeleteVersionRequest> for DeleteVersionAtIncarnationSvc<T> {
5081                        type Response = super::DeleteVersionResponse;
5082                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5083                        fn call(&mut self, request: tonic::Request<super::DeleteVersionRequest>) -> Self::Future {
5084                            let inner = Arc::clone(&self.0);
5085                            let fut = async move { <T as NodeService>::delete_version_at_incarnation(&inner, request).await };
5086                            Box::pin(fut)
5087                        }
5088                    }
5089                    let accept_compression_encodings = self.accept_compression_encodings;
5090                    let send_compression_encodings = self.send_compression_encodings;
5091                    let max_decoding_message_size = self.max_decoding_message_size;
5092                    let max_encoding_message_size = self.max_encoding_message_size;
5093                    let inner = self.inner.clone();
5094                    let fut = async move {
5095                        let method = DeleteVersionAtIncarnationSvc(inner);
5096                        let codec = tonic_prost::ProstCodec::default();
5097                        let mut grpc = tonic::server::Grpc::new(codec)
5098                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5099                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5100                        let res = grpc.unary(method, req).await;
5101                        Ok(res)
5102                    };
5103                    Box::pin(fut)
5104                }
5105                "/node_service.NodeService/DeleteRetiredMarker" => {
5106                    #[allow(non_camel_case_types)]
5107                    struct DeleteRetiredMarkerSvc<T: NodeService>(pub Arc<T>);
5108                    impl<T: NodeService> tonic::server::UnaryService<super::DeleteVersionRequest> for DeleteRetiredMarkerSvc<T> {
5109                        type Response = super::DeleteVersionResponse;
5110                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5111                        fn call(&mut self, request: tonic::Request<super::DeleteVersionRequest>) -> Self::Future {
5112                            let inner = Arc::clone(&self.0);
5113                            let fut = async move { <T as NodeService>::delete_retired_marker(&inner, request).await };
5114                            Box::pin(fut)
5115                        }
5116                    }
5117                    let accept_compression_encodings = self.accept_compression_encodings;
5118                    let send_compression_encodings = self.send_compression_encodings;
5119                    let max_decoding_message_size = self.max_decoding_message_size;
5120                    let max_encoding_message_size = self.max_encoding_message_size;
5121                    let inner = self.inner.clone();
5122                    let fut = async move {
5123                        let method = DeleteRetiredMarkerSvc(inner);
5124                        let codec = tonic_prost::ProstCodec::default();
5125                        let mut grpc = tonic::server::Grpc::new(codec)
5126                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5127                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5128                        let res = grpc.unary(method, req).await;
5129                        Ok(res)
5130                    };
5131                    Box::pin(fut)
5132                }
5133                "/node_service.NodeService/DeleteVersions" => {
5134                    #[allow(non_camel_case_types)]
5135                    struct DeleteVersionsSvc<T: NodeService>(pub Arc<T>);
5136                    impl<T: NodeService> tonic::server::UnaryService<super::DeleteVersionsRequest> for DeleteVersionsSvc<T> {
5137                        type Response = super::DeleteVersionsResponse;
5138                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5139                        fn call(&mut self, request: tonic::Request<super::DeleteVersionsRequest>) -> Self::Future {
5140                            let inner = Arc::clone(&self.0);
5141                            let fut = async move { <T as NodeService>::delete_versions(&inner, request).await };
5142                            Box::pin(fut)
5143                        }
5144                    }
5145                    let accept_compression_encodings = self.accept_compression_encodings;
5146                    let send_compression_encodings = self.send_compression_encodings;
5147                    let max_decoding_message_size = self.max_decoding_message_size;
5148                    let max_encoding_message_size = self.max_encoding_message_size;
5149                    let inner = self.inner.clone();
5150                    let fut = async move {
5151                        let method = DeleteVersionsSvc(inner);
5152                        let codec = tonic_prost::ProstCodec::default();
5153                        let mut grpc = tonic::server::Grpc::new(codec)
5154                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5155                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5156                        let res = grpc.unary(method, req).await;
5157                        Ok(res)
5158                    };
5159                    Box::pin(fut)
5160                }
5161                "/node_service.NodeService/ReadMultiple" => {
5162                    #[allow(non_camel_case_types)]
5163                    struct ReadMultipleSvc<T: NodeService>(pub Arc<T>);
5164                    impl<T: NodeService> tonic::server::UnaryService<super::ReadMultipleRequest> for ReadMultipleSvc<T> {
5165                        type Response = super::ReadMultipleResponse;
5166                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5167                        fn call(&mut self, request: tonic::Request<super::ReadMultipleRequest>) -> Self::Future {
5168                            let inner = Arc::clone(&self.0);
5169                            let fut = async move { <T as NodeService>::read_multiple(&inner, request).await };
5170                            Box::pin(fut)
5171                        }
5172                    }
5173                    let accept_compression_encodings = self.accept_compression_encodings;
5174                    let send_compression_encodings = self.send_compression_encodings;
5175                    let max_decoding_message_size = self.max_decoding_message_size;
5176                    let max_encoding_message_size = self.max_encoding_message_size;
5177                    let inner = self.inner.clone();
5178                    let fut = async move {
5179                        let method = ReadMultipleSvc(inner);
5180                        let codec = tonic_prost::ProstCodec::default();
5181                        let mut grpc = tonic::server::Grpc::new(codec)
5182                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5183                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5184                        let res = grpc.unary(method, req).await;
5185                        Ok(res)
5186                    };
5187                    Box::pin(fut)
5188                }
5189                "/node_service.NodeService/DeleteVolume" => {
5190                    #[allow(non_camel_case_types)]
5191                    struct DeleteVolumeSvc<T: NodeService>(pub Arc<T>);
5192                    impl<T: NodeService> tonic::server::UnaryService<super::DeleteVolumeRequest> for DeleteVolumeSvc<T> {
5193                        type Response = super::DeleteVolumeResponse;
5194                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5195                        fn call(&mut self, request: tonic::Request<super::DeleteVolumeRequest>) -> Self::Future {
5196                            let inner = Arc::clone(&self.0);
5197                            let fut = async move { <T as NodeService>::delete_volume(&inner, request).await };
5198                            Box::pin(fut)
5199                        }
5200                    }
5201                    let accept_compression_encodings = self.accept_compression_encodings;
5202                    let send_compression_encodings = self.send_compression_encodings;
5203                    let max_decoding_message_size = self.max_decoding_message_size;
5204                    let max_encoding_message_size = self.max_encoding_message_size;
5205                    let inner = self.inner.clone();
5206                    let fut = async move {
5207                        let method = DeleteVolumeSvc(inner);
5208                        let codec = tonic_prost::ProstCodec::default();
5209                        let mut grpc = tonic::server::Grpc::new(codec)
5210                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5211                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5212                        let res = grpc.unary(method, req).await;
5213                        Ok(res)
5214                    };
5215                    Box::pin(fut)
5216                }
5217                "/node_service.NodeService/DiskInfo" => {
5218                    #[allow(non_camel_case_types)]
5219                    struct DiskInfoSvc<T: NodeService>(pub Arc<T>);
5220                    impl<T: NodeService> tonic::server::UnaryService<super::DiskInfoRequest> for DiskInfoSvc<T> {
5221                        type Response = super::DiskInfoResponse;
5222                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5223                        fn call(&mut self, request: tonic::Request<super::DiskInfoRequest>) -> Self::Future {
5224                            let inner = Arc::clone(&self.0);
5225                            let fut = async move { <T as NodeService>::disk_info(&inner, request).await };
5226                            Box::pin(fut)
5227                        }
5228                    }
5229                    let accept_compression_encodings = self.accept_compression_encodings;
5230                    let send_compression_encodings = self.send_compression_encodings;
5231                    let max_decoding_message_size = self.max_decoding_message_size;
5232                    let max_encoding_message_size = self.max_encoding_message_size;
5233                    let inner = self.inner.clone();
5234                    let fut = async move {
5235                        let method = DiskInfoSvc(inner);
5236                        let codec = tonic_prost::ProstCodec::default();
5237                        let mut grpc = tonic::server::Grpc::new(codec)
5238                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5239                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5240                        let res = grpc.unary(method, req).await;
5241                        Ok(res)
5242                    };
5243                    Box::pin(fut)
5244                }
5245                "/node_service.NodeService/Lock" => {
5246                    #[allow(non_camel_case_types)]
5247                    struct LockSvc<T: NodeService>(pub Arc<T>);
5248                    impl<T: NodeService> tonic::server::UnaryService<super::GenerallyLockRequest> for LockSvc<T> {
5249                        type Response = super::GenerallyLockResponse;
5250                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5251                        fn call(&mut self, request: tonic::Request<super::GenerallyLockRequest>) -> Self::Future {
5252                            let inner = Arc::clone(&self.0);
5253                            let fut = async move { <T as NodeService>::lock(&inner, request).await };
5254                            Box::pin(fut)
5255                        }
5256                    }
5257                    let accept_compression_encodings = self.accept_compression_encodings;
5258                    let send_compression_encodings = self.send_compression_encodings;
5259                    let max_decoding_message_size = self.max_decoding_message_size;
5260                    let max_encoding_message_size = self.max_encoding_message_size;
5261                    let inner = self.inner.clone();
5262                    let fut = async move {
5263                        let method = LockSvc(inner);
5264                        let codec = tonic_prost::ProstCodec::default();
5265                        let mut grpc = tonic::server::Grpc::new(codec)
5266                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5267                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5268                        let res = grpc.unary(method, req).await;
5269                        Ok(res)
5270                    };
5271                    Box::pin(fut)
5272                }
5273                "/node_service.NodeService/UnLock" => {
5274                    #[allow(non_camel_case_types)]
5275                    struct UnLockSvc<T: NodeService>(pub Arc<T>);
5276                    impl<T: NodeService> tonic::server::UnaryService<super::GenerallyLockRequest> for UnLockSvc<T> {
5277                        type Response = super::GenerallyLockResponse;
5278                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5279                        fn call(&mut self, request: tonic::Request<super::GenerallyLockRequest>) -> Self::Future {
5280                            let inner = Arc::clone(&self.0);
5281                            let fut = async move { <T as NodeService>::un_lock(&inner, request).await };
5282                            Box::pin(fut)
5283                        }
5284                    }
5285                    let accept_compression_encodings = self.accept_compression_encodings;
5286                    let send_compression_encodings = self.send_compression_encodings;
5287                    let max_decoding_message_size = self.max_decoding_message_size;
5288                    let max_encoding_message_size = self.max_encoding_message_size;
5289                    let inner = self.inner.clone();
5290                    let fut = async move {
5291                        let method = UnLockSvc(inner);
5292                        let codec = tonic_prost::ProstCodec::default();
5293                        let mut grpc = tonic::server::Grpc::new(codec)
5294                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5295                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5296                        let res = grpc.unary(method, req).await;
5297                        Ok(res)
5298                    };
5299                    Box::pin(fut)
5300                }
5301                "/node_service.NodeService/ForceUnLock" => {
5302                    #[allow(non_camel_case_types)]
5303                    struct ForceUnLockSvc<T: NodeService>(pub Arc<T>);
5304                    impl<T: NodeService> tonic::server::UnaryService<super::GenerallyLockRequest> for ForceUnLockSvc<T> {
5305                        type Response = super::GenerallyLockResponse;
5306                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5307                        fn call(&mut self, request: tonic::Request<super::GenerallyLockRequest>) -> Self::Future {
5308                            let inner = Arc::clone(&self.0);
5309                            let fut = async move { <T as NodeService>::force_un_lock(&inner, request).await };
5310                            Box::pin(fut)
5311                        }
5312                    }
5313                    let accept_compression_encodings = self.accept_compression_encodings;
5314                    let send_compression_encodings = self.send_compression_encodings;
5315                    let max_decoding_message_size = self.max_decoding_message_size;
5316                    let max_encoding_message_size = self.max_encoding_message_size;
5317                    let inner = self.inner.clone();
5318                    let fut = async move {
5319                        let method = ForceUnLockSvc(inner);
5320                        let codec = tonic_prost::ProstCodec::default();
5321                        let mut grpc = tonic::server::Grpc::new(codec)
5322                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5323                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5324                        let res = grpc.unary(method, req).await;
5325                        Ok(res)
5326                    };
5327                    Box::pin(fut)
5328                }
5329                "/node_service.NodeService/Refresh" => {
5330                    #[allow(non_camel_case_types)]
5331                    struct RefreshSvc<T: NodeService>(pub Arc<T>);
5332                    impl<T: NodeService> tonic::server::UnaryService<super::GenerallyLockRequest> for RefreshSvc<T> {
5333                        type Response = super::GenerallyLockResponse;
5334                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5335                        fn call(&mut self, request: tonic::Request<super::GenerallyLockRequest>) -> Self::Future {
5336                            let inner = Arc::clone(&self.0);
5337                            let fut = async move { <T as NodeService>::refresh(&inner, request).await };
5338                            Box::pin(fut)
5339                        }
5340                    }
5341                    let accept_compression_encodings = self.accept_compression_encodings;
5342                    let send_compression_encodings = self.send_compression_encodings;
5343                    let max_decoding_message_size = self.max_decoding_message_size;
5344                    let max_encoding_message_size = self.max_encoding_message_size;
5345                    let inner = self.inner.clone();
5346                    let fut = async move {
5347                        let method = RefreshSvc(inner);
5348                        let codec = tonic_prost::ProstCodec::default();
5349                        let mut grpc = tonic::server::Grpc::new(codec)
5350                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5351                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5352                        let res = grpc.unary(method, req).await;
5353                        Ok(res)
5354                    };
5355                    Box::pin(fut)
5356                }
5357                "/node_service.NodeService/LockBatch" => {
5358                    #[allow(non_camel_case_types)]
5359                    struct LockBatchSvc<T: NodeService>(pub Arc<T>);
5360                    impl<T: NodeService> tonic::server::UnaryService<super::BatchGenerallyLockRequest> for LockBatchSvc<T> {
5361                        type Response = super::BatchGenerallyLockResponse;
5362                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5363                        fn call(&mut self, request: tonic::Request<super::BatchGenerallyLockRequest>) -> Self::Future {
5364                            let inner = Arc::clone(&self.0);
5365                            let fut = async move { <T as NodeService>::lock_batch(&inner, request).await };
5366                            Box::pin(fut)
5367                        }
5368                    }
5369                    let accept_compression_encodings = self.accept_compression_encodings;
5370                    let send_compression_encodings = self.send_compression_encodings;
5371                    let max_decoding_message_size = self.max_decoding_message_size;
5372                    let max_encoding_message_size = self.max_encoding_message_size;
5373                    let inner = self.inner.clone();
5374                    let fut = async move {
5375                        let method = LockBatchSvc(inner);
5376                        let codec = tonic_prost::ProstCodec::default();
5377                        let mut grpc = tonic::server::Grpc::new(codec)
5378                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5379                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5380                        let res = grpc.unary(method, req).await;
5381                        Ok(res)
5382                    };
5383                    Box::pin(fut)
5384                }
5385                "/node_service.NodeService/UnLockBatch" => {
5386                    #[allow(non_camel_case_types)]
5387                    struct UnLockBatchSvc<T: NodeService>(pub Arc<T>);
5388                    impl<T: NodeService> tonic::server::UnaryService<super::BatchGenerallyLockRequest> for UnLockBatchSvc<T> {
5389                        type Response = super::BatchGenerallyLockResponse;
5390                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5391                        fn call(&mut self, request: tonic::Request<super::BatchGenerallyLockRequest>) -> Self::Future {
5392                            let inner = Arc::clone(&self.0);
5393                            let fut = async move { <T as NodeService>::un_lock_batch(&inner, request).await };
5394                            Box::pin(fut)
5395                        }
5396                    }
5397                    let accept_compression_encodings = self.accept_compression_encodings;
5398                    let send_compression_encodings = self.send_compression_encodings;
5399                    let max_decoding_message_size = self.max_decoding_message_size;
5400                    let max_encoding_message_size = self.max_encoding_message_size;
5401                    let inner = self.inner.clone();
5402                    let fut = async move {
5403                        let method = UnLockBatchSvc(inner);
5404                        let codec = tonic_prost::ProstCodec::default();
5405                        let mut grpc = tonic::server::Grpc::new(codec)
5406                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5407                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5408                        let res = grpc.unary(method, req).await;
5409                        Ok(res)
5410                    };
5411                    Box::pin(fut)
5412                }
5413                "/node_service.NodeService/LocalStorageInfo" => {
5414                    #[allow(non_camel_case_types)]
5415                    struct LocalStorageInfoSvc<T: NodeService>(pub Arc<T>);
5416                    impl<T: NodeService> tonic::server::UnaryService<super::LocalStorageInfoRequest> for LocalStorageInfoSvc<T> {
5417                        type Response = super::LocalStorageInfoResponse;
5418                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5419                        fn call(&mut self, request: tonic::Request<super::LocalStorageInfoRequest>) -> Self::Future {
5420                            let inner = Arc::clone(&self.0);
5421                            let fut = async move { <T as NodeService>::local_storage_info(&inner, request).await };
5422                            Box::pin(fut)
5423                        }
5424                    }
5425                    let accept_compression_encodings = self.accept_compression_encodings;
5426                    let send_compression_encodings = self.send_compression_encodings;
5427                    let max_decoding_message_size = self.max_decoding_message_size;
5428                    let max_encoding_message_size = self.max_encoding_message_size;
5429                    let inner = self.inner.clone();
5430                    let fut = async move {
5431                        let method = LocalStorageInfoSvc(inner);
5432                        let codec = tonic_prost::ProstCodec::default();
5433                        let mut grpc = tonic::server::Grpc::new(codec)
5434                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5435                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5436                        let res = grpc.unary(method, req).await;
5437                        Ok(res)
5438                    };
5439                    Box::pin(fut)
5440                }
5441                "/node_service.NodeService/ServerInfo" => {
5442                    #[allow(non_camel_case_types)]
5443                    struct ServerInfoSvc<T: NodeService>(pub Arc<T>);
5444                    impl<T: NodeService> tonic::server::UnaryService<super::ServerInfoRequest> for ServerInfoSvc<T> {
5445                        type Response = super::ServerInfoResponse;
5446                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5447                        fn call(&mut self, request: tonic::Request<super::ServerInfoRequest>) -> Self::Future {
5448                            let inner = Arc::clone(&self.0);
5449                            let fut = async move { <T as NodeService>::server_info(&inner, request).await };
5450                            Box::pin(fut)
5451                        }
5452                    }
5453                    let accept_compression_encodings = self.accept_compression_encodings;
5454                    let send_compression_encodings = self.send_compression_encodings;
5455                    let max_decoding_message_size = self.max_decoding_message_size;
5456                    let max_encoding_message_size = self.max_encoding_message_size;
5457                    let inner = self.inner.clone();
5458                    let fut = async move {
5459                        let method = ServerInfoSvc(inner);
5460                        let codec = tonic_prost::ProstCodec::default();
5461                        let mut grpc = tonic::server::Grpc::new(codec)
5462                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5463                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5464                        let res = grpc.unary(method, req).await;
5465                        Ok(res)
5466                    };
5467                    Box::pin(fut)
5468                }
5469                "/node_service.NodeService/GetCpus" => {
5470                    #[allow(non_camel_case_types)]
5471                    struct GetCpusSvc<T: NodeService>(pub Arc<T>);
5472                    impl<T: NodeService> tonic::server::UnaryService<super::GetCpusRequest> for GetCpusSvc<T> {
5473                        type Response = super::GetCpusResponse;
5474                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5475                        fn call(&mut self, request: tonic::Request<super::GetCpusRequest>) -> Self::Future {
5476                            let inner = Arc::clone(&self.0);
5477                            let fut = async move { <T as NodeService>::get_cpus(&inner, request).await };
5478                            Box::pin(fut)
5479                        }
5480                    }
5481                    let accept_compression_encodings = self.accept_compression_encodings;
5482                    let send_compression_encodings = self.send_compression_encodings;
5483                    let max_decoding_message_size = self.max_decoding_message_size;
5484                    let max_encoding_message_size = self.max_encoding_message_size;
5485                    let inner = self.inner.clone();
5486                    let fut = async move {
5487                        let method = GetCpusSvc(inner);
5488                        let codec = tonic_prost::ProstCodec::default();
5489                        let mut grpc = tonic::server::Grpc::new(codec)
5490                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5491                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5492                        let res = grpc.unary(method, req).await;
5493                        Ok(res)
5494                    };
5495                    Box::pin(fut)
5496                }
5497                "/node_service.NodeService/GetNetInfo" => {
5498                    #[allow(non_camel_case_types)]
5499                    struct GetNetInfoSvc<T: NodeService>(pub Arc<T>);
5500                    impl<T: NodeService> tonic::server::UnaryService<super::GetNetInfoRequest> for GetNetInfoSvc<T> {
5501                        type Response = super::GetNetInfoResponse;
5502                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5503                        fn call(&mut self, request: tonic::Request<super::GetNetInfoRequest>) -> Self::Future {
5504                            let inner = Arc::clone(&self.0);
5505                            let fut = async move { <T as NodeService>::get_net_info(&inner, request).await };
5506                            Box::pin(fut)
5507                        }
5508                    }
5509                    let accept_compression_encodings = self.accept_compression_encodings;
5510                    let send_compression_encodings = self.send_compression_encodings;
5511                    let max_decoding_message_size = self.max_decoding_message_size;
5512                    let max_encoding_message_size = self.max_encoding_message_size;
5513                    let inner = self.inner.clone();
5514                    let fut = async move {
5515                        let method = GetNetInfoSvc(inner);
5516                        let codec = tonic_prost::ProstCodec::default();
5517                        let mut grpc = tonic::server::Grpc::new(codec)
5518                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5519                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5520                        let res = grpc.unary(method, req).await;
5521                        Ok(res)
5522                    };
5523                    Box::pin(fut)
5524                }
5525                "/node_service.NodeService/GetPartitions" => {
5526                    #[allow(non_camel_case_types)]
5527                    struct GetPartitionsSvc<T: NodeService>(pub Arc<T>);
5528                    impl<T: NodeService> tonic::server::UnaryService<super::GetPartitionsRequest> for GetPartitionsSvc<T> {
5529                        type Response = super::GetPartitionsResponse;
5530                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5531                        fn call(&mut self, request: tonic::Request<super::GetPartitionsRequest>) -> Self::Future {
5532                            let inner = Arc::clone(&self.0);
5533                            let fut = async move { <T as NodeService>::get_partitions(&inner, request).await };
5534                            Box::pin(fut)
5535                        }
5536                    }
5537                    let accept_compression_encodings = self.accept_compression_encodings;
5538                    let send_compression_encodings = self.send_compression_encodings;
5539                    let max_decoding_message_size = self.max_decoding_message_size;
5540                    let max_encoding_message_size = self.max_encoding_message_size;
5541                    let inner = self.inner.clone();
5542                    let fut = async move {
5543                        let method = GetPartitionsSvc(inner);
5544                        let codec = tonic_prost::ProstCodec::default();
5545                        let mut grpc = tonic::server::Grpc::new(codec)
5546                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5547                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5548                        let res = grpc.unary(method, req).await;
5549                        Ok(res)
5550                    };
5551                    Box::pin(fut)
5552                }
5553                "/node_service.NodeService/GetOsInfo" => {
5554                    #[allow(non_camel_case_types)]
5555                    struct GetOsInfoSvc<T: NodeService>(pub Arc<T>);
5556                    impl<T: NodeService> tonic::server::UnaryService<super::GetOsInfoRequest> for GetOsInfoSvc<T> {
5557                        type Response = super::GetOsInfoResponse;
5558                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5559                        fn call(&mut self, request: tonic::Request<super::GetOsInfoRequest>) -> Self::Future {
5560                            let inner = Arc::clone(&self.0);
5561                            let fut = async move { <T as NodeService>::get_os_info(&inner, request).await };
5562                            Box::pin(fut)
5563                        }
5564                    }
5565                    let accept_compression_encodings = self.accept_compression_encodings;
5566                    let send_compression_encodings = self.send_compression_encodings;
5567                    let max_decoding_message_size = self.max_decoding_message_size;
5568                    let max_encoding_message_size = self.max_encoding_message_size;
5569                    let inner = self.inner.clone();
5570                    let fut = async move {
5571                        let method = GetOsInfoSvc(inner);
5572                        let codec = tonic_prost::ProstCodec::default();
5573                        let mut grpc = tonic::server::Grpc::new(codec)
5574                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5575                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5576                        let res = grpc.unary(method, req).await;
5577                        Ok(res)
5578                    };
5579                    Box::pin(fut)
5580                }
5581                "/node_service.NodeService/GetSELinuxInfo" => {
5582                    #[allow(non_camel_case_types)]
5583                    struct GetSELinuxInfoSvc<T: NodeService>(pub Arc<T>);
5584                    impl<T: NodeService> tonic::server::UnaryService<super::GetSeLinuxInfoRequest> for GetSELinuxInfoSvc<T> {
5585                        type Response = super::GetSeLinuxInfoResponse;
5586                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5587                        fn call(&mut self, request: tonic::Request<super::GetSeLinuxInfoRequest>) -> Self::Future {
5588                            let inner = Arc::clone(&self.0);
5589                            let fut = async move { <T as NodeService>::get_se_linux_info(&inner, request).await };
5590                            Box::pin(fut)
5591                        }
5592                    }
5593                    let accept_compression_encodings = self.accept_compression_encodings;
5594                    let send_compression_encodings = self.send_compression_encodings;
5595                    let max_decoding_message_size = self.max_decoding_message_size;
5596                    let max_encoding_message_size = self.max_encoding_message_size;
5597                    let inner = self.inner.clone();
5598                    let fut = async move {
5599                        let method = GetSELinuxInfoSvc(inner);
5600                        let codec = tonic_prost::ProstCodec::default();
5601                        let mut grpc = tonic::server::Grpc::new(codec)
5602                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5603                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5604                        let res = grpc.unary(method, req).await;
5605                        Ok(res)
5606                    };
5607                    Box::pin(fut)
5608                }
5609                "/node_service.NodeService/GetSysConfig" => {
5610                    #[allow(non_camel_case_types)]
5611                    struct GetSysConfigSvc<T: NodeService>(pub Arc<T>);
5612                    impl<T: NodeService> tonic::server::UnaryService<super::GetSysConfigRequest> for GetSysConfigSvc<T> {
5613                        type Response = super::GetSysConfigResponse;
5614                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5615                        fn call(&mut self, request: tonic::Request<super::GetSysConfigRequest>) -> Self::Future {
5616                            let inner = Arc::clone(&self.0);
5617                            let fut = async move { <T as NodeService>::get_sys_config(&inner, request).await };
5618                            Box::pin(fut)
5619                        }
5620                    }
5621                    let accept_compression_encodings = self.accept_compression_encodings;
5622                    let send_compression_encodings = self.send_compression_encodings;
5623                    let max_decoding_message_size = self.max_decoding_message_size;
5624                    let max_encoding_message_size = self.max_encoding_message_size;
5625                    let inner = self.inner.clone();
5626                    let fut = async move {
5627                        let method = GetSysConfigSvc(inner);
5628                        let codec = tonic_prost::ProstCodec::default();
5629                        let mut grpc = tonic::server::Grpc::new(codec)
5630                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5631                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5632                        let res = grpc.unary(method, req).await;
5633                        Ok(res)
5634                    };
5635                    Box::pin(fut)
5636                }
5637                "/node_service.NodeService/GetSysErrors" => {
5638                    #[allow(non_camel_case_types)]
5639                    struct GetSysErrorsSvc<T: NodeService>(pub Arc<T>);
5640                    impl<T: NodeService> tonic::server::UnaryService<super::GetSysErrorsRequest> for GetSysErrorsSvc<T> {
5641                        type Response = super::GetSysErrorsResponse;
5642                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5643                        fn call(&mut self, request: tonic::Request<super::GetSysErrorsRequest>) -> Self::Future {
5644                            let inner = Arc::clone(&self.0);
5645                            let fut = async move { <T as NodeService>::get_sys_errors(&inner, request).await };
5646                            Box::pin(fut)
5647                        }
5648                    }
5649                    let accept_compression_encodings = self.accept_compression_encodings;
5650                    let send_compression_encodings = self.send_compression_encodings;
5651                    let max_decoding_message_size = self.max_decoding_message_size;
5652                    let max_encoding_message_size = self.max_encoding_message_size;
5653                    let inner = self.inner.clone();
5654                    let fut = async move {
5655                        let method = GetSysErrorsSvc(inner);
5656                        let codec = tonic_prost::ProstCodec::default();
5657                        let mut grpc = tonic::server::Grpc::new(codec)
5658                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5659                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5660                        let res = grpc.unary(method, req).await;
5661                        Ok(res)
5662                    };
5663                    Box::pin(fut)
5664                }
5665                "/node_service.NodeService/GetMemInfo" => {
5666                    #[allow(non_camel_case_types)]
5667                    struct GetMemInfoSvc<T: NodeService>(pub Arc<T>);
5668                    impl<T: NodeService> tonic::server::UnaryService<super::GetMemInfoRequest> for GetMemInfoSvc<T> {
5669                        type Response = super::GetMemInfoResponse;
5670                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5671                        fn call(&mut self, request: tonic::Request<super::GetMemInfoRequest>) -> Self::Future {
5672                            let inner = Arc::clone(&self.0);
5673                            let fut = async move { <T as NodeService>::get_mem_info(&inner, request).await };
5674                            Box::pin(fut)
5675                        }
5676                    }
5677                    let accept_compression_encodings = self.accept_compression_encodings;
5678                    let send_compression_encodings = self.send_compression_encodings;
5679                    let max_decoding_message_size = self.max_decoding_message_size;
5680                    let max_encoding_message_size = self.max_encoding_message_size;
5681                    let inner = self.inner.clone();
5682                    let fut = async move {
5683                        let method = GetMemInfoSvc(inner);
5684                        let codec = tonic_prost::ProstCodec::default();
5685                        let mut grpc = tonic::server::Grpc::new(codec)
5686                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5687                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5688                        let res = grpc.unary(method, req).await;
5689                        Ok(res)
5690                    };
5691                    Box::pin(fut)
5692                }
5693                "/node_service.NodeService/GetMetrics" => {
5694                    #[allow(non_camel_case_types)]
5695                    struct GetMetricsSvc<T: NodeService>(pub Arc<T>);
5696                    impl<T: NodeService> tonic::server::UnaryService<super::GetMetricsRequest> for GetMetricsSvc<T> {
5697                        type Response = super::GetMetricsResponse;
5698                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5699                        fn call(&mut self, request: tonic::Request<super::GetMetricsRequest>) -> Self::Future {
5700                            let inner = Arc::clone(&self.0);
5701                            let fut = async move { <T as NodeService>::get_metrics(&inner, request).await };
5702                            Box::pin(fut)
5703                        }
5704                    }
5705                    let accept_compression_encodings = self.accept_compression_encodings;
5706                    let send_compression_encodings = self.send_compression_encodings;
5707                    let max_decoding_message_size = self.max_decoding_message_size;
5708                    let max_encoding_message_size = self.max_encoding_message_size;
5709                    let inner = self.inner.clone();
5710                    let fut = async move {
5711                        let method = GetMetricsSvc(inner);
5712                        let codec = tonic_prost::ProstCodec::default();
5713                        let mut grpc = tonic::server::Grpc::new(codec)
5714                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5715                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5716                        let res = grpc.unary(method, req).await;
5717                        Ok(res)
5718                    };
5719                    Box::pin(fut)
5720                }
5721                "/node_service.NodeService/GetProcInfo" => {
5722                    #[allow(non_camel_case_types)]
5723                    struct GetProcInfoSvc<T: NodeService>(pub Arc<T>);
5724                    impl<T: NodeService> tonic::server::UnaryService<super::GetProcInfoRequest> for GetProcInfoSvc<T> {
5725                        type Response = super::GetProcInfoResponse;
5726                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5727                        fn call(&mut self, request: tonic::Request<super::GetProcInfoRequest>) -> Self::Future {
5728                            let inner = Arc::clone(&self.0);
5729                            let fut = async move { <T as NodeService>::get_proc_info(&inner, request).await };
5730                            Box::pin(fut)
5731                        }
5732                    }
5733                    let accept_compression_encodings = self.accept_compression_encodings;
5734                    let send_compression_encodings = self.send_compression_encodings;
5735                    let max_decoding_message_size = self.max_decoding_message_size;
5736                    let max_encoding_message_size = self.max_encoding_message_size;
5737                    let inner = self.inner.clone();
5738                    let fut = async move {
5739                        let method = GetProcInfoSvc(inner);
5740                        let codec = tonic_prost::ProstCodec::default();
5741                        let mut grpc = tonic::server::Grpc::new(codec)
5742                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5743                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5744                        let res = grpc.unary(method, req).await;
5745                        Ok(res)
5746                    };
5747                    Box::pin(fut)
5748                }
5749                "/node_service.NodeService/StartProfiling" => {
5750                    #[allow(non_camel_case_types)]
5751                    struct StartProfilingSvc<T: NodeService>(pub Arc<T>);
5752                    impl<T: NodeService> tonic::server::UnaryService<super::StartProfilingRequest> for StartProfilingSvc<T> {
5753                        type Response = super::StartProfilingResponse;
5754                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5755                        fn call(&mut self, request: tonic::Request<super::StartProfilingRequest>) -> Self::Future {
5756                            let inner = Arc::clone(&self.0);
5757                            let fut = async move { <T as NodeService>::start_profiling(&inner, request).await };
5758                            Box::pin(fut)
5759                        }
5760                    }
5761                    let accept_compression_encodings = self.accept_compression_encodings;
5762                    let send_compression_encodings = self.send_compression_encodings;
5763                    let max_decoding_message_size = self.max_decoding_message_size;
5764                    let max_encoding_message_size = self.max_encoding_message_size;
5765                    let inner = self.inner.clone();
5766                    let fut = async move {
5767                        let method = StartProfilingSvc(inner);
5768                        let codec = tonic_prost::ProstCodec::default();
5769                        let mut grpc = tonic::server::Grpc::new(codec)
5770                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5771                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5772                        let res = grpc.unary(method, req).await;
5773                        Ok(res)
5774                    };
5775                    Box::pin(fut)
5776                }
5777                "/node_service.NodeService/DownloadProfileData" => {
5778                    #[allow(non_camel_case_types)]
5779                    struct DownloadProfileDataSvc<T: NodeService>(pub Arc<T>);
5780                    impl<T: NodeService> tonic::server::UnaryService<super::DownloadProfileDataRequest> for DownloadProfileDataSvc<T> {
5781                        type Response = super::DownloadProfileDataResponse;
5782                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5783                        fn call(&mut self, request: tonic::Request<super::DownloadProfileDataRequest>) -> Self::Future {
5784                            let inner = Arc::clone(&self.0);
5785                            let fut = async move { <T as NodeService>::download_profile_data(&inner, request).await };
5786                            Box::pin(fut)
5787                        }
5788                    }
5789                    let accept_compression_encodings = self.accept_compression_encodings;
5790                    let send_compression_encodings = self.send_compression_encodings;
5791                    let max_decoding_message_size = self.max_decoding_message_size;
5792                    let max_encoding_message_size = self.max_encoding_message_size;
5793                    let inner = self.inner.clone();
5794                    let fut = async move {
5795                        let method = DownloadProfileDataSvc(inner);
5796                        let codec = tonic_prost::ProstCodec::default();
5797                        let mut grpc = tonic::server::Grpc::new(codec)
5798                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5799                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5800                        let res = grpc.unary(method, req).await;
5801                        Ok(res)
5802                    };
5803                    Box::pin(fut)
5804                }
5805                "/node_service.NodeService/GetBucketStats" => {
5806                    #[allow(non_camel_case_types)]
5807                    struct GetBucketStatsSvc<T: NodeService>(pub Arc<T>);
5808                    impl<T: NodeService> tonic::server::UnaryService<super::GetBucketStatsDataRequest> for GetBucketStatsSvc<T> {
5809                        type Response = super::GetBucketStatsDataResponse;
5810                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5811                        fn call(&mut self, request: tonic::Request<super::GetBucketStatsDataRequest>) -> Self::Future {
5812                            let inner = Arc::clone(&self.0);
5813                            let fut = async move { <T as NodeService>::get_bucket_stats(&inner, request).await };
5814                            Box::pin(fut)
5815                        }
5816                    }
5817                    let accept_compression_encodings = self.accept_compression_encodings;
5818                    let send_compression_encodings = self.send_compression_encodings;
5819                    let max_decoding_message_size = self.max_decoding_message_size;
5820                    let max_encoding_message_size = self.max_encoding_message_size;
5821                    let inner = self.inner.clone();
5822                    let fut = async move {
5823                        let method = GetBucketStatsSvc(inner);
5824                        let codec = tonic_prost::ProstCodec::default();
5825                        let mut grpc = tonic::server::Grpc::new(codec)
5826                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5827                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5828                        let res = grpc.unary(method, req).await;
5829                        Ok(res)
5830                    };
5831                    Box::pin(fut)
5832                }
5833                "/node_service.NodeService/GetSRMetrics" => {
5834                    #[allow(non_camel_case_types)]
5835                    struct GetSRMetricsSvc<T: NodeService>(pub Arc<T>);
5836                    impl<T: NodeService> tonic::server::UnaryService<super::GetSrMetricsDataRequest> for GetSRMetricsSvc<T> {
5837                        type Response = super::GetSrMetricsDataResponse;
5838                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5839                        fn call(&mut self, request: tonic::Request<super::GetSrMetricsDataRequest>) -> Self::Future {
5840                            let inner = Arc::clone(&self.0);
5841                            let fut = async move { <T as NodeService>::get_sr_metrics(&inner, request).await };
5842                            Box::pin(fut)
5843                        }
5844                    }
5845                    let accept_compression_encodings = self.accept_compression_encodings;
5846                    let send_compression_encodings = self.send_compression_encodings;
5847                    let max_decoding_message_size = self.max_decoding_message_size;
5848                    let max_encoding_message_size = self.max_encoding_message_size;
5849                    let inner = self.inner.clone();
5850                    let fut = async move {
5851                        let method = GetSRMetricsSvc(inner);
5852                        let codec = tonic_prost::ProstCodec::default();
5853                        let mut grpc = tonic::server::Grpc::new(codec)
5854                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5855                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5856                        let res = grpc.unary(method, req).await;
5857                        Ok(res)
5858                    };
5859                    Box::pin(fut)
5860                }
5861                "/node_service.NodeService/GetAllBucketStats" => {
5862                    #[allow(non_camel_case_types)]
5863                    struct GetAllBucketStatsSvc<T: NodeService>(pub Arc<T>);
5864                    impl<T: NodeService> tonic::server::UnaryService<super::GetAllBucketStatsRequest> for GetAllBucketStatsSvc<T> {
5865                        type Response = super::GetAllBucketStatsResponse;
5866                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5867                        fn call(&mut self, request: tonic::Request<super::GetAllBucketStatsRequest>) -> Self::Future {
5868                            let inner = Arc::clone(&self.0);
5869                            let fut = async move { <T as NodeService>::get_all_bucket_stats(&inner, request).await };
5870                            Box::pin(fut)
5871                        }
5872                    }
5873                    let accept_compression_encodings = self.accept_compression_encodings;
5874                    let send_compression_encodings = self.send_compression_encodings;
5875                    let max_decoding_message_size = self.max_decoding_message_size;
5876                    let max_encoding_message_size = self.max_encoding_message_size;
5877                    let inner = self.inner.clone();
5878                    let fut = async move {
5879                        let method = GetAllBucketStatsSvc(inner);
5880                        let codec = tonic_prost::ProstCodec::default();
5881                        let mut grpc = tonic::server::Grpc::new(codec)
5882                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5883                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5884                        let res = grpc.unary(method, req).await;
5885                        Ok(res)
5886                    };
5887                    Box::pin(fut)
5888                }
5889                "/node_service.NodeService/LoadBucketMetadata" => {
5890                    #[allow(non_camel_case_types)]
5891                    struct LoadBucketMetadataSvc<T: NodeService>(pub Arc<T>);
5892                    impl<T: NodeService> tonic::server::UnaryService<super::LoadBucketMetadataRequest> for LoadBucketMetadataSvc<T> {
5893                        type Response = super::LoadBucketMetadataResponse;
5894                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5895                        fn call(&mut self, request: tonic::Request<super::LoadBucketMetadataRequest>) -> Self::Future {
5896                            let inner = Arc::clone(&self.0);
5897                            let fut = async move { <T as NodeService>::load_bucket_metadata(&inner, request).await };
5898                            Box::pin(fut)
5899                        }
5900                    }
5901                    let accept_compression_encodings = self.accept_compression_encodings;
5902                    let send_compression_encodings = self.send_compression_encodings;
5903                    let max_decoding_message_size = self.max_decoding_message_size;
5904                    let max_encoding_message_size = self.max_encoding_message_size;
5905                    let inner = self.inner.clone();
5906                    let fut = async move {
5907                        let method = LoadBucketMetadataSvc(inner);
5908                        let codec = tonic_prost::ProstCodec::default();
5909                        let mut grpc = tonic::server::Grpc::new(codec)
5910                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5911                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5912                        let res = grpc.unary(method, req).await;
5913                        Ok(res)
5914                    };
5915                    Box::pin(fut)
5916                }
5917                "/node_service.NodeService/DeleteBucketMetadata" => {
5918                    #[allow(non_camel_case_types)]
5919                    struct DeleteBucketMetadataSvc<T: NodeService>(pub Arc<T>);
5920                    impl<T: NodeService> tonic::server::UnaryService<super::DeleteBucketMetadataRequest> for DeleteBucketMetadataSvc<T> {
5921                        type Response = super::DeleteBucketMetadataResponse;
5922                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5923                        fn call(&mut self, request: tonic::Request<super::DeleteBucketMetadataRequest>) -> Self::Future {
5924                            let inner = Arc::clone(&self.0);
5925                            let fut = async move { <T as NodeService>::delete_bucket_metadata(&inner, request).await };
5926                            Box::pin(fut)
5927                        }
5928                    }
5929                    let accept_compression_encodings = self.accept_compression_encodings;
5930                    let send_compression_encodings = self.send_compression_encodings;
5931                    let max_decoding_message_size = self.max_decoding_message_size;
5932                    let max_encoding_message_size = self.max_encoding_message_size;
5933                    let inner = self.inner.clone();
5934                    let fut = async move {
5935                        let method = DeleteBucketMetadataSvc(inner);
5936                        let codec = tonic_prost::ProstCodec::default();
5937                        let mut grpc = tonic::server::Grpc::new(codec)
5938                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5939                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5940                        let res = grpc.unary(method, req).await;
5941                        Ok(res)
5942                    };
5943                    Box::pin(fut)
5944                }
5945                "/node_service.NodeService/DeletePolicy" => {
5946                    #[allow(non_camel_case_types)]
5947                    struct DeletePolicySvc<T: NodeService>(pub Arc<T>);
5948                    impl<T: NodeService> tonic::server::UnaryService<super::DeletePolicyRequest> for DeletePolicySvc<T> {
5949                        type Response = super::DeletePolicyResponse;
5950                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5951                        fn call(&mut self, request: tonic::Request<super::DeletePolicyRequest>) -> Self::Future {
5952                            let inner = Arc::clone(&self.0);
5953                            let fut = async move { <T as NodeService>::delete_policy(&inner, request).await };
5954                            Box::pin(fut)
5955                        }
5956                    }
5957                    let accept_compression_encodings = self.accept_compression_encodings;
5958                    let send_compression_encodings = self.send_compression_encodings;
5959                    let max_decoding_message_size = self.max_decoding_message_size;
5960                    let max_encoding_message_size = self.max_encoding_message_size;
5961                    let inner = self.inner.clone();
5962                    let fut = async move {
5963                        let method = DeletePolicySvc(inner);
5964                        let codec = tonic_prost::ProstCodec::default();
5965                        let mut grpc = tonic::server::Grpc::new(codec)
5966                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5967                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5968                        let res = grpc.unary(method, req).await;
5969                        Ok(res)
5970                    };
5971                    Box::pin(fut)
5972                }
5973                "/node_service.NodeService/LoadPolicy" => {
5974                    #[allow(non_camel_case_types)]
5975                    struct LoadPolicySvc<T: NodeService>(pub Arc<T>);
5976                    impl<T: NodeService> tonic::server::UnaryService<super::LoadPolicyRequest> for LoadPolicySvc<T> {
5977                        type Response = super::LoadPolicyResponse;
5978                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
5979                        fn call(&mut self, request: tonic::Request<super::LoadPolicyRequest>) -> Self::Future {
5980                            let inner = Arc::clone(&self.0);
5981                            let fut = async move { <T as NodeService>::load_policy(&inner, request).await };
5982                            Box::pin(fut)
5983                        }
5984                    }
5985                    let accept_compression_encodings = self.accept_compression_encodings;
5986                    let send_compression_encodings = self.send_compression_encodings;
5987                    let max_decoding_message_size = self.max_decoding_message_size;
5988                    let max_encoding_message_size = self.max_encoding_message_size;
5989                    let inner = self.inner.clone();
5990                    let fut = async move {
5991                        let method = LoadPolicySvc(inner);
5992                        let codec = tonic_prost::ProstCodec::default();
5993                        let mut grpc = tonic::server::Grpc::new(codec)
5994                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
5995                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
5996                        let res = grpc.unary(method, req).await;
5997                        Ok(res)
5998                    };
5999                    Box::pin(fut)
6000                }
6001                "/node_service.NodeService/LoadPolicyMapping" => {
6002                    #[allow(non_camel_case_types)]
6003                    struct LoadPolicyMappingSvc<T: NodeService>(pub Arc<T>);
6004                    impl<T: NodeService> tonic::server::UnaryService<super::LoadPolicyMappingRequest> for LoadPolicyMappingSvc<T> {
6005                        type Response = super::LoadPolicyMappingResponse;
6006                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6007                        fn call(&mut self, request: tonic::Request<super::LoadPolicyMappingRequest>) -> Self::Future {
6008                            let inner = Arc::clone(&self.0);
6009                            let fut = async move { <T as NodeService>::load_policy_mapping(&inner, request).await };
6010                            Box::pin(fut)
6011                        }
6012                    }
6013                    let accept_compression_encodings = self.accept_compression_encodings;
6014                    let send_compression_encodings = self.send_compression_encodings;
6015                    let max_decoding_message_size = self.max_decoding_message_size;
6016                    let max_encoding_message_size = self.max_encoding_message_size;
6017                    let inner = self.inner.clone();
6018                    let fut = async move {
6019                        let method = LoadPolicyMappingSvc(inner);
6020                        let codec = tonic_prost::ProstCodec::default();
6021                        let mut grpc = tonic::server::Grpc::new(codec)
6022                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6023                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6024                        let res = grpc.unary(method, req).await;
6025                        Ok(res)
6026                    };
6027                    Box::pin(fut)
6028                }
6029                "/node_service.NodeService/DeleteUser" => {
6030                    #[allow(non_camel_case_types)]
6031                    struct DeleteUserSvc<T: NodeService>(pub Arc<T>);
6032                    impl<T: NodeService> tonic::server::UnaryService<super::DeleteUserRequest> for DeleteUserSvc<T> {
6033                        type Response = super::DeleteUserResponse;
6034                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6035                        fn call(&mut self, request: tonic::Request<super::DeleteUserRequest>) -> Self::Future {
6036                            let inner = Arc::clone(&self.0);
6037                            let fut = async move { <T as NodeService>::delete_user(&inner, request).await };
6038                            Box::pin(fut)
6039                        }
6040                    }
6041                    let accept_compression_encodings = self.accept_compression_encodings;
6042                    let send_compression_encodings = self.send_compression_encodings;
6043                    let max_decoding_message_size = self.max_decoding_message_size;
6044                    let max_encoding_message_size = self.max_encoding_message_size;
6045                    let inner = self.inner.clone();
6046                    let fut = async move {
6047                        let method = DeleteUserSvc(inner);
6048                        let codec = tonic_prost::ProstCodec::default();
6049                        let mut grpc = tonic::server::Grpc::new(codec)
6050                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6051                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6052                        let res = grpc.unary(method, req).await;
6053                        Ok(res)
6054                    };
6055                    Box::pin(fut)
6056                }
6057                "/node_service.NodeService/DeleteServiceAccount" => {
6058                    #[allow(non_camel_case_types)]
6059                    struct DeleteServiceAccountSvc<T: NodeService>(pub Arc<T>);
6060                    impl<T: NodeService> tonic::server::UnaryService<super::DeleteServiceAccountRequest> for DeleteServiceAccountSvc<T> {
6061                        type Response = super::DeleteServiceAccountResponse;
6062                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6063                        fn call(&mut self, request: tonic::Request<super::DeleteServiceAccountRequest>) -> Self::Future {
6064                            let inner = Arc::clone(&self.0);
6065                            let fut = async move { <T as NodeService>::delete_service_account(&inner, request).await };
6066                            Box::pin(fut)
6067                        }
6068                    }
6069                    let accept_compression_encodings = self.accept_compression_encodings;
6070                    let send_compression_encodings = self.send_compression_encodings;
6071                    let max_decoding_message_size = self.max_decoding_message_size;
6072                    let max_encoding_message_size = self.max_encoding_message_size;
6073                    let inner = self.inner.clone();
6074                    let fut = async move {
6075                        let method = DeleteServiceAccountSvc(inner);
6076                        let codec = tonic_prost::ProstCodec::default();
6077                        let mut grpc = tonic::server::Grpc::new(codec)
6078                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6079                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6080                        let res = grpc.unary(method, req).await;
6081                        Ok(res)
6082                    };
6083                    Box::pin(fut)
6084                }
6085                "/node_service.NodeService/LoadUser" => {
6086                    #[allow(non_camel_case_types)]
6087                    struct LoadUserSvc<T: NodeService>(pub Arc<T>);
6088                    impl<T: NodeService> tonic::server::UnaryService<super::LoadUserRequest> for LoadUserSvc<T> {
6089                        type Response = super::LoadUserResponse;
6090                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6091                        fn call(&mut self, request: tonic::Request<super::LoadUserRequest>) -> Self::Future {
6092                            let inner = Arc::clone(&self.0);
6093                            let fut = async move { <T as NodeService>::load_user(&inner, request).await };
6094                            Box::pin(fut)
6095                        }
6096                    }
6097                    let accept_compression_encodings = self.accept_compression_encodings;
6098                    let send_compression_encodings = self.send_compression_encodings;
6099                    let max_decoding_message_size = self.max_decoding_message_size;
6100                    let max_encoding_message_size = self.max_encoding_message_size;
6101                    let inner = self.inner.clone();
6102                    let fut = async move {
6103                        let method = LoadUserSvc(inner);
6104                        let codec = tonic_prost::ProstCodec::default();
6105                        let mut grpc = tonic::server::Grpc::new(codec)
6106                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6107                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6108                        let res = grpc.unary(method, req).await;
6109                        Ok(res)
6110                    };
6111                    Box::pin(fut)
6112                }
6113                "/node_service.NodeService/LoadServiceAccount" => {
6114                    #[allow(non_camel_case_types)]
6115                    struct LoadServiceAccountSvc<T: NodeService>(pub Arc<T>);
6116                    impl<T: NodeService> tonic::server::UnaryService<super::LoadServiceAccountRequest> for LoadServiceAccountSvc<T> {
6117                        type Response = super::LoadServiceAccountResponse;
6118                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6119                        fn call(&mut self, request: tonic::Request<super::LoadServiceAccountRequest>) -> Self::Future {
6120                            let inner = Arc::clone(&self.0);
6121                            let fut = async move { <T as NodeService>::load_service_account(&inner, request).await };
6122                            Box::pin(fut)
6123                        }
6124                    }
6125                    let accept_compression_encodings = self.accept_compression_encodings;
6126                    let send_compression_encodings = self.send_compression_encodings;
6127                    let max_decoding_message_size = self.max_decoding_message_size;
6128                    let max_encoding_message_size = self.max_encoding_message_size;
6129                    let inner = self.inner.clone();
6130                    let fut = async move {
6131                        let method = LoadServiceAccountSvc(inner);
6132                        let codec = tonic_prost::ProstCodec::default();
6133                        let mut grpc = tonic::server::Grpc::new(codec)
6134                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6135                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6136                        let res = grpc.unary(method, req).await;
6137                        Ok(res)
6138                    };
6139                    Box::pin(fut)
6140                }
6141                "/node_service.NodeService/LoadGroup" => {
6142                    #[allow(non_camel_case_types)]
6143                    struct LoadGroupSvc<T: NodeService>(pub Arc<T>);
6144                    impl<T: NodeService> tonic::server::UnaryService<super::LoadGroupRequest> for LoadGroupSvc<T> {
6145                        type Response = super::LoadGroupResponse;
6146                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6147                        fn call(&mut self, request: tonic::Request<super::LoadGroupRequest>) -> Self::Future {
6148                            let inner = Arc::clone(&self.0);
6149                            let fut = async move { <T as NodeService>::load_group(&inner, request).await };
6150                            Box::pin(fut)
6151                        }
6152                    }
6153                    let accept_compression_encodings = self.accept_compression_encodings;
6154                    let send_compression_encodings = self.send_compression_encodings;
6155                    let max_decoding_message_size = self.max_decoding_message_size;
6156                    let max_encoding_message_size = self.max_encoding_message_size;
6157                    let inner = self.inner.clone();
6158                    let fut = async move {
6159                        let method = LoadGroupSvc(inner);
6160                        let codec = tonic_prost::ProstCodec::default();
6161                        let mut grpc = tonic::server::Grpc::new(codec)
6162                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6163                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6164                        let res = grpc.unary(method, req).await;
6165                        Ok(res)
6166                    };
6167                    Box::pin(fut)
6168                }
6169                "/node_service.NodeService/ReloadSiteReplicationConfig" => {
6170                    #[allow(non_camel_case_types)]
6171                    struct ReloadSiteReplicationConfigSvc<T: NodeService>(pub Arc<T>);
6172                    impl<T: NodeService> tonic::server::UnaryService<super::ReloadSiteReplicationConfigRequest>
6173                        for ReloadSiteReplicationConfigSvc<T>
6174                    {
6175                        type Response = super::ReloadSiteReplicationConfigResponse;
6176                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6177                        fn call(&mut self, request: tonic::Request<super::ReloadSiteReplicationConfigRequest>) -> Self::Future {
6178                            let inner = Arc::clone(&self.0);
6179                            let fut = async move { <T as NodeService>::reload_site_replication_config(&inner, request).await };
6180                            Box::pin(fut)
6181                        }
6182                    }
6183                    let accept_compression_encodings = self.accept_compression_encodings;
6184                    let send_compression_encodings = self.send_compression_encodings;
6185                    let max_decoding_message_size = self.max_decoding_message_size;
6186                    let max_encoding_message_size = self.max_encoding_message_size;
6187                    let inner = self.inner.clone();
6188                    let fut = async move {
6189                        let method = ReloadSiteReplicationConfigSvc(inner);
6190                        let codec = tonic_prost::ProstCodec::default();
6191                        let mut grpc = tonic::server::Grpc::new(codec)
6192                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6193                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6194                        let res = grpc.unary(method, req).await;
6195                        Ok(res)
6196                    };
6197                    Box::pin(fut)
6198                }
6199                "/node_service.NodeService/SignalService" => {
6200                    #[allow(non_camel_case_types)]
6201                    struct SignalServiceSvc<T: NodeService>(pub Arc<T>);
6202                    impl<T: NodeService> tonic::server::UnaryService<super::SignalServiceRequest> for SignalServiceSvc<T> {
6203                        type Response = super::SignalServiceResponse;
6204                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6205                        fn call(&mut self, request: tonic::Request<super::SignalServiceRequest>) -> Self::Future {
6206                            let inner = Arc::clone(&self.0);
6207                            let fut = async move { <T as NodeService>::signal_service(&inner, request).await };
6208                            Box::pin(fut)
6209                        }
6210                    }
6211                    let accept_compression_encodings = self.accept_compression_encodings;
6212                    let send_compression_encodings = self.send_compression_encodings;
6213                    let max_decoding_message_size = self.max_decoding_message_size;
6214                    let max_encoding_message_size = self.max_encoding_message_size;
6215                    let inner = self.inner.clone();
6216                    let fut = async move {
6217                        let method = SignalServiceSvc(inner);
6218                        let codec = tonic_prost::ProstCodec::default();
6219                        let mut grpc = tonic::server::Grpc::new(codec)
6220                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6221                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6222                        let res = grpc.unary(method, req).await;
6223                        Ok(res)
6224                    };
6225                    Box::pin(fut)
6226                }
6227                "/node_service.NodeService/ScannerActivity" => {
6228                    #[allow(non_camel_case_types)]
6229                    struct ScannerActivitySvc<T: NodeService>(pub Arc<T>);
6230                    impl<T: NodeService> tonic::server::UnaryService<super::ScannerActivityRequest> for ScannerActivitySvc<T> {
6231                        type Response = super::ScannerActivityResponse;
6232                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6233                        fn call(&mut self, request: tonic::Request<super::ScannerActivityRequest>) -> Self::Future {
6234                            let inner = Arc::clone(&self.0);
6235                            let fut = async move { <T as NodeService>::scanner_activity(&inner, request).await };
6236                            Box::pin(fut)
6237                        }
6238                    }
6239                    let accept_compression_encodings = self.accept_compression_encodings;
6240                    let send_compression_encodings = self.send_compression_encodings;
6241                    let max_decoding_message_size = self.max_decoding_message_size;
6242                    let max_encoding_message_size = self.max_encoding_message_size;
6243                    let inner = self.inner.clone();
6244                    let fut = async move {
6245                        let method = ScannerActivitySvc(inner);
6246                        let codec = tonic_prost::ProstCodec::default();
6247                        let mut grpc = tonic::server::Grpc::new(codec)
6248                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6249                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6250                        let res = grpc.unary(method, req).await;
6251                        Ok(res)
6252                    };
6253                    Box::pin(fut)
6254                }
6255                "/node_service.NodeService/ScannerDirtyUsageSnapshot" => {
6256                    #[allow(non_camel_case_types)]
6257                    struct ScannerDirtyUsageSnapshotSvc<T: NodeService>(pub Arc<T>);
6258                    impl<T: NodeService> tonic::server::UnaryService<super::ScannerDirtyUsageSnapshotRequest> for ScannerDirtyUsageSnapshotSvc<T> {
6259                        type Response = super::ScannerDirtyUsageSnapshotResponse;
6260                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6261                        fn call(&mut self, request: tonic::Request<super::ScannerDirtyUsageSnapshotRequest>) -> Self::Future {
6262                            let inner = Arc::clone(&self.0);
6263                            let fut = async move { <T as NodeService>::scanner_dirty_usage_snapshot(&inner, request).await };
6264                            Box::pin(fut)
6265                        }
6266                    }
6267                    let accept_compression_encodings = self.accept_compression_encodings;
6268                    let send_compression_encodings = self.send_compression_encodings;
6269                    let max_decoding_message_size = self.max_decoding_message_size;
6270                    let max_encoding_message_size = self.max_encoding_message_size;
6271                    let inner = self.inner.clone();
6272                    let fut = async move {
6273                        let method = ScannerDirtyUsageSnapshotSvc(inner);
6274                        let codec = tonic_prost::ProstCodec::default();
6275                        let mut grpc = tonic::server::Grpc::new(codec)
6276                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6277                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6278                        let res = grpc.unary(method, req).await;
6279                        Ok(res)
6280                    };
6281                    Box::pin(fut)
6282                }
6283                "/node_service.NodeService/AcquireScannerPublicationLease" => {
6284                    #[allow(non_camel_case_types)]
6285                    struct AcquireScannerPublicationLeaseSvc<T: NodeService>(pub Arc<T>);
6286                    impl<T: NodeService> tonic::server::UnaryService<super::ScannerPublicationLeaseRequest> for AcquireScannerPublicationLeaseSvc<T> {
6287                        type Response = super::ScannerPublicationLeaseResponse;
6288                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6289                        fn call(&mut self, request: tonic::Request<super::ScannerPublicationLeaseRequest>) -> Self::Future {
6290                            let inner = Arc::clone(&self.0);
6291                            let fut = async move { <T as NodeService>::acquire_scanner_publication_lease(&inner, request).await };
6292                            Box::pin(fut)
6293                        }
6294                    }
6295                    let accept_compression_encodings = self.accept_compression_encodings;
6296                    let send_compression_encodings = self.send_compression_encodings;
6297                    let max_decoding_message_size = self.max_decoding_message_size;
6298                    let max_encoding_message_size = self.max_encoding_message_size;
6299                    let inner = self.inner.clone();
6300                    let fut = async move {
6301                        let method = AcquireScannerPublicationLeaseSvc(inner);
6302                        let codec = tonic_prost::ProstCodec::default();
6303                        let mut grpc = tonic::server::Grpc::new(codec)
6304                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6305                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6306                        let res = grpc.unary(method, req).await;
6307                        Ok(res)
6308                    };
6309                    Box::pin(fut)
6310                }
6311                "/node_service.NodeService/ReleaseScannerPublicationLease" => {
6312                    #[allow(non_camel_case_types)]
6313                    struct ReleaseScannerPublicationLeaseSvc<T: NodeService>(pub Arc<T>);
6314                    impl<T: NodeService> tonic::server::UnaryService<super::ScannerPublicationLeaseReleaseRequest>
6315                        for ReleaseScannerPublicationLeaseSvc<T>
6316                    {
6317                        type Response = super::ScannerPublicationLeaseReleaseResponse;
6318                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6319                        fn call(
6320                            &mut self,
6321                            request: tonic::Request<super::ScannerPublicationLeaseReleaseRequest>,
6322                        ) -> Self::Future {
6323                            let inner = Arc::clone(&self.0);
6324                            let fut = async move { <T as NodeService>::release_scanner_publication_lease(&inner, request).await };
6325                            Box::pin(fut)
6326                        }
6327                    }
6328                    let accept_compression_encodings = self.accept_compression_encodings;
6329                    let send_compression_encodings = self.send_compression_encodings;
6330                    let max_decoding_message_size = self.max_decoding_message_size;
6331                    let max_encoding_message_size = self.max_encoding_message_size;
6332                    let inner = self.inner.clone();
6333                    let fut = async move {
6334                        let method = ReleaseScannerPublicationLeaseSvc(inner);
6335                        let codec = tonic_prost::ProstCodec::default();
6336                        let mut grpc = tonic::server::Grpc::new(codec)
6337                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6338                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6339                        let res = grpc.unary(method, req).await;
6340                        Ok(res)
6341                    };
6342                    Box::pin(fut)
6343                }
6344                "/node_service.NodeService/BackgroundHealStatus" => {
6345                    #[allow(non_camel_case_types)]
6346                    struct BackgroundHealStatusSvc<T: NodeService>(pub Arc<T>);
6347                    impl<T: NodeService> tonic::server::UnaryService<super::BackgroundHealStatusRequest> for BackgroundHealStatusSvc<T> {
6348                        type Response = super::BackgroundHealStatusResponse;
6349                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6350                        fn call(&mut self, request: tonic::Request<super::BackgroundHealStatusRequest>) -> Self::Future {
6351                            let inner = Arc::clone(&self.0);
6352                            let fut = async move { <T as NodeService>::background_heal_status(&inner, request).await };
6353                            Box::pin(fut)
6354                        }
6355                    }
6356                    let accept_compression_encodings = self.accept_compression_encodings;
6357                    let send_compression_encodings = self.send_compression_encodings;
6358                    let max_decoding_message_size = self.max_decoding_message_size;
6359                    let max_encoding_message_size = self.max_encoding_message_size;
6360                    let inner = self.inner.clone();
6361                    let fut = async move {
6362                        let method = BackgroundHealStatusSvc(inner);
6363                        let codec = tonic_prost::ProstCodec::default();
6364                        let mut grpc = tonic::server::Grpc::new(codec)
6365                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6366                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6367                        let res = grpc.unary(method, req).await;
6368                        Ok(res)
6369                    };
6370                    Box::pin(fut)
6371                }
6372                "/node_service.NodeService/ReplacementRecoveryStatus" => {
6373                    #[allow(non_camel_case_types)]
6374                    struct ReplacementRecoveryStatusSvc<T: NodeService>(pub Arc<T>);
6375                    impl<T: NodeService> tonic::server::UnaryService<super::ReplacementRecoveryStatusRequest> for ReplacementRecoveryStatusSvc<T> {
6376                        type Response = super::ReplacementRecoveryStatusResponse;
6377                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6378                        fn call(&mut self, request: tonic::Request<super::ReplacementRecoveryStatusRequest>) -> Self::Future {
6379                            let inner = Arc::clone(&self.0);
6380                            let fut = async move { <T as NodeService>::replacement_recovery_status(&inner, request).await };
6381                            Box::pin(fut)
6382                        }
6383                    }
6384                    let accept_compression_encodings = self.accept_compression_encodings;
6385                    let send_compression_encodings = self.send_compression_encodings;
6386                    let max_decoding_message_size = self.max_decoding_message_size;
6387                    let max_encoding_message_size = self.max_encoding_message_size;
6388                    let inner = self.inner.clone();
6389                    let fut = async move {
6390                        let method = ReplacementRecoveryStatusSvc(inner);
6391                        let codec = tonic_prost::ProstCodec::default();
6392                        let mut grpc = tonic::server::Grpc::new(codec)
6393                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6394                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6395                        let res = grpc.unary(method, req).await;
6396                        Ok(res)
6397                    };
6398                    Box::pin(fut)
6399                }
6400                "/node_service.NodeService/GetMetacacheListing" => {
6401                    #[allow(non_camel_case_types)]
6402                    struct GetMetacacheListingSvc<T: NodeService>(pub Arc<T>);
6403                    impl<T: NodeService> tonic::server::UnaryService<super::GetMetacacheListingRequest> for GetMetacacheListingSvc<T> {
6404                        type Response = super::GetMetacacheListingResponse;
6405                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6406                        fn call(&mut self, request: tonic::Request<super::GetMetacacheListingRequest>) -> Self::Future {
6407                            let inner = Arc::clone(&self.0);
6408                            let fut = async move { <T as NodeService>::get_metacache_listing(&inner, request).await };
6409                            Box::pin(fut)
6410                        }
6411                    }
6412                    let accept_compression_encodings = self.accept_compression_encodings;
6413                    let send_compression_encodings = self.send_compression_encodings;
6414                    let max_decoding_message_size = self.max_decoding_message_size;
6415                    let max_encoding_message_size = self.max_encoding_message_size;
6416                    let inner = self.inner.clone();
6417                    let fut = async move {
6418                        let method = GetMetacacheListingSvc(inner);
6419                        let codec = tonic_prost::ProstCodec::default();
6420                        let mut grpc = tonic::server::Grpc::new(codec)
6421                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6422                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6423                        let res = grpc.unary(method, req).await;
6424                        Ok(res)
6425                    };
6426                    Box::pin(fut)
6427                }
6428                "/node_service.NodeService/UpdateMetacacheListing" => {
6429                    #[allow(non_camel_case_types)]
6430                    struct UpdateMetacacheListingSvc<T: NodeService>(pub Arc<T>);
6431                    impl<T: NodeService> tonic::server::UnaryService<super::UpdateMetacacheListingRequest> for UpdateMetacacheListingSvc<T> {
6432                        type Response = super::UpdateMetacacheListingResponse;
6433                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6434                        fn call(&mut self, request: tonic::Request<super::UpdateMetacacheListingRequest>) -> Self::Future {
6435                            let inner = Arc::clone(&self.0);
6436                            let fut = async move { <T as NodeService>::update_metacache_listing(&inner, request).await };
6437                            Box::pin(fut)
6438                        }
6439                    }
6440                    let accept_compression_encodings = self.accept_compression_encodings;
6441                    let send_compression_encodings = self.send_compression_encodings;
6442                    let max_decoding_message_size = self.max_decoding_message_size;
6443                    let max_encoding_message_size = self.max_encoding_message_size;
6444                    let inner = self.inner.clone();
6445                    let fut = async move {
6446                        let method = UpdateMetacacheListingSvc(inner);
6447                        let codec = tonic_prost::ProstCodec::default();
6448                        let mut grpc = tonic::server::Grpc::new(codec)
6449                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6450                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6451                        let res = grpc.unary(method, req).await;
6452                        Ok(res)
6453                    };
6454                    Box::pin(fut)
6455                }
6456                "/node_service.NodeService/ReloadPoolMeta" => {
6457                    #[allow(non_camel_case_types)]
6458                    struct ReloadPoolMetaSvc<T: NodeService>(pub Arc<T>);
6459                    impl<T: NodeService> tonic::server::UnaryService<super::ReloadPoolMetaRequest> for ReloadPoolMetaSvc<T> {
6460                        type Response = super::ReloadPoolMetaResponse;
6461                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6462                        fn call(&mut self, request: tonic::Request<super::ReloadPoolMetaRequest>) -> Self::Future {
6463                            let inner = Arc::clone(&self.0);
6464                            let fut = async move { <T as NodeService>::reload_pool_meta(&inner, request).await };
6465                            Box::pin(fut)
6466                        }
6467                    }
6468                    let accept_compression_encodings = self.accept_compression_encodings;
6469                    let send_compression_encodings = self.send_compression_encodings;
6470                    let max_decoding_message_size = self.max_decoding_message_size;
6471                    let max_encoding_message_size = self.max_encoding_message_size;
6472                    let inner = self.inner.clone();
6473                    let fut = async move {
6474                        let method = ReloadPoolMetaSvc(inner);
6475                        let codec = tonic_prost::ProstCodec::default();
6476                        let mut grpc = tonic::server::Grpc::new(codec)
6477                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6478                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6479                        let res = grpc.unary(method, req).await;
6480                        Ok(res)
6481                    };
6482                    Box::pin(fut)
6483                }
6484                "/node_service.NodeService/StopRebalance" => {
6485                    #[allow(non_camel_case_types)]
6486                    struct StopRebalanceSvc<T: NodeService>(pub Arc<T>);
6487                    impl<T: NodeService> tonic::server::UnaryService<super::StopRebalanceRequest> for StopRebalanceSvc<T> {
6488                        type Response = super::StopRebalanceResponse;
6489                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6490                        fn call(&mut self, request: tonic::Request<super::StopRebalanceRequest>) -> Self::Future {
6491                            let inner = Arc::clone(&self.0);
6492                            let fut = async move { <T as NodeService>::stop_rebalance(&inner, request).await };
6493                            Box::pin(fut)
6494                        }
6495                    }
6496                    let accept_compression_encodings = self.accept_compression_encodings;
6497                    let send_compression_encodings = self.send_compression_encodings;
6498                    let max_decoding_message_size = self.max_decoding_message_size;
6499                    let max_encoding_message_size = self.max_encoding_message_size;
6500                    let inner = self.inner.clone();
6501                    let fut = async move {
6502                        let method = StopRebalanceSvc(inner);
6503                        let codec = tonic_prost::ProstCodec::default();
6504                        let mut grpc = tonic::server::Grpc::new(codec)
6505                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6506                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6507                        let res = grpc.unary(method, req).await;
6508                        Ok(res)
6509                    };
6510                    Box::pin(fut)
6511                }
6512                "/node_service.NodeService/LoadRebalanceMeta" => {
6513                    #[allow(non_camel_case_types)]
6514                    struct LoadRebalanceMetaSvc<T: NodeService>(pub Arc<T>);
6515                    impl<T: NodeService> tonic::server::UnaryService<super::LoadRebalanceMetaRequest> for LoadRebalanceMetaSvc<T> {
6516                        type Response = super::LoadRebalanceMetaResponse;
6517                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6518                        fn call(&mut self, request: tonic::Request<super::LoadRebalanceMetaRequest>) -> Self::Future {
6519                            let inner = Arc::clone(&self.0);
6520                            let fut = async move { <T as NodeService>::load_rebalance_meta(&inner, request).await };
6521                            Box::pin(fut)
6522                        }
6523                    }
6524                    let accept_compression_encodings = self.accept_compression_encodings;
6525                    let send_compression_encodings = self.send_compression_encodings;
6526                    let max_decoding_message_size = self.max_decoding_message_size;
6527                    let max_encoding_message_size = self.max_encoding_message_size;
6528                    let inner = self.inner.clone();
6529                    let fut = async move {
6530                        let method = LoadRebalanceMetaSvc(inner);
6531                        let codec = tonic_prost::ProstCodec::default();
6532                        let mut grpc = tonic::server::Grpc::new(codec)
6533                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6534                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6535                        let res = grpc.unary(method, req).await;
6536                        Ok(res)
6537                    };
6538                    Box::pin(fut)
6539                }
6540                "/node_service.NodeService/StartDecommission" => {
6541                    #[allow(non_camel_case_types)]
6542                    struct StartDecommissionSvc<T: NodeService>(pub Arc<T>);
6543                    impl<T: NodeService> tonic::server::UnaryService<super::StartDecommissionRequest> for StartDecommissionSvc<T> {
6544                        type Response = super::StartDecommissionResponse;
6545                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6546                        fn call(&mut self, request: tonic::Request<super::StartDecommissionRequest>) -> Self::Future {
6547                            let inner = Arc::clone(&self.0);
6548                            let fut = async move { <T as NodeService>::start_decommission(&inner, request).await };
6549                            Box::pin(fut)
6550                        }
6551                    }
6552                    let accept_compression_encodings = self.accept_compression_encodings;
6553                    let send_compression_encodings = self.send_compression_encodings;
6554                    let max_decoding_message_size = self.max_decoding_message_size;
6555                    let max_encoding_message_size = self.max_encoding_message_size;
6556                    let inner = self.inner.clone();
6557                    let fut = async move {
6558                        let method = StartDecommissionSvc(inner);
6559                        let codec = tonic_prost::ProstCodec::default();
6560                        let mut grpc = tonic::server::Grpc::new(codec)
6561                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6562                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6563                        let res = grpc.unary(method, req).await;
6564                        Ok(res)
6565                    };
6566                    Box::pin(fut)
6567                }
6568                "/node_service.NodeService/CancelDecommission" => {
6569                    #[allow(non_camel_case_types)]
6570                    struct CancelDecommissionSvc<T: NodeService>(pub Arc<T>);
6571                    impl<T: NodeService> tonic::server::UnaryService<super::CancelDecommissionRequest> for CancelDecommissionSvc<T> {
6572                        type Response = super::CancelDecommissionResponse;
6573                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6574                        fn call(&mut self, request: tonic::Request<super::CancelDecommissionRequest>) -> Self::Future {
6575                            let inner = Arc::clone(&self.0);
6576                            let fut = async move { <T as NodeService>::cancel_decommission(&inner, request).await };
6577                            Box::pin(fut)
6578                        }
6579                    }
6580                    let accept_compression_encodings = self.accept_compression_encodings;
6581                    let send_compression_encodings = self.send_compression_encodings;
6582                    let max_decoding_message_size = self.max_decoding_message_size;
6583                    let max_encoding_message_size = self.max_encoding_message_size;
6584                    let inner = self.inner.clone();
6585                    let fut = async move {
6586                        let method = CancelDecommissionSvc(inner);
6587                        let codec = tonic_prost::ProstCodec::default();
6588                        let mut grpc = tonic::server::Grpc::new(codec)
6589                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6590                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6591                        let res = grpc.unary(method, req).await;
6592                        Ok(res)
6593                    };
6594                    Box::pin(fut)
6595                }
6596                "/node_service.NodeService/ClearDecommission" => {
6597                    #[allow(non_camel_case_types)]
6598                    struct ClearDecommissionSvc<T: NodeService>(pub Arc<T>);
6599                    impl<T: NodeService> tonic::server::UnaryService<super::ClearDecommissionRequest> for ClearDecommissionSvc<T> {
6600                        type Response = super::ClearDecommissionResponse;
6601                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6602                        fn call(&mut self, request: tonic::Request<super::ClearDecommissionRequest>) -> Self::Future {
6603                            let inner = Arc::clone(&self.0);
6604                            let fut = async move { <T as NodeService>::clear_decommission(&inner, request).await };
6605                            Box::pin(fut)
6606                        }
6607                    }
6608                    let accept_compression_encodings = self.accept_compression_encodings;
6609                    let send_compression_encodings = self.send_compression_encodings;
6610                    let max_decoding_message_size = self.max_decoding_message_size;
6611                    let max_encoding_message_size = self.max_encoding_message_size;
6612                    let inner = self.inner.clone();
6613                    let fut = async move {
6614                        let method = ClearDecommissionSvc(inner);
6615                        let codec = tonic_prost::ProstCodec::default();
6616                        let mut grpc = tonic::server::Grpc::new(codec)
6617                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6618                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6619                        let res = grpc.unary(method, req).await;
6620                        Ok(res)
6621                    };
6622                    Box::pin(fut)
6623                }
6624                "/node_service.NodeService/LoadTransitionTierConfig" => {
6625                    #[allow(non_camel_case_types)]
6626                    struct LoadTransitionTierConfigSvc<T: NodeService>(pub Arc<T>);
6627                    impl<T: NodeService> tonic::server::UnaryService<super::LoadTransitionTierConfigRequest> for LoadTransitionTierConfigSvc<T> {
6628                        type Response = super::LoadTransitionTierConfigResponse;
6629                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6630                        fn call(&mut self, request: tonic::Request<super::LoadTransitionTierConfigRequest>) -> Self::Future {
6631                            let inner = Arc::clone(&self.0);
6632                            let fut = async move { <T as NodeService>::load_transition_tier_config(&inner, request).await };
6633                            Box::pin(fut)
6634                        }
6635                    }
6636                    let accept_compression_encodings = self.accept_compression_encodings;
6637                    let send_compression_encodings = self.send_compression_encodings;
6638                    let max_decoding_message_size = self.max_decoding_message_size;
6639                    let max_encoding_message_size = self.max_encoding_message_size;
6640                    let inner = self.inner.clone();
6641                    let fut = async move {
6642                        let method = LoadTransitionTierConfigSvc(inner);
6643                        let codec = tonic_prost::ProstCodec::default();
6644                        let mut grpc = tonic::server::Grpc::new(codec)
6645                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6646                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6647                        let res = grpc.unary(method, req).await;
6648                        Ok(res)
6649                    };
6650                    Box::pin(fut)
6651                }
6652                "/node_service.NodeService/TierDailyStats" => {
6653                    #[allow(non_camel_case_types)]
6654                    struct TierDailyStatsSvc<T: NodeService>(pub Arc<T>);
6655                    impl<T: NodeService> tonic::server::UnaryService<super::TierDailyStatsRequest> for TierDailyStatsSvc<T> {
6656                        type Response = super::TierDailyStatsResponse;
6657                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6658                        fn call(&mut self, request: tonic::Request<super::TierDailyStatsRequest>) -> Self::Future {
6659                            let inner = Arc::clone(&self.0);
6660                            let fut = async move { <T as NodeService>::tier_daily_stats(&inner, request).await };
6661                            Box::pin(fut)
6662                        }
6663                    }
6664                    let accept_compression_encodings = self.accept_compression_encodings;
6665                    let send_compression_encodings = self.send_compression_encodings;
6666                    let max_decoding_message_size = self.max_decoding_message_size;
6667                    let max_encoding_message_size = self.max_encoding_message_size;
6668                    let inner = self.inner.clone();
6669                    let fut = async move {
6670                        let method = TierDailyStatsSvc(inner);
6671                        let codec = tonic_prost::ProstCodec::default();
6672                        let mut grpc = tonic::server::Grpc::new(codec)
6673                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6674                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6675                        let res = grpc.unary(method, req).await;
6676                        Ok(res)
6677                    };
6678                    Box::pin(fut)
6679                }
6680                "/node_service.NodeService/GetLiveEvents" => {
6681                    #[allow(non_camel_case_types)]
6682                    struct GetLiveEventsSvc<T: NodeService>(pub Arc<T>);
6683                    impl<T: NodeService> tonic::server::UnaryService<super::GetLiveEventsRequest> for GetLiveEventsSvc<T> {
6684                        type Response = super::GetLiveEventsResponse;
6685                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6686                        fn call(&mut self, request: tonic::Request<super::GetLiveEventsRequest>) -> Self::Future {
6687                            let inner = Arc::clone(&self.0);
6688                            let fut = async move { <T as NodeService>::get_live_events(&inner, request).await };
6689                            Box::pin(fut)
6690                        }
6691                    }
6692                    let accept_compression_encodings = self.accept_compression_encodings;
6693                    let send_compression_encodings = self.send_compression_encodings;
6694                    let max_decoding_message_size = self.max_decoding_message_size;
6695                    let max_encoding_message_size = self.max_encoding_message_size;
6696                    let inner = self.inner.clone();
6697                    let fut = async move {
6698                        let method = GetLiveEventsSvc(inner);
6699                        let codec = tonic_prost::ProstCodec::default();
6700                        let mut grpc = tonic::server::Grpc::new(codec)
6701                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6702                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6703                        let res = grpc.unary(method, req).await;
6704                        Ok(res)
6705                    };
6706                    Box::pin(fut)
6707                }
6708                _ => Box::pin(async move {
6709                    let mut response = http::Response::new(tonic::body::Body::default());
6710                    let headers = response.headers_mut();
6711                    headers.insert(tonic::Status::GRPC_STATUS, (tonic::Code::Unimplemented as i32).into());
6712                    headers.insert(http::header::CONTENT_TYPE, tonic::metadata::GRPC_CONTENT_TYPE);
6713                    Ok(response)
6714                }),
6715            }
6716        }
6717    }
6718    impl<T> Clone for NodeServiceServer<T> {
6719        fn clone(&self) -> Self {
6720            let inner = self.inner.clone();
6721            Self {
6722                inner,
6723                accept_compression_encodings: self.accept_compression_encodings,
6724                send_compression_encodings: self.send_compression_encodings,
6725                max_decoding_message_size: self.max_decoding_message_size,
6726                max_encoding_message_size: self.max_encoding_message_size,
6727            }
6728        }
6729    }
6730    /// Generated gRPC service name
6731    pub const SERVICE_NAME: &str = "node_service.NodeService";
6732    impl<T> tonic::server::NamedService for NodeServiceServer<T> {
6733        const NAME: &'static str = SERVICE_NAME;
6734    }
6735}
6736/// Generated client implementations.
6737pub mod scanner_control_service_client {
6738    #![allow(unused_variables, dead_code, missing_docs, clippy::wildcard_imports, clippy::let_unit_value)]
6739    use tonic::codegen::http::Uri;
6740    use tonic::codegen::*;
6741    #[derive(Debug, Clone)]
6742    pub struct ScannerControlServiceClient<T> {
6743        inner: tonic::client::Grpc<T>,
6744    }
6745    impl ScannerControlServiceClient<tonic::transport::Channel> {
6746        /// Attempt to create a new client by connecting to a given endpoint.
6747        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
6748        where
6749            D: TryInto<tonic::transport::Endpoint>,
6750            D::Error: Into<StdError>,
6751        {
6752            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
6753            Ok(Self::new(conn))
6754        }
6755    }
6756    impl<T> ScannerControlServiceClient<T>
6757    where
6758        T: tonic::client::GrpcService<tonic::body::Body>,
6759        T::Error: Into<StdError>,
6760        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
6761        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
6762    {
6763        pub fn new(inner: T) -> Self {
6764            let inner = tonic::client::Grpc::new(inner);
6765            Self { inner }
6766        }
6767        pub fn with_origin(inner: T, origin: Uri) -> Self {
6768            let inner = tonic::client::Grpc::with_origin(inner, origin);
6769            Self { inner }
6770        }
6771        pub fn with_interceptor<F>(inner: T, interceptor: F) -> ScannerControlServiceClient<InterceptedService<T, F>>
6772        where
6773            F: tonic::service::Interceptor,
6774            T::ResponseBody: Default,
6775            T: tonic::codegen::Service<
6776                    http::Request<tonic::body::Body>,
6777                    Response = http::Response<<T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody>,
6778                >,
6779            <T as tonic::codegen::Service<http::Request<tonic::body::Body>>>::Error:
6780                Into<StdError> + std::marker::Send + std::marker::Sync,
6781        {
6782            ScannerControlServiceClient::new(InterceptedService::new(inner, interceptor))
6783        }
6784        /// Compress requests with the given encoding.
6785        ///
6786        /// This requires the server to support it otherwise it might respond with an
6787        /// error.
6788        #[must_use]
6789        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
6790            self.inner = self.inner.send_compressed(encoding);
6791            self
6792        }
6793        /// Enable decompressing responses.
6794        #[must_use]
6795        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
6796            self.inner = self.inner.accept_compressed(encoding);
6797            self
6798        }
6799        /// Limits the maximum size of a decoded message.
6800        ///
6801        /// Default: `4MB`
6802        #[must_use]
6803        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
6804            self.inner = self.inner.max_decoding_message_size(limit);
6805            self
6806        }
6807        /// Limits the maximum size of an encoded message.
6808        ///
6809        /// Default: `usize::MAX`
6810        #[must_use]
6811        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
6812            self.inner = self.inner.max_encoding_message_size(limit);
6813            self
6814        }
6815        pub async fn scanner_scoped_dirty_usage_ack(
6816            &mut self,
6817            request: impl tonic::IntoRequest<super::ScannerScopedDirtyUsageAckRequest>,
6818        ) -> std::result::Result<tonic::Response<super::ScannerScopedDirtyUsageAckResponse>, tonic::Status> {
6819            self.inner
6820                .ready()
6821                .await
6822                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
6823            let codec = tonic_prost::ProstCodec::default();
6824            let path = http::uri::PathAndQuery::from_static("/node_service.ScannerControlService/ScannerScopedDirtyUsageAck");
6825            let mut req = request.into_request();
6826            req.extensions_mut()
6827                .insert(GrpcMethod::new("node_service.ScannerControlService", "ScannerScopedDirtyUsageAck"));
6828            self.inner.unary(req, path, codec).await
6829        }
6830    }
6831}
6832/// Generated server implementations.
6833pub mod scanner_control_service_server {
6834    #![allow(unused_variables, dead_code, missing_docs, clippy::wildcard_imports, clippy::let_unit_value)]
6835    use tonic::codegen::*;
6836    /// Generated trait containing gRPC methods that should be implemented for use with ScannerControlServiceServer.
6837    #[async_trait]
6838    pub trait ScannerControlService: std::marker::Send + std::marker::Sync + 'static {
6839        async fn scanner_scoped_dirty_usage_ack(
6840            &self,
6841            request: tonic::Request<super::ScannerScopedDirtyUsageAckRequest>,
6842        ) -> std::result::Result<tonic::Response<super::ScannerScopedDirtyUsageAckResponse>, tonic::Status>;
6843    }
6844    #[derive(Debug)]
6845    pub struct ScannerControlServiceServer<T> {
6846        inner: Arc<T>,
6847        accept_compression_encodings: EnabledCompressionEncodings,
6848        send_compression_encodings: EnabledCompressionEncodings,
6849        max_decoding_message_size: Option<usize>,
6850        max_encoding_message_size: Option<usize>,
6851    }
6852    impl<T> ScannerControlServiceServer<T> {
6853        pub fn new(inner: T) -> Self {
6854            Self::from_arc(Arc::new(inner))
6855        }
6856        pub fn from_arc(inner: Arc<T>) -> Self {
6857            Self {
6858                inner,
6859                accept_compression_encodings: Default::default(),
6860                send_compression_encodings: Default::default(),
6861                max_decoding_message_size: None,
6862                max_encoding_message_size: None,
6863            }
6864        }
6865        pub fn with_interceptor<F>(inner: T, interceptor: F) -> InterceptedService<Self, F>
6866        where
6867            F: tonic::service::Interceptor,
6868        {
6869            InterceptedService::new(Self::new(inner), interceptor)
6870        }
6871        /// Enable decompressing requests with the given encoding.
6872        #[must_use]
6873        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
6874            self.accept_compression_encodings.enable(encoding);
6875            self
6876        }
6877        /// Compress responses with the given encoding, if the client supports it.
6878        #[must_use]
6879        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
6880            self.send_compression_encodings.enable(encoding);
6881            self
6882        }
6883        /// Limits the maximum size of a decoded message.
6884        ///
6885        /// Default: `4MB`
6886        #[must_use]
6887        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
6888            self.max_decoding_message_size = Some(limit);
6889            self
6890        }
6891        /// Limits the maximum size of an encoded message.
6892        ///
6893        /// Default: `usize::MAX`
6894        #[must_use]
6895        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
6896            self.max_encoding_message_size = Some(limit);
6897            self
6898        }
6899    }
6900    impl<T, B> tonic::codegen::Service<http::Request<B>> for ScannerControlServiceServer<T>
6901    where
6902        T: ScannerControlService,
6903        B: Body + std::marker::Send + 'static,
6904        B::Error: Into<StdError> + std::marker::Send + 'static,
6905    {
6906        type Response = http::Response<tonic::body::Body>;
6907        type Error = std::convert::Infallible;
6908        type Future = BoxFuture<Self::Response, Self::Error>;
6909        fn poll_ready(&mut self, _cx: &mut Context<'_>) -> Poll<std::result::Result<(), Self::Error>> {
6910            Poll::Ready(Ok(()))
6911        }
6912        fn call(&mut self, req: http::Request<B>) -> Self::Future {
6913            match req.uri().path() {
6914                "/node_service.ScannerControlService/ScannerScopedDirtyUsageAck" => {
6915                    #[allow(non_camel_case_types)]
6916                    struct ScannerScopedDirtyUsageAckSvc<T: ScannerControlService>(pub Arc<T>);
6917                    impl<T: ScannerControlService> tonic::server::UnaryService<super::ScannerScopedDirtyUsageAckRequest>
6918                        for ScannerScopedDirtyUsageAckSvc<T>
6919                    {
6920                        type Response = super::ScannerScopedDirtyUsageAckResponse;
6921                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
6922                        fn call(&mut self, request: tonic::Request<super::ScannerScopedDirtyUsageAckRequest>) -> Self::Future {
6923                            let inner = Arc::clone(&self.0);
6924                            let fut = async move {
6925                                <T as ScannerControlService>::scanner_scoped_dirty_usage_ack(&inner, request).await
6926                            };
6927                            Box::pin(fut)
6928                        }
6929                    }
6930                    let accept_compression_encodings = self.accept_compression_encodings;
6931                    let send_compression_encodings = self.send_compression_encodings;
6932                    let max_decoding_message_size = self.max_decoding_message_size;
6933                    let max_encoding_message_size = self.max_encoding_message_size;
6934                    let inner = self.inner.clone();
6935                    let fut = async move {
6936                        let method = ScannerScopedDirtyUsageAckSvc(inner);
6937                        let codec = tonic_prost::ProstCodec::default();
6938                        let mut grpc = tonic::server::Grpc::new(codec)
6939                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
6940                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
6941                        let res = grpc.unary(method, req).await;
6942                        Ok(res)
6943                    };
6944                    Box::pin(fut)
6945                }
6946                _ => Box::pin(async move {
6947                    let mut response = http::Response::new(tonic::body::Body::default());
6948                    let headers = response.headers_mut();
6949                    headers.insert(tonic::Status::GRPC_STATUS, (tonic::Code::Unimplemented as i32).into());
6950                    headers.insert(http::header::CONTENT_TYPE, tonic::metadata::GRPC_CONTENT_TYPE);
6951                    Ok(response)
6952                }),
6953            }
6954        }
6955    }
6956    impl<T> Clone for ScannerControlServiceServer<T> {
6957        fn clone(&self) -> Self {
6958            let inner = self.inner.clone();
6959            Self {
6960                inner,
6961                accept_compression_encodings: self.accept_compression_encodings,
6962                send_compression_encodings: self.send_compression_encodings,
6963                max_decoding_message_size: self.max_decoding_message_size,
6964                max_encoding_message_size: self.max_encoding_message_size,
6965            }
6966        }
6967    }
6968    /// Generated gRPC service name
6969    pub const SERVICE_NAME: &str = "node_service.ScannerControlService";
6970    impl<T> tonic::server::NamedService for ScannerControlServiceServer<T> {
6971        const NAME: &'static str = SERVICE_NAME;
6972    }
6973}
6974/// Generated client implementations.
6975pub mod heal_control_service_client {
6976    #![allow(unused_variables, dead_code, missing_docs, clippy::wildcard_imports, clippy::let_unit_value)]
6977    use tonic::codegen::http::Uri;
6978    use tonic::codegen::*;
6979    #[derive(Debug, Clone)]
6980    pub struct HealControlServiceClient<T> {
6981        inner: tonic::client::Grpc<T>,
6982    }
6983    impl HealControlServiceClient<tonic::transport::Channel> {
6984        /// Attempt to create a new client by connecting to a given endpoint.
6985        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
6986        where
6987            D: TryInto<tonic::transport::Endpoint>,
6988            D::Error: Into<StdError>,
6989        {
6990            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
6991            Ok(Self::new(conn))
6992        }
6993    }
6994    impl<T> HealControlServiceClient<T>
6995    where
6996        T: tonic::client::GrpcService<tonic::body::Body>,
6997        T::Error: Into<StdError>,
6998        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
6999        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
7000    {
7001        pub fn new(inner: T) -> Self {
7002            let inner = tonic::client::Grpc::new(inner);
7003            Self { inner }
7004        }
7005        pub fn with_origin(inner: T, origin: Uri) -> Self {
7006            let inner = tonic::client::Grpc::with_origin(inner, origin);
7007            Self { inner }
7008        }
7009        pub fn with_interceptor<F>(inner: T, interceptor: F) -> HealControlServiceClient<InterceptedService<T, F>>
7010        where
7011            F: tonic::service::Interceptor,
7012            T::ResponseBody: Default,
7013            T: tonic::codegen::Service<
7014                    http::Request<tonic::body::Body>,
7015                    Response = http::Response<<T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody>,
7016                >,
7017            <T as tonic::codegen::Service<http::Request<tonic::body::Body>>>::Error:
7018                Into<StdError> + std::marker::Send + std::marker::Sync,
7019        {
7020            HealControlServiceClient::new(InterceptedService::new(inner, interceptor))
7021        }
7022        /// Compress requests with the given encoding.
7023        ///
7024        /// This requires the server to support it otherwise it might respond with an
7025        /// error.
7026        #[must_use]
7027        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
7028            self.inner = self.inner.send_compressed(encoding);
7029            self
7030        }
7031        /// Enable decompressing responses.
7032        #[must_use]
7033        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
7034            self.inner = self.inner.accept_compressed(encoding);
7035            self
7036        }
7037        /// Limits the maximum size of a decoded message.
7038        ///
7039        /// Default: `4MB`
7040        #[must_use]
7041        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
7042            self.inner = self.inner.max_decoding_message_size(limit);
7043            self
7044        }
7045        /// Limits the maximum size of an encoded message.
7046        ///
7047        /// Default: `usize::MAX`
7048        #[must_use]
7049        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
7050            self.inner = self.inner.max_encoding_message_size(limit);
7051            self
7052        }
7053        pub async fn heal_control(
7054            &mut self,
7055            request: impl tonic::IntoRequest<super::HealControlRequest>,
7056        ) -> std::result::Result<tonic::Response<super::HealControlResponse>, tonic::Status> {
7057            self.inner
7058                .ready()
7059                .await
7060                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
7061            let codec = tonic_prost::ProstCodec::default();
7062            let path = http::uri::PathAndQuery::from_static("/node_service.HealControlService/HealControl");
7063            let mut req = request.into_request();
7064            req.extensions_mut()
7065                .insert(GrpcMethod::new("node_service.HealControlService", "HealControl"));
7066            self.inner.unary(req, path, codec).await
7067        }
7068    }
7069}
7070/// Generated server implementations.
7071pub mod heal_control_service_server {
7072    #![allow(unused_variables, dead_code, missing_docs, clippy::wildcard_imports, clippy::let_unit_value)]
7073    use tonic::codegen::*;
7074    /// Generated trait containing gRPC methods that should be implemented for use with HealControlServiceServer.
7075    #[async_trait]
7076    pub trait HealControlService: std::marker::Send + std::marker::Sync + 'static {
7077        async fn heal_control(
7078            &self,
7079            request: tonic::Request<super::HealControlRequest>,
7080        ) -> std::result::Result<tonic::Response<super::HealControlResponse>, tonic::Status>;
7081    }
7082    #[derive(Debug)]
7083    pub struct HealControlServiceServer<T> {
7084        inner: Arc<T>,
7085        accept_compression_encodings: EnabledCompressionEncodings,
7086        send_compression_encodings: EnabledCompressionEncodings,
7087        max_decoding_message_size: Option<usize>,
7088        max_encoding_message_size: Option<usize>,
7089    }
7090    impl<T> HealControlServiceServer<T> {
7091        pub fn new(inner: T) -> Self {
7092            Self::from_arc(Arc::new(inner))
7093        }
7094        pub fn from_arc(inner: Arc<T>) -> Self {
7095            Self {
7096                inner,
7097                accept_compression_encodings: Default::default(),
7098                send_compression_encodings: Default::default(),
7099                max_decoding_message_size: None,
7100                max_encoding_message_size: None,
7101            }
7102        }
7103        pub fn with_interceptor<F>(inner: T, interceptor: F) -> InterceptedService<Self, F>
7104        where
7105            F: tonic::service::Interceptor,
7106        {
7107            InterceptedService::new(Self::new(inner), interceptor)
7108        }
7109        /// Enable decompressing requests with the given encoding.
7110        #[must_use]
7111        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
7112            self.accept_compression_encodings.enable(encoding);
7113            self
7114        }
7115        /// Compress responses with the given encoding, if the client supports it.
7116        #[must_use]
7117        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
7118            self.send_compression_encodings.enable(encoding);
7119            self
7120        }
7121        /// Limits the maximum size of a decoded message.
7122        ///
7123        /// Default: `4MB`
7124        #[must_use]
7125        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
7126            self.max_decoding_message_size = Some(limit);
7127            self
7128        }
7129        /// Limits the maximum size of an encoded message.
7130        ///
7131        /// Default: `usize::MAX`
7132        #[must_use]
7133        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
7134            self.max_encoding_message_size = Some(limit);
7135            self
7136        }
7137    }
7138    impl<T, B> tonic::codegen::Service<http::Request<B>> for HealControlServiceServer<T>
7139    where
7140        T: HealControlService,
7141        B: Body + std::marker::Send + 'static,
7142        B::Error: Into<StdError> + std::marker::Send + 'static,
7143    {
7144        type Response = http::Response<tonic::body::Body>;
7145        type Error = std::convert::Infallible;
7146        type Future = BoxFuture<Self::Response, Self::Error>;
7147        fn poll_ready(&mut self, _cx: &mut Context<'_>) -> Poll<std::result::Result<(), Self::Error>> {
7148            Poll::Ready(Ok(()))
7149        }
7150        fn call(&mut self, req: http::Request<B>) -> Self::Future {
7151            match req.uri().path() {
7152                "/node_service.HealControlService/HealControl" => {
7153                    #[allow(non_camel_case_types)]
7154                    struct HealControlSvc<T: HealControlService>(pub Arc<T>);
7155                    impl<T: HealControlService> tonic::server::UnaryService<super::HealControlRequest> for HealControlSvc<T> {
7156                        type Response = super::HealControlResponse;
7157                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
7158                        fn call(&mut self, request: tonic::Request<super::HealControlRequest>) -> Self::Future {
7159                            let inner = Arc::clone(&self.0);
7160                            let fut = async move { <T as HealControlService>::heal_control(&inner, request).await };
7161                            Box::pin(fut)
7162                        }
7163                    }
7164                    let accept_compression_encodings = self.accept_compression_encodings;
7165                    let send_compression_encodings = self.send_compression_encodings;
7166                    let max_decoding_message_size = self.max_decoding_message_size;
7167                    let max_encoding_message_size = self.max_encoding_message_size;
7168                    let inner = self.inner.clone();
7169                    let fut = async move {
7170                        let method = HealControlSvc(inner);
7171                        let codec = tonic_prost::ProstCodec::default();
7172                        let mut grpc = tonic::server::Grpc::new(codec)
7173                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
7174                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
7175                        let res = grpc.unary(method, req).await;
7176                        Ok(res)
7177                    };
7178                    Box::pin(fut)
7179                }
7180                _ => Box::pin(async move {
7181                    let mut response = http::Response::new(tonic::body::Body::default());
7182                    let headers = response.headers_mut();
7183                    headers.insert(tonic::Status::GRPC_STATUS, (tonic::Code::Unimplemented as i32).into());
7184                    headers.insert(http::header::CONTENT_TYPE, tonic::metadata::GRPC_CONTENT_TYPE);
7185                    Ok(response)
7186                }),
7187            }
7188        }
7189    }
7190    impl<T> Clone for HealControlServiceServer<T> {
7191        fn clone(&self) -> Self {
7192            let inner = self.inner.clone();
7193            Self {
7194                inner,
7195                accept_compression_encodings: self.accept_compression_encodings,
7196                send_compression_encodings: self.send_compression_encodings,
7197                max_decoding_message_size: self.max_decoding_message_size,
7198                max_encoding_message_size: self.max_encoding_message_size,
7199            }
7200        }
7201    }
7202    /// Generated gRPC service name
7203    pub const SERVICE_NAME: &str = "node_service.HealControlService";
7204    impl<T> tonic::server::NamedService for HealControlServiceServer<T> {
7205        const NAME: &'static str = SERVICE_NAME;
7206    }
7207}
7208/// Generated client implementations.
7209pub mod tier_mutation_control_service_client {
7210    #![allow(unused_variables, dead_code, missing_docs, clippy::wildcard_imports, clippy::let_unit_value)]
7211    use tonic::codegen::http::Uri;
7212    use tonic::codegen::*;
7213    #[derive(Debug, Clone)]
7214    pub struct TierMutationControlServiceClient<T> {
7215        inner: tonic::client::Grpc<T>,
7216    }
7217    impl TierMutationControlServiceClient<tonic::transport::Channel> {
7218        /// Attempt to create a new client by connecting to a given endpoint.
7219        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
7220        where
7221            D: TryInto<tonic::transport::Endpoint>,
7222            D::Error: Into<StdError>,
7223        {
7224            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
7225            Ok(Self::new(conn))
7226        }
7227    }
7228    impl<T> TierMutationControlServiceClient<T>
7229    where
7230        T: tonic::client::GrpcService<tonic::body::Body>,
7231        T::Error: Into<StdError>,
7232        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
7233        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
7234    {
7235        pub fn new(inner: T) -> Self {
7236            let inner = tonic::client::Grpc::new(inner);
7237            Self { inner }
7238        }
7239        pub fn with_origin(inner: T, origin: Uri) -> Self {
7240            let inner = tonic::client::Grpc::with_origin(inner, origin);
7241            Self { inner }
7242        }
7243        pub fn with_interceptor<F>(inner: T, interceptor: F) -> TierMutationControlServiceClient<InterceptedService<T, F>>
7244        where
7245            F: tonic::service::Interceptor,
7246            T::ResponseBody: Default,
7247            T: tonic::codegen::Service<
7248                    http::Request<tonic::body::Body>,
7249                    Response = http::Response<<T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody>,
7250                >,
7251            <T as tonic::codegen::Service<http::Request<tonic::body::Body>>>::Error:
7252                Into<StdError> + std::marker::Send + std::marker::Sync,
7253        {
7254            TierMutationControlServiceClient::new(InterceptedService::new(inner, interceptor))
7255        }
7256        /// Compress requests with the given encoding.
7257        ///
7258        /// This requires the server to support it otherwise it might respond with an
7259        /// error.
7260        #[must_use]
7261        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
7262            self.inner = self.inner.send_compressed(encoding);
7263            self
7264        }
7265        /// Enable decompressing responses.
7266        #[must_use]
7267        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
7268            self.inner = self.inner.accept_compressed(encoding);
7269            self
7270        }
7271        /// Limits the maximum size of a decoded message.
7272        ///
7273        /// Default: `4MB`
7274        #[must_use]
7275        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
7276            self.inner = self.inner.max_decoding_message_size(limit);
7277            self
7278        }
7279        /// Limits the maximum size of an encoded message.
7280        ///
7281        /// Default: `usize::MAX`
7282        #[must_use]
7283        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
7284            self.inner = self.inner.max_encoding_message_size(limit);
7285            self
7286        }
7287        pub async fn prepare_tier_mutation(
7288            &mut self,
7289            request: impl tonic::IntoRequest<super::TierMutationPrepareRequest>,
7290        ) -> std::result::Result<tonic::Response<super::TierMutationControlResponse>, tonic::Status> {
7291            self.inner
7292                .ready()
7293                .await
7294                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
7295            let codec = tonic_prost::ProstCodec::default();
7296            let path = http::uri::PathAndQuery::from_static("/node_service.TierMutationControlService/PrepareTierMutation");
7297            let mut req = request.into_request();
7298            req.extensions_mut()
7299                .insert(GrpcMethod::new("node_service.TierMutationControlService", "PrepareTierMutation"));
7300            self.inner.unary(req, path, codec).await
7301        }
7302        pub async fn commit_tier_mutation(
7303            &mut self,
7304            request: impl tonic::IntoRequest<super::TierMutationCommitRequest>,
7305        ) -> std::result::Result<tonic::Response<super::TierMutationControlResponse>, tonic::Status> {
7306            self.inner
7307                .ready()
7308                .await
7309                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
7310            let codec = tonic_prost::ProstCodec::default();
7311            let path = http::uri::PathAndQuery::from_static("/node_service.TierMutationControlService/CommitTierMutation");
7312            let mut req = request.into_request();
7313            req.extensions_mut()
7314                .insert(GrpcMethod::new("node_service.TierMutationControlService", "CommitTierMutation"));
7315            self.inner.unary(req, path, codec).await
7316        }
7317        pub async fn abort_tier_mutation(
7318            &mut self,
7319            request: impl tonic::IntoRequest<super::TierMutationAbortRequest>,
7320        ) -> std::result::Result<tonic::Response<super::TierMutationControlResponse>, tonic::Status> {
7321            self.inner
7322                .ready()
7323                .await
7324                .map_err(|e| tonic::Status::unknown(format!("Service was not ready: {}", e.into())))?;
7325            let codec = tonic_prost::ProstCodec::default();
7326            let path = http::uri::PathAndQuery::from_static("/node_service.TierMutationControlService/AbortTierMutation");
7327            let mut req = request.into_request();
7328            req.extensions_mut()
7329                .insert(GrpcMethod::new("node_service.TierMutationControlService", "AbortTierMutation"));
7330            self.inner.unary(req, path, codec).await
7331        }
7332    }
7333}
7334/// Generated server implementations.
7335pub mod tier_mutation_control_service_server {
7336    #![allow(unused_variables, dead_code, missing_docs, clippy::wildcard_imports, clippy::let_unit_value)]
7337    use tonic::codegen::*;
7338    /// Generated trait containing gRPC methods that should be implemented for use with TierMutationControlServiceServer.
7339    #[async_trait]
7340    pub trait TierMutationControlService: std::marker::Send + std::marker::Sync + 'static {
7341        async fn prepare_tier_mutation(
7342            &self,
7343            request: tonic::Request<super::TierMutationPrepareRequest>,
7344        ) -> std::result::Result<tonic::Response<super::TierMutationControlResponse>, tonic::Status>;
7345        async fn commit_tier_mutation(
7346            &self,
7347            request: tonic::Request<super::TierMutationCommitRequest>,
7348        ) -> std::result::Result<tonic::Response<super::TierMutationControlResponse>, tonic::Status>;
7349        async fn abort_tier_mutation(
7350            &self,
7351            request: tonic::Request<super::TierMutationAbortRequest>,
7352        ) -> std::result::Result<tonic::Response<super::TierMutationControlResponse>, tonic::Status>;
7353    }
7354    #[derive(Debug)]
7355    pub struct TierMutationControlServiceServer<T> {
7356        inner: Arc<T>,
7357        accept_compression_encodings: EnabledCompressionEncodings,
7358        send_compression_encodings: EnabledCompressionEncodings,
7359        max_decoding_message_size: Option<usize>,
7360        max_encoding_message_size: Option<usize>,
7361    }
7362    impl<T> TierMutationControlServiceServer<T> {
7363        pub fn new(inner: T) -> Self {
7364            Self::from_arc(Arc::new(inner))
7365        }
7366        pub fn from_arc(inner: Arc<T>) -> Self {
7367            Self {
7368                inner,
7369                accept_compression_encodings: Default::default(),
7370                send_compression_encodings: Default::default(),
7371                max_decoding_message_size: None,
7372                max_encoding_message_size: None,
7373            }
7374        }
7375        pub fn with_interceptor<F>(inner: T, interceptor: F) -> InterceptedService<Self, F>
7376        where
7377            F: tonic::service::Interceptor,
7378        {
7379            InterceptedService::new(Self::new(inner), interceptor)
7380        }
7381        /// Enable decompressing requests with the given encoding.
7382        #[must_use]
7383        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
7384            self.accept_compression_encodings.enable(encoding);
7385            self
7386        }
7387        /// Compress responses with the given encoding, if the client supports it.
7388        #[must_use]
7389        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
7390            self.send_compression_encodings.enable(encoding);
7391            self
7392        }
7393        /// Limits the maximum size of a decoded message.
7394        ///
7395        /// Default: `4MB`
7396        #[must_use]
7397        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
7398            self.max_decoding_message_size = Some(limit);
7399            self
7400        }
7401        /// Limits the maximum size of an encoded message.
7402        ///
7403        /// Default: `usize::MAX`
7404        #[must_use]
7405        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
7406            self.max_encoding_message_size = Some(limit);
7407            self
7408        }
7409    }
7410    impl<T, B> tonic::codegen::Service<http::Request<B>> for TierMutationControlServiceServer<T>
7411    where
7412        T: TierMutationControlService,
7413        B: Body + std::marker::Send + 'static,
7414        B::Error: Into<StdError> + std::marker::Send + 'static,
7415    {
7416        type Response = http::Response<tonic::body::Body>;
7417        type Error = std::convert::Infallible;
7418        type Future = BoxFuture<Self::Response, Self::Error>;
7419        fn poll_ready(&mut self, _cx: &mut Context<'_>) -> Poll<std::result::Result<(), Self::Error>> {
7420            Poll::Ready(Ok(()))
7421        }
7422        fn call(&mut self, req: http::Request<B>) -> Self::Future {
7423            match req.uri().path() {
7424                "/node_service.TierMutationControlService/PrepareTierMutation" => {
7425                    #[allow(non_camel_case_types)]
7426                    struct PrepareTierMutationSvc<T: TierMutationControlService>(pub Arc<T>);
7427                    impl<T: TierMutationControlService> tonic::server::UnaryService<super::TierMutationPrepareRequest> for PrepareTierMutationSvc<T> {
7428                        type Response = super::TierMutationControlResponse;
7429                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
7430                        fn call(&mut self, request: tonic::Request<super::TierMutationPrepareRequest>) -> Self::Future {
7431                            let inner = Arc::clone(&self.0);
7432                            let fut =
7433                                async move { <T as TierMutationControlService>::prepare_tier_mutation(&inner, request).await };
7434                            Box::pin(fut)
7435                        }
7436                    }
7437                    let accept_compression_encodings = self.accept_compression_encodings;
7438                    let send_compression_encodings = self.send_compression_encodings;
7439                    let max_decoding_message_size = self.max_decoding_message_size;
7440                    let max_encoding_message_size = self.max_encoding_message_size;
7441                    let inner = self.inner.clone();
7442                    let fut = async move {
7443                        let method = PrepareTierMutationSvc(inner);
7444                        let codec = tonic_prost::ProstCodec::default();
7445                        let mut grpc = tonic::server::Grpc::new(codec)
7446                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
7447                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
7448                        let res = grpc.unary(method, req).await;
7449                        Ok(res)
7450                    };
7451                    Box::pin(fut)
7452                }
7453                "/node_service.TierMutationControlService/CommitTierMutation" => {
7454                    #[allow(non_camel_case_types)]
7455                    struct CommitTierMutationSvc<T: TierMutationControlService>(pub Arc<T>);
7456                    impl<T: TierMutationControlService> tonic::server::UnaryService<super::TierMutationCommitRequest> for CommitTierMutationSvc<T> {
7457                        type Response = super::TierMutationControlResponse;
7458                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
7459                        fn call(&mut self, request: tonic::Request<super::TierMutationCommitRequest>) -> Self::Future {
7460                            let inner = Arc::clone(&self.0);
7461                            let fut =
7462                                async move { <T as TierMutationControlService>::commit_tier_mutation(&inner, request).await };
7463                            Box::pin(fut)
7464                        }
7465                    }
7466                    let accept_compression_encodings = self.accept_compression_encodings;
7467                    let send_compression_encodings = self.send_compression_encodings;
7468                    let max_decoding_message_size = self.max_decoding_message_size;
7469                    let max_encoding_message_size = self.max_encoding_message_size;
7470                    let inner = self.inner.clone();
7471                    let fut = async move {
7472                        let method = CommitTierMutationSvc(inner);
7473                        let codec = tonic_prost::ProstCodec::default();
7474                        let mut grpc = tonic::server::Grpc::new(codec)
7475                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
7476                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
7477                        let res = grpc.unary(method, req).await;
7478                        Ok(res)
7479                    };
7480                    Box::pin(fut)
7481                }
7482                "/node_service.TierMutationControlService/AbortTierMutation" => {
7483                    #[allow(non_camel_case_types)]
7484                    struct AbortTierMutationSvc<T: TierMutationControlService>(pub Arc<T>);
7485                    impl<T: TierMutationControlService> tonic::server::UnaryService<super::TierMutationAbortRequest> for AbortTierMutationSvc<T> {
7486                        type Response = super::TierMutationControlResponse;
7487                        type Future = BoxFuture<tonic::Response<Self::Response>, tonic::Status>;
7488                        fn call(&mut self, request: tonic::Request<super::TierMutationAbortRequest>) -> Self::Future {
7489                            let inner = Arc::clone(&self.0);
7490                            let fut =
7491                                async move { <T as TierMutationControlService>::abort_tier_mutation(&inner, request).await };
7492                            Box::pin(fut)
7493                        }
7494                    }
7495                    let accept_compression_encodings = self.accept_compression_encodings;
7496                    let send_compression_encodings = self.send_compression_encodings;
7497                    let max_decoding_message_size = self.max_decoding_message_size;
7498                    let max_encoding_message_size = self.max_encoding_message_size;
7499                    let inner = self.inner.clone();
7500                    let fut = async move {
7501                        let method = AbortTierMutationSvc(inner);
7502                        let codec = tonic_prost::ProstCodec::default();
7503                        let mut grpc = tonic::server::Grpc::new(codec)
7504                            .apply_compression_config(accept_compression_encodings, send_compression_encodings)
7505                            .apply_max_message_size_config(max_decoding_message_size, max_encoding_message_size);
7506                        let res = grpc.unary(method, req).await;
7507                        Ok(res)
7508                    };
7509                    Box::pin(fut)
7510                }
7511                _ => Box::pin(async move {
7512                    let mut response = http::Response::new(tonic::body::Body::default());
7513                    let headers = response.headers_mut();
7514                    headers.insert(tonic::Status::GRPC_STATUS, (tonic::Code::Unimplemented as i32).into());
7515                    headers.insert(http::header::CONTENT_TYPE, tonic::metadata::GRPC_CONTENT_TYPE);
7516                    Ok(response)
7517                }),
7518            }
7519        }
7520    }
7521    impl<T> Clone for TierMutationControlServiceServer<T> {
7522        fn clone(&self) -> Self {
7523            let inner = self.inner.clone();
7524            Self {
7525                inner,
7526                accept_compression_encodings: self.accept_compression_encodings,
7527                send_compression_encodings: self.send_compression_encodings,
7528                max_decoding_message_size: self.max_decoding_message_size,
7529                max_encoding_message_size: self.max_encoding_message_size,
7530            }
7531        }
7532    }
7533    /// Generated gRPC service name
7534    pub const SERVICE_NAME: &str = "node_service.TierMutationControlService";
7535    impl<T> tonic::server::NamedService for TierMutationControlServiceServer<T> {
7536        const NAME: &'static str = SERVICE_NAME;
7537    }
7538}