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(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
12pub enum FilterError {
13 NoPattern,
15 UnknownType,
17 InvalidOptions,
19 #[doc(hidden)]
20 __SourceBreaking { unknown_ordinal: u32 },
21}
22
23#[macro_export]
25macro_rules! FilterErrorUnknown {
26 () => {
27 _
28 };
29}
30
31impl FilterError {
32 #[inline]
33 pub fn from_primitive(prim: u32) -> Option<Self> {
34 match prim {
35 1 => Some(Self::NoPattern),
36 2 => Some(Self::UnknownType),
37 3 => Some(Self::InvalidOptions),
38 _ => None,
39 }
40 }
41
42 #[inline]
43 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
44 match prim {
45 1 => Self::NoPattern,
46 2 => Self::UnknownType,
47 3 => Self::InvalidOptions,
48 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
49 }
50 }
51
52 #[inline]
53 pub fn unknown() -> Self {
54 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
55 }
56
57 #[inline]
58 pub const fn into_primitive(self) -> u32 {
59 match self {
60 Self::NoPattern => 1,
61 Self::UnknownType => 2,
62 Self::InvalidOptions => 3,
63 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
64 }
65 }
66
67 #[inline]
68 pub fn is_unknown(&self) -> bool {
69 match self {
70 Self::__SourceBreaking { unknown_ordinal: _ } => true,
71 _ => false,
72 }
73 }
74}
75
76#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
77pub enum FilterType {
78 Url,
82 Moniker,
84 MonikerPrefix,
86 MonikerSuffix,
88 #[doc(hidden)]
89 __SourceBreaking { unknown_ordinal: u8 },
90}
91
92#[macro_export]
94macro_rules! FilterTypeUnknown {
95 () => {
96 _
97 };
98}
99
100impl FilterType {
101 #[inline]
102 pub fn from_primitive(prim: u8) -> Option<Self> {
103 match prim {
104 0 => Some(Self::Url),
105 1 => Some(Self::Moniker),
106 2 => Some(Self::MonikerPrefix),
107 3 => Some(Self::MonikerSuffix),
108 _ => None,
109 }
110 }
111
112 #[inline]
113 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
114 match prim {
115 0 => Self::Url,
116 1 => Self::Moniker,
117 2 => Self::MonikerPrefix,
118 3 => Self::MonikerSuffix,
119 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
120 }
121 }
122
123 #[inline]
124 pub fn unknown() -> Self {
125 Self::__SourceBreaking { unknown_ordinal: 0xff }
126 }
127
128 #[inline]
129 pub const fn into_primitive(self) -> u8 {
130 match self {
131 Self::Url => 0,
132 Self::Moniker => 1,
133 Self::MonikerPrefix => 2,
134 Self::MonikerSuffix => 3,
135 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
136 }
137 }
138
139 #[inline]
140 pub fn is_unknown(&self) -> bool {
141 match self {
142 Self::__SourceBreaking { unknown_ordinal: _ } => true,
143 _ => false,
144 }
145 }
146}
147
148#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
149pub enum MinidumpError {
150 NoProcesses,
154 InternalError,
157 #[doc(hidden)]
158 __SourceBreaking { unknown_ordinal: u32 },
159}
160
161#[macro_export]
163macro_rules! MinidumpErrorUnknown {
164 () => {
165 _
166 };
167}
168
169impl MinidumpError {
170 #[inline]
171 pub fn from_primitive(prim: u32) -> Option<Self> {
172 match prim {
173 1 => Some(Self::NoProcesses),
174 2 => Some(Self::InternalError),
175 _ => None,
176 }
177 }
178
179 #[inline]
180 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
181 match prim {
182 1 => Self::NoProcesses,
183 2 => Self::InternalError,
184 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
185 }
186 }
187
188 #[inline]
189 pub fn unknown() -> Self {
190 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
191 }
192
193 #[inline]
194 pub const fn into_primitive(self) -> u32 {
195 match self {
196 Self::NoProcesses => 1,
197 Self::InternalError => 2,
198 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
199 }
200 }
201
202 #[inline]
203 pub fn is_unknown(&self) -> bool {
204 match self {
205 Self::__SourceBreaking { unknown_ordinal: _ } => true,
206 _ => false,
207 }
208 }
209}
210
211#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
212pub enum ProcessInfoError {
213 NoProcesses,
215 ProcessGone,
217 ThreadGone,
219 #[doc(hidden)]
220 __SourceBreaking { unknown_ordinal: u32 },
221}
222
223#[macro_export]
225macro_rules! ProcessInfoErrorUnknown {
226 () => {
227 _
228 };
229}
230
231impl ProcessInfoError {
232 #[inline]
233 pub fn from_primitive(prim: u32) -> Option<Self> {
234 match prim {
235 1 => Some(Self::NoProcesses),
236 2 => Some(Self::ProcessGone),
237 3 => Some(Self::ThreadGone),
238 _ => None,
239 }
240 }
241
242 #[inline]
243 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
244 match prim {
245 1 => Self::NoProcesses,
246 2 => Self::ProcessGone,
247 3 => Self::ThreadGone,
248 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
249 }
250 }
251
252 #[inline]
253 pub fn unknown() -> Self {
254 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
255 }
256
257 #[inline]
258 pub const fn into_primitive(self) -> u32 {
259 match self {
260 Self::NoProcesses => 1,
261 Self::ProcessGone => 2,
262 Self::ThreadGone => 3,
263 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
264 }
265 }
266
267 #[inline]
268 pub fn is_unknown(&self) -> bool {
269 match self {
270 Self::__SourceBreaking { unknown_ordinal: _ } => true,
271 _ => false,
272 }
273 }
274}
275
276#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
277pub struct AttachedProcessIteratorGetNextResponse {
278 pub process_names: Vec<String>,
279}
280
281impl fidl::Persistable for AttachedProcessIteratorGetNextResponse {}
282
283#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
284#[repr(C)]
285pub struct DebugAgentAttachToResponse {
286 pub num_matches: u32,
287}
288
289impl fidl::Persistable for DebugAgentAttachToResponse {}
290
291#[derive(Clone, Debug, PartialEq)]
298pub struct Filter {
299 pub pattern: String,
302 pub type_: FilterType,
304 pub options: FilterOptions,
306}
307
308impl fidl::Persistable for Filter {}
309
310#[derive(Clone, Debug, PartialEq)]
311pub struct ProcessInfo {
312 pub process: u64,
313 pub moniker: String,
314 pub thread: u64,
316 pub details: ThreadDetails,
319}
320
321impl fidl::Persistable for ProcessInfo {}
322
323#[derive(Clone, Debug, PartialEq)]
324pub struct ProcessInfoIteratorGetNextResponse {
325 pub info: Vec<ProcessInfo>,
326}
327
328impl fidl::Persistable for ProcessInfoIteratorGetNextResponse {}
329
330#[derive(Clone, Debug, Default, PartialEq)]
331pub struct DebugAgentOnFatalExceptionRequest {
332 pub thread: Option<u64>,
334 pub backtrace: Option<String>,
336 #[doc(hidden)]
337 pub __source_breaking: fidl::marker::SourceBreaking,
338}
339
340impl fidl::Persistable for DebugAgentOnFatalExceptionRequest {}
341
342#[derive(Clone, Debug, Default, PartialEq)]
343pub struct FilterOptions {
344 pub recursive: Option<bool>,
349 pub job_only: Option<bool>,
357 #[doc(hidden)]
358 pub __source_breaking: fidl::marker::SourceBreaking,
359}
360
361impl fidl::Persistable for FilterOptions {}
362
363#[derive(Clone, Debug, Default, PartialEq)]
364pub struct GetProcessInfoOptions {
365 pub filter: Option<Filter>,
371 pub interest: Option<ThreadDetailsInterest>,
375 #[doc(hidden)]
376 pub __source_breaking: fidl::marker::SourceBreaking,
377}
378
379impl fidl::Persistable for GetProcessInfoOptions {}
380
381#[derive(Clone, Debug, Default, PartialEq)]
382pub struct MinidumpOptions {
383 pub filter: Option<Filter>,
387 #[doc(hidden)]
388 pub __source_breaking: fidl::marker::SourceBreaking,
389}
390
391impl fidl::Persistable for MinidumpOptions {}
392
393#[derive(Clone, Debug, Default, PartialEq)]
397pub struct ThreadDetails {
398 pub backtrace: Option<String>,
400 #[doc(hidden)]
401 pub __source_breaking: fidl::marker::SourceBreaking,
402}
403
404impl fidl::Persistable for ThreadDetails {}
405
406#[derive(Clone, Debug, Default, PartialEq)]
407pub struct ThreadDetailsInterest {
408 pub backtrace: Option<bool>,
412 #[doc(hidden)]
413 pub __source_breaking: fidl::marker::SourceBreaking,
414}
415
416impl fidl::Persistable for ThreadDetailsInterest {}
417
418pub mod agent_iterator_ordinals {
419 pub const GET_NEXT: u64 = 0x40f8adb0c975fa41;
420}
421
422pub mod attached_process_iterator_ordinals {
423 pub const GET_NEXT: u64 = 0x47ef49b75f6133ab;
424}
425
426pub mod debug_agent_ordinals {
427 pub const CONNECT: u64 = 0x6f81c1e426ddf3f9;
428 pub const GET_ATTACHED_PROCESSES: u64 = 0x4a07b086a7deda56;
429 pub const ATTACH_TO: u64 = 0x2800c757fe52795f;
430 pub const GET_PROCESS_INFO: u64 = 0x4daf0a7366bb6d77;
431 pub const GET_MINIDUMPS: u64 = 0x4a4693aeecdb7deb;
432 pub const ON_FATAL_EXCEPTION: u64 = 0x254b534a4790d114;
433}
434
435pub mod launcher_ordinals {
436 pub const LAUNCH: u64 = 0x54420f44e79e5c0e;
437 pub const GET_AGENTS: u64 = 0x4e6a35bfa35ee8f4;
438}
439
440pub mod minidump_iterator_ordinals {
441 pub const GET_NEXT: u64 = 0x3db055b61b8482dc;
442}
443
444pub mod process_info_iterator_ordinals {
445 pub const GET_NEXT: u64 = 0x527e289fe635bcc;
446}
447
448mod internal {
449 use super::*;
450 unsafe impl fidl::encoding::TypeMarker for FilterError {
451 type Owned = Self;
452
453 #[inline(always)]
454 fn inline_align(_context: fidl::encoding::Context) -> usize {
455 std::mem::align_of::<u32>()
456 }
457
458 #[inline(always)]
459 fn inline_size(_context: fidl::encoding::Context) -> usize {
460 std::mem::size_of::<u32>()
461 }
462
463 #[inline(always)]
464 fn encode_is_copy() -> bool {
465 false
466 }
467
468 #[inline(always)]
469 fn decode_is_copy() -> bool {
470 false
471 }
472 }
473
474 impl fidl::encoding::ValueTypeMarker for FilterError {
475 type Borrowed<'a> = Self;
476 #[inline(always)]
477 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
478 *value
479 }
480 }
481
482 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for FilterError {
483 #[inline]
484 unsafe fn encode(
485 self,
486 encoder: &mut fidl::encoding::Encoder<'_, D>,
487 offset: usize,
488 _depth: fidl::encoding::Depth,
489 ) -> fidl::Result<()> {
490 encoder.debug_check_bounds::<Self>(offset);
491 encoder.write_num(self.into_primitive(), offset);
492 Ok(())
493 }
494 }
495
496 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FilterError {
497 #[inline(always)]
498 fn new_empty() -> Self {
499 Self::unknown()
500 }
501
502 #[inline]
503 unsafe fn decode(
504 &mut self,
505 decoder: &mut fidl::encoding::Decoder<'_, D>,
506 offset: usize,
507 _depth: fidl::encoding::Depth,
508 ) -> fidl::Result<()> {
509 decoder.debug_check_bounds::<Self>(offset);
510 let prim = decoder.read_num::<u32>(offset);
511
512 *self = Self::from_primitive_allow_unknown(prim);
513 Ok(())
514 }
515 }
516 unsafe impl fidl::encoding::TypeMarker for FilterType {
517 type Owned = Self;
518
519 #[inline(always)]
520 fn inline_align(_context: fidl::encoding::Context) -> usize {
521 std::mem::align_of::<u8>()
522 }
523
524 #[inline(always)]
525 fn inline_size(_context: fidl::encoding::Context) -> usize {
526 std::mem::size_of::<u8>()
527 }
528
529 #[inline(always)]
530 fn encode_is_copy() -> bool {
531 false
532 }
533
534 #[inline(always)]
535 fn decode_is_copy() -> bool {
536 false
537 }
538 }
539
540 impl fidl::encoding::ValueTypeMarker for FilterType {
541 type Borrowed<'a> = Self;
542 #[inline(always)]
543 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
544 *value
545 }
546 }
547
548 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for FilterType {
549 #[inline]
550 unsafe fn encode(
551 self,
552 encoder: &mut fidl::encoding::Encoder<'_, D>,
553 offset: usize,
554 _depth: fidl::encoding::Depth,
555 ) -> fidl::Result<()> {
556 encoder.debug_check_bounds::<Self>(offset);
557 encoder.write_num(self.into_primitive(), offset);
558 Ok(())
559 }
560 }
561
562 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FilterType {
563 #[inline(always)]
564 fn new_empty() -> Self {
565 Self::unknown()
566 }
567
568 #[inline]
569 unsafe fn decode(
570 &mut self,
571 decoder: &mut fidl::encoding::Decoder<'_, D>,
572 offset: usize,
573 _depth: fidl::encoding::Depth,
574 ) -> fidl::Result<()> {
575 decoder.debug_check_bounds::<Self>(offset);
576 let prim = decoder.read_num::<u8>(offset);
577
578 *self = Self::from_primitive_allow_unknown(prim);
579 Ok(())
580 }
581 }
582 unsafe impl fidl::encoding::TypeMarker for MinidumpError {
583 type Owned = Self;
584
585 #[inline(always)]
586 fn inline_align(_context: fidl::encoding::Context) -> usize {
587 std::mem::align_of::<u32>()
588 }
589
590 #[inline(always)]
591 fn inline_size(_context: fidl::encoding::Context) -> usize {
592 std::mem::size_of::<u32>()
593 }
594
595 #[inline(always)]
596 fn encode_is_copy() -> bool {
597 false
598 }
599
600 #[inline(always)]
601 fn decode_is_copy() -> bool {
602 false
603 }
604 }
605
606 impl fidl::encoding::ValueTypeMarker for MinidumpError {
607 type Borrowed<'a> = Self;
608 #[inline(always)]
609 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
610 *value
611 }
612 }
613
614 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for MinidumpError {
615 #[inline]
616 unsafe fn encode(
617 self,
618 encoder: &mut fidl::encoding::Encoder<'_, D>,
619 offset: usize,
620 _depth: fidl::encoding::Depth,
621 ) -> fidl::Result<()> {
622 encoder.debug_check_bounds::<Self>(offset);
623 encoder.write_num(self.into_primitive(), offset);
624 Ok(())
625 }
626 }
627
628 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinidumpError {
629 #[inline(always)]
630 fn new_empty() -> Self {
631 Self::unknown()
632 }
633
634 #[inline]
635 unsafe fn decode(
636 &mut self,
637 decoder: &mut fidl::encoding::Decoder<'_, D>,
638 offset: usize,
639 _depth: fidl::encoding::Depth,
640 ) -> fidl::Result<()> {
641 decoder.debug_check_bounds::<Self>(offset);
642 let prim = decoder.read_num::<u32>(offset);
643
644 *self = Self::from_primitive_allow_unknown(prim);
645 Ok(())
646 }
647 }
648 unsafe impl fidl::encoding::TypeMarker for ProcessInfoError {
649 type Owned = Self;
650
651 #[inline(always)]
652 fn inline_align(_context: fidl::encoding::Context) -> usize {
653 std::mem::align_of::<u32>()
654 }
655
656 #[inline(always)]
657 fn inline_size(_context: fidl::encoding::Context) -> usize {
658 std::mem::size_of::<u32>()
659 }
660
661 #[inline(always)]
662 fn encode_is_copy() -> bool {
663 false
664 }
665
666 #[inline(always)]
667 fn decode_is_copy() -> bool {
668 false
669 }
670 }
671
672 impl fidl::encoding::ValueTypeMarker for ProcessInfoError {
673 type Borrowed<'a> = Self;
674 #[inline(always)]
675 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
676 *value
677 }
678 }
679
680 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
681 for ProcessInfoError
682 {
683 #[inline]
684 unsafe fn encode(
685 self,
686 encoder: &mut fidl::encoding::Encoder<'_, D>,
687 offset: usize,
688 _depth: fidl::encoding::Depth,
689 ) -> fidl::Result<()> {
690 encoder.debug_check_bounds::<Self>(offset);
691 encoder.write_num(self.into_primitive(), offset);
692 Ok(())
693 }
694 }
695
696 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProcessInfoError {
697 #[inline(always)]
698 fn new_empty() -> Self {
699 Self::unknown()
700 }
701
702 #[inline]
703 unsafe fn decode(
704 &mut self,
705 decoder: &mut fidl::encoding::Decoder<'_, D>,
706 offset: usize,
707 _depth: fidl::encoding::Depth,
708 ) -> fidl::Result<()> {
709 decoder.debug_check_bounds::<Self>(offset);
710 let prim = decoder.read_num::<u32>(offset);
711
712 *self = Self::from_primitive_allow_unknown(prim);
713 Ok(())
714 }
715 }
716
717 impl fidl::encoding::ValueTypeMarker for AttachedProcessIteratorGetNextResponse {
718 type Borrowed<'a> = &'a Self;
719 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
720 value
721 }
722 }
723
724 unsafe impl fidl::encoding::TypeMarker for AttachedProcessIteratorGetNextResponse {
725 type Owned = Self;
726
727 #[inline(always)]
728 fn inline_align(_context: fidl::encoding::Context) -> usize {
729 8
730 }
731
732 #[inline(always)]
733 fn inline_size(_context: fidl::encoding::Context) -> usize {
734 16
735 }
736 }
737
738 unsafe impl<D: fidl::encoding::ResourceDialect>
739 fidl::encoding::Encode<AttachedProcessIteratorGetNextResponse, D>
740 for &AttachedProcessIteratorGetNextResponse
741 {
742 #[inline]
743 unsafe fn encode(
744 self,
745 encoder: &mut fidl::encoding::Encoder<'_, D>,
746 offset: usize,
747 _depth: fidl::encoding::Depth,
748 ) -> fidl::Result<()> {
749 encoder.debug_check_bounds::<AttachedProcessIteratorGetNextResponse>(offset);
750 fidl::encoding::Encode::<AttachedProcessIteratorGetNextResponse, D>::encode(
752 (
753 <fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<32>> as fidl::encoding::ValueTypeMarker>::borrow(&self.process_names),
754 ),
755 encoder, offset, _depth
756 )
757 }
758 }
759 unsafe impl<
760 D: fidl::encoding::ResourceDialect,
761 T0: fidl::encoding::Encode<
762 fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<32>>,
763 D,
764 >,
765 > fidl::encoding::Encode<AttachedProcessIteratorGetNextResponse, D> for (T0,)
766 {
767 #[inline]
768 unsafe fn encode(
769 self,
770 encoder: &mut fidl::encoding::Encoder<'_, D>,
771 offset: usize,
772 depth: fidl::encoding::Depth,
773 ) -> fidl::Result<()> {
774 encoder.debug_check_bounds::<AttachedProcessIteratorGetNextResponse>(offset);
775 self.0.encode(encoder, offset + 0, depth)?;
779 Ok(())
780 }
781 }
782
783 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
784 for AttachedProcessIteratorGetNextResponse
785 {
786 #[inline(always)]
787 fn new_empty() -> Self {
788 Self {
789 process_names: fidl::new_empty!(
790 fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<32>>,
791 D
792 ),
793 }
794 }
795
796 #[inline]
797 unsafe fn decode(
798 &mut self,
799 decoder: &mut fidl::encoding::Decoder<'_, D>,
800 offset: usize,
801 _depth: fidl::encoding::Depth,
802 ) -> fidl::Result<()> {
803 decoder.debug_check_bounds::<Self>(offset);
804 fidl::decode!(
806 fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<32>>,
807 D,
808 &mut self.process_names,
809 decoder,
810 offset + 0,
811 _depth
812 )?;
813 Ok(())
814 }
815 }
816
817 impl fidl::encoding::ValueTypeMarker for DebugAgentAttachToResponse {
818 type Borrowed<'a> = &'a Self;
819 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
820 value
821 }
822 }
823
824 unsafe impl fidl::encoding::TypeMarker for DebugAgentAttachToResponse {
825 type Owned = Self;
826
827 #[inline(always)]
828 fn inline_align(_context: fidl::encoding::Context) -> usize {
829 4
830 }
831
832 #[inline(always)]
833 fn inline_size(_context: fidl::encoding::Context) -> usize {
834 4
835 }
836 #[inline(always)]
837 fn encode_is_copy() -> bool {
838 true
839 }
840
841 #[inline(always)]
842 fn decode_is_copy() -> bool {
843 true
844 }
845 }
846
847 unsafe impl<D: fidl::encoding::ResourceDialect>
848 fidl::encoding::Encode<DebugAgentAttachToResponse, D> for &DebugAgentAttachToResponse
849 {
850 #[inline]
851 unsafe fn encode(
852 self,
853 encoder: &mut fidl::encoding::Encoder<'_, D>,
854 offset: usize,
855 _depth: fidl::encoding::Depth,
856 ) -> fidl::Result<()> {
857 encoder.debug_check_bounds::<DebugAgentAttachToResponse>(offset);
858 unsafe {
859 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
861 (buf_ptr as *mut DebugAgentAttachToResponse)
862 .write_unaligned((self as *const DebugAgentAttachToResponse).read());
863 }
866 Ok(())
867 }
868 }
869 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
870 fidl::encoding::Encode<DebugAgentAttachToResponse, D> for (T0,)
871 {
872 #[inline]
873 unsafe fn encode(
874 self,
875 encoder: &mut fidl::encoding::Encoder<'_, D>,
876 offset: usize,
877 depth: fidl::encoding::Depth,
878 ) -> fidl::Result<()> {
879 encoder.debug_check_bounds::<DebugAgentAttachToResponse>(offset);
880 self.0.encode(encoder, offset + 0, depth)?;
884 Ok(())
885 }
886 }
887
888 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
889 for DebugAgentAttachToResponse
890 {
891 #[inline(always)]
892 fn new_empty() -> Self {
893 Self { num_matches: fidl::new_empty!(u32, D) }
894 }
895
896 #[inline]
897 unsafe fn decode(
898 &mut self,
899 decoder: &mut fidl::encoding::Decoder<'_, D>,
900 offset: usize,
901 _depth: fidl::encoding::Depth,
902 ) -> fidl::Result<()> {
903 decoder.debug_check_bounds::<Self>(offset);
904 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
905 unsafe {
908 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
909 }
910 Ok(())
911 }
912 }
913
914 impl fidl::encoding::ValueTypeMarker for Filter {
915 type Borrowed<'a> = &'a Self;
916 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
917 value
918 }
919 }
920
921 unsafe impl fidl::encoding::TypeMarker for Filter {
922 type Owned = Self;
923
924 #[inline(always)]
925 fn inline_align(_context: fidl::encoding::Context) -> usize {
926 8
927 }
928
929 #[inline(always)]
930 fn inline_size(_context: fidl::encoding::Context) -> usize {
931 40
932 }
933 }
934
935 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Filter, D> for &Filter {
936 #[inline]
937 unsafe fn encode(
938 self,
939 encoder: &mut fidl::encoding::Encoder<'_, D>,
940 offset: usize,
941 _depth: fidl::encoding::Depth,
942 ) -> fidl::Result<()> {
943 encoder.debug_check_bounds::<Filter>(offset);
944 fidl::encoding::Encode::<Filter, D>::encode(
946 (
947 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
948 &self.pattern,
949 ),
950 <FilterType as fidl::encoding::ValueTypeMarker>::borrow(&self.type_),
951 <FilterOptions as fidl::encoding::ValueTypeMarker>::borrow(&self.options),
952 ),
953 encoder,
954 offset,
955 _depth,
956 )
957 }
958 }
959 unsafe impl<
960 D: fidl::encoding::ResourceDialect,
961 T0: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
962 T1: fidl::encoding::Encode<FilterType, D>,
963 T2: fidl::encoding::Encode<FilterOptions, D>,
964 > fidl::encoding::Encode<Filter, D> for (T0, T1, T2)
965 {
966 #[inline]
967 unsafe fn encode(
968 self,
969 encoder: &mut fidl::encoding::Encoder<'_, D>,
970 offset: usize,
971 depth: fidl::encoding::Depth,
972 ) -> fidl::Result<()> {
973 encoder.debug_check_bounds::<Filter>(offset);
974 unsafe {
977 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
978 (ptr as *mut u64).write_unaligned(0);
979 }
980 self.0.encode(encoder, offset + 0, depth)?;
982 self.1.encode(encoder, offset + 16, depth)?;
983 self.2.encode(encoder, offset + 24, depth)?;
984 Ok(())
985 }
986 }
987
988 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Filter {
989 #[inline(always)]
990 fn new_empty() -> Self {
991 Self {
992 pattern: fidl::new_empty!(fidl::encoding::UnboundedString, D),
993 type_: fidl::new_empty!(FilterType, D),
994 options: fidl::new_empty!(FilterOptions, D),
995 }
996 }
997
998 #[inline]
999 unsafe fn decode(
1000 &mut self,
1001 decoder: &mut fidl::encoding::Decoder<'_, D>,
1002 offset: usize,
1003 _depth: fidl::encoding::Depth,
1004 ) -> fidl::Result<()> {
1005 decoder.debug_check_bounds::<Self>(offset);
1006 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
1008 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1009 let mask = 0xffffffffffffff00u64;
1010 let maskedval = padval & mask;
1011 if maskedval != 0 {
1012 return Err(fidl::Error::NonZeroPadding {
1013 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
1014 });
1015 }
1016 fidl::decode!(
1017 fidl::encoding::UnboundedString,
1018 D,
1019 &mut self.pattern,
1020 decoder,
1021 offset + 0,
1022 _depth
1023 )?;
1024 fidl::decode!(FilterType, D, &mut self.type_, decoder, offset + 16, _depth)?;
1025 fidl::decode!(FilterOptions, D, &mut self.options, decoder, offset + 24, _depth)?;
1026 Ok(())
1027 }
1028 }
1029
1030 impl fidl::encoding::ValueTypeMarker for ProcessInfo {
1031 type Borrowed<'a> = &'a Self;
1032 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1033 value
1034 }
1035 }
1036
1037 unsafe impl fidl::encoding::TypeMarker for ProcessInfo {
1038 type Owned = Self;
1039
1040 #[inline(always)]
1041 fn inline_align(_context: fidl::encoding::Context) -> usize {
1042 8
1043 }
1044
1045 #[inline(always)]
1046 fn inline_size(_context: fidl::encoding::Context) -> usize {
1047 48
1048 }
1049 }
1050
1051 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProcessInfo, D>
1052 for &ProcessInfo
1053 {
1054 #[inline]
1055 unsafe fn encode(
1056 self,
1057 encoder: &mut fidl::encoding::Encoder<'_, D>,
1058 offset: usize,
1059 _depth: fidl::encoding::Depth,
1060 ) -> fidl::Result<()> {
1061 encoder.debug_check_bounds::<ProcessInfo>(offset);
1062 fidl::encoding::Encode::<ProcessInfo, D>::encode(
1064 (
1065 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.process),
1066 <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.moniker),
1067 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.thread),
1068 <ThreadDetails as fidl::encoding::ValueTypeMarker>::borrow(&self.details),
1069 ),
1070 encoder, offset, _depth
1071 )
1072 }
1073 }
1074 unsafe impl<
1075 D: fidl::encoding::ResourceDialect,
1076 T0: fidl::encoding::Encode<u64, D>,
1077 T1: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
1078 T2: fidl::encoding::Encode<u64, D>,
1079 T3: fidl::encoding::Encode<ThreadDetails, D>,
1080 > fidl::encoding::Encode<ProcessInfo, D> for (T0, T1, T2, T3)
1081 {
1082 #[inline]
1083 unsafe fn encode(
1084 self,
1085 encoder: &mut fidl::encoding::Encoder<'_, D>,
1086 offset: usize,
1087 depth: fidl::encoding::Depth,
1088 ) -> fidl::Result<()> {
1089 encoder.debug_check_bounds::<ProcessInfo>(offset);
1090 self.0.encode(encoder, offset + 0, depth)?;
1094 self.1.encode(encoder, offset + 8, depth)?;
1095 self.2.encode(encoder, offset + 24, depth)?;
1096 self.3.encode(encoder, offset + 32, depth)?;
1097 Ok(())
1098 }
1099 }
1100
1101 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProcessInfo {
1102 #[inline(always)]
1103 fn new_empty() -> Self {
1104 Self {
1105 process: fidl::new_empty!(u64, D),
1106 moniker: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D),
1107 thread: fidl::new_empty!(u64, D),
1108 details: fidl::new_empty!(ThreadDetails, D),
1109 }
1110 }
1111
1112 #[inline]
1113 unsafe fn decode(
1114 &mut self,
1115 decoder: &mut fidl::encoding::Decoder<'_, D>,
1116 offset: usize,
1117 _depth: fidl::encoding::Depth,
1118 ) -> fidl::Result<()> {
1119 decoder.debug_check_bounds::<Self>(offset);
1120 fidl::decode!(u64, D, &mut self.process, decoder, offset + 0, _depth)?;
1122 fidl::decode!(
1123 fidl::encoding::BoundedString<4096>,
1124 D,
1125 &mut self.moniker,
1126 decoder,
1127 offset + 8,
1128 _depth
1129 )?;
1130 fidl::decode!(u64, D, &mut self.thread, decoder, offset + 24, _depth)?;
1131 fidl::decode!(ThreadDetails, D, &mut self.details, decoder, offset + 32, _depth)?;
1132 Ok(())
1133 }
1134 }
1135
1136 impl fidl::encoding::ValueTypeMarker for ProcessInfoIteratorGetNextResponse {
1137 type Borrowed<'a> = &'a Self;
1138 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1139 value
1140 }
1141 }
1142
1143 unsafe impl fidl::encoding::TypeMarker for ProcessInfoIteratorGetNextResponse {
1144 type Owned = Self;
1145
1146 #[inline(always)]
1147 fn inline_align(_context: fidl::encoding::Context) -> usize {
1148 8
1149 }
1150
1151 #[inline(always)]
1152 fn inline_size(_context: fidl::encoding::Context) -> usize {
1153 16
1154 }
1155 }
1156
1157 unsafe impl<D: fidl::encoding::ResourceDialect>
1158 fidl::encoding::Encode<ProcessInfoIteratorGetNextResponse, D>
1159 for &ProcessInfoIteratorGetNextResponse
1160 {
1161 #[inline]
1162 unsafe fn encode(
1163 self,
1164 encoder: &mut fidl::encoding::Encoder<'_, D>,
1165 offset: usize,
1166 _depth: fidl::encoding::Depth,
1167 ) -> fidl::Result<()> {
1168 encoder.debug_check_bounds::<ProcessInfoIteratorGetNextResponse>(offset);
1169 fidl::encoding::Encode::<ProcessInfoIteratorGetNextResponse, D>::encode(
1171 (
1172 <fidl::encoding::UnboundedVector<ProcessInfo> as fidl::encoding::ValueTypeMarker>::borrow(&self.info),
1173 ),
1174 encoder, offset, _depth
1175 )
1176 }
1177 }
1178 unsafe impl<
1179 D: fidl::encoding::ResourceDialect,
1180 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<ProcessInfo>, D>,
1181 > fidl::encoding::Encode<ProcessInfoIteratorGetNextResponse, D> for (T0,)
1182 {
1183 #[inline]
1184 unsafe fn encode(
1185 self,
1186 encoder: &mut fidl::encoding::Encoder<'_, D>,
1187 offset: usize,
1188 depth: fidl::encoding::Depth,
1189 ) -> fidl::Result<()> {
1190 encoder.debug_check_bounds::<ProcessInfoIteratorGetNextResponse>(offset);
1191 self.0.encode(encoder, offset + 0, depth)?;
1195 Ok(())
1196 }
1197 }
1198
1199 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1200 for ProcessInfoIteratorGetNextResponse
1201 {
1202 #[inline(always)]
1203 fn new_empty() -> Self {
1204 Self { info: fidl::new_empty!(fidl::encoding::UnboundedVector<ProcessInfo>, D) }
1205 }
1206
1207 #[inline]
1208 unsafe fn decode(
1209 &mut self,
1210 decoder: &mut fidl::encoding::Decoder<'_, D>,
1211 offset: usize,
1212 _depth: fidl::encoding::Depth,
1213 ) -> fidl::Result<()> {
1214 decoder.debug_check_bounds::<Self>(offset);
1215 fidl::decode!(
1217 fidl::encoding::UnboundedVector<ProcessInfo>,
1218 D,
1219 &mut self.info,
1220 decoder,
1221 offset + 0,
1222 _depth
1223 )?;
1224 Ok(())
1225 }
1226 }
1227
1228 impl DebugAgentOnFatalExceptionRequest {
1229 #[inline(always)]
1230 fn max_ordinal_present(&self) -> u64 {
1231 if let Some(_) = self.backtrace {
1232 return 2;
1233 }
1234 if let Some(_) = self.thread {
1235 return 1;
1236 }
1237 0
1238 }
1239 }
1240
1241 impl fidl::encoding::ValueTypeMarker for DebugAgentOnFatalExceptionRequest {
1242 type Borrowed<'a> = &'a Self;
1243 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1244 value
1245 }
1246 }
1247
1248 unsafe impl fidl::encoding::TypeMarker for DebugAgentOnFatalExceptionRequest {
1249 type Owned = Self;
1250
1251 #[inline(always)]
1252 fn inline_align(_context: fidl::encoding::Context) -> usize {
1253 8
1254 }
1255
1256 #[inline(always)]
1257 fn inline_size(_context: fidl::encoding::Context) -> usize {
1258 16
1259 }
1260 }
1261
1262 unsafe impl<D: fidl::encoding::ResourceDialect>
1263 fidl::encoding::Encode<DebugAgentOnFatalExceptionRequest, D>
1264 for &DebugAgentOnFatalExceptionRequest
1265 {
1266 unsafe fn encode(
1267 self,
1268 encoder: &mut fidl::encoding::Encoder<'_, D>,
1269 offset: usize,
1270 mut depth: fidl::encoding::Depth,
1271 ) -> fidl::Result<()> {
1272 encoder.debug_check_bounds::<DebugAgentOnFatalExceptionRequest>(offset);
1273 let max_ordinal: u64 = self.max_ordinal_present();
1275 encoder.write_num(max_ordinal, offset);
1276 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1277 if max_ordinal == 0 {
1279 return Ok(());
1280 }
1281 depth.increment()?;
1282 let envelope_size = 8;
1283 let bytes_len = max_ordinal as usize * envelope_size;
1284 #[allow(unused_variables)]
1285 let offset = encoder.out_of_line_offset(bytes_len);
1286 let mut _prev_end_offset: usize = 0;
1287 if 1 > max_ordinal {
1288 return Ok(());
1289 }
1290
1291 let cur_offset: usize = (1 - 1) * envelope_size;
1294
1295 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1297
1298 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1303 self.thread.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1304 encoder,
1305 offset + cur_offset,
1306 depth,
1307 )?;
1308
1309 _prev_end_offset = cur_offset + envelope_size;
1310 if 2 > max_ordinal {
1311 return Ok(());
1312 }
1313
1314 let cur_offset: usize = (2 - 1) * envelope_size;
1317
1318 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1320
1321 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
1326 self.backtrace.as_ref().map(
1327 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
1328 ),
1329 encoder,
1330 offset + cur_offset,
1331 depth,
1332 )?;
1333
1334 _prev_end_offset = cur_offset + envelope_size;
1335
1336 Ok(())
1337 }
1338 }
1339
1340 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1341 for DebugAgentOnFatalExceptionRequest
1342 {
1343 #[inline(always)]
1344 fn new_empty() -> Self {
1345 Self::default()
1346 }
1347
1348 unsafe fn decode(
1349 &mut self,
1350 decoder: &mut fidl::encoding::Decoder<'_, D>,
1351 offset: usize,
1352 mut depth: fidl::encoding::Depth,
1353 ) -> fidl::Result<()> {
1354 decoder.debug_check_bounds::<Self>(offset);
1355 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1356 None => return Err(fidl::Error::NotNullable),
1357 Some(len) => len,
1358 };
1359 if len == 0 {
1361 return Ok(());
1362 };
1363 depth.increment()?;
1364 let envelope_size = 8;
1365 let bytes_len = len * envelope_size;
1366 let offset = decoder.out_of_line_offset(bytes_len)?;
1367 let mut _next_ordinal_to_read = 0;
1369 let mut next_offset = offset;
1370 let end_offset = offset + bytes_len;
1371 _next_ordinal_to_read += 1;
1372 if next_offset >= end_offset {
1373 return Ok(());
1374 }
1375
1376 while _next_ordinal_to_read < 1 {
1378 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1379 _next_ordinal_to_read += 1;
1380 next_offset += envelope_size;
1381 }
1382
1383 let next_out_of_line = decoder.next_out_of_line();
1384 let handles_before = decoder.remaining_handles();
1385 if let Some((inlined, num_bytes, num_handles)) =
1386 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1387 {
1388 let member_inline_size =
1389 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1390 if inlined != (member_inline_size <= 4) {
1391 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1392 }
1393 let inner_offset;
1394 let mut inner_depth = depth.clone();
1395 if inlined {
1396 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1397 inner_offset = next_offset;
1398 } else {
1399 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1400 inner_depth.increment()?;
1401 }
1402 let val_ref = self.thread.get_or_insert_with(|| fidl::new_empty!(u64, D));
1403 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1404 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1405 {
1406 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1407 }
1408 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1409 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1410 }
1411 }
1412
1413 next_offset += envelope_size;
1414 _next_ordinal_to_read += 1;
1415 if next_offset >= end_offset {
1416 return Ok(());
1417 }
1418
1419 while _next_ordinal_to_read < 2 {
1421 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1422 _next_ordinal_to_read += 1;
1423 next_offset += envelope_size;
1424 }
1425
1426 let next_out_of_line = decoder.next_out_of_line();
1427 let handles_before = decoder.remaining_handles();
1428 if let Some((inlined, num_bytes, num_handles)) =
1429 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1430 {
1431 let member_inline_size =
1432 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
1433 decoder.context,
1434 );
1435 if inlined != (member_inline_size <= 4) {
1436 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1437 }
1438 let inner_offset;
1439 let mut inner_depth = depth.clone();
1440 if inlined {
1441 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1442 inner_offset = next_offset;
1443 } else {
1444 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1445 inner_depth.increment()?;
1446 }
1447 let val_ref = self
1448 .backtrace
1449 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
1450 fidl::decode!(
1451 fidl::encoding::UnboundedString,
1452 D,
1453 val_ref,
1454 decoder,
1455 inner_offset,
1456 inner_depth
1457 )?;
1458 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1459 {
1460 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1461 }
1462 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1463 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1464 }
1465 }
1466
1467 next_offset += envelope_size;
1468
1469 while next_offset < end_offset {
1471 _next_ordinal_to_read += 1;
1472 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1473 next_offset += envelope_size;
1474 }
1475
1476 Ok(())
1477 }
1478 }
1479
1480 impl FilterOptions {
1481 #[inline(always)]
1482 fn max_ordinal_present(&self) -> u64 {
1483 if let Some(_) = self.job_only {
1484 return 2;
1485 }
1486 if let Some(_) = self.recursive {
1487 return 1;
1488 }
1489 0
1490 }
1491 }
1492
1493 impl fidl::encoding::ValueTypeMarker for FilterOptions {
1494 type Borrowed<'a> = &'a Self;
1495 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1496 value
1497 }
1498 }
1499
1500 unsafe impl fidl::encoding::TypeMarker for FilterOptions {
1501 type Owned = Self;
1502
1503 #[inline(always)]
1504 fn inline_align(_context: fidl::encoding::Context) -> usize {
1505 8
1506 }
1507
1508 #[inline(always)]
1509 fn inline_size(_context: fidl::encoding::Context) -> usize {
1510 16
1511 }
1512 }
1513
1514 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FilterOptions, D>
1515 for &FilterOptions
1516 {
1517 unsafe fn encode(
1518 self,
1519 encoder: &mut fidl::encoding::Encoder<'_, D>,
1520 offset: usize,
1521 mut depth: fidl::encoding::Depth,
1522 ) -> fidl::Result<()> {
1523 encoder.debug_check_bounds::<FilterOptions>(offset);
1524 let max_ordinal: u64 = self.max_ordinal_present();
1526 encoder.write_num(max_ordinal, offset);
1527 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1528 if max_ordinal == 0 {
1530 return Ok(());
1531 }
1532 depth.increment()?;
1533 let envelope_size = 8;
1534 let bytes_len = max_ordinal as usize * envelope_size;
1535 #[allow(unused_variables)]
1536 let offset = encoder.out_of_line_offset(bytes_len);
1537 let mut _prev_end_offset: usize = 0;
1538 if 1 > max_ordinal {
1539 return Ok(());
1540 }
1541
1542 let cur_offset: usize = (1 - 1) * envelope_size;
1545
1546 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1548
1549 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1554 self.recursive.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1555 encoder,
1556 offset + cur_offset,
1557 depth,
1558 )?;
1559
1560 _prev_end_offset = cur_offset + envelope_size;
1561 if 2 > max_ordinal {
1562 return Ok(());
1563 }
1564
1565 let cur_offset: usize = (2 - 1) * envelope_size;
1568
1569 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1571
1572 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1577 self.job_only.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1578 encoder,
1579 offset + cur_offset,
1580 depth,
1581 )?;
1582
1583 _prev_end_offset = cur_offset + envelope_size;
1584
1585 Ok(())
1586 }
1587 }
1588
1589 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FilterOptions {
1590 #[inline(always)]
1591 fn new_empty() -> Self {
1592 Self::default()
1593 }
1594
1595 unsafe fn decode(
1596 &mut self,
1597 decoder: &mut fidl::encoding::Decoder<'_, D>,
1598 offset: usize,
1599 mut depth: fidl::encoding::Depth,
1600 ) -> fidl::Result<()> {
1601 decoder.debug_check_bounds::<Self>(offset);
1602 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1603 None => return Err(fidl::Error::NotNullable),
1604 Some(len) => len,
1605 };
1606 if len == 0 {
1608 return Ok(());
1609 };
1610 depth.increment()?;
1611 let envelope_size = 8;
1612 let bytes_len = len * envelope_size;
1613 let offset = decoder.out_of_line_offset(bytes_len)?;
1614 let mut _next_ordinal_to_read = 0;
1616 let mut next_offset = offset;
1617 let end_offset = offset + bytes_len;
1618 _next_ordinal_to_read += 1;
1619 if next_offset >= end_offset {
1620 return Ok(());
1621 }
1622
1623 while _next_ordinal_to_read < 1 {
1625 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1626 _next_ordinal_to_read += 1;
1627 next_offset += envelope_size;
1628 }
1629
1630 let next_out_of_line = decoder.next_out_of_line();
1631 let handles_before = decoder.remaining_handles();
1632 if let Some((inlined, num_bytes, num_handles)) =
1633 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1634 {
1635 let member_inline_size =
1636 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1637 if inlined != (member_inline_size <= 4) {
1638 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1639 }
1640 let inner_offset;
1641 let mut inner_depth = depth.clone();
1642 if inlined {
1643 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1644 inner_offset = next_offset;
1645 } else {
1646 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1647 inner_depth.increment()?;
1648 }
1649 let val_ref = self.recursive.get_or_insert_with(|| fidl::new_empty!(bool, D));
1650 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1651 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1652 {
1653 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1654 }
1655 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1656 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1657 }
1658 }
1659
1660 next_offset += envelope_size;
1661 _next_ordinal_to_read += 1;
1662 if next_offset >= end_offset {
1663 return Ok(());
1664 }
1665
1666 while _next_ordinal_to_read < 2 {
1668 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1669 _next_ordinal_to_read += 1;
1670 next_offset += envelope_size;
1671 }
1672
1673 let next_out_of_line = decoder.next_out_of_line();
1674 let handles_before = decoder.remaining_handles();
1675 if let Some((inlined, num_bytes, num_handles)) =
1676 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1677 {
1678 let member_inline_size =
1679 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1680 if inlined != (member_inline_size <= 4) {
1681 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1682 }
1683 let inner_offset;
1684 let mut inner_depth = depth.clone();
1685 if inlined {
1686 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1687 inner_offset = next_offset;
1688 } else {
1689 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1690 inner_depth.increment()?;
1691 }
1692 let val_ref = self.job_only.get_or_insert_with(|| fidl::new_empty!(bool, D));
1693 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1694 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1695 {
1696 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1697 }
1698 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1699 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1700 }
1701 }
1702
1703 next_offset += envelope_size;
1704
1705 while next_offset < end_offset {
1707 _next_ordinal_to_read += 1;
1708 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1709 next_offset += envelope_size;
1710 }
1711
1712 Ok(())
1713 }
1714 }
1715
1716 impl GetProcessInfoOptions {
1717 #[inline(always)]
1718 fn max_ordinal_present(&self) -> u64 {
1719 if let Some(_) = self.interest {
1720 return 2;
1721 }
1722 if let Some(_) = self.filter {
1723 return 1;
1724 }
1725 0
1726 }
1727 }
1728
1729 impl fidl::encoding::ValueTypeMarker for GetProcessInfoOptions {
1730 type Borrowed<'a> = &'a Self;
1731 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1732 value
1733 }
1734 }
1735
1736 unsafe impl fidl::encoding::TypeMarker for GetProcessInfoOptions {
1737 type Owned = Self;
1738
1739 #[inline(always)]
1740 fn inline_align(_context: fidl::encoding::Context) -> usize {
1741 8
1742 }
1743
1744 #[inline(always)]
1745 fn inline_size(_context: fidl::encoding::Context) -> usize {
1746 16
1747 }
1748 }
1749
1750 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<GetProcessInfoOptions, D>
1751 for &GetProcessInfoOptions
1752 {
1753 unsafe fn encode(
1754 self,
1755 encoder: &mut fidl::encoding::Encoder<'_, D>,
1756 offset: usize,
1757 mut depth: fidl::encoding::Depth,
1758 ) -> fidl::Result<()> {
1759 encoder.debug_check_bounds::<GetProcessInfoOptions>(offset);
1760 let max_ordinal: u64 = self.max_ordinal_present();
1762 encoder.write_num(max_ordinal, offset);
1763 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1764 if max_ordinal == 0 {
1766 return Ok(());
1767 }
1768 depth.increment()?;
1769 let envelope_size = 8;
1770 let bytes_len = max_ordinal as usize * envelope_size;
1771 #[allow(unused_variables)]
1772 let offset = encoder.out_of_line_offset(bytes_len);
1773 let mut _prev_end_offset: usize = 0;
1774 if 1 > max_ordinal {
1775 return Ok(());
1776 }
1777
1778 let cur_offset: usize = (1 - 1) * envelope_size;
1781
1782 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1784
1785 fidl::encoding::encode_in_envelope_optional::<Filter, D>(
1790 self.filter.as_ref().map(<Filter as fidl::encoding::ValueTypeMarker>::borrow),
1791 encoder,
1792 offset + cur_offset,
1793 depth,
1794 )?;
1795
1796 _prev_end_offset = cur_offset + envelope_size;
1797 if 2 > max_ordinal {
1798 return Ok(());
1799 }
1800
1801 let cur_offset: usize = (2 - 1) * envelope_size;
1804
1805 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1807
1808 fidl::encoding::encode_in_envelope_optional::<ThreadDetailsInterest, D>(
1813 self.interest
1814 .as_ref()
1815 .map(<ThreadDetailsInterest as fidl::encoding::ValueTypeMarker>::borrow),
1816 encoder,
1817 offset + cur_offset,
1818 depth,
1819 )?;
1820
1821 _prev_end_offset = cur_offset + envelope_size;
1822
1823 Ok(())
1824 }
1825 }
1826
1827 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GetProcessInfoOptions {
1828 #[inline(always)]
1829 fn new_empty() -> Self {
1830 Self::default()
1831 }
1832
1833 unsafe fn decode(
1834 &mut self,
1835 decoder: &mut fidl::encoding::Decoder<'_, D>,
1836 offset: usize,
1837 mut depth: fidl::encoding::Depth,
1838 ) -> fidl::Result<()> {
1839 decoder.debug_check_bounds::<Self>(offset);
1840 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1841 None => return Err(fidl::Error::NotNullable),
1842 Some(len) => len,
1843 };
1844 if len == 0 {
1846 return Ok(());
1847 };
1848 depth.increment()?;
1849 let envelope_size = 8;
1850 let bytes_len = len * envelope_size;
1851 let offset = decoder.out_of_line_offset(bytes_len)?;
1852 let mut _next_ordinal_to_read = 0;
1854 let mut next_offset = offset;
1855 let end_offset = offset + bytes_len;
1856 _next_ordinal_to_read += 1;
1857 if next_offset >= end_offset {
1858 return Ok(());
1859 }
1860
1861 while _next_ordinal_to_read < 1 {
1863 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1864 _next_ordinal_to_read += 1;
1865 next_offset += envelope_size;
1866 }
1867
1868 let next_out_of_line = decoder.next_out_of_line();
1869 let handles_before = decoder.remaining_handles();
1870 if let Some((inlined, num_bytes, num_handles)) =
1871 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1872 {
1873 let member_inline_size =
1874 <Filter as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1875 if inlined != (member_inline_size <= 4) {
1876 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1877 }
1878 let inner_offset;
1879 let mut inner_depth = depth.clone();
1880 if inlined {
1881 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1882 inner_offset = next_offset;
1883 } else {
1884 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1885 inner_depth.increment()?;
1886 }
1887 let val_ref = self.filter.get_or_insert_with(|| fidl::new_empty!(Filter, D));
1888 fidl::decode!(Filter, D, val_ref, decoder, inner_offset, inner_depth)?;
1889 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1890 {
1891 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1892 }
1893 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1894 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1895 }
1896 }
1897
1898 next_offset += envelope_size;
1899 _next_ordinal_to_read += 1;
1900 if next_offset >= end_offset {
1901 return Ok(());
1902 }
1903
1904 while _next_ordinal_to_read < 2 {
1906 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1907 _next_ordinal_to_read += 1;
1908 next_offset += envelope_size;
1909 }
1910
1911 let next_out_of_line = decoder.next_out_of_line();
1912 let handles_before = decoder.remaining_handles();
1913 if let Some((inlined, num_bytes, num_handles)) =
1914 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1915 {
1916 let member_inline_size =
1917 <ThreadDetailsInterest as fidl::encoding::TypeMarker>::inline_size(
1918 decoder.context,
1919 );
1920 if inlined != (member_inline_size <= 4) {
1921 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1922 }
1923 let inner_offset;
1924 let mut inner_depth = depth.clone();
1925 if inlined {
1926 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1927 inner_offset = next_offset;
1928 } else {
1929 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1930 inner_depth.increment()?;
1931 }
1932 let val_ref =
1933 self.interest.get_or_insert_with(|| fidl::new_empty!(ThreadDetailsInterest, D));
1934 fidl::decode!(
1935 ThreadDetailsInterest,
1936 D,
1937 val_ref,
1938 decoder,
1939 inner_offset,
1940 inner_depth
1941 )?;
1942 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1943 {
1944 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1945 }
1946 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1947 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1948 }
1949 }
1950
1951 next_offset += envelope_size;
1952
1953 while next_offset < end_offset {
1955 _next_ordinal_to_read += 1;
1956 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1957 next_offset += envelope_size;
1958 }
1959
1960 Ok(())
1961 }
1962 }
1963
1964 impl MinidumpOptions {
1965 #[inline(always)]
1966 fn max_ordinal_present(&self) -> u64 {
1967 if let Some(_) = self.filter {
1968 return 1;
1969 }
1970 0
1971 }
1972 }
1973
1974 impl fidl::encoding::ValueTypeMarker for MinidumpOptions {
1975 type Borrowed<'a> = &'a Self;
1976 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1977 value
1978 }
1979 }
1980
1981 unsafe impl fidl::encoding::TypeMarker for MinidumpOptions {
1982 type Owned = Self;
1983
1984 #[inline(always)]
1985 fn inline_align(_context: fidl::encoding::Context) -> usize {
1986 8
1987 }
1988
1989 #[inline(always)]
1990 fn inline_size(_context: fidl::encoding::Context) -> usize {
1991 16
1992 }
1993 }
1994
1995 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinidumpOptions, D>
1996 for &MinidumpOptions
1997 {
1998 unsafe fn encode(
1999 self,
2000 encoder: &mut fidl::encoding::Encoder<'_, D>,
2001 offset: usize,
2002 mut depth: fidl::encoding::Depth,
2003 ) -> fidl::Result<()> {
2004 encoder.debug_check_bounds::<MinidumpOptions>(offset);
2005 let max_ordinal: u64 = self.max_ordinal_present();
2007 encoder.write_num(max_ordinal, offset);
2008 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2009 if max_ordinal == 0 {
2011 return Ok(());
2012 }
2013 depth.increment()?;
2014 let envelope_size = 8;
2015 let bytes_len = max_ordinal as usize * envelope_size;
2016 #[allow(unused_variables)]
2017 let offset = encoder.out_of_line_offset(bytes_len);
2018 let mut _prev_end_offset: usize = 0;
2019 if 1 > max_ordinal {
2020 return Ok(());
2021 }
2022
2023 let cur_offset: usize = (1 - 1) * envelope_size;
2026
2027 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2029
2030 fidl::encoding::encode_in_envelope_optional::<Filter, D>(
2035 self.filter.as_ref().map(<Filter as fidl::encoding::ValueTypeMarker>::borrow),
2036 encoder,
2037 offset + cur_offset,
2038 depth,
2039 )?;
2040
2041 _prev_end_offset = cur_offset + envelope_size;
2042
2043 Ok(())
2044 }
2045 }
2046
2047 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinidumpOptions {
2048 #[inline(always)]
2049 fn new_empty() -> Self {
2050 Self::default()
2051 }
2052
2053 unsafe fn decode(
2054 &mut self,
2055 decoder: &mut fidl::encoding::Decoder<'_, D>,
2056 offset: usize,
2057 mut depth: fidl::encoding::Depth,
2058 ) -> fidl::Result<()> {
2059 decoder.debug_check_bounds::<Self>(offset);
2060 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2061 None => return Err(fidl::Error::NotNullable),
2062 Some(len) => len,
2063 };
2064 if len == 0 {
2066 return Ok(());
2067 };
2068 depth.increment()?;
2069 let envelope_size = 8;
2070 let bytes_len = len * envelope_size;
2071 let offset = decoder.out_of_line_offset(bytes_len)?;
2072 let mut _next_ordinal_to_read = 0;
2074 let mut next_offset = offset;
2075 let end_offset = offset + bytes_len;
2076 _next_ordinal_to_read += 1;
2077 if next_offset >= end_offset {
2078 return Ok(());
2079 }
2080
2081 while _next_ordinal_to_read < 1 {
2083 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2084 _next_ordinal_to_read += 1;
2085 next_offset += envelope_size;
2086 }
2087
2088 let next_out_of_line = decoder.next_out_of_line();
2089 let handles_before = decoder.remaining_handles();
2090 if let Some((inlined, num_bytes, num_handles)) =
2091 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2092 {
2093 let member_inline_size =
2094 <Filter as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2095 if inlined != (member_inline_size <= 4) {
2096 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2097 }
2098 let inner_offset;
2099 let mut inner_depth = depth.clone();
2100 if inlined {
2101 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2102 inner_offset = next_offset;
2103 } else {
2104 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2105 inner_depth.increment()?;
2106 }
2107 let val_ref = self.filter.get_or_insert_with(|| fidl::new_empty!(Filter, D));
2108 fidl::decode!(Filter, D, val_ref, decoder, inner_offset, inner_depth)?;
2109 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2110 {
2111 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2112 }
2113 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2114 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2115 }
2116 }
2117
2118 next_offset += envelope_size;
2119
2120 while next_offset < end_offset {
2122 _next_ordinal_to_read += 1;
2123 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2124 next_offset += envelope_size;
2125 }
2126
2127 Ok(())
2128 }
2129 }
2130
2131 impl ThreadDetails {
2132 #[inline(always)]
2133 fn max_ordinal_present(&self) -> u64 {
2134 if let Some(_) = self.backtrace {
2135 return 1;
2136 }
2137 0
2138 }
2139 }
2140
2141 impl fidl::encoding::ValueTypeMarker for ThreadDetails {
2142 type Borrowed<'a> = &'a Self;
2143 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2144 value
2145 }
2146 }
2147
2148 unsafe impl fidl::encoding::TypeMarker for ThreadDetails {
2149 type Owned = Self;
2150
2151 #[inline(always)]
2152 fn inline_align(_context: fidl::encoding::Context) -> usize {
2153 8
2154 }
2155
2156 #[inline(always)]
2157 fn inline_size(_context: fidl::encoding::Context) -> usize {
2158 16
2159 }
2160 }
2161
2162 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ThreadDetails, D>
2163 for &ThreadDetails
2164 {
2165 unsafe fn encode(
2166 self,
2167 encoder: &mut fidl::encoding::Encoder<'_, D>,
2168 offset: usize,
2169 mut depth: fidl::encoding::Depth,
2170 ) -> fidl::Result<()> {
2171 encoder.debug_check_bounds::<ThreadDetails>(offset);
2172 let max_ordinal: u64 = self.max_ordinal_present();
2174 encoder.write_num(max_ordinal, offset);
2175 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2176 if max_ordinal == 0 {
2178 return Ok(());
2179 }
2180 depth.increment()?;
2181 let envelope_size = 8;
2182 let bytes_len = max_ordinal as usize * envelope_size;
2183 #[allow(unused_variables)]
2184 let offset = encoder.out_of_line_offset(bytes_len);
2185 let mut _prev_end_offset: usize = 0;
2186 if 1 > max_ordinal {
2187 return Ok(());
2188 }
2189
2190 let cur_offset: usize = (1 - 1) * envelope_size;
2193
2194 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2196
2197 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
2202 self.backtrace.as_ref().map(
2203 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
2204 ),
2205 encoder,
2206 offset + cur_offset,
2207 depth,
2208 )?;
2209
2210 _prev_end_offset = cur_offset + envelope_size;
2211
2212 Ok(())
2213 }
2214 }
2215
2216 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ThreadDetails {
2217 #[inline(always)]
2218 fn new_empty() -> Self {
2219 Self::default()
2220 }
2221
2222 unsafe fn decode(
2223 &mut self,
2224 decoder: &mut fidl::encoding::Decoder<'_, D>,
2225 offset: usize,
2226 mut depth: fidl::encoding::Depth,
2227 ) -> fidl::Result<()> {
2228 decoder.debug_check_bounds::<Self>(offset);
2229 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2230 None => return Err(fidl::Error::NotNullable),
2231 Some(len) => len,
2232 };
2233 if len == 0 {
2235 return Ok(());
2236 };
2237 depth.increment()?;
2238 let envelope_size = 8;
2239 let bytes_len = len * envelope_size;
2240 let offset = decoder.out_of_line_offset(bytes_len)?;
2241 let mut _next_ordinal_to_read = 0;
2243 let mut next_offset = offset;
2244 let end_offset = offset + bytes_len;
2245 _next_ordinal_to_read += 1;
2246 if next_offset >= end_offset {
2247 return Ok(());
2248 }
2249
2250 while _next_ordinal_to_read < 1 {
2252 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2253 _next_ordinal_to_read += 1;
2254 next_offset += envelope_size;
2255 }
2256
2257 let next_out_of_line = decoder.next_out_of_line();
2258 let handles_before = decoder.remaining_handles();
2259 if let Some((inlined, num_bytes, num_handles)) =
2260 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2261 {
2262 let member_inline_size =
2263 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
2264 decoder.context,
2265 );
2266 if inlined != (member_inline_size <= 4) {
2267 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2268 }
2269 let inner_offset;
2270 let mut inner_depth = depth.clone();
2271 if inlined {
2272 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2273 inner_offset = next_offset;
2274 } else {
2275 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2276 inner_depth.increment()?;
2277 }
2278 let val_ref = self
2279 .backtrace
2280 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
2281 fidl::decode!(
2282 fidl::encoding::UnboundedString,
2283 D,
2284 val_ref,
2285 decoder,
2286 inner_offset,
2287 inner_depth
2288 )?;
2289 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2290 {
2291 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2292 }
2293 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2294 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2295 }
2296 }
2297
2298 next_offset += envelope_size;
2299
2300 while next_offset < end_offset {
2302 _next_ordinal_to_read += 1;
2303 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2304 next_offset += envelope_size;
2305 }
2306
2307 Ok(())
2308 }
2309 }
2310
2311 impl ThreadDetailsInterest {
2312 #[inline(always)]
2313 fn max_ordinal_present(&self) -> u64 {
2314 if let Some(_) = self.backtrace {
2315 return 1;
2316 }
2317 0
2318 }
2319 }
2320
2321 impl fidl::encoding::ValueTypeMarker for ThreadDetailsInterest {
2322 type Borrowed<'a> = &'a Self;
2323 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2324 value
2325 }
2326 }
2327
2328 unsafe impl fidl::encoding::TypeMarker for ThreadDetailsInterest {
2329 type Owned = Self;
2330
2331 #[inline(always)]
2332 fn inline_align(_context: fidl::encoding::Context) -> usize {
2333 8
2334 }
2335
2336 #[inline(always)]
2337 fn inline_size(_context: fidl::encoding::Context) -> usize {
2338 16
2339 }
2340 }
2341
2342 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ThreadDetailsInterest, D>
2343 for &ThreadDetailsInterest
2344 {
2345 unsafe fn encode(
2346 self,
2347 encoder: &mut fidl::encoding::Encoder<'_, D>,
2348 offset: usize,
2349 mut depth: fidl::encoding::Depth,
2350 ) -> fidl::Result<()> {
2351 encoder.debug_check_bounds::<ThreadDetailsInterest>(offset);
2352 let max_ordinal: u64 = self.max_ordinal_present();
2354 encoder.write_num(max_ordinal, offset);
2355 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2356 if max_ordinal == 0 {
2358 return Ok(());
2359 }
2360 depth.increment()?;
2361 let envelope_size = 8;
2362 let bytes_len = max_ordinal as usize * envelope_size;
2363 #[allow(unused_variables)]
2364 let offset = encoder.out_of_line_offset(bytes_len);
2365 let mut _prev_end_offset: usize = 0;
2366 if 1 > max_ordinal {
2367 return Ok(());
2368 }
2369
2370 let cur_offset: usize = (1 - 1) * envelope_size;
2373
2374 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2376
2377 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2382 self.backtrace.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2383 encoder,
2384 offset + cur_offset,
2385 depth,
2386 )?;
2387
2388 _prev_end_offset = cur_offset + envelope_size;
2389
2390 Ok(())
2391 }
2392 }
2393
2394 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ThreadDetailsInterest {
2395 #[inline(always)]
2396 fn new_empty() -> Self {
2397 Self::default()
2398 }
2399
2400 unsafe fn decode(
2401 &mut self,
2402 decoder: &mut fidl::encoding::Decoder<'_, D>,
2403 offset: usize,
2404 mut depth: fidl::encoding::Depth,
2405 ) -> fidl::Result<()> {
2406 decoder.debug_check_bounds::<Self>(offset);
2407 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2408 None => return Err(fidl::Error::NotNullable),
2409 Some(len) => len,
2410 };
2411 if len == 0 {
2413 return Ok(());
2414 };
2415 depth.increment()?;
2416 let envelope_size = 8;
2417 let bytes_len = len * envelope_size;
2418 let offset = decoder.out_of_line_offset(bytes_len)?;
2419 let mut _next_ordinal_to_read = 0;
2421 let mut next_offset = offset;
2422 let end_offset = offset + bytes_len;
2423 _next_ordinal_to_read += 1;
2424 if next_offset >= end_offset {
2425 return Ok(());
2426 }
2427
2428 while _next_ordinal_to_read < 1 {
2430 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2431 _next_ordinal_to_read += 1;
2432 next_offset += envelope_size;
2433 }
2434
2435 let next_out_of_line = decoder.next_out_of_line();
2436 let handles_before = decoder.remaining_handles();
2437 if let Some((inlined, num_bytes, num_handles)) =
2438 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2439 {
2440 let member_inline_size =
2441 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2442 if inlined != (member_inline_size <= 4) {
2443 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2444 }
2445 let inner_offset;
2446 let mut inner_depth = depth.clone();
2447 if inlined {
2448 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2449 inner_offset = next_offset;
2450 } else {
2451 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2452 inner_depth.increment()?;
2453 }
2454 let val_ref = self.backtrace.get_or_insert_with(|| fidl::new_empty!(bool, D));
2455 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2456 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2457 {
2458 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2459 }
2460 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2461 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2462 }
2463 }
2464
2465 next_offset += envelope_size;
2466
2467 while next_offset < end_offset {
2469 _next_ordinal_to_read += 1;
2470 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2471 next_offset += envelope_size;
2472 }
2473
2474 Ok(())
2475 }
2476 }
2477}