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