1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11#[derive(Clone, Debug, PartialEq)]
12pub struct OtaDownloaderFetchBlobRequest {
13 pub hash: fidl_fuchsia_pkg__common::BlobId,
14 pub base_url: String,
15}
16
17impl fidl::Persistable for OtaDownloaderFetchBlobRequest {}
18
19#[derive(Clone, Debug, Default, PartialEq)]
20pub struct PersistentEagerPackage {
21 pub url: Option<fidl_fuchsia_pkg__common::PackageUrl>,
22 pub cup: Option<fidl_fuchsia_pkg__common::CupData>,
23 #[doc(hidden)]
24 pub __source_breaking: fidl::marker::SourceBreaking,
25}
26
27impl fidl::Persistable for PersistentEagerPackage {}
28
29#[derive(Clone, Debug, Default, PartialEq)]
31pub struct PersistentEagerPackages {
32 pub packages: Option<Vec<PersistentEagerPackage>>,
33 #[doc(hidden)]
34 pub __source_breaking: fidl::marker::SourceBreaking,
35}
36
37impl fidl::Persistable for PersistentEagerPackages {}
38
39pub mod ota_downloader_ordinals {
40 pub const FETCH_BLOB: u64 = 0x56ce7896f8487c82;
41}
42
43mod internal {
44 use super::*;
45
46 impl fidl::encoding::ValueTypeMarker for OtaDownloaderFetchBlobRequest {
47 type Borrowed<'a> = &'a Self;
48 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
49 value
50 }
51 }
52
53 unsafe impl fidl::encoding::TypeMarker for OtaDownloaderFetchBlobRequest {
54 type Owned = Self;
55
56 #[inline(always)]
57 fn inline_align(_context: fidl::encoding::Context) -> usize {
58 8
59 }
60
61 #[inline(always)]
62 fn inline_size(_context: fidl::encoding::Context) -> usize {
63 48
64 }
65 }
66
67 unsafe impl<D: fidl::encoding::ResourceDialect>
68 fidl::encoding::Encode<OtaDownloaderFetchBlobRequest, D>
69 for &OtaDownloaderFetchBlobRequest
70 {
71 #[inline]
72 unsafe fn encode(
73 self,
74 encoder: &mut fidl::encoding::Encoder<'_, D>,
75 offset: usize,
76 _depth: fidl::encoding::Depth,
77 ) -> fidl::Result<()> {
78 encoder.debug_check_bounds::<OtaDownloaderFetchBlobRequest>(offset);
79 fidl::encoding::Encode::<OtaDownloaderFetchBlobRequest, D>::encode(
81 (
82 <fidl_fuchsia_pkg__common::BlobId as fidl::encoding::ValueTypeMarker>::borrow(&self.hash),
83 <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.base_url),
84 ),
85 encoder, offset, _depth
86 )
87 }
88 }
89 unsafe impl<
90 D: fidl::encoding::ResourceDialect,
91 T0: fidl::encoding::Encode<fidl_fuchsia_pkg__common::BlobId, D>,
92 T1: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
93 > fidl::encoding::Encode<OtaDownloaderFetchBlobRequest, D> for (T0, T1)
94 {
95 #[inline]
96 unsafe fn encode(
97 self,
98 encoder: &mut fidl::encoding::Encoder<'_, D>,
99 offset: usize,
100 depth: fidl::encoding::Depth,
101 ) -> fidl::Result<()> {
102 encoder.debug_check_bounds::<OtaDownloaderFetchBlobRequest>(offset);
103 self.0.encode(encoder, offset + 0, depth)?;
107 self.1.encode(encoder, offset + 32, depth)?;
108 Ok(())
109 }
110 }
111
112 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
113 for OtaDownloaderFetchBlobRequest
114 {
115 #[inline(always)]
116 fn new_empty() -> Self {
117 Self {
118 hash: fidl::new_empty!(fidl_fuchsia_pkg__common::BlobId, D),
119 base_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D),
120 }
121 }
122
123 #[inline]
124 unsafe fn decode(
125 &mut self,
126 decoder: &mut fidl::encoding::Decoder<'_, D>,
127 offset: usize,
128 _depth: fidl::encoding::Depth,
129 ) -> fidl::Result<()> {
130 decoder.debug_check_bounds::<Self>(offset);
131 fidl::decode!(
133 fidl_fuchsia_pkg__common::BlobId,
134 D,
135 &mut self.hash,
136 decoder,
137 offset + 0,
138 _depth
139 )?;
140 fidl::decode!(
141 fidl::encoding::BoundedString<4096>,
142 D,
143 &mut self.base_url,
144 decoder,
145 offset + 32,
146 _depth
147 )?;
148 Ok(())
149 }
150 }
151
152 impl PersistentEagerPackage {
153 #[inline(always)]
154 fn max_ordinal_present(&self) -> u64 {
155 if let Some(_) = self.cup {
156 return 2;
157 }
158 if let Some(_) = self.url {
159 return 1;
160 }
161 0
162 }
163 }
164
165 impl fidl::encoding::ValueTypeMarker for PersistentEagerPackage {
166 type Borrowed<'a> = &'a Self;
167 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
168 value
169 }
170 }
171
172 unsafe impl fidl::encoding::TypeMarker for PersistentEagerPackage {
173 type Owned = Self;
174
175 #[inline(always)]
176 fn inline_align(_context: fidl::encoding::Context) -> usize {
177 8
178 }
179
180 #[inline(always)]
181 fn inline_size(_context: fidl::encoding::Context) -> usize {
182 16
183 }
184 }
185
186 unsafe impl<D: fidl::encoding::ResourceDialect>
187 fidl::encoding::Encode<PersistentEagerPackage, D> for &PersistentEagerPackage
188 {
189 unsafe fn encode(
190 self,
191 encoder: &mut fidl::encoding::Encoder<'_, D>,
192 offset: usize,
193 mut depth: fidl::encoding::Depth,
194 ) -> fidl::Result<()> {
195 encoder.debug_check_bounds::<PersistentEagerPackage>(offset);
196 let max_ordinal: u64 = self.max_ordinal_present();
198 encoder.write_num(max_ordinal, offset);
199 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
200 if max_ordinal == 0 {
202 return Ok(());
203 }
204 depth.increment()?;
205 let envelope_size = 8;
206 let bytes_len = max_ordinal as usize * envelope_size;
207 #[allow(unused_variables)]
208 let offset = encoder.out_of_line_offset(bytes_len);
209 let mut _prev_end_offset: usize = 0;
210 if 1 > max_ordinal {
211 return Ok(());
212 }
213
214 let cur_offset: usize = (1 - 1) * envelope_size;
217
218 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
220
221 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_pkg__common::PackageUrl, D>(
226 self.url.as_ref().map(<fidl_fuchsia_pkg__common::PackageUrl as fidl::encoding::ValueTypeMarker>::borrow),
227 encoder, offset + cur_offset, depth
228 )?;
229
230 _prev_end_offset = cur_offset + envelope_size;
231 if 2 > max_ordinal {
232 return Ok(());
233 }
234
235 let cur_offset: usize = (2 - 1) * envelope_size;
238
239 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
241
242 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_pkg__common::CupData, D>(
247 self.cup.as_ref().map(
248 <fidl_fuchsia_pkg__common::CupData as fidl::encoding::ValueTypeMarker>::borrow,
249 ),
250 encoder,
251 offset + cur_offset,
252 depth,
253 )?;
254
255 _prev_end_offset = cur_offset + envelope_size;
256
257 Ok(())
258 }
259 }
260
261 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
262 for PersistentEagerPackage
263 {
264 #[inline(always)]
265 fn new_empty() -> Self {
266 Self::default()
267 }
268
269 unsafe fn decode(
270 &mut self,
271 decoder: &mut fidl::encoding::Decoder<'_, D>,
272 offset: usize,
273 mut depth: fidl::encoding::Depth,
274 ) -> fidl::Result<()> {
275 decoder.debug_check_bounds::<Self>(offset);
276 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
277 None => return Err(fidl::Error::NotNullable),
278 Some(len) => len,
279 };
280 if len == 0 {
282 return Ok(());
283 };
284 depth.increment()?;
285 let envelope_size = 8;
286 let bytes_len = len * envelope_size;
287 let offset = decoder.out_of_line_offset(bytes_len)?;
288 let mut _next_ordinal_to_read = 0;
290 let mut next_offset = offset;
291 let end_offset = offset + bytes_len;
292 _next_ordinal_to_read += 1;
293 if next_offset >= end_offset {
294 return Ok(());
295 }
296
297 while _next_ordinal_to_read < 1 {
299 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
300 _next_ordinal_to_read += 1;
301 next_offset += envelope_size;
302 }
303
304 let next_out_of_line = decoder.next_out_of_line();
305 let handles_before = decoder.remaining_handles();
306 if let Some((inlined, num_bytes, num_handles)) =
307 fidl::encoding::decode_envelope_header(decoder, next_offset)?
308 {
309 let member_inline_size = <fidl_fuchsia_pkg__common::PackageUrl as fidl::encoding::TypeMarker>::inline_size(decoder.context);
310 if inlined != (member_inline_size <= 4) {
311 return Err(fidl::Error::InvalidInlineBitInEnvelope);
312 }
313 let inner_offset;
314 let mut inner_depth = depth.clone();
315 if inlined {
316 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
317 inner_offset = next_offset;
318 } else {
319 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
320 inner_depth.increment()?;
321 }
322 let val_ref = self.url.get_or_insert_with(|| {
323 fidl::new_empty!(fidl_fuchsia_pkg__common::PackageUrl, D)
324 });
325 fidl::decode!(
326 fidl_fuchsia_pkg__common::PackageUrl,
327 D,
328 val_ref,
329 decoder,
330 inner_offset,
331 inner_depth
332 )?;
333 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
334 {
335 return Err(fidl::Error::InvalidNumBytesInEnvelope);
336 }
337 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
338 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
339 }
340 }
341
342 next_offset += envelope_size;
343 _next_ordinal_to_read += 1;
344 if next_offset >= end_offset {
345 return Ok(());
346 }
347
348 while _next_ordinal_to_read < 2 {
350 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
351 _next_ordinal_to_read += 1;
352 next_offset += envelope_size;
353 }
354
355 let next_out_of_line = decoder.next_out_of_line();
356 let handles_before = decoder.remaining_handles();
357 if let Some((inlined, num_bytes, num_handles)) =
358 fidl::encoding::decode_envelope_header(decoder, next_offset)?
359 {
360 let member_inline_size =
361 <fidl_fuchsia_pkg__common::CupData as fidl::encoding::TypeMarker>::inline_size(
362 decoder.context,
363 );
364 if inlined != (member_inline_size <= 4) {
365 return Err(fidl::Error::InvalidInlineBitInEnvelope);
366 }
367 let inner_offset;
368 let mut inner_depth = depth.clone();
369 if inlined {
370 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
371 inner_offset = next_offset;
372 } else {
373 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
374 inner_depth.increment()?;
375 }
376 let val_ref = self
377 .cup
378 .get_or_insert_with(|| fidl::new_empty!(fidl_fuchsia_pkg__common::CupData, D));
379 fidl::decode!(
380 fidl_fuchsia_pkg__common::CupData,
381 D,
382 val_ref,
383 decoder,
384 inner_offset,
385 inner_depth
386 )?;
387 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
388 {
389 return Err(fidl::Error::InvalidNumBytesInEnvelope);
390 }
391 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
392 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
393 }
394 }
395
396 next_offset += envelope_size;
397
398 while next_offset < end_offset {
400 _next_ordinal_to_read += 1;
401 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
402 next_offset += envelope_size;
403 }
404
405 Ok(())
406 }
407 }
408
409 impl PersistentEagerPackages {
410 #[inline(always)]
411 fn max_ordinal_present(&self) -> u64 {
412 if let Some(_) = self.packages {
413 return 1;
414 }
415 0
416 }
417 }
418
419 impl fidl::encoding::ValueTypeMarker for PersistentEagerPackages {
420 type Borrowed<'a> = &'a Self;
421 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
422 value
423 }
424 }
425
426 unsafe impl fidl::encoding::TypeMarker for PersistentEagerPackages {
427 type Owned = Self;
428
429 #[inline(always)]
430 fn inline_align(_context: fidl::encoding::Context) -> usize {
431 8
432 }
433
434 #[inline(always)]
435 fn inline_size(_context: fidl::encoding::Context) -> usize {
436 16
437 }
438 }
439
440 unsafe impl<D: fidl::encoding::ResourceDialect>
441 fidl::encoding::Encode<PersistentEagerPackages, D> for &PersistentEagerPackages
442 {
443 unsafe fn encode(
444 self,
445 encoder: &mut fidl::encoding::Encoder<'_, D>,
446 offset: usize,
447 mut depth: fidl::encoding::Depth,
448 ) -> fidl::Result<()> {
449 encoder.debug_check_bounds::<PersistentEagerPackages>(offset);
450 let max_ordinal: u64 = self.max_ordinal_present();
452 encoder.write_num(max_ordinal, offset);
453 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
454 if max_ordinal == 0 {
456 return Ok(());
457 }
458 depth.increment()?;
459 let envelope_size = 8;
460 let bytes_len = max_ordinal as usize * envelope_size;
461 #[allow(unused_variables)]
462 let offset = encoder.out_of_line_offset(bytes_len);
463 let mut _prev_end_offset: usize = 0;
464 if 1 > max_ordinal {
465 return Ok(());
466 }
467
468 let cur_offset: usize = (1 - 1) * envelope_size;
471
472 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
474
475 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<PersistentEagerPackage, 128>, D>(
480 self.packages.as_ref().map(<fidl::encoding::Vector<PersistentEagerPackage, 128> as fidl::encoding::ValueTypeMarker>::borrow),
481 encoder, offset + cur_offset, depth
482 )?;
483
484 _prev_end_offset = cur_offset + envelope_size;
485
486 Ok(())
487 }
488 }
489
490 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
491 for PersistentEagerPackages
492 {
493 #[inline(always)]
494 fn new_empty() -> Self {
495 Self::default()
496 }
497
498 unsafe fn decode(
499 &mut self,
500 decoder: &mut fidl::encoding::Decoder<'_, D>,
501 offset: usize,
502 mut depth: fidl::encoding::Depth,
503 ) -> fidl::Result<()> {
504 decoder.debug_check_bounds::<Self>(offset);
505 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
506 None => return Err(fidl::Error::NotNullable),
507 Some(len) => len,
508 };
509 if len == 0 {
511 return Ok(());
512 };
513 depth.increment()?;
514 let envelope_size = 8;
515 let bytes_len = len * envelope_size;
516 let offset = decoder.out_of_line_offset(bytes_len)?;
517 let mut _next_ordinal_to_read = 0;
519 let mut next_offset = offset;
520 let end_offset = offset + bytes_len;
521 _next_ordinal_to_read += 1;
522 if next_offset >= end_offset {
523 return Ok(());
524 }
525
526 while _next_ordinal_to_read < 1 {
528 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
529 _next_ordinal_to_read += 1;
530 next_offset += envelope_size;
531 }
532
533 let next_out_of_line = decoder.next_out_of_line();
534 let handles_before = decoder.remaining_handles();
535 if let Some((inlined, num_bytes, num_handles)) =
536 fidl::encoding::decode_envelope_header(decoder, next_offset)?
537 {
538 let member_inline_size = <fidl::encoding::Vector<PersistentEagerPackage, 128> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
539 if inlined != (member_inline_size <= 4) {
540 return Err(fidl::Error::InvalidInlineBitInEnvelope);
541 }
542 let inner_offset;
543 let mut inner_depth = depth.clone();
544 if inlined {
545 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
546 inner_offset = next_offset;
547 } else {
548 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
549 inner_depth.increment()?;
550 }
551 let val_ref = self.packages.get_or_insert_with(
552 || fidl::new_empty!(fidl::encoding::Vector<PersistentEagerPackage, 128>, D),
553 );
554 fidl::decode!(fidl::encoding::Vector<PersistentEagerPackage, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
555 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
556 {
557 return Err(fidl::Error::InvalidNumBytesInEnvelope);
558 }
559 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
560 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
561 }
562 }
563
564 next_offset += envelope_size;
565
566 while next_offset < end_offset {
568 _next_ordinal_to_read += 1;
569 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
570 next_offset += envelope_size;
571 }
572
573 Ok(())
574 }
575 }
576}