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