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
11pub const PROXY_NAME_LEN: u32 = 1024;
12
13#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
14pub enum SuspendError {
15 WakeLocksExist,
16 SuspendFailure,
17 #[doc(hidden)]
18 __SourceBreaking {
19 unknown_ordinal: u32,
20 },
21}
22
23#[macro_export]
25macro_rules! SuspendErrorUnknown {
26 () => {
27 _
28 };
29}
30
31impl SuspendError {
32 #[inline]
33 pub fn from_primitive(prim: u32) -> Option<Self> {
34 match prim {
35 1 => Some(Self::WakeLocksExist),
36 2 => Some(Self::SuspendFailure),
37 _ => None,
38 }
39 }
40
41 #[inline]
42 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
43 match prim {
44 1 => Self::WakeLocksExist,
45 2 => Self::SuspendFailure,
46 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
47 }
48 }
49
50 #[inline]
51 pub fn unknown() -> Self {
52 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
53 }
54
55 #[inline]
56 pub const fn into_primitive(self) -> u32 {
57 match self {
58 Self::WakeLocksExist => 1,
59 Self::SuspendFailure => 2,
60 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
61 }
62 }
63
64 #[inline]
65 pub fn is_unknown(&self) -> bool {
66 match self {
67 Self::__SourceBreaking { unknown_ordinal: _ } => true,
68 _ => false,
69 }
70 }
71}
72
73#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
74#[repr(C)]
75pub struct PagerExtent {
76 pub logical_start: u32,
77 pub logical_end: u32,
78 pub physical_block: u64,
79}
80
81impl fidl::Persistable for PagerExtent {}
82
83#[derive(Clone, Debug, Default, PartialEq)]
84pub struct ManagerSuspendContainerResponse {
85 pub suspend_time: Option<i64>,
89 pub resume_reason: Option<String>,
91 #[doc(hidden)]
92 pub __source_breaking: fidl::marker::SourceBreaking,
93}
94
95impl fidl::Persistable for ManagerSuspendContainerResponse {}
96
97#[derive(Clone, Debug, Default, PartialEq)]
98pub struct PagerRegisterFileRequest {
99 pub name: Option<String>,
101 pub inode_num: Option<u32>,
103 pub size: Option<u64>,
105 pub extents: Option<Vec<PagerExtent>>,
107 #[doc(hidden)]
108 pub __source_breaking: fidl::marker::SourceBreaking,
109}
110
111impl fidl::Persistable for PagerRegisterFileRequest {}
112
113pub mod manager_ordinals {
114 pub const SUSPEND_CONTAINER: u64 = 0x928527927c9f2a7;
115 pub const PROXY_WAKE_CHANNEL: u64 = 0x46a374ab73b23714;
116 pub const ADD_WAKE_SOURCE: u64 = 0x45e94269f9722ac;
117 pub const REMOVE_WAKE_SOURCE: u64 = 0x25d311f5e801501a;
118 pub const REGISTER_WAKE_WATCHER: u64 = 0x456d74519eb65b41;
119 pub const CREATE_PAGER: u64 = 0x49d14958b736198b;
120}
121
122pub mod pager_ordinals {
123 pub const REGISTER_FILE: u64 = 0x4f85a2ce6cae4aed;
124}
125
126mod internal {
127 use super::*;
128 unsafe impl fidl::encoding::TypeMarker for SuspendError {
129 type Owned = Self;
130
131 #[inline(always)]
132 fn inline_align(_context: fidl::encoding::Context) -> usize {
133 std::mem::align_of::<u32>()
134 }
135
136 #[inline(always)]
137 fn inline_size(_context: fidl::encoding::Context) -> usize {
138 std::mem::size_of::<u32>()
139 }
140
141 #[inline(always)]
142 fn encode_is_copy() -> bool {
143 false
144 }
145
146 #[inline(always)]
147 fn decode_is_copy() -> bool {
148 false
149 }
150 }
151
152 impl fidl::encoding::ValueTypeMarker for SuspendError {
153 type Borrowed<'a> = Self;
154 #[inline(always)]
155 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
156 *value
157 }
158 }
159
160 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for SuspendError {
161 #[inline]
162 unsafe fn encode(
163 self,
164 encoder: &mut fidl::encoding::Encoder<'_, D>,
165 offset: usize,
166 _depth: fidl::encoding::Depth,
167 ) -> fidl::Result<()> {
168 encoder.debug_check_bounds::<Self>(offset);
169 encoder.write_num(self.into_primitive(), offset);
170 Ok(())
171 }
172 }
173
174 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SuspendError {
175 #[inline(always)]
176 fn new_empty() -> Self {
177 Self::unknown()
178 }
179
180 #[inline]
181 unsafe fn decode(
182 &mut self,
183 decoder: &mut fidl::encoding::Decoder<'_, D>,
184 offset: usize,
185 _depth: fidl::encoding::Depth,
186 ) -> fidl::Result<()> {
187 decoder.debug_check_bounds::<Self>(offset);
188 let prim = decoder.read_num::<u32>(offset);
189
190 *self = Self::from_primitive_allow_unknown(prim);
191 Ok(())
192 }
193 }
194
195 impl fidl::encoding::ValueTypeMarker for PagerExtent {
196 type Borrowed<'a> = &'a Self;
197 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
198 value
199 }
200 }
201
202 unsafe impl fidl::encoding::TypeMarker for PagerExtent {
203 type Owned = Self;
204
205 #[inline(always)]
206 fn inline_align(_context: fidl::encoding::Context) -> usize {
207 8
208 }
209
210 #[inline(always)]
211 fn inline_size(_context: fidl::encoding::Context) -> usize {
212 16
213 }
214 #[inline(always)]
215 fn encode_is_copy() -> bool {
216 true
217 }
218
219 #[inline(always)]
220 fn decode_is_copy() -> bool {
221 true
222 }
223 }
224
225 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PagerExtent, D>
226 for &PagerExtent
227 {
228 #[inline]
229 unsafe fn encode(
230 self,
231 encoder: &mut fidl::encoding::Encoder<'_, D>,
232 offset: usize,
233 _depth: fidl::encoding::Depth,
234 ) -> fidl::Result<()> {
235 encoder.debug_check_bounds::<PagerExtent>(offset);
236 unsafe {
237 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
239 (buf_ptr as *mut PagerExtent).write_unaligned((self as *const PagerExtent).read());
240 }
243 Ok(())
244 }
245 }
246 unsafe impl<
247 D: fidl::encoding::ResourceDialect,
248 T0: fidl::encoding::Encode<u32, D>,
249 T1: fidl::encoding::Encode<u32, D>,
250 T2: fidl::encoding::Encode<u64, D>,
251 > fidl::encoding::Encode<PagerExtent, D> for (T0, T1, T2)
252 {
253 #[inline]
254 unsafe fn encode(
255 self,
256 encoder: &mut fidl::encoding::Encoder<'_, D>,
257 offset: usize,
258 depth: fidl::encoding::Depth,
259 ) -> fidl::Result<()> {
260 encoder.debug_check_bounds::<PagerExtent>(offset);
261 self.0.encode(encoder, offset + 0, depth)?;
265 self.1.encode(encoder, offset + 4, depth)?;
266 self.2.encode(encoder, offset + 8, depth)?;
267 Ok(())
268 }
269 }
270
271 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PagerExtent {
272 #[inline(always)]
273 fn new_empty() -> Self {
274 Self {
275 logical_start: fidl::new_empty!(u32, D),
276 logical_end: fidl::new_empty!(u32, D),
277 physical_block: fidl::new_empty!(u64, D),
278 }
279 }
280
281 #[inline]
282 unsafe fn decode(
283 &mut self,
284 decoder: &mut fidl::encoding::Decoder<'_, D>,
285 offset: usize,
286 _depth: fidl::encoding::Depth,
287 ) -> fidl::Result<()> {
288 decoder.debug_check_bounds::<Self>(offset);
289 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
290 unsafe {
293 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
294 }
295 Ok(())
296 }
297 }
298
299 impl ManagerSuspendContainerResponse {
300 #[inline(always)]
301 fn max_ordinal_present(&self) -> u64 {
302 if let Some(_) = self.resume_reason {
303 return 2;
304 }
305 if let Some(_) = self.suspend_time {
306 return 1;
307 }
308 0
309 }
310 }
311
312 impl fidl::encoding::ValueTypeMarker for ManagerSuspendContainerResponse {
313 type Borrowed<'a> = &'a Self;
314 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
315 value
316 }
317 }
318
319 unsafe impl fidl::encoding::TypeMarker for ManagerSuspendContainerResponse {
320 type Owned = Self;
321
322 #[inline(always)]
323 fn inline_align(_context: fidl::encoding::Context) -> usize {
324 8
325 }
326
327 #[inline(always)]
328 fn inline_size(_context: fidl::encoding::Context) -> usize {
329 16
330 }
331 }
332
333 unsafe impl<D: fidl::encoding::ResourceDialect>
334 fidl::encoding::Encode<ManagerSuspendContainerResponse, D>
335 for &ManagerSuspendContainerResponse
336 {
337 unsafe fn encode(
338 self,
339 encoder: &mut fidl::encoding::Encoder<'_, D>,
340 offset: usize,
341 mut depth: fidl::encoding::Depth,
342 ) -> fidl::Result<()> {
343 encoder.debug_check_bounds::<ManagerSuspendContainerResponse>(offset);
344 let max_ordinal: u64 = self.max_ordinal_present();
346 encoder.write_num(max_ordinal, offset);
347 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
348 if max_ordinal == 0 {
350 return Ok(());
351 }
352 depth.increment()?;
353 let envelope_size = 8;
354 let bytes_len = max_ordinal as usize * envelope_size;
355 #[allow(unused_variables)]
356 let offset = encoder.out_of_line_offset(bytes_len);
357 let mut _prev_end_offset: usize = 0;
358 if 1 > max_ordinal {
359 return Ok(());
360 }
361
362 let cur_offset: usize = (1 - 1) * envelope_size;
365
366 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
368
369 fidl::encoding::encode_in_envelope_optional::<i64, D>(
374 self.suspend_time.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
375 encoder,
376 offset + cur_offset,
377 depth,
378 )?;
379
380 _prev_end_offset = cur_offset + envelope_size;
381 if 2 > max_ordinal {
382 return Ok(());
383 }
384
385 let cur_offset: usize = (2 - 1) * envelope_size;
388
389 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
391
392 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
397 self.resume_reason.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
398 encoder, offset + cur_offset, depth
399 )?;
400
401 _prev_end_offset = cur_offset + envelope_size;
402
403 Ok(())
404 }
405 }
406
407 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
408 for ManagerSuspendContainerResponse
409 {
410 #[inline(always)]
411 fn new_empty() -> Self {
412 Self::default()
413 }
414
415 unsafe fn decode(
416 &mut self,
417 decoder: &mut fidl::encoding::Decoder<'_, D>,
418 offset: usize,
419 mut depth: fidl::encoding::Depth,
420 ) -> fidl::Result<()> {
421 decoder.debug_check_bounds::<Self>(offset);
422 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
423 None => return Err(fidl::Error::NotNullable),
424 Some(len) => len,
425 };
426 if len == 0 {
428 return Ok(());
429 };
430 depth.increment()?;
431 let envelope_size = 8;
432 let bytes_len = len * envelope_size;
433 let offset = decoder.out_of_line_offset(bytes_len)?;
434 let mut _next_ordinal_to_read = 0;
436 let mut next_offset = offset;
437 let end_offset = offset + bytes_len;
438 _next_ordinal_to_read += 1;
439 if next_offset >= end_offset {
440 return Ok(());
441 }
442
443 while _next_ordinal_to_read < 1 {
445 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
446 _next_ordinal_to_read += 1;
447 next_offset += envelope_size;
448 }
449
450 let next_out_of_line = decoder.next_out_of_line();
451 let handles_before = decoder.remaining_handles();
452 if let Some((inlined, num_bytes, num_handles)) =
453 fidl::encoding::decode_envelope_header(decoder, next_offset)?
454 {
455 let member_inline_size =
456 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
457 if inlined != (member_inline_size <= 4) {
458 return Err(fidl::Error::InvalidInlineBitInEnvelope);
459 }
460 let inner_offset;
461 let mut inner_depth = depth.clone();
462 if inlined {
463 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
464 inner_offset = next_offset;
465 } else {
466 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
467 inner_depth.increment()?;
468 }
469 let val_ref = self.suspend_time.get_or_insert_with(|| fidl::new_empty!(i64, D));
470 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
471 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
472 {
473 return Err(fidl::Error::InvalidNumBytesInEnvelope);
474 }
475 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
476 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
477 }
478 }
479
480 next_offset += envelope_size;
481 _next_ordinal_to_read += 1;
482 if next_offset >= end_offset {
483 return Ok(());
484 }
485
486 while _next_ordinal_to_read < 2 {
488 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
489 _next_ordinal_to_read += 1;
490 next_offset += envelope_size;
491 }
492
493 let next_out_of_line = decoder.next_out_of_line();
494 let handles_before = decoder.remaining_handles();
495 if let Some((inlined, num_bytes, num_handles)) =
496 fidl::encoding::decode_envelope_header(decoder, next_offset)?
497 {
498 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
499 if inlined != (member_inline_size <= 4) {
500 return Err(fidl::Error::InvalidInlineBitInEnvelope);
501 }
502 let inner_offset;
503 let mut inner_depth = depth.clone();
504 if inlined {
505 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
506 inner_offset = next_offset;
507 } else {
508 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
509 inner_depth.increment()?;
510 }
511 let val_ref = self.resume_reason.get_or_insert_with(|| {
512 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
513 });
514 fidl::decode!(
515 fidl::encoding::BoundedString<1024>,
516 D,
517 val_ref,
518 decoder,
519 inner_offset,
520 inner_depth
521 )?;
522 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
523 {
524 return Err(fidl::Error::InvalidNumBytesInEnvelope);
525 }
526 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
527 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
528 }
529 }
530
531 next_offset += envelope_size;
532
533 while next_offset < end_offset {
535 _next_ordinal_to_read += 1;
536 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
537 next_offset += envelope_size;
538 }
539
540 Ok(())
541 }
542 }
543
544 impl PagerRegisterFileRequest {
545 #[inline(always)]
546 fn max_ordinal_present(&self) -> u64 {
547 if let Some(_) = self.extents {
548 return 4;
549 }
550 if let Some(_) = self.size {
551 return 3;
552 }
553 if let Some(_) = self.inode_num {
554 return 2;
555 }
556 if let Some(_) = self.name {
557 return 1;
558 }
559 0
560 }
561 }
562
563 impl fidl::encoding::ValueTypeMarker for PagerRegisterFileRequest {
564 type Borrowed<'a> = &'a Self;
565 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
566 value
567 }
568 }
569
570 unsafe impl fidl::encoding::TypeMarker for PagerRegisterFileRequest {
571 type Owned = Self;
572
573 #[inline(always)]
574 fn inline_align(_context: fidl::encoding::Context) -> usize {
575 8
576 }
577
578 #[inline(always)]
579 fn inline_size(_context: fidl::encoding::Context) -> usize {
580 16
581 }
582 }
583
584 unsafe impl<D: fidl::encoding::ResourceDialect>
585 fidl::encoding::Encode<PagerRegisterFileRequest, D> for &PagerRegisterFileRequest
586 {
587 unsafe fn encode(
588 self,
589 encoder: &mut fidl::encoding::Encoder<'_, D>,
590 offset: usize,
591 mut depth: fidl::encoding::Depth,
592 ) -> fidl::Result<()> {
593 encoder.debug_check_bounds::<PagerRegisterFileRequest>(offset);
594 let max_ordinal: u64 = self.max_ordinal_present();
596 encoder.write_num(max_ordinal, offset);
597 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
598 if max_ordinal == 0 {
600 return Ok(());
601 }
602 depth.increment()?;
603 let envelope_size = 8;
604 let bytes_len = max_ordinal as usize * envelope_size;
605 #[allow(unused_variables)]
606 let offset = encoder.out_of_line_offset(bytes_len);
607 let mut _prev_end_offset: usize = 0;
608 if 1 > max_ordinal {
609 return Ok(());
610 }
611
612 let cur_offset: usize = (1 - 1) * envelope_size;
615
616 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
618
619 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
624 self.name.as_ref().map(
625 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
626 ),
627 encoder,
628 offset + cur_offset,
629 depth,
630 )?;
631
632 _prev_end_offset = cur_offset + envelope_size;
633 if 2 > max_ordinal {
634 return Ok(());
635 }
636
637 let cur_offset: usize = (2 - 1) * envelope_size;
640
641 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
643
644 fidl::encoding::encode_in_envelope_optional::<u32, D>(
649 self.inode_num.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
650 encoder,
651 offset + cur_offset,
652 depth,
653 )?;
654
655 _prev_end_offset = cur_offset + envelope_size;
656 if 3 > max_ordinal {
657 return Ok(());
658 }
659
660 let cur_offset: usize = (3 - 1) * envelope_size;
663
664 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
666
667 fidl::encoding::encode_in_envelope_optional::<u64, D>(
672 self.size.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
673 encoder,
674 offset + cur_offset,
675 depth,
676 )?;
677
678 _prev_end_offset = cur_offset + envelope_size;
679 if 4 > max_ordinal {
680 return Ok(());
681 }
682
683 let cur_offset: usize = (4 - 1) * envelope_size;
686
687 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
689
690 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<PagerExtent, 1024>, D>(
695 self.extents.as_ref().map(<fidl::encoding::Vector<PagerExtent, 1024> as fidl::encoding::ValueTypeMarker>::borrow),
696 encoder, offset + cur_offset, depth
697 )?;
698
699 _prev_end_offset = cur_offset + envelope_size;
700
701 Ok(())
702 }
703 }
704
705 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
706 for PagerRegisterFileRequest
707 {
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 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
755 decoder.context,
756 );
757 if inlined != (member_inline_size <= 4) {
758 return Err(fidl::Error::InvalidInlineBitInEnvelope);
759 }
760 let inner_offset;
761 let mut inner_depth = depth.clone();
762 if inlined {
763 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
764 inner_offset = next_offset;
765 } else {
766 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
767 inner_depth.increment()?;
768 }
769 let val_ref = self
770 .name
771 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
772 fidl::decode!(
773 fidl::encoding::UnboundedString,
774 D,
775 val_ref,
776 decoder,
777 inner_offset,
778 inner_depth
779 )?;
780 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
781 {
782 return Err(fidl::Error::InvalidNumBytesInEnvelope);
783 }
784 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
785 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
786 }
787 }
788
789 next_offset += envelope_size;
790 _next_ordinal_to_read += 1;
791 if next_offset >= end_offset {
792 return Ok(());
793 }
794
795 while _next_ordinal_to_read < 2 {
797 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
798 _next_ordinal_to_read += 1;
799 next_offset += envelope_size;
800 }
801
802 let next_out_of_line = decoder.next_out_of_line();
803 let handles_before = decoder.remaining_handles();
804 if let Some((inlined, num_bytes, num_handles)) =
805 fidl::encoding::decode_envelope_header(decoder, next_offset)?
806 {
807 let member_inline_size =
808 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
809 if inlined != (member_inline_size <= 4) {
810 return Err(fidl::Error::InvalidInlineBitInEnvelope);
811 }
812 let inner_offset;
813 let mut inner_depth = depth.clone();
814 if inlined {
815 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
816 inner_offset = next_offset;
817 } else {
818 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
819 inner_depth.increment()?;
820 }
821 let val_ref = self.inode_num.get_or_insert_with(|| fidl::new_empty!(u32, D));
822 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
823 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
824 {
825 return Err(fidl::Error::InvalidNumBytesInEnvelope);
826 }
827 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
828 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
829 }
830 }
831
832 next_offset += envelope_size;
833 _next_ordinal_to_read += 1;
834 if next_offset >= end_offset {
835 return Ok(());
836 }
837
838 while _next_ordinal_to_read < 3 {
840 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
841 _next_ordinal_to_read += 1;
842 next_offset += envelope_size;
843 }
844
845 let next_out_of_line = decoder.next_out_of_line();
846 let handles_before = decoder.remaining_handles();
847 if let Some((inlined, num_bytes, num_handles)) =
848 fidl::encoding::decode_envelope_header(decoder, next_offset)?
849 {
850 let member_inline_size =
851 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
852 if inlined != (member_inline_size <= 4) {
853 return Err(fidl::Error::InvalidInlineBitInEnvelope);
854 }
855 let inner_offset;
856 let mut inner_depth = depth.clone();
857 if inlined {
858 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
859 inner_offset = next_offset;
860 } else {
861 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
862 inner_depth.increment()?;
863 }
864 let val_ref = self.size.get_or_insert_with(|| fidl::new_empty!(u64, D));
865 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
866 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
867 {
868 return Err(fidl::Error::InvalidNumBytesInEnvelope);
869 }
870 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
871 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
872 }
873 }
874
875 next_offset += envelope_size;
876 _next_ordinal_to_read += 1;
877 if next_offset >= end_offset {
878 return Ok(());
879 }
880
881 while _next_ordinal_to_read < 4 {
883 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
884 _next_ordinal_to_read += 1;
885 next_offset += envelope_size;
886 }
887
888 let next_out_of_line = decoder.next_out_of_line();
889 let handles_before = decoder.remaining_handles();
890 if let Some((inlined, num_bytes, num_handles)) =
891 fidl::encoding::decode_envelope_header(decoder, next_offset)?
892 {
893 let member_inline_size = <fidl::encoding::Vector<PagerExtent, 1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
894 if inlined != (member_inline_size <= 4) {
895 return Err(fidl::Error::InvalidInlineBitInEnvelope);
896 }
897 let inner_offset;
898 let mut inner_depth = depth.clone();
899 if inlined {
900 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
901 inner_offset = next_offset;
902 } else {
903 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
904 inner_depth.increment()?;
905 }
906 let val_ref = self.extents.get_or_insert_with(
907 || fidl::new_empty!(fidl::encoding::Vector<PagerExtent, 1024>, D),
908 );
909 fidl::decode!(fidl::encoding::Vector<PagerExtent, 1024>, D, val_ref, decoder, inner_offset, inner_depth)?;
910 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
911 {
912 return Err(fidl::Error::InvalidNumBytesInEnvelope);
913 }
914 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
915 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
916 }
917 }
918
919 next_offset += envelope_size;
920
921 while next_offset < end_offset {
923 _next_ordinal_to_read += 1;
924 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
925 next_offset += envelope_size;
926 }
927
928 Ok(())
929 }
930 }
931}