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