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