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)]
13pub enum CallgraphStrategy {
14 None,
16 Dwarf,
22 LastBranchRecord,
28 ShadowCallStack,
33 FramePointer,
39 #[doc(hidden)]
40 __SourceBreaking { unknown_ordinal: u8 },
41}
42
43#[macro_export]
45macro_rules! CallgraphStrategyUnknown {
46 () => {
47 _
48 };
49}
50
51impl CallgraphStrategy {
52 #[inline]
53 pub fn from_primitive(prim: u8) -> Option<Self> {
54 match prim {
55 0 => Some(Self::None),
56 1 => Some(Self::Dwarf),
57 2 => Some(Self::LastBranchRecord),
58 3 => Some(Self::ShadowCallStack),
59 4 => Some(Self::FramePointer),
60 _ => None,
61 }
62 }
63
64 #[inline]
65 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
66 match prim {
67 0 => Self::None,
68 1 => Self::Dwarf,
69 2 => Self::LastBranchRecord,
70 3 => Self::ShadowCallStack,
71 4 => Self::FramePointer,
72 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
73 }
74 }
75
76 #[inline]
77 pub fn unknown() -> Self {
78 Self::__SourceBreaking { unknown_ordinal: 0xff }
79 }
80
81 #[inline]
82 pub const fn into_primitive(self) -> u8 {
83 match self {
84 Self::None => 0,
85 Self::Dwarf => 1,
86 Self::LastBranchRecord => 2,
87 Self::ShadowCallStack => 3,
88 Self::FramePointer => 4,
89 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
90 }
91 }
92
93 #[inline]
94 pub fn is_unknown(&self) -> bool {
95 match self {
96 Self::__SourceBreaking { unknown_ordinal: _ } => true,
97 _ => false,
98 }
99 }
100}
101
102#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
104pub enum CounterId {
105 Nanoseconds,
107 Cycles,
109 InstructionsRetired,
111 BranchesPredicted,
113 BranchesMispredidcted,
115 #[doc(hidden)]
116 __SourceBreaking { unknown_ordinal: u8 },
117}
118
119#[macro_export]
121macro_rules! CounterIdUnknown {
122 () => {
123 _
124 };
125}
126
127impl CounterId {
128 #[inline]
129 pub fn from_primitive(prim: u8) -> Option<Self> {
130 match prim {
131 0 => Some(Self::Nanoseconds),
132 1 => Some(Self::Cycles),
133 2 => Some(Self::InstructionsRetired),
134 3 => Some(Self::BranchesPredicted),
135 4 => Some(Self::BranchesMispredidcted),
136 _ => None,
137 }
138 }
139
140 #[inline]
141 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
142 match prim {
143 0 => Self::Nanoseconds,
144 1 => Self::Cycles,
145 2 => Self::InstructionsRetired,
146 3 => Self::BranchesPredicted,
147 4 => Self::BranchesMispredidcted,
148 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
149 }
150 }
151
152 #[inline]
153 pub fn unknown() -> Self {
154 Self::__SourceBreaking { unknown_ordinal: 0xff }
155 }
156
157 #[inline]
158 pub const fn into_primitive(self) -> u8 {
159 match self {
160 Self::Nanoseconds => 0,
161 Self::Cycles => 1,
162 Self::InstructionsRetired => 2,
163 Self::BranchesPredicted => 3,
164 Self::BranchesMispredidcted => 4,
165 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
166 }
167 }
168
169 #[inline]
170 pub fn is_unknown(&self) -> bool {
171 match self {
172 Self::__SourceBreaking { unknown_ordinal: _ } => true,
173 _ => false,
174 }
175 }
176}
177
178#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
180pub enum ManagerError {
181 Start,
183 NoSuchTask,
185 InvalidConfiguration,
187 TooManySessions,
189 Stop,
191 #[doc(hidden)]
192 __SourceBreaking { unknown_ordinal: u32 },
193}
194
195#[macro_export]
197macro_rules! ManagerErrorUnknown {
198 () => {
199 _
200 };
201}
202
203impl ManagerError {
204 #[inline]
205 pub fn from_primitive(prim: u32) -> Option<Self> {
206 match prim {
207 1 => Some(Self::Start),
208 2 => Some(Self::NoSuchTask),
209 3 => Some(Self::InvalidConfiguration),
210 4 => Some(Self::TooManySessions),
211 5 => Some(Self::Stop),
212 _ => None,
213 }
214 }
215
216 #[inline]
217 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
218 match prim {
219 1 => Self::Start,
220 2 => Self::NoSuchTask,
221 3 => Self::InvalidConfiguration,
222 4 => Self::TooManySessions,
223 5 => Self::Stop,
224 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
225 }
226 }
227
228 #[inline]
229 pub fn unknown() -> Self {
230 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
231 }
232
233 #[inline]
234 pub const fn into_primitive(self) -> u32 {
235 match self {
236 Self::Start => 1,
237 Self::NoSuchTask => 2,
238 Self::InvalidConfiguration => 3,
239 Self::TooManySessions => 4,
240 Self::Stop => 5,
241 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
242 }
243 }
244
245 #[inline]
246 pub fn is_unknown(&self) -> bool {
247 match self {
248 Self::__SourceBreaking { unknown_ordinal: _ } => true,
249 _ => false,
250 }
251 }
252}
253
254#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
255pub enum SessionConfigureError {
256 BadSocket,
257 BadState,
258 InvalidConfiguration,
259 MissingSampleConfigs,
260 MissingTargetConfigs,
261 MissingComponentUrl,
262 #[doc(hidden)]
263 __SourceBreaking {
264 unknown_ordinal: u32,
265 },
266}
267
268#[macro_export]
270macro_rules! SessionConfigureErrorUnknown {
271 () => {
272 _
273 };
274}
275
276impl SessionConfigureError {
277 #[inline]
278 pub fn from_primitive(prim: u32) -> Option<Self> {
279 match prim {
280 1 => Some(Self::BadSocket),
281 2 => Some(Self::BadState),
282 3 => Some(Self::InvalidConfiguration),
283 4 => Some(Self::MissingSampleConfigs),
284 5 => Some(Self::MissingTargetConfigs),
285 6 => Some(Self::MissingComponentUrl),
286 _ => None,
287 }
288 }
289
290 #[inline]
291 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
292 match prim {
293 1 => Self::BadSocket,
294 2 => Self::BadState,
295 3 => Self::InvalidConfiguration,
296 4 => Self::MissingSampleConfigs,
297 5 => Self::MissingTargetConfigs,
298 6 => Self::MissingComponentUrl,
299 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
300 }
301 }
302
303 #[inline]
304 pub fn unknown() -> Self {
305 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
306 }
307
308 #[inline]
309 pub const fn into_primitive(self) -> u32 {
310 match self {
311 Self::BadSocket => 1,
312 Self::BadState => 2,
313 Self::InvalidConfiguration => 3,
314 Self::MissingSampleConfigs => 4,
315 Self::MissingTargetConfigs => 5,
316 Self::MissingComponentUrl => 6,
317 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
318 }
319 }
320
321 #[inline]
322 pub fn is_unknown(&self) -> bool {
323 match self {
324 Self::__SourceBreaking { unknown_ordinal: _ } => true,
325 _ => false,
326 }
327 }
328}
329
330#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
331pub enum SessionStartError {
332 BadState,
333 #[doc(hidden)]
334 __SourceBreaking {
335 unknown_ordinal: u32,
336 },
337}
338
339#[macro_export]
341macro_rules! SessionStartErrorUnknown {
342 () => {
343 _
344 };
345}
346
347impl SessionStartError {
348 #[inline]
349 pub fn from_primitive(prim: u32) -> Option<Self> {
350 match prim {
351 1 => Some(Self::BadState),
352 _ => None,
353 }
354 }
355
356 #[inline]
357 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
358 match prim {
359 1 => Self::BadState,
360 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
361 }
362 }
363
364 #[inline]
365 pub fn unknown() -> Self {
366 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
367 }
368
369 #[inline]
370 pub const fn into_primitive(self) -> u32 {
371 match self {
372 Self::BadState => 1,
373 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
374 }
375 }
376
377 #[inline]
378 pub fn is_unknown(&self) -> bool {
379 match self {
380 Self::__SourceBreaking { unknown_ordinal: _ } => true,
381 _ => false,
382 }
383 }
384}
385
386#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
387pub struct SystemWide;
388
389impl fidl::Persistable for SystemWide {}
390
391#[derive(Clone, Debug, Default, PartialEq)]
392pub struct CallgraphConfig {
393 pub strategy: Option<CallgraphStrategy>,
394 #[doc(hidden)]
395 pub __source_breaking: fidl::marker::SourceBreaking,
396}
397
398impl fidl::Persistable for CallgraphConfig {}
399
400#[derive(Clone, Debug, Default, PartialEq)]
401pub struct LaunchComponent {
402 pub url: Option<String>,
404 pub moniker: Option<String>,
407 #[doc(hidden)]
408 pub __source_breaking: fidl::marker::SourceBreaking,
409}
410
411impl fidl::Persistable for LaunchComponent {}
412
413#[derive(Clone, Debug, Default, PartialEq)]
414pub struct OnBootConfig {
415 pub configs: Option<Vec<SamplingConfig>>,
416 pub target: Option<OnBootTargetConfig>,
417 #[doc(hidden)]
418 pub __source_breaking: fidl::marker::SourceBreaking,
419}
420
421impl fidl::Persistable for OnBootConfig {}
422impl fidl::Serializable for OnBootConfig {
423 const SERIALIZABLE_NAME: &'static str = "fuchsia.cpu.profiler.OnBootConfig";
424}
425
426#[derive(Clone, Debug, Default, PartialEq)]
428pub struct ProfilerStatus {
429 pub task_id: Option<u64>,
431 #[doc(hidden)]
432 pub __source_breaking: fidl::marker::SourceBreaking,
433}
434
435impl fidl::Persistable for ProfilerStatus {}
436
437#[derive(Clone, Debug, Default, PartialEq)]
438pub struct Sample {
439 pub callgraph: Option<CallgraphConfig>,
442 pub counters: Option<Vec<Counter>>,
444 #[doc(hidden)]
445 pub __source_breaking: fidl::marker::SourceBreaking,
446}
447
448impl fidl::Persistable for Sample {}
449
450#[derive(Clone, Debug, Default, PartialEq)]
452pub struct SamplingConfig {
453 pub period: Option<u64>,
455 pub timebase: Option<Counter>,
457 pub sample: Option<Sample>,
460 #[doc(hidden)]
461 pub __source_breaking: fidl::marker::SourceBreaking,
462}
463
464impl fidl::Persistable for SamplingConfig {}
465
466#[derive(Clone, Debug, Default, PartialEq)]
467pub struct SessionManagerAbortSessionRequest {
468 pub task_id: Option<u64>,
469 #[doc(hidden)]
470 pub __source_breaking: fidl::marker::SourceBreaking,
471}
472
473impl fidl::Persistable for SessionManagerAbortSessionRequest {}
474
475#[derive(Clone, Debug, Default, PartialEq)]
476pub struct SessionManagerStartSessionOnBootRequest {
477 pub config: Option<OnBootConfig>,
478 #[doc(hidden)]
479 pub __source_breaking: fidl::marker::SourceBreaking,
480}
481
482impl fidl::Persistable for SessionManagerStartSessionOnBootRequest {}
483
484#[derive(Clone, Debug, Default, PartialEq)]
485pub struct SessionManagerStartSessionResponse {
486 pub task_id: Option<u64>,
488 #[doc(hidden)]
489 pub __source_breaking: fidl::marker::SourceBreaking,
490}
491
492impl fidl::Persistable for SessionManagerStartSessionResponse {}
493
494#[derive(Clone, Debug, Default, PartialEq)]
495pub struct SessionManagerStatusResponse {
496 pub sessions: Option<Vec<ProfilerStatus>>,
497 #[doc(hidden)]
498 pub __source_breaking: fidl::marker::SourceBreaking,
499}
500
501impl fidl::Persistable for SessionManagerStatusResponse {}
502
503#[derive(Clone, Debug, Default, PartialEq)]
505pub struct SessionResult {
506 pub samples_collected: Option<u64>,
507 pub mean_sample_time: Option<u64>,
508 pub median_sample_time: Option<u64>,
509 pub min_sample_time: Option<u64>,
510 pub max_sample_time: Option<u64>,
511 pub missing_process_mappings: Option<Vec<u64>>,
512 #[doc(hidden)]
513 pub __source_breaking: fidl::marker::SourceBreaking,
514}
515
516impl fidl::Persistable for SessionResult {}
517
518#[derive(Clone, Debug, Default, PartialEq)]
519pub struct SessionStartRequest {
520 pub buffer_size_mb: Option<u64>,
524 pub buffer_results: Option<bool>,
525 #[doc(hidden)]
526 pub __source_breaking: fidl::marker::SourceBreaking,
527}
528
529impl fidl::Persistable for SessionStartRequest {}
530
531#[derive(Clone, Debug)]
532pub enum Counter {
533 PlatformIndependent(CounterId),
536 PlatformDependent(u32),
541 #[doc(hidden)]
542 __SourceBreaking { unknown_ordinal: u64 },
543}
544
545#[macro_export]
547macro_rules! CounterUnknown {
548 () => {
549 _
550 };
551}
552
553impl PartialEq for Counter {
555 fn eq(&self, other: &Self) -> bool {
556 match (self, other) {
557 (Self::PlatformIndependent(x), Self::PlatformIndependent(y)) => *x == *y,
558 (Self::PlatformDependent(x), Self::PlatformDependent(y)) => *x == *y,
559 _ => false,
560 }
561 }
562}
563
564impl Counter {
565 #[inline]
566 pub fn ordinal(&self) -> u64 {
567 match *self {
568 Self::PlatformIndependent(_) => 1,
569 Self::PlatformDependent(_) => 2,
570 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
571 }
572 }
573
574 #[inline]
575 pub fn unknown_variant_for_testing() -> Self {
576 Self::__SourceBreaking { unknown_ordinal: 0 }
577 }
578
579 #[inline]
580 pub fn is_unknown(&self) -> bool {
581 match self {
582 Self::__SourceBreaking { .. } => true,
583 _ => false,
584 }
585 }
586}
587
588impl fidl::Persistable for Counter {}
589
590#[derive(Clone, Debug)]
591pub enum OnBootAttachConfig {
592 AttachToComponentMoniker(String),
595 AttachToComponentUrl(String),
599 #[doc(hidden)]
600 __SourceBreaking { unknown_ordinal: u64 },
601}
602
603#[macro_export]
605macro_rules! OnBootAttachConfigUnknown {
606 () => {
607 _
608 };
609}
610
611impl PartialEq for OnBootAttachConfig {
613 fn eq(&self, other: &Self) -> bool {
614 match (self, other) {
615 (Self::AttachToComponentMoniker(x), Self::AttachToComponentMoniker(y)) => *x == *y,
616 (Self::AttachToComponentUrl(x), Self::AttachToComponentUrl(y)) => *x == *y,
617 _ => false,
618 }
619 }
620}
621
622impl OnBootAttachConfig {
623 #[inline]
624 pub fn ordinal(&self) -> u64 {
625 match *self {
626 Self::AttachToComponentMoniker(_) => 1,
627 Self::AttachToComponentUrl(_) => 2,
628 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
629 }
630 }
631
632 #[inline]
633 pub fn unknown_variant_for_testing() -> Self {
634 Self::__SourceBreaking { unknown_ordinal: 0 }
635 }
636
637 #[inline]
638 pub fn is_unknown(&self) -> bool {
639 match self {
640 Self::__SourceBreaking { .. } => true,
641 _ => false,
642 }
643 }
644}
645
646impl fidl::Persistable for OnBootAttachConfig {}
647
648#[derive(Clone, Debug)]
649pub enum OnBootTargetConfig {
650 Tasks(Vec<Task>),
652 Component(OnBootAttachConfig),
654 #[doc(hidden)]
655 __SourceBreaking { unknown_ordinal: u64 },
656}
657
658#[macro_export]
660macro_rules! OnBootTargetConfigUnknown {
661 () => {
662 _
663 };
664}
665
666impl PartialEq for OnBootTargetConfig {
668 fn eq(&self, other: &Self) -> bool {
669 match (self, other) {
670 (Self::Tasks(x), Self::Tasks(y)) => *x == *y,
671 (Self::Component(x), Self::Component(y)) => *x == *y,
672 _ => false,
673 }
674 }
675}
676
677impl OnBootTargetConfig {
678 #[inline]
679 pub fn ordinal(&self) -> u64 {
680 match *self {
681 Self::Tasks(_) => 1,
682 Self::Component(_) => 2,
683 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
684 }
685 }
686
687 #[inline]
688 pub fn unknown_variant_for_testing() -> Self {
689 Self::__SourceBreaking { unknown_ordinal: 0 }
690 }
691
692 #[inline]
693 pub fn is_unknown(&self) -> bool {
694 match self {
695 Self::__SourceBreaking { .. } => true,
696 _ => false,
697 }
698 }
699}
700
701impl fidl::Persistable for OnBootTargetConfig {}
702
703#[derive(Clone, Debug)]
705pub enum Task {
706 Process(u64),
708 Thread(u64),
710 Job(u64),
712 SystemWide(SystemWide),
716 #[doc(hidden)]
717 __SourceBreaking { unknown_ordinal: u64 },
718}
719
720#[macro_export]
722macro_rules! TaskUnknown {
723 () => {
724 _
725 };
726}
727
728impl PartialEq for Task {
730 fn eq(&self, other: &Self) -> bool {
731 match (self, other) {
732 (Self::Process(x), Self::Process(y)) => *x == *y,
733 (Self::Thread(x), Self::Thread(y)) => *x == *y,
734 (Self::Job(x), Self::Job(y)) => *x == *y,
735 (Self::SystemWide(x), Self::SystemWide(y)) => *x == *y,
736 _ => false,
737 }
738 }
739}
740
741impl Task {
742 #[inline]
743 pub fn ordinal(&self) -> u64 {
744 match *self {
745 Self::Process(_) => 1,
746 Self::Thread(_) => 2,
747 Self::Job(_) => 3,
748 Self::SystemWide(_) => 4,
749 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
750 }
751 }
752
753 #[inline]
754 pub fn unknown_variant_for_testing() -> Self {
755 Self::__SourceBreaking { unknown_ordinal: 0 }
756 }
757
758 #[inline]
759 pub fn is_unknown(&self) -> bool {
760 match self {
761 Self::__SourceBreaking { .. } => true,
762 _ => false,
763 }
764 }
765}
766
767impl fidl::Persistable for Task {}
768
769pub mod session_ordinals {
770 pub const CONFIGURE: u64 = 0x67e7e28a9b959ce8;
771 pub const START: u64 = 0x4e82f9133a968ad5;
772 pub const STOP: u64 = 0x76aa8dd59cb61e89;
773 pub const RESET: u64 = 0x5f522fde537356fa;
774}
775
776pub mod session_manager_ordinals {
777 pub const CONFIGURE: u64 = 0x67e7e28a9b959ce8;
778 pub const START: u64 = 0x4e82f9133a968ad5;
779 pub const STOP: u64 = 0x76aa8dd59cb61e89;
780 pub const RESET: u64 = 0x5f522fde537356fa;
781 pub const START_SESSION: u64 = 0x637a4c897f1a2964;
782 pub const STOP_SESSION: u64 = 0x1a05081e2b79f023;
783 pub const ABORT_SESSION: u64 = 0x6799fed94ce940be;
784 pub const STATUS: u64 = 0xc116d75f457cae2;
785 pub const START_SESSION_ON_BOOT: u64 = 0x3af30d4844fd015b;
786}
787
788mod internal {
789 use super::*;
790 unsafe impl fidl::encoding::TypeMarker for CallgraphStrategy {
791 type Owned = Self;
792
793 #[inline(always)]
794 fn inline_align(_context: fidl::encoding::Context) -> usize {
795 std::mem::align_of::<u8>()
796 }
797
798 #[inline(always)]
799 fn inline_size(_context: fidl::encoding::Context) -> usize {
800 std::mem::size_of::<u8>()
801 }
802
803 #[inline(always)]
804 fn encode_is_copy() -> bool {
805 false
806 }
807
808 #[inline(always)]
809 fn decode_is_copy() -> bool {
810 false
811 }
812 }
813
814 impl fidl::encoding::ValueTypeMarker for CallgraphStrategy {
815 type Borrowed<'a> = Self;
816 #[inline(always)]
817 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
818 *value
819 }
820 }
821
822 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
823 for CallgraphStrategy
824 {
825 #[inline]
826 unsafe fn encode(
827 self,
828 encoder: &mut fidl::encoding::Encoder<'_, D>,
829 offset: usize,
830 _depth: fidl::encoding::Depth,
831 ) -> fidl::Result<()> {
832 encoder.debug_check_bounds::<Self>(offset);
833 encoder.write_num(self.into_primitive(), offset);
834 Ok(())
835 }
836 }
837
838 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CallgraphStrategy {
839 #[inline(always)]
840 fn new_empty() -> Self {
841 Self::unknown()
842 }
843
844 #[inline]
845 unsafe fn decode(
846 &mut self,
847 decoder: &mut fidl::encoding::Decoder<'_, D>,
848 offset: usize,
849 _depth: fidl::encoding::Depth,
850 ) -> fidl::Result<()> {
851 decoder.debug_check_bounds::<Self>(offset);
852 let prim = decoder.read_num::<u8>(offset);
853
854 *self = Self::from_primitive_allow_unknown(prim);
855 Ok(())
856 }
857 }
858 unsafe impl fidl::encoding::TypeMarker for CounterId {
859 type Owned = Self;
860
861 #[inline(always)]
862 fn inline_align(_context: fidl::encoding::Context) -> usize {
863 std::mem::align_of::<u8>()
864 }
865
866 #[inline(always)]
867 fn inline_size(_context: fidl::encoding::Context) -> usize {
868 std::mem::size_of::<u8>()
869 }
870
871 #[inline(always)]
872 fn encode_is_copy() -> bool {
873 false
874 }
875
876 #[inline(always)]
877 fn decode_is_copy() -> bool {
878 false
879 }
880 }
881
882 impl fidl::encoding::ValueTypeMarker for CounterId {
883 type Borrowed<'a> = Self;
884 #[inline(always)]
885 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
886 *value
887 }
888 }
889
890 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for CounterId {
891 #[inline]
892 unsafe fn encode(
893 self,
894 encoder: &mut fidl::encoding::Encoder<'_, D>,
895 offset: usize,
896 _depth: fidl::encoding::Depth,
897 ) -> fidl::Result<()> {
898 encoder.debug_check_bounds::<Self>(offset);
899 encoder.write_num(self.into_primitive(), offset);
900 Ok(())
901 }
902 }
903
904 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CounterId {
905 #[inline(always)]
906 fn new_empty() -> Self {
907 Self::unknown()
908 }
909
910 #[inline]
911 unsafe fn decode(
912 &mut self,
913 decoder: &mut fidl::encoding::Decoder<'_, D>,
914 offset: usize,
915 _depth: fidl::encoding::Depth,
916 ) -> fidl::Result<()> {
917 decoder.debug_check_bounds::<Self>(offset);
918 let prim = decoder.read_num::<u8>(offset);
919
920 *self = Self::from_primitive_allow_unknown(prim);
921 Ok(())
922 }
923 }
924 unsafe impl fidl::encoding::TypeMarker for ManagerError {
925 type Owned = Self;
926
927 #[inline(always)]
928 fn inline_align(_context: fidl::encoding::Context) -> usize {
929 std::mem::align_of::<u32>()
930 }
931
932 #[inline(always)]
933 fn inline_size(_context: fidl::encoding::Context) -> usize {
934 std::mem::size_of::<u32>()
935 }
936
937 #[inline(always)]
938 fn encode_is_copy() -> bool {
939 false
940 }
941
942 #[inline(always)]
943 fn decode_is_copy() -> bool {
944 false
945 }
946 }
947
948 impl fidl::encoding::ValueTypeMarker for ManagerError {
949 type Borrowed<'a> = Self;
950 #[inline(always)]
951 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
952 *value
953 }
954 }
955
956 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ManagerError {
957 #[inline]
958 unsafe fn encode(
959 self,
960 encoder: &mut fidl::encoding::Encoder<'_, D>,
961 offset: usize,
962 _depth: fidl::encoding::Depth,
963 ) -> fidl::Result<()> {
964 encoder.debug_check_bounds::<Self>(offset);
965 encoder.write_num(self.into_primitive(), offset);
966 Ok(())
967 }
968 }
969
970 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ManagerError {
971 #[inline(always)]
972 fn new_empty() -> Self {
973 Self::unknown()
974 }
975
976 #[inline]
977 unsafe fn decode(
978 &mut self,
979 decoder: &mut fidl::encoding::Decoder<'_, D>,
980 offset: usize,
981 _depth: fidl::encoding::Depth,
982 ) -> fidl::Result<()> {
983 decoder.debug_check_bounds::<Self>(offset);
984 let prim = decoder.read_num::<u32>(offset);
985
986 *self = Self::from_primitive_allow_unknown(prim);
987 Ok(())
988 }
989 }
990 unsafe impl fidl::encoding::TypeMarker for SessionConfigureError {
991 type Owned = Self;
992
993 #[inline(always)]
994 fn inline_align(_context: fidl::encoding::Context) -> usize {
995 std::mem::align_of::<u32>()
996 }
997
998 #[inline(always)]
999 fn inline_size(_context: fidl::encoding::Context) -> usize {
1000 std::mem::size_of::<u32>()
1001 }
1002
1003 #[inline(always)]
1004 fn encode_is_copy() -> bool {
1005 false
1006 }
1007
1008 #[inline(always)]
1009 fn decode_is_copy() -> bool {
1010 false
1011 }
1012 }
1013
1014 impl fidl::encoding::ValueTypeMarker for SessionConfigureError {
1015 type Borrowed<'a> = Self;
1016 #[inline(always)]
1017 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1018 *value
1019 }
1020 }
1021
1022 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1023 for SessionConfigureError
1024 {
1025 #[inline]
1026 unsafe fn encode(
1027 self,
1028 encoder: &mut fidl::encoding::Encoder<'_, D>,
1029 offset: usize,
1030 _depth: fidl::encoding::Depth,
1031 ) -> fidl::Result<()> {
1032 encoder.debug_check_bounds::<Self>(offset);
1033 encoder.write_num(self.into_primitive(), offset);
1034 Ok(())
1035 }
1036 }
1037
1038 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SessionConfigureError {
1039 #[inline(always)]
1040 fn new_empty() -> Self {
1041 Self::unknown()
1042 }
1043
1044 #[inline]
1045 unsafe fn decode(
1046 &mut self,
1047 decoder: &mut fidl::encoding::Decoder<'_, D>,
1048 offset: usize,
1049 _depth: fidl::encoding::Depth,
1050 ) -> fidl::Result<()> {
1051 decoder.debug_check_bounds::<Self>(offset);
1052 let prim = decoder.read_num::<u32>(offset);
1053
1054 *self = Self::from_primitive_allow_unknown(prim);
1055 Ok(())
1056 }
1057 }
1058 unsafe impl fidl::encoding::TypeMarker for SessionStartError {
1059 type Owned = Self;
1060
1061 #[inline(always)]
1062 fn inline_align(_context: fidl::encoding::Context) -> usize {
1063 std::mem::align_of::<u32>()
1064 }
1065
1066 #[inline(always)]
1067 fn inline_size(_context: fidl::encoding::Context) -> usize {
1068 std::mem::size_of::<u32>()
1069 }
1070
1071 #[inline(always)]
1072 fn encode_is_copy() -> bool {
1073 false
1074 }
1075
1076 #[inline(always)]
1077 fn decode_is_copy() -> bool {
1078 false
1079 }
1080 }
1081
1082 impl fidl::encoding::ValueTypeMarker for SessionStartError {
1083 type Borrowed<'a> = Self;
1084 #[inline(always)]
1085 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1086 *value
1087 }
1088 }
1089
1090 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1091 for SessionStartError
1092 {
1093 #[inline]
1094 unsafe fn encode(
1095 self,
1096 encoder: &mut fidl::encoding::Encoder<'_, D>,
1097 offset: usize,
1098 _depth: fidl::encoding::Depth,
1099 ) -> fidl::Result<()> {
1100 encoder.debug_check_bounds::<Self>(offset);
1101 encoder.write_num(self.into_primitive(), offset);
1102 Ok(())
1103 }
1104 }
1105
1106 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SessionStartError {
1107 #[inline(always)]
1108 fn new_empty() -> Self {
1109 Self::unknown()
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 let prim = decoder.read_num::<u32>(offset);
1121
1122 *self = Self::from_primitive_allow_unknown(prim);
1123 Ok(())
1124 }
1125 }
1126
1127 impl fidl::encoding::ValueTypeMarker for SystemWide {
1128 type Borrowed<'a> = &'a Self;
1129 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1130 value
1131 }
1132 }
1133
1134 unsafe impl fidl::encoding::TypeMarker for SystemWide {
1135 type Owned = Self;
1136
1137 #[inline(always)]
1138 fn inline_align(_context: fidl::encoding::Context) -> usize {
1139 1
1140 }
1141
1142 #[inline(always)]
1143 fn inline_size(_context: fidl::encoding::Context) -> usize {
1144 1
1145 }
1146 }
1147
1148 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SystemWide, D>
1149 for &SystemWide
1150 {
1151 #[inline]
1152 unsafe fn encode(
1153 self,
1154 encoder: &mut fidl::encoding::Encoder<'_, D>,
1155 offset: usize,
1156 _depth: fidl::encoding::Depth,
1157 ) -> fidl::Result<()> {
1158 encoder.debug_check_bounds::<SystemWide>(offset);
1159 encoder.write_num(0u8, offset);
1160 Ok(())
1161 }
1162 }
1163
1164 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SystemWide {
1165 #[inline(always)]
1166 fn new_empty() -> Self {
1167 Self
1168 }
1169
1170 #[inline]
1171 unsafe fn decode(
1172 &mut self,
1173 decoder: &mut fidl::encoding::Decoder<'_, D>,
1174 offset: usize,
1175 _depth: fidl::encoding::Depth,
1176 ) -> fidl::Result<()> {
1177 decoder.debug_check_bounds::<Self>(offset);
1178 match decoder.read_num::<u8>(offset) {
1179 0 => Ok(()),
1180 _ => Err(fidl::Error::Invalid),
1181 }
1182 }
1183 }
1184
1185 impl CallgraphConfig {
1186 #[inline(always)]
1187 fn max_ordinal_present(&self) -> u64 {
1188 if let Some(_) = self.strategy {
1189 return 1;
1190 }
1191 0
1192 }
1193 }
1194
1195 impl fidl::encoding::ValueTypeMarker for CallgraphConfig {
1196 type Borrowed<'a> = &'a Self;
1197 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1198 value
1199 }
1200 }
1201
1202 unsafe impl fidl::encoding::TypeMarker for CallgraphConfig {
1203 type Owned = Self;
1204
1205 #[inline(always)]
1206 fn inline_align(_context: fidl::encoding::Context) -> usize {
1207 8
1208 }
1209
1210 #[inline(always)]
1211 fn inline_size(_context: fidl::encoding::Context) -> usize {
1212 16
1213 }
1214 }
1215
1216 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CallgraphConfig, D>
1217 for &CallgraphConfig
1218 {
1219 unsafe fn encode(
1220 self,
1221 encoder: &mut fidl::encoding::Encoder<'_, D>,
1222 offset: usize,
1223 mut depth: fidl::encoding::Depth,
1224 ) -> fidl::Result<()> {
1225 encoder.debug_check_bounds::<CallgraphConfig>(offset);
1226 let max_ordinal: u64 = self.max_ordinal_present();
1228 encoder.write_num(max_ordinal, offset);
1229 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1230 if max_ordinal == 0 {
1232 return Ok(());
1233 }
1234 depth.increment()?;
1235 let envelope_size = 8;
1236 let bytes_len = max_ordinal as usize * envelope_size;
1237 #[allow(unused_variables)]
1238 let offset = encoder.out_of_line_offset(bytes_len);
1239 let mut _prev_end_offset: usize = 0;
1240 if 1 > max_ordinal {
1241 return Ok(());
1242 }
1243
1244 let cur_offset: usize = (1 - 1) * envelope_size;
1247
1248 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1250
1251 fidl::encoding::encode_in_envelope_optional::<CallgraphStrategy, D>(
1256 self.strategy
1257 .as_ref()
1258 .map(<CallgraphStrategy as fidl::encoding::ValueTypeMarker>::borrow),
1259 encoder,
1260 offset + cur_offset,
1261 depth,
1262 )?;
1263
1264 _prev_end_offset = cur_offset + envelope_size;
1265
1266 Ok(())
1267 }
1268 }
1269
1270 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CallgraphConfig {
1271 #[inline(always)]
1272 fn new_empty() -> Self {
1273 Self::default()
1274 }
1275
1276 unsafe fn decode(
1277 &mut self,
1278 decoder: &mut fidl::encoding::Decoder<'_, D>,
1279 offset: usize,
1280 mut depth: fidl::encoding::Depth,
1281 ) -> fidl::Result<()> {
1282 decoder.debug_check_bounds::<Self>(offset);
1283 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1284 None => return Err(fidl::Error::NotNullable),
1285 Some(len) => len,
1286 };
1287 if len == 0 {
1289 return Ok(());
1290 };
1291 depth.increment()?;
1292 let envelope_size = 8;
1293 let bytes_len = len * envelope_size;
1294 let offset = decoder.out_of_line_offset(bytes_len)?;
1295 let mut _next_ordinal_to_read = 0;
1297 let mut next_offset = offset;
1298 let end_offset = offset + bytes_len;
1299 _next_ordinal_to_read += 1;
1300 if next_offset >= end_offset {
1301 return Ok(());
1302 }
1303
1304 while _next_ordinal_to_read < 1 {
1306 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1307 _next_ordinal_to_read += 1;
1308 next_offset += envelope_size;
1309 }
1310
1311 let next_out_of_line = decoder.next_out_of_line();
1312 let handles_before = decoder.remaining_handles();
1313 if let Some((inlined, num_bytes, num_handles)) =
1314 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1315 {
1316 let member_inline_size =
1317 <CallgraphStrategy as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1318 if inlined != (member_inline_size <= 4) {
1319 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1320 }
1321 let inner_offset;
1322 let mut inner_depth = depth.clone();
1323 if inlined {
1324 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1325 inner_offset = next_offset;
1326 } else {
1327 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1328 inner_depth.increment()?;
1329 }
1330 let val_ref =
1331 self.strategy.get_or_insert_with(|| fidl::new_empty!(CallgraphStrategy, D));
1332 fidl::decode!(CallgraphStrategy, D, val_ref, decoder, inner_offset, inner_depth)?;
1333 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1334 {
1335 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1336 }
1337 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1338 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1339 }
1340 }
1341
1342 next_offset += envelope_size;
1343
1344 while next_offset < end_offset {
1346 _next_ordinal_to_read += 1;
1347 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1348 next_offset += envelope_size;
1349 }
1350
1351 Ok(())
1352 }
1353 }
1354
1355 impl LaunchComponent {
1356 #[inline(always)]
1357 fn max_ordinal_present(&self) -> u64 {
1358 if let Some(_) = self.moniker {
1359 return 2;
1360 }
1361 if let Some(_) = self.url {
1362 return 1;
1363 }
1364 0
1365 }
1366 }
1367
1368 impl fidl::encoding::ValueTypeMarker for LaunchComponent {
1369 type Borrowed<'a> = &'a Self;
1370 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1371 value
1372 }
1373 }
1374
1375 unsafe impl fidl::encoding::TypeMarker for LaunchComponent {
1376 type Owned = Self;
1377
1378 #[inline(always)]
1379 fn inline_align(_context: fidl::encoding::Context) -> usize {
1380 8
1381 }
1382
1383 #[inline(always)]
1384 fn inline_size(_context: fidl::encoding::Context) -> usize {
1385 16
1386 }
1387 }
1388
1389 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LaunchComponent, D>
1390 for &LaunchComponent
1391 {
1392 unsafe fn encode(
1393 self,
1394 encoder: &mut fidl::encoding::Encoder<'_, D>,
1395 offset: usize,
1396 mut depth: fidl::encoding::Depth,
1397 ) -> fidl::Result<()> {
1398 encoder.debug_check_bounds::<LaunchComponent>(offset);
1399 let max_ordinal: u64 = self.max_ordinal_present();
1401 encoder.write_num(max_ordinal, offset);
1402 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1403 if max_ordinal == 0 {
1405 return Ok(());
1406 }
1407 depth.increment()?;
1408 let envelope_size = 8;
1409 let bytes_len = max_ordinal as usize * envelope_size;
1410 #[allow(unused_variables)]
1411 let offset = encoder.out_of_line_offset(bytes_len);
1412 let mut _prev_end_offset: usize = 0;
1413 if 1 > max_ordinal {
1414 return Ok(());
1415 }
1416
1417 let cur_offset: usize = (1 - 1) * envelope_size;
1420
1421 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1423
1424 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
1429 self.url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
1430 encoder, offset + cur_offset, depth
1431 )?;
1432
1433 _prev_end_offset = cur_offset + envelope_size;
1434 if 2 > max_ordinal {
1435 return Ok(());
1436 }
1437
1438 let cur_offset: usize = (2 - 1) * envelope_size;
1441
1442 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1444
1445 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
1450 self.moniker.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
1451 encoder, offset + cur_offset, depth
1452 )?;
1453
1454 _prev_end_offset = cur_offset + envelope_size;
1455
1456 Ok(())
1457 }
1458 }
1459
1460 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LaunchComponent {
1461 #[inline(always)]
1462 fn new_empty() -> Self {
1463 Self::default()
1464 }
1465
1466 unsafe fn decode(
1467 &mut self,
1468 decoder: &mut fidl::encoding::Decoder<'_, D>,
1469 offset: usize,
1470 mut depth: fidl::encoding::Depth,
1471 ) -> fidl::Result<()> {
1472 decoder.debug_check_bounds::<Self>(offset);
1473 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1474 None => return Err(fidl::Error::NotNullable),
1475 Some(len) => len,
1476 };
1477 if len == 0 {
1479 return Ok(());
1480 };
1481 depth.increment()?;
1482 let envelope_size = 8;
1483 let bytes_len = len * envelope_size;
1484 let offset = decoder.out_of_line_offset(bytes_len)?;
1485 let mut _next_ordinal_to_read = 0;
1487 let mut next_offset = offset;
1488 let end_offset = offset + bytes_len;
1489 _next_ordinal_to_read += 1;
1490 if next_offset >= end_offset {
1491 return Ok(());
1492 }
1493
1494 while _next_ordinal_to_read < 1 {
1496 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1497 _next_ordinal_to_read += 1;
1498 next_offset += envelope_size;
1499 }
1500
1501 let next_out_of_line = decoder.next_out_of_line();
1502 let handles_before = decoder.remaining_handles();
1503 if let Some((inlined, num_bytes, num_handles)) =
1504 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1505 {
1506 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1507 if inlined != (member_inline_size <= 4) {
1508 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1509 }
1510 let inner_offset;
1511 let mut inner_depth = depth.clone();
1512 if inlined {
1513 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1514 inner_offset = next_offset;
1515 } else {
1516 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1517 inner_depth.increment()?;
1518 }
1519 let val_ref = self.url.get_or_insert_with(|| {
1520 fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
1521 });
1522 fidl::decode!(
1523 fidl::encoding::BoundedString<4096>,
1524 D,
1525 val_ref,
1526 decoder,
1527 inner_offset,
1528 inner_depth
1529 )?;
1530 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1531 {
1532 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1533 }
1534 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1535 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1536 }
1537 }
1538
1539 next_offset += envelope_size;
1540 _next_ordinal_to_read += 1;
1541 if next_offset >= end_offset {
1542 return Ok(());
1543 }
1544
1545 while _next_ordinal_to_read < 2 {
1547 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1548 _next_ordinal_to_read += 1;
1549 next_offset += envelope_size;
1550 }
1551
1552 let next_out_of_line = decoder.next_out_of_line();
1553 let handles_before = decoder.remaining_handles();
1554 if let Some((inlined, num_bytes, num_handles)) =
1555 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1556 {
1557 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1558 if inlined != (member_inline_size <= 4) {
1559 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1560 }
1561 let inner_offset;
1562 let mut inner_depth = depth.clone();
1563 if inlined {
1564 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1565 inner_offset = next_offset;
1566 } else {
1567 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1568 inner_depth.increment()?;
1569 }
1570 let val_ref = self.moniker.get_or_insert_with(|| {
1571 fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
1572 });
1573 fidl::decode!(
1574 fidl::encoding::BoundedString<4096>,
1575 D,
1576 val_ref,
1577 decoder,
1578 inner_offset,
1579 inner_depth
1580 )?;
1581 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1582 {
1583 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1584 }
1585 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1586 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1587 }
1588 }
1589
1590 next_offset += envelope_size;
1591
1592 while next_offset < end_offset {
1594 _next_ordinal_to_read += 1;
1595 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1596 next_offset += envelope_size;
1597 }
1598
1599 Ok(())
1600 }
1601 }
1602
1603 impl OnBootConfig {
1604 #[inline(always)]
1605 fn max_ordinal_present(&self) -> u64 {
1606 if let Some(_) = self.target {
1607 return 2;
1608 }
1609 if let Some(_) = self.configs {
1610 return 1;
1611 }
1612 0
1613 }
1614 }
1615
1616 impl fidl::encoding::ValueTypeMarker for OnBootConfig {
1617 type Borrowed<'a> = &'a Self;
1618 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1619 value
1620 }
1621 }
1622
1623 unsafe impl fidl::encoding::TypeMarker for OnBootConfig {
1624 type Owned = Self;
1625
1626 #[inline(always)]
1627 fn inline_align(_context: fidl::encoding::Context) -> usize {
1628 8
1629 }
1630
1631 #[inline(always)]
1632 fn inline_size(_context: fidl::encoding::Context) -> usize {
1633 16
1634 }
1635 }
1636
1637 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OnBootConfig, D>
1638 for &OnBootConfig
1639 {
1640 unsafe fn encode(
1641 self,
1642 encoder: &mut fidl::encoding::Encoder<'_, D>,
1643 offset: usize,
1644 mut depth: fidl::encoding::Depth,
1645 ) -> fidl::Result<()> {
1646 encoder.debug_check_bounds::<OnBootConfig>(offset);
1647 let max_ordinal: u64 = self.max_ordinal_present();
1649 encoder.write_num(max_ordinal, offset);
1650 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1651 if max_ordinal == 0 {
1653 return Ok(());
1654 }
1655 depth.increment()?;
1656 let envelope_size = 8;
1657 let bytes_len = max_ordinal as usize * envelope_size;
1658 #[allow(unused_variables)]
1659 let offset = encoder.out_of_line_offset(bytes_len);
1660 let mut _prev_end_offset: usize = 0;
1661 if 1 > max_ordinal {
1662 return Ok(());
1663 }
1664
1665 let cur_offset: usize = (1 - 1) * envelope_size;
1668
1669 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1671
1672 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<SamplingConfig, 64>, D>(
1677 self.configs.as_ref().map(<fidl::encoding::Vector<SamplingConfig, 64> as fidl::encoding::ValueTypeMarker>::borrow),
1678 encoder, offset + cur_offset, depth
1679 )?;
1680
1681 _prev_end_offset = cur_offset + envelope_size;
1682 if 2 > max_ordinal {
1683 return Ok(());
1684 }
1685
1686 let cur_offset: usize = (2 - 1) * envelope_size;
1689
1690 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1692
1693 fidl::encoding::encode_in_envelope_optional::<OnBootTargetConfig, D>(
1698 self.target
1699 .as_ref()
1700 .map(<OnBootTargetConfig as fidl::encoding::ValueTypeMarker>::borrow),
1701 encoder,
1702 offset + cur_offset,
1703 depth,
1704 )?;
1705
1706 _prev_end_offset = cur_offset + envelope_size;
1707
1708 Ok(())
1709 }
1710 }
1711
1712 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OnBootConfig {
1713 #[inline(always)]
1714 fn new_empty() -> Self {
1715 Self::default()
1716 }
1717
1718 unsafe fn decode(
1719 &mut self,
1720 decoder: &mut fidl::encoding::Decoder<'_, D>,
1721 offset: usize,
1722 mut depth: fidl::encoding::Depth,
1723 ) -> fidl::Result<()> {
1724 decoder.debug_check_bounds::<Self>(offset);
1725 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1726 None => return Err(fidl::Error::NotNullable),
1727 Some(len) => len,
1728 };
1729 if len == 0 {
1731 return Ok(());
1732 };
1733 depth.increment()?;
1734 let envelope_size = 8;
1735 let bytes_len = len * envelope_size;
1736 let offset = decoder.out_of_line_offset(bytes_len)?;
1737 let mut _next_ordinal_to_read = 0;
1739 let mut next_offset = offset;
1740 let end_offset = offset + bytes_len;
1741 _next_ordinal_to_read += 1;
1742 if next_offset >= end_offset {
1743 return Ok(());
1744 }
1745
1746 while _next_ordinal_to_read < 1 {
1748 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1749 _next_ordinal_to_read += 1;
1750 next_offset += envelope_size;
1751 }
1752
1753 let next_out_of_line = decoder.next_out_of_line();
1754 let handles_before = decoder.remaining_handles();
1755 if let Some((inlined, num_bytes, num_handles)) =
1756 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1757 {
1758 let member_inline_size = <fidl::encoding::Vector<SamplingConfig, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1759 if inlined != (member_inline_size <= 4) {
1760 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1761 }
1762 let inner_offset;
1763 let mut inner_depth = depth.clone();
1764 if inlined {
1765 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1766 inner_offset = next_offset;
1767 } else {
1768 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1769 inner_depth.increment()?;
1770 }
1771 let val_ref = self.configs.get_or_insert_with(
1772 || fidl::new_empty!(fidl::encoding::Vector<SamplingConfig, 64>, D),
1773 );
1774 fidl::decode!(fidl::encoding::Vector<SamplingConfig, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
1775 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1776 {
1777 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1778 }
1779 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1780 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1781 }
1782 }
1783
1784 next_offset += envelope_size;
1785 _next_ordinal_to_read += 1;
1786 if next_offset >= end_offset {
1787 return Ok(());
1788 }
1789
1790 while _next_ordinal_to_read < 2 {
1792 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1793 _next_ordinal_to_read += 1;
1794 next_offset += envelope_size;
1795 }
1796
1797 let next_out_of_line = decoder.next_out_of_line();
1798 let handles_before = decoder.remaining_handles();
1799 if let Some((inlined, num_bytes, num_handles)) =
1800 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1801 {
1802 let member_inline_size =
1803 <OnBootTargetConfig as fidl::encoding::TypeMarker>::inline_size(
1804 decoder.context,
1805 );
1806 if inlined != (member_inline_size <= 4) {
1807 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1808 }
1809 let inner_offset;
1810 let mut inner_depth = depth.clone();
1811 if inlined {
1812 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1813 inner_offset = next_offset;
1814 } else {
1815 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1816 inner_depth.increment()?;
1817 }
1818 let val_ref =
1819 self.target.get_or_insert_with(|| fidl::new_empty!(OnBootTargetConfig, D));
1820 fidl::decode!(OnBootTargetConfig, D, val_ref, decoder, inner_offset, inner_depth)?;
1821 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1822 {
1823 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1824 }
1825 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1826 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1827 }
1828 }
1829
1830 next_offset += envelope_size;
1831
1832 while next_offset < end_offset {
1834 _next_ordinal_to_read += 1;
1835 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1836 next_offset += envelope_size;
1837 }
1838
1839 Ok(())
1840 }
1841 }
1842
1843 impl ProfilerStatus {
1844 #[inline(always)]
1845 fn max_ordinal_present(&self) -> u64 {
1846 if let Some(_) = self.task_id {
1847 return 1;
1848 }
1849 0
1850 }
1851 }
1852
1853 impl fidl::encoding::ValueTypeMarker for ProfilerStatus {
1854 type Borrowed<'a> = &'a Self;
1855 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1856 value
1857 }
1858 }
1859
1860 unsafe impl fidl::encoding::TypeMarker for ProfilerStatus {
1861 type Owned = Self;
1862
1863 #[inline(always)]
1864 fn inline_align(_context: fidl::encoding::Context) -> usize {
1865 8
1866 }
1867
1868 #[inline(always)]
1869 fn inline_size(_context: fidl::encoding::Context) -> usize {
1870 16
1871 }
1872 }
1873
1874 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProfilerStatus, D>
1875 for &ProfilerStatus
1876 {
1877 unsafe fn encode(
1878 self,
1879 encoder: &mut fidl::encoding::Encoder<'_, D>,
1880 offset: usize,
1881 mut depth: fidl::encoding::Depth,
1882 ) -> fidl::Result<()> {
1883 encoder.debug_check_bounds::<ProfilerStatus>(offset);
1884 let max_ordinal: u64 = self.max_ordinal_present();
1886 encoder.write_num(max_ordinal, offset);
1887 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1888 if max_ordinal == 0 {
1890 return Ok(());
1891 }
1892 depth.increment()?;
1893 let envelope_size = 8;
1894 let bytes_len = max_ordinal as usize * envelope_size;
1895 #[allow(unused_variables)]
1896 let offset = encoder.out_of_line_offset(bytes_len);
1897 let mut _prev_end_offset: usize = 0;
1898 if 1 > max_ordinal {
1899 return Ok(());
1900 }
1901
1902 let cur_offset: usize = (1 - 1) * envelope_size;
1905
1906 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1908
1909 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1914 self.task_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1915 encoder,
1916 offset + cur_offset,
1917 depth,
1918 )?;
1919
1920 _prev_end_offset = cur_offset + envelope_size;
1921
1922 Ok(())
1923 }
1924 }
1925
1926 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProfilerStatus {
1927 #[inline(always)]
1928 fn new_empty() -> Self {
1929 Self::default()
1930 }
1931
1932 unsafe fn decode(
1933 &mut self,
1934 decoder: &mut fidl::encoding::Decoder<'_, D>,
1935 offset: usize,
1936 mut depth: fidl::encoding::Depth,
1937 ) -> fidl::Result<()> {
1938 decoder.debug_check_bounds::<Self>(offset);
1939 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1940 None => return Err(fidl::Error::NotNullable),
1941 Some(len) => len,
1942 };
1943 if len == 0 {
1945 return Ok(());
1946 };
1947 depth.increment()?;
1948 let envelope_size = 8;
1949 let bytes_len = len * envelope_size;
1950 let offset = decoder.out_of_line_offset(bytes_len)?;
1951 let mut _next_ordinal_to_read = 0;
1953 let mut next_offset = offset;
1954 let end_offset = offset + bytes_len;
1955 _next_ordinal_to_read += 1;
1956 if next_offset >= end_offset {
1957 return Ok(());
1958 }
1959
1960 while _next_ordinal_to_read < 1 {
1962 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1963 _next_ordinal_to_read += 1;
1964 next_offset += envelope_size;
1965 }
1966
1967 let next_out_of_line = decoder.next_out_of_line();
1968 let handles_before = decoder.remaining_handles();
1969 if let Some((inlined, num_bytes, num_handles)) =
1970 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1971 {
1972 let member_inline_size =
1973 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1974 if inlined != (member_inline_size <= 4) {
1975 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1976 }
1977 let inner_offset;
1978 let mut inner_depth = depth.clone();
1979 if inlined {
1980 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1981 inner_offset = next_offset;
1982 } else {
1983 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1984 inner_depth.increment()?;
1985 }
1986 let val_ref = self.task_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
1987 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1988 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1989 {
1990 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1991 }
1992 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1993 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1994 }
1995 }
1996
1997 next_offset += envelope_size;
1998
1999 while next_offset < end_offset {
2001 _next_ordinal_to_read += 1;
2002 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2003 next_offset += envelope_size;
2004 }
2005
2006 Ok(())
2007 }
2008 }
2009
2010 impl Sample {
2011 #[inline(always)]
2012 fn max_ordinal_present(&self) -> u64 {
2013 if let Some(_) = self.counters {
2014 return 2;
2015 }
2016 if let Some(_) = self.callgraph {
2017 return 1;
2018 }
2019 0
2020 }
2021 }
2022
2023 impl fidl::encoding::ValueTypeMarker for Sample {
2024 type Borrowed<'a> = &'a Self;
2025 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2026 value
2027 }
2028 }
2029
2030 unsafe impl fidl::encoding::TypeMarker for Sample {
2031 type Owned = Self;
2032
2033 #[inline(always)]
2034 fn inline_align(_context: fidl::encoding::Context) -> usize {
2035 8
2036 }
2037
2038 #[inline(always)]
2039 fn inline_size(_context: fidl::encoding::Context) -> usize {
2040 16
2041 }
2042 }
2043
2044 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Sample, D> for &Sample {
2045 unsafe fn encode(
2046 self,
2047 encoder: &mut fidl::encoding::Encoder<'_, D>,
2048 offset: usize,
2049 mut depth: fidl::encoding::Depth,
2050 ) -> fidl::Result<()> {
2051 encoder.debug_check_bounds::<Sample>(offset);
2052 let max_ordinal: u64 = self.max_ordinal_present();
2054 encoder.write_num(max_ordinal, offset);
2055 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2056 if max_ordinal == 0 {
2058 return Ok(());
2059 }
2060 depth.increment()?;
2061 let envelope_size = 8;
2062 let bytes_len = max_ordinal as usize * envelope_size;
2063 #[allow(unused_variables)]
2064 let offset = encoder.out_of_line_offset(bytes_len);
2065 let mut _prev_end_offset: usize = 0;
2066 if 1 > max_ordinal {
2067 return Ok(());
2068 }
2069
2070 let cur_offset: usize = (1 - 1) * envelope_size;
2073
2074 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2076
2077 fidl::encoding::encode_in_envelope_optional::<CallgraphConfig, D>(
2082 self.callgraph
2083 .as_ref()
2084 .map(<CallgraphConfig as fidl::encoding::ValueTypeMarker>::borrow),
2085 encoder,
2086 offset + cur_offset,
2087 depth,
2088 )?;
2089
2090 _prev_end_offset = cur_offset + envelope_size;
2091 if 2 > max_ordinal {
2092 return Ok(());
2093 }
2094
2095 let cur_offset: usize = (2 - 1) * envelope_size;
2098
2099 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2101
2102 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<Counter, 64>, D>(
2107 self.counters.as_ref().map(<fidl::encoding::Vector<Counter, 64> as fidl::encoding::ValueTypeMarker>::borrow),
2108 encoder, offset + cur_offset, depth
2109 )?;
2110
2111 _prev_end_offset = cur_offset + envelope_size;
2112
2113 Ok(())
2114 }
2115 }
2116
2117 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Sample {
2118 #[inline(always)]
2119 fn new_empty() -> Self {
2120 Self::default()
2121 }
2122
2123 unsafe fn decode(
2124 &mut self,
2125 decoder: &mut fidl::encoding::Decoder<'_, D>,
2126 offset: usize,
2127 mut depth: fidl::encoding::Depth,
2128 ) -> fidl::Result<()> {
2129 decoder.debug_check_bounds::<Self>(offset);
2130 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2131 None => return Err(fidl::Error::NotNullable),
2132 Some(len) => len,
2133 };
2134 if len == 0 {
2136 return Ok(());
2137 };
2138 depth.increment()?;
2139 let envelope_size = 8;
2140 let bytes_len = len * envelope_size;
2141 let offset = decoder.out_of_line_offset(bytes_len)?;
2142 let mut _next_ordinal_to_read = 0;
2144 let mut next_offset = offset;
2145 let end_offset = offset + bytes_len;
2146 _next_ordinal_to_read += 1;
2147 if next_offset >= end_offset {
2148 return Ok(());
2149 }
2150
2151 while _next_ordinal_to_read < 1 {
2153 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2154 _next_ordinal_to_read += 1;
2155 next_offset += envelope_size;
2156 }
2157
2158 let next_out_of_line = decoder.next_out_of_line();
2159 let handles_before = decoder.remaining_handles();
2160 if let Some((inlined, num_bytes, num_handles)) =
2161 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2162 {
2163 let member_inline_size =
2164 <CallgraphConfig as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2165 if inlined != (member_inline_size <= 4) {
2166 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2167 }
2168 let inner_offset;
2169 let mut inner_depth = depth.clone();
2170 if inlined {
2171 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2172 inner_offset = next_offset;
2173 } else {
2174 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2175 inner_depth.increment()?;
2176 }
2177 let val_ref =
2178 self.callgraph.get_or_insert_with(|| fidl::new_empty!(CallgraphConfig, D));
2179 fidl::decode!(CallgraphConfig, D, val_ref, decoder, inner_offset, inner_depth)?;
2180 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2181 {
2182 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2183 }
2184 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2185 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2186 }
2187 }
2188
2189 next_offset += envelope_size;
2190 _next_ordinal_to_read += 1;
2191 if next_offset >= end_offset {
2192 return Ok(());
2193 }
2194
2195 while _next_ordinal_to_read < 2 {
2197 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2198 _next_ordinal_to_read += 1;
2199 next_offset += envelope_size;
2200 }
2201
2202 let next_out_of_line = decoder.next_out_of_line();
2203 let handles_before = decoder.remaining_handles();
2204 if let Some((inlined, num_bytes, num_handles)) =
2205 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2206 {
2207 let member_inline_size = <fidl::encoding::Vector<Counter, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2208 if inlined != (member_inline_size <= 4) {
2209 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2210 }
2211 let inner_offset;
2212 let mut inner_depth = depth.clone();
2213 if inlined {
2214 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2215 inner_offset = next_offset;
2216 } else {
2217 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2218 inner_depth.increment()?;
2219 }
2220 let val_ref = self.counters.get_or_insert_with(
2221 || fidl::new_empty!(fidl::encoding::Vector<Counter, 64>, D),
2222 );
2223 fidl::decode!(fidl::encoding::Vector<Counter, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
2224 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2225 {
2226 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2227 }
2228 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2229 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2230 }
2231 }
2232
2233 next_offset += envelope_size;
2234
2235 while next_offset < end_offset {
2237 _next_ordinal_to_read += 1;
2238 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2239 next_offset += envelope_size;
2240 }
2241
2242 Ok(())
2243 }
2244 }
2245
2246 impl SamplingConfig {
2247 #[inline(always)]
2248 fn max_ordinal_present(&self) -> u64 {
2249 if let Some(_) = self.sample {
2250 return 3;
2251 }
2252 if let Some(_) = self.timebase {
2253 return 2;
2254 }
2255 if let Some(_) = self.period {
2256 return 1;
2257 }
2258 0
2259 }
2260 }
2261
2262 impl fidl::encoding::ValueTypeMarker for SamplingConfig {
2263 type Borrowed<'a> = &'a Self;
2264 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2265 value
2266 }
2267 }
2268
2269 unsafe impl fidl::encoding::TypeMarker for SamplingConfig {
2270 type Owned = Self;
2271
2272 #[inline(always)]
2273 fn inline_align(_context: fidl::encoding::Context) -> usize {
2274 8
2275 }
2276
2277 #[inline(always)]
2278 fn inline_size(_context: fidl::encoding::Context) -> usize {
2279 16
2280 }
2281 }
2282
2283 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SamplingConfig, D>
2284 for &SamplingConfig
2285 {
2286 unsafe fn encode(
2287 self,
2288 encoder: &mut fidl::encoding::Encoder<'_, D>,
2289 offset: usize,
2290 mut depth: fidl::encoding::Depth,
2291 ) -> fidl::Result<()> {
2292 encoder.debug_check_bounds::<SamplingConfig>(offset);
2293 let max_ordinal: u64 = self.max_ordinal_present();
2295 encoder.write_num(max_ordinal, offset);
2296 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2297 if max_ordinal == 0 {
2299 return Ok(());
2300 }
2301 depth.increment()?;
2302 let envelope_size = 8;
2303 let bytes_len = max_ordinal as usize * envelope_size;
2304 #[allow(unused_variables)]
2305 let offset = encoder.out_of_line_offset(bytes_len);
2306 let mut _prev_end_offset: usize = 0;
2307 if 1 > max_ordinal {
2308 return Ok(());
2309 }
2310
2311 let cur_offset: usize = (1 - 1) * envelope_size;
2314
2315 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2317
2318 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2323 self.period.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2324 encoder,
2325 offset + cur_offset,
2326 depth,
2327 )?;
2328
2329 _prev_end_offset = cur_offset + envelope_size;
2330 if 2 > max_ordinal {
2331 return Ok(());
2332 }
2333
2334 let cur_offset: usize = (2 - 1) * envelope_size;
2337
2338 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2340
2341 fidl::encoding::encode_in_envelope_optional::<Counter, D>(
2346 self.timebase.as_ref().map(<Counter as fidl::encoding::ValueTypeMarker>::borrow),
2347 encoder,
2348 offset + cur_offset,
2349 depth,
2350 )?;
2351
2352 _prev_end_offset = cur_offset + envelope_size;
2353 if 3 > max_ordinal {
2354 return Ok(());
2355 }
2356
2357 let cur_offset: usize = (3 - 1) * envelope_size;
2360
2361 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2363
2364 fidl::encoding::encode_in_envelope_optional::<Sample, D>(
2369 self.sample.as_ref().map(<Sample as fidl::encoding::ValueTypeMarker>::borrow),
2370 encoder,
2371 offset + cur_offset,
2372 depth,
2373 )?;
2374
2375 _prev_end_offset = cur_offset + envelope_size;
2376
2377 Ok(())
2378 }
2379 }
2380
2381 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SamplingConfig {
2382 #[inline(always)]
2383 fn new_empty() -> Self {
2384 Self::default()
2385 }
2386
2387 unsafe fn decode(
2388 &mut self,
2389 decoder: &mut fidl::encoding::Decoder<'_, D>,
2390 offset: usize,
2391 mut depth: fidl::encoding::Depth,
2392 ) -> fidl::Result<()> {
2393 decoder.debug_check_bounds::<Self>(offset);
2394 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2395 None => return Err(fidl::Error::NotNullable),
2396 Some(len) => len,
2397 };
2398 if len == 0 {
2400 return Ok(());
2401 };
2402 depth.increment()?;
2403 let envelope_size = 8;
2404 let bytes_len = len * envelope_size;
2405 let offset = decoder.out_of_line_offset(bytes_len)?;
2406 let mut _next_ordinal_to_read = 0;
2408 let mut next_offset = offset;
2409 let end_offset = offset + bytes_len;
2410 _next_ordinal_to_read += 1;
2411 if next_offset >= end_offset {
2412 return Ok(());
2413 }
2414
2415 while _next_ordinal_to_read < 1 {
2417 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2418 _next_ordinal_to_read += 1;
2419 next_offset += envelope_size;
2420 }
2421
2422 let next_out_of_line = decoder.next_out_of_line();
2423 let handles_before = decoder.remaining_handles();
2424 if let Some((inlined, num_bytes, num_handles)) =
2425 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2426 {
2427 let member_inline_size =
2428 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2429 if inlined != (member_inline_size <= 4) {
2430 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2431 }
2432 let inner_offset;
2433 let mut inner_depth = depth.clone();
2434 if inlined {
2435 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2436 inner_offset = next_offset;
2437 } else {
2438 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2439 inner_depth.increment()?;
2440 }
2441 let val_ref = self.period.get_or_insert_with(|| fidl::new_empty!(u64, D));
2442 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2443 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2444 {
2445 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2446 }
2447 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2448 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2449 }
2450 }
2451
2452 next_offset += envelope_size;
2453 _next_ordinal_to_read += 1;
2454 if next_offset >= end_offset {
2455 return Ok(());
2456 }
2457
2458 while _next_ordinal_to_read < 2 {
2460 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2461 _next_ordinal_to_read += 1;
2462 next_offset += envelope_size;
2463 }
2464
2465 let next_out_of_line = decoder.next_out_of_line();
2466 let handles_before = decoder.remaining_handles();
2467 if let Some((inlined, num_bytes, num_handles)) =
2468 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2469 {
2470 let member_inline_size =
2471 <Counter as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2472 if inlined != (member_inline_size <= 4) {
2473 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2474 }
2475 let inner_offset;
2476 let mut inner_depth = depth.clone();
2477 if inlined {
2478 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2479 inner_offset = next_offset;
2480 } else {
2481 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2482 inner_depth.increment()?;
2483 }
2484 let val_ref = self.timebase.get_or_insert_with(|| fidl::new_empty!(Counter, D));
2485 fidl::decode!(Counter, D, val_ref, decoder, inner_offset, inner_depth)?;
2486 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2487 {
2488 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2489 }
2490 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2491 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2492 }
2493 }
2494
2495 next_offset += envelope_size;
2496 _next_ordinal_to_read += 1;
2497 if next_offset >= end_offset {
2498 return Ok(());
2499 }
2500
2501 while _next_ordinal_to_read < 3 {
2503 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2504 _next_ordinal_to_read += 1;
2505 next_offset += envelope_size;
2506 }
2507
2508 let next_out_of_line = decoder.next_out_of_line();
2509 let handles_before = decoder.remaining_handles();
2510 if let Some((inlined, num_bytes, num_handles)) =
2511 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2512 {
2513 let member_inline_size =
2514 <Sample as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2515 if inlined != (member_inline_size <= 4) {
2516 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2517 }
2518 let inner_offset;
2519 let mut inner_depth = depth.clone();
2520 if inlined {
2521 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2522 inner_offset = next_offset;
2523 } else {
2524 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2525 inner_depth.increment()?;
2526 }
2527 let val_ref = self.sample.get_or_insert_with(|| fidl::new_empty!(Sample, D));
2528 fidl::decode!(Sample, D, val_ref, decoder, inner_offset, inner_depth)?;
2529 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2530 {
2531 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2532 }
2533 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2534 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2535 }
2536 }
2537
2538 next_offset += envelope_size;
2539
2540 while next_offset < end_offset {
2542 _next_ordinal_to_read += 1;
2543 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2544 next_offset += envelope_size;
2545 }
2546
2547 Ok(())
2548 }
2549 }
2550
2551 impl SessionManagerAbortSessionRequest {
2552 #[inline(always)]
2553 fn max_ordinal_present(&self) -> u64 {
2554 if let Some(_) = self.task_id {
2555 return 1;
2556 }
2557 0
2558 }
2559 }
2560
2561 impl fidl::encoding::ValueTypeMarker for SessionManagerAbortSessionRequest {
2562 type Borrowed<'a> = &'a Self;
2563 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2564 value
2565 }
2566 }
2567
2568 unsafe impl fidl::encoding::TypeMarker for SessionManagerAbortSessionRequest {
2569 type Owned = Self;
2570
2571 #[inline(always)]
2572 fn inline_align(_context: fidl::encoding::Context) -> usize {
2573 8
2574 }
2575
2576 #[inline(always)]
2577 fn inline_size(_context: fidl::encoding::Context) -> usize {
2578 16
2579 }
2580 }
2581
2582 unsafe impl<D: fidl::encoding::ResourceDialect>
2583 fidl::encoding::Encode<SessionManagerAbortSessionRequest, D>
2584 for &SessionManagerAbortSessionRequest
2585 {
2586 unsafe fn encode(
2587 self,
2588 encoder: &mut fidl::encoding::Encoder<'_, D>,
2589 offset: usize,
2590 mut depth: fidl::encoding::Depth,
2591 ) -> fidl::Result<()> {
2592 encoder.debug_check_bounds::<SessionManagerAbortSessionRequest>(offset);
2593 let max_ordinal: u64 = self.max_ordinal_present();
2595 encoder.write_num(max_ordinal, offset);
2596 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2597 if max_ordinal == 0 {
2599 return Ok(());
2600 }
2601 depth.increment()?;
2602 let envelope_size = 8;
2603 let bytes_len = max_ordinal as usize * envelope_size;
2604 #[allow(unused_variables)]
2605 let offset = encoder.out_of_line_offset(bytes_len);
2606 let mut _prev_end_offset: usize = 0;
2607 if 1 > max_ordinal {
2608 return Ok(());
2609 }
2610
2611 let cur_offset: usize = (1 - 1) * envelope_size;
2614
2615 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2617
2618 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2623 self.task_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2624 encoder,
2625 offset + cur_offset,
2626 depth,
2627 )?;
2628
2629 _prev_end_offset = cur_offset + envelope_size;
2630
2631 Ok(())
2632 }
2633 }
2634
2635 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2636 for SessionManagerAbortSessionRequest
2637 {
2638 #[inline(always)]
2639 fn new_empty() -> Self {
2640 Self::default()
2641 }
2642
2643 unsafe fn decode(
2644 &mut self,
2645 decoder: &mut fidl::encoding::Decoder<'_, D>,
2646 offset: usize,
2647 mut depth: fidl::encoding::Depth,
2648 ) -> fidl::Result<()> {
2649 decoder.debug_check_bounds::<Self>(offset);
2650 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2651 None => return Err(fidl::Error::NotNullable),
2652 Some(len) => len,
2653 };
2654 if len == 0 {
2656 return Ok(());
2657 };
2658 depth.increment()?;
2659 let envelope_size = 8;
2660 let bytes_len = len * envelope_size;
2661 let offset = decoder.out_of_line_offset(bytes_len)?;
2662 let mut _next_ordinal_to_read = 0;
2664 let mut next_offset = offset;
2665 let end_offset = offset + bytes_len;
2666 _next_ordinal_to_read += 1;
2667 if next_offset >= end_offset {
2668 return Ok(());
2669 }
2670
2671 while _next_ordinal_to_read < 1 {
2673 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2674 _next_ordinal_to_read += 1;
2675 next_offset += envelope_size;
2676 }
2677
2678 let next_out_of_line = decoder.next_out_of_line();
2679 let handles_before = decoder.remaining_handles();
2680 if let Some((inlined, num_bytes, num_handles)) =
2681 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2682 {
2683 let member_inline_size =
2684 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2685 if inlined != (member_inline_size <= 4) {
2686 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2687 }
2688 let inner_offset;
2689 let mut inner_depth = depth.clone();
2690 if inlined {
2691 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2692 inner_offset = next_offset;
2693 } else {
2694 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2695 inner_depth.increment()?;
2696 }
2697 let val_ref = self.task_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
2698 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2699 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2700 {
2701 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2702 }
2703 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2704 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2705 }
2706 }
2707
2708 next_offset += envelope_size;
2709
2710 while next_offset < end_offset {
2712 _next_ordinal_to_read += 1;
2713 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2714 next_offset += envelope_size;
2715 }
2716
2717 Ok(())
2718 }
2719 }
2720
2721 impl SessionManagerStartSessionOnBootRequest {
2722 #[inline(always)]
2723 fn max_ordinal_present(&self) -> u64 {
2724 if let Some(_) = self.config {
2725 return 1;
2726 }
2727 0
2728 }
2729 }
2730
2731 impl fidl::encoding::ValueTypeMarker for SessionManagerStartSessionOnBootRequest {
2732 type Borrowed<'a> = &'a Self;
2733 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2734 value
2735 }
2736 }
2737
2738 unsafe impl fidl::encoding::TypeMarker for SessionManagerStartSessionOnBootRequest {
2739 type Owned = Self;
2740
2741 #[inline(always)]
2742 fn inline_align(_context: fidl::encoding::Context) -> usize {
2743 8
2744 }
2745
2746 #[inline(always)]
2747 fn inline_size(_context: fidl::encoding::Context) -> usize {
2748 16
2749 }
2750 }
2751
2752 unsafe impl<D: fidl::encoding::ResourceDialect>
2753 fidl::encoding::Encode<SessionManagerStartSessionOnBootRequest, D>
2754 for &SessionManagerStartSessionOnBootRequest
2755 {
2756 unsafe fn encode(
2757 self,
2758 encoder: &mut fidl::encoding::Encoder<'_, D>,
2759 offset: usize,
2760 mut depth: fidl::encoding::Depth,
2761 ) -> fidl::Result<()> {
2762 encoder.debug_check_bounds::<SessionManagerStartSessionOnBootRequest>(offset);
2763 let max_ordinal: u64 = self.max_ordinal_present();
2765 encoder.write_num(max_ordinal, offset);
2766 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2767 if max_ordinal == 0 {
2769 return Ok(());
2770 }
2771 depth.increment()?;
2772 let envelope_size = 8;
2773 let bytes_len = max_ordinal as usize * envelope_size;
2774 #[allow(unused_variables)]
2775 let offset = encoder.out_of_line_offset(bytes_len);
2776 let mut _prev_end_offset: usize = 0;
2777 if 1 > max_ordinal {
2778 return Ok(());
2779 }
2780
2781 let cur_offset: usize = (1 - 1) * envelope_size;
2784
2785 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2787
2788 fidl::encoding::encode_in_envelope_optional::<OnBootConfig, D>(
2793 self.config.as_ref().map(<OnBootConfig as fidl::encoding::ValueTypeMarker>::borrow),
2794 encoder,
2795 offset + cur_offset,
2796 depth,
2797 )?;
2798
2799 _prev_end_offset = cur_offset + envelope_size;
2800
2801 Ok(())
2802 }
2803 }
2804
2805 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2806 for SessionManagerStartSessionOnBootRequest
2807 {
2808 #[inline(always)]
2809 fn new_empty() -> Self {
2810 Self::default()
2811 }
2812
2813 unsafe fn decode(
2814 &mut self,
2815 decoder: &mut fidl::encoding::Decoder<'_, D>,
2816 offset: usize,
2817 mut depth: fidl::encoding::Depth,
2818 ) -> fidl::Result<()> {
2819 decoder.debug_check_bounds::<Self>(offset);
2820 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2821 None => return Err(fidl::Error::NotNullable),
2822 Some(len) => len,
2823 };
2824 if len == 0 {
2826 return Ok(());
2827 };
2828 depth.increment()?;
2829 let envelope_size = 8;
2830 let bytes_len = len * envelope_size;
2831 let offset = decoder.out_of_line_offset(bytes_len)?;
2832 let mut _next_ordinal_to_read = 0;
2834 let mut next_offset = offset;
2835 let end_offset = offset + bytes_len;
2836 _next_ordinal_to_read += 1;
2837 if next_offset >= end_offset {
2838 return Ok(());
2839 }
2840
2841 while _next_ordinal_to_read < 1 {
2843 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2844 _next_ordinal_to_read += 1;
2845 next_offset += envelope_size;
2846 }
2847
2848 let next_out_of_line = decoder.next_out_of_line();
2849 let handles_before = decoder.remaining_handles();
2850 if let Some((inlined, num_bytes, num_handles)) =
2851 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2852 {
2853 let member_inline_size =
2854 <OnBootConfig as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2855 if inlined != (member_inline_size <= 4) {
2856 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2857 }
2858 let inner_offset;
2859 let mut inner_depth = depth.clone();
2860 if inlined {
2861 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2862 inner_offset = next_offset;
2863 } else {
2864 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2865 inner_depth.increment()?;
2866 }
2867 let val_ref = self.config.get_or_insert_with(|| fidl::new_empty!(OnBootConfig, D));
2868 fidl::decode!(OnBootConfig, D, val_ref, decoder, inner_offset, inner_depth)?;
2869 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2870 {
2871 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2872 }
2873 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2874 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2875 }
2876 }
2877
2878 next_offset += envelope_size;
2879
2880 while next_offset < end_offset {
2882 _next_ordinal_to_read += 1;
2883 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2884 next_offset += envelope_size;
2885 }
2886
2887 Ok(())
2888 }
2889 }
2890
2891 impl SessionManagerStartSessionResponse {
2892 #[inline(always)]
2893 fn max_ordinal_present(&self) -> u64 {
2894 if let Some(_) = self.task_id {
2895 return 1;
2896 }
2897 0
2898 }
2899 }
2900
2901 impl fidl::encoding::ValueTypeMarker for SessionManagerStartSessionResponse {
2902 type Borrowed<'a> = &'a Self;
2903 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2904 value
2905 }
2906 }
2907
2908 unsafe impl fidl::encoding::TypeMarker for SessionManagerStartSessionResponse {
2909 type Owned = Self;
2910
2911 #[inline(always)]
2912 fn inline_align(_context: fidl::encoding::Context) -> usize {
2913 8
2914 }
2915
2916 #[inline(always)]
2917 fn inline_size(_context: fidl::encoding::Context) -> usize {
2918 16
2919 }
2920 }
2921
2922 unsafe impl<D: fidl::encoding::ResourceDialect>
2923 fidl::encoding::Encode<SessionManagerStartSessionResponse, D>
2924 for &SessionManagerStartSessionResponse
2925 {
2926 unsafe fn encode(
2927 self,
2928 encoder: &mut fidl::encoding::Encoder<'_, D>,
2929 offset: usize,
2930 mut depth: fidl::encoding::Depth,
2931 ) -> fidl::Result<()> {
2932 encoder.debug_check_bounds::<SessionManagerStartSessionResponse>(offset);
2933 let max_ordinal: u64 = self.max_ordinal_present();
2935 encoder.write_num(max_ordinal, offset);
2936 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2937 if max_ordinal == 0 {
2939 return Ok(());
2940 }
2941 depth.increment()?;
2942 let envelope_size = 8;
2943 let bytes_len = max_ordinal as usize * envelope_size;
2944 #[allow(unused_variables)]
2945 let offset = encoder.out_of_line_offset(bytes_len);
2946 let mut _prev_end_offset: usize = 0;
2947 if 1 > max_ordinal {
2948 return Ok(());
2949 }
2950
2951 let cur_offset: usize = (1 - 1) * envelope_size;
2954
2955 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2957
2958 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2963 self.task_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2964 encoder,
2965 offset + cur_offset,
2966 depth,
2967 )?;
2968
2969 _prev_end_offset = cur_offset + envelope_size;
2970
2971 Ok(())
2972 }
2973 }
2974
2975 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2976 for SessionManagerStartSessionResponse
2977 {
2978 #[inline(always)]
2979 fn new_empty() -> Self {
2980 Self::default()
2981 }
2982
2983 unsafe fn decode(
2984 &mut self,
2985 decoder: &mut fidl::encoding::Decoder<'_, D>,
2986 offset: usize,
2987 mut depth: fidl::encoding::Depth,
2988 ) -> fidl::Result<()> {
2989 decoder.debug_check_bounds::<Self>(offset);
2990 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2991 None => return Err(fidl::Error::NotNullable),
2992 Some(len) => len,
2993 };
2994 if len == 0 {
2996 return Ok(());
2997 };
2998 depth.increment()?;
2999 let envelope_size = 8;
3000 let bytes_len = len * envelope_size;
3001 let offset = decoder.out_of_line_offset(bytes_len)?;
3002 let mut _next_ordinal_to_read = 0;
3004 let mut next_offset = offset;
3005 let end_offset = offset + bytes_len;
3006 _next_ordinal_to_read += 1;
3007 if next_offset >= end_offset {
3008 return Ok(());
3009 }
3010
3011 while _next_ordinal_to_read < 1 {
3013 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3014 _next_ordinal_to_read += 1;
3015 next_offset += envelope_size;
3016 }
3017
3018 let next_out_of_line = decoder.next_out_of_line();
3019 let handles_before = decoder.remaining_handles();
3020 if let Some((inlined, num_bytes, num_handles)) =
3021 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3022 {
3023 let member_inline_size =
3024 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3025 if inlined != (member_inline_size <= 4) {
3026 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3027 }
3028 let inner_offset;
3029 let mut inner_depth = depth.clone();
3030 if inlined {
3031 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3032 inner_offset = next_offset;
3033 } else {
3034 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3035 inner_depth.increment()?;
3036 }
3037 let val_ref = self.task_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
3038 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3039 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3040 {
3041 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3042 }
3043 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3044 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3045 }
3046 }
3047
3048 next_offset += envelope_size;
3049
3050 while next_offset < end_offset {
3052 _next_ordinal_to_read += 1;
3053 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3054 next_offset += envelope_size;
3055 }
3056
3057 Ok(())
3058 }
3059 }
3060
3061 impl SessionManagerStatusResponse {
3062 #[inline(always)]
3063 fn max_ordinal_present(&self) -> u64 {
3064 if let Some(_) = self.sessions {
3065 return 1;
3066 }
3067 0
3068 }
3069 }
3070
3071 impl fidl::encoding::ValueTypeMarker for SessionManagerStatusResponse {
3072 type Borrowed<'a> = &'a Self;
3073 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3074 value
3075 }
3076 }
3077
3078 unsafe impl fidl::encoding::TypeMarker for SessionManagerStatusResponse {
3079 type Owned = Self;
3080
3081 #[inline(always)]
3082 fn inline_align(_context: fidl::encoding::Context) -> usize {
3083 8
3084 }
3085
3086 #[inline(always)]
3087 fn inline_size(_context: fidl::encoding::Context) -> usize {
3088 16
3089 }
3090 }
3091
3092 unsafe impl<D: fidl::encoding::ResourceDialect>
3093 fidl::encoding::Encode<SessionManagerStatusResponse, D> for &SessionManagerStatusResponse
3094 {
3095 unsafe fn encode(
3096 self,
3097 encoder: &mut fidl::encoding::Encoder<'_, D>,
3098 offset: usize,
3099 mut depth: fidl::encoding::Depth,
3100 ) -> fidl::Result<()> {
3101 encoder.debug_check_bounds::<SessionManagerStatusResponse>(offset);
3102 let max_ordinal: u64 = self.max_ordinal_present();
3104 encoder.write_num(max_ordinal, offset);
3105 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3106 if max_ordinal == 0 {
3108 return Ok(());
3109 }
3110 depth.increment()?;
3111 let envelope_size = 8;
3112 let bytes_len = max_ordinal as usize * envelope_size;
3113 #[allow(unused_variables)]
3114 let offset = encoder.out_of_line_offset(bytes_len);
3115 let mut _prev_end_offset: usize = 0;
3116 if 1 > max_ordinal {
3117 return Ok(());
3118 }
3119
3120 let cur_offset: usize = (1 - 1) * envelope_size;
3123
3124 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3126
3127 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ProfilerStatus>, D>(
3132 self.sessions.as_ref().map(<fidl::encoding::UnboundedVector<ProfilerStatus> as fidl::encoding::ValueTypeMarker>::borrow),
3133 encoder, offset + cur_offset, depth
3134 )?;
3135
3136 _prev_end_offset = cur_offset + envelope_size;
3137
3138 Ok(())
3139 }
3140 }
3141
3142 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3143 for SessionManagerStatusResponse
3144 {
3145 #[inline(always)]
3146 fn new_empty() -> Self {
3147 Self::default()
3148 }
3149
3150 unsafe fn decode(
3151 &mut self,
3152 decoder: &mut fidl::encoding::Decoder<'_, D>,
3153 offset: usize,
3154 mut depth: fidl::encoding::Depth,
3155 ) -> fidl::Result<()> {
3156 decoder.debug_check_bounds::<Self>(offset);
3157 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3158 None => return Err(fidl::Error::NotNullable),
3159 Some(len) => len,
3160 };
3161 if len == 0 {
3163 return Ok(());
3164 };
3165 depth.increment()?;
3166 let envelope_size = 8;
3167 let bytes_len = len * envelope_size;
3168 let offset = decoder.out_of_line_offset(bytes_len)?;
3169 let mut _next_ordinal_to_read = 0;
3171 let mut next_offset = offset;
3172 let end_offset = offset + bytes_len;
3173 _next_ordinal_to_read += 1;
3174 if next_offset >= end_offset {
3175 return Ok(());
3176 }
3177
3178 while _next_ordinal_to_read < 1 {
3180 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3181 _next_ordinal_to_read += 1;
3182 next_offset += envelope_size;
3183 }
3184
3185 let next_out_of_line = decoder.next_out_of_line();
3186 let handles_before = decoder.remaining_handles();
3187 if let Some((inlined, num_bytes, num_handles)) =
3188 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3189 {
3190 let member_inline_size = <fidl::encoding::UnboundedVector<ProfilerStatus> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3191 if inlined != (member_inline_size <= 4) {
3192 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3193 }
3194 let inner_offset;
3195 let mut inner_depth = depth.clone();
3196 if inlined {
3197 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3198 inner_offset = next_offset;
3199 } else {
3200 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3201 inner_depth.increment()?;
3202 }
3203 let val_ref = self.sessions.get_or_insert_with(|| {
3204 fidl::new_empty!(fidl::encoding::UnboundedVector<ProfilerStatus>, D)
3205 });
3206 fidl::decode!(
3207 fidl::encoding::UnboundedVector<ProfilerStatus>,
3208 D,
3209 val_ref,
3210 decoder,
3211 inner_offset,
3212 inner_depth
3213 )?;
3214 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3215 {
3216 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3217 }
3218 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3219 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3220 }
3221 }
3222
3223 next_offset += envelope_size;
3224
3225 while next_offset < end_offset {
3227 _next_ordinal_to_read += 1;
3228 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3229 next_offset += envelope_size;
3230 }
3231
3232 Ok(())
3233 }
3234 }
3235
3236 impl SessionResult {
3237 #[inline(always)]
3238 fn max_ordinal_present(&self) -> u64 {
3239 if let Some(_) = self.missing_process_mappings {
3240 return 6;
3241 }
3242 if let Some(_) = self.max_sample_time {
3243 return 5;
3244 }
3245 if let Some(_) = self.min_sample_time {
3246 return 4;
3247 }
3248 if let Some(_) = self.median_sample_time {
3249 return 3;
3250 }
3251 if let Some(_) = self.mean_sample_time {
3252 return 2;
3253 }
3254 if let Some(_) = self.samples_collected {
3255 return 1;
3256 }
3257 0
3258 }
3259 }
3260
3261 impl fidl::encoding::ValueTypeMarker for SessionResult {
3262 type Borrowed<'a> = &'a Self;
3263 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3264 value
3265 }
3266 }
3267
3268 unsafe impl fidl::encoding::TypeMarker for SessionResult {
3269 type Owned = Self;
3270
3271 #[inline(always)]
3272 fn inline_align(_context: fidl::encoding::Context) -> usize {
3273 8
3274 }
3275
3276 #[inline(always)]
3277 fn inline_size(_context: fidl::encoding::Context) -> usize {
3278 16
3279 }
3280 }
3281
3282 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SessionResult, D>
3283 for &SessionResult
3284 {
3285 unsafe fn encode(
3286 self,
3287 encoder: &mut fidl::encoding::Encoder<'_, D>,
3288 offset: usize,
3289 mut depth: fidl::encoding::Depth,
3290 ) -> fidl::Result<()> {
3291 encoder.debug_check_bounds::<SessionResult>(offset);
3292 let max_ordinal: u64 = self.max_ordinal_present();
3294 encoder.write_num(max_ordinal, offset);
3295 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3296 if max_ordinal == 0 {
3298 return Ok(());
3299 }
3300 depth.increment()?;
3301 let envelope_size = 8;
3302 let bytes_len = max_ordinal as usize * envelope_size;
3303 #[allow(unused_variables)]
3304 let offset = encoder.out_of_line_offset(bytes_len);
3305 let mut _prev_end_offset: usize = 0;
3306 if 1 > max_ordinal {
3307 return Ok(());
3308 }
3309
3310 let cur_offset: usize = (1 - 1) * envelope_size;
3313
3314 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3316
3317 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3322 self.samples_collected
3323 .as_ref()
3324 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3325 encoder,
3326 offset + cur_offset,
3327 depth,
3328 )?;
3329
3330 _prev_end_offset = cur_offset + envelope_size;
3331 if 2 > max_ordinal {
3332 return Ok(());
3333 }
3334
3335 let cur_offset: usize = (2 - 1) * envelope_size;
3338
3339 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3341
3342 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3347 self.mean_sample_time
3348 .as_ref()
3349 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3350 encoder,
3351 offset + cur_offset,
3352 depth,
3353 )?;
3354
3355 _prev_end_offset = cur_offset + envelope_size;
3356 if 3 > max_ordinal {
3357 return Ok(());
3358 }
3359
3360 let cur_offset: usize = (3 - 1) * envelope_size;
3363
3364 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3366
3367 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3372 self.median_sample_time
3373 .as_ref()
3374 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3375 encoder,
3376 offset + cur_offset,
3377 depth,
3378 )?;
3379
3380 _prev_end_offset = cur_offset + envelope_size;
3381 if 4 > max_ordinal {
3382 return Ok(());
3383 }
3384
3385 let cur_offset: usize = (4 - 1) * envelope_size;
3388
3389 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3391
3392 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3397 self.min_sample_time.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3398 encoder,
3399 offset + cur_offset,
3400 depth,
3401 )?;
3402
3403 _prev_end_offset = cur_offset + envelope_size;
3404 if 5 > max_ordinal {
3405 return Ok(());
3406 }
3407
3408 let cur_offset: usize = (5 - 1) * envelope_size;
3411
3412 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3414
3415 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3420 self.max_sample_time.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3421 encoder,
3422 offset + cur_offset,
3423 depth,
3424 )?;
3425
3426 _prev_end_offset = cur_offset + envelope_size;
3427 if 6 > max_ordinal {
3428 return Ok(());
3429 }
3430
3431 let cur_offset: usize = (6 - 1) * envelope_size;
3434
3435 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3437
3438 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u64>, D>(
3443 self.missing_process_mappings.as_ref().map(<fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow),
3444 encoder, offset + cur_offset, depth
3445 )?;
3446
3447 _prev_end_offset = cur_offset + envelope_size;
3448
3449 Ok(())
3450 }
3451 }
3452
3453 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SessionResult {
3454 #[inline(always)]
3455 fn new_empty() -> Self {
3456 Self::default()
3457 }
3458
3459 unsafe fn decode(
3460 &mut self,
3461 decoder: &mut fidl::encoding::Decoder<'_, D>,
3462 offset: usize,
3463 mut depth: fidl::encoding::Depth,
3464 ) -> fidl::Result<()> {
3465 decoder.debug_check_bounds::<Self>(offset);
3466 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3467 None => return Err(fidl::Error::NotNullable),
3468 Some(len) => len,
3469 };
3470 if len == 0 {
3472 return Ok(());
3473 };
3474 depth.increment()?;
3475 let envelope_size = 8;
3476 let bytes_len = len * envelope_size;
3477 let offset = decoder.out_of_line_offset(bytes_len)?;
3478 let mut _next_ordinal_to_read = 0;
3480 let mut next_offset = offset;
3481 let end_offset = offset + bytes_len;
3482 _next_ordinal_to_read += 1;
3483 if next_offset >= end_offset {
3484 return Ok(());
3485 }
3486
3487 while _next_ordinal_to_read < 1 {
3489 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3490 _next_ordinal_to_read += 1;
3491 next_offset += envelope_size;
3492 }
3493
3494 let next_out_of_line = decoder.next_out_of_line();
3495 let handles_before = decoder.remaining_handles();
3496 if let Some((inlined, num_bytes, num_handles)) =
3497 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3498 {
3499 let member_inline_size =
3500 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3501 if inlined != (member_inline_size <= 4) {
3502 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3503 }
3504 let inner_offset;
3505 let mut inner_depth = depth.clone();
3506 if inlined {
3507 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3508 inner_offset = next_offset;
3509 } else {
3510 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3511 inner_depth.increment()?;
3512 }
3513 let val_ref =
3514 self.samples_collected.get_or_insert_with(|| fidl::new_empty!(u64, D));
3515 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3516 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3517 {
3518 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3519 }
3520 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3521 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3522 }
3523 }
3524
3525 next_offset += envelope_size;
3526 _next_ordinal_to_read += 1;
3527 if next_offset >= end_offset {
3528 return Ok(());
3529 }
3530
3531 while _next_ordinal_to_read < 2 {
3533 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3534 _next_ordinal_to_read += 1;
3535 next_offset += envelope_size;
3536 }
3537
3538 let next_out_of_line = decoder.next_out_of_line();
3539 let handles_before = decoder.remaining_handles();
3540 if let Some((inlined, num_bytes, num_handles)) =
3541 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3542 {
3543 let member_inline_size =
3544 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3545 if inlined != (member_inline_size <= 4) {
3546 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3547 }
3548 let inner_offset;
3549 let mut inner_depth = depth.clone();
3550 if inlined {
3551 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3552 inner_offset = next_offset;
3553 } else {
3554 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3555 inner_depth.increment()?;
3556 }
3557 let val_ref = self.mean_sample_time.get_or_insert_with(|| fidl::new_empty!(u64, D));
3558 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3559 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3560 {
3561 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3562 }
3563 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3564 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3565 }
3566 }
3567
3568 next_offset += envelope_size;
3569 _next_ordinal_to_read += 1;
3570 if next_offset >= end_offset {
3571 return Ok(());
3572 }
3573
3574 while _next_ordinal_to_read < 3 {
3576 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3577 _next_ordinal_to_read += 1;
3578 next_offset += envelope_size;
3579 }
3580
3581 let next_out_of_line = decoder.next_out_of_line();
3582 let handles_before = decoder.remaining_handles();
3583 if let Some((inlined, num_bytes, num_handles)) =
3584 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3585 {
3586 let member_inline_size =
3587 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3588 if inlined != (member_inline_size <= 4) {
3589 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3590 }
3591 let inner_offset;
3592 let mut inner_depth = depth.clone();
3593 if inlined {
3594 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3595 inner_offset = next_offset;
3596 } else {
3597 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3598 inner_depth.increment()?;
3599 }
3600 let val_ref =
3601 self.median_sample_time.get_or_insert_with(|| fidl::new_empty!(u64, D));
3602 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3603 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3604 {
3605 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3606 }
3607 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3608 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3609 }
3610 }
3611
3612 next_offset += envelope_size;
3613 _next_ordinal_to_read += 1;
3614 if next_offset >= end_offset {
3615 return Ok(());
3616 }
3617
3618 while _next_ordinal_to_read < 4 {
3620 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3621 _next_ordinal_to_read += 1;
3622 next_offset += envelope_size;
3623 }
3624
3625 let next_out_of_line = decoder.next_out_of_line();
3626 let handles_before = decoder.remaining_handles();
3627 if let Some((inlined, num_bytes, num_handles)) =
3628 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3629 {
3630 let member_inline_size =
3631 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3632 if inlined != (member_inline_size <= 4) {
3633 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3634 }
3635 let inner_offset;
3636 let mut inner_depth = depth.clone();
3637 if inlined {
3638 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3639 inner_offset = next_offset;
3640 } else {
3641 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3642 inner_depth.increment()?;
3643 }
3644 let val_ref = self.min_sample_time.get_or_insert_with(|| fidl::new_empty!(u64, D));
3645 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3646 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3647 {
3648 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3649 }
3650 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3651 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3652 }
3653 }
3654
3655 next_offset += envelope_size;
3656 _next_ordinal_to_read += 1;
3657 if next_offset >= end_offset {
3658 return Ok(());
3659 }
3660
3661 while _next_ordinal_to_read < 5 {
3663 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3664 _next_ordinal_to_read += 1;
3665 next_offset += envelope_size;
3666 }
3667
3668 let next_out_of_line = decoder.next_out_of_line();
3669 let handles_before = decoder.remaining_handles();
3670 if let Some((inlined, num_bytes, num_handles)) =
3671 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3672 {
3673 let member_inline_size =
3674 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3675 if inlined != (member_inline_size <= 4) {
3676 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3677 }
3678 let inner_offset;
3679 let mut inner_depth = depth.clone();
3680 if inlined {
3681 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3682 inner_offset = next_offset;
3683 } else {
3684 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3685 inner_depth.increment()?;
3686 }
3687 let val_ref = self.max_sample_time.get_or_insert_with(|| fidl::new_empty!(u64, D));
3688 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3689 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3690 {
3691 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3692 }
3693 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3694 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3695 }
3696 }
3697
3698 next_offset += envelope_size;
3699 _next_ordinal_to_read += 1;
3700 if next_offset >= end_offset {
3701 return Ok(());
3702 }
3703
3704 while _next_ordinal_to_read < 6 {
3706 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3707 _next_ordinal_to_read += 1;
3708 next_offset += envelope_size;
3709 }
3710
3711 let next_out_of_line = decoder.next_out_of_line();
3712 let handles_before = decoder.remaining_handles();
3713 if let Some((inlined, num_bytes, num_handles)) =
3714 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3715 {
3716 let member_inline_size = <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3717 if inlined != (member_inline_size <= 4) {
3718 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3719 }
3720 let inner_offset;
3721 let mut inner_depth = depth.clone();
3722 if inlined {
3723 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3724 inner_offset = next_offset;
3725 } else {
3726 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3727 inner_depth.increment()?;
3728 }
3729 let val_ref = self.missing_process_mappings.get_or_insert_with(|| {
3730 fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D)
3731 });
3732 fidl::decode!(
3733 fidl::encoding::UnboundedVector<u64>,
3734 D,
3735 val_ref,
3736 decoder,
3737 inner_offset,
3738 inner_depth
3739 )?;
3740 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3741 {
3742 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3743 }
3744 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3745 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3746 }
3747 }
3748
3749 next_offset += envelope_size;
3750
3751 while next_offset < end_offset {
3753 _next_ordinal_to_read += 1;
3754 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3755 next_offset += envelope_size;
3756 }
3757
3758 Ok(())
3759 }
3760 }
3761
3762 impl SessionStartRequest {
3763 #[inline(always)]
3764 fn max_ordinal_present(&self) -> u64 {
3765 if let Some(_) = self.buffer_results {
3766 return 2;
3767 }
3768 if let Some(_) = self.buffer_size_mb {
3769 return 1;
3770 }
3771 0
3772 }
3773 }
3774
3775 impl fidl::encoding::ValueTypeMarker for SessionStartRequest {
3776 type Borrowed<'a> = &'a Self;
3777 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3778 value
3779 }
3780 }
3781
3782 unsafe impl fidl::encoding::TypeMarker for SessionStartRequest {
3783 type Owned = Self;
3784
3785 #[inline(always)]
3786 fn inline_align(_context: fidl::encoding::Context) -> usize {
3787 8
3788 }
3789
3790 #[inline(always)]
3791 fn inline_size(_context: fidl::encoding::Context) -> usize {
3792 16
3793 }
3794 }
3795
3796 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SessionStartRequest, D>
3797 for &SessionStartRequest
3798 {
3799 unsafe fn encode(
3800 self,
3801 encoder: &mut fidl::encoding::Encoder<'_, D>,
3802 offset: usize,
3803 mut depth: fidl::encoding::Depth,
3804 ) -> fidl::Result<()> {
3805 encoder.debug_check_bounds::<SessionStartRequest>(offset);
3806 let max_ordinal: u64 = self.max_ordinal_present();
3808 encoder.write_num(max_ordinal, offset);
3809 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3810 if max_ordinal == 0 {
3812 return Ok(());
3813 }
3814 depth.increment()?;
3815 let envelope_size = 8;
3816 let bytes_len = max_ordinal as usize * envelope_size;
3817 #[allow(unused_variables)]
3818 let offset = encoder.out_of_line_offset(bytes_len);
3819 let mut _prev_end_offset: usize = 0;
3820 if 1 > max_ordinal {
3821 return Ok(());
3822 }
3823
3824 let cur_offset: usize = (1 - 1) * envelope_size;
3827
3828 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3830
3831 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3836 self.buffer_size_mb.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3837 encoder,
3838 offset + cur_offset,
3839 depth,
3840 )?;
3841
3842 _prev_end_offset = cur_offset + envelope_size;
3843 if 2 > max_ordinal {
3844 return Ok(());
3845 }
3846
3847 let cur_offset: usize = (2 - 1) * envelope_size;
3850
3851 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3853
3854 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3859 self.buffer_results.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3860 encoder,
3861 offset + cur_offset,
3862 depth,
3863 )?;
3864
3865 _prev_end_offset = cur_offset + envelope_size;
3866
3867 Ok(())
3868 }
3869 }
3870
3871 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SessionStartRequest {
3872 #[inline(always)]
3873 fn new_empty() -> Self {
3874 Self::default()
3875 }
3876
3877 unsafe fn decode(
3878 &mut self,
3879 decoder: &mut fidl::encoding::Decoder<'_, D>,
3880 offset: usize,
3881 mut depth: fidl::encoding::Depth,
3882 ) -> fidl::Result<()> {
3883 decoder.debug_check_bounds::<Self>(offset);
3884 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3885 None => return Err(fidl::Error::NotNullable),
3886 Some(len) => len,
3887 };
3888 if len == 0 {
3890 return Ok(());
3891 };
3892 depth.increment()?;
3893 let envelope_size = 8;
3894 let bytes_len = len * envelope_size;
3895 let offset = decoder.out_of_line_offset(bytes_len)?;
3896 let mut _next_ordinal_to_read = 0;
3898 let mut next_offset = offset;
3899 let end_offset = offset + bytes_len;
3900 _next_ordinal_to_read += 1;
3901 if next_offset >= end_offset {
3902 return Ok(());
3903 }
3904
3905 while _next_ordinal_to_read < 1 {
3907 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3908 _next_ordinal_to_read += 1;
3909 next_offset += envelope_size;
3910 }
3911
3912 let next_out_of_line = decoder.next_out_of_line();
3913 let handles_before = decoder.remaining_handles();
3914 if let Some((inlined, num_bytes, num_handles)) =
3915 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3916 {
3917 let member_inline_size =
3918 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3919 if inlined != (member_inline_size <= 4) {
3920 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3921 }
3922 let inner_offset;
3923 let mut inner_depth = depth.clone();
3924 if inlined {
3925 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3926 inner_offset = next_offset;
3927 } else {
3928 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3929 inner_depth.increment()?;
3930 }
3931 let val_ref = self.buffer_size_mb.get_or_insert_with(|| fidl::new_empty!(u64, D));
3932 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3933 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3934 {
3935 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3936 }
3937 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3938 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3939 }
3940 }
3941
3942 next_offset += envelope_size;
3943 _next_ordinal_to_read += 1;
3944 if next_offset >= end_offset {
3945 return Ok(());
3946 }
3947
3948 while _next_ordinal_to_read < 2 {
3950 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3951 _next_ordinal_to_read += 1;
3952 next_offset += envelope_size;
3953 }
3954
3955 let next_out_of_line = decoder.next_out_of_line();
3956 let handles_before = decoder.remaining_handles();
3957 if let Some((inlined, num_bytes, num_handles)) =
3958 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3959 {
3960 let member_inline_size =
3961 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3962 if inlined != (member_inline_size <= 4) {
3963 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3964 }
3965 let inner_offset;
3966 let mut inner_depth = depth.clone();
3967 if inlined {
3968 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3969 inner_offset = next_offset;
3970 } else {
3971 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3972 inner_depth.increment()?;
3973 }
3974 let val_ref = self.buffer_results.get_or_insert_with(|| fidl::new_empty!(bool, D));
3975 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3976 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3977 {
3978 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3979 }
3980 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3981 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3982 }
3983 }
3984
3985 next_offset += envelope_size;
3986
3987 while next_offset < end_offset {
3989 _next_ordinal_to_read += 1;
3990 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3991 next_offset += envelope_size;
3992 }
3993
3994 Ok(())
3995 }
3996 }
3997
3998 impl fidl::encoding::ValueTypeMarker for Counter {
3999 type Borrowed<'a> = &'a Self;
4000 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4001 value
4002 }
4003 }
4004
4005 unsafe impl fidl::encoding::TypeMarker for Counter {
4006 type Owned = Self;
4007
4008 #[inline(always)]
4009 fn inline_align(_context: fidl::encoding::Context) -> usize {
4010 8
4011 }
4012
4013 #[inline(always)]
4014 fn inline_size(_context: fidl::encoding::Context) -> usize {
4015 16
4016 }
4017 }
4018
4019 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Counter, D> for &Counter {
4020 #[inline]
4021 unsafe fn encode(
4022 self,
4023 encoder: &mut fidl::encoding::Encoder<'_, D>,
4024 offset: usize,
4025 _depth: fidl::encoding::Depth,
4026 ) -> fidl::Result<()> {
4027 encoder.debug_check_bounds::<Counter>(offset);
4028 encoder.write_num::<u64>(self.ordinal(), offset);
4029 match self {
4030 Counter::PlatformIndependent(ref val) => {
4031 fidl::encoding::encode_in_envelope::<CounterId, D>(
4032 <CounterId as fidl::encoding::ValueTypeMarker>::borrow(val),
4033 encoder,
4034 offset + 8,
4035 _depth,
4036 )
4037 }
4038 Counter::PlatformDependent(ref val) => {
4039 fidl::encoding::encode_in_envelope::<u32, D>(
4040 <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
4041 encoder,
4042 offset + 8,
4043 _depth,
4044 )
4045 }
4046 Counter::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
4047 }
4048 }
4049 }
4050
4051 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Counter {
4052 #[inline(always)]
4053 fn new_empty() -> Self {
4054 Self::__SourceBreaking { unknown_ordinal: 0 }
4055 }
4056
4057 #[inline]
4058 unsafe fn decode(
4059 &mut self,
4060 decoder: &mut fidl::encoding::Decoder<'_, D>,
4061 offset: usize,
4062 mut depth: fidl::encoding::Depth,
4063 ) -> fidl::Result<()> {
4064 decoder.debug_check_bounds::<Self>(offset);
4065 #[allow(unused_variables)]
4066 let next_out_of_line = decoder.next_out_of_line();
4067 let handles_before = decoder.remaining_handles();
4068 let (ordinal, inlined, num_bytes, num_handles) =
4069 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
4070
4071 let member_inline_size = match ordinal {
4072 1 => <CounterId as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4073 2 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4074 0 => return Err(fidl::Error::UnknownUnionTag),
4075 _ => num_bytes as usize,
4076 };
4077
4078 if inlined != (member_inline_size <= 4) {
4079 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4080 }
4081 let _inner_offset;
4082 if inlined {
4083 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
4084 _inner_offset = offset + 8;
4085 } else {
4086 depth.increment()?;
4087 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4088 }
4089 match ordinal {
4090 1 => {
4091 #[allow(irrefutable_let_patterns)]
4092 if let Counter::PlatformIndependent(_) = self {
4093 } else {
4095 *self = Counter::PlatformIndependent(fidl::new_empty!(CounterId, D));
4097 }
4098 #[allow(irrefutable_let_patterns)]
4099 if let Counter::PlatformIndependent(ref mut val) = self {
4100 fidl::decode!(CounterId, D, val, decoder, _inner_offset, depth)?;
4101 } else {
4102 unreachable!()
4103 }
4104 }
4105 2 => {
4106 #[allow(irrefutable_let_patterns)]
4107 if let Counter::PlatformDependent(_) = self {
4108 } else {
4110 *self = Counter::PlatformDependent(fidl::new_empty!(u32, D));
4112 }
4113 #[allow(irrefutable_let_patterns)]
4114 if let Counter::PlatformDependent(ref mut val) = self {
4115 fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
4116 } else {
4117 unreachable!()
4118 }
4119 }
4120 #[allow(deprecated)]
4121 ordinal => {
4122 for _ in 0..num_handles {
4123 decoder.drop_next_handle()?;
4124 }
4125 *self = Counter::__SourceBreaking { unknown_ordinal: ordinal };
4126 }
4127 }
4128 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
4129 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4130 }
4131 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4132 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4133 }
4134 Ok(())
4135 }
4136 }
4137
4138 impl fidl::encoding::ValueTypeMarker for OnBootAttachConfig {
4139 type Borrowed<'a> = &'a Self;
4140 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4141 value
4142 }
4143 }
4144
4145 unsafe impl fidl::encoding::TypeMarker for OnBootAttachConfig {
4146 type Owned = Self;
4147
4148 #[inline(always)]
4149 fn inline_align(_context: fidl::encoding::Context) -> usize {
4150 8
4151 }
4152
4153 #[inline(always)]
4154 fn inline_size(_context: fidl::encoding::Context) -> usize {
4155 16
4156 }
4157 }
4158
4159 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OnBootAttachConfig, D>
4160 for &OnBootAttachConfig
4161 {
4162 #[inline]
4163 unsafe fn encode(
4164 self,
4165 encoder: &mut fidl::encoding::Encoder<'_, D>,
4166 offset: usize,
4167 _depth: fidl::encoding::Depth,
4168 ) -> fidl::Result<()> {
4169 encoder.debug_check_bounds::<OnBootAttachConfig>(offset);
4170 encoder.write_num::<u64>(self.ordinal(), offset);
4171 match self {
4172 OnBootAttachConfig::AttachToComponentMoniker(ref val) => {
4173 fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<4096>, D>(
4174 <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(val),
4175 encoder, offset + 8, _depth
4176 )
4177 }
4178 OnBootAttachConfig::AttachToComponentUrl(ref val) => {
4179 fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<4096>, D>(
4180 <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(val),
4181 encoder, offset + 8, _depth
4182 )
4183 }
4184 OnBootAttachConfig::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
4185 }
4186 }
4187 }
4188
4189 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OnBootAttachConfig {
4190 #[inline(always)]
4191 fn new_empty() -> Self {
4192 Self::__SourceBreaking { unknown_ordinal: 0 }
4193 }
4194
4195 #[inline]
4196 unsafe fn decode(
4197 &mut self,
4198 decoder: &mut fidl::encoding::Decoder<'_, D>,
4199 offset: usize,
4200 mut depth: fidl::encoding::Depth,
4201 ) -> fidl::Result<()> {
4202 decoder.debug_check_bounds::<Self>(offset);
4203 #[allow(unused_variables)]
4204 let next_out_of_line = decoder.next_out_of_line();
4205 let handles_before = decoder.remaining_handles();
4206 let (ordinal, inlined, num_bytes, num_handles) =
4207 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
4208
4209 let member_inline_size = match ordinal {
4210 1 => {
4211 <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(
4212 decoder.context,
4213 )
4214 }
4215 2 => {
4216 <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(
4217 decoder.context,
4218 )
4219 }
4220 0 => return Err(fidl::Error::UnknownUnionTag),
4221 _ => num_bytes as usize,
4222 };
4223
4224 if inlined != (member_inline_size <= 4) {
4225 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4226 }
4227 let _inner_offset;
4228 if inlined {
4229 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
4230 _inner_offset = offset + 8;
4231 } else {
4232 depth.increment()?;
4233 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4234 }
4235 match ordinal {
4236 1 => {
4237 #[allow(irrefutable_let_patterns)]
4238 if let OnBootAttachConfig::AttachToComponentMoniker(_) = self {
4239 } else {
4241 *self = OnBootAttachConfig::AttachToComponentMoniker(fidl::new_empty!(
4243 fidl::encoding::BoundedString<4096>,
4244 D
4245 ));
4246 }
4247 #[allow(irrefutable_let_patterns)]
4248 if let OnBootAttachConfig::AttachToComponentMoniker(ref mut val) = self {
4249 fidl::decode!(
4250 fidl::encoding::BoundedString<4096>,
4251 D,
4252 val,
4253 decoder,
4254 _inner_offset,
4255 depth
4256 )?;
4257 } else {
4258 unreachable!()
4259 }
4260 }
4261 2 => {
4262 #[allow(irrefutable_let_patterns)]
4263 if let OnBootAttachConfig::AttachToComponentUrl(_) = self {
4264 } else {
4266 *self = OnBootAttachConfig::AttachToComponentUrl(fidl::new_empty!(
4268 fidl::encoding::BoundedString<4096>,
4269 D
4270 ));
4271 }
4272 #[allow(irrefutable_let_patterns)]
4273 if let OnBootAttachConfig::AttachToComponentUrl(ref mut val) = self {
4274 fidl::decode!(
4275 fidl::encoding::BoundedString<4096>,
4276 D,
4277 val,
4278 decoder,
4279 _inner_offset,
4280 depth
4281 )?;
4282 } else {
4283 unreachable!()
4284 }
4285 }
4286 #[allow(deprecated)]
4287 ordinal => {
4288 for _ in 0..num_handles {
4289 decoder.drop_next_handle()?;
4290 }
4291 *self = OnBootAttachConfig::__SourceBreaking { unknown_ordinal: ordinal };
4292 }
4293 }
4294 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
4295 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4296 }
4297 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4298 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4299 }
4300 Ok(())
4301 }
4302 }
4303
4304 impl fidl::encoding::ValueTypeMarker for OnBootTargetConfig {
4305 type Borrowed<'a> = &'a Self;
4306 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4307 value
4308 }
4309 }
4310
4311 unsafe impl fidl::encoding::TypeMarker for OnBootTargetConfig {
4312 type Owned = Self;
4313
4314 #[inline(always)]
4315 fn inline_align(_context: fidl::encoding::Context) -> usize {
4316 8
4317 }
4318
4319 #[inline(always)]
4320 fn inline_size(_context: fidl::encoding::Context) -> usize {
4321 16
4322 }
4323 }
4324
4325 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OnBootTargetConfig, D>
4326 for &OnBootTargetConfig
4327 {
4328 #[inline]
4329 unsafe fn encode(
4330 self,
4331 encoder: &mut fidl::encoding::Encoder<'_, D>,
4332 offset: usize,
4333 _depth: fidl::encoding::Depth,
4334 ) -> fidl::Result<()> {
4335 encoder.debug_check_bounds::<OnBootTargetConfig>(offset);
4336 encoder.write_num::<u64>(self.ordinal(), offset);
4337 match self {
4338 OnBootTargetConfig::Tasks(ref val) => fidl::encoding::encode_in_envelope::<
4339 fidl::encoding::Vector<Task, 64>,
4340 D,
4341 >(
4342 <fidl::encoding::Vector<Task, 64> as fidl::encoding::ValueTypeMarker>::borrow(
4343 val,
4344 ),
4345 encoder,
4346 offset + 8,
4347 _depth,
4348 ),
4349 OnBootTargetConfig::Component(ref val) => {
4350 fidl::encoding::encode_in_envelope::<OnBootAttachConfig, D>(
4351 <OnBootAttachConfig as fidl::encoding::ValueTypeMarker>::borrow(val),
4352 encoder,
4353 offset + 8,
4354 _depth,
4355 )
4356 }
4357 OnBootTargetConfig::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
4358 }
4359 }
4360 }
4361
4362 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OnBootTargetConfig {
4363 #[inline(always)]
4364 fn new_empty() -> Self {
4365 Self::__SourceBreaking { unknown_ordinal: 0 }
4366 }
4367
4368 #[inline]
4369 unsafe fn decode(
4370 &mut self,
4371 decoder: &mut fidl::encoding::Decoder<'_, D>,
4372 offset: usize,
4373 mut depth: fidl::encoding::Depth,
4374 ) -> fidl::Result<()> {
4375 decoder.debug_check_bounds::<Self>(offset);
4376 #[allow(unused_variables)]
4377 let next_out_of_line = decoder.next_out_of_line();
4378 let handles_before = decoder.remaining_handles();
4379 let (ordinal, inlined, num_bytes, num_handles) =
4380 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
4381
4382 let member_inline_size = match ordinal {
4383 1 => <fidl::encoding::Vector<Task, 64> as fidl::encoding::TypeMarker>::inline_size(
4384 decoder.context,
4385 ),
4386 2 => {
4387 <OnBootAttachConfig as fidl::encoding::TypeMarker>::inline_size(decoder.context)
4388 }
4389 0 => return Err(fidl::Error::UnknownUnionTag),
4390 _ => num_bytes as usize,
4391 };
4392
4393 if inlined != (member_inline_size <= 4) {
4394 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4395 }
4396 let _inner_offset;
4397 if inlined {
4398 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
4399 _inner_offset = offset + 8;
4400 } else {
4401 depth.increment()?;
4402 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4403 }
4404 match ordinal {
4405 1 => {
4406 #[allow(irrefutable_let_patterns)]
4407 if let OnBootTargetConfig::Tasks(_) = self {
4408 } else {
4410 *self = OnBootTargetConfig::Tasks(
4412 fidl::new_empty!(fidl::encoding::Vector<Task, 64>, D),
4413 );
4414 }
4415 #[allow(irrefutable_let_patterns)]
4416 if let OnBootTargetConfig::Tasks(ref mut val) = self {
4417 fidl::decode!(fidl::encoding::Vector<Task, 64>, D, val, decoder, _inner_offset, depth)?;
4418 } else {
4419 unreachable!()
4420 }
4421 }
4422 2 => {
4423 #[allow(irrefutable_let_patterns)]
4424 if let OnBootTargetConfig::Component(_) = self {
4425 } else {
4427 *self =
4429 OnBootTargetConfig::Component(fidl::new_empty!(OnBootAttachConfig, D));
4430 }
4431 #[allow(irrefutable_let_patterns)]
4432 if let OnBootTargetConfig::Component(ref mut val) = self {
4433 fidl::decode!(OnBootAttachConfig, D, val, decoder, _inner_offset, depth)?;
4434 } else {
4435 unreachable!()
4436 }
4437 }
4438 #[allow(deprecated)]
4439 ordinal => {
4440 for _ in 0..num_handles {
4441 decoder.drop_next_handle()?;
4442 }
4443 *self = OnBootTargetConfig::__SourceBreaking { unknown_ordinal: ordinal };
4444 }
4445 }
4446 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
4447 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4448 }
4449 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4450 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4451 }
4452 Ok(())
4453 }
4454 }
4455
4456 impl fidl::encoding::ValueTypeMarker for Task {
4457 type Borrowed<'a> = &'a Self;
4458 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4459 value
4460 }
4461 }
4462
4463 unsafe impl fidl::encoding::TypeMarker for Task {
4464 type Owned = Self;
4465
4466 #[inline(always)]
4467 fn inline_align(_context: fidl::encoding::Context) -> usize {
4468 8
4469 }
4470
4471 #[inline(always)]
4472 fn inline_size(_context: fidl::encoding::Context) -> usize {
4473 16
4474 }
4475 }
4476
4477 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Task, D> for &Task {
4478 #[inline]
4479 unsafe fn encode(
4480 self,
4481 encoder: &mut fidl::encoding::Encoder<'_, D>,
4482 offset: usize,
4483 _depth: fidl::encoding::Depth,
4484 ) -> fidl::Result<()> {
4485 encoder.debug_check_bounds::<Task>(offset);
4486 encoder.write_num::<u64>(self.ordinal(), offset);
4487 match self {
4488 Task::Process(ref val) => fidl::encoding::encode_in_envelope::<u64, D>(
4489 <u64 as fidl::encoding::ValueTypeMarker>::borrow(val),
4490 encoder,
4491 offset + 8,
4492 _depth,
4493 ),
4494 Task::Thread(ref val) => fidl::encoding::encode_in_envelope::<u64, D>(
4495 <u64 as fidl::encoding::ValueTypeMarker>::borrow(val),
4496 encoder,
4497 offset + 8,
4498 _depth,
4499 ),
4500 Task::Job(ref val) => fidl::encoding::encode_in_envelope::<u64, D>(
4501 <u64 as fidl::encoding::ValueTypeMarker>::borrow(val),
4502 encoder,
4503 offset + 8,
4504 _depth,
4505 ),
4506 Task::SystemWide(ref val) => fidl::encoding::encode_in_envelope::<SystemWide, D>(
4507 <SystemWide as fidl::encoding::ValueTypeMarker>::borrow(val),
4508 encoder,
4509 offset + 8,
4510 _depth,
4511 ),
4512 Task::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
4513 }
4514 }
4515 }
4516
4517 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Task {
4518 #[inline(always)]
4519 fn new_empty() -> Self {
4520 Self::__SourceBreaking { unknown_ordinal: 0 }
4521 }
4522
4523 #[inline]
4524 unsafe fn decode(
4525 &mut self,
4526 decoder: &mut fidl::encoding::Decoder<'_, D>,
4527 offset: usize,
4528 mut depth: fidl::encoding::Depth,
4529 ) -> fidl::Result<()> {
4530 decoder.debug_check_bounds::<Self>(offset);
4531 #[allow(unused_variables)]
4532 let next_out_of_line = decoder.next_out_of_line();
4533 let handles_before = decoder.remaining_handles();
4534 let (ordinal, inlined, num_bytes, num_handles) =
4535 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
4536
4537 let member_inline_size = match ordinal {
4538 1 => <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4539 2 => <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4540 3 => <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4541 4 => <SystemWide as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4542 0 => return Err(fidl::Error::UnknownUnionTag),
4543 _ => num_bytes as usize,
4544 };
4545
4546 if inlined != (member_inline_size <= 4) {
4547 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4548 }
4549 let _inner_offset;
4550 if inlined {
4551 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
4552 _inner_offset = offset + 8;
4553 } else {
4554 depth.increment()?;
4555 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4556 }
4557 match ordinal {
4558 1 => {
4559 #[allow(irrefutable_let_patterns)]
4560 if let Task::Process(_) = self {
4561 } else {
4563 *self = Task::Process(fidl::new_empty!(u64, D));
4565 }
4566 #[allow(irrefutable_let_patterns)]
4567 if let Task::Process(ref mut val) = self {
4568 fidl::decode!(u64, D, val, decoder, _inner_offset, depth)?;
4569 } else {
4570 unreachable!()
4571 }
4572 }
4573 2 => {
4574 #[allow(irrefutable_let_patterns)]
4575 if let Task::Thread(_) = self {
4576 } else {
4578 *self = Task::Thread(fidl::new_empty!(u64, D));
4580 }
4581 #[allow(irrefutable_let_patterns)]
4582 if let Task::Thread(ref mut val) = self {
4583 fidl::decode!(u64, D, val, decoder, _inner_offset, depth)?;
4584 } else {
4585 unreachable!()
4586 }
4587 }
4588 3 => {
4589 #[allow(irrefutable_let_patterns)]
4590 if let Task::Job(_) = self {
4591 } else {
4593 *self = Task::Job(fidl::new_empty!(u64, D));
4595 }
4596 #[allow(irrefutable_let_patterns)]
4597 if let Task::Job(ref mut val) = self {
4598 fidl::decode!(u64, D, val, decoder, _inner_offset, depth)?;
4599 } else {
4600 unreachable!()
4601 }
4602 }
4603 4 => {
4604 #[allow(irrefutable_let_patterns)]
4605 if let Task::SystemWide(_) = self {
4606 } else {
4608 *self = Task::SystemWide(fidl::new_empty!(SystemWide, D));
4610 }
4611 #[allow(irrefutable_let_patterns)]
4612 if let Task::SystemWide(ref mut val) = self {
4613 fidl::decode!(SystemWide, D, val, decoder, _inner_offset, depth)?;
4614 } else {
4615 unreachable!()
4616 }
4617 }
4618 #[allow(deprecated)]
4619 ordinal => {
4620 for _ in 0..num_handles {
4621 decoder.drop_next_handle()?;
4622 }
4623 *self = Task::__SourceBreaking { unknown_ordinal: ordinal };
4624 }
4625 }
4626 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
4627 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4628 }
4629 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4630 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4631 }
4632 Ok(())
4633 }
4634 }
4635}