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 MAX_SUSPEND_STATES: u32 = 256;
13
14#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
16pub enum WakeVectorType {
17 Koid,
19 #[doc(hidden)]
20 __SourceBreaking { unknown_ordinal: u32 },
21}
22
23#[macro_export]
25macro_rules! WakeVectorTypeUnknown {
26 () => {
27 _
28 };
29}
30
31impl WakeVectorType {
32 #[inline]
33 pub fn from_primitive(prim: u32) -> Option<Self> {
34 match prim {
35 1 => Some(Self::Koid),
36 _ => None,
37 }
38 }
39
40 #[inline]
41 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
42 match prim {
43 1 => Self::Koid,
44 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
45 }
46 }
47
48 #[inline]
49 pub fn unknown() -> Self {
50 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
51 }
52
53 #[inline]
54 pub const fn into_primitive(self) -> u32 {
55 match self {
56 Self::Koid => 1,
57 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
58 }
59 }
60
61 #[inline]
62 pub fn is_unknown(&self) -> bool {
63 match self {
64 Self::__SourceBreaking { unknown_ordinal: _ } => true,
65 _ => false,
66 }
67 }
68}
69
70#[derive(Clone, Debug, Default, PartialEq)]
71pub struct SuspendState {
72 pub resume_latency: Option<i64>,
75 #[doc(hidden)]
76 pub __source_breaking: fidl::marker::SourceBreaking,
77}
78
79impl fidl::Persistable for SuspendState {}
80
81#[derive(Clone, Debug, Default, PartialEq)]
82pub struct SuspenderForceLowestPowerModeRequest {
83 pub enable: Option<bool>,
84 #[doc(hidden)]
85 pub __source_breaking: fidl::marker::SourceBreaking,
86}
87
88impl fidl::Persistable for SuspenderForceLowestPowerModeRequest {}
89
90#[derive(Clone, Debug, Default, PartialEq)]
91pub struct SuspenderSuspendRequest {
92 pub state_index: Option<u64>,
97 #[doc(hidden)]
98 pub __source_breaking: fidl::marker::SourceBreaking,
99}
100
101impl fidl::Persistable for SuspenderSuspendRequest {}
102
103#[derive(Clone, Debug, Default, PartialEq)]
104pub struct SuspenderGetSuspendStatesResponse {
105 pub suspend_states: Option<Vec<SuspendState>>,
106 #[doc(hidden)]
107 pub __source_breaking: fidl::marker::SourceBreaking,
108}
109
110impl fidl::Persistable for SuspenderGetSuspendStatesResponse {}
111
112#[derive(Clone, Debug, Default, PartialEq)]
113pub struct SuspenderSuspendResponse {
114 pub reason: Option<WakeReason>,
118 pub suspend_duration: Option<i64>,
121 pub suspend_overhead: Option<i64>,
124 #[doc(hidden)]
125 pub __source_breaking: fidl::marker::SourceBreaking,
126}
127
128impl fidl::Persistable for SuspenderSuspendResponse {}
129
130#[derive(Clone, Debug, Default, PartialEq)]
131pub struct WakeReason {
132 pub wake_vectors: Option<Vec<u64>>,
139 pub soft_wake_vectors: Option<Vec<u64>>,
142 pub wake_vectors_type: Option<WakeVectorType>,
144 pub wake_vectors_overflow: Option<bool>,
147 #[doc(hidden)]
148 pub __source_breaking: fidl::marker::SourceBreaking,
149}
150
151impl fidl::Persistable for WakeReason {}
152
153pub mod suspender_ordinals {
154 pub const GET_SUSPEND_STATES: u64 = 0xa3fc4a1101bcbe1;
155 pub const SUSPEND: u64 = 0x5d8bb5e292987c8a;
156 pub const FORCE_LOWEST_POWER_MODE: u64 = 0x740518cfae1b7cdb;
157}
158
159mod internal {
160 use super::*;
161 unsafe impl fidl::encoding::TypeMarker for WakeVectorType {
162 type Owned = Self;
163
164 #[inline(always)]
165 fn inline_align(_context: fidl::encoding::Context) -> usize {
166 std::mem::align_of::<u32>()
167 }
168
169 #[inline(always)]
170 fn inline_size(_context: fidl::encoding::Context) -> usize {
171 std::mem::size_of::<u32>()
172 }
173
174 #[inline(always)]
175 fn encode_is_copy() -> bool {
176 false
177 }
178
179 #[inline(always)]
180 fn decode_is_copy() -> bool {
181 false
182 }
183 }
184
185 impl fidl::encoding::ValueTypeMarker for WakeVectorType {
186 type Borrowed<'a> = Self;
187 #[inline(always)]
188 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
189 *value
190 }
191 }
192
193 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WakeVectorType {
194 #[inline]
195 unsafe fn encode(
196 self,
197 encoder: &mut fidl::encoding::Encoder<'_, D>,
198 offset: usize,
199 _depth: fidl::encoding::Depth,
200 ) -> fidl::Result<()> {
201 encoder.debug_check_bounds::<Self>(offset);
202 encoder.write_num(self.into_primitive(), offset);
203 Ok(())
204 }
205 }
206
207 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WakeVectorType {
208 #[inline(always)]
209 fn new_empty() -> Self {
210 Self::unknown()
211 }
212
213 #[inline]
214 unsafe fn decode(
215 &mut self,
216 decoder: &mut fidl::encoding::Decoder<'_, D>,
217 offset: usize,
218 _depth: fidl::encoding::Depth,
219 ) -> fidl::Result<()> {
220 decoder.debug_check_bounds::<Self>(offset);
221 let prim = decoder.read_num::<u32>(offset);
222
223 *self = Self::from_primitive_allow_unknown(prim);
224 Ok(())
225 }
226 }
227
228 impl SuspendState {
229 #[inline(always)]
230 fn max_ordinal_present(&self) -> u64 {
231 if let Some(_) = self.resume_latency {
232 return 1;
233 }
234 0
235 }
236 }
237
238 impl fidl::encoding::ValueTypeMarker for SuspendState {
239 type Borrowed<'a> = &'a Self;
240 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
241 value
242 }
243 }
244
245 unsafe impl fidl::encoding::TypeMarker for SuspendState {
246 type Owned = Self;
247
248 #[inline(always)]
249 fn inline_align(_context: fidl::encoding::Context) -> usize {
250 8
251 }
252
253 #[inline(always)]
254 fn inline_size(_context: fidl::encoding::Context) -> usize {
255 16
256 }
257 }
258
259 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SuspendState, D>
260 for &SuspendState
261 {
262 unsafe fn encode(
263 self,
264 encoder: &mut fidl::encoding::Encoder<'_, D>,
265 offset: usize,
266 mut depth: fidl::encoding::Depth,
267 ) -> fidl::Result<()> {
268 encoder.debug_check_bounds::<SuspendState>(offset);
269 let max_ordinal: u64 = self.max_ordinal_present();
271 encoder.write_num(max_ordinal, offset);
272 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
273 if max_ordinal == 0 {
275 return Ok(());
276 }
277 depth.increment()?;
278 let envelope_size = 8;
279 let bytes_len = max_ordinal as usize * envelope_size;
280 #[allow(unused_variables)]
281 let offset = encoder.out_of_line_offset(bytes_len);
282 let mut _prev_end_offset: usize = 0;
283 if 1 > max_ordinal {
284 return Ok(());
285 }
286
287 let cur_offset: usize = (1 - 1) * envelope_size;
290
291 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
293
294 fidl::encoding::encode_in_envelope_optional::<i64, D>(
299 self.resume_latency.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
300 encoder,
301 offset + cur_offset,
302 depth,
303 )?;
304
305 _prev_end_offset = cur_offset + envelope_size;
306
307 Ok(())
308 }
309 }
310
311 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SuspendState {
312 #[inline(always)]
313 fn new_empty() -> Self {
314 Self::default()
315 }
316
317 unsafe fn decode(
318 &mut self,
319 decoder: &mut fidl::encoding::Decoder<'_, D>,
320 offset: usize,
321 mut depth: fidl::encoding::Depth,
322 ) -> fidl::Result<()> {
323 decoder.debug_check_bounds::<Self>(offset);
324 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
325 None => return Err(fidl::Error::NotNullable),
326 Some(len) => len,
327 };
328 if len == 0 {
330 return Ok(());
331 };
332 depth.increment()?;
333 let envelope_size = 8;
334 let bytes_len = len * envelope_size;
335 let offset = decoder.out_of_line_offset(bytes_len)?;
336 let mut _next_ordinal_to_read = 0;
338 let mut next_offset = offset;
339 let end_offset = offset + bytes_len;
340 _next_ordinal_to_read += 1;
341 if next_offset >= end_offset {
342 return Ok(());
343 }
344
345 while _next_ordinal_to_read < 1 {
347 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
348 _next_ordinal_to_read += 1;
349 next_offset += envelope_size;
350 }
351
352 let next_out_of_line = decoder.next_out_of_line();
353 let handles_before = decoder.remaining_handles();
354 if let Some((inlined, num_bytes, num_handles)) =
355 fidl::encoding::decode_envelope_header(decoder, next_offset)?
356 {
357 let member_inline_size =
358 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
359 if inlined != (member_inline_size <= 4) {
360 return Err(fidl::Error::InvalidInlineBitInEnvelope);
361 }
362 let inner_offset;
363 let mut inner_depth = depth.clone();
364 if inlined {
365 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
366 inner_offset = next_offset;
367 } else {
368 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
369 inner_depth.increment()?;
370 }
371 let val_ref = self.resume_latency.get_or_insert_with(|| fidl::new_empty!(i64, D));
372 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
373 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
374 {
375 return Err(fidl::Error::InvalidNumBytesInEnvelope);
376 }
377 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
378 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
379 }
380 }
381
382 next_offset += envelope_size;
383
384 while next_offset < end_offset {
386 _next_ordinal_to_read += 1;
387 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
388 next_offset += envelope_size;
389 }
390
391 Ok(())
392 }
393 }
394
395 impl SuspenderForceLowestPowerModeRequest {
396 #[inline(always)]
397 fn max_ordinal_present(&self) -> u64 {
398 if let Some(_) = self.enable {
399 return 1;
400 }
401 0
402 }
403 }
404
405 impl fidl::encoding::ValueTypeMarker for SuspenderForceLowestPowerModeRequest {
406 type Borrowed<'a> = &'a Self;
407 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
408 value
409 }
410 }
411
412 unsafe impl fidl::encoding::TypeMarker for SuspenderForceLowestPowerModeRequest {
413 type Owned = Self;
414
415 #[inline(always)]
416 fn inline_align(_context: fidl::encoding::Context) -> usize {
417 8
418 }
419
420 #[inline(always)]
421 fn inline_size(_context: fidl::encoding::Context) -> usize {
422 16
423 }
424 }
425
426 unsafe impl<D: fidl::encoding::ResourceDialect>
427 fidl::encoding::Encode<SuspenderForceLowestPowerModeRequest, D>
428 for &SuspenderForceLowestPowerModeRequest
429 {
430 unsafe fn encode(
431 self,
432 encoder: &mut fidl::encoding::Encoder<'_, D>,
433 offset: usize,
434 mut depth: fidl::encoding::Depth,
435 ) -> fidl::Result<()> {
436 encoder.debug_check_bounds::<SuspenderForceLowestPowerModeRequest>(offset);
437 let max_ordinal: u64 = self.max_ordinal_present();
439 encoder.write_num(max_ordinal, offset);
440 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
441 if max_ordinal == 0 {
443 return Ok(());
444 }
445 depth.increment()?;
446 let envelope_size = 8;
447 let bytes_len = max_ordinal as usize * envelope_size;
448 #[allow(unused_variables)]
449 let offset = encoder.out_of_line_offset(bytes_len);
450 let mut _prev_end_offset: usize = 0;
451 if 1 > max_ordinal {
452 return Ok(());
453 }
454
455 let cur_offset: usize = (1 - 1) * envelope_size;
458
459 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
461
462 fidl::encoding::encode_in_envelope_optional::<bool, D>(
467 self.enable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
468 encoder,
469 offset + cur_offset,
470 depth,
471 )?;
472
473 _prev_end_offset = cur_offset + envelope_size;
474
475 Ok(())
476 }
477 }
478
479 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
480 for SuspenderForceLowestPowerModeRequest
481 {
482 #[inline(always)]
483 fn new_empty() -> Self {
484 Self::default()
485 }
486
487 unsafe fn decode(
488 &mut self,
489 decoder: &mut fidl::encoding::Decoder<'_, D>,
490 offset: usize,
491 mut depth: fidl::encoding::Depth,
492 ) -> fidl::Result<()> {
493 decoder.debug_check_bounds::<Self>(offset);
494 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
495 None => return Err(fidl::Error::NotNullable),
496 Some(len) => len,
497 };
498 if len == 0 {
500 return Ok(());
501 };
502 depth.increment()?;
503 let envelope_size = 8;
504 let bytes_len = len * envelope_size;
505 let offset = decoder.out_of_line_offset(bytes_len)?;
506 let mut _next_ordinal_to_read = 0;
508 let mut next_offset = offset;
509 let end_offset = offset + bytes_len;
510 _next_ordinal_to_read += 1;
511 if next_offset >= end_offset {
512 return Ok(());
513 }
514
515 while _next_ordinal_to_read < 1 {
517 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
518 _next_ordinal_to_read += 1;
519 next_offset += envelope_size;
520 }
521
522 let next_out_of_line = decoder.next_out_of_line();
523 let handles_before = decoder.remaining_handles();
524 if let Some((inlined, num_bytes, num_handles)) =
525 fidl::encoding::decode_envelope_header(decoder, next_offset)?
526 {
527 let member_inline_size =
528 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
529 if inlined != (member_inline_size <= 4) {
530 return Err(fidl::Error::InvalidInlineBitInEnvelope);
531 }
532 let inner_offset;
533 let mut inner_depth = depth.clone();
534 if inlined {
535 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
536 inner_offset = next_offset;
537 } else {
538 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
539 inner_depth.increment()?;
540 }
541 let val_ref = self.enable.get_or_insert_with(|| fidl::new_empty!(bool, D));
542 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
543 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
544 {
545 return Err(fidl::Error::InvalidNumBytesInEnvelope);
546 }
547 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
548 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
549 }
550 }
551
552 next_offset += envelope_size;
553
554 while next_offset < end_offset {
556 _next_ordinal_to_read += 1;
557 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
558 next_offset += envelope_size;
559 }
560
561 Ok(())
562 }
563 }
564
565 impl SuspenderSuspendRequest {
566 #[inline(always)]
567 fn max_ordinal_present(&self) -> u64 {
568 if let Some(_) = self.state_index {
569 return 1;
570 }
571 0
572 }
573 }
574
575 impl fidl::encoding::ValueTypeMarker for SuspenderSuspendRequest {
576 type Borrowed<'a> = &'a Self;
577 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
578 value
579 }
580 }
581
582 unsafe impl fidl::encoding::TypeMarker for SuspenderSuspendRequest {
583 type Owned = Self;
584
585 #[inline(always)]
586 fn inline_align(_context: fidl::encoding::Context) -> usize {
587 8
588 }
589
590 #[inline(always)]
591 fn inline_size(_context: fidl::encoding::Context) -> usize {
592 16
593 }
594 }
595
596 unsafe impl<D: fidl::encoding::ResourceDialect>
597 fidl::encoding::Encode<SuspenderSuspendRequest, D> for &SuspenderSuspendRequest
598 {
599 unsafe fn encode(
600 self,
601 encoder: &mut fidl::encoding::Encoder<'_, D>,
602 offset: usize,
603 mut depth: fidl::encoding::Depth,
604 ) -> fidl::Result<()> {
605 encoder.debug_check_bounds::<SuspenderSuspendRequest>(offset);
606 let max_ordinal: u64 = self.max_ordinal_present();
608 encoder.write_num(max_ordinal, offset);
609 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
610 if max_ordinal == 0 {
612 return Ok(());
613 }
614 depth.increment()?;
615 let envelope_size = 8;
616 let bytes_len = max_ordinal as usize * envelope_size;
617 #[allow(unused_variables)]
618 let offset = encoder.out_of_line_offset(bytes_len);
619 let mut _prev_end_offset: usize = 0;
620 if 1 > max_ordinal {
621 return Ok(());
622 }
623
624 let cur_offset: usize = (1 - 1) * envelope_size;
627
628 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
630
631 fidl::encoding::encode_in_envelope_optional::<u64, D>(
636 self.state_index.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
637 encoder,
638 offset + cur_offset,
639 depth,
640 )?;
641
642 _prev_end_offset = cur_offset + envelope_size;
643
644 Ok(())
645 }
646 }
647
648 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
649 for SuspenderSuspendRequest
650 {
651 #[inline(always)]
652 fn new_empty() -> Self {
653 Self::default()
654 }
655
656 unsafe fn decode(
657 &mut self,
658 decoder: &mut fidl::encoding::Decoder<'_, D>,
659 offset: usize,
660 mut depth: fidl::encoding::Depth,
661 ) -> fidl::Result<()> {
662 decoder.debug_check_bounds::<Self>(offset);
663 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
664 None => return Err(fidl::Error::NotNullable),
665 Some(len) => len,
666 };
667 if len == 0 {
669 return Ok(());
670 };
671 depth.increment()?;
672 let envelope_size = 8;
673 let bytes_len = len * envelope_size;
674 let offset = decoder.out_of_line_offset(bytes_len)?;
675 let mut _next_ordinal_to_read = 0;
677 let mut next_offset = offset;
678 let end_offset = offset + bytes_len;
679 _next_ordinal_to_read += 1;
680 if next_offset >= end_offset {
681 return Ok(());
682 }
683
684 while _next_ordinal_to_read < 1 {
686 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
687 _next_ordinal_to_read += 1;
688 next_offset += envelope_size;
689 }
690
691 let next_out_of_line = decoder.next_out_of_line();
692 let handles_before = decoder.remaining_handles();
693 if let Some((inlined, num_bytes, num_handles)) =
694 fidl::encoding::decode_envelope_header(decoder, next_offset)?
695 {
696 let member_inline_size =
697 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
698 if inlined != (member_inline_size <= 4) {
699 return Err(fidl::Error::InvalidInlineBitInEnvelope);
700 }
701 let inner_offset;
702 let mut inner_depth = depth.clone();
703 if inlined {
704 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
705 inner_offset = next_offset;
706 } else {
707 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
708 inner_depth.increment()?;
709 }
710 let val_ref = self.state_index.get_or_insert_with(|| fidl::new_empty!(u64, D));
711 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
712 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
713 {
714 return Err(fidl::Error::InvalidNumBytesInEnvelope);
715 }
716 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
717 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
718 }
719 }
720
721 next_offset += envelope_size;
722
723 while next_offset < end_offset {
725 _next_ordinal_to_read += 1;
726 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
727 next_offset += envelope_size;
728 }
729
730 Ok(())
731 }
732 }
733
734 impl SuspenderGetSuspendStatesResponse {
735 #[inline(always)]
736 fn max_ordinal_present(&self) -> u64 {
737 if let Some(_) = self.suspend_states {
738 return 1;
739 }
740 0
741 }
742 }
743
744 impl fidl::encoding::ValueTypeMarker for SuspenderGetSuspendStatesResponse {
745 type Borrowed<'a> = &'a Self;
746 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
747 value
748 }
749 }
750
751 unsafe impl fidl::encoding::TypeMarker for SuspenderGetSuspendStatesResponse {
752 type Owned = Self;
753
754 #[inline(always)]
755 fn inline_align(_context: fidl::encoding::Context) -> usize {
756 8
757 }
758
759 #[inline(always)]
760 fn inline_size(_context: fidl::encoding::Context) -> usize {
761 16
762 }
763 }
764
765 unsafe impl<D: fidl::encoding::ResourceDialect>
766 fidl::encoding::Encode<SuspenderGetSuspendStatesResponse, D>
767 for &SuspenderGetSuspendStatesResponse
768 {
769 unsafe fn encode(
770 self,
771 encoder: &mut fidl::encoding::Encoder<'_, D>,
772 offset: usize,
773 mut depth: fidl::encoding::Depth,
774 ) -> fidl::Result<()> {
775 encoder.debug_check_bounds::<SuspenderGetSuspendStatesResponse>(offset);
776 let max_ordinal: u64 = self.max_ordinal_present();
778 encoder.write_num(max_ordinal, offset);
779 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
780 if max_ordinal == 0 {
782 return Ok(());
783 }
784 depth.increment()?;
785 let envelope_size = 8;
786 let bytes_len = max_ordinal as usize * envelope_size;
787 #[allow(unused_variables)]
788 let offset = encoder.out_of_line_offset(bytes_len);
789 let mut _prev_end_offset: usize = 0;
790 if 1 > max_ordinal {
791 return Ok(());
792 }
793
794 let cur_offset: usize = (1 - 1) * envelope_size;
797
798 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
800
801 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<SuspendState, 256>, D>(
806 self.suspend_states.as_ref().map(<fidl::encoding::Vector<SuspendState, 256> as fidl::encoding::ValueTypeMarker>::borrow),
807 encoder, offset + cur_offset, depth
808 )?;
809
810 _prev_end_offset = cur_offset + envelope_size;
811
812 Ok(())
813 }
814 }
815
816 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
817 for SuspenderGetSuspendStatesResponse
818 {
819 #[inline(always)]
820 fn new_empty() -> Self {
821 Self::default()
822 }
823
824 unsafe fn decode(
825 &mut self,
826 decoder: &mut fidl::encoding::Decoder<'_, D>,
827 offset: usize,
828 mut depth: fidl::encoding::Depth,
829 ) -> fidl::Result<()> {
830 decoder.debug_check_bounds::<Self>(offset);
831 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
832 None => return Err(fidl::Error::NotNullable),
833 Some(len) => len,
834 };
835 if len == 0 {
837 return Ok(());
838 };
839 depth.increment()?;
840 let envelope_size = 8;
841 let bytes_len = len * envelope_size;
842 let offset = decoder.out_of_line_offset(bytes_len)?;
843 let mut _next_ordinal_to_read = 0;
845 let mut next_offset = offset;
846 let end_offset = offset + bytes_len;
847 _next_ordinal_to_read += 1;
848 if next_offset >= end_offset {
849 return Ok(());
850 }
851
852 while _next_ordinal_to_read < 1 {
854 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
855 _next_ordinal_to_read += 1;
856 next_offset += envelope_size;
857 }
858
859 let next_out_of_line = decoder.next_out_of_line();
860 let handles_before = decoder.remaining_handles();
861 if let Some((inlined, num_bytes, num_handles)) =
862 fidl::encoding::decode_envelope_header(decoder, next_offset)?
863 {
864 let member_inline_size = <fidl::encoding::Vector<SuspendState, 256> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
865 if inlined != (member_inline_size <= 4) {
866 return Err(fidl::Error::InvalidInlineBitInEnvelope);
867 }
868 let inner_offset;
869 let mut inner_depth = depth.clone();
870 if inlined {
871 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
872 inner_offset = next_offset;
873 } else {
874 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
875 inner_depth.increment()?;
876 }
877 let val_ref = self.suspend_states.get_or_insert_with(
878 || fidl::new_empty!(fidl::encoding::Vector<SuspendState, 256>, D),
879 );
880 fidl::decode!(fidl::encoding::Vector<SuspendState, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
881 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
882 {
883 return Err(fidl::Error::InvalidNumBytesInEnvelope);
884 }
885 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
886 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
887 }
888 }
889
890 next_offset += envelope_size;
891
892 while next_offset < end_offset {
894 _next_ordinal_to_read += 1;
895 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
896 next_offset += envelope_size;
897 }
898
899 Ok(())
900 }
901 }
902
903 impl SuspenderSuspendResponse {
904 #[inline(always)]
905 fn max_ordinal_present(&self) -> u64 {
906 if let Some(_) = self.suspend_overhead {
907 return 3;
908 }
909 if let Some(_) = self.suspend_duration {
910 return 2;
911 }
912 if let Some(_) = self.reason {
913 return 1;
914 }
915 0
916 }
917 }
918
919 impl fidl::encoding::ValueTypeMarker for SuspenderSuspendResponse {
920 type Borrowed<'a> = &'a Self;
921 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
922 value
923 }
924 }
925
926 unsafe impl fidl::encoding::TypeMarker for SuspenderSuspendResponse {
927 type Owned = Self;
928
929 #[inline(always)]
930 fn inline_align(_context: fidl::encoding::Context) -> usize {
931 8
932 }
933
934 #[inline(always)]
935 fn inline_size(_context: fidl::encoding::Context) -> usize {
936 16
937 }
938 }
939
940 unsafe impl<D: fidl::encoding::ResourceDialect>
941 fidl::encoding::Encode<SuspenderSuspendResponse, D> for &SuspenderSuspendResponse
942 {
943 unsafe fn encode(
944 self,
945 encoder: &mut fidl::encoding::Encoder<'_, D>,
946 offset: usize,
947 mut depth: fidl::encoding::Depth,
948 ) -> fidl::Result<()> {
949 encoder.debug_check_bounds::<SuspenderSuspendResponse>(offset);
950 let max_ordinal: u64 = self.max_ordinal_present();
952 encoder.write_num(max_ordinal, offset);
953 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
954 if max_ordinal == 0 {
956 return Ok(());
957 }
958 depth.increment()?;
959 let envelope_size = 8;
960 let bytes_len = max_ordinal as usize * envelope_size;
961 #[allow(unused_variables)]
962 let offset = encoder.out_of_line_offset(bytes_len);
963 let mut _prev_end_offset: usize = 0;
964 if 1 > max_ordinal {
965 return Ok(());
966 }
967
968 let cur_offset: usize = (1 - 1) * envelope_size;
971
972 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
974
975 fidl::encoding::encode_in_envelope_optional::<WakeReason, D>(
980 self.reason.as_ref().map(<WakeReason as fidl::encoding::ValueTypeMarker>::borrow),
981 encoder,
982 offset + cur_offset,
983 depth,
984 )?;
985
986 _prev_end_offset = cur_offset + envelope_size;
987 if 2 > max_ordinal {
988 return Ok(());
989 }
990
991 let cur_offset: usize = (2 - 1) * envelope_size;
994
995 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
997
998 fidl::encoding::encode_in_envelope_optional::<i64, D>(
1003 self.suspend_duration
1004 .as_ref()
1005 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
1006 encoder,
1007 offset + cur_offset,
1008 depth,
1009 )?;
1010
1011 _prev_end_offset = cur_offset + envelope_size;
1012 if 3 > max_ordinal {
1013 return Ok(());
1014 }
1015
1016 let cur_offset: usize = (3 - 1) * envelope_size;
1019
1020 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1022
1023 fidl::encoding::encode_in_envelope_optional::<i64, D>(
1028 self.suspend_overhead
1029 .as_ref()
1030 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
1031 encoder,
1032 offset + cur_offset,
1033 depth,
1034 )?;
1035
1036 _prev_end_offset = cur_offset + envelope_size;
1037
1038 Ok(())
1039 }
1040 }
1041
1042 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1043 for SuspenderSuspendResponse
1044 {
1045 #[inline(always)]
1046 fn new_empty() -> Self {
1047 Self::default()
1048 }
1049
1050 unsafe fn decode(
1051 &mut self,
1052 decoder: &mut fidl::encoding::Decoder<'_, D>,
1053 offset: usize,
1054 mut depth: fidl::encoding::Depth,
1055 ) -> fidl::Result<()> {
1056 decoder.debug_check_bounds::<Self>(offset);
1057 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1058 None => return Err(fidl::Error::NotNullable),
1059 Some(len) => len,
1060 };
1061 if len == 0 {
1063 return Ok(());
1064 };
1065 depth.increment()?;
1066 let envelope_size = 8;
1067 let bytes_len = len * envelope_size;
1068 let offset = decoder.out_of_line_offset(bytes_len)?;
1069 let mut _next_ordinal_to_read = 0;
1071 let mut next_offset = offset;
1072 let end_offset = offset + bytes_len;
1073 _next_ordinal_to_read += 1;
1074 if next_offset >= end_offset {
1075 return Ok(());
1076 }
1077
1078 while _next_ordinal_to_read < 1 {
1080 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1081 _next_ordinal_to_read += 1;
1082 next_offset += envelope_size;
1083 }
1084
1085 let next_out_of_line = decoder.next_out_of_line();
1086 let handles_before = decoder.remaining_handles();
1087 if let Some((inlined, num_bytes, num_handles)) =
1088 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1089 {
1090 let member_inline_size =
1091 <WakeReason as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1092 if inlined != (member_inline_size <= 4) {
1093 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1094 }
1095 let inner_offset;
1096 let mut inner_depth = depth.clone();
1097 if inlined {
1098 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1099 inner_offset = next_offset;
1100 } else {
1101 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1102 inner_depth.increment()?;
1103 }
1104 let val_ref = self.reason.get_or_insert_with(|| fidl::new_empty!(WakeReason, D));
1105 fidl::decode!(WakeReason, D, val_ref, decoder, inner_offset, inner_depth)?;
1106 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1107 {
1108 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1109 }
1110 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1111 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1112 }
1113 }
1114
1115 next_offset += envelope_size;
1116 _next_ordinal_to_read += 1;
1117 if next_offset >= end_offset {
1118 return Ok(());
1119 }
1120
1121 while _next_ordinal_to_read < 2 {
1123 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1124 _next_ordinal_to_read += 1;
1125 next_offset += envelope_size;
1126 }
1127
1128 let next_out_of_line = decoder.next_out_of_line();
1129 let handles_before = decoder.remaining_handles();
1130 if let Some((inlined, num_bytes, num_handles)) =
1131 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1132 {
1133 let member_inline_size =
1134 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1135 if inlined != (member_inline_size <= 4) {
1136 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1137 }
1138 let inner_offset;
1139 let mut inner_depth = depth.clone();
1140 if inlined {
1141 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1142 inner_offset = next_offset;
1143 } else {
1144 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1145 inner_depth.increment()?;
1146 }
1147 let val_ref = self.suspend_duration.get_or_insert_with(|| fidl::new_empty!(i64, D));
1148 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
1149 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1150 {
1151 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1152 }
1153 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1154 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1155 }
1156 }
1157
1158 next_offset += envelope_size;
1159 _next_ordinal_to_read += 1;
1160 if next_offset >= end_offset {
1161 return Ok(());
1162 }
1163
1164 while _next_ordinal_to_read < 3 {
1166 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1167 _next_ordinal_to_read += 1;
1168 next_offset += envelope_size;
1169 }
1170
1171 let next_out_of_line = decoder.next_out_of_line();
1172 let handles_before = decoder.remaining_handles();
1173 if let Some((inlined, num_bytes, num_handles)) =
1174 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1175 {
1176 let member_inline_size =
1177 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1178 if inlined != (member_inline_size <= 4) {
1179 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1180 }
1181 let inner_offset;
1182 let mut inner_depth = depth.clone();
1183 if inlined {
1184 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1185 inner_offset = next_offset;
1186 } else {
1187 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1188 inner_depth.increment()?;
1189 }
1190 let val_ref = self.suspend_overhead.get_or_insert_with(|| fidl::new_empty!(i64, D));
1191 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
1192 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1193 {
1194 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1195 }
1196 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1197 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1198 }
1199 }
1200
1201 next_offset += envelope_size;
1202
1203 while next_offset < end_offset {
1205 _next_ordinal_to_read += 1;
1206 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1207 next_offset += envelope_size;
1208 }
1209
1210 Ok(())
1211 }
1212 }
1213
1214 impl WakeReason {
1215 #[inline(always)]
1216 fn max_ordinal_present(&self) -> u64 {
1217 if let Some(_) = self.wake_vectors_overflow {
1218 return 4;
1219 }
1220 if let Some(_) = self.wake_vectors_type {
1221 return 3;
1222 }
1223 if let Some(_) = self.soft_wake_vectors {
1224 return 2;
1225 }
1226 if let Some(_) = self.wake_vectors {
1227 return 1;
1228 }
1229 0
1230 }
1231 }
1232
1233 impl fidl::encoding::ValueTypeMarker for WakeReason {
1234 type Borrowed<'a> = &'a Self;
1235 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1236 value
1237 }
1238 }
1239
1240 unsafe impl fidl::encoding::TypeMarker for WakeReason {
1241 type Owned = Self;
1242
1243 #[inline(always)]
1244 fn inline_align(_context: fidl::encoding::Context) -> usize {
1245 8
1246 }
1247
1248 #[inline(always)]
1249 fn inline_size(_context: fidl::encoding::Context) -> usize {
1250 16
1251 }
1252 }
1253
1254 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WakeReason, D>
1255 for &WakeReason
1256 {
1257 unsafe fn encode(
1258 self,
1259 encoder: &mut fidl::encoding::Encoder<'_, D>,
1260 offset: usize,
1261 mut depth: fidl::encoding::Depth,
1262 ) -> fidl::Result<()> {
1263 encoder.debug_check_bounds::<WakeReason>(offset);
1264 let max_ordinal: u64 = self.max_ordinal_present();
1266 encoder.write_num(max_ordinal, offset);
1267 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1268 if max_ordinal == 0 {
1270 return Ok(());
1271 }
1272 depth.increment()?;
1273 let envelope_size = 8;
1274 let bytes_len = max_ordinal as usize * envelope_size;
1275 #[allow(unused_variables)]
1276 let offset = encoder.out_of_line_offset(bytes_len);
1277 let mut _prev_end_offset: usize = 0;
1278 if 1 > max_ordinal {
1279 return Ok(());
1280 }
1281
1282 let cur_offset: usize = (1 - 1) * envelope_size;
1285
1286 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1288
1289 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u64>, D>(
1294 self.wake_vectors.as_ref().map(<fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow),
1295 encoder, offset + cur_offset, depth
1296 )?;
1297
1298 _prev_end_offset = cur_offset + envelope_size;
1299 if 2 > max_ordinal {
1300 return Ok(());
1301 }
1302
1303 let cur_offset: usize = (2 - 1) * envelope_size;
1306
1307 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1309
1310 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u64>, D>(
1315 self.soft_wake_vectors.as_ref().map(<fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow),
1316 encoder, offset + cur_offset, depth
1317 )?;
1318
1319 _prev_end_offset = cur_offset + envelope_size;
1320 if 3 > max_ordinal {
1321 return Ok(());
1322 }
1323
1324 let cur_offset: usize = (3 - 1) * envelope_size;
1327
1328 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1330
1331 fidl::encoding::encode_in_envelope_optional::<WakeVectorType, D>(
1336 self.wake_vectors_type
1337 .as_ref()
1338 .map(<WakeVectorType as fidl::encoding::ValueTypeMarker>::borrow),
1339 encoder,
1340 offset + cur_offset,
1341 depth,
1342 )?;
1343
1344 _prev_end_offset = cur_offset + envelope_size;
1345 if 4 > max_ordinal {
1346 return Ok(());
1347 }
1348
1349 let cur_offset: usize = (4 - 1) * envelope_size;
1352
1353 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1355
1356 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1361 self.wake_vectors_overflow
1362 .as_ref()
1363 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1364 encoder,
1365 offset + cur_offset,
1366 depth,
1367 )?;
1368
1369 _prev_end_offset = cur_offset + envelope_size;
1370
1371 Ok(())
1372 }
1373 }
1374
1375 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WakeReason {
1376 #[inline(always)]
1377 fn new_empty() -> Self {
1378 Self::default()
1379 }
1380
1381 unsafe fn decode(
1382 &mut self,
1383 decoder: &mut fidl::encoding::Decoder<'_, D>,
1384 offset: usize,
1385 mut depth: fidl::encoding::Depth,
1386 ) -> fidl::Result<()> {
1387 decoder.debug_check_bounds::<Self>(offset);
1388 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1389 None => return Err(fidl::Error::NotNullable),
1390 Some(len) => len,
1391 };
1392 if len == 0 {
1394 return Ok(());
1395 };
1396 depth.increment()?;
1397 let envelope_size = 8;
1398 let bytes_len = len * envelope_size;
1399 let offset = decoder.out_of_line_offset(bytes_len)?;
1400 let mut _next_ordinal_to_read = 0;
1402 let mut next_offset = offset;
1403 let end_offset = offset + bytes_len;
1404 _next_ordinal_to_read += 1;
1405 if next_offset >= end_offset {
1406 return Ok(());
1407 }
1408
1409 while _next_ordinal_to_read < 1 {
1411 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1412 _next_ordinal_to_read += 1;
1413 next_offset += envelope_size;
1414 }
1415
1416 let next_out_of_line = decoder.next_out_of_line();
1417 let handles_before = decoder.remaining_handles();
1418 if let Some((inlined, num_bytes, num_handles)) =
1419 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1420 {
1421 let member_inline_size = <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1422 if inlined != (member_inline_size <= 4) {
1423 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1424 }
1425 let inner_offset;
1426 let mut inner_depth = depth.clone();
1427 if inlined {
1428 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1429 inner_offset = next_offset;
1430 } else {
1431 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1432 inner_depth.increment()?;
1433 }
1434 let val_ref = self.wake_vectors.get_or_insert_with(|| {
1435 fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D)
1436 });
1437 fidl::decode!(
1438 fidl::encoding::UnboundedVector<u64>,
1439 D,
1440 val_ref,
1441 decoder,
1442 inner_offset,
1443 inner_depth
1444 )?;
1445 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1446 {
1447 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1448 }
1449 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1450 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1451 }
1452 }
1453
1454 next_offset += envelope_size;
1455 _next_ordinal_to_read += 1;
1456 if next_offset >= end_offset {
1457 return Ok(());
1458 }
1459
1460 while _next_ordinal_to_read < 2 {
1462 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1463 _next_ordinal_to_read += 1;
1464 next_offset += envelope_size;
1465 }
1466
1467 let next_out_of_line = decoder.next_out_of_line();
1468 let handles_before = decoder.remaining_handles();
1469 if let Some((inlined, num_bytes, num_handles)) =
1470 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1471 {
1472 let member_inline_size = <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1473 if inlined != (member_inline_size <= 4) {
1474 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1475 }
1476 let inner_offset;
1477 let mut inner_depth = depth.clone();
1478 if inlined {
1479 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1480 inner_offset = next_offset;
1481 } else {
1482 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1483 inner_depth.increment()?;
1484 }
1485 let val_ref = self.soft_wake_vectors.get_or_insert_with(|| {
1486 fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D)
1487 });
1488 fidl::decode!(
1489 fidl::encoding::UnboundedVector<u64>,
1490 D,
1491 val_ref,
1492 decoder,
1493 inner_offset,
1494 inner_depth
1495 )?;
1496 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1497 {
1498 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1499 }
1500 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1501 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1502 }
1503 }
1504
1505 next_offset += envelope_size;
1506 _next_ordinal_to_read += 1;
1507 if next_offset >= end_offset {
1508 return Ok(());
1509 }
1510
1511 while _next_ordinal_to_read < 3 {
1513 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1514 _next_ordinal_to_read += 1;
1515 next_offset += envelope_size;
1516 }
1517
1518 let next_out_of_line = decoder.next_out_of_line();
1519 let handles_before = decoder.remaining_handles();
1520 if let Some((inlined, num_bytes, num_handles)) =
1521 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1522 {
1523 let member_inline_size =
1524 <WakeVectorType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1525 if inlined != (member_inline_size <= 4) {
1526 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1527 }
1528 let inner_offset;
1529 let mut inner_depth = depth.clone();
1530 if inlined {
1531 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1532 inner_offset = next_offset;
1533 } else {
1534 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1535 inner_depth.increment()?;
1536 }
1537 let val_ref = self
1538 .wake_vectors_type
1539 .get_or_insert_with(|| fidl::new_empty!(WakeVectorType, D));
1540 fidl::decode!(WakeVectorType, 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 _next_ordinal_to_read += 1;
1552 if next_offset >= end_offset {
1553 return Ok(());
1554 }
1555
1556 while _next_ordinal_to_read < 4 {
1558 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1559 _next_ordinal_to_read += 1;
1560 next_offset += envelope_size;
1561 }
1562
1563 let next_out_of_line = decoder.next_out_of_line();
1564 let handles_before = decoder.remaining_handles();
1565 if let Some((inlined, num_bytes, num_handles)) =
1566 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1567 {
1568 let member_inline_size =
1569 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1570 if inlined != (member_inline_size <= 4) {
1571 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1572 }
1573 let inner_offset;
1574 let mut inner_depth = depth.clone();
1575 if inlined {
1576 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1577 inner_offset = next_offset;
1578 } else {
1579 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1580 inner_depth.increment()?;
1581 }
1582 let val_ref =
1583 self.wake_vectors_overflow.get_or_insert_with(|| fidl::new_empty!(bool, D));
1584 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1585 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1586 {
1587 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1588 }
1589 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1590 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1591 }
1592 }
1593
1594 next_offset += envelope_size;
1595
1596 while next_offset < end_offset {
1598 _next_ordinal_to_read += 1;
1599 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1600 next_offset += envelope_size;
1601 }
1602
1603 Ok(())
1604 }
1605 }
1606}