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, Debug, Default, PartialEq)]
12pub struct PsiProviderWatchMemoryStallRequest {
13 pub kind: Option<u32>,
14 pub threshold: Option<i64>,
15 pub window: Option<i64>,
16 #[doc(hidden)]
17 pub __source_breaking: fidl::marker::SourceBreaking,
18}
19
20impl fidl::Persistable for PsiProviderWatchMemoryStallRequest {}
21
22#[derive(Clone, Debug, Default, PartialEq)]
23pub struct PsiProviderGetMemoryPressureStatsResponse {
24 pub some: Option<PsiStats>,
26 pub full: Option<PsiStats>,
28 #[doc(hidden)]
29 pub __source_breaking: fidl::marker::SourceBreaking,
30}
31
32impl fidl::Persistable for PsiProviderGetMemoryPressureStatsResponse {}
33
34#[derive(Clone, Debug, Default, PartialEq)]
35pub struct PsiStats {
36 pub avg10: Option<f64>,
38 pub avg60: Option<f64>,
40 pub avg300: Option<f64>,
42 pub total: Option<i64>,
45 #[doc(hidden)]
46 pub __source_breaking: fidl::marker::SourceBreaking,
47}
48
49impl fidl::Persistable for PsiStats {}
50
51pub mod psi_provider_ordinals {
52 pub const GET_MEMORY_PRESSURE_STATS: u64 = 0x2122b26519bc6d20;
53 pub const WATCH_MEMORY_STALL: u64 = 0x1c45c961cce60400;
54}
55
56mod internal {
57 use super::*;
58
59 impl PsiProviderWatchMemoryStallRequest {
60 #[inline(always)]
61 fn max_ordinal_present(&self) -> u64 {
62 if let Some(_) = self.window {
63 return 3;
64 }
65 if let Some(_) = self.threshold {
66 return 2;
67 }
68 if let Some(_) = self.kind {
69 return 1;
70 }
71 0
72 }
73 }
74
75 impl fidl::encoding::ValueTypeMarker for PsiProviderWatchMemoryStallRequest {
76 type Borrowed<'a> = &'a Self;
77 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
78 value
79 }
80 }
81
82 unsafe impl fidl::encoding::TypeMarker for PsiProviderWatchMemoryStallRequest {
83 type Owned = Self;
84
85 #[inline(always)]
86 fn inline_align(_context: fidl::encoding::Context) -> usize {
87 8
88 }
89
90 #[inline(always)]
91 fn inline_size(_context: fidl::encoding::Context) -> usize {
92 16
93 }
94 }
95
96 unsafe impl<D: fidl::encoding::ResourceDialect>
97 fidl::encoding::Encode<PsiProviderWatchMemoryStallRequest, D>
98 for &PsiProviderWatchMemoryStallRequest
99 {
100 unsafe fn encode(
101 self,
102 encoder: &mut fidl::encoding::Encoder<'_, D>,
103 offset: usize,
104 mut depth: fidl::encoding::Depth,
105 ) -> fidl::Result<()> {
106 encoder.debug_check_bounds::<PsiProviderWatchMemoryStallRequest>(offset);
107 let max_ordinal: u64 = self.max_ordinal_present();
109 encoder.write_num(max_ordinal, offset);
110 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
111 if max_ordinal == 0 {
113 return Ok(());
114 }
115 depth.increment()?;
116 let envelope_size = 8;
117 let bytes_len = max_ordinal as usize * envelope_size;
118 #[allow(unused_variables)]
119 let offset = encoder.out_of_line_offset(bytes_len);
120 let mut _prev_end_offset: usize = 0;
121 if 1 > max_ordinal {
122 return Ok(());
123 }
124
125 let cur_offset: usize = (1 - 1) * envelope_size;
128
129 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
131
132 fidl::encoding::encode_in_envelope_optional::<u32, D>(
137 self.kind.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
138 encoder,
139 offset + cur_offset,
140 depth,
141 )?;
142
143 _prev_end_offset = cur_offset + envelope_size;
144 if 2 > max_ordinal {
145 return Ok(());
146 }
147
148 let cur_offset: usize = (2 - 1) * envelope_size;
151
152 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
154
155 fidl::encoding::encode_in_envelope_optional::<i64, D>(
160 self.threshold.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
161 encoder,
162 offset + cur_offset,
163 depth,
164 )?;
165
166 _prev_end_offset = cur_offset + envelope_size;
167 if 3 > max_ordinal {
168 return Ok(());
169 }
170
171 let cur_offset: usize = (3 - 1) * envelope_size;
174
175 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
177
178 fidl::encoding::encode_in_envelope_optional::<i64, D>(
183 self.window.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
184 encoder,
185 offset + cur_offset,
186 depth,
187 )?;
188
189 _prev_end_offset = cur_offset + envelope_size;
190
191 Ok(())
192 }
193 }
194
195 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
196 for PsiProviderWatchMemoryStallRequest
197 {
198 #[inline(always)]
199 fn new_empty() -> Self {
200 Self::default()
201 }
202
203 unsafe fn decode(
204 &mut self,
205 decoder: &mut fidl::encoding::Decoder<'_, D>,
206 offset: usize,
207 mut depth: fidl::encoding::Depth,
208 ) -> fidl::Result<()> {
209 decoder.debug_check_bounds::<Self>(offset);
210 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
211 None => return Err(fidl::Error::NotNullable),
212 Some(len) => len,
213 };
214 if len == 0 {
216 return Ok(());
217 };
218 depth.increment()?;
219 let envelope_size = 8;
220 let bytes_len = len * envelope_size;
221 let offset = decoder.out_of_line_offset(bytes_len)?;
222 let mut _next_ordinal_to_read = 0;
224 let mut next_offset = offset;
225 let end_offset = offset + bytes_len;
226 _next_ordinal_to_read += 1;
227 if next_offset >= end_offset {
228 return Ok(());
229 }
230
231 while _next_ordinal_to_read < 1 {
233 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
234 _next_ordinal_to_read += 1;
235 next_offset += envelope_size;
236 }
237
238 let next_out_of_line = decoder.next_out_of_line();
239 let handles_before = decoder.remaining_handles();
240 if let Some((inlined, num_bytes, num_handles)) =
241 fidl::encoding::decode_envelope_header(decoder, next_offset)?
242 {
243 let member_inline_size =
244 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
245 if inlined != (member_inline_size <= 4) {
246 return Err(fidl::Error::InvalidInlineBitInEnvelope);
247 }
248 let inner_offset;
249 let mut inner_depth = depth.clone();
250 if inlined {
251 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
252 inner_offset = next_offset;
253 } else {
254 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
255 inner_depth.increment()?;
256 }
257 let val_ref = self.kind.get_or_insert_with(|| fidl::new_empty!(u32, D));
258 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
259 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
260 {
261 return Err(fidl::Error::InvalidNumBytesInEnvelope);
262 }
263 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
264 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
265 }
266 }
267
268 next_offset += envelope_size;
269 _next_ordinal_to_read += 1;
270 if next_offset >= end_offset {
271 return Ok(());
272 }
273
274 while _next_ordinal_to_read < 2 {
276 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
277 _next_ordinal_to_read += 1;
278 next_offset += envelope_size;
279 }
280
281 let next_out_of_line = decoder.next_out_of_line();
282 let handles_before = decoder.remaining_handles();
283 if let Some((inlined, num_bytes, num_handles)) =
284 fidl::encoding::decode_envelope_header(decoder, next_offset)?
285 {
286 let member_inline_size =
287 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
288 if inlined != (member_inline_size <= 4) {
289 return Err(fidl::Error::InvalidInlineBitInEnvelope);
290 }
291 let inner_offset;
292 let mut inner_depth = depth.clone();
293 if inlined {
294 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
295 inner_offset = next_offset;
296 } else {
297 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
298 inner_depth.increment()?;
299 }
300 let val_ref = self.threshold.get_or_insert_with(|| fidl::new_empty!(i64, D));
301 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
302 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
303 {
304 return Err(fidl::Error::InvalidNumBytesInEnvelope);
305 }
306 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
307 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
308 }
309 }
310
311 next_offset += envelope_size;
312 _next_ordinal_to_read += 1;
313 if next_offset >= end_offset {
314 return Ok(());
315 }
316
317 while _next_ordinal_to_read < 3 {
319 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
320 _next_ordinal_to_read += 1;
321 next_offset += envelope_size;
322 }
323
324 let next_out_of_line = decoder.next_out_of_line();
325 let handles_before = decoder.remaining_handles();
326 if let Some((inlined, num_bytes, num_handles)) =
327 fidl::encoding::decode_envelope_header(decoder, next_offset)?
328 {
329 let member_inline_size =
330 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
331 if inlined != (member_inline_size <= 4) {
332 return Err(fidl::Error::InvalidInlineBitInEnvelope);
333 }
334 let inner_offset;
335 let mut inner_depth = depth.clone();
336 if inlined {
337 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
338 inner_offset = next_offset;
339 } else {
340 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
341 inner_depth.increment()?;
342 }
343 let val_ref = self.window.get_or_insert_with(|| fidl::new_empty!(i64, D));
344 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
345 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
346 {
347 return Err(fidl::Error::InvalidNumBytesInEnvelope);
348 }
349 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
350 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
351 }
352 }
353
354 next_offset += envelope_size;
355
356 while next_offset < end_offset {
358 _next_ordinal_to_read += 1;
359 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
360 next_offset += envelope_size;
361 }
362
363 Ok(())
364 }
365 }
366
367 impl PsiProviderGetMemoryPressureStatsResponse {
368 #[inline(always)]
369 fn max_ordinal_present(&self) -> u64 {
370 if let Some(_) = self.full {
371 return 2;
372 }
373 if let Some(_) = self.some {
374 return 1;
375 }
376 0
377 }
378 }
379
380 impl fidl::encoding::ValueTypeMarker for PsiProviderGetMemoryPressureStatsResponse {
381 type Borrowed<'a> = &'a Self;
382 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
383 value
384 }
385 }
386
387 unsafe impl fidl::encoding::TypeMarker for PsiProviderGetMemoryPressureStatsResponse {
388 type Owned = Self;
389
390 #[inline(always)]
391 fn inline_align(_context: fidl::encoding::Context) -> usize {
392 8
393 }
394
395 #[inline(always)]
396 fn inline_size(_context: fidl::encoding::Context) -> usize {
397 16
398 }
399 }
400
401 unsafe impl<D: fidl::encoding::ResourceDialect>
402 fidl::encoding::Encode<PsiProviderGetMemoryPressureStatsResponse, D>
403 for &PsiProviderGetMemoryPressureStatsResponse
404 {
405 unsafe fn encode(
406 self,
407 encoder: &mut fidl::encoding::Encoder<'_, D>,
408 offset: usize,
409 mut depth: fidl::encoding::Depth,
410 ) -> fidl::Result<()> {
411 encoder.debug_check_bounds::<PsiProviderGetMemoryPressureStatsResponse>(offset);
412 let max_ordinal: u64 = self.max_ordinal_present();
414 encoder.write_num(max_ordinal, offset);
415 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
416 if max_ordinal == 0 {
418 return Ok(());
419 }
420 depth.increment()?;
421 let envelope_size = 8;
422 let bytes_len = max_ordinal as usize * envelope_size;
423 #[allow(unused_variables)]
424 let offset = encoder.out_of_line_offset(bytes_len);
425 let mut _prev_end_offset: usize = 0;
426 if 1 > max_ordinal {
427 return Ok(());
428 }
429
430 let cur_offset: usize = (1 - 1) * envelope_size;
433
434 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
436
437 fidl::encoding::encode_in_envelope_optional::<PsiStats, D>(
442 self.some.as_ref().map(<PsiStats as fidl::encoding::ValueTypeMarker>::borrow),
443 encoder,
444 offset + cur_offset,
445 depth,
446 )?;
447
448 _prev_end_offset = cur_offset + envelope_size;
449 if 2 > max_ordinal {
450 return Ok(());
451 }
452
453 let cur_offset: usize = (2 - 1) * envelope_size;
456
457 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
459
460 fidl::encoding::encode_in_envelope_optional::<PsiStats, D>(
465 self.full.as_ref().map(<PsiStats as fidl::encoding::ValueTypeMarker>::borrow),
466 encoder,
467 offset + cur_offset,
468 depth,
469 )?;
470
471 _prev_end_offset = cur_offset + envelope_size;
472
473 Ok(())
474 }
475 }
476
477 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
478 for PsiProviderGetMemoryPressureStatsResponse
479 {
480 #[inline(always)]
481 fn new_empty() -> Self {
482 Self::default()
483 }
484
485 unsafe fn decode(
486 &mut self,
487 decoder: &mut fidl::encoding::Decoder<'_, D>,
488 offset: usize,
489 mut depth: fidl::encoding::Depth,
490 ) -> fidl::Result<()> {
491 decoder.debug_check_bounds::<Self>(offset);
492 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
493 None => return Err(fidl::Error::NotNullable),
494 Some(len) => len,
495 };
496 if len == 0 {
498 return Ok(());
499 };
500 depth.increment()?;
501 let envelope_size = 8;
502 let bytes_len = len * envelope_size;
503 let offset = decoder.out_of_line_offset(bytes_len)?;
504 let mut _next_ordinal_to_read = 0;
506 let mut next_offset = offset;
507 let end_offset = offset + bytes_len;
508 _next_ordinal_to_read += 1;
509 if next_offset >= end_offset {
510 return Ok(());
511 }
512
513 while _next_ordinal_to_read < 1 {
515 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
516 _next_ordinal_to_read += 1;
517 next_offset += envelope_size;
518 }
519
520 let next_out_of_line = decoder.next_out_of_line();
521 let handles_before = decoder.remaining_handles();
522 if let Some((inlined, num_bytes, num_handles)) =
523 fidl::encoding::decode_envelope_header(decoder, next_offset)?
524 {
525 let member_inline_size =
526 <PsiStats as fidl::encoding::TypeMarker>::inline_size(decoder.context);
527 if inlined != (member_inline_size <= 4) {
528 return Err(fidl::Error::InvalidInlineBitInEnvelope);
529 }
530 let inner_offset;
531 let mut inner_depth = depth.clone();
532 if inlined {
533 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
534 inner_offset = next_offset;
535 } else {
536 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
537 inner_depth.increment()?;
538 }
539 let val_ref = self.some.get_or_insert_with(|| fidl::new_empty!(PsiStats, D));
540 fidl::decode!(PsiStats, D, val_ref, decoder, inner_offset, inner_depth)?;
541 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
542 {
543 return Err(fidl::Error::InvalidNumBytesInEnvelope);
544 }
545 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
546 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
547 }
548 }
549
550 next_offset += envelope_size;
551 _next_ordinal_to_read += 1;
552 if next_offset >= end_offset {
553 return Ok(());
554 }
555
556 while _next_ordinal_to_read < 2 {
558 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
559 _next_ordinal_to_read += 1;
560 next_offset += envelope_size;
561 }
562
563 let next_out_of_line = decoder.next_out_of_line();
564 let handles_before = decoder.remaining_handles();
565 if let Some((inlined, num_bytes, num_handles)) =
566 fidl::encoding::decode_envelope_header(decoder, next_offset)?
567 {
568 let member_inline_size =
569 <PsiStats as fidl::encoding::TypeMarker>::inline_size(decoder.context);
570 if inlined != (member_inline_size <= 4) {
571 return Err(fidl::Error::InvalidInlineBitInEnvelope);
572 }
573 let inner_offset;
574 let mut inner_depth = depth.clone();
575 if inlined {
576 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
577 inner_offset = next_offset;
578 } else {
579 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
580 inner_depth.increment()?;
581 }
582 let val_ref = self.full.get_or_insert_with(|| fidl::new_empty!(PsiStats, D));
583 fidl::decode!(PsiStats, D, val_ref, decoder, inner_offset, inner_depth)?;
584 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
585 {
586 return Err(fidl::Error::InvalidNumBytesInEnvelope);
587 }
588 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
589 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
590 }
591 }
592
593 next_offset += envelope_size;
594
595 while next_offset < end_offset {
597 _next_ordinal_to_read += 1;
598 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
599 next_offset += envelope_size;
600 }
601
602 Ok(())
603 }
604 }
605
606 impl PsiStats {
607 #[inline(always)]
608 fn max_ordinal_present(&self) -> u64 {
609 if let Some(_) = self.total {
610 return 4;
611 }
612 if let Some(_) = self.avg300 {
613 return 3;
614 }
615 if let Some(_) = self.avg60 {
616 return 2;
617 }
618 if let Some(_) = self.avg10 {
619 return 1;
620 }
621 0
622 }
623 }
624
625 impl fidl::encoding::ValueTypeMarker for PsiStats {
626 type Borrowed<'a> = &'a Self;
627 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
628 value
629 }
630 }
631
632 unsafe impl fidl::encoding::TypeMarker for PsiStats {
633 type Owned = Self;
634
635 #[inline(always)]
636 fn inline_align(_context: fidl::encoding::Context) -> usize {
637 8
638 }
639
640 #[inline(always)]
641 fn inline_size(_context: fidl::encoding::Context) -> usize {
642 16
643 }
644 }
645
646 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PsiStats, D> for &PsiStats {
647 unsafe fn encode(
648 self,
649 encoder: &mut fidl::encoding::Encoder<'_, D>,
650 offset: usize,
651 mut depth: fidl::encoding::Depth,
652 ) -> fidl::Result<()> {
653 encoder.debug_check_bounds::<PsiStats>(offset);
654 let max_ordinal: u64 = self.max_ordinal_present();
656 encoder.write_num(max_ordinal, offset);
657 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
658 if max_ordinal == 0 {
660 return Ok(());
661 }
662 depth.increment()?;
663 let envelope_size = 8;
664 let bytes_len = max_ordinal as usize * envelope_size;
665 #[allow(unused_variables)]
666 let offset = encoder.out_of_line_offset(bytes_len);
667 let mut _prev_end_offset: usize = 0;
668 if 1 > max_ordinal {
669 return Ok(());
670 }
671
672 let cur_offset: usize = (1 - 1) * envelope_size;
675
676 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
678
679 fidl::encoding::encode_in_envelope_optional::<f64, D>(
684 self.avg10.as_ref().map(<f64 as fidl::encoding::ValueTypeMarker>::borrow),
685 encoder,
686 offset + cur_offset,
687 depth,
688 )?;
689
690 _prev_end_offset = cur_offset + envelope_size;
691 if 2 > max_ordinal {
692 return Ok(());
693 }
694
695 let cur_offset: usize = (2 - 1) * envelope_size;
698
699 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
701
702 fidl::encoding::encode_in_envelope_optional::<f64, D>(
707 self.avg60.as_ref().map(<f64 as fidl::encoding::ValueTypeMarker>::borrow),
708 encoder,
709 offset + cur_offset,
710 depth,
711 )?;
712
713 _prev_end_offset = cur_offset + envelope_size;
714 if 3 > max_ordinal {
715 return Ok(());
716 }
717
718 let cur_offset: usize = (3 - 1) * envelope_size;
721
722 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
724
725 fidl::encoding::encode_in_envelope_optional::<f64, D>(
730 self.avg300.as_ref().map(<f64 as fidl::encoding::ValueTypeMarker>::borrow),
731 encoder,
732 offset + cur_offset,
733 depth,
734 )?;
735
736 _prev_end_offset = cur_offset + envelope_size;
737 if 4 > max_ordinal {
738 return Ok(());
739 }
740
741 let cur_offset: usize = (4 - 1) * envelope_size;
744
745 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
747
748 fidl::encoding::encode_in_envelope_optional::<i64, D>(
753 self.total.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
754 encoder,
755 offset + cur_offset,
756 depth,
757 )?;
758
759 _prev_end_offset = cur_offset + envelope_size;
760
761 Ok(())
762 }
763 }
764
765 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PsiStats {
766 #[inline(always)]
767 fn new_empty() -> Self {
768 Self::default()
769 }
770
771 unsafe fn decode(
772 &mut self,
773 decoder: &mut fidl::encoding::Decoder<'_, D>,
774 offset: usize,
775 mut depth: fidl::encoding::Depth,
776 ) -> fidl::Result<()> {
777 decoder.debug_check_bounds::<Self>(offset);
778 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
779 None => return Err(fidl::Error::NotNullable),
780 Some(len) => len,
781 };
782 if len == 0 {
784 return Ok(());
785 };
786 depth.increment()?;
787 let envelope_size = 8;
788 let bytes_len = len * envelope_size;
789 let offset = decoder.out_of_line_offset(bytes_len)?;
790 let mut _next_ordinal_to_read = 0;
792 let mut next_offset = offset;
793 let end_offset = offset + bytes_len;
794 _next_ordinal_to_read += 1;
795 if next_offset >= end_offset {
796 return Ok(());
797 }
798
799 while _next_ordinal_to_read < 1 {
801 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
802 _next_ordinal_to_read += 1;
803 next_offset += envelope_size;
804 }
805
806 let next_out_of_line = decoder.next_out_of_line();
807 let handles_before = decoder.remaining_handles();
808 if let Some((inlined, num_bytes, num_handles)) =
809 fidl::encoding::decode_envelope_header(decoder, next_offset)?
810 {
811 let member_inline_size =
812 <f64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
813 if inlined != (member_inline_size <= 4) {
814 return Err(fidl::Error::InvalidInlineBitInEnvelope);
815 }
816 let inner_offset;
817 let mut inner_depth = depth.clone();
818 if inlined {
819 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
820 inner_offset = next_offset;
821 } else {
822 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
823 inner_depth.increment()?;
824 }
825 let val_ref = self.avg10.get_or_insert_with(|| fidl::new_empty!(f64, D));
826 fidl::decode!(f64, D, val_ref, decoder, inner_offset, inner_depth)?;
827 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
828 {
829 return Err(fidl::Error::InvalidNumBytesInEnvelope);
830 }
831 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
832 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
833 }
834 }
835
836 next_offset += envelope_size;
837 _next_ordinal_to_read += 1;
838 if next_offset >= end_offset {
839 return Ok(());
840 }
841
842 while _next_ordinal_to_read < 2 {
844 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
845 _next_ordinal_to_read += 1;
846 next_offset += envelope_size;
847 }
848
849 let next_out_of_line = decoder.next_out_of_line();
850 let handles_before = decoder.remaining_handles();
851 if let Some((inlined, num_bytes, num_handles)) =
852 fidl::encoding::decode_envelope_header(decoder, next_offset)?
853 {
854 let member_inline_size =
855 <f64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
856 if inlined != (member_inline_size <= 4) {
857 return Err(fidl::Error::InvalidInlineBitInEnvelope);
858 }
859 let inner_offset;
860 let mut inner_depth = depth.clone();
861 if inlined {
862 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
863 inner_offset = next_offset;
864 } else {
865 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
866 inner_depth.increment()?;
867 }
868 let val_ref = self.avg60.get_or_insert_with(|| fidl::new_empty!(f64, D));
869 fidl::decode!(f64, D, val_ref, decoder, inner_offset, inner_depth)?;
870 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
871 {
872 return Err(fidl::Error::InvalidNumBytesInEnvelope);
873 }
874 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
875 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
876 }
877 }
878
879 next_offset += envelope_size;
880 _next_ordinal_to_read += 1;
881 if next_offset >= end_offset {
882 return Ok(());
883 }
884
885 while _next_ordinal_to_read < 3 {
887 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
888 _next_ordinal_to_read += 1;
889 next_offset += envelope_size;
890 }
891
892 let next_out_of_line = decoder.next_out_of_line();
893 let handles_before = decoder.remaining_handles();
894 if let Some((inlined, num_bytes, num_handles)) =
895 fidl::encoding::decode_envelope_header(decoder, next_offset)?
896 {
897 let member_inline_size =
898 <f64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
899 if inlined != (member_inline_size <= 4) {
900 return Err(fidl::Error::InvalidInlineBitInEnvelope);
901 }
902 let inner_offset;
903 let mut inner_depth = depth.clone();
904 if inlined {
905 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
906 inner_offset = next_offset;
907 } else {
908 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
909 inner_depth.increment()?;
910 }
911 let val_ref = self.avg300.get_or_insert_with(|| fidl::new_empty!(f64, D));
912 fidl::decode!(f64, D, val_ref, decoder, inner_offset, inner_depth)?;
913 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
914 {
915 return Err(fidl::Error::InvalidNumBytesInEnvelope);
916 }
917 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
918 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
919 }
920 }
921
922 next_offset += envelope_size;
923 _next_ordinal_to_read += 1;
924 if next_offset >= end_offset {
925 return Ok(());
926 }
927
928 while _next_ordinal_to_read < 4 {
930 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
931 _next_ordinal_to_read += 1;
932 next_offset += envelope_size;
933 }
934
935 let next_out_of_line = decoder.next_out_of_line();
936 let handles_before = decoder.remaining_handles();
937 if let Some((inlined, num_bytes, num_handles)) =
938 fidl::encoding::decode_envelope_header(decoder, next_offset)?
939 {
940 let member_inline_size =
941 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
942 if inlined != (member_inline_size <= 4) {
943 return Err(fidl::Error::InvalidInlineBitInEnvelope);
944 }
945 let inner_offset;
946 let mut inner_depth = depth.clone();
947 if inlined {
948 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
949 inner_offset = next_offset;
950 } else {
951 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
952 inner_depth.increment()?;
953 }
954 let val_ref = self.total.get_or_insert_with(|| fidl::new_empty!(i64, D));
955 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
956 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
957 {
958 return Err(fidl::Error::InvalidNumBytesInEnvelope);
959 }
960 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
961 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
962 }
963 }
964
965 next_offset += envelope_size;
966
967 while next_offset < end_offset {
969 _next_ordinal_to_read += 1;
970 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
971 next_offset += envelope_size;
972 }
973
974 Ok(())
975 }
976 }
977}