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, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
12#[repr(C)]
13pub struct VolumeSetLimitRequest {
14 pub bytes: u64,
15}
16
17impl fidl::Persistable for VolumeSetLimitRequest {}
18
19#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
20#[repr(C)]
21pub struct VolumeGetLimitResponse {
22 pub bytes: u64,
23}
24
25impl fidl::Persistable for VolumeGetLimitResponse {}
26
27#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
28pub struct VolumesRemoveRequest {
29 pub name: String,
30}
31
32impl fidl::Persistable for VolumesRemoveRequest {}
33
34#[derive(Clone, Debug, PartialEq)]
35pub struct VolumesGetInfoResponse {
36 pub info: Option<Box<fidl_fuchsia_storage_block__common::VolumeManagerInfo>>,
37}
38
39impl fidl::Persistable for VolumesGetInfoResponse {}
40
41#[derive(Clone, Debug, Default, PartialEq)]
43pub struct FormatOptions {
44 pub verbose: Option<bool>,
46 pub deprecated_padded_blobfs_format: Option<bool>,
48 pub num_inodes: Option<u64>,
51 pub fvm_data_slices: Option<u32>,
53 pub sectors_per_cluster: Option<u16>,
55 pub fvm_slice_size: Option<u64>,
57 #[doc(hidden)]
58 pub __source_breaking: fidl::marker::SourceBreaking,
59}
60
61impl fidl::Persistable for FormatOptions {}
62
63#[derive(Clone, Debug, Default, PartialEq)]
65pub struct StartOptions {
66 pub read_only: Option<bool>,
68 pub verbose: Option<bool>,
70 pub fsck_after_every_transaction: Option<bool>,
73 pub startup_profiling_seconds: Option<u32>,
78 pub inline_crypto_enabled: Option<bool>,
87 pub barriers_enabled: Option<bool>,
93 pub merge_super_and_userdata: Option<bool>,
98 #[doc(hidden)]
99 pub __source_breaking: fidl::marker::SourceBreaking,
100}
101
102impl fidl::Persistable for StartOptions {}
103
104#[derive(Clone, Debug, Default, PartialEq)]
105pub struct VolumeInfo {
106 pub guid: Option<[u8; 16]>,
107 #[doc(hidden)]
108 pub __source_breaking: fidl::marker::SourceBreaking,
109}
110
111impl fidl::Persistable for VolumeInfo {}
112
113pub mod startup_ordinals {
114 pub const START: u64 = 0x317aa9458d3190c8;
115 pub const FORMAT: u64 = 0x3124676dd91933de;
116 pub const CHECK: u64 = 0x81e85b3190e7db3;
117}
118
119pub mod volume_ordinals {
120 pub const MOUNT: u64 = 0x3470ab56d455af0;
121 pub const CHECK: u64 = 0x5b638348f5e0418c;
122 pub const SET_LIMIT: u64 = 0x19286d83eb3cd137;
123 pub const GET_LIMIT: u64 = 0xb14e4950939f16;
124 pub const GET_INFO: u64 = 0x481018250e109f53;
125}
126
127pub mod volumes_ordinals {
128 pub const CREATE: u64 = 0x11a55097834b38e8;
129 pub const REMOVE: u64 = 0x70983b9344dc2292;
130 pub const GET_INFO: u64 = 0x50d2962df9a0746e;
131}
132
133mod internal {
134 use super::*;
135
136 impl fidl::encoding::ValueTypeMarker for VolumeSetLimitRequest {
137 type Borrowed<'a> = &'a Self;
138 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
139 value
140 }
141 }
142
143 unsafe impl fidl::encoding::TypeMarker for VolumeSetLimitRequest {
144 type Owned = Self;
145
146 #[inline(always)]
147 fn inline_align(_context: fidl::encoding::Context) -> usize {
148 8
149 }
150
151 #[inline(always)]
152 fn inline_size(_context: fidl::encoding::Context) -> usize {
153 8
154 }
155 #[inline(always)]
156 fn encode_is_copy() -> bool {
157 true
158 }
159
160 #[inline(always)]
161 fn decode_is_copy() -> bool {
162 true
163 }
164 }
165
166 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<VolumeSetLimitRequest, D>
167 for &VolumeSetLimitRequest
168 {
169 #[inline]
170 unsafe fn encode(
171 self,
172 encoder: &mut fidl::encoding::Encoder<'_, D>,
173 offset: usize,
174 _depth: fidl::encoding::Depth,
175 ) -> fidl::Result<()> {
176 encoder.debug_check_bounds::<VolumeSetLimitRequest>(offset);
177 unsafe {
178 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
180 (buf_ptr as *mut VolumeSetLimitRequest)
181 .write_unaligned((self as *const VolumeSetLimitRequest).read());
182 }
185 Ok(())
186 }
187 }
188 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
189 fidl::encoding::Encode<VolumeSetLimitRequest, D> for (T0,)
190 {
191 #[inline]
192 unsafe fn encode(
193 self,
194 encoder: &mut fidl::encoding::Encoder<'_, D>,
195 offset: usize,
196 depth: fidl::encoding::Depth,
197 ) -> fidl::Result<()> {
198 encoder.debug_check_bounds::<VolumeSetLimitRequest>(offset);
199 self.0.encode(encoder, offset + 0, depth)?;
203 Ok(())
204 }
205 }
206
207 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for VolumeSetLimitRequest {
208 #[inline(always)]
209 fn new_empty() -> Self {
210 Self { bytes: fidl::new_empty!(u64, D) }
211 }
212
213 #[inline]
214 unsafe fn decode(
215 &mut self,
216 decoder: &mut fidl::encoding::Decoder<'_, D>,
217 offset: usize,
218 _depth: fidl::encoding::Depth,
219 ) -> fidl::Result<()> {
220 decoder.debug_check_bounds::<Self>(offset);
221 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
222 unsafe {
225 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
226 }
227 Ok(())
228 }
229 }
230
231 impl fidl::encoding::ValueTypeMarker for VolumeGetLimitResponse {
232 type Borrowed<'a> = &'a Self;
233 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
234 value
235 }
236 }
237
238 unsafe impl fidl::encoding::TypeMarker for VolumeGetLimitResponse {
239 type Owned = Self;
240
241 #[inline(always)]
242 fn inline_align(_context: fidl::encoding::Context) -> usize {
243 8
244 }
245
246 #[inline(always)]
247 fn inline_size(_context: fidl::encoding::Context) -> usize {
248 8
249 }
250 #[inline(always)]
251 fn encode_is_copy() -> bool {
252 true
253 }
254
255 #[inline(always)]
256 fn decode_is_copy() -> bool {
257 true
258 }
259 }
260
261 unsafe impl<D: fidl::encoding::ResourceDialect>
262 fidl::encoding::Encode<VolumeGetLimitResponse, D> for &VolumeGetLimitResponse
263 {
264 #[inline]
265 unsafe fn encode(
266 self,
267 encoder: &mut fidl::encoding::Encoder<'_, D>,
268 offset: usize,
269 _depth: fidl::encoding::Depth,
270 ) -> fidl::Result<()> {
271 encoder.debug_check_bounds::<VolumeGetLimitResponse>(offset);
272 unsafe {
273 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
275 (buf_ptr as *mut VolumeGetLimitResponse)
276 .write_unaligned((self as *const VolumeGetLimitResponse).read());
277 }
280 Ok(())
281 }
282 }
283 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
284 fidl::encoding::Encode<VolumeGetLimitResponse, D> for (T0,)
285 {
286 #[inline]
287 unsafe fn encode(
288 self,
289 encoder: &mut fidl::encoding::Encoder<'_, D>,
290 offset: usize,
291 depth: fidl::encoding::Depth,
292 ) -> fidl::Result<()> {
293 encoder.debug_check_bounds::<VolumeGetLimitResponse>(offset);
294 self.0.encode(encoder, offset + 0, depth)?;
298 Ok(())
299 }
300 }
301
302 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
303 for VolumeGetLimitResponse
304 {
305 #[inline(always)]
306 fn new_empty() -> Self {
307 Self { bytes: fidl::new_empty!(u64, D) }
308 }
309
310 #[inline]
311 unsafe fn decode(
312 &mut self,
313 decoder: &mut fidl::encoding::Decoder<'_, D>,
314 offset: usize,
315 _depth: fidl::encoding::Depth,
316 ) -> fidl::Result<()> {
317 decoder.debug_check_bounds::<Self>(offset);
318 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
319 unsafe {
322 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
323 }
324 Ok(())
325 }
326 }
327
328 impl fidl::encoding::ValueTypeMarker for VolumesRemoveRequest {
329 type Borrowed<'a> = &'a Self;
330 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
331 value
332 }
333 }
334
335 unsafe impl fidl::encoding::TypeMarker for VolumesRemoveRequest {
336 type Owned = Self;
337
338 #[inline(always)]
339 fn inline_align(_context: fidl::encoding::Context) -> usize {
340 8
341 }
342
343 #[inline(always)]
344 fn inline_size(_context: fidl::encoding::Context) -> usize {
345 16
346 }
347 }
348
349 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<VolumesRemoveRequest, D>
350 for &VolumesRemoveRequest
351 {
352 #[inline]
353 unsafe fn encode(
354 self,
355 encoder: &mut fidl::encoding::Encoder<'_, D>,
356 offset: usize,
357 _depth: fidl::encoding::Depth,
358 ) -> fidl::Result<()> {
359 encoder.debug_check_bounds::<VolumesRemoveRequest>(offset);
360 fidl::encoding::Encode::<VolumesRemoveRequest, D>::encode(
362 (<fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(
363 &self.name,
364 ),),
365 encoder,
366 offset,
367 _depth,
368 )
369 }
370 }
371 unsafe impl<
372 D: fidl::encoding::ResourceDialect,
373 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<255>, D>,
374 > fidl::encoding::Encode<VolumesRemoveRequest, D> for (T0,)
375 {
376 #[inline]
377 unsafe fn encode(
378 self,
379 encoder: &mut fidl::encoding::Encoder<'_, D>,
380 offset: usize,
381 depth: fidl::encoding::Depth,
382 ) -> fidl::Result<()> {
383 encoder.debug_check_bounds::<VolumesRemoveRequest>(offset);
384 self.0.encode(encoder, offset + 0, depth)?;
388 Ok(())
389 }
390 }
391
392 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for VolumesRemoveRequest {
393 #[inline(always)]
394 fn new_empty() -> Self {
395 Self { name: fidl::new_empty!(fidl::encoding::BoundedString<255>, D) }
396 }
397
398 #[inline]
399 unsafe fn decode(
400 &mut self,
401 decoder: &mut fidl::encoding::Decoder<'_, D>,
402 offset: usize,
403 _depth: fidl::encoding::Depth,
404 ) -> fidl::Result<()> {
405 decoder.debug_check_bounds::<Self>(offset);
406 fidl::decode!(
408 fidl::encoding::BoundedString<255>,
409 D,
410 &mut self.name,
411 decoder,
412 offset + 0,
413 _depth
414 )?;
415 Ok(())
416 }
417 }
418
419 impl fidl::encoding::ValueTypeMarker for VolumesGetInfoResponse {
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 VolumesGetInfoResponse {
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 8
437 }
438 }
439
440 unsafe impl<D: fidl::encoding::ResourceDialect>
441 fidl::encoding::Encode<VolumesGetInfoResponse, D> for &VolumesGetInfoResponse
442 {
443 #[inline]
444 unsafe fn encode(
445 self,
446 encoder: &mut fidl::encoding::Encoder<'_, D>,
447 offset: usize,
448 _depth: fidl::encoding::Depth,
449 ) -> fidl::Result<()> {
450 encoder.debug_check_bounds::<VolumesGetInfoResponse>(offset);
451 fidl::encoding::Encode::<VolumesGetInfoResponse, D>::encode(
453 (
454 <fidl::encoding::Boxed<fidl_fuchsia_storage_block__common::VolumeManagerInfo> as fidl::encoding::ValueTypeMarker>::borrow(&self.info),
455 ),
456 encoder, offset, _depth
457 )
458 }
459 }
460 unsafe impl<
461 D: fidl::encoding::ResourceDialect,
462 T0: fidl::encoding::Encode<
463 fidl::encoding::Boxed<fidl_fuchsia_storage_block__common::VolumeManagerInfo>,
464 D,
465 >,
466 > fidl::encoding::Encode<VolumesGetInfoResponse, D> for (T0,)
467 {
468 #[inline]
469 unsafe fn encode(
470 self,
471 encoder: &mut fidl::encoding::Encoder<'_, D>,
472 offset: usize,
473 depth: fidl::encoding::Depth,
474 ) -> fidl::Result<()> {
475 encoder.debug_check_bounds::<VolumesGetInfoResponse>(offset);
476 self.0.encode(encoder, offset + 0, depth)?;
480 Ok(())
481 }
482 }
483
484 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
485 for VolumesGetInfoResponse
486 {
487 #[inline(always)]
488 fn new_empty() -> Self {
489 Self {
490 info: fidl::new_empty!(
491 fidl::encoding::Boxed<fidl_fuchsia_storage_block__common::VolumeManagerInfo>,
492 D
493 ),
494 }
495 }
496
497 #[inline]
498 unsafe fn decode(
499 &mut self,
500 decoder: &mut fidl::encoding::Decoder<'_, D>,
501 offset: usize,
502 _depth: fidl::encoding::Depth,
503 ) -> fidl::Result<()> {
504 decoder.debug_check_bounds::<Self>(offset);
505 fidl::decode!(
507 fidl::encoding::Boxed<fidl_fuchsia_storage_block__common::VolumeManagerInfo>,
508 D,
509 &mut self.info,
510 decoder,
511 offset + 0,
512 _depth
513 )?;
514 Ok(())
515 }
516 }
517
518 impl FormatOptions {
519 #[inline(always)]
520 fn max_ordinal_present(&self) -> u64 {
521 if let Some(_) = self.fvm_slice_size {
522 return 6;
523 }
524 if let Some(_) = self.sectors_per_cluster {
525 return 5;
526 }
527 if let Some(_) = self.fvm_data_slices {
528 return 4;
529 }
530 if let Some(_) = self.num_inodes {
531 return 3;
532 }
533 if let Some(_) = self.deprecated_padded_blobfs_format {
534 return 2;
535 }
536 if let Some(_) = self.verbose {
537 return 1;
538 }
539 0
540 }
541 }
542
543 impl fidl::encoding::ValueTypeMarker for FormatOptions {
544 type Borrowed<'a> = &'a Self;
545 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
546 value
547 }
548 }
549
550 unsafe impl fidl::encoding::TypeMarker for FormatOptions {
551 type Owned = Self;
552
553 #[inline(always)]
554 fn inline_align(_context: fidl::encoding::Context) -> usize {
555 8
556 }
557
558 #[inline(always)]
559 fn inline_size(_context: fidl::encoding::Context) -> usize {
560 16
561 }
562 }
563
564 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FormatOptions, D>
565 for &FormatOptions
566 {
567 unsafe fn encode(
568 self,
569 encoder: &mut fidl::encoding::Encoder<'_, D>,
570 offset: usize,
571 mut depth: fidl::encoding::Depth,
572 ) -> fidl::Result<()> {
573 encoder.debug_check_bounds::<FormatOptions>(offset);
574 let max_ordinal: u64 = self.max_ordinal_present();
576 encoder.write_num(max_ordinal, offset);
577 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
578 if max_ordinal == 0 {
580 return Ok(());
581 }
582 depth.increment()?;
583 let envelope_size = 8;
584 let bytes_len = max_ordinal as usize * envelope_size;
585 #[allow(unused_variables)]
586 let offset = encoder.out_of_line_offset(bytes_len);
587 let mut _prev_end_offset: usize = 0;
588 if 1 > max_ordinal {
589 return Ok(());
590 }
591
592 let cur_offset: usize = (1 - 1) * envelope_size;
595
596 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
598
599 fidl::encoding::encode_in_envelope_optional::<bool, D>(
604 self.verbose.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
605 encoder,
606 offset + cur_offset,
607 depth,
608 )?;
609
610 _prev_end_offset = cur_offset + envelope_size;
611 if 2 > max_ordinal {
612 return Ok(());
613 }
614
615 let cur_offset: usize = (2 - 1) * envelope_size;
618
619 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
621
622 fidl::encoding::encode_in_envelope_optional::<bool, D>(
627 self.deprecated_padded_blobfs_format
628 .as_ref()
629 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
630 encoder,
631 offset + cur_offset,
632 depth,
633 )?;
634
635 _prev_end_offset = cur_offset + envelope_size;
636 if 3 > max_ordinal {
637 return Ok(());
638 }
639
640 let cur_offset: usize = (3 - 1) * envelope_size;
643
644 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
646
647 fidl::encoding::encode_in_envelope_optional::<u64, D>(
652 self.num_inodes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
653 encoder,
654 offset + cur_offset,
655 depth,
656 )?;
657
658 _prev_end_offset = cur_offset + envelope_size;
659 if 4 > max_ordinal {
660 return Ok(());
661 }
662
663 let cur_offset: usize = (4 - 1) * envelope_size;
666
667 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
669
670 fidl::encoding::encode_in_envelope_optional::<u32, D>(
675 self.fvm_data_slices.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
676 encoder,
677 offset + cur_offset,
678 depth,
679 )?;
680
681 _prev_end_offset = cur_offset + envelope_size;
682 if 5 > max_ordinal {
683 return Ok(());
684 }
685
686 let cur_offset: usize = (5 - 1) * envelope_size;
689
690 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
692
693 fidl::encoding::encode_in_envelope_optional::<u16, D>(
698 self.sectors_per_cluster
699 .as_ref()
700 .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
701 encoder,
702 offset + cur_offset,
703 depth,
704 )?;
705
706 _prev_end_offset = cur_offset + envelope_size;
707 if 6 > max_ordinal {
708 return Ok(());
709 }
710
711 let cur_offset: usize = (6 - 1) * envelope_size;
714
715 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
717
718 fidl::encoding::encode_in_envelope_optional::<u64, D>(
723 self.fvm_slice_size.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
724 encoder,
725 offset + cur_offset,
726 depth,
727 )?;
728
729 _prev_end_offset = cur_offset + envelope_size;
730
731 Ok(())
732 }
733 }
734
735 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FormatOptions {
736 #[inline(always)]
737 fn new_empty() -> Self {
738 Self::default()
739 }
740
741 unsafe fn decode(
742 &mut self,
743 decoder: &mut fidl::encoding::Decoder<'_, D>,
744 offset: usize,
745 mut depth: fidl::encoding::Depth,
746 ) -> fidl::Result<()> {
747 decoder.debug_check_bounds::<Self>(offset);
748 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
749 None => return Err(fidl::Error::NotNullable),
750 Some(len) => len,
751 };
752 if len == 0 {
754 return Ok(());
755 };
756 depth.increment()?;
757 let envelope_size = 8;
758 let bytes_len = len * envelope_size;
759 let offset = decoder.out_of_line_offset(bytes_len)?;
760 let mut _next_ordinal_to_read = 0;
762 let mut next_offset = offset;
763 let end_offset = offset + bytes_len;
764 _next_ordinal_to_read += 1;
765 if next_offset >= end_offset {
766 return Ok(());
767 }
768
769 while _next_ordinal_to_read < 1 {
771 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
772 _next_ordinal_to_read += 1;
773 next_offset += envelope_size;
774 }
775
776 let next_out_of_line = decoder.next_out_of_line();
777 let handles_before = decoder.remaining_handles();
778 if let Some((inlined, num_bytes, num_handles)) =
779 fidl::encoding::decode_envelope_header(decoder, next_offset)?
780 {
781 let member_inline_size =
782 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
783 if inlined != (member_inline_size <= 4) {
784 return Err(fidl::Error::InvalidInlineBitInEnvelope);
785 }
786 let inner_offset;
787 let mut inner_depth = depth.clone();
788 if inlined {
789 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
790 inner_offset = next_offset;
791 } else {
792 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
793 inner_depth.increment()?;
794 }
795 let val_ref = self.verbose.get_or_insert_with(|| fidl::new_empty!(bool, D));
796 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
797 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
798 {
799 return Err(fidl::Error::InvalidNumBytesInEnvelope);
800 }
801 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
802 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
803 }
804 }
805
806 next_offset += envelope_size;
807 _next_ordinal_to_read += 1;
808 if next_offset >= end_offset {
809 return Ok(());
810 }
811
812 while _next_ordinal_to_read < 2 {
814 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
815 _next_ordinal_to_read += 1;
816 next_offset += envelope_size;
817 }
818
819 let next_out_of_line = decoder.next_out_of_line();
820 let handles_before = decoder.remaining_handles();
821 if let Some((inlined, num_bytes, num_handles)) =
822 fidl::encoding::decode_envelope_header(decoder, next_offset)?
823 {
824 let member_inline_size =
825 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
826 if inlined != (member_inline_size <= 4) {
827 return Err(fidl::Error::InvalidInlineBitInEnvelope);
828 }
829 let inner_offset;
830 let mut inner_depth = depth.clone();
831 if inlined {
832 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
833 inner_offset = next_offset;
834 } else {
835 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
836 inner_depth.increment()?;
837 }
838 let val_ref = self
839 .deprecated_padded_blobfs_format
840 .get_or_insert_with(|| fidl::new_empty!(bool, D));
841 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
842 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
843 {
844 return Err(fidl::Error::InvalidNumBytesInEnvelope);
845 }
846 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
847 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
848 }
849 }
850
851 next_offset += envelope_size;
852 _next_ordinal_to_read += 1;
853 if next_offset >= end_offset {
854 return Ok(());
855 }
856
857 while _next_ordinal_to_read < 3 {
859 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
860 _next_ordinal_to_read += 1;
861 next_offset += envelope_size;
862 }
863
864 let next_out_of_line = decoder.next_out_of_line();
865 let handles_before = decoder.remaining_handles();
866 if let Some((inlined, num_bytes, num_handles)) =
867 fidl::encoding::decode_envelope_header(decoder, next_offset)?
868 {
869 let member_inline_size =
870 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
871 if inlined != (member_inline_size <= 4) {
872 return Err(fidl::Error::InvalidInlineBitInEnvelope);
873 }
874 let inner_offset;
875 let mut inner_depth = depth.clone();
876 if inlined {
877 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
878 inner_offset = next_offset;
879 } else {
880 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
881 inner_depth.increment()?;
882 }
883 let val_ref = self.num_inodes.get_or_insert_with(|| fidl::new_empty!(u64, D));
884 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
885 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
886 {
887 return Err(fidl::Error::InvalidNumBytesInEnvelope);
888 }
889 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
890 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
891 }
892 }
893
894 next_offset += envelope_size;
895 _next_ordinal_to_read += 1;
896 if next_offset >= end_offset {
897 return Ok(());
898 }
899
900 while _next_ordinal_to_read < 4 {
902 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
903 _next_ordinal_to_read += 1;
904 next_offset += envelope_size;
905 }
906
907 let next_out_of_line = decoder.next_out_of_line();
908 let handles_before = decoder.remaining_handles();
909 if let Some((inlined, num_bytes, num_handles)) =
910 fidl::encoding::decode_envelope_header(decoder, next_offset)?
911 {
912 let member_inline_size =
913 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
914 if inlined != (member_inline_size <= 4) {
915 return Err(fidl::Error::InvalidInlineBitInEnvelope);
916 }
917 let inner_offset;
918 let mut inner_depth = depth.clone();
919 if inlined {
920 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
921 inner_offset = next_offset;
922 } else {
923 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
924 inner_depth.increment()?;
925 }
926 let val_ref = self.fvm_data_slices.get_or_insert_with(|| fidl::new_empty!(u32, D));
927 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
928 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
929 {
930 return Err(fidl::Error::InvalidNumBytesInEnvelope);
931 }
932 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
933 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
934 }
935 }
936
937 next_offset += envelope_size;
938 _next_ordinal_to_read += 1;
939 if next_offset >= end_offset {
940 return Ok(());
941 }
942
943 while _next_ordinal_to_read < 5 {
945 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
946 _next_ordinal_to_read += 1;
947 next_offset += envelope_size;
948 }
949
950 let next_out_of_line = decoder.next_out_of_line();
951 let handles_before = decoder.remaining_handles();
952 if let Some((inlined, num_bytes, num_handles)) =
953 fidl::encoding::decode_envelope_header(decoder, next_offset)?
954 {
955 let member_inline_size =
956 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
957 if inlined != (member_inline_size <= 4) {
958 return Err(fidl::Error::InvalidInlineBitInEnvelope);
959 }
960 let inner_offset;
961 let mut inner_depth = depth.clone();
962 if inlined {
963 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
964 inner_offset = next_offset;
965 } else {
966 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
967 inner_depth.increment()?;
968 }
969 let val_ref =
970 self.sectors_per_cluster.get_or_insert_with(|| fidl::new_empty!(u16, D));
971 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
972 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
973 {
974 return Err(fidl::Error::InvalidNumBytesInEnvelope);
975 }
976 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
977 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
978 }
979 }
980
981 next_offset += envelope_size;
982 _next_ordinal_to_read += 1;
983 if next_offset >= end_offset {
984 return Ok(());
985 }
986
987 while _next_ordinal_to_read < 6 {
989 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
990 _next_ordinal_to_read += 1;
991 next_offset += envelope_size;
992 }
993
994 let next_out_of_line = decoder.next_out_of_line();
995 let handles_before = decoder.remaining_handles();
996 if let Some((inlined, num_bytes, num_handles)) =
997 fidl::encoding::decode_envelope_header(decoder, next_offset)?
998 {
999 let member_inline_size =
1000 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1001 if inlined != (member_inline_size <= 4) {
1002 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1003 }
1004 let inner_offset;
1005 let mut inner_depth = depth.clone();
1006 if inlined {
1007 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1008 inner_offset = next_offset;
1009 } else {
1010 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1011 inner_depth.increment()?;
1012 }
1013 let val_ref = self.fvm_slice_size.get_or_insert_with(|| fidl::new_empty!(u64, D));
1014 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1015 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1016 {
1017 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1018 }
1019 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1020 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1021 }
1022 }
1023
1024 next_offset += envelope_size;
1025
1026 while next_offset < end_offset {
1028 _next_ordinal_to_read += 1;
1029 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1030 next_offset += envelope_size;
1031 }
1032
1033 Ok(())
1034 }
1035 }
1036
1037 impl StartOptions {
1038 #[inline(always)]
1039 fn max_ordinal_present(&self) -> u64 {
1040 if let Some(_) = self.merge_super_and_userdata {
1041 return 10;
1042 }
1043 if let Some(_) = self.barriers_enabled {
1044 return 9;
1045 }
1046 if let Some(_) = self.inline_crypto_enabled {
1047 return 8;
1048 }
1049 if let Some(_) = self.startup_profiling_seconds {
1050 return 7;
1051 }
1052 if let Some(_) = self.fsck_after_every_transaction {
1053 return 3;
1054 }
1055 if let Some(_) = self.verbose {
1056 return 2;
1057 }
1058 if let Some(_) = self.read_only {
1059 return 1;
1060 }
1061 0
1062 }
1063 }
1064
1065 impl fidl::encoding::ValueTypeMarker for StartOptions {
1066 type Borrowed<'a> = &'a Self;
1067 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1068 value
1069 }
1070 }
1071
1072 unsafe impl fidl::encoding::TypeMarker for StartOptions {
1073 type Owned = Self;
1074
1075 #[inline(always)]
1076 fn inline_align(_context: fidl::encoding::Context) -> usize {
1077 8
1078 }
1079
1080 #[inline(always)]
1081 fn inline_size(_context: fidl::encoding::Context) -> usize {
1082 16
1083 }
1084 }
1085
1086 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StartOptions, D>
1087 for &StartOptions
1088 {
1089 unsafe fn encode(
1090 self,
1091 encoder: &mut fidl::encoding::Encoder<'_, D>,
1092 offset: usize,
1093 mut depth: fidl::encoding::Depth,
1094 ) -> fidl::Result<()> {
1095 encoder.debug_check_bounds::<StartOptions>(offset);
1096 let max_ordinal: u64 = self.max_ordinal_present();
1098 encoder.write_num(max_ordinal, offset);
1099 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1100 if max_ordinal == 0 {
1102 return Ok(());
1103 }
1104 depth.increment()?;
1105 let envelope_size = 8;
1106 let bytes_len = max_ordinal as usize * envelope_size;
1107 #[allow(unused_variables)]
1108 let offset = encoder.out_of_line_offset(bytes_len);
1109 let mut _prev_end_offset: usize = 0;
1110 if 1 > max_ordinal {
1111 return Ok(());
1112 }
1113
1114 let cur_offset: usize = (1 - 1) * envelope_size;
1117
1118 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1120
1121 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1126 self.read_only.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1127 encoder,
1128 offset + cur_offset,
1129 depth,
1130 )?;
1131
1132 _prev_end_offset = cur_offset + envelope_size;
1133 if 2 > max_ordinal {
1134 return Ok(());
1135 }
1136
1137 let cur_offset: usize = (2 - 1) * envelope_size;
1140
1141 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1143
1144 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1149 self.verbose.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1150 encoder,
1151 offset + cur_offset,
1152 depth,
1153 )?;
1154
1155 _prev_end_offset = cur_offset + envelope_size;
1156 if 3 > max_ordinal {
1157 return Ok(());
1158 }
1159
1160 let cur_offset: usize = (3 - 1) * envelope_size;
1163
1164 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1166
1167 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1172 self.fsck_after_every_transaction
1173 .as_ref()
1174 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1175 encoder,
1176 offset + cur_offset,
1177 depth,
1178 )?;
1179
1180 _prev_end_offset = cur_offset + envelope_size;
1181 if 7 > max_ordinal {
1182 return Ok(());
1183 }
1184
1185 let cur_offset: usize = (7 - 1) * envelope_size;
1188
1189 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1191
1192 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1197 self.startup_profiling_seconds
1198 .as_ref()
1199 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1200 encoder,
1201 offset + cur_offset,
1202 depth,
1203 )?;
1204
1205 _prev_end_offset = cur_offset + envelope_size;
1206 if 8 > max_ordinal {
1207 return Ok(());
1208 }
1209
1210 let cur_offset: usize = (8 - 1) * envelope_size;
1213
1214 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1216
1217 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1222 self.inline_crypto_enabled
1223 .as_ref()
1224 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1225 encoder,
1226 offset + cur_offset,
1227 depth,
1228 )?;
1229
1230 _prev_end_offset = cur_offset + envelope_size;
1231 if 9 > max_ordinal {
1232 return Ok(());
1233 }
1234
1235 let cur_offset: usize = (9 - 1) * envelope_size;
1238
1239 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1241
1242 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1247 self.barriers_enabled
1248 .as_ref()
1249 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1250 encoder,
1251 offset + cur_offset,
1252 depth,
1253 )?;
1254
1255 _prev_end_offset = cur_offset + envelope_size;
1256 if 10 > max_ordinal {
1257 return Ok(());
1258 }
1259
1260 let cur_offset: usize = (10 - 1) * envelope_size;
1263
1264 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1266
1267 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1272 self.merge_super_and_userdata
1273 .as_ref()
1274 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1275 encoder,
1276 offset + cur_offset,
1277 depth,
1278 )?;
1279
1280 _prev_end_offset = cur_offset + envelope_size;
1281
1282 Ok(())
1283 }
1284 }
1285
1286 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartOptions {
1287 #[inline(always)]
1288 fn new_empty() -> Self {
1289 Self::default()
1290 }
1291
1292 unsafe fn decode(
1293 &mut self,
1294 decoder: &mut fidl::encoding::Decoder<'_, D>,
1295 offset: usize,
1296 mut depth: fidl::encoding::Depth,
1297 ) -> fidl::Result<()> {
1298 decoder.debug_check_bounds::<Self>(offset);
1299 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1300 None => return Err(fidl::Error::NotNullable),
1301 Some(len) => len,
1302 };
1303 if len == 0 {
1305 return Ok(());
1306 };
1307 depth.increment()?;
1308 let envelope_size = 8;
1309 let bytes_len = len * envelope_size;
1310 let offset = decoder.out_of_line_offset(bytes_len)?;
1311 let mut _next_ordinal_to_read = 0;
1313 let mut next_offset = offset;
1314 let end_offset = offset + bytes_len;
1315 _next_ordinal_to_read += 1;
1316 if next_offset >= end_offset {
1317 return Ok(());
1318 }
1319
1320 while _next_ordinal_to_read < 1 {
1322 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1323 _next_ordinal_to_read += 1;
1324 next_offset += envelope_size;
1325 }
1326
1327 let next_out_of_line = decoder.next_out_of_line();
1328 let handles_before = decoder.remaining_handles();
1329 if let Some((inlined, num_bytes, num_handles)) =
1330 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1331 {
1332 let member_inline_size =
1333 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1334 if inlined != (member_inline_size <= 4) {
1335 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1336 }
1337 let inner_offset;
1338 let mut inner_depth = depth.clone();
1339 if inlined {
1340 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1341 inner_offset = next_offset;
1342 } else {
1343 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1344 inner_depth.increment()?;
1345 }
1346 let val_ref = self.read_only.get_or_insert_with(|| fidl::new_empty!(bool, D));
1347 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1348 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1349 {
1350 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1351 }
1352 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1353 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1354 }
1355 }
1356
1357 next_offset += envelope_size;
1358 _next_ordinal_to_read += 1;
1359 if next_offset >= end_offset {
1360 return Ok(());
1361 }
1362
1363 while _next_ordinal_to_read < 2 {
1365 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1366 _next_ordinal_to_read += 1;
1367 next_offset += envelope_size;
1368 }
1369
1370 let next_out_of_line = decoder.next_out_of_line();
1371 let handles_before = decoder.remaining_handles();
1372 if let Some((inlined, num_bytes, num_handles)) =
1373 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1374 {
1375 let member_inline_size =
1376 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1377 if inlined != (member_inline_size <= 4) {
1378 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1379 }
1380 let inner_offset;
1381 let mut inner_depth = depth.clone();
1382 if inlined {
1383 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1384 inner_offset = next_offset;
1385 } else {
1386 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1387 inner_depth.increment()?;
1388 }
1389 let val_ref = self.verbose.get_or_insert_with(|| fidl::new_empty!(bool, D));
1390 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1391 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1392 {
1393 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1394 }
1395 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1396 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1397 }
1398 }
1399
1400 next_offset += envelope_size;
1401 _next_ordinal_to_read += 1;
1402 if next_offset >= end_offset {
1403 return Ok(());
1404 }
1405
1406 while _next_ordinal_to_read < 3 {
1408 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1409 _next_ordinal_to_read += 1;
1410 next_offset += envelope_size;
1411 }
1412
1413 let next_out_of_line = decoder.next_out_of_line();
1414 let handles_before = decoder.remaining_handles();
1415 if let Some((inlined, num_bytes, num_handles)) =
1416 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1417 {
1418 let member_inline_size =
1419 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1420 if inlined != (member_inline_size <= 4) {
1421 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1422 }
1423 let inner_offset;
1424 let mut inner_depth = depth.clone();
1425 if inlined {
1426 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1427 inner_offset = next_offset;
1428 } else {
1429 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1430 inner_depth.increment()?;
1431 }
1432 let val_ref = self
1433 .fsck_after_every_transaction
1434 .get_or_insert_with(|| fidl::new_empty!(bool, D));
1435 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1436 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1437 {
1438 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1439 }
1440 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1441 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1442 }
1443 }
1444
1445 next_offset += envelope_size;
1446 _next_ordinal_to_read += 1;
1447 if next_offset >= end_offset {
1448 return Ok(());
1449 }
1450
1451 while _next_ordinal_to_read < 7 {
1453 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1454 _next_ordinal_to_read += 1;
1455 next_offset += envelope_size;
1456 }
1457
1458 let next_out_of_line = decoder.next_out_of_line();
1459 let handles_before = decoder.remaining_handles();
1460 if let Some((inlined, num_bytes, num_handles)) =
1461 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1462 {
1463 let member_inline_size =
1464 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1465 if inlined != (member_inline_size <= 4) {
1466 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1467 }
1468 let inner_offset;
1469 let mut inner_depth = depth.clone();
1470 if inlined {
1471 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1472 inner_offset = next_offset;
1473 } else {
1474 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1475 inner_depth.increment()?;
1476 }
1477 let val_ref =
1478 self.startup_profiling_seconds.get_or_insert_with(|| fidl::new_empty!(u32, D));
1479 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1480 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1481 {
1482 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1483 }
1484 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1485 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1486 }
1487 }
1488
1489 next_offset += envelope_size;
1490 _next_ordinal_to_read += 1;
1491 if next_offset >= end_offset {
1492 return Ok(());
1493 }
1494
1495 while _next_ordinal_to_read < 8 {
1497 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1498 _next_ordinal_to_read += 1;
1499 next_offset += envelope_size;
1500 }
1501
1502 let next_out_of_line = decoder.next_out_of_line();
1503 let handles_before = decoder.remaining_handles();
1504 if let Some((inlined, num_bytes, num_handles)) =
1505 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1506 {
1507 let member_inline_size =
1508 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1509 if inlined != (member_inline_size <= 4) {
1510 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1511 }
1512 let inner_offset;
1513 let mut inner_depth = depth.clone();
1514 if inlined {
1515 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1516 inner_offset = next_offset;
1517 } else {
1518 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1519 inner_depth.increment()?;
1520 }
1521 let val_ref =
1522 self.inline_crypto_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
1523 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1524 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1525 {
1526 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1527 }
1528 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1529 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1530 }
1531 }
1532
1533 next_offset += envelope_size;
1534 _next_ordinal_to_read += 1;
1535 if next_offset >= end_offset {
1536 return Ok(());
1537 }
1538
1539 while _next_ordinal_to_read < 9 {
1541 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1542 _next_ordinal_to_read += 1;
1543 next_offset += envelope_size;
1544 }
1545
1546 let next_out_of_line = decoder.next_out_of_line();
1547 let handles_before = decoder.remaining_handles();
1548 if let Some((inlined, num_bytes, num_handles)) =
1549 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1550 {
1551 let member_inline_size =
1552 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1553 if inlined != (member_inline_size <= 4) {
1554 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1555 }
1556 let inner_offset;
1557 let mut inner_depth = depth.clone();
1558 if inlined {
1559 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1560 inner_offset = next_offset;
1561 } else {
1562 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1563 inner_depth.increment()?;
1564 }
1565 let val_ref =
1566 self.barriers_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
1567 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1568 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1569 {
1570 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1571 }
1572 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1573 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1574 }
1575 }
1576
1577 next_offset += envelope_size;
1578 _next_ordinal_to_read += 1;
1579 if next_offset >= end_offset {
1580 return Ok(());
1581 }
1582
1583 while _next_ordinal_to_read < 10 {
1585 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1586 _next_ordinal_to_read += 1;
1587 next_offset += envelope_size;
1588 }
1589
1590 let next_out_of_line = decoder.next_out_of_line();
1591 let handles_before = decoder.remaining_handles();
1592 if let Some((inlined, num_bytes, num_handles)) =
1593 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1594 {
1595 let member_inline_size =
1596 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1597 if inlined != (member_inline_size <= 4) {
1598 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1599 }
1600 let inner_offset;
1601 let mut inner_depth = depth.clone();
1602 if inlined {
1603 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1604 inner_offset = next_offset;
1605 } else {
1606 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1607 inner_depth.increment()?;
1608 }
1609 let val_ref =
1610 self.merge_super_and_userdata.get_or_insert_with(|| fidl::new_empty!(bool, D));
1611 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1612 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1613 {
1614 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1615 }
1616 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1617 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1618 }
1619 }
1620
1621 next_offset += envelope_size;
1622
1623 while next_offset < end_offset {
1625 _next_ordinal_to_read += 1;
1626 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1627 next_offset += envelope_size;
1628 }
1629
1630 Ok(())
1631 }
1632 }
1633
1634 impl VolumeInfo {
1635 #[inline(always)]
1636 fn max_ordinal_present(&self) -> u64 {
1637 if let Some(_) = self.guid {
1638 return 1;
1639 }
1640 0
1641 }
1642 }
1643
1644 impl fidl::encoding::ValueTypeMarker for VolumeInfo {
1645 type Borrowed<'a> = &'a Self;
1646 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1647 value
1648 }
1649 }
1650
1651 unsafe impl fidl::encoding::TypeMarker for VolumeInfo {
1652 type Owned = Self;
1653
1654 #[inline(always)]
1655 fn inline_align(_context: fidl::encoding::Context) -> usize {
1656 8
1657 }
1658
1659 #[inline(always)]
1660 fn inline_size(_context: fidl::encoding::Context) -> usize {
1661 16
1662 }
1663 }
1664
1665 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<VolumeInfo, D>
1666 for &VolumeInfo
1667 {
1668 unsafe fn encode(
1669 self,
1670 encoder: &mut fidl::encoding::Encoder<'_, D>,
1671 offset: usize,
1672 mut depth: fidl::encoding::Depth,
1673 ) -> fidl::Result<()> {
1674 encoder.debug_check_bounds::<VolumeInfo>(offset);
1675 let max_ordinal: u64 = self.max_ordinal_present();
1677 encoder.write_num(max_ordinal, offset);
1678 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1679 if max_ordinal == 0 {
1681 return Ok(());
1682 }
1683 depth.increment()?;
1684 let envelope_size = 8;
1685 let bytes_len = max_ordinal as usize * envelope_size;
1686 #[allow(unused_variables)]
1687 let offset = encoder.out_of_line_offset(bytes_len);
1688 let mut _prev_end_offset: usize = 0;
1689 if 1 > max_ordinal {
1690 return Ok(());
1691 }
1692
1693 let cur_offset: usize = (1 - 1) * envelope_size;
1696
1697 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1699
1700 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 16>, D>(
1705 self.guid.as_ref().map(
1706 <fidl::encoding::Array<u8, 16> as fidl::encoding::ValueTypeMarker>::borrow,
1707 ),
1708 encoder,
1709 offset + cur_offset,
1710 depth,
1711 )?;
1712
1713 _prev_end_offset = cur_offset + envelope_size;
1714
1715 Ok(())
1716 }
1717 }
1718
1719 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for VolumeInfo {
1720 #[inline(always)]
1721 fn new_empty() -> Self {
1722 Self::default()
1723 }
1724
1725 unsafe fn decode(
1726 &mut self,
1727 decoder: &mut fidl::encoding::Decoder<'_, D>,
1728 offset: usize,
1729 mut depth: fidl::encoding::Depth,
1730 ) -> fidl::Result<()> {
1731 decoder.debug_check_bounds::<Self>(offset);
1732 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1733 None => return Err(fidl::Error::NotNullable),
1734 Some(len) => len,
1735 };
1736 if len == 0 {
1738 return Ok(());
1739 };
1740 depth.increment()?;
1741 let envelope_size = 8;
1742 let bytes_len = len * envelope_size;
1743 let offset = decoder.out_of_line_offset(bytes_len)?;
1744 let mut _next_ordinal_to_read = 0;
1746 let mut next_offset = offset;
1747 let end_offset = offset + bytes_len;
1748 _next_ordinal_to_read += 1;
1749 if next_offset >= end_offset {
1750 return Ok(());
1751 }
1752
1753 while _next_ordinal_to_read < 1 {
1755 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1756 _next_ordinal_to_read += 1;
1757 next_offset += envelope_size;
1758 }
1759
1760 let next_out_of_line = decoder.next_out_of_line();
1761 let handles_before = decoder.remaining_handles();
1762 if let Some((inlined, num_bytes, num_handles)) =
1763 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1764 {
1765 let member_inline_size =
1766 <fidl::encoding::Array<u8, 16> as fidl::encoding::TypeMarker>::inline_size(
1767 decoder.context,
1768 );
1769 if inlined != (member_inline_size <= 4) {
1770 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1771 }
1772 let inner_offset;
1773 let mut inner_depth = depth.clone();
1774 if inlined {
1775 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1776 inner_offset = next_offset;
1777 } else {
1778 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1779 inner_depth.increment()?;
1780 }
1781 let val_ref = self
1782 .guid
1783 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 16>, D));
1784 fidl::decode!(fidl::encoding::Array<u8, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
1785 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1786 {
1787 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1788 }
1789 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1790 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1791 }
1792 }
1793
1794 next_offset += envelope_size;
1795
1796 while next_offset < end_offset {
1798 _next_ordinal_to_read += 1;
1799 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1800 next_offset += envelope_size;
1801 }
1802
1803 Ok(())
1804 }
1805 }
1806}