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 type AlertName = String;
13
14pub const MAX_ALERT_NAME_LENGTH: u32 = 14;
16
17pub const MAX_NUM_PROVIDERS: u32 = 100;
19
20#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
22pub enum Action {
23 Terminate,
25 #[doc(hidden)]
26 __SourceBreaking { unknown_ordinal: u32 },
27}
28
29#[macro_export]
31macro_rules! ActionUnknown {
32 () => {
33 _
34 };
35}
36
37impl Action {
38 #[inline]
39 pub fn from_primitive(prim: u32) -> Option<Self> {
40 match prim {
41 1 => Some(Self::Terminate),
42 _ => None,
43 }
44 }
45
46 #[inline]
47 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
48 match prim {
49 1 => Self::Terminate,
50 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
51 }
52 }
53
54 #[inline]
55 pub fn unknown() -> Self {
56 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
57 }
58
59 #[inline]
60 pub const fn into_primitive(self) -> u32 {
61 match self {
62 Self::Terminate => 1,
63 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
64 }
65 }
66
67 #[inline]
68 pub fn is_unknown(&self) -> bool {
69 match self {
70 Self::__SourceBreaking { unknown_ordinal: _ } => true,
71 _ => false,
72 }
73 }
74}
75
76#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
79pub enum RecordingError {
80 TargetProxyOpen,
82 RecordingStart,
84 RecordingAlreadyStarted,
87 RecordingStop,
91 DuplicateTraceFile,
94 NoSuchTraceFile,
97 NoSuchTarget,
99 DisconnectedTarget,
102 #[doc(hidden)]
103 __SourceBreaking { unknown_ordinal: u32 },
104}
105
106#[macro_export]
108macro_rules! RecordingErrorUnknown {
109 () => {
110 _
111 };
112}
113
114impl RecordingError {
115 #[inline]
116 pub fn from_primitive(prim: u32) -> Option<Self> {
117 match prim {
118 0 => Some(Self::TargetProxyOpen),
119 1 => Some(Self::RecordingStart),
120 2 => Some(Self::RecordingAlreadyStarted),
121 3 => Some(Self::RecordingStop),
122 4 => Some(Self::DuplicateTraceFile),
123 5 => Some(Self::NoSuchTraceFile),
124 6 => Some(Self::NoSuchTarget),
125 7 => Some(Self::DisconnectedTarget),
126 _ => None,
127 }
128 }
129
130 #[inline]
131 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
132 match prim {
133 0 => Self::TargetProxyOpen,
134 1 => Self::RecordingStart,
135 2 => Self::RecordingAlreadyStarted,
136 3 => Self::RecordingStop,
137 4 => Self::DuplicateTraceFile,
138 5 => Self::NoSuchTraceFile,
139 6 => Self::NoSuchTarget,
140 7 => Self::DisconnectedTarget,
141 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
142 }
143 }
144
145 #[inline]
146 pub fn unknown() -> Self {
147 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
148 }
149
150 #[inline]
151 pub const fn into_primitive(self) -> u32 {
152 match self {
153 Self::TargetProxyOpen => 0,
154 Self::RecordingStart => 1,
155 Self::RecordingAlreadyStarted => 2,
156 Self::RecordingStop => 3,
157 Self::DuplicateTraceFile => 4,
158 Self::NoSuchTraceFile => 5,
159 Self::NoSuchTarget => 6,
160 Self::DisconnectedTarget => 7,
161 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
162 }
163 }
164
165 #[inline]
166 pub fn is_unknown(&self) -> bool {
167 match self {
168 Self::__SourceBreaking { unknown_ordinal: _ } => true,
169 _ => false,
170 }
171 }
172}
173
174#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
177pub enum SessionState {
178 Ready,
181 Initialized,
183 Starting,
185 Started,
187 Stopping,
189 Stopped,
191 Terminating,
195 #[doc(hidden)]
196 __SourceBreaking { unknown_ordinal: u32 },
197}
198
199#[macro_export]
201macro_rules! SessionStateUnknown {
202 () => {
203 _
204 };
205}
206
207impl SessionState {
208 #[inline]
209 pub fn from_primitive(prim: u32) -> Option<Self> {
210 match prim {
211 1 => Some(Self::Ready),
212 2 => Some(Self::Initialized),
213 3 => Some(Self::Starting),
214 4 => Some(Self::Started),
215 5 => Some(Self::Stopping),
216 6 => Some(Self::Stopped),
217 7 => Some(Self::Terminating),
218 _ => None,
219 }
220 }
221
222 #[inline]
223 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
224 match prim {
225 1 => Self::Ready,
226 2 => Self::Initialized,
227 3 => Self::Starting,
228 4 => Self::Started,
229 5 => Self::Stopping,
230 6 => Self::Stopped,
231 7 => Self::Terminating,
232 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
233 }
234 }
235
236 #[inline]
237 pub fn unknown() -> Self {
238 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
239 }
240
241 #[inline]
242 pub const fn into_primitive(self) -> u32 {
243 match self {
244 Self::Ready => 1,
245 Self::Initialized => 2,
246 Self::Starting => 3,
247 Self::Started => 4,
248 Self::Stopping => 5,
249 Self::Stopped => 6,
250 Self::Terminating => 7,
251 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
252 }
253 }
254
255 #[inline]
256 pub fn is_unknown(&self) -> bool {
257 match self {
258 Self::__SourceBreaking { unknown_ordinal: _ } => true,
259 _ => false,
260 }
261 }
262}
263
264#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
266pub enum StartError {
267 NotInitialized,
269 AlreadyStarted,
271 Stopping,
273 Terminating,
275 #[doc(hidden)]
276 __SourceBreaking { unknown_ordinal: u32 },
277}
278
279#[macro_export]
281macro_rules! StartErrorUnknown {
282 () => {
283 _
284 };
285}
286
287impl StartError {
288 #[inline]
289 pub fn from_primitive(prim: u32) -> Option<Self> {
290 match prim {
291 1 => Some(Self::NotInitialized),
292 2 => Some(Self::AlreadyStarted),
293 3 => Some(Self::Stopping),
294 4 => Some(Self::Terminating),
295 _ => None,
296 }
297 }
298
299 #[inline]
300 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
301 match prim {
302 1 => Self::NotInitialized,
303 2 => Self::AlreadyStarted,
304 3 => Self::Stopping,
305 4 => Self::Terminating,
306 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
307 }
308 }
309
310 #[inline]
311 pub fn unknown() -> Self {
312 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
313 }
314
315 #[inline]
316 pub const fn into_primitive(self) -> u32 {
317 match self {
318 Self::NotInitialized => 1,
319 Self::AlreadyStarted => 2,
320 Self::Stopping => 3,
321 Self::Terminating => 4,
322 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
323 }
324 }
325
326 #[inline]
327 pub fn is_unknown(&self) -> bool {
328 match self {
329 Self::__SourceBreaking { unknown_ordinal: _ } => true,
330 _ => false,
331 }
332 }
333}
334
335#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
337pub enum StopError {
338 NotInitialized,
340 NotStarted,
342 Aborted,
344 #[doc(hidden)]
345 __SourceBreaking { unknown_ordinal: u32 },
346}
347
348#[macro_export]
350macro_rules! StopErrorUnknown {
351 () => {
352 _
353 };
354}
355
356impl StopError {
357 #[inline]
358 pub fn from_primitive(prim: u32) -> Option<Self> {
359 match prim {
360 1 => Some(Self::NotInitialized),
361 2 => Some(Self::NotStarted),
362 3 => Some(Self::Aborted),
363 _ => None,
364 }
365 }
366
367 #[inline]
368 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
369 match prim {
370 1 => Self::NotInitialized,
371 2 => Self::NotStarted,
372 3 => Self::Aborted,
373 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
374 }
375 }
376
377 #[inline]
378 pub fn unknown() -> Self {
379 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
380 }
381
382 #[inline]
383 pub const fn into_primitive(self) -> u32 {
384 match self {
385 Self::NotInitialized => 1,
386 Self::NotStarted => 2,
387 Self::Aborted => 3,
388 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
389 }
390 }
391
392 #[inline]
393 pub fn is_unknown(&self) -> bool {
394 match self {
395 Self::__SourceBreaking { unknown_ordinal: _ } => true,
396 _ => false,
397 }
398 }
399}
400
401#[derive(Clone, Debug, PartialEq)]
402pub struct ProvisionerGetKnownCategoriesResponse {
403 pub categories: Vec<fidl_fuchsia_tracing__common::KnownCategory>,
404}
405
406impl fidl::Persistable for ProvisionerGetKnownCategoriesResponse {}
407
408#[derive(Clone, Debug, PartialEq)]
409pub struct ProvisionerGetProvidersResponse {
410 pub providers: Vec<ProviderInfo>,
411}
412
413impl fidl::Persistable for ProvisionerGetProvidersResponse {}
414
415#[derive(Clone, Debug, PartialEq)]
416pub struct SessionManagerEndTraceSessionResponse {
417 pub options: TraceOptions,
418 pub result: StopResult,
419}
420
421impl fidl::Persistable for SessionManagerEndTraceSessionResponse {}
422
423#[derive(Clone, Debug, PartialEq)]
424pub struct SessionManagerGetKnownCategoriesResponse {
425 pub categories: Vec<fidl_fuchsia_tracing__common::KnownCategory>,
426}
427
428impl fidl::Persistable for SessionManagerGetKnownCategoriesResponse {}
429
430#[derive(Clone, Debug, PartialEq)]
431pub struct SessionManagerGetProvidersResponse {
432 pub providers: Vec<ProviderInfo>,
433}
434
435impl fidl::Persistable for SessionManagerGetProvidersResponse {}
436
437#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
438#[repr(C)]
439pub struct SessionManagerStartTraceSessionResponse {
440 pub task_id: u64,
441}
442
443impl fidl::Persistable for SessionManagerStartTraceSessionResponse {}
444
445#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
446pub struct SessionOnSessionStateChangeRequest {
447 pub state: SessionState,
448}
449
450impl fidl::Persistable for SessionOnSessionStateChangeRequest {}
451
452#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
453pub struct SessionWatchAlertResponse {
454 pub alert_name: String,
455}
456
457impl fidl::Persistable for SessionWatchAlertResponse {}
458
459#[derive(Clone, Debug, Default, PartialEq)]
466pub struct FxtVersion {
467 pub major: Option<u32>,
469 pub minor: Option<u32>,
471 #[doc(hidden)]
472 pub __source_breaking: fidl::marker::SourceBreaking,
473}
474
475impl fidl::Persistable for FxtVersion {}
476
477#[derive(Clone, Debug, Default, PartialEq)]
479pub struct ProviderInfo {
480 pub id: Option<u32>,
482 pub pid: Option<u64>,
484 pub name: Option<String>,
486 #[doc(hidden)]
487 pub __source_breaking: fidl::marker::SourceBreaking,
488}
489
490impl fidl::Persistable for ProviderInfo {}
491
492#[derive(Clone, Debug, Default, PartialEq)]
493pub struct ProviderSpec {
494 pub name: Option<String>,
495 pub buffer_size_megabytes_hint: Option<u32>,
496 pub categories: Option<Vec<String>>,
497 #[doc(hidden)]
498 pub __source_breaking: fidl::marker::SourceBreaking,
499}
500
501impl fidl::Persistable for ProviderSpec {}
502
503#[derive(Clone, Debug, Default, PartialEq)]
505pub struct ProviderStats {
506 pub name: Option<String>,
507 pub pid: Option<u64>,
508 pub buffering_mode: Option<fidl_fuchsia_tracing__common::BufferingMode>,
509 pub buffer_wrapped_count: Option<u32>,
510 pub records_dropped: Option<u64>,
511 pub percentage_durable_buffer_used: Option<f32>,
512 pub non_durable_bytes_written: Option<u64>,
513 #[doc(hidden)]
514 pub __source_breaking: fidl::marker::SourceBreaking,
515}
516
517impl fidl::Persistable for ProviderStats {}
518
519#[derive(Clone, Debug, Default, PartialEq)]
521pub struct StartOptions {
522 pub buffer_disposition: Option<fidl_fuchsia_tracing__common::BufferDisposition>,
530 pub additional_categories: Option<Vec<String>>,
534 #[doc(hidden)]
535 pub __source_breaking: fidl::marker::SourceBreaking,
536}
537
538impl fidl::Persistable for StartOptions {}
539
540#[derive(Clone, Debug, Default, PartialEq)]
542pub struct StopOptions {
543 pub write_results: Option<bool>,
548 #[doc(hidden)]
549 pub __source_breaking: fidl::marker::SourceBreaking,
550}
551
552impl fidl::Persistable for StopOptions {}
553
554#[derive(Clone, Debug, Default, PartialEq)]
556pub struct StopResult {
557 pub provider_stats: Option<Vec<ProviderStats>>,
558 #[doc(hidden)]
559 pub __source_breaking: fidl::marker::SourceBreaking,
560}
561
562impl fidl::Persistable for StopResult {}
563
564#[derive(Clone, Debug, Default, PartialEq)]
566pub struct TraceConfig {
567 pub categories: Option<Vec<String>>,
569 pub buffer_size_megabytes_hint: Option<u32>,
571 pub start_timeout_milliseconds: Option<u64>,
573 pub buffering_mode: Option<fidl_fuchsia_tracing__common::BufferingMode>,
574 pub provider_specs: Option<Vec<ProviderSpec>>,
576 pub version: Option<FxtVersion>,
579 pub defer_transfer: Option<bool>,
593 #[doc(hidden)]
594 pub __source_breaking: fidl::marker::SourceBreaking,
595}
596
597impl fidl::Persistable for TraceConfig {}
598
599#[derive(Clone, Debug, Default, PartialEq)]
601pub struct TraceOptions {
602 pub duration_ns: Option<i64>,
610 pub triggers: Option<Vec<Trigger>>,
612 pub requested_categories: Option<Vec<String>>,
618 #[doc(hidden)]
619 pub __source_breaking: fidl::marker::SourceBreaking,
620}
621
622impl fidl::Persistable for TraceOptions {}
623
624#[derive(Clone, Debug, Default, PartialEq)]
626pub struct TraceStatus {
627 pub duration: Option<i64>,
630 pub remaining_runtime: Option<i64>,
633 pub config: Option<TraceConfig>,
635 pub triggers: Option<Vec<Trigger>>,
637 pub task_id: Option<u64>,
639 #[doc(hidden)]
640 pub __source_breaking: fidl::marker::SourceBreaking,
641}
642
643impl fidl::Persistable for TraceStatus {}
644
645#[derive(Clone, Debug, Default, PartialEq)]
648pub struct Trigger {
649 pub alert: Option<String>,
652 pub action: Option<Action>,
654 #[doc(hidden)]
655 pub __source_breaking: fidl::marker::SourceBreaking,
656}
657
658impl fidl::Persistable for Trigger {}
659
660pub mod provisioner_ordinals {
661 pub const INITIALIZE_TRACING: u64 = 0x3b046ed3a0684ab8;
662 pub const GET_PROVIDERS: u64 = 0xc4d4f36edc50d43;
663 pub const GET_KNOWN_CATEGORIES: u64 = 0x41ef99397b945a4;
664}
665
666pub mod session_ordinals {
667 pub const START_TRACING: u64 = 0xde9b6ccbe936631;
668 pub const STOP_TRACING: u64 = 0x50fefc9b3ff9b03a;
669 pub const WATCH_ALERT: u64 = 0x1f1c080716d92276;
670 pub const ON_SESSION_STATE_CHANGE: u64 = 0x7ab1640718b971cd;
671}
672
673pub mod session_manager_ordinals {
674 pub const GET_PROVIDERS: u64 = 0x61bd49c4eb1fa03;
675 pub const GET_KNOWN_CATEGORIES: u64 = 0x6f0abdb5401788b2;
676 pub const START_TRACE_SESSION: u64 = 0x54c39e0c173c0162;
677 pub const START_TRACE_SESSION_ON_BOOT: u64 = 0x705558b5612fbf62;
678 pub const END_TRACE_SESSION: u64 = 0x72d6ca80a0787577;
679 pub const STATUS: u64 = 0x2ebc198b7af59063;
680}
681
682mod internal {
683 use super::*;
684 unsafe impl fidl::encoding::TypeMarker for Action {
685 type Owned = Self;
686
687 #[inline(always)]
688 fn inline_align(_context: fidl::encoding::Context) -> usize {
689 std::mem::align_of::<u32>()
690 }
691
692 #[inline(always)]
693 fn inline_size(_context: fidl::encoding::Context) -> usize {
694 std::mem::size_of::<u32>()
695 }
696
697 #[inline(always)]
698 fn encode_is_copy() -> bool {
699 false
700 }
701
702 #[inline(always)]
703 fn decode_is_copy() -> bool {
704 false
705 }
706 }
707
708 impl fidl::encoding::ValueTypeMarker for Action {
709 type Borrowed<'a> = Self;
710 #[inline(always)]
711 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
712 *value
713 }
714 }
715
716 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Action {
717 #[inline]
718 unsafe fn encode(
719 self,
720 encoder: &mut fidl::encoding::Encoder<'_, D>,
721 offset: usize,
722 _depth: fidl::encoding::Depth,
723 ) -> fidl::Result<()> {
724 encoder.debug_check_bounds::<Self>(offset);
725 encoder.write_num(self.into_primitive(), offset);
726 Ok(())
727 }
728 }
729
730 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Action {
731 #[inline(always)]
732 fn new_empty() -> Self {
733 Self::unknown()
734 }
735
736 #[inline]
737 unsafe fn decode(
738 &mut self,
739 decoder: &mut fidl::encoding::Decoder<'_, D>,
740 offset: usize,
741 _depth: fidl::encoding::Depth,
742 ) -> fidl::Result<()> {
743 decoder.debug_check_bounds::<Self>(offset);
744 let prim = decoder.read_num::<u32>(offset);
745
746 *self = Self::from_primitive_allow_unknown(prim);
747 Ok(())
748 }
749 }
750 unsafe impl fidl::encoding::TypeMarker for RecordingError {
751 type Owned = Self;
752
753 #[inline(always)]
754 fn inline_align(_context: fidl::encoding::Context) -> usize {
755 std::mem::align_of::<u32>()
756 }
757
758 #[inline(always)]
759 fn inline_size(_context: fidl::encoding::Context) -> usize {
760 std::mem::size_of::<u32>()
761 }
762
763 #[inline(always)]
764 fn encode_is_copy() -> bool {
765 false
766 }
767
768 #[inline(always)]
769 fn decode_is_copy() -> bool {
770 false
771 }
772 }
773
774 impl fidl::encoding::ValueTypeMarker for RecordingError {
775 type Borrowed<'a> = Self;
776 #[inline(always)]
777 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
778 *value
779 }
780 }
781
782 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for RecordingError {
783 #[inline]
784 unsafe fn encode(
785 self,
786 encoder: &mut fidl::encoding::Encoder<'_, D>,
787 offset: usize,
788 _depth: fidl::encoding::Depth,
789 ) -> fidl::Result<()> {
790 encoder.debug_check_bounds::<Self>(offset);
791 encoder.write_num(self.into_primitive(), offset);
792 Ok(())
793 }
794 }
795
796 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RecordingError {
797 #[inline(always)]
798 fn new_empty() -> Self {
799 Self::unknown()
800 }
801
802 #[inline]
803 unsafe fn decode(
804 &mut self,
805 decoder: &mut fidl::encoding::Decoder<'_, D>,
806 offset: usize,
807 _depth: fidl::encoding::Depth,
808 ) -> fidl::Result<()> {
809 decoder.debug_check_bounds::<Self>(offset);
810 let prim = decoder.read_num::<u32>(offset);
811
812 *self = Self::from_primitive_allow_unknown(prim);
813 Ok(())
814 }
815 }
816 unsafe impl fidl::encoding::TypeMarker for SessionState {
817 type Owned = Self;
818
819 #[inline(always)]
820 fn inline_align(_context: fidl::encoding::Context) -> usize {
821 std::mem::align_of::<u32>()
822 }
823
824 #[inline(always)]
825 fn inline_size(_context: fidl::encoding::Context) -> usize {
826 std::mem::size_of::<u32>()
827 }
828
829 #[inline(always)]
830 fn encode_is_copy() -> bool {
831 false
832 }
833
834 #[inline(always)]
835 fn decode_is_copy() -> bool {
836 false
837 }
838 }
839
840 impl fidl::encoding::ValueTypeMarker for SessionState {
841 type Borrowed<'a> = Self;
842 #[inline(always)]
843 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
844 *value
845 }
846 }
847
848 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for SessionState {
849 #[inline]
850 unsafe fn encode(
851 self,
852 encoder: &mut fidl::encoding::Encoder<'_, D>,
853 offset: usize,
854 _depth: fidl::encoding::Depth,
855 ) -> fidl::Result<()> {
856 encoder.debug_check_bounds::<Self>(offset);
857 encoder.write_num(self.into_primitive(), offset);
858 Ok(())
859 }
860 }
861
862 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SessionState {
863 #[inline(always)]
864 fn new_empty() -> Self {
865 Self::unknown()
866 }
867
868 #[inline]
869 unsafe fn decode(
870 &mut self,
871 decoder: &mut fidl::encoding::Decoder<'_, D>,
872 offset: usize,
873 _depth: fidl::encoding::Depth,
874 ) -> fidl::Result<()> {
875 decoder.debug_check_bounds::<Self>(offset);
876 let prim = decoder.read_num::<u32>(offset);
877
878 *self = Self::from_primitive_allow_unknown(prim);
879 Ok(())
880 }
881 }
882 unsafe impl fidl::encoding::TypeMarker for StartError {
883 type Owned = Self;
884
885 #[inline(always)]
886 fn inline_align(_context: fidl::encoding::Context) -> usize {
887 std::mem::align_of::<u32>()
888 }
889
890 #[inline(always)]
891 fn inline_size(_context: fidl::encoding::Context) -> usize {
892 std::mem::size_of::<u32>()
893 }
894
895 #[inline(always)]
896 fn encode_is_copy() -> bool {
897 false
898 }
899
900 #[inline(always)]
901 fn decode_is_copy() -> bool {
902 false
903 }
904 }
905
906 impl fidl::encoding::ValueTypeMarker for StartError {
907 type Borrowed<'a> = Self;
908 #[inline(always)]
909 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
910 *value
911 }
912 }
913
914 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StartError {
915 #[inline]
916 unsafe fn encode(
917 self,
918 encoder: &mut fidl::encoding::Encoder<'_, D>,
919 offset: usize,
920 _depth: fidl::encoding::Depth,
921 ) -> fidl::Result<()> {
922 encoder.debug_check_bounds::<Self>(offset);
923 encoder.write_num(self.into_primitive(), offset);
924 Ok(())
925 }
926 }
927
928 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartError {
929 #[inline(always)]
930 fn new_empty() -> Self {
931 Self::unknown()
932 }
933
934 #[inline]
935 unsafe fn decode(
936 &mut self,
937 decoder: &mut fidl::encoding::Decoder<'_, D>,
938 offset: usize,
939 _depth: fidl::encoding::Depth,
940 ) -> fidl::Result<()> {
941 decoder.debug_check_bounds::<Self>(offset);
942 let prim = decoder.read_num::<u32>(offset);
943
944 *self = Self::from_primitive_allow_unknown(prim);
945 Ok(())
946 }
947 }
948 unsafe impl fidl::encoding::TypeMarker for StopError {
949 type Owned = Self;
950
951 #[inline(always)]
952 fn inline_align(_context: fidl::encoding::Context) -> usize {
953 std::mem::align_of::<u32>()
954 }
955
956 #[inline(always)]
957 fn inline_size(_context: fidl::encoding::Context) -> usize {
958 std::mem::size_of::<u32>()
959 }
960
961 #[inline(always)]
962 fn encode_is_copy() -> bool {
963 false
964 }
965
966 #[inline(always)]
967 fn decode_is_copy() -> bool {
968 false
969 }
970 }
971
972 impl fidl::encoding::ValueTypeMarker for StopError {
973 type Borrowed<'a> = Self;
974 #[inline(always)]
975 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
976 *value
977 }
978 }
979
980 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StopError {
981 #[inline]
982 unsafe fn encode(
983 self,
984 encoder: &mut fidl::encoding::Encoder<'_, D>,
985 offset: usize,
986 _depth: fidl::encoding::Depth,
987 ) -> fidl::Result<()> {
988 encoder.debug_check_bounds::<Self>(offset);
989 encoder.write_num(self.into_primitive(), offset);
990 Ok(())
991 }
992 }
993
994 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopError {
995 #[inline(always)]
996 fn new_empty() -> Self {
997 Self::unknown()
998 }
999
1000 #[inline]
1001 unsafe fn decode(
1002 &mut self,
1003 decoder: &mut fidl::encoding::Decoder<'_, D>,
1004 offset: usize,
1005 _depth: fidl::encoding::Depth,
1006 ) -> fidl::Result<()> {
1007 decoder.debug_check_bounds::<Self>(offset);
1008 let prim = decoder.read_num::<u32>(offset);
1009
1010 *self = Self::from_primitive_allow_unknown(prim);
1011 Ok(())
1012 }
1013 }
1014
1015 impl fidl::encoding::ValueTypeMarker for ProvisionerGetKnownCategoriesResponse {
1016 type Borrowed<'a> = &'a Self;
1017 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1018 value
1019 }
1020 }
1021
1022 unsafe impl fidl::encoding::TypeMarker for ProvisionerGetKnownCategoriesResponse {
1023 type Owned = Self;
1024
1025 #[inline(always)]
1026 fn inline_align(_context: fidl::encoding::Context) -> usize {
1027 8
1028 }
1029
1030 #[inline(always)]
1031 fn inline_size(_context: fidl::encoding::Context) -> usize {
1032 16
1033 }
1034 }
1035
1036 unsafe impl<D: fidl::encoding::ResourceDialect>
1037 fidl::encoding::Encode<ProvisionerGetKnownCategoriesResponse, D>
1038 for &ProvisionerGetKnownCategoriesResponse
1039 {
1040 #[inline]
1041 unsafe fn encode(
1042 self,
1043 encoder: &mut fidl::encoding::Encoder<'_, D>,
1044 offset: usize,
1045 _depth: fidl::encoding::Depth,
1046 ) -> fidl::Result<()> {
1047 encoder.debug_check_bounds::<ProvisionerGetKnownCategoriesResponse>(offset);
1048 fidl::encoding::Encode::<ProvisionerGetKnownCategoriesResponse, D>::encode(
1050 (
1051 <fidl::encoding::Vector<fidl_fuchsia_tracing__common::KnownCategory, 5000> as fidl::encoding::ValueTypeMarker>::borrow(&self.categories),
1052 ),
1053 encoder, offset, _depth
1054 )
1055 }
1056 }
1057 unsafe impl<
1058 D: fidl::encoding::ResourceDialect,
1059 T0: fidl::encoding::Encode<
1060 fidl::encoding::Vector<fidl_fuchsia_tracing__common::KnownCategory, 5000>,
1061 D,
1062 >,
1063 > fidl::encoding::Encode<ProvisionerGetKnownCategoriesResponse, D> for (T0,)
1064 {
1065 #[inline]
1066 unsafe fn encode(
1067 self,
1068 encoder: &mut fidl::encoding::Encoder<'_, D>,
1069 offset: usize,
1070 depth: fidl::encoding::Depth,
1071 ) -> fidl::Result<()> {
1072 encoder.debug_check_bounds::<ProvisionerGetKnownCategoriesResponse>(offset);
1073 self.0.encode(encoder, offset + 0, depth)?;
1077 Ok(())
1078 }
1079 }
1080
1081 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1082 for ProvisionerGetKnownCategoriesResponse
1083 {
1084 #[inline(always)]
1085 fn new_empty() -> Self {
1086 Self {
1087 categories: fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_tracing__common::KnownCategory, 5000>, D),
1088 }
1089 }
1090
1091 #[inline]
1092 unsafe fn decode(
1093 &mut self,
1094 decoder: &mut fidl::encoding::Decoder<'_, D>,
1095 offset: usize,
1096 _depth: fidl::encoding::Depth,
1097 ) -> fidl::Result<()> {
1098 decoder.debug_check_bounds::<Self>(offset);
1099 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_tracing__common::KnownCategory, 5000>, D, &mut self.categories, decoder, offset + 0, _depth)?;
1101 Ok(())
1102 }
1103 }
1104
1105 impl fidl::encoding::ValueTypeMarker for ProvisionerGetProvidersResponse {
1106 type Borrowed<'a> = &'a Self;
1107 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1108 value
1109 }
1110 }
1111
1112 unsafe impl fidl::encoding::TypeMarker for ProvisionerGetProvidersResponse {
1113 type Owned = Self;
1114
1115 #[inline(always)]
1116 fn inline_align(_context: fidl::encoding::Context) -> usize {
1117 8
1118 }
1119
1120 #[inline(always)]
1121 fn inline_size(_context: fidl::encoding::Context) -> usize {
1122 16
1123 }
1124 }
1125
1126 unsafe impl<D: fidl::encoding::ResourceDialect>
1127 fidl::encoding::Encode<ProvisionerGetProvidersResponse, D>
1128 for &ProvisionerGetProvidersResponse
1129 {
1130 #[inline]
1131 unsafe fn encode(
1132 self,
1133 encoder: &mut fidl::encoding::Encoder<'_, D>,
1134 offset: usize,
1135 _depth: fidl::encoding::Depth,
1136 ) -> fidl::Result<()> {
1137 encoder.debug_check_bounds::<ProvisionerGetProvidersResponse>(offset);
1138 fidl::encoding::Encode::<ProvisionerGetProvidersResponse, D>::encode(
1140 (
1141 <fidl::encoding::Vector<ProviderInfo, 100> as fidl::encoding::ValueTypeMarker>::borrow(&self.providers),
1142 ),
1143 encoder, offset, _depth
1144 )
1145 }
1146 }
1147 unsafe impl<
1148 D: fidl::encoding::ResourceDialect,
1149 T0: fidl::encoding::Encode<fidl::encoding::Vector<ProviderInfo, 100>, D>,
1150 > fidl::encoding::Encode<ProvisionerGetProvidersResponse, D> for (T0,)
1151 {
1152 #[inline]
1153 unsafe fn encode(
1154 self,
1155 encoder: &mut fidl::encoding::Encoder<'_, D>,
1156 offset: usize,
1157 depth: fidl::encoding::Depth,
1158 ) -> fidl::Result<()> {
1159 encoder.debug_check_bounds::<ProvisionerGetProvidersResponse>(offset);
1160 self.0.encode(encoder, offset + 0, depth)?;
1164 Ok(())
1165 }
1166 }
1167
1168 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1169 for ProvisionerGetProvidersResponse
1170 {
1171 #[inline(always)]
1172 fn new_empty() -> Self {
1173 Self { providers: fidl::new_empty!(fidl::encoding::Vector<ProviderInfo, 100>, D) }
1174 }
1175
1176 #[inline]
1177 unsafe fn decode(
1178 &mut self,
1179 decoder: &mut fidl::encoding::Decoder<'_, D>,
1180 offset: usize,
1181 _depth: fidl::encoding::Depth,
1182 ) -> fidl::Result<()> {
1183 decoder.debug_check_bounds::<Self>(offset);
1184 fidl::decode!(fidl::encoding::Vector<ProviderInfo, 100>, D, &mut self.providers, decoder, offset + 0, _depth)?;
1186 Ok(())
1187 }
1188 }
1189
1190 impl fidl::encoding::ValueTypeMarker for SessionManagerEndTraceSessionResponse {
1191 type Borrowed<'a> = &'a Self;
1192 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1193 value
1194 }
1195 }
1196
1197 unsafe impl fidl::encoding::TypeMarker for SessionManagerEndTraceSessionResponse {
1198 type Owned = Self;
1199
1200 #[inline(always)]
1201 fn inline_align(_context: fidl::encoding::Context) -> usize {
1202 8
1203 }
1204
1205 #[inline(always)]
1206 fn inline_size(_context: fidl::encoding::Context) -> usize {
1207 32
1208 }
1209 }
1210
1211 unsafe impl<D: fidl::encoding::ResourceDialect>
1212 fidl::encoding::Encode<SessionManagerEndTraceSessionResponse, D>
1213 for &SessionManagerEndTraceSessionResponse
1214 {
1215 #[inline]
1216 unsafe fn encode(
1217 self,
1218 encoder: &mut fidl::encoding::Encoder<'_, D>,
1219 offset: usize,
1220 _depth: fidl::encoding::Depth,
1221 ) -> fidl::Result<()> {
1222 encoder.debug_check_bounds::<SessionManagerEndTraceSessionResponse>(offset);
1223 fidl::encoding::Encode::<SessionManagerEndTraceSessionResponse, D>::encode(
1225 (
1226 <TraceOptions as fidl::encoding::ValueTypeMarker>::borrow(&self.options),
1227 <StopResult as fidl::encoding::ValueTypeMarker>::borrow(&self.result),
1228 ),
1229 encoder,
1230 offset,
1231 _depth,
1232 )
1233 }
1234 }
1235 unsafe impl<
1236 D: fidl::encoding::ResourceDialect,
1237 T0: fidl::encoding::Encode<TraceOptions, D>,
1238 T1: fidl::encoding::Encode<StopResult, D>,
1239 > fidl::encoding::Encode<SessionManagerEndTraceSessionResponse, D> for (T0, T1)
1240 {
1241 #[inline]
1242 unsafe fn encode(
1243 self,
1244 encoder: &mut fidl::encoding::Encoder<'_, D>,
1245 offset: usize,
1246 depth: fidl::encoding::Depth,
1247 ) -> fidl::Result<()> {
1248 encoder.debug_check_bounds::<SessionManagerEndTraceSessionResponse>(offset);
1249 self.0.encode(encoder, offset + 0, depth)?;
1253 self.1.encode(encoder, offset + 16, depth)?;
1254 Ok(())
1255 }
1256 }
1257
1258 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1259 for SessionManagerEndTraceSessionResponse
1260 {
1261 #[inline(always)]
1262 fn new_empty() -> Self {
1263 Self {
1264 options: fidl::new_empty!(TraceOptions, D),
1265 result: fidl::new_empty!(StopResult, D),
1266 }
1267 }
1268
1269 #[inline]
1270 unsafe fn decode(
1271 &mut self,
1272 decoder: &mut fidl::encoding::Decoder<'_, D>,
1273 offset: usize,
1274 _depth: fidl::encoding::Depth,
1275 ) -> fidl::Result<()> {
1276 decoder.debug_check_bounds::<Self>(offset);
1277 fidl::decode!(TraceOptions, D, &mut self.options, decoder, offset + 0, _depth)?;
1279 fidl::decode!(StopResult, D, &mut self.result, decoder, offset + 16, _depth)?;
1280 Ok(())
1281 }
1282 }
1283
1284 impl fidl::encoding::ValueTypeMarker for SessionManagerGetKnownCategoriesResponse {
1285 type Borrowed<'a> = &'a Self;
1286 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1287 value
1288 }
1289 }
1290
1291 unsafe impl fidl::encoding::TypeMarker for SessionManagerGetKnownCategoriesResponse {
1292 type Owned = Self;
1293
1294 #[inline(always)]
1295 fn inline_align(_context: fidl::encoding::Context) -> usize {
1296 8
1297 }
1298
1299 #[inline(always)]
1300 fn inline_size(_context: fidl::encoding::Context) -> usize {
1301 16
1302 }
1303 }
1304
1305 unsafe impl<D: fidl::encoding::ResourceDialect>
1306 fidl::encoding::Encode<SessionManagerGetKnownCategoriesResponse, D>
1307 for &SessionManagerGetKnownCategoriesResponse
1308 {
1309 #[inline]
1310 unsafe fn encode(
1311 self,
1312 encoder: &mut fidl::encoding::Encoder<'_, D>,
1313 offset: usize,
1314 _depth: fidl::encoding::Depth,
1315 ) -> fidl::Result<()> {
1316 encoder.debug_check_bounds::<SessionManagerGetKnownCategoriesResponse>(offset);
1317 fidl::encoding::Encode::<SessionManagerGetKnownCategoriesResponse, D>::encode(
1319 (
1320 <fidl::encoding::Vector<fidl_fuchsia_tracing__common::KnownCategory, 5000> as fidl::encoding::ValueTypeMarker>::borrow(&self.categories),
1321 ),
1322 encoder, offset, _depth
1323 )
1324 }
1325 }
1326 unsafe impl<
1327 D: fidl::encoding::ResourceDialect,
1328 T0: fidl::encoding::Encode<
1329 fidl::encoding::Vector<fidl_fuchsia_tracing__common::KnownCategory, 5000>,
1330 D,
1331 >,
1332 > fidl::encoding::Encode<SessionManagerGetKnownCategoriesResponse, D> for (T0,)
1333 {
1334 #[inline]
1335 unsafe fn encode(
1336 self,
1337 encoder: &mut fidl::encoding::Encoder<'_, D>,
1338 offset: usize,
1339 depth: fidl::encoding::Depth,
1340 ) -> fidl::Result<()> {
1341 encoder.debug_check_bounds::<SessionManagerGetKnownCategoriesResponse>(offset);
1342 self.0.encode(encoder, offset + 0, depth)?;
1346 Ok(())
1347 }
1348 }
1349
1350 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1351 for SessionManagerGetKnownCategoriesResponse
1352 {
1353 #[inline(always)]
1354 fn new_empty() -> Self {
1355 Self {
1356 categories: fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_tracing__common::KnownCategory, 5000>, D),
1357 }
1358 }
1359
1360 #[inline]
1361 unsafe fn decode(
1362 &mut self,
1363 decoder: &mut fidl::encoding::Decoder<'_, D>,
1364 offset: usize,
1365 _depth: fidl::encoding::Depth,
1366 ) -> fidl::Result<()> {
1367 decoder.debug_check_bounds::<Self>(offset);
1368 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_tracing__common::KnownCategory, 5000>, D, &mut self.categories, decoder, offset + 0, _depth)?;
1370 Ok(())
1371 }
1372 }
1373
1374 impl fidl::encoding::ValueTypeMarker for SessionManagerGetProvidersResponse {
1375 type Borrowed<'a> = &'a Self;
1376 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1377 value
1378 }
1379 }
1380
1381 unsafe impl fidl::encoding::TypeMarker for SessionManagerGetProvidersResponse {
1382 type Owned = Self;
1383
1384 #[inline(always)]
1385 fn inline_align(_context: fidl::encoding::Context) -> usize {
1386 8
1387 }
1388
1389 #[inline(always)]
1390 fn inline_size(_context: fidl::encoding::Context) -> usize {
1391 16
1392 }
1393 }
1394
1395 unsafe impl<D: fidl::encoding::ResourceDialect>
1396 fidl::encoding::Encode<SessionManagerGetProvidersResponse, D>
1397 for &SessionManagerGetProvidersResponse
1398 {
1399 #[inline]
1400 unsafe fn encode(
1401 self,
1402 encoder: &mut fidl::encoding::Encoder<'_, D>,
1403 offset: usize,
1404 _depth: fidl::encoding::Depth,
1405 ) -> fidl::Result<()> {
1406 encoder.debug_check_bounds::<SessionManagerGetProvidersResponse>(offset);
1407 fidl::encoding::Encode::<SessionManagerGetProvidersResponse, D>::encode(
1409 (
1410 <fidl::encoding::Vector<ProviderInfo, 100> as fidl::encoding::ValueTypeMarker>::borrow(&self.providers),
1411 ),
1412 encoder, offset, _depth
1413 )
1414 }
1415 }
1416 unsafe impl<
1417 D: fidl::encoding::ResourceDialect,
1418 T0: fidl::encoding::Encode<fidl::encoding::Vector<ProviderInfo, 100>, D>,
1419 > fidl::encoding::Encode<SessionManagerGetProvidersResponse, D> for (T0,)
1420 {
1421 #[inline]
1422 unsafe fn encode(
1423 self,
1424 encoder: &mut fidl::encoding::Encoder<'_, D>,
1425 offset: usize,
1426 depth: fidl::encoding::Depth,
1427 ) -> fidl::Result<()> {
1428 encoder.debug_check_bounds::<SessionManagerGetProvidersResponse>(offset);
1429 self.0.encode(encoder, offset + 0, depth)?;
1433 Ok(())
1434 }
1435 }
1436
1437 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1438 for SessionManagerGetProvidersResponse
1439 {
1440 #[inline(always)]
1441 fn new_empty() -> Self {
1442 Self { providers: fidl::new_empty!(fidl::encoding::Vector<ProviderInfo, 100>, D) }
1443 }
1444
1445 #[inline]
1446 unsafe fn decode(
1447 &mut self,
1448 decoder: &mut fidl::encoding::Decoder<'_, D>,
1449 offset: usize,
1450 _depth: fidl::encoding::Depth,
1451 ) -> fidl::Result<()> {
1452 decoder.debug_check_bounds::<Self>(offset);
1453 fidl::decode!(fidl::encoding::Vector<ProviderInfo, 100>, D, &mut self.providers, decoder, offset + 0, _depth)?;
1455 Ok(())
1456 }
1457 }
1458
1459 impl fidl::encoding::ValueTypeMarker for SessionManagerStartTraceSessionResponse {
1460 type Borrowed<'a> = &'a Self;
1461 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1462 value
1463 }
1464 }
1465
1466 unsafe impl fidl::encoding::TypeMarker for SessionManagerStartTraceSessionResponse {
1467 type Owned = Self;
1468
1469 #[inline(always)]
1470 fn inline_align(_context: fidl::encoding::Context) -> usize {
1471 8
1472 }
1473
1474 #[inline(always)]
1475 fn inline_size(_context: fidl::encoding::Context) -> usize {
1476 8
1477 }
1478 #[inline(always)]
1479 fn encode_is_copy() -> bool {
1480 true
1481 }
1482
1483 #[inline(always)]
1484 fn decode_is_copy() -> bool {
1485 true
1486 }
1487 }
1488
1489 unsafe impl<D: fidl::encoding::ResourceDialect>
1490 fidl::encoding::Encode<SessionManagerStartTraceSessionResponse, D>
1491 for &SessionManagerStartTraceSessionResponse
1492 {
1493 #[inline]
1494 unsafe fn encode(
1495 self,
1496 encoder: &mut fidl::encoding::Encoder<'_, D>,
1497 offset: usize,
1498 _depth: fidl::encoding::Depth,
1499 ) -> fidl::Result<()> {
1500 encoder.debug_check_bounds::<SessionManagerStartTraceSessionResponse>(offset);
1501 unsafe {
1502 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1504 (buf_ptr as *mut SessionManagerStartTraceSessionResponse).write_unaligned(
1505 (self as *const SessionManagerStartTraceSessionResponse).read(),
1506 );
1507 }
1510 Ok(())
1511 }
1512 }
1513 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
1514 fidl::encoding::Encode<SessionManagerStartTraceSessionResponse, D> for (T0,)
1515 {
1516 #[inline]
1517 unsafe fn encode(
1518 self,
1519 encoder: &mut fidl::encoding::Encoder<'_, D>,
1520 offset: usize,
1521 depth: fidl::encoding::Depth,
1522 ) -> fidl::Result<()> {
1523 encoder.debug_check_bounds::<SessionManagerStartTraceSessionResponse>(offset);
1524 self.0.encode(encoder, offset + 0, depth)?;
1528 Ok(())
1529 }
1530 }
1531
1532 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1533 for SessionManagerStartTraceSessionResponse
1534 {
1535 #[inline(always)]
1536 fn new_empty() -> Self {
1537 Self { task_id: fidl::new_empty!(u64, D) }
1538 }
1539
1540 #[inline]
1541 unsafe fn decode(
1542 &mut self,
1543 decoder: &mut fidl::encoding::Decoder<'_, D>,
1544 offset: usize,
1545 _depth: fidl::encoding::Depth,
1546 ) -> fidl::Result<()> {
1547 decoder.debug_check_bounds::<Self>(offset);
1548 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1549 unsafe {
1552 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
1553 }
1554 Ok(())
1555 }
1556 }
1557
1558 impl fidl::encoding::ValueTypeMarker for SessionOnSessionStateChangeRequest {
1559 type Borrowed<'a> = &'a Self;
1560 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1561 value
1562 }
1563 }
1564
1565 unsafe impl fidl::encoding::TypeMarker for SessionOnSessionStateChangeRequest {
1566 type Owned = Self;
1567
1568 #[inline(always)]
1569 fn inline_align(_context: fidl::encoding::Context) -> usize {
1570 4
1571 }
1572
1573 #[inline(always)]
1574 fn inline_size(_context: fidl::encoding::Context) -> usize {
1575 4
1576 }
1577 }
1578
1579 unsafe impl<D: fidl::encoding::ResourceDialect>
1580 fidl::encoding::Encode<SessionOnSessionStateChangeRequest, D>
1581 for &SessionOnSessionStateChangeRequest
1582 {
1583 #[inline]
1584 unsafe fn encode(
1585 self,
1586 encoder: &mut fidl::encoding::Encoder<'_, D>,
1587 offset: usize,
1588 _depth: fidl::encoding::Depth,
1589 ) -> fidl::Result<()> {
1590 encoder.debug_check_bounds::<SessionOnSessionStateChangeRequest>(offset);
1591 fidl::encoding::Encode::<SessionOnSessionStateChangeRequest, D>::encode(
1593 (<SessionState as fidl::encoding::ValueTypeMarker>::borrow(&self.state),),
1594 encoder,
1595 offset,
1596 _depth,
1597 )
1598 }
1599 }
1600 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SessionState, D>>
1601 fidl::encoding::Encode<SessionOnSessionStateChangeRequest, D> for (T0,)
1602 {
1603 #[inline]
1604 unsafe fn encode(
1605 self,
1606 encoder: &mut fidl::encoding::Encoder<'_, D>,
1607 offset: usize,
1608 depth: fidl::encoding::Depth,
1609 ) -> fidl::Result<()> {
1610 encoder.debug_check_bounds::<SessionOnSessionStateChangeRequest>(offset);
1611 self.0.encode(encoder, offset + 0, depth)?;
1615 Ok(())
1616 }
1617 }
1618
1619 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1620 for SessionOnSessionStateChangeRequest
1621 {
1622 #[inline(always)]
1623 fn new_empty() -> Self {
1624 Self { state: fidl::new_empty!(SessionState, D) }
1625 }
1626
1627 #[inline]
1628 unsafe fn decode(
1629 &mut self,
1630 decoder: &mut fidl::encoding::Decoder<'_, D>,
1631 offset: usize,
1632 _depth: fidl::encoding::Depth,
1633 ) -> fidl::Result<()> {
1634 decoder.debug_check_bounds::<Self>(offset);
1635 fidl::decode!(SessionState, D, &mut self.state, decoder, offset + 0, _depth)?;
1637 Ok(())
1638 }
1639 }
1640
1641 impl fidl::encoding::ValueTypeMarker for SessionWatchAlertResponse {
1642 type Borrowed<'a> = &'a Self;
1643 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1644 value
1645 }
1646 }
1647
1648 unsafe impl fidl::encoding::TypeMarker for SessionWatchAlertResponse {
1649 type Owned = Self;
1650
1651 #[inline(always)]
1652 fn inline_align(_context: fidl::encoding::Context) -> usize {
1653 8
1654 }
1655
1656 #[inline(always)]
1657 fn inline_size(_context: fidl::encoding::Context) -> usize {
1658 16
1659 }
1660 }
1661
1662 unsafe impl<D: fidl::encoding::ResourceDialect>
1663 fidl::encoding::Encode<SessionWatchAlertResponse, D> for &SessionWatchAlertResponse
1664 {
1665 #[inline]
1666 unsafe fn encode(
1667 self,
1668 encoder: &mut fidl::encoding::Encoder<'_, D>,
1669 offset: usize,
1670 _depth: fidl::encoding::Depth,
1671 ) -> fidl::Result<()> {
1672 encoder.debug_check_bounds::<SessionWatchAlertResponse>(offset);
1673 fidl::encoding::Encode::<SessionWatchAlertResponse, D>::encode(
1675 (<fidl::encoding::BoundedString<14> as fidl::encoding::ValueTypeMarker>::borrow(
1676 &self.alert_name,
1677 ),),
1678 encoder,
1679 offset,
1680 _depth,
1681 )
1682 }
1683 }
1684 unsafe impl<
1685 D: fidl::encoding::ResourceDialect,
1686 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<14>, D>,
1687 > fidl::encoding::Encode<SessionWatchAlertResponse, D> for (T0,)
1688 {
1689 #[inline]
1690 unsafe fn encode(
1691 self,
1692 encoder: &mut fidl::encoding::Encoder<'_, D>,
1693 offset: usize,
1694 depth: fidl::encoding::Depth,
1695 ) -> fidl::Result<()> {
1696 encoder.debug_check_bounds::<SessionWatchAlertResponse>(offset);
1697 self.0.encode(encoder, offset + 0, depth)?;
1701 Ok(())
1702 }
1703 }
1704
1705 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1706 for SessionWatchAlertResponse
1707 {
1708 #[inline(always)]
1709 fn new_empty() -> Self {
1710 Self { alert_name: fidl::new_empty!(fidl::encoding::BoundedString<14>, D) }
1711 }
1712
1713 #[inline]
1714 unsafe fn decode(
1715 &mut self,
1716 decoder: &mut fidl::encoding::Decoder<'_, D>,
1717 offset: usize,
1718 _depth: fidl::encoding::Depth,
1719 ) -> fidl::Result<()> {
1720 decoder.debug_check_bounds::<Self>(offset);
1721 fidl::decode!(
1723 fidl::encoding::BoundedString<14>,
1724 D,
1725 &mut self.alert_name,
1726 decoder,
1727 offset + 0,
1728 _depth
1729 )?;
1730 Ok(())
1731 }
1732 }
1733
1734 impl FxtVersion {
1735 #[inline(always)]
1736 fn max_ordinal_present(&self) -> u64 {
1737 if let Some(_) = self.minor {
1738 return 2;
1739 }
1740 if let Some(_) = self.major {
1741 return 1;
1742 }
1743 0
1744 }
1745 }
1746
1747 impl fidl::encoding::ValueTypeMarker for FxtVersion {
1748 type Borrowed<'a> = &'a Self;
1749 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1750 value
1751 }
1752 }
1753
1754 unsafe impl fidl::encoding::TypeMarker for FxtVersion {
1755 type Owned = Self;
1756
1757 #[inline(always)]
1758 fn inline_align(_context: fidl::encoding::Context) -> usize {
1759 8
1760 }
1761
1762 #[inline(always)]
1763 fn inline_size(_context: fidl::encoding::Context) -> usize {
1764 16
1765 }
1766 }
1767
1768 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FxtVersion, D>
1769 for &FxtVersion
1770 {
1771 unsafe fn encode(
1772 self,
1773 encoder: &mut fidl::encoding::Encoder<'_, D>,
1774 offset: usize,
1775 mut depth: fidl::encoding::Depth,
1776 ) -> fidl::Result<()> {
1777 encoder.debug_check_bounds::<FxtVersion>(offset);
1778 let max_ordinal: u64 = self.max_ordinal_present();
1780 encoder.write_num(max_ordinal, offset);
1781 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1782 if max_ordinal == 0 {
1784 return Ok(());
1785 }
1786 depth.increment()?;
1787 let envelope_size = 8;
1788 let bytes_len = max_ordinal as usize * envelope_size;
1789 #[allow(unused_variables)]
1790 let offset = encoder.out_of_line_offset(bytes_len);
1791 let mut _prev_end_offset: usize = 0;
1792 if 1 > max_ordinal {
1793 return Ok(());
1794 }
1795
1796 let cur_offset: usize = (1 - 1) * envelope_size;
1799
1800 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1802
1803 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1808 self.major.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1809 encoder,
1810 offset + cur_offset,
1811 depth,
1812 )?;
1813
1814 _prev_end_offset = cur_offset + envelope_size;
1815 if 2 > max_ordinal {
1816 return Ok(());
1817 }
1818
1819 let cur_offset: usize = (2 - 1) * envelope_size;
1822
1823 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1825
1826 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1831 self.minor.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1832 encoder,
1833 offset + cur_offset,
1834 depth,
1835 )?;
1836
1837 _prev_end_offset = cur_offset + envelope_size;
1838
1839 Ok(())
1840 }
1841 }
1842
1843 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FxtVersion {
1844 #[inline(always)]
1845 fn new_empty() -> Self {
1846 Self::default()
1847 }
1848
1849 unsafe fn decode(
1850 &mut self,
1851 decoder: &mut fidl::encoding::Decoder<'_, D>,
1852 offset: usize,
1853 mut depth: fidl::encoding::Depth,
1854 ) -> fidl::Result<()> {
1855 decoder.debug_check_bounds::<Self>(offset);
1856 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1857 None => return Err(fidl::Error::NotNullable),
1858 Some(len) => len,
1859 };
1860 if len == 0 {
1862 return Ok(());
1863 };
1864 depth.increment()?;
1865 let envelope_size = 8;
1866 let bytes_len = len * envelope_size;
1867 let offset = decoder.out_of_line_offset(bytes_len)?;
1868 let mut _next_ordinal_to_read = 0;
1870 let mut next_offset = offset;
1871 let end_offset = offset + bytes_len;
1872 _next_ordinal_to_read += 1;
1873 if next_offset >= end_offset {
1874 return Ok(());
1875 }
1876
1877 while _next_ordinal_to_read < 1 {
1879 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1880 _next_ordinal_to_read += 1;
1881 next_offset += envelope_size;
1882 }
1883
1884 let next_out_of_line = decoder.next_out_of_line();
1885 let handles_before = decoder.remaining_handles();
1886 if let Some((inlined, num_bytes, num_handles)) =
1887 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1888 {
1889 let member_inline_size =
1890 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1891 if inlined != (member_inline_size <= 4) {
1892 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1893 }
1894 let inner_offset;
1895 let mut inner_depth = depth.clone();
1896 if inlined {
1897 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1898 inner_offset = next_offset;
1899 } else {
1900 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1901 inner_depth.increment()?;
1902 }
1903 let val_ref = self.major.get_or_insert_with(|| fidl::new_empty!(u32, D));
1904 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1905 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1906 {
1907 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1908 }
1909 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1910 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1911 }
1912 }
1913
1914 next_offset += envelope_size;
1915 _next_ordinal_to_read += 1;
1916 if next_offset >= end_offset {
1917 return Ok(());
1918 }
1919
1920 while _next_ordinal_to_read < 2 {
1922 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1923 _next_ordinal_to_read += 1;
1924 next_offset += envelope_size;
1925 }
1926
1927 let next_out_of_line = decoder.next_out_of_line();
1928 let handles_before = decoder.remaining_handles();
1929 if let Some((inlined, num_bytes, num_handles)) =
1930 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1931 {
1932 let member_inline_size =
1933 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1934 if inlined != (member_inline_size <= 4) {
1935 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1936 }
1937 let inner_offset;
1938 let mut inner_depth = depth.clone();
1939 if inlined {
1940 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1941 inner_offset = next_offset;
1942 } else {
1943 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1944 inner_depth.increment()?;
1945 }
1946 let val_ref = self.minor.get_or_insert_with(|| fidl::new_empty!(u32, D));
1947 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1948 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1949 {
1950 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1951 }
1952 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1953 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1954 }
1955 }
1956
1957 next_offset += envelope_size;
1958
1959 while next_offset < end_offset {
1961 _next_ordinal_to_read += 1;
1962 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1963 next_offset += envelope_size;
1964 }
1965
1966 Ok(())
1967 }
1968 }
1969
1970 impl ProviderInfo {
1971 #[inline(always)]
1972 fn max_ordinal_present(&self) -> u64 {
1973 if let Some(_) = self.name {
1974 return 3;
1975 }
1976 if let Some(_) = self.pid {
1977 return 2;
1978 }
1979 if let Some(_) = self.id {
1980 return 1;
1981 }
1982 0
1983 }
1984 }
1985
1986 impl fidl::encoding::ValueTypeMarker for ProviderInfo {
1987 type Borrowed<'a> = &'a Self;
1988 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1989 value
1990 }
1991 }
1992
1993 unsafe impl fidl::encoding::TypeMarker for ProviderInfo {
1994 type Owned = Self;
1995
1996 #[inline(always)]
1997 fn inline_align(_context: fidl::encoding::Context) -> usize {
1998 8
1999 }
2000
2001 #[inline(always)]
2002 fn inline_size(_context: fidl::encoding::Context) -> usize {
2003 16
2004 }
2005 }
2006
2007 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProviderInfo, D>
2008 for &ProviderInfo
2009 {
2010 unsafe fn encode(
2011 self,
2012 encoder: &mut fidl::encoding::Encoder<'_, D>,
2013 offset: usize,
2014 mut depth: fidl::encoding::Depth,
2015 ) -> fidl::Result<()> {
2016 encoder.debug_check_bounds::<ProviderInfo>(offset);
2017 let max_ordinal: u64 = self.max_ordinal_present();
2019 encoder.write_num(max_ordinal, offset);
2020 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2021 if max_ordinal == 0 {
2023 return Ok(());
2024 }
2025 depth.increment()?;
2026 let envelope_size = 8;
2027 let bytes_len = max_ordinal as usize * envelope_size;
2028 #[allow(unused_variables)]
2029 let offset = encoder.out_of_line_offset(bytes_len);
2030 let mut _prev_end_offset: usize = 0;
2031 if 1 > max_ordinal {
2032 return Ok(());
2033 }
2034
2035 let cur_offset: usize = (1 - 1) * envelope_size;
2038
2039 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2041
2042 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2047 self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2048 encoder,
2049 offset + cur_offset,
2050 depth,
2051 )?;
2052
2053 _prev_end_offset = cur_offset + envelope_size;
2054 if 2 > max_ordinal {
2055 return Ok(());
2056 }
2057
2058 let cur_offset: usize = (2 - 1) * envelope_size;
2061
2062 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2064
2065 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2070 self.pid.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2071 encoder,
2072 offset + cur_offset,
2073 depth,
2074 )?;
2075
2076 _prev_end_offset = cur_offset + envelope_size;
2077 if 3 > max_ordinal {
2078 return Ok(());
2079 }
2080
2081 let cur_offset: usize = (3 - 1) * envelope_size;
2084
2085 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2087
2088 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
2093 self.name.as_ref().map(
2094 <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
2095 ),
2096 encoder,
2097 offset + cur_offset,
2098 depth,
2099 )?;
2100
2101 _prev_end_offset = cur_offset + envelope_size;
2102
2103 Ok(())
2104 }
2105 }
2106
2107 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProviderInfo {
2108 #[inline(always)]
2109 fn new_empty() -> Self {
2110 Self::default()
2111 }
2112
2113 unsafe fn decode(
2114 &mut self,
2115 decoder: &mut fidl::encoding::Decoder<'_, D>,
2116 offset: usize,
2117 mut depth: fidl::encoding::Depth,
2118 ) -> fidl::Result<()> {
2119 decoder.debug_check_bounds::<Self>(offset);
2120 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2121 None => return Err(fidl::Error::NotNullable),
2122 Some(len) => len,
2123 };
2124 if len == 0 {
2126 return Ok(());
2127 };
2128 depth.increment()?;
2129 let envelope_size = 8;
2130 let bytes_len = len * envelope_size;
2131 let offset = decoder.out_of_line_offset(bytes_len)?;
2132 let mut _next_ordinal_to_read = 0;
2134 let mut next_offset = offset;
2135 let end_offset = offset + bytes_len;
2136 _next_ordinal_to_read += 1;
2137 if next_offset >= end_offset {
2138 return Ok(());
2139 }
2140
2141 while _next_ordinal_to_read < 1 {
2143 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2144 _next_ordinal_to_read += 1;
2145 next_offset += envelope_size;
2146 }
2147
2148 let next_out_of_line = decoder.next_out_of_line();
2149 let handles_before = decoder.remaining_handles();
2150 if let Some((inlined, num_bytes, num_handles)) =
2151 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2152 {
2153 let member_inline_size =
2154 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2155 if inlined != (member_inline_size <= 4) {
2156 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2157 }
2158 let inner_offset;
2159 let mut inner_depth = depth.clone();
2160 if inlined {
2161 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2162 inner_offset = next_offset;
2163 } else {
2164 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2165 inner_depth.increment()?;
2166 }
2167 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2168 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2169 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2170 {
2171 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2172 }
2173 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2174 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2175 }
2176 }
2177
2178 next_offset += envelope_size;
2179 _next_ordinal_to_read += 1;
2180 if next_offset >= end_offset {
2181 return Ok(());
2182 }
2183
2184 while _next_ordinal_to_read < 2 {
2186 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2187 _next_ordinal_to_read += 1;
2188 next_offset += envelope_size;
2189 }
2190
2191 let next_out_of_line = decoder.next_out_of_line();
2192 let handles_before = decoder.remaining_handles();
2193 if let Some((inlined, num_bytes, num_handles)) =
2194 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2195 {
2196 let member_inline_size =
2197 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2198 if inlined != (member_inline_size <= 4) {
2199 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2200 }
2201 let inner_offset;
2202 let mut inner_depth = depth.clone();
2203 if inlined {
2204 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2205 inner_offset = next_offset;
2206 } else {
2207 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2208 inner_depth.increment()?;
2209 }
2210 let val_ref = self.pid.get_or_insert_with(|| fidl::new_empty!(u64, D));
2211 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2212 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2213 {
2214 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2215 }
2216 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2217 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2218 }
2219 }
2220
2221 next_offset += envelope_size;
2222 _next_ordinal_to_read += 1;
2223 if next_offset >= end_offset {
2224 return Ok(());
2225 }
2226
2227 while _next_ordinal_to_read < 3 {
2229 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2230 _next_ordinal_to_read += 1;
2231 next_offset += envelope_size;
2232 }
2233
2234 let next_out_of_line = decoder.next_out_of_line();
2235 let handles_before = decoder.remaining_handles();
2236 if let Some((inlined, num_bytes, num_handles)) =
2237 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2238 {
2239 let member_inline_size =
2240 <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
2241 decoder.context,
2242 );
2243 if inlined != (member_inline_size <= 4) {
2244 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2245 }
2246 let inner_offset;
2247 let mut inner_depth = depth.clone();
2248 if inlined {
2249 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2250 inner_offset = next_offset;
2251 } else {
2252 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2253 inner_depth.increment()?;
2254 }
2255 let val_ref = self
2256 .name
2257 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
2258 fidl::decode!(
2259 fidl::encoding::BoundedString<100>,
2260 D,
2261 val_ref,
2262 decoder,
2263 inner_offset,
2264 inner_depth
2265 )?;
2266 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2267 {
2268 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2269 }
2270 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2271 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2272 }
2273 }
2274
2275 next_offset += envelope_size;
2276
2277 while next_offset < end_offset {
2279 _next_ordinal_to_read += 1;
2280 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2281 next_offset += envelope_size;
2282 }
2283
2284 Ok(())
2285 }
2286 }
2287
2288 impl ProviderSpec {
2289 #[inline(always)]
2290 fn max_ordinal_present(&self) -> u64 {
2291 if let Some(_) = self.categories {
2292 return 3;
2293 }
2294 if let Some(_) = self.buffer_size_megabytes_hint {
2295 return 2;
2296 }
2297 if let Some(_) = self.name {
2298 return 1;
2299 }
2300 0
2301 }
2302 }
2303
2304 impl fidl::encoding::ValueTypeMarker for ProviderSpec {
2305 type Borrowed<'a> = &'a Self;
2306 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2307 value
2308 }
2309 }
2310
2311 unsafe impl fidl::encoding::TypeMarker for ProviderSpec {
2312 type Owned = Self;
2313
2314 #[inline(always)]
2315 fn inline_align(_context: fidl::encoding::Context) -> usize {
2316 8
2317 }
2318
2319 #[inline(always)]
2320 fn inline_size(_context: fidl::encoding::Context) -> usize {
2321 16
2322 }
2323 }
2324
2325 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProviderSpec, D>
2326 for &ProviderSpec
2327 {
2328 unsafe fn encode(
2329 self,
2330 encoder: &mut fidl::encoding::Encoder<'_, D>,
2331 offset: usize,
2332 mut depth: fidl::encoding::Depth,
2333 ) -> fidl::Result<()> {
2334 encoder.debug_check_bounds::<ProviderSpec>(offset);
2335 let max_ordinal: u64 = self.max_ordinal_present();
2337 encoder.write_num(max_ordinal, offset);
2338 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2339 if max_ordinal == 0 {
2341 return Ok(());
2342 }
2343 depth.increment()?;
2344 let envelope_size = 8;
2345 let bytes_len = max_ordinal as usize * envelope_size;
2346 #[allow(unused_variables)]
2347 let offset = encoder.out_of_line_offset(bytes_len);
2348 let mut _prev_end_offset: usize = 0;
2349 if 1 > max_ordinal {
2350 return Ok(());
2351 }
2352
2353 let cur_offset: usize = (1 - 1) * envelope_size;
2356
2357 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2359
2360 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
2365 self.name.as_ref().map(
2366 <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
2367 ),
2368 encoder,
2369 offset + cur_offset,
2370 depth,
2371 )?;
2372
2373 _prev_end_offset = cur_offset + envelope_size;
2374 if 2 > max_ordinal {
2375 return Ok(());
2376 }
2377
2378 let cur_offset: usize = (2 - 1) * envelope_size;
2381
2382 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2384
2385 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2390 self.buffer_size_megabytes_hint
2391 .as_ref()
2392 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2393 encoder,
2394 offset + cur_offset,
2395 depth,
2396 )?;
2397
2398 _prev_end_offset = cur_offset + envelope_size;
2399 if 3 > max_ordinal {
2400 return Ok(());
2401 }
2402
2403 let cur_offset: usize = (3 - 1) * envelope_size;
2406
2407 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2409
2410 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>, D>(
2415 self.categories.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000> as fidl::encoding::ValueTypeMarker>::borrow),
2416 encoder, offset + cur_offset, depth
2417 )?;
2418
2419 _prev_end_offset = cur_offset + envelope_size;
2420
2421 Ok(())
2422 }
2423 }
2424
2425 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProviderSpec {
2426 #[inline(always)]
2427 fn new_empty() -> Self {
2428 Self::default()
2429 }
2430
2431 unsafe fn decode(
2432 &mut self,
2433 decoder: &mut fidl::encoding::Decoder<'_, D>,
2434 offset: usize,
2435 mut depth: fidl::encoding::Depth,
2436 ) -> fidl::Result<()> {
2437 decoder.debug_check_bounds::<Self>(offset);
2438 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2439 None => return Err(fidl::Error::NotNullable),
2440 Some(len) => len,
2441 };
2442 if len == 0 {
2444 return Ok(());
2445 };
2446 depth.increment()?;
2447 let envelope_size = 8;
2448 let bytes_len = len * envelope_size;
2449 let offset = decoder.out_of_line_offset(bytes_len)?;
2450 let mut _next_ordinal_to_read = 0;
2452 let mut next_offset = offset;
2453 let end_offset = offset + bytes_len;
2454 _next_ordinal_to_read += 1;
2455 if next_offset >= end_offset {
2456 return Ok(());
2457 }
2458
2459 while _next_ordinal_to_read < 1 {
2461 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2462 _next_ordinal_to_read += 1;
2463 next_offset += envelope_size;
2464 }
2465
2466 let next_out_of_line = decoder.next_out_of_line();
2467 let handles_before = decoder.remaining_handles();
2468 if let Some((inlined, num_bytes, num_handles)) =
2469 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2470 {
2471 let member_inline_size =
2472 <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
2473 decoder.context,
2474 );
2475 if inlined != (member_inline_size <= 4) {
2476 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2477 }
2478 let inner_offset;
2479 let mut inner_depth = depth.clone();
2480 if inlined {
2481 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2482 inner_offset = next_offset;
2483 } else {
2484 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2485 inner_depth.increment()?;
2486 }
2487 let val_ref = self
2488 .name
2489 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
2490 fidl::decode!(
2491 fidl::encoding::BoundedString<100>,
2492 D,
2493 val_ref,
2494 decoder,
2495 inner_offset,
2496 inner_depth
2497 )?;
2498 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2499 {
2500 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2501 }
2502 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2503 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2504 }
2505 }
2506
2507 next_offset += envelope_size;
2508 _next_ordinal_to_read += 1;
2509 if next_offset >= end_offset {
2510 return Ok(());
2511 }
2512
2513 while _next_ordinal_to_read < 2 {
2515 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2516 _next_ordinal_to_read += 1;
2517 next_offset += envelope_size;
2518 }
2519
2520 let next_out_of_line = decoder.next_out_of_line();
2521 let handles_before = decoder.remaining_handles();
2522 if let Some((inlined, num_bytes, num_handles)) =
2523 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2524 {
2525 let member_inline_size =
2526 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2527 if inlined != (member_inline_size <= 4) {
2528 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2529 }
2530 let inner_offset;
2531 let mut inner_depth = depth.clone();
2532 if inlined {
2533 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2534 inner_offset = next_offset;
2535 } else {
2536 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2537 inner_depth.increment()?;
2538 }
2539 let val_ref =
2540 self.buffer_size_megabytes_hint.get_or_insert_with(|| fidl::new_empty!(u32, D));
2541 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2542 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2543 {
2544 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2545 }
2546 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2547 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2548 }
2549 }
2550
2551 next_offset += envelope_size;
2552 _next_ordinal_to_read += 1;
2553 if next_offset >= end_offset {
2554 return Ok(());
2555 }
2556
2557 while _next_ordinal_to_read < 3 {
2559 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2560 _next_ordinal_to_read += 1;
2561 next_offset += envelope_size;
2562 }
2563
2564 let next_out_of_line = decoder.next_out_of_line();
2565 let handles_before = decoder.remaining_handles();
2566 if let Some((inlined, num_bytes, num_handles)) =
2567 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2568 {
2569 let member_inline_size = <fidl::encoding::Vector<
2570 fidl::encoding::BoundedString<100>,
2571 5000,
2572 > as fidl::encoding::TypeMarker>::inline_size(
2573 decoder.context
2574 );
2575 if inlined != (member_inline_size <= 4) {
2576 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2577 }
2578 let inner_offset;
2579 let mut inner_depth = depth.clone();
2580 if inlined {
2581 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2582 inner_offset = next_offset;
2583 } else {
2584 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2585 inner_depth.increment()?;
2586 }
2587 let val_ref = self.categories.get_or_insert_with(|| {
2588 fidl::new_empty!(
2589 fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>,
2590 D
2591 )
2592 });
2593 fidl::decode!(
2594 fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>,
2595 D,
2596 val_ref,
2597 decoder,
2598 inner_offset,
2599 inner_depth
2600 )?;
2601 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2602 {
2603 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2604 }
2605 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2606 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2607 }
2608 }
2609
2610 next_offset += envelope_size;
2611
2612 while next_offset < end_offset {
2614 _next_ordinal_to_read += 1;
2615 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2616 next_offset += envelope_size;
2617 }
2618
2619 Ok(())
2620 }
2621 }
2622
2623 impl ProviderStats {
2624 #[inline(always)]
2625 fn max_ordinal_present(&self) -> u64 {
2626 if let Some(_) = self.non_durable_bytes_written {
2627 return 7;
2628 }
2629 if let Some(_) = self.percentage_durable_buffer_used {
2630 return 6;
2631 }
2632 if let Some(_) = self.records_dropped {
2633 return 5;
2634 }
2635 if let Some(_) = self.buffer_wrapped_count {
2636 return 4;
2637 }
2638 if let Some(_) = self.buffering_mode {
2639 return 3;
2640 }
2641 if let Some(_) = self.pid {
2642 return 2;
2643 }
2644 if let Some(_) = self.name {
2645 return 1;
2646 }
2647 0
2648 }
2649 }
2650
2651 impl fidl::encoding::ValueTypeMarker for ProviderStats {
2652 type Borrowed<'a> = &'a Self;
2653 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2654 value
2655 }
2656 }
2657
2658 unsafe impl fidl::encoding::TypeMarker for ProviderStats {
2659 type Owned = Self;
2660
2661 #[inline(always)]
2662 fn inline_align(_context: fidl::encoding::Context) -> usize {
2663 8
2664 }
2665
2666 #[inline(always)]
2667 fn inline_size(_context: fidl::encoding::Context) -> usize {
2668 16
2669 }
2670 }
2671
2672 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProviderStats, D>
2673 for &ProviderStats
2674 {
2675 unsafe fn encode(
2676 self,
2677 encoder: &mut fidl::encoding::Encoder<'_, D>,
2678 offset: usize,
2679 mut depth: fidl::encoding::Depth,
2680 ) -> fidl::Result<()> {
2681 encoder.debug_check_bounds::<ProviderStats>(offset);
2682 let max_ordinal: u64 = self.max_ordinal_present();
2684 encoder.write_num(max_ordinal, offset);
2685 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2686 if max_ordinal == 0 {
2688 return Ok(());
2689 }
2690 depth.increment()?;
2691 let envelope_size = 8;
2692 let bytes_len = max_ordinal as usize * envelope_size;
2693 #[allow(unused_variables)]
2694 let offset = encoder.out_of_line_offset(bytes_len);
2695 let mut _prev_end_offset: usize = 0;
2696 if 1 > max_ordinal {
2697 return Ok(());
2698 }
2699
2700 let cur_offset: usize = (1 - 1) * envelope_size;
2703
2704 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2706
2707 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
2712 self.name.as_ref().map(
2713 <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
2714 ),
2715 encoder,
2716 offset + cur_offset,
2717 depth,
2718 )?;
2719
2720 _prev_end_offset = cur_offset + envelope_size;
2721 if 2 > max_ordinal {
2722 return Ok(());
2723 }
2724
2725 let cur_offset: usize = (2 - 1) * envelope_size;
2728
2729 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2731
2732 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2737 self.pid.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2738 encoder,
2739 offset + cur_offset,
2740 depth,
2741 )?;
2742
2743 _prev_end_offset = cur_offset + envelope_size;
2744 if 3 > max_ordinal {
2745 return Ok(());
2746 }
2747
2748 let cur_offset: usize = (3 - 1) * envelope_size;
2751
2752 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2754
2755 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_tracing__common::BufferingMode, D>(
2760 self.buffering_mode.as_ref().map(<fidl_fuchsia_tracing__common::BufferingMode as fidl::encoding::ValueTypeMarker>::borrow),
2761 encoder, offset + cur_offset, depth
2762 )?;
2763
2764 _prev_end_offset = cur_offset + envelope_size;
2765 if 4 > max_ordinal {
2766 return Ok(());
2767 }
2768
2769 let cur_offset: usize = (4 - 1) * envelope_size;
2772
2773 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2775
2776 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2781 self.buffer_wrapped_count
2782 .as_ref()
2783 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2784 encoder,
2785 offset + cur_offset,
2786 depth,
2787 )?;
2788
2789 _prev_end_offset = cur_offset + envelope_size;
2790 if 5 > max_ordinal {
2791 return Ok(());
2792 }
2793
2794 let cur_offset: usize = (5 - 1) * envelope_size;
2797
2798 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2800
2801 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2806 self.records_dropped.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2807 encoder,
2808 offset + cur_offset,
2809 depth,
2810 )?;
2811
2812 _prev_end_offset = cur_offset + envelope_size;
2813 if 6 > max_ordinal {
2814 return Ok(());
2815 }
2816
2817 let cur_offset: usize = (6 - 1) * envelope_size;
2820
2821 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2823
2824 fidl::encoding::encode_in_envelope_optional::<f32, D>(
2829 self.percentage_durable_buffer_used
2830 .as_ref()
2831 .map(<f32 as fidl::encoding::ValueTypeMarker>::borrow),
2832 encoder,
2833 offset + cur_offset,
2834 depth,
2835 )?;
2836
2837 _prev_end_offset = cur_offset + envelope_size;
2838 if 7 > max_ordinal {
2839 return Ok(());
2840 }
2841
2842 let cur_offset: usize = (7 - 1) * envelope_size;
2845
2846 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2848
2849 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2854 self.non_durable_bytes_written
2855 .as_ref()
2856 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2857 encoder,
2858 offset + cur_offset,
2859 depth,
2860 )?;
2861
2862 _prev_end_offset = cur_offset + envelope_size;
2863
2864 Ok(())
2865 }
2866 }
2867
2868 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProviderStats {
2869 #[inline(always)]
2870 fn new_empty() -> Self {
2871 Self::default()
2872 }
2873
2874 unsafe fn decode(
2875 &mut self,
2876 decoder: &mut fidl::encoding::Decoder<'_, D>,
2877 offset: usize,
2878 mut depth: fidl::encoding::Depth,
2879 ) -> fidl::Result<()> {
2880 decoder.debug_check_bounds::<Self>(offset);
2881 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2882 None => return Err(fidl::Error::NotNullable),
2883 Some(len) => len,
2884 };
2885 if len == 0 {
2887 return Ok(());
2888 };
2889 depth.increment()?;
2890 let envelope_size = 8;
2891 let bytes_len = len * envelope_size;
2892 let offset = decoder.out_of_line_offset(bytes_len)?;
2893 let mut _next_ordinal_to_read = 0;
2895 let mut next_offset = offset;
2896 let end_offset = offset + bytes_len;
2897 _next_ordinal_to_read += 1;
2898 if next_offset >= end_offset {
2899 return Ok(());
2900 }
2901
2902 while _next_ordinal_to_read < 1 {
2904 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2905 _next_ordinal_to_read += 1;
2906 next_offset += envelope_size;
2907 }
2908
2909 let next_out_of_line = decoder.next_out_of_line();
2910 let handles_before = decoder.remaining_handles();
2911 if let Some((inlined, num_bytes, num_handles)) =
2912 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2913 {
2914 let member_inline_size =
2915 <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
2916 decoder.context,
2917 );
2918 if inlined != (member_inline_size <= 4) {
2919 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2920 }
2921 let inner_offset;
2922 let mut inner_depth = depth.clone();
2923 if inlined {
2924 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2925 inner_offset = next_offset;
2926 } else {
2927 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2928 inner_depth.increment()?;
2929 }
2930 let val_ref = self
2931 .name
2932 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
2933 fidl::decode!(
2934 fidl::encoding::BoundedString<100>,
2935 D,
2936 val_ref,
2937 decoder,
2938 inner_offset,
2939 inner_depth
2940 )?;
2941 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2942 {
2943 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2944 }
2945 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2946 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2947 }
2948 }
2949
2950 next_offset += envelope_size;
2951 _next_ordinal_to_read += 1;
2952 if next_offset >= end_offset {
2953 return Ok(());
2954 }
2955
2956 while _next_ordinal_to_read < 2 {
2958 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2959 _next_ordinal_to_read += 1;
2960 next_offset += envelope_size;
2961 }
2962
2963 let next_out_of_line = decoder.next_out_of_line();
2964 let handles_before = decoder.remaining_handles();
2965 if let Some((inlined, num_bytes, num_handles)) =
2966 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2967 {
2968 let member_inline_size =
2969 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2970 if inlined != (member_inline_size <= 4) {
2971 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2972 }
2973 let inner_offset;
2974 let mut inner_depth = depth.clone();
2975 if inlined {
2976 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2977 inner_offset = next_offset;
2978 } else {
2979 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2980 inner_depth.increment()?;
2981 }
2982 let val_ref = self.pid.get_or_insert_with(|| fidl::new_empty!(u64, D));
2983 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2984 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2985 {
2986 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2987 }
2988 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2989 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2990 }
2991 }
2992
2993 next_offset += envelope_size;
2994 _next_ordinal_to_read += 1;
2995 if next_offset >= end_offset {
2996 return Ok(());
2997 }
2998
2999 while _next_ordinal_to_read < 3 {
3001 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3002 _next_ordinal_to_read += 1;
3003 next_offset += envelope_size;
3004 }
3005
3006 let next_out_of_line = decoder.next_out_of_line();
3007 let handles_before = decoder.remaining_handles();
3008 if let Some((inlined, num_bytes, num_handles)) =
3009 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3010 {
3011 let member_inline_size = <fidl_fuchsia_tracing__common::BufferingMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3012 if inlined != (member_inline_size <= 4) {
3013 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3014 }
3015 let inner_offset;
3016 let mut inner_depth = depth.clone();
3017 if inlined {
3018 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3019 inner_offset = next_offset;
3020 } else {
3021 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3022 inner_depth.increment()?;
3023 }
3024 let val_ref = self.buffering_mode.get_or_insert_with(|| {
3025 fidl::new_empty!(fidl_fuchsia_tracing__common::BufferingMode, D)
3026 });
3027 fidl::decode!(
3028 fidl_fuchsia_tracing__common::BufferingMode,
3029 D,
3030 val_ref,
3031 decoder,
3032 inner_offset,
3033 inner_depth
3034 )?;
3035 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3036 {
3037 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3038 }
3039 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3040 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3041 }
3042 }
3043
3044 next_offset += envelope_size;
3045 _next_ordinal_to_read += 1;
3046 if next_offset >= end_offset {
3047 return Ok(());
3048 }
3049
3050 while _next_ordinal_to_read < 4 {
3052 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3053 _next_ordinal_to_read += 1;
3054 next_offset += envelope_size;
3055 }
3056
3057 let next_out_of_line = decoder.next_out_of_line();
3058 let handles_before = decoder.remaining_handles();
3059 if let Some((inlined, num_bytes, num_handles)) =
3060 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3061 {
3062 let member_inline_size =
3063 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3064 if inlined != (member_inline_size <= 4) {
3065 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3066 }
3067 let inner_offset;
3068 let mut inner_depth = depth.clone();
3069 if inlined {
3070 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3071 inner_offset = next_offset;
3072 } else {
3073 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3074 inner_depth.increment()?;
3075 }
3076 let val_ref =
3077 self.buffer_wrapped_count.get_or_insert_with(|| fidl::new_empty!(u32, D));
3078 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3079 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3080 {
3081 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3082 }
3083 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3084 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3085 }
3086 }
3087
3088 next_offset += envelope_size;
3089 _next_ordinal_to_read += 1;
3090 if next_offset >= end_offset {
3091 return Ok(());
3092 }
3093
3094 while _next_ordinal_to_read < 5 {
3096 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3097 _next_ordinal_to_read += 1;
3098 next_offset += envelope_size;
3099 }
3100
3101 let next_out_of_line = decoder.next_out_of_line();
3102 let handles_before = decoder.remaining_handles();
3103 if let Some((inlined, num_bytes, num_handles)) =
3104 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3105 {
3106 let member_inline_size =
3107 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3108 if inlined != (member_inline_size <= 4) {
3109 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3110 }
3111 let inner_offset;
3112 let mut inner_depth = depth.clone();
3113 if inlined {
3114 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3115 inner_offset = next_offset;
3116 } else {
3117 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3118 inner_depth.increment()?;
3119 }
3120 let val_ref = self.records_dropped.get_or_insert_with(|| fidl::new_empty!(u64, D));
3121 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3122 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3123 {
3124 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3125 }
3126 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3127 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3128 }
3129 }
3130
3131 next_offset += envelope_size;
3132 _next_ordinal_to_read += 1;
3133 if next_offset >= end_offset {
3134 return Ok(());
3135 }
3136
3137 while _next_ordinal_to_read < 6 {
3139 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3140 _next_ordinal_to_read += 1;
3141 next_offset += envelope_size;
3142 }
3143
3144 let next_out_of_line = decoder.next_out_of_line();
3145 let handles_before = decoder.remaining_handles();
3146 if let Some((inlined, num_bytes, num_handles)) =
3147 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3148 {
3149 let member_inline_size =
3150 <f32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3151 if inlined != (member_inline_size <= 4) {
3152 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3153 }
3154 let inner_offset;
3155 let mut inner_depth = depth.clone();
3156 if inlined {
3157 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3158 inner_offset = next_offset;
3159 } else {
3160 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3161 inner_depth.increment()?;
3162 }
3163 let val_ref = self
3164 .percentage_durable_buffer_used
3165 .get_or_insert_with(|| fidl::new_empty!(f32, D));
3166 fidl::decode!(f32, D, val_ref, decoder, inner_offset, inner_depth)?;
3167 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3168 {
3169 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3170 }
3171 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3172 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3173 }
3174 }
3175
3176 next_offset += envelope_size;
3177 _next_ordinal_to_read += 1;
3178 if next_offset >= end_offset {
3179 return Ok(());
3180 }
3181
3182 while _next_ordinal_to_read < 7 {
3184 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3185 _next_ordinal_to_read += 1;
3186 next_offset += envelope_size;
3187 }
3188
3189 let next_out_of_line = decoder.next_out_of_line();
3190 let handles_before = decoder.remaining_handles();
3191 if let Some((inlined, num_bytes, num_handles)) =
3192 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3193 {
3194 let member_inline_size =
3195 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3196 if inlined != (member_inline_size <= 4) {
3197 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3198 }
3199 let inner_offset;
3200 let mut inner_depth = depth.clone();
3201 if inlined {
3202 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3203 inner_offset = next_offset;
3204 } else {
3205 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3206 inner_depth.increment()?;
3207 }
3208 let val_ref =
3209 self.non_durable_bytes_written.get_or_insert_with(|| fidl::new_empty!(u64, D));
3210 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3211 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3212 {
3213 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3214 }
3215 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3216 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3217 }
3218 }
3219
3220 next_offset += envelope_size;
3221
3222 while next_offset < end_offset {
3224 _next_ordinal_to_read += 1;
3225 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3226 next_offset += envelope_size;
3227 }
3228
3229 Ok(())
3230 }
3231 }
3232
3233 impl StartOptions {
3234 #[inline(always)]
3235 fn max_ordinal_present(&self) -> u64 {
3236 if let Some(_) = self.additional_categories {
3237 return 2;
3238 }
3239 if let Some(_) = self.buffer_disposition {
3240 return 1;
3241 }
3242 0
3243 }
3244 }
3245
3246 impl fidl::encoding::ValueTypeMarker for StartOptions {
3247 type Borrowed<'a> = &'a Self;
3248 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3249 value
3250 }
3251 }
3252
3253 unsafe impl fidl::encoding::TypeMarker for StartOptions {
3254 type Owned = Self;
3255
3256 #[inline(always)]
3257 fn inline_align(_context: fidl::encoding::Context) -> usize {
3258 8
3259 }
3260
3261 #[inline(always)]
3262 fn inline_size(_context: fidl::encoding::Context) -> usize {
3263 16
3264 }
3265 }
3266
3267 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StartOptions, D>
3268 for &StartOptions
3269 {
3270 unsafe fn encode(
3271 self,
3272 encoder: &mut fidl::encoding::Encoder<'_, D>,
3273 offset: usize,
3274 mut depth: fidl::encoding::Depth,
3275 ) -> fidl::Result<()> {
3276 encoder.debug_check_bounds::<StartOptions>(offset);
3277 let max_ordinal: u64 = self.max_ordinal_present();
3279 encoder.write_num(max_ordinal, offset);
3280 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3281 if max_ordinal == 0 {
3283 return Ok(());
3284 }
3285 depth.increment()?;
3286 let envelope_size = 8;
3287 let bytes_len = max_ordinal as usize * envelope_size;
3288 #[allow(unused_variables)]
3289 let offset = encoder.out_of_line_offset(bytes_len);
3290 let mut _prev_end_offset: usize = 0;
3291 if 1 > max_ordinal {
3292 return Ok(());
3293 }
3294
3295 let cur_offset: usize = (1 - 1) * envelope_size;
3298
3299 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3301
3302 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_tracing__common::BufferDisposition, D>(
3307 self.buffer_disposition.as_ref().map(<fidl_fuchsia_tracing__common::BufferDisposition as fidl::encoding::ValueTypeMarker>::borrow),
3308 encoder, offset + cur_offset, depth
3309 )?;
3310
3311 _prev_end_offset = cur_offset + envelope_size;
3312 if 2 > max_ordinal {
3313 return Ok(());
3314 }
3315
3316 let cur_offset: usize = (2 - 1) * envelope_size;
3319
3320 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3322
3323 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>, D>(
3328 self.additional_categories.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000> as fidl::encoding::ValueTypeMarker>::borrow),
3329 encoder, offset + cur_offset, depth
3330 )?;
3331
3332 _prev_end_offset = cur_offset + envelope_size;
3333
3334 Ok(())
3335 }
3336 }
3337
3338 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartOptions {
3339 #[inline(always)]
3340 fn new_empty() -> Self {
3341 Self::default()
3342 }
3343
3344 unsafe fn decode(
3345 &mut self,
3346 decoder: &mut fidl::encoding::Decoder<'_, D>,
3347 offset: usize,
3348 mut depth: fidl::encoding::Depth,
3349 ) -> fidl::Result<()> {
3350 decoder.debug_check_bounds::<Self>(offset);
3351 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3352 None => return Err(fidl::Error::NotNullable),
3353 Some(len) => len,
3354 };
3355 if len == 0 {
3357 return Ok(());
3358 };
3359 depth.increment()?;
3360 let envelope_size = 8;
3361 let bytes_len = len * envelope_size;
3362 let offset = decoder.out_of_line_offset(bytes_len)?;
3363 let mut _next_ordinal_to_read = 0;
3365 let mut next_offset = offset;
3366 let end_offset = offset + bytes_len;
3367 _next_ordinal_to_read += 1;
3368 if next_offset >= end_offset {
3369 return Ok(());
3370 }
3371
3372 while _next_ordinal_to_read < 1 {
3374 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3375 _next_ordinal_to_read += 1;
3376 next_offset += envelope_size;
3377 }
3378
3379 let next_out_of_line = decoder.next_out_of_line();
3380 let handles_before = decoder.remaining_handles();
3381 if let Some((inlined, num_bytes, num_handles)) =
3382 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3383 {
3384 let member_inline_size = <fidl_fuchsia_tracing__common::BufferDisposition as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3385 if inlined != (member_inline_size <= 4) {
3386 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3387 }
3388 let inner_offset;
3389 let mut inner_depth = depth.clone();
3390 if inlined {
3391 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3392 inner_offset = next_offset;
3393 } else {
3394 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3395 inner_depth.increment()?;
3396 }
3397 let val_ref = self.buffer_disposition.get_or_insert_with(|| {
3398 fidl::new_empty!(fidl_fuchsia_tracing__common::BufferDisposition, D)
3399 });
3400 fidl::decode!(
3401 fidl_fuchsia_tracing__common::BufferDisposition,
3402 D,
3403 val_ref,
3404 decoder,
3405 inner_offset,
3406 inner_depth
3407 )?;
3408 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3409 {
3410 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3411 }
3412 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3413 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3414 }
3415 }
3416
3417 next_offset += envelope_size;
3418 _next_ordinal_to_read += 1;
3419 if next_offset >= end_offset {
3420 return Ok(());
3421 }
3422
3423 while _next_ordinal_to_read < 2 {
3425 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3426 _next_ordinal_to_read += 1;
3427 next_offset += envelope_size;
3428 }
3429
3430 let next_out_of_line = decoder.next_out_of_line();
3431 let handles_before = decoder.remaining_handles();
3432 if let Some((inlined, num_bytes, num_handles)) =
3433 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3434 {
3435 let member_inline_size = <fidl::encoding::Vector<
3436 fidl::encoding::BoundedString<100>,
3437 5000,
3438 > as fidl::encoding::TypeMarker>::inline_size(
3439 decoder.context
3440 );
3441 if inlined != (member_inline_size <= 4) {
3442 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3443 }
3444 let inner_offset;
3445 let mut inner_depth = depth.clone();
3446 if inlined {
3447 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3448 inner_offset = next_offset;
3449 } else {
3450 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3451 inner_depth.increment()?;
3452 }
3453 let val_ref = self.additional_categories.get_or_insert_with(|| {
3454 fidl::new_empty!(
3455 fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>,
3456 D
3457 )
3458 });
3459 fidl::decode!(
3460 fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>,
3461 D,
3462 val_ref,
3463 decoder,
3464 inner_offset,
3465 inner_depth
3466 )?;
3467 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3468 {
3469 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3470 }
3471 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3472 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3473 }
3474 }
3475
3476 next_offset += envelope_size;
3477
3478 while next_offset < end_offset {
3480 _next_ordinal_to_read += 1;
3481 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3482 next_offset += envelope_size;
3483 }
3484
3485 Ok(())
3486 }
3487 }
3488
3489 impl StopOptions {
3490 #[inline(always)]
3491 fn max_ordinal_present(&self) -> u64 {
3492 if let Some(_) = self.write_results {
3493 return 1;
3494 }
3495 0
3496 }
3497 }
3498
3499 impl fidl::encoding::ValueTypeMarker for StopOptions {
3500 type Borrowed<'a> = &'a Self;
3501 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3502 value
3503 }
3504 }
3505
3506 unsafe impl fidl::encoding::TypeMarker for StopOptions {
3507 type Owned = Self;
3508
3509 #[inline(always)]
3510 fn inline_align(_context: fidl::encoding::Context) -> usize {
3511 8
3512 }
3513
3514 #[inline(always)]
3515 fn inline_size(_context: fidl::encoding::Context) -> usize {
3516 16
3517 }
3518 }
3519
3520 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StopOptions, D>
3521 for &StopOptions
3522 {
3523 unsafe fn encode(
3524 self,
3525 encoder: &mut fidl::encoding::Encoder<'_, D>,
3526 offset: usize,
3527 mut depth: fidl::encoding::Depth,
3528 ) -> fidl::Result<()> {
3529 encoder.debug_check_bounds::<StopOptions>(offset);
3530 let max_ordinal: u64 = self.max_ordinal_present();
3532 encoder.write_num(max_ordinal, offset);
3533 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3534 if max_ordinal == 0 {
3536 return Ok(());
3537 }
3538 depth.increment()?;
3539 let envelope_size = 8;
3540 let bytes_len = max_ordinal as usize * envelope_size;
3541 #[allow(unused_variables)]
3542 let offset = encoder.out_of_line_offset(bytes_len);
3543 let mut _prev_end_offset: usize = 0;
3544 if 1 > max_ordinal {
3545 return Ok(());
3546 }
3547
3548 let cur_offset: usize = (1 - 1) * envelope_size;
3551
3552 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3554
3555 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3560 self.write_results.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3561 encoder,
3562 offset + cur_offset,
3563 depth,
3564 )?;
3565
3566 _prev_end_offset = cur_offset + envelope_size;
3567
3568 Ok(())
3569 }
3570 }
3571
3572 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopOptions {
3573 #[inline(always)]
3574 fn new_empty() -> Self {
3575 Self::default()
3576 }
3577
3578 unsafe fn decode(
3579 &mut self,
3580 decoder: &mut fidl::encoding::Decoder<'_, D>,
3581 offset: usize,
3582 mut depth: fidl::encoding::Depth,
3583 ) -> fidl::Result<()> {
3584 decoder.debug_check_bounds::<Self>(offset);
3585 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3586 None => return Err(fidl::Error::NotNullable),
3587 Some(len) => len,
3588 };
3589 if len == 0 {
3591 return Ok(());
3592 };
3593 depth.increment()?;
3594 let envelope_size = 8;
3595 let bytes_len = len * envelope_size;
3596 let offset = decoder.out_of_line_offset(bytes_len)?;
3597 let mut _next_ordinal_to_read = 0;
3599 let mut next_offset = offset;
3600 let end_offset = offset + bytes_len;
3601 _next_ordinal_to_read += 1;
3602 if next_offset >= end_offset {
3603 return Ok(());
3604 }
3605
3606 while _next_ordinal_to_read < 1 {
3608 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3609 _next_ordinal_to_read += 1;
3610 next_offset += envelope_size;
3611 }
3612
3613 let next_out_of_line = decoder.next_out_of_line();
3614 let handles_before = decoder.remaining_handles();
3615 if let Some((inlined, num_bytes, num_handles)) =
3616 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3617 {
3618 let member_inline_size =
3619 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3620 if inlined != (member_inline_size <= 4) {
3621 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3622 }
3623 let inner_offset;
3624 let mut inner_depth = depth.clone();
3625 if inlined {
3626 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3627 inner_offset = next_offset;
3628 } else {
3629 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3630 inner_depth.increment()?;
3631 }
3632 let val_ref = self.write_results.get_or_insert_with(|| fidl::new_empty!(bool, D));
3633 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3634 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3635 {
3636 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3637 }
3638 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3639 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3640 }
3641 }
3642
3643 next_offset += envelope_size;
3644
3645 while next_offset < end_offset {
3647 _next_ordinal_to_read += 1;
3648 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3649 next_offset += envelope_size;
3650 }
3651
3652 Ok(())
3653 }
3654 }
3655
3656 impl StopResult {
3657 #[inline(always)]
3658 fn max_ordinal_present(&self) -> u64 {
3659 if let Some(_) = self.provider_stats {
3660 return 1;
3661 }
3662 0
3663 }
3664 }
3665
3666 impl fidl::encoding::ValueTypeMarker for StopResult {
3667 type Borrowed<'a> = &'a Self;
3668 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3669 value
3670 }
3671 }
3672
3673 unsafe impl fidl::encoding::TypeMarker for StopResult {
3674 type Owned = Self;
3675
3676 #[inline(always)]
3677 fn inline_align(_context: fidl::encoding::Context) -> usize {
3678 8
3679 }
3680
3681 #[inline(always)]
3682 fn inline_size(_context: fidl::encoding::Context) -> usize {
3683 16
3684 }
3685 }
3686
3687 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StopResult, D>
3688 for &StopResult
3689 {
3690 unsafe fn encode(
3691 self,
3692 encoder: &mut fidl::encoding::Encoder<'_, D>,
3693 offset: usize,
3694 mut depth: fidl::encoding::Depth,
3695 ) -> fidl::Result<()> {
3696 encoder.debug_check_bounds::<StopResult>(offset);
3697 let max_ordinal: u64 = self.max_ordinal_present();
3699 encoder.write_num(max_ordinal, offset);
3700 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3701 if max_ordinal == 0 {
3703 return Ok(());
3704 }
3705 depth.increment()?;
3706 let envelope_size = 8;
3707 let bytes_len = max_ordinal as usize * envelope_size;
3708 #[allow(unused_variables)]
3709 let offset = encoder.out_of_line_offset(bytes_len);
3710 let mut _prev_end_offset: usize = 0;
3711 if 1 > max_ordinal {
3712 return Ok(());
3713 }
3714
3715 let cur_offset: usize = (1 - 1) * envelope_size;
3718
3719 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3721
3722 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ProviderStats, 100>, D>(
3727 self.provider_stats.as_ref().map(<fidl::encoding::Vector<ProviderStats, 100> as fidl::encoding::ValueTypeMarker>::borrow),
3728 encoder, offset + cur_offset, depth
3729 )?;
3730
3731 _prev_end_offset = cur_offset + envelope_size;
3732
3733 Ok(())
3734 }
3735 }
3736
3737 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopResult {
3738 #[inline(always)]
3739 fn new_empty() -> Self {
3740 Self::default()
3741 }
3742
3743 unsafe fn decode(
3744 &mut self,
3745 decoder: &mut fidl::encoding::Decoder<'_, D>,
3746 offset: usize,
3747 mut depth: fidl::encoding::Depth,
3748 ) -> fidl::Result<()> {
3749 decoder.debug_check_bounds::<Self>(offset);
3750 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3751 None => return Err(fidl::Error::NotNullable),
3752 Some(len) => len,
3753 };
3754 if len == 0 {
3756 return Ok(());
3757 };
3758 depth.increment()?;
3759 let envelope_size = 8;
3760 let bytes_len = len * envelope_size;
3761 let offset = decoder.out_of_line_offset(bytes_len)?;
3762 let mut _next_ordinal_to_read = 0;
3764 let mut next_offset = offset;
3765 let end_offset = offset + bytes_len;
3766 _next_ordinal_to_read += 1;
3767 if next_offset >= end_offset {
3768 return Ok(());
3769 }
3770
3771 while _next_ordinal_to_read < 1 {
3773 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3774 _next_ordinal_to_read += 1;
3775 next_offset += envelope_size;
3776 }
3777
3778 let next_out_of_line = decoder.next_out_of_line();
3779 let handles_before = decoder.remaining_handles();
3780 if let Some((inlined, num_bytes, num_handles)) =
3781 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3782 {
3783 let member_inline_size = <fidl::encoding::Vector<ProviderStats, 100> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3784 if inlined != (member_inline_size <= 4) {
3785 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3786 }
3787 let inner_offset;
3788 let mut inner_depth = depth.clone();
3789 if inlined {
3790 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3791 inner_offset = next_offset;
3792 } else {
3793 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3794 inner_depth.increment()?;
3795 }
3796 let val_ref = self.provider_stats.get_or_insert_with(
3797 || fidl::new_empty!(fidl::encoding::Vector<ProviderStats, 100>, D),
3798 );
3799 fidl::decode!(fidl::encoding::Vector<ProviderStats, 100>, D, val_ref, decoder, inner_offset, inner_depth)?;
3800 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3801 {
3802 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3803 }
3804 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3805 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3806 }
3807 }
3808
3809 next_offset += envelope_size;
3810
3811 while next_offset < end_offset {
3813 _next_ordinal_to_read += 1;
3814 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3815 next_offset += envelope_size;
3816 }
3817
3818 Ok(())
3819 }
3820 }
3821
3822 impl TraceConfig {
3823 #[inline(always)]
3824 fn max_ordinal_present(&self) -> u64 {
3825 if let Some(_) = self.defer_transfer {
3826 return 7;
3827 }
3828 if let Some(_) = self.version {
3829 return 6;
3830 }
3831 if let Some(_) = self.provider_specs {
3832 return 5;
3833 }
3834 if let Some(_) = self.buffering_mode {
3835 return 4;
3836 }
3837 if let Some(_) = self.start_timeout_milliseconds {
3838 return 3;
3839 }
3840 if let Some(_) = self.buffer_size_megabytes_hint {
3841 return 2;
3842 }
3843 if let Some(_) = self.categories {
3844 return 1;
3845 }
3846 0
3847 }
3848 }
3849
3850 impl fidl::encoding::ValueTypeMarker for TraceConfig {
3851 type Borrowed<'a> = &'a Self;
3852 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3853 value
3854 }
3855 }
3856
3857 unsafe impl fidl::encoding::TypeMarker for TraceConfig {
3858 type Owned = Self;
3859
3860 #[inline(always)]
3861 fn inline_align(_context: fidl::encoding::Context) -> usize {
3862 8
3863 }
3864
3865 #[inline(always)]
3866 fn inline_size(_context: fidl::encoding::Context) -> usize {
3867 16
3868 }
3869 }
3870
3871 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TraceConfig, D>
3872 for &TraceConfig
3873 {
3874 unsafe fn encode(
3875 self,
3876 encoder: &mut fidl::encoding::Encoder<'_, D>,
3877 offset: usize,
3878 mut depth: fidl::encoding::Depth,
3879 ) -> fidl::Result<()> {
3880 encoder.debug_check_bounds::<TraceConfig>(offset);
3881 let max_ordinal: u64 = self.max_ordinal_present();
3883 encoder.write_num(max_ordinal, offset);
3884 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3885 if max_ordinal == 0 {
3887 return Ok(());
3888 }
3889 depth.increment()?;
3890 let envelope_size = 8;
3891 let bytes_len = max_ordinal as usize * envelope_size;
3892 #[allow(unused_variables)]
3893 let offset = encoder.out_of_line_offset(bytes_len);
3894 let mut _prev_end_offset: usize = 0;
3895 if 1 > max_ordinal {
3896 return Ok(());
3897 }
3898
3899 let cur_offset: usize = (1 - 1) * envelope_size;
3902
3903 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3905
3906 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>, D>(
3911 self.categories.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000> as fidl::encoding::ValueTypeMarker>::borrow),
3912 encoder, offset + cur_offset, depth
3913 )?;
3914
3915 _prev_end_offset = cur_offset + envelope_size;
3916 if 2 > max_ordinal {
3917 return Ok(());
3918 }
3919
3920 let cur_offset: usize = (2 - 1) * envelope_size;
3923
3924 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3926
3927 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3932 self.buffer_size_megabytes_hint
3933 .as_ref()
3934 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3935 encoder,
3936 offset + cur_offset,
3937 depth,
3938 )?;
3939
3940 _prev_end_offset = cur_offset + envelope_size;
3941 if 3 > max_ordinal {
3942 return Ok(());
3943 }
3944
3945 let cur_offset: usize = (3 - 1) * envelope_size;
3948
3949 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3951
3952 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3957 self.start_timeout_milliseconds
3958 .as_ref()
3959 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3960 encoder,
3961 offset + cur_offset,
3962 depth,
3963 )?;
3964
3965 _prev_end_offset = cur_offset + envelope_size;
3966 if 4 > max_ordinal {
3967 return Ok(());
3968 }
3969
3970 let cur_offset: usize = (4 - 1) * envelope_size;
3973
3974 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3976
3977 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_tracing__common::BufferingMode, D>(
3982 self.buffering_mode.as_ref().map(<fidl_fuchsia_tracing__common::BufferingMode as fidl::encoding::ValueTypeMarker>::borrow),
3983 encoder, offset + cur_offset, depth
3984 )?;
3985
3986 _prev_end_offset = cur_offset + envelope_size;
3987 if 5 > max_ordinal {
3988 return Ok(());
3989 }
3990
3991 let cur_offset: usize = (5 - 1) * envelope_size;
3994
3995 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3997
3998 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ProviderSpec, 100>, D>(
4003 self.provider_specs.as_ref().map(<fidl::encoding::Vector<ProviderSpec, 100> as fidl::encoding::ValueTypeMarker>::borrow),
4004 encoder, offset + cur_offset, depth
4005 )?;
4006
4007 _prev_end_offset = cur_offset + envelope_size;
4008 if 6 > max_ordinal {
4009 return Ok(());
4010 }
4011
4012 let cur_offset: usize = (6 - 1) * envelope_size;
4015
4016 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4018
4019 fidl::encoding::encode_in_envelope_optional::<FxtVersion, D>(
4024 self.version.as_ref().map(<FxtVersion as fidl::encoding::ValueTypeMarker>::borrow),
4025 encoder,
4026 offset + cur_offset,
4027 depth,
4028 )?;
4029
4030 _prev_end_offset = cur_offset + envelope_size;
4031 if 7 > max_ordinal {
4032 return Ok(());
4033 }
4034
4035 let cur_offset: usize = (7 - 1) * envelope_size;
4038
4039 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4041
4042 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4047 self.defer_transfer.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4048 encoder,
4049 offset + cur_offset,
4050 depth,
4051 )?;
4052
4053 _prev_end_offset = cur_offset + envelope_size;
4054
4055 Ok(())
4056 }
4057 }
4058
4059 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TraceConfig {
4060 #[inline(always)]
4061 fn new_empty() -> Self {
4062 Self::default()
4063 }
4064
4065 unsafe fn decode(
4066 &mut self,
4067 decoder: &mut fidl::encoding::Decoder<'_, D>,
4068 offset: usize,
4069 mut depth: fidl::encoding::Depth,
4070 ) -> fidl::Result<()> {
4071 decoder.debug_check_bounds::<Self>(offset);
4072 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4073 None => return Err(fidl::Error::NotNullable),
4074 Some(len) => len,
4075 };
4076 if len == 0 {
4078 return Ok(());
4079 };
4080 depth.increment()?;
4081 let envelope_size = 8;
4082 let bytes_len = len * envelope_size;
4083 let offset = decoder.out_of_line_offset(bytes_len)?;
4084 let mut _next_ordinal_to_read = 0;
4086 let mut next_offset = offset;
4087 let end_offset = offset + bytes_len;
4088 _next_ordinal_to_read += 1;
4089 if next_offset >= end_offset {
4090 return Ok(());
4091 }
4092
4093 while _next_ordinal_to_read < 1 {
4095 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4096 _next_ordinal_to_read += 1;
4097 next_offset += envelope_size;
4098 }
4099
4100 let next_out_of_line = decoder.next_out_of_line();
4101 let handles_before = decoder.remaining_handles();
4102 if let Some((inlined, num_bytes, num_handles)) =
4103 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4104 {
4105 let member_inline_size = <fidl::encoding::Vector<
4106 fidl::encoding::BoundedString<100>,
4107 5000,
4108 > as fidl::encoding::TypeMarker>::inline_size(
4109 decoder.context
4110 );
4111 if inlined != (member_inline_size <= 4) {
4112 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4113 }
4114 let inner_offset;
4115 let mut inner_depth = depth.clone();
4116 if inlined {
4117 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4118 inner_offset = next_offset;
4119 } else {
4120 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4121 inner_depth.increment()?;
4122 }
4123 let val_ref = self.categories.get_or_insert_with(|| {
4124 fidl::new_empty!(
4125 fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>,
4126 D
4127 )
4128 });
4129 fidl::decode!(
4130 fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>,
4131 D,
4132 val_ref,
4133 decoder,
4134 inner_offset,
4135 inner_depth
4136 )?;
4137 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4138 {
4139 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4140 }
4141 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4142 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4143 }
4144 }
4145
4146 next_offset += envelope_size;
4147 _next_ordinal_to_read += 1;
4148 if next_offset >= end_offset {
4149 return Ok(());
4150 }
4151
4152 while _next_ordinal_to_read < 2 {
4154 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4155 _next_ordinal_to_read += 1;
4156 next_offset += envelope_size;
4157 }
4158
4159 let next_out_of_line = decoder.next_out_of_line();
4160 let handles_before = decoder.remaining_handles();
4161 if let Some((inlined, num_bytes, num_handles)) =
4162 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4163 {
4164 let member_inline_size =
4165 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4166 if inlined != (member_inline_size <= 4) {
4167 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4168 }
4169 let inner_offset;
4170 let mut inner_depth = depth.clone();
4171 if inlined {
4172 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4173 inner_offset = next_offset;
4174 } else {
4175 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4176 inner_depth.increment()?;
4177 }
4178 let val_ref =
4179 self.buffer_size_megabytes_hint.get_or_insert_with(|| fidl::new_empty!(u32, D));
4180 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4181 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4182 {
4183 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4184 }
4185 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4186 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4187 }
4188 }
4189
4190 next_offset += envelope_size;
4191 _next_ordinal_to_read += 1;
4192 if next_offset >= end_offset {
4193 return Ok(());
4194 }
4195
4196 while _next_ordinal_to_read < 3 {
4198 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4199 _next_ordinal_to_read += 1;
4200 next_offset += envelope_size;
4201 }
4202
4203 let next_out_of_line = decoder.next_out_of_line();
4204 let handles_before = decoder.remaining_handles();
4205 if let Some((inlined, num_bytes, num_handles)) =
4206 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4207 {
4208 let member_inline_size =
4209 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4210 if inlined != (member_inline_size <= 4) {
4211 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4212 }
4213 let inner_offset;
4214 let mut inner_depth = depth.clone();
4215 if inlined {
4216 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4217 inner_offset = next_offset;
4218 } else {
4219 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4220 inner_depth.increment()?;
4221 }
4222 let val_ref =
4223 self.start_timeout_milliseconds.get_or_insert_with(|| fidl::new_empty!(u64, D));
4224 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4225 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4226 {
4227 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4228 }
4229 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4230 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4231 }
4232 }
4233
4234 next_offset += envelope_size;
4235 _next_ordinal_to_read += 1;
4236 if next_offset >= end_offset {
4237 return Ok(());
4238 }
4239
4240 while _next_ordinal_to_read < 4 {
4242 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4243 _next_ordinal_to_read += 1;
4244 next_offset += envelope_size;
4245 }
4246
4247 let next_out_of_line = decoder.next_out_of_line();
4248 let handles_before = decoder.remaining_handles();
4249 if let Some((inlined, num_bytes, num_handles)) =
4250 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4251 {
4252 let member_inline_size = <fidl_fuchsia_tracing__common::BufferingMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4253 if inlined != (member_inline_size <= 4) {
4254 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4255 }
4256 let inner_offset;
4257 let mut inner_depth = depth.clone();
4258 if inlined {
4259 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4260 inner_offset = next_offset;
4261 } else {
4262 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4263 inner_depth.increment()?;
4264 }
4265 let val_ref = self.buffering_mode.get_or_insert_with(|| {
4266 fidl::new_empty!(fidl_fuchsia_tracing__common::BufferingMode, D)
4267 });
4268 fidl::decode!(
4269 fidl_fuchsia_tracing__common::BufferingMode,
4270 D,
4271 val_ref,
4272 decoder,
4273 inner_offset,
4274 inner_depth
4275 )?;
4276 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4277 {
4278 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4279 }
4280 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4281 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4282 }
4283 }
4284
4285 next_offset += envelope_size;
4286 _next_ordinal_to_read += 1;
4287 if next_offset >= end_offset {
4288 return Ok(());
4289 }
4290
4291 while _next_ordinal_to_read < 5 {
4293 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4294 _next_ordinal_to_read += 1;
4295 next_offset += envelope_size;
4296 }
4297
4298 let next_out_of_line = decoder.next_out_of_line();
4299 let handles_before = decoder.remaining_handles();
4300 if let Some((inlined, num_bytes, num_handles)) =
4301 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4302 {
4303 let member_inline_size = <fidl::encoding::Vector<ProviderSpec, 100> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4304 if inlined != (member_inline_size <= 4) {
4305 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4306 }
4307 let inner_offset;
4308 let mut inner_depth = depth.clone();
4309 if inlined {
4310 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4311 inner_offset = next_offset;
4312 } else {
4313 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4314 inner_depth.increment()?;
4315 }
4316 let val_ref = self.provider_specs.get_or_insert_with(
4317 || fidl::new_empty!(fidl::encoding::Vector<ProviderSpec, 100>, D),
4318 );
4319 fidl::decode!(fidl::encoding::Vector<ProviderSpec, 100>, D, val_ref, decoder, inner_offset, inner_depth)?;
4320 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4321 {
4322 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4323 }
4324 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4325 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4326 }
4327 }
4328
4329 next_offset += envelope_size;
4330 _next_ordinal_to_read += 1;
4331 if next_offset >= end_offset {
4332 return Ok(());
4333 }
4334
4335 while _next_ordinal_to_read < 6 {
4337 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4338 _next_ordinal_to_read += 1;
4339 next_offset += envelope_size;
4340 }
4341
4342 let next_out_of_line = decoder.next_out_of_line();
4343 let handles_before = decoder.remaining_handles();
4344 if let Some((inlined, num_bytes, num_handles)) =
4345 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4346 {
4347 let member_inline_size =
4348 <FxtVersion as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4349 if inlined != (member_inline_size <= 4) {
4350 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4351 }
4352 let inner_offset;
4353 let mut inner_depth = depth.clone();
4354 if inlined {
4355 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4356 inner_offset = next_offset;
4357 } else {
4358 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4359 inner_depth.increment()?;
4360 }
4361 let val_ref = self.version.get_or_insert_with(|| fidl::new_empty!(FxtVersion, D));
4362 fidl::decode!(FxtVersion, D, val_ref, decoder, inner_offset, inner_depth)?;
4363 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4364 {
4365 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4366 }
4367 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4368 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4369 }
4370 }
4371
4372 next_offset += envelope_size;
4373 _next_ordinal_to_read += 1;
4374 if next_offset >= end_offset {
4375 return Ok(());
4376 }
4377
4378 while _next_ordinal_to_read < 7 {
4380 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4381 _next_ordinal_to_read += 1;
4382 next_offset += envelope_size;
4383 }
4384
4385 let next_out_of_line = decoder.next_out_of_line();
4386 let handles_before = decoder.remaining_handles();
4387 if let Some((inlined, num_bytes, num_handles)) =
4388 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4389 {
4390 let member_inline_size =
4391 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4392 if inlined != (member_inline_size <= 4) {
4393 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4394 }
4395 let inner_offset;
4396 let mut inner_depth = depth.clone();
4397 if inlined {
4398 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4399 inner_offset = next_offset;
4400 } else {
4401 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4402 inner_depth.increment()?;
4403 }
4404 let val_ref = self.defer_transfer.get_or_insert_with(|| fidl::new_empty!(bool, D));
4405 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4406 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4407 {
4408 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4409 }
4410 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4411 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4412 }
4413 }
4414
4415 next_offset += envelope_size;
4416
4417 while next_offset < end_offset {
4419 _next_ordinal_to_read += 1;
4420 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4421 next_offset += envelope_size;
4422 }
4423
4424 Ok(())
4425 }
4426 }
4427
4428 impl TraceOptions {
4429 #[inline(always)]
4430 fn max_ordinal_present(&self) -> u64 {
4431 if let Some(_) = self.requested_categories {
4432 return 3;
4433 }
4434 if let Some(_) = self.triggers {
4435 return 2;
4436 }
4437 if let Some(_) = self.duration_ns {
4438 return 1;
4439 }
4440 0
4441 }
4442 }
4443
4444 impl fidl::encoding::ValueTypeMarker for TraceOptions {
4445 type Borrowed<'a> = &'a Self;
4446 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4447 value
4448 }
4449 }
4450
4451 unsafe impl fidl::encoding::TypeMarker for TraceOptions {
4452 type Owned = Self;
4453
4454 #[inline(always)]
4455 fn inline_align(_context: fidl::encoding::Context) -> usize {
4456 8
4457 }
4458
4459 #[inline(always)]
4460 fn inline_size(_context: fidl::encoding::Context) -> usize {
4461 16
4462 }
4463 }
4464
4465 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TraceOptions, D>
4466 for &TraceOptions
4467 {
4468 unsafe fn encode(
4469 self,
4470 encoder: &mut fidl::encoding::Encoder<'_, D>,
4471 offset: usize,
4472 mut depth: fidl::encoding::Depth,
4473 ) -> fidl::Result<()> {
4474 encoder.debug_check_bounds::<TraceOptions>(offset);
4475 let max_ordinal: u64 = self.max_ordinal_present();
4477 encoder.write_num(max_ordinal, offset);
4478 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4479 if max_ordinal == 0 {
4481 return Ok(());
4482 }
4483 depth.increment()?;
4484 let envelope_size = 8;
4485 let bytes_len = max_ordinal as usize * envelope_size;
4486 #[allow(unused_variables)]
4487 let offset = encoder.out_of_line_offset(bytes_len);
4488 let mut _prev_end_offset: usize = 0;
4489 if 1 > max_ordinal {
4490 return Ok(());
4491 }
4492
4493 let cur_offset: usize = (1 - 1) * envelope_size;
4496
4497 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4499
4500 fidl::encoding::encode_in_envelope_optional::<i64, D>(
4505 self.duration_ns.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
4506 encoder,
4507 offset + cur_offset,
4508 depth,
4509 )?;
4510
4511 _prev_end_offset = cur_offset + envelope_size;
4512 if 2 > max_ordinal {
4513 return Ok(());
4514 }
4515
4516 let cur_offset: usize = (2 - 1) * envelope_size;
4519
4520 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4522
4523 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Trigger>, D>(
4528 self.triggers.as_ref().map(<fidl::encoding::UnboundedVector<Trigger> as fidl::encoding::ValueTypeMarker>::borrow),
4529 encoder, offset + cur_offset, depth
4530 )?;
4531
4532 _prev_end_offset = cur_offset + envelope_size;
4533 if 3 > max_ordinal {
4534 return Ok(());
4535 }
4536
4537 let cur_offset: usize = (3 - 1) * envelope_size;
4540
4541 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4543
4544 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>, D>(
4549 self.requested_categories.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000> as fidl::encoding::ValueTypeMarker>::borrow),
4550 encoder, offset + cur_offset, depth
4551 )?;
4552
4553 _prev_end_offset = cur_offset + envelope_size;
4554
4555 Ok(())
4556 }
4557 }
4558
4559 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TraceOptions {
4560 #[inline(always)]
4561 fn new_empty() -> Self {
4562 Self::default()
4563 }
4564
4565 unsafe fn decode(
4566 &mut self,
4567 decoder: &mut fidl::encoding::Decoder<'_, D>,
4568 offset: usize,
4569 mut depth: fidl::encoding::Depth,
4570 ) -> fidl::Result<()> {
4571 decoder.debug_check_bounds::<Self>(offset);
4572 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4573 None => return Err(fidl::Error::NotNullable),
4574 Some(len) => len,
4575 };
4576 if len == 0 {
4578 return Ok(());
4579 };
4580 depth.increment()?;
4581 let envelope_size = 8;
4582 let bytes_len = len * envelope_size;
4583 let offset = decoder.out_of_line_offset(bytes_len)?;
4584 let mut _next_ordinal_to_read = 0;
4586 let mut next_offset = offset;
4587 let end_offset = offset + bytes_len;
4588 _next_ordinal_to_read += 1;
4589 if next_offset >= end_offset {
4590 return Ok(());
4591 }
4592
4593 while _next_ordinal_to_read < 1 {
4595 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4596 _next_ordinal_to_read += 1;
4597 next_offset += envelope_size;
4598 }
4599
4600 let next_out_of_line = decoder.next_out_of_line();
4601 let handles_before = decoder.remaining_handles();
4602 if let Some((inlined, num_bytes, num_handles)) =
4603 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4604 {
4605 let member_inline_size =
4606 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4607 if inlined != (member_inline_size <= 4) {
4608 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4609 }
4610 let inner_offset;
4611 let mut inner_depth = depth.clone();
4612 if inlined {
4613 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4614 inner_offset = next_offset;
4615 } else {
4616 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4617 inner_depth.increment()?;
4618 }
4619 let val_ref = self.duration_ns.get_or_insert_with(|| fidl::new_empty!(i64, D));
4620 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
4621 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4622 {
4623 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4624 }
4625 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4626 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4627 }
4628 }
4629
4630 next_offset += envelope_size;
4631 _next_ordinal_to_read += 1;
4632 if next_offset >= end_offset {
4633 return Ok(());
4634 }
4635
4636 while _next_ordinal_to_read < 2 {
4638 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4639 _next_ordinal_to_read += 1;
4640 next_offset += envelope_size;
4641 }
4642
4643 let next_out_of_line = decoder.next_out_of_line();
4644 let handles_before = decoder.remaining_handles();
4645 if let Some((inlined, num_bytes, num_handles)) =
4646 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4647 {
4648 let member_inline_size = <fidl::encoding::UnboundedVector<Trigger> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4649 if inlined != (member_inline_size <= 4) {
4650 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4651 }
4652 let inner_offset;
4653 let mut inner_depth = depth.clone();
4654 if inlined {
4655 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4656 inner_offset = next_offset;
4657 } else {
4658 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4659 inner_depth.increment()?;
4660 }
4661 let val_ref = self.triggers.get_or_insert_with(|| {
4662 fidl::new_empty!(fidl::encoding::UnboundedVector<Trigger>, D)
4663 });
4664 fidl::decode!(
4665 fidl::encoding::UnboundedVector<Trigger>,
4666 D,
4667 val_ref,
4668 decoder,
4669 inner_offset,
4670 inner_depth
4671 )?;
4672 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4673 {
4674 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4675 }
4676 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4677 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4678 }
4679 }
4680
4681 next_offset += envelope_size;
4682 _next_ordinal_to_read += 1;
4683 if next_offset >= end_offset {
4684 return Ok(());
4685 }
4686
4687 while _next_ordinal_to_read < 3 {
4689 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4690 _next_ordinal_to_read += 1;
4691 next_offset += envelope_size;
4692 }
4693
4694 let next_out_of_line = decoder.next_out_of_line();
4695 let handles_before = decoder.remaining_handles();
4696 if let Some((inlined, num_bytes, num_handles)) =
4697 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4698 {
4699 let member_inline_size = <fidl::encoding::Vector<
4700 fidl::encoding::BoundedString<100>,
4701 5000,
4702 > as fidl::encoding::TypeMarker>::inline_size(
4703 decoder.context
4704 );
4705 if inlined != (member_inline_size <= 4) {
4706 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4707 }
4708 let inner_offset;
4709 let mut inner_depth = depth.clone();
4710 if inlined {
4711 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4712 inner_offset = next_offset;
4713 } else {
4714 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4715 inner_depth.increment()?;
4716 }
4717 let val_ref = self.requested_categories.get_or_insert_with(|| {
4718 fidl::new_empty!(
4719 fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>,
4720 D
4721 )
4722 });
4723 fidl::decode!(
4724 fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>,
4725 D,
4726 val_ref,
4727 decoder,
4728 inner_offset,
4729 inner_depth
4730 )?;
4731 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4732 {
4733 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4734 }
4735 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4736 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4737 }
4738 }
4739
4740 next_offset += envelope_size;
4741
4742 while next_offset < end_offset {
4744 _next_ordinal_to_read += 1;
4745 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4746 next_offset += envelope_size;
4747 }
4748
4749 Ok(())
4750 }
4751 }
4752
4753 impl TraceStatus {
4754 #[inline(always)]
4755 fn max_ordinal_present(&self) -> u64 {
4756 if let Some(_) = self.task_id {
4757 return 7;
4758 }
4759 if let Some(_) = self.triggers {
4760 return 6;
4761 }
4762 if let Some(_) = self.config {
4763 return 5;
4764 }
4765 if let Some(_) = self.remaining_runtime {
4766 return 4;
4767 }
4768 if let Some(_) = self.duration {
4769 return 3;
4770 }
4771 0
4772 }
4773 }
4774
4775 impl fidl::encoding::ValueTypeMarker for TraceStatus {
4776 type Borrowed<'a> = &'a Self;
4777 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4778 value
4779 }
4780 }
4781
4782 unsafe impl fidl::encoding::TypeMarker for TraceStatus {
4783 type Owned = Self;
4784
4785 #[inline(always)]
4786 fn inline_align(_context: fidl::encoding::Context) -> usize {
4787 8
4788 }
4789
4790 #[inline(always)]
4791 fn inline_size(_context: fidl::encoding::Context) -> usize {
4792 16
4793 }
4794 }
4795
4796 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TraceStatus, D>
4797 for &TraceStatus
4798 {
4799 unsafe fn encode(
4800 self,
4801 encoder: &mut fidl::encoding::Encoder<'_, D>,
4802 offset: usize,
4803 mut depth: fidl::encoding::Depth,
4804 ) -> fidl::Result<()> {
4805 encoder.debug_check_bounds::<TraceStatus>(offset);
4806 let max_ordinal: u64 = self.max_ordinal_present();
4808 encoder.write_num(max_ordinal, offset);
4809 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4810 if max_ordinal == 0 {
4812 return Ok(());
4813 }
4814 depth.increment()?;
4815 let envelope_size = 8;
4816 let bytes_len = max_ordinal as usize * envelope_size;
4817 #[allow(unused_variables)]
4818 let offset = encoder.out_of_line_offset(bytes_len);
4819 let mut _prev_end_offset: usize = 0;
4820 if 3 > max_ordinal {
4821 return Ok(());
4822 }
4823
4824 let cur_offset: usize = (3 - 1) * envelope_size;
4827
4828 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4830
4831 fidl::encoding::encode_in_envelope_optional::<i64, D>(
4836 self.duration.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
4837 encoder,
4838 offset + cur_offset,
4839 depth,
4840 )?;
4841
4842 _prev_end_offset = cur_offset + envelope_size;
4843 if 4 > max_ordinal {
4844 return Ok(());
4845 }
4846
4847 let cur_offset: usize = (4 - 1) * envelope_size;
4850
4851 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4853
4854 fidl::encoding::encode_in_envelope_optional::<i64, D>(
4859 self.remaining_runtime
4860 .as_ref()
4861 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
4862 encoder,
4863 offset + cur_offset,
4864 depth,
4865 )?;
4866
4867 _prev_end_offset = cur_offset + envelope_size;
4868 if 5 > max_ordinal {
4869 return Ok(());
4870 }
4871
4872 let cur_offset: usize = (5 - 1) * envelope_size;
4875
4876 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4878
4879 fidl::encoding::encode_in_envelope_optional::<TraceConfig, D>(
4884 self.config.as_ref().map(<TraceConfig as fidl::encoding::ValueTypeMarker>::borrow),
4885 encoder,
4886 offset + cur_offset,
4887 depth,
4888 )?;
4889
4890 _prev_end_offset = cur_offset + envelope_size;
4891 if 6 > max_ordinal {
4892 return Ok(());
4893 }
4894
4895 let cur_offset: usize = (6 - 1) * envelope_size;
4898
4899 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4901
4902 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Trigger>, D>(
4907 self.triggers.as_ref().map(<fidl::encoding::UnboundedVector<Trigger> as fidl::encoding::ValueTypeMarker>::borrow),
4908 encoder, offset + cur_offset, depth
4909 )?;
4910
4911 _prev_end_offset = cur_offset + envelope_size;
4912 if 7 > max_ordinal {
4913 return Ok(());
4914 }
4915
4916 let cur_offset: usize = (7 - 1) * envelope_size;
4919
4920 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4922
4923 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4928 self.task_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4929 encoder,
4930 offset + cur_offset,
4931 depth,
4932 )?;
4933
4934 _prev_end_offset = cur_offset + envelope_size;
4935
4936 Ok(())
4937 }
4938 }
4939
4940 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TraceStatus {
4941 #[inline(always)]
4942 fn new_empty() -> Self {
4943 Self::default()
4944 }
4945
4946 unsafe fn decode(
4947 &mut self,
4948 decoder: &mut fidl::encoding::Decoder<'_, D>,
4949 offset: usize,
4950 mut depth: fidl::encoding::Depth,
4951 ) -> fidl::Result<()> {
4952 decoder.debug_check_bounds::<Self>(offset);
4953 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4954 None => return Err(fidl::Error::NotNullable),
4955 Some(len) => len,
4956 };
4957 if len == 0 {
4959 return Ok(());
4960 };
4961 depth.increment()?;
4962 let envelope_size = 8;
4963 let bytes_len = len * envelope_size;
4964 let offset = decoder.out_of_line_offset(bytes_len)?;
4965 let mut _next_ordinal_to_read = 0;
4967 let mut next_offset = offset;
4968 let end_offset = offset + bytes_len;
4969 _next_ordinal_to_read += 1;
4970 if next_offset >= end_offset {
4971 return Ok(());
4972 }
4973
4974 while _next_ordinal_to_read < 3 {
4976 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4977 _next_ordinal_to_read += 1;
4978 next_offset += envelope_size;
4979 }
4980
4981 let next_out_of_line = decoder.next_out_of_line();
4982 let handles_before = decoder.remaining_handles();
4983 if let Some((inlined, num_bytes, num_handles)) =
4984 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4985 {
4986 let member_inline_size =
4987 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4988 if inlined != (member_inline_size <= 4) {
4989 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4990 }
4991 let inner_offset;
4992 let mut inner_depth = depth.clone();
4993 if inlined {
4994 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4995 inner_offset = next_offset;
4996 } else {
4997 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4998 inner_depth.increment()?;
4999 }
5000 let val_ref = self.duration.get_or_insert_with(|| fidl::new_empty!(i64, D));
5001 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
5002 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5003 {
5004 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5005 }
5006 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5007 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5008 }
5009 }
5010
5011 next_offset += envelope_size;
5012 _next_ordinal_to_read += 1;
5013 if next_offset >= end_offset {
5014 return Ok(());
5015 }
5016
5017 while _next_ordinal_to_read < 4 {
5019 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5020 _next_ordinal_to_read += 1;
5021 next_offset += envelope_size;
5022 }
5023
5024 let next_out_of_line = decoder.next_out_of_line();
5025 let handles_before = decoder.remaining_handles();
5026 if let Some((inlined, num_bytes, num_handles)) =
5027 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5028 {
5029 let member_inline_size =
5030 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5031 if inlined != (member_inline_size <= 4) {
5032 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5033 }
5034 let inner_offset;
5035 let mut inner_depth = depth.clone();
5036 if inlined {
5037 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5038 inner_offset = next_offset;
5039 } else {
5040 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5041 inner_depth.increment()?;
5042 }
5043 let val_ref =
5044 self.remaining_runtime.get_or_insert_with(|| fidl::new_empty!(i64, D));
5045 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
5046 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5047 {
5048 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5049 }
5050 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5051 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5052 }
5053 }
5054
5055 next_offset += envelope_size;
5056 _next_ordinal_to_read += 1;
5057 if next_offset >= end_offset {
5058 return Ok(());
5059 }
5060
5061 while _next_ordinal_to_read < 5 {
5063 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5064 _next_ordinal_to_read += 1;
5065 next_offset += envelope_size;
5066 }
5067
5068 let next_out_of_line = decoder.next_out_of_line();
5069 let handles_before = decoder.remaining_handles();
5070 if let Some((inlined, num_bytes, num_handles)) =
5071 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5072 {
5073 let member_inline_size =
5074 <TraceConfig as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5075 if inlined != (member_inline_size <= 4) {
5076 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5077 }
5078 let inner_offset;
5079 let mut inner_depth = depth.clone();
5080 if inlined {
5081 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5082 inner_offset = next_offset;
5083 } else {
5084 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5085 inner_depth.increment()?;
5086 }
5087 let val_ref = self.config.get_or_insert_with(|| fidl::new_empty!(TraceConfig, D));
5088 fidl::decode!(TraceConfig, D, val_ref, decoder, inner_offset, inner_depth)?;
5089 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5090 {
5091 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5092 }
5093 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5094 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5095 }
5096 }
5097
5098 next_offset += envelope_size;
5099 _next_ordinal_to_read += 1;
5100 if next_offset >= end_offset {
5101 return Ok(());
5102 }
5103
5104 while _next_ordinal_to_read < 6 {
5106 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5107 _next_ordinal_to_read += 1;
5108 next_offset += envelope_size;
5109 }
5110
5111 let next_out_of_line = decoder.next_out_of_line();
5112 let handles_before = decoder.remaining_handles();
5113 if let Some((inlined, num_bytes, num_handles)) =
5114 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5115 {
5116 let member_inline_size = <fidl::encoding::UnboundedVector<Trigger> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5117 if inlined != (member_inline_size <= 4) {
5118 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5119 }
5120 let inner_offset;
5121 let mut inner_depth = depth.clone();
5122 if inlined {
5123 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5124 inner_offset = next_offset;
5125 } else {
5126 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5127 inner_depth.increment()?;
5128 }
5129 let val_ref = self.triggers.get_or_insert_with(|| {
5130 fidl::new_empty!(fidl::encoding::UnboundedVector<Trigger>, D)
5131 });
5132 fidl::decode!(
5133 fidl::encoding::UnboundedVector<Trigger>,
5134 D,
5135 val_ref,
5136 decoder,
5137 inner_offset,
5138 inner_depth
5139 )?;
5140 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5141 {
5142 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5143 }
5144 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5145 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5146 }
5147 }
5148
5149 next_offset += envelope_size;
5150 _next_ordinal_to_read += 1;
5151 if next_offset >= end_offset {
5152 return Ok(());
5153 }
5154
5155 while _next_ordinal_to_read < 7 {
5157 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5158 _next_ordinal_to_read += 1;
5159 next_offset += envelope_size;
5160 }
5161
5162 let next_out_of_line = decoder.next_out_of_line();
5163 let handles_before = decoder.remaining_handles();
5164 if let Some((inlined, num_bytes, num_handles)) =
5165 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5166 {
5167 let member_inline_size =
5168 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5169 if inlined != (member_inline_size <= 4) {
5170 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5171 }
5172 let inner_offset;
5173 let mut inner_depth = depth.clone();
5174 if inlined {
5175 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5176 inner_offset = next_offset;
5177 } else {
5178 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5179 inner_depth.increment()?;
5180 }
5181 let val_ref = self.task_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
5182 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5183 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5184 {
5185 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5186 }
5187 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5188 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5189 }
5190 }
5191
5192 next_offset += envelope_size;
5193
5194 while next_offset < end_offset {
5196 _next_ordinal_to_read += 1;
5197 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5198 next_offset += envelope_size;
5199 }
5200
5201 Ok(())
5202 }
5203 }
5204
5205 impl Trigger {
5206 #[inline(always)]
5207 fn max_ordinal_present(&self) -> u64 {
5208 if let Some(_) = self.action {
5209 return 2;
5210 }
5211 if let Some(_) = self.alert {
5212 return 1;
5213 }
5214 0
5215 }
5216 }
5217
5218 impl fidl::encoding::ValueTypeMarker for Trigger {
5219 type Borrowed<'a> = &'a Self;
5220 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5221 value
5222 }
5223 }
5224
5225 unsafe impl fidl::encoding::TypeMarker for Trigger {
5226 type Owned = Self;
5227
5228 #[inline(always)]
5229 fn inline_align(_context: fidl::encoding::Context) -> usize {
5230 8
5231 }
5232
5233 #[inline(always)]
5234 fn inline_size(_context: fidl::encoding::Context) -> usize {
5235 16
5236 }
5237 }
5238
5239 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Trigger, D> for &Trigger {
5240 unsafe fn encode(
5241 self,
5242 encoder: &mut fidl::encoding::Encoder<'_, D>,
5243 offset: usize,
5244 mut depth: fidl::encoding::Depth,
5245 ) -> fidl::Result<()> {
5246 encoder.debug_check_bounds::<Trigger>(offset);
5247 let max_ordinal: u64 = self.max_ordinal_present();
5249 encoder.write_num(max_ordinal, offset);
5250 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5251 if max_ordinal == 0 {
5253 return Ok(());
5254 }
5255 depth.increment()?;
5256 let envelope_size = 8;
5257 let bytes_len = max_ordinal as usize * envelope_size;
5258 #[allow(unused_variables)]
5259 let offset = encoder.out_of_line_offset(bytes_len);
5260 let mut _prev_end_offset: usize = 0;
5261 if 1 > max_ordinal {
5262 return Ok(());
5263 }
5264
5265 let cur_offset: usize = (1 - 1) * envelope_size;
5268
5269 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5271
5272 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<14>, D>(
5277 self.alert.as_ref().map(
5278 <fidl::encoding::BoundedString<14> as fidl::encoding::ValueTypeMarker>::borrow,
5279 ),
5280 encoder,
5281 offset + cur_offset,
5282 depth,
5283 )?;
5284
5285 _prev_end_offset = cur_offset + envelope_size;
5286 if 2 > max_ordinal {
5287 return Ok(());
5288 }
5289
5290 let cur_offset: usize = (2 - 1) * envelope_size;
5293
5294 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5296
5297 fidl::encoding::encode_in_envelope_optional::<Action, D>(
5302 self.action.as_ref().map(<Action as fidl::encoding::ValueTypeMarker>::borrow),
5303 encoder,
5304 offset + cur_offset,
5305 depth,
5306 )?;
5307
5308 _prev_end_offset = cur_offset + envelope_size;
5309
5310 Ok(())
5311 }
5312 }
5313
5314 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Trigger {
5315 #[inline(always)]
5316 fn new_empty() -> Self {
5317 Self::default()
5318 }
5319
5320 unsafe fn decode(
5321 &mut self,
5322 decoder: &mut fidl::encoding::Decoder<'_, D>,
5323 offset: usize,
5324 mut depth: fidl::encoding::Depth,
5325 ) -> fidl::Result<()> {
5326 decoder.debug_check_bounds::<Self>(offset);
5327 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5328 None => return Err(fidl::Error::NotNullable),
5329 Some(len) => len,
5330 };
5331 if len == 0 {
5333 return Ok(());
5334 };
5335 depth.increment()?;
5336 let envelope_size = 8;
5337 let bytes_len = len * envelope_size;
5338 let offset = decoder.out_of_line_offset(bytes_len)?;
5339 let mut _next_ordinal_to_read = 0;
5341 let mut next_offset = offset;
5342 let end_offset = offset + bytes_len;
5343 _next_ordinal_to_read += 1;
5344 if next_offset >= end_offset {
5345 return Ok(());
5346 }
5347
5348 while _next_ordinal_to_read < 1 {
5350 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5351 _next_ordinal_to_read += 1;
5352 next_offset += envelope_size;
5353 }
5354
5355 let next_out_of_line = decoder.next_out_of_line();
5356 let handles_before = decoder.remaining_handles();
5357 if let Some((inlined, num_bytes, num_handles)) =
5358 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5359 {
5360 let member_inline_size =
5361 <fidl::encoding::BoundedString<14> as fidl::encoding::TypeMarker>::inline_size(
5362 decoder.context,
5363 );
5364 if inlined != (member_inline_size <= 4) {
5365 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5366 }
5367 let inner_offset;
5368 let mut inner_depth = depth.clone();
5369 if inlined {
5370 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5371 inner_offset = next_offset;
5372 } else {
5373 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5374 inner_depth.increment()?;
5375 }
5376 let val_ref = self
5377 .alert
5378 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<14>, D));
5379 fidl::decode!(
5380 fidl::encoding::BoundedString<14>,
5381 D,
5382 val_ref,
5383 decoder,
5384 inner_offset,
5385 inner_depth
5386 )?;
5387 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5388 {
5389 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5390 }
5391 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5392 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5393 }
5394 }
5395
5396 next_offset += envelope_size;
5397 _next_ordinal_to_read += 1;
5398 if next_offset >= end_offset {
5399 return Ok(());
5400 }
5401
5402 while _next_ordinal_to_read < 2 {
5404 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5405 _next_ordinal_to_read += 1;
5406 next_offset += envelope_size;
5407 }
5408
5409 let next_out_of_line = decoder.next_out_of_line();
5410 let handles_before = decoder.remaining_handles();
5411 if let Some((inlined, num_bytes, num_handles)) =
5412 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5413 {
5414 let member_inline_size =
5415 <Action as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5416 if inlined != (member_inline_size <= 4) {
5417 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5418 }
5419 let inner_offset;
5420 let mut inner_depth = depth.clone();
5421 if inlined {
5422 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5423 inner_offset = next_offset;
5424 } else {
5425 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5426 inner_depth.increment()?;
5427 }
5428 let val_ref = self.action.get_or_insert_with(|| fidl::new_empty!(Action, D));
5429 fidl::decode!(Action, D, val_ref, decoder, inner_offset, inner_depth)?;
5430 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5431 {
5432 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5433 }
5434 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5435 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5436 }
5437 }
5438
5439 next_offset += envelope_size;
5440
5441 while next_offset < end_offset {
5443 _next_ordinal_to_read += 1;
5444 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5445 next_offset += envelope_size;
5446 }
5447
5448 Ok(())
5449 }
5450 }
5451}