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