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