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)]
78pub enum CompressionType {
79 None,
81 Zstd,
83 #[doc(hidden)]
84 __SourceBreaking { unknown_ordinal: u32 },
85}
86
87#[macro_export]
89macro_rules! CompressionTypeUnknown {
90 () => {
91 _
92 };
93}
94
95impl CompressionType {
96 #[inline]
97 pub fn from_primitive(prim: u32) -> Option<Self> {
98 match prim {
99 0 => Some(Self::None),
100 1 => Some(Self::Zstd),
101 _ => None,
102 }
103 }
104
105 #[inline]
106 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
107 match prim {
108 0 => Self::None,
109 1 => Self::Zstd,
110 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
111 }
112 }
113
114 #[inline]
115 pub fn unknown() -> Self {
116 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
117 }
118
119 #[inline]
120 pub const fn into_primitive(self) -> u32 {
121 match self {
122 Self::None => 0,
123 Self::Zstd => 1,
124 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
125 }
126 }
127
128 #[inline]
129 pub fn is_unknown(&self) -> bool {
130 match self {
131 Self::__SourceBreaking { unknown_ordinal: _ } => true,
132 _ => false,
133 }
134 }
135}
136
137#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
139pub enum FlushError {
140 NotInitialized,
142 NotStarted,
144 Aborted,
146 #[doc(hidden)]
147 __SourceBreaking { unknown_ordinal: u32 },
148}
149
150#[macro_export]
152macro_rules! FlushErrorUnknown {
153 () => {
154 _
155 };
156}
157
158impl FlushError {
159 #[inline]
160 pub fn from_primitive(prim: u32) -> Option<Self> {
161 match prim {
162 1 => Some(Self::NotInitialized),
163 2 => Some(Self::NotStarted),
164 3 => Some(Self::Aborted),
165 _ => None,
166 }
167 }
168
169 #[inline]
170 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
171 match prim {
172 1 => Self::NotInitialized,
173 2 => Self::NotStarted,
174 3 => Self::Aborted,
175 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
176 }
177 }
178
179 #[inline]
180 pub fn unknown() -> Self {
181 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
182 }
183
184 #[inline]
185 pub const fn into_primitive(self) -> u32 {
186 match self {
187 Self::NotInitialized => 1,
188 Self::NotStarted => 2,
189 Self::Aborted => 3,
190 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
191 }
192 }
193
194 #[inline]
195 pub fn is_unknown(&self) -> bool {
196 match self {
197 Self::__SourceBreaking { unknown_ordinal: _ } => true,
198 _ => false,
199 }
200 }
201}
202
203#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
206pub enum RecordingError {
207 TargetProxyOpen,
209 RecordingStart,
211 RecordingAlreadyStarted,
214 RecordingStop,
218 DuplicateTraceFile,
221 NoSuchTraceFile,
224 NoSuchTarget,
226 DisconnectedTarget,
229 #[doc(hidden)]
230 __SourceBreaking { unknown_ordinal: u32 },
231}
232
233#[macro_export]
235macro_rules! RecordingErrorUnknown {
236 () => {
237 _
238 };
239}
240
241impl RecordingError {
242 #[inline]
243 pub fn from_primitive(prim: u32) -> Option<Self> {
244 match prim {
245 0 => Some(Self::TargetProxyOpen),
246 1 => Some(Self::RecordingStart),
247 2 => Some(Self::RecordingAlreadyStarted),
248 3 => Some(Self::RecordingStop),
249 4 => Some(Self::DuplicateTraceFile),
250 5 => Some(Self::NoSuchTraceFile),
251 6 => Some(Self::NoSuchTarget),
252 7 => Some(Self::DisconnectedTarget),
253 _ => None,
254 }
255 }
256
257 #[inline]
258 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
259 match prim {
260 0 => Self::TargetProxyOpen,
261 1 => Self::RecordingStart,
262 2 => Self::RecordingAlreadyStarted,
263 3 => Self::RecordingStop,
264 4 => Self::DuplicateTraceFile,
265 5 => Self::NoSuchTraceFile,
266 6 => Self::NoSuchTarget,
267 7 => Self::DisconnectedTarget,
268 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
269 }
270 }
271
272 #[inline]
273 pub fn unknown() -> Self {
274 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
275 }
276
277 #[inline]
278 pub const fn into_primitive(self) -> u32 {
279 match self {
280 Self::TargetProxyOpen => 0,
281 Self::RecordingStart => 1,
282 Self::RecordingAlreadyStarted => 2,
283 Self::RecordingStop => 3,
284 Self::DuplicateTraceFile => 4,
285 Self::NoSuchTraceFile => 5,
286 Self::NoSuchTarget => 6,
287 Self::DisconnectedTarget => 7,
288 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
289 }
290 }
291
292 #[inline]
293 pub fn is_unknown(&self) -> bool {
294 match self {
295 Self::__SourceBreaking { unknown_ordinal: _ } => true,
296 _ => false,
297 }
298 }
299}
300
301#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
304pub enum SessionState {
305 Ready,
308 Initialized,
310 Starting,
312 Started,
314 Stopping,
316 Stopped,
318 Terminating,
322 #[doc(hidden)]
323 __SourceBreaking { unknown_ordinal: u32 },
324}
325
326#[macro_export]
328macro_rules! SessionStateUnknown {
329 () => {
330 _
331 };
332}
333
334impl SessionState {
335 #[inline]
336 pub fn from_primitive(prim: u32) -> Option<Self> {
337 match prim {
338 1 => Some(Self::Ready),
339 2 => Some(Self::Initialized),
340 3 => Some(Self::Starting),
341 4 => Some(Self::Started),
342 5 => Some(Self::Stopping),
343 6 => Some(Self::Stopped),
344 7 => Some(Self::Terminating),
345 _ => None,
346 }
347 }
348
349 #[inline]
350 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
351 match prim {
352 1 => Self::Ready,
353 2 => Self::Initialized,
354 3 => Self::Starting,
355 4 => Self::Started,
356 5 => Self::Stopping,
357 6 => Self::Stopped,
358 7 => Self::Terminating,
359 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
360 }
361 }
362
363 #[inline]
364 pub fn unknown() -> Self {
365 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
366 }
367
368 #[inline]
369 pub const fn into_primitive(self) -> u32 {
370 match self {
371 Self::Ready => 1,
372 Self::Initialized => 2,
373 Self::Starting => 3,
374 Self::Started => 4,
375 Self::Stopping => 5,
376 Self::Stopped => 6,
377 Self::Terminating => 7,
378 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
379 }
380 }
381
382 #[inline]
383 pub fn is_unknown(&self) -> bool {
384 match self {
385 Self::__SourceBreaking { unknown_ordinal: _ } => true,
386 _ => false,
387 }
388 }
389}
390
391#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
393pub enum StartError {
394 NotInitialized,
396 AlreadyStarted,
398 Stopping,
400 Terminating,
402 #[doc(hidden)]
403 __SourceBreaking { unknown_ordinal: u32 },
404}
405
406#[macro_export]
408macro_rules! StartErrorUnknown {
409 () => {
410 _
411 };
412}
413
414impl StartError {
415 #[inline]
416 pub fn from_primitive(prim: u32) -> Option<Self> {
417 match prim {
418 1 => Some(Self::NotInitialized),
419 2 => Some(Self::AlreadyStarted),
420 3 => Some(Self::Stopping),
421 4 => Some(Self::Terminating),
422 _ => None,
423 }
424 }
425
426 #[inline]
427 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
428 match prim {
429 1 => Self::NotInitialized,
430 2 => Self::AlreadyStarted,
431 3 => Self::Stopping,
432 4 => Self::Terminating,
433 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
434 }
435 }
436
437 #[inline]
438 pub fn unknown() -> Self {
439 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
440 }
441
442 #[inline]
443 pub const fn into_primitive(self) -> u32 {
444 match self {
445 Self::NotInitialized => 1,
446 Self::AlreadyStarted => 2,
447 Self::Stopping => 3,
448 Self::Terminating => 4,
449 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
450 }
451 }
452
453 #[inline]
454 pub fn is_unknown(&self) -> bool {
455 match self {
456 Self::__SourceBreaking { unknown_ordinal: _ } => true,
457 _ => false,
458 }
459 }
460}
461
462#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
464pub enum StopError {
465 NotInitialized,
467 NotStarted,
469 Aborted,
471 #[doc(hidden)]
472 __SourceBreaking { unknown_ordinal: u32 },
473}
474
475#[macro_export]
477macro_rules! StopErrorUnknown {
478 () => {
479 _
480 };
481}
482
483impl StopError {
484 #[inline]
485 pub fn from_primitive(prim: u32) -> Option<Self> {
486 match prim {
487 1 => Some(Self::NotInitialized),
488 2 => Some(Self::NotStarted),
489 3 => Some(Self::Aborted),
490 _ => None,
491 }
492 }
493
494 #[inline]
495 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
496 match prim {
497 1 => Self::NotInitialized,
498 2 => Self::NotStarted,
499 3 => Self::Aborted,
500 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
501 }
502 }
503
504 #[inline]
505 pub fn unknown() -> Self {
506 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
507 }
508
509 #[inline]
510 pub const fn into_primitive(self) -> u32 {
511 match self {
512 Self::NotInitialized => 1,
513 Self::NotStarted => 2,
514 Self::Aborted => 3,
515 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
516 }
517 }
518
519 #[inline]
520 pub fn is_unknown(&self) -> bool {
521 match self {
522 Self::__SourceBreaking { unknown_ordinal: _ } => true,
523 _ => false,
524 }
525 }
526}
527
528#[derive(Clone, Debug, PartialEq)]
529pub struct ProvisionerGetKnownCategoriesResponse {
530 pub categories: Vec<fidl_fuchsia_tracing_common::KnownCategory>,
531}
532
533impl fidl::Persistable for ProvisionerGetKnownCategoriesResponse {}
534
535#[derive(Clone, Debug, PartialEq)]
536pub struct ProvisionerGetProvidersResponse {
537 pub providers: Vec<ProviderInfo>,
538}
539
540impl fidl::Persistable for ProvisionerGetProvidersResponse {}
541
542#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
543#[repr(C)]
544pub struct SessionManagerAbortTraceSessionRequest {
545 pub task_id: u64,
546}
547
548impl fidl::Persistable for SessionManagerAbortTraceSessionRequest {}
549
550#[derive(Clone, Debug, PartialEq)]
551pub struct SessionManagerEndTraceSessionResponse {
552 pub options: TraceOptions,
553 pub result: StopResult,
554}
555
556impl fidl::Persistable for SessionManagerEndTraceSessionResponse {}
557
558#[derive(Clone, Debug, PartialEq)]
559pub struct SessionManagerGetKnownCategoriesResponse {
560 pub categories: Vec<fidl_fuchsia_tracing_common::KnownCategory>,
561}
562
563impl fidl::Persistable for SessionManagerGetKnownCategoriesResponse {}
564
565#[derive(Clone, Debug, PartialEq)]
566pub struct SessionManagerGetProvidersResponse {
567 pub providers: Vec<ProviderInfo>,
568}
569
570impl fidl::Persistable for SessionManagerGetProvidersResponse {}
571
572#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
573#[repr(C)]
574pub struct SessionManagerStartTraceSessionResponse {
575 pub task_id: u64,
576}
577
578impl fidl::Persistable for SessionManagerStartTraceSessionResponse {}
579
580#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
581pub struct SessionOnSessionStateChangeRequest {
582 pub state: SessionState,
583}
584
585impl fidl::Persistable for SessionOnSessionStateChangeRequest {}
586
587#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
588pub struct SessionWatchAlertResponse {
589 pub alert_name: String,
590}
591
592impl fidl::Persistable for SessionWatchAlertResponse {}
593
594#[derive(Clone, Debug, Default, PartialEq)]
601pub struct FxtVersion {
602 pub major: Option<u32>,
604 pub minor: Option<u32>,
606 #[doc(hidden)]
607 pub __source_breaking: fidl::marker::SourceBreaking,
608}
609
610impl fidl::Persistable for FxtVersion {}
611
612#[derive(Clone, Debug, Default, PartialEq)]
614pub struct ProviderInfo {
615 pub id: Option<u32>,
617 pub pid: Option<u64>,
619 pub name: Option<String>,
621 #[doc(hidden)]
622 pub __source_breaking: fidl::marker::SourceBreaking,
623}
624
625impl fidl::Persistable for ProviderInfo {}
626
627#[derive(Clone, Debug, Default, PartialEq)]
628pub struct ProviderSpec {
629 pub name: Option<String>,
630 pub buffer_size_megabytes_hint: Option<u32>,
631 pub categories: Option<Vec<String>>,
632 #[doc(hidden)]
633 pub __source_breaking: fidl::marker::SourceBreaking,
634}
635
636impl fidl::Persistable for ProviderSpec {}
637
638#[derive(Clone, Debug, Default, PartialEq)]
640pub struct ProviderStats {
641 pub name: Option<String>,
642 pub pid: Option<u64>,
643 pub buffering_mode: Option<fidl_fuchsia_tracing_common::BufferingMode>,
644 pub buffer_wrapped_count: Option<u32>,
645 pub records_dropped: Option<u64>,
646 pub percentage_durable_buffer_used: Option<f32>,
647 pub non_durable_bytes_written: Option<u64>,
648 #[doc(hidden)]
649 pub __source_breaking: fidl::marker::SourceBreaking,
650}
651
652impl fidl::Persistable for ProviderStats {}
653
654#[derive(Clone, Debug, Default, PartialEq)]
656pub struct StartOptions {
657 pub buffer_disposition: Option<fidl_fuchsia_tracing_common::BufferDisposition>,
665 pub additional_categories: Option<Vec<String>>,
669 #[doc(hidden)]
670 pub __source_breaking: fidl::marker::SourceBreaking,
671}
672
673impl fidl::Persistable for StartOptions {}
674
675#[derive(Clone, Debug, Default, PartialEq)]
677pub struct StopOptions {
678 pub write_results: Option<bool>,
683 #[doc(hidden)]
684 pub __source_breaking: fidl::marker::SourceBreaking,
685}
686
687impl fidl::Persistable for StopOptions {}
688
689#[derive(Clone, Debug, Default, PartialEq)]
691pub struct StopResult {
692 pub provider_stats: Option<Vec<ProviderStats>>,
693 #[doc(hidden)]
694 pub __source_breaking: fidl::marker::SourceBreaking,
695}
696
697impl fidl::Persistable for StopResult {}
698
699#[derive(Clone, Debug, Default, PartialEq)]
701pub struct TraceConfig {
702 pub categories: Option<Vec<String>>,
705 pub buffer_size_megabytes_hint: Option<u32>,
707 pub start_timeout_milliseconds: Option<u64>,
709 pub buffering_mode: Option<fidl_fuchsia_tracing_common::BufferingMode>,
710 pub provider_specs: Option<Vec<ProviderSpec>>,
712 pub version: Option<FxtVersion>,
715 pub defer_transfer: Option<bool>,
729 #[doc(hidden)]
730 pub __source_breaking: fidl::marker::SourceBreaking,
731}
732
733impl fidl::Persistable for TraceConfig {}
734
735#[derive(Clone, Debug, Default, PartialEq)]
737pub struct TraceOptions {
738 pub duration_ns: Option<i64>,
745 pub triggers: Option<Vec<Trigger>>,
747 pub requested_categories: Option<Vec<String>>,
753 pub compression: Option<CompressionType>,
755 #[doc(hidden)]
756 pub __source_breaking: fidl::marker::SourceBreaking,
757}
758
759impl fidl::Persistable for TraceOptions {}
760
761#[derive(Clone, Debug, Default, PartialEq)]
763pub struct TraceStatus {
764 pub duration: Option<i64>,
767 pub remaining_runtime: Option<i64>,
770 pub config: Option<TraceConfig>,
772 pub triggers: Option<Vec<Trigger>>,
774 pub task_id: Option<u64>,
776 #[doc(hidden)]
777 pub __source_breaking: fidl::marker::SourceBreaking,
778}
779
780impl fidl::Persistable for TraceStatus {}
781
782#[derive(Clone, Debug, Default, PartialEq)]
785pub struct Trigger {
786 pub alert: Option<String>,
789 pub action: Option<Action>,
791 #[doc(hidden)]
792 pub __source_breaking: fidl::marker::SourceBreaking,
793}
794
795impl fidl::Persistable for Trigger {}
796
797pub mod provisioner_ordinals {
798 pub const INITIALIZE_TRACING: u64 = 0x3b046ed3a0684ab8;
799 pub const GET_PROVIDERS: u64 = 0xc4d4f36edc50d43;
800 pub const GET_KNOWN_CATEGORIES: u64 = 0x41ef99397b945a4;
801}
802
803pub mod session_ordinals {
804 pub const START_TRACING: u64 = 0xde9b6ccbe936631;
805 pub const STOP_TRACING: u64 = 0x50fefc9b3ff9b03a;
806 pub const WATCH_ALERT: u64 = 0x1f1c080716d92276;
807 pub const ON_SESSION_STATE_CHANGE: u64 = 0x7ab1640718b971cd;
808 pub const FLUSH_BUFFERS: u64 = 0x23d801809a99f102;
809}
810
811pub mod session_manager_ordinals {
812 pub const GET_PROVIDERS: u64 = 0x61bd49c4eb1fa03;
813 pub const GET_KNOWN_CATEGORIES: u64 = 0x6f0abdb5401788b2;
814 pub const START_TRACE_SESSION: u64 = 0x54c39e0c173c0162;
815 pub const START_TRACE_SESSION_ON_BOOT: u64 = 0x705558b5612fbf62;
816 pub const END_TRACE_SESSION: u64 = 0x72d6ca80a0787577;
817 pub const ABORT_TRACE_SESSION: u64 = 0x9a14550631bbc7c;
818 pub const STATUS: u64 = 0x2ebc198b7af59063;
819}
820
821mod internal {
822 use super::*;
823 unsafe impl fidl::encoding::TypeMarker for Action {
824 type Owned = Self;
825
826 #[inline(always)]
827 fn inline_align(_context: fidl::encoding::Context) -> usize {
828 std::mem::align_of::<u32>()
829 }
830
831 #[inline(always)]
832 fn inline_size(_context: fidl::encoding::Context) -> usize {
833 std::mem::size_of::<u32>()
834 }
835
836 #[inline(always)]
837 fn encode_is_copy() -> bool {
838 false
839 }
840
841 #[inline(always)]
842 fn decode_is_copy() -> bool {
843 false
844 }
845 }
846
847 impl fidl::encoding::ValueTypeMarker for Action {
848 type Borrowed<'a> = Self;
849 #[inline(always)]
850 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
851 *value
852 }
853 }
854
855 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Action {
856 #[inline]
857 unsafe fn encode(
858 self,
859 encoder: &mut fidl::encoding::Encoder<'_, D>,
860 offset: usize,
861 _depth: fidl::encoding::Depth,
862 ) -> fidl::Result<()> {
863 encoder.debug_check_bounds::<Self>(offset);
864 encoder.write_num(self.into_primitive(), offset);
865 Ok(())
866 }
867 }
868
869 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Action {
870 #[inline(always)]
871 fn new_empty() -> Self {
872 Self::unknown()
873 }
874
875 #[inline]
876 unsafe fn decode(
877 &mut self,
878 decoder: &mut fidl::encoding::Decoder<'_, D>,
879 offset: usize,
880 _depth: fidl::encoding::Depth,
881 ) -> fidl::Result<()> {
882 decoder.debug_check_bounds::<Self>(offset);
883 let prim = decoder.read_num::<u32>(offset);
884
885 *self = Self::from_primitive_allow_unknown(prim);
886 Ok(())
887 }
888 }
889 unsafe impl fidl::encoding::TypeMarker for CompressionType {
890 type Owned = Self;
891
892 #[inline(always)]
893 fn inline_align(_context: fidl::encoding::Context) -> usize {
894 std::mem::align_of::<u32>()
895 }
896
897 #[inline(always)]
898 fn inline_size(_context: fidl::encoding::Context) -> usize {
899 std::mem::size_of::<u32>()
900 }
901
902 #[inline(always)]
903 fn encode_is_copy() -> bool {
904 false
905 }
906
907 #[inline(always)]
908 fn decode_is_copy() -> bool {
909 false
910 }
911 }
912
913 impl fidl::encoding::ValueTypeMarker for CompressionType {
914 type Borrowed<'a> = Self;
915 #[inline(always)]
916 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
917 *value
918 }
919 }
920
921 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
922 for CompressionType
923 {
924 #[inline]
925 unsafe fn encode(
926 self,
927 encoder: &mut fidl::encoding::Encoder<'_, D>,
928 offset: usize,
929 _depth: fidl::encoding::Depth,
930 ) -> fidl::Result<()> {
931 encoder.debug_check_bounds::<Self>(offset);
932 encoder.write_num(self.into_primitive(), offset);
933 Ok(())
934 }
935 }
936
937 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompressionType {
938 #[inline(always)]
939 fn new_empty() -> Self {
940 Self::unknown()
941 }
942
943 #[inline]
944 unsafe fn decode(
945 &mut self,
946 decoder: &mut fidl::encoding::Decoder<'_, D>,
947 offset: usize,
948 _depth: fidl::encoding::Depth,
949 ) -> fidl::Result<()> {
950 decoder.debug_check_bounds::<Self>(offset);
951 let prim = decoder.read_num::<u32>(offset);
952
953 *self = Self::from_primitive_allow_unknown(prim);
954 Ok(())
955 }
956 }
957 unsafe impl fidl::encoding::TypeMarker for FlushError {
958 type Owned = Self;
959
960 #[inline(always)]
961 fn inline_align(_context: fidl::encoding::Context) -> usize {
962 std::mem::align_of::<u32>()
963 }
964
965 #[inline(always)]
966 fn inline_size(_context: fidl::encoding::Context) -> usize {
967 std::mem::size_of::<u32>()
968 }
969
970 #[inline(always)]
971 fn encode_is_copy() -> bool {
972 false
973 }
974
975 #[inline(always)]
976 fn decode_is_copy() -> bool {
977 false
978 }
979 }
980
981 impl fidl::encoding::ValueTypeMarker for FlushError {
982 type Borrowed<'a> = Self;
983 #[inline(always)]
984 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
985 *value
986 }
987 }
988
989 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for FlushError {
990 #[inline]
991 unsafe fn encode(
992 self,
993 encoder: &mut fidl::encoding::Encoder<'_, D>,
994 offset: usize,
995 _depth: fidl::encoding::Depth,
996 ) -> fidl::Result<()> {
997 encoder.debug_check_bounds::<Self>(offset);
998 encoder.write_num(self.into_primitive(), offset);
999 Ok(())
1000 }
1001 }
1002
1003 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FlushError {
1004 #[inline(always)]
1005 fn new_empty() -> Self {
1006 Self::unknown()
1007 }
1008
1009 #[inline]
1010 unsafe fn decode(
1011 &mut self,
1012 decoder: &mut fidl::encoding::Decoder<'_, D>,
1013 offset: usize,
1014 _depth: fidl::encoding::Depth,
1015 ) -> fidl::Result<()> {
1016 decoder.debug_check_bounds::<Self>(offset);
1017 let prim = decoder.read_num::<u32>(offset);
1018
1019 *self = Self::from_primitive_allow_unknown(prim);
1020 Ok(())
1021 }
1022 }
1023 unsafe impl fidl::encoding::TypeMarker for RecordingError {
1024 type Owned = Self;
1025
1026 #[inline(always)]
1027 fn inline_align(_context: fidl::encoding::Context) -> usize {
1028 std::mem::align_of::<u32>()
1029 }
1030
1031 #[inline(always)]
1032 fn inline_size(_context: fidl::encoding::Context) -> usize {
1033 std::mem::size_of::<u32>()
1034 }
1035
1036 #[inline(always)]
1037 fn encode_is_copy() -> bool {
1038 false
1039 }
1040
1041 #[inline(always)]
1042 fn decode_is_copy() -> bool {
1043 false
1044 }
1045 }
1046
1047 impl fidl::encoding::ValueTypeMarker for RecordingError {
1048 type Borrowed<'a> = Self;
1049 #[inline(always)]
1050 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1051 *value
1052 }
1053 }
1054
1055 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for RecordingError {
1056 #[inline]
1057 unsafe fn encode(
1058 self,
1059 encoder: &mut fidl::encoding::Encoder<'_, D>,
1060 offset: usize,
1061 _depth: fidl::encoding::Depth,
1062 ) -> fidl::Result<()> {
1063 encoder.debug_check_bounds::<Self>(offset);
1064 encoder.write_num(self.into_primitive(), offset);
1065 Ok(())
1066 }
1067 }
1068
1069 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RecordingError {
1070 #[inline(always)]
1071 fn new_empty() -> Self {
1072 Self::unknown()
1073 }
1074
1075 #[inline]
1076 unsafe fn decode(
1077 &mut self,
1078 decoder: &mut fidl::encoding::Decoder<'_, D>,
1079 offset: usize,
1080 _depth: fidl::encoding::Depth,
1081 ) -> fidl::Result<()> {
1082 decoder.debug_check_bounds::<Self>(offset);
1083 let prim = decoder.read_num::<u32>(offset);
1084
1085 *self = Self::from_primitive_allow_unknown(prim);
1086 Ok(())
1087 }
1088 }
1089 unsafe impl fidl::encoding::TypeMarker for SessionState {
1090 type Owned = Self;
1091
1092 #[inline(always)]
1093 fn inline_align(_context: fidl::encoding::Context) -> usize {
1094 std::mem::align_of::<u32>()
1095 }
1096
1097 #[inline(always)]
1098 fn inline_size(_context: fidl::encoding::Context) -> usize {
1099 std::mem::size_of::<u32>()
1100 }
1101
1102 #[inline(always)]
1103 fn encode_is_copy() -> bool {
1104 false
1105 }
1106
1107 #[inline(always)]
1108 fn decode_is_copy() -> bool {
1109 false
1110 }
1111 }
1112
1113 impl fidl::encoding::ValueTypeMarker for SessionState {
1114 type Borrowed<'a> = Self;
1115 #[inline(always)]
1116 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1117 *value
1118 }
1119 }
1120
1121 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for SessionState {
1122 #[inline]
1123 unsafe fn encode(
1124 self,
1125 encoder: &mut fidl::encoding::Encoder<'_, D>,
1126 offset: usize,
1127 _depth: fidl::encoding::Depth,
1128 ) -> fidl::Result<()> {
1129 encoder.debug_check_bounds::<Self>(offset);
1130 encoder.write_num(self.into_primitive(), offset);
1131 Ok(())
1132 }
1133 }
1134
1135 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SessionState {
1136 #[inline(always)]
1137 fn new_empty() -> Self {
1138 Self::unknown()
1139 }
1140
1141 #[inline]
1142 unsafe fn decode(
1143 &mut self,
1144 decoder: &mut fidl::encoding::Decoder<'_, D>,
1145 offset: usize,
1146 _depth: fidl::encoding::Depth,
1147 ) -> fidl::Result<()> {
1148 decoder.debug_check_bounds::<Self>(offset);
1149 let prim = decoder.read_num::<u32>(offset);
1150
1151 *self = Self::from_primitive_allow_unknown(prim);
1152 Ok(())
1153 }
1154 }
1155 unsafe impl fidl::encoding::TypeMarker for StartError {
1156 type Owned = Self;
1157
1158 #[inline(always)]
1159 fn inline_align(_context: fidl::encoding::Context) -> usize {
1160 std::mem::align_of::<u32>()
1161 }
1162
1163 #[inline(always)]
1164 fn inline_size(_context: fidl::encoding::Context) -> usize {
1165 std::mem::size_of::<u32>()
1166 }
1167
1168 #[inline(always)]
1169 fn encode_is_copy() -> bool {
1170 false
1171 }
1172
1173 #[inline(always)]
1174 fn decode_is_copy() -> bool {
1175 false
1176 }
1177 }
1178
1179 impl fidl::encoding::ValueTypeMarker for StartError {
1180 type Borrowed<'a> = Self;
1181 #[inline(always)]
1182 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1183 *value
1184 }
1185 }
1186
1187 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StartError {
1188 #[inline]
1189 unsafe fn encode(
1190 self,
1191 encoder: &mut fidl::encoding::Encoder<'_, D>,
1192 offset: usize,
1193 _depth: fidl::encoding::Depth,
1194 ) -> fidl::Result<()> {
1195 encoder.debug_check_bounds::<Self>(offset);
1196 encoder.write_num(self.into_primitive(), offset);
1197 Ok(())
1198 }
1199 }
1200
1201 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartError {
1202 #[inline(always)]
1203 fn new_empty() -> Self {
1204 Self::unknown()
1205 }
1206
1207 #[inline]
1208 unsafe fn decode(
1209 &mut self,
1210 decoder: &mut fidl::encoding::Decoder<'_, D>,
1211 offset: usize,
1212 _depth: fidl::encoding::Depth,
1213 ) -> fidl::Result<()> {
1214 decoder.debug_check_bounds::<Self>(offset);
1215 let prim = decoder.read_num::<u32>(offset);
1216
1217 *self = Self::from_primitive_allow_unknown(prim);
1218 Ok(())
1219 }
1220 }
1221 unsafe impl fidl::encoding::TypeMarker for StopError {
1222 type Owned = Self;
1223
1224 #[inline(always)]
1225 fn inline_align(_context: fidl::encoding::Context) -> usize {
1226 std::mem::align_of::<u32>()
1227 }
1228
1229 #[inline(always)]
1230 fn inline_size(_context: fidl::encoding::Context) -> usize {
1231 std::mem::size_of::<u32>()
1232 }
1233
1234 #[inline(always)]
1235 fn encode_is_copy() -> bool {
1236 false
1237 }
1238
1239 #[inline(always)]
1240 fn decode_is_copy() -> bool {
1241 false
1242 }
1243 }
1244
1245 impl fidl::encoding::ValueTypeMarker for StopError {
1246 type Borrowed<'a> = Self;
1247 #[inline(always)]
1248 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1249 *value
1250 }
1251 }
1252
1253 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StopError {
1254 #[inline]
1255 unsafe fn encode(
1256 self,
1257 encoder: &mut fidl::encoding::Encoder<'_, D>,
1258 offset: usize,
1259 _depth: fidl::encoding::Depth,
1260 ) -> fidl::Result<()> {
1261 encoder.debug_check_bounds::<Self>(offset);
1262 encoder.write_num(self.into_primitive(), offset);
1263 Ok(())
1264 }
1265 }
1266
1267 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopError {
1268 #[inline(always)]
1269 fn new_empty() -> Self {
1270 Self::unknown()
1271 }
1272
1273 #[inline]
1274 unsafe fn decode(
1275 &mut self,
1276 decoder: &mut fidl::encoding::Decoder<'_, D>,
1277 offset: usize,
1278 _depth: fidl::encoding::Depth,
1279 ) -> fidl::Result<()> {
1280 decoder.debug_check_bounds::<Self>(offset);
1281 let prim = decoder.read_num::<u32>(offset);
1282
1283 *self = Self::from_primitive_allow_unknown(prim);
1284 Ok(())
1285 }
1286 }
1287
1288 impl fidl::encoding::ValueTypeMarker for ProvisionerGetKnownCategoriesResponse {
1289 type Borrowed<'a> = &'a Self;
1290 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1291 value
1292 }
1293 }
1294
1295 unsafe impl fidl::encoding::TypeMarker for ProvisionerGetKnownCategoriesResponse {
1296 type Owned = Self;
1297
1298 #[inline(always)]
1299 fn inline_align(_context: fidl::encoding::Context) -> usize {
1300 8
1301 }
1302
1303 #[inline(always)]
1304 fn inline_size(_context: fidl::encoding::Context) -> usize {
1305 16
1306 }
1307 }
1308
1309 unsafe impl<D: fidl::encoding::ResourceDialect>
1310 fidl::encoding::Encode<ProvisionerGetKnownCategoriesResponse, D>
1311 for &ProvisionerGetKnownCategoriesResponse
1312 {
1313 #[inline]
1314 unsafe fn encode(
1315 self,
1316 encoder: &mut fidl::encoding::Encoder<'_, D>,
1317 offset: usize,
1318 _depth: fidl::encoding::Depth,
1319 ) -> fidl::Result<()> {
1320 encoder.debug_check_bounds::<ProvisionerGetKnownCategoriesResponse>(offset);
1321 fidl::encoding::Encode::<ProvisionerGetKnownCategoriesResponse, D>::encode(
1323 (
1324 <fidl::encoding::Vector<fidl_fuchsia_tracing_common::KnownCategory, 5000> as fidl::encoding::ValueTypeMarker>::borrow(&self.categories),
1325 ),
1326 encoder, offset, _depth
1327 )
1328 }
1329 }
1330 unsafe impl<
1331 D: fidl::encoding::ResourceDialect,
1332 T0: fidl::encoding::Encode<
1333 fidl::encoding::Vector<fidl_fuchsia_tracing_common::KnownCategory, 5000>,
1334 D,
1335 >,
1336 > fidl::encoding::Encode<ProvisionerGetKnownCategoriesResponse, D> for (T0,)
1337 {
1338 #[inline]
1339 unsafe fn encode(
1340 self,
1341 encoder: &mut fidl::encoding::Encoder<'_, D>,
1342 offset: usize,
1343 depth: fidl::encoding::Depth,
1344 ) -> fidl::Result<()> {
1345 encoder.debug_check_bounds::<ProvisionerGetKnownCategoriesResponse>(offset);
1346 self.0.encode(encoder, offset + 0, depth)?;
1350 Ok(())
1351 }
1352 }
1353
1354 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1355 for ProvisionerGetKnownCategoriesResponse
1356 {
1357 #[inline(always)]
1358 fn new_empty() -> Self {
1359 Self {
1360 categories: fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_tracing_common::KnownCategory, 5000>, D),
1361 }
1362 }
1363
1364 #[inline]
1365 unsafe fn decode(
1366 &mut self,
1367 decoder: &mut fidl::encoding::Decoder<'_, D>,
1368 offset: usize,
1369 _depth: fidl::encoding::Depth,
1370 ) -> fidl::Result<()> {
1371 decoder.debug_check_bounds::<Self>(offset);
1372 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_tracing_common::KnownCategory, 5000>, D, &mut self.categories, decoder, offset + 0, _depth)?;
1374 Ok(())
1375 }
1376 }
1377
1378 impl fidl::encoding::ValueTypeMarker for ProvisionerGetProvidersResponse {
1379 type Borrowed<'a> = &'a Self;
1380 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1381 value
1382 }
1383 }
1384
1385 unsafe impl fidl::encoding::TypeMarker for ProvisionerGetProvidersResponse {
1386 type Owned = Self;
1387
1388 #[inline(always)]
1389 fn inline_align(_context: fidl::encoding::Context) -> usize {
1390 8
1391 }
1392
1393 #[inline(always)]
1394 fn inline_size(_context: fidl::encoding::Context) -> usize {
1395 16
1396 }
1397 }
1398
1399 unsafe impl<D: fidl::encoding::ResourceDialect>
1400 fidl::encoding::Encode<ProvisionerGetProvidersResponse, D>
1401 for &ProvisionerGetProvidersResponse
1402 {
1403 #[inline]
1404 unsafe fn encode(
1405 self,
1406 encoder: &mut fidl::encoding::Encoder<'_, D>,
1407 offset: usize,
1408 _depth: fidl::encoding::Depth,
1409 ) -> fidl::Result<()> {
1410 encoder.debug_check_bounds::<ProvisionerGetProvidersResponse>(offset);
1411 fidl::encoding::Encode::<ProvisionerGetProvidersResponse, D>::encode(
1413 (
1414 <fidl::encoding::Vector<ProviderInfo, 100> as fidl::encoding::ValueTypeMarker>::borrow(&self.providers),
1415 ),
1416 encoder, offset, _depth
1417 )
1418 }
1419 }
1420 unsafe impl<
1421 D: fidl::encoding::ResourceDialect,
1422 T0: fidl::encoding::Encode<fidl::encoding::Vector<ProviderInfo, 100>, D>,
1423 > fidl::encoding::Encode<ProvisionerGetProvidersResponse, D> for (T0,)
1424 {
1425 #[inline]
1426 unsafe fn encode(
1427 self,
1428 encoder: &mut fidl::encoding::Encoder<'_, D>,
1429 offset: usize,
1430 depth: fidl::encoding::Depth,
1431 ) -> fidl::Result<()> {
1432 encoder.debug_check_bounds::<ProvisionerGetProvidersResponse>(offset);
1433 self.0.encode(encoder, offset + 0, depth)?;
1437 Ok(())
1438 }
1439 }
1440
1441 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1442 for ProvisionerGetProvidersResponse
1443 {
1444 #[inline(always)]
1445 fn new_empty() -> Self {
1446 Self { providers: fidl::new_empty!(fidl::encoding::Vector<ProviderInfo, 100>, D) }
1447 }
1448
1449 #[inline]
1450 unsafe fn decode(
1451 &mut self,
1452 decoder: &mut fidl::encoding::Decoder<'_, D>,
1453 offset: usize,
1454 _depth: fidl::encoding::Depth,
1455 ) -> fidl::Result<()> {
1456 decoder.debug_check_bounds::<Self>(offset);
1457 fidl::decode!(fidl::encoding::Vector<ProviderInfo, 100>, D, &mut self.providers, decoder, offset + 0, _depth)?;
1459 Ok(())
1460 }
1461 }
1462
1463 impl fidl::encoding::ValueTypeMarker for SessionManagerAbortTraceSessionRequest {
1464 type Borrowed<'a> = &'a Self;
1465 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1466 value
1467 }
1468 }
1469
1470 unsafe impl fidl::encoding::TypeMarker for SessionManagerAbortTraceSessionRequest {
1471 type Owned = Self;
1472
1473 #[inline(always)]
1474 fn inline_align(_context: fidl::encoding::Context) -> usize {
1475 8
1476 }
1477
1478 #[inline(always)]
1479 fn inline_size(_context: fidl::encoding::Context) -> usize {
1480 8
1481 }
1482 #[inline(always)]
1483 fn encode_is_copy() -> bool {
1484 true
1485 }
1486
1487 #[inline(always)]
1488 fn decode_is_copy() -> bool {
1489 true
1490 }
1491 }
1492
1493 unsafe impl<D: fidl::encoding::ResourceDialect>
1494 fidl::encoding::Encode<SessionManagerAbortTraceSessionRequest, D>
1495 for &SessionManagerAbortTraceSessionRequest
1496 {
1497 #[inline]
1498 unsafe fn encode(
1499 self,
1500 encoder: &mut fidl::encoding::Encoder<'_, D>,
1501 offset: usize,
1502 _depth: fidl::encoding::Depth,
1503 ) -> fidl::Result<()> {
1504 encoder.debug_check_bounds::<SessionManagerAbortTraceSessionRequest>(offset);
1505 unsafe {
1506 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1508 (buf_ptr as *mut SessionManagerAbortTraceSessionRequest).write_unaligned(
1509 (self as *const SessionManagerAbortTraceSessionRequest).read(),
1510 );
1511 }
1514 Ok(())
1515 }
1516 }
1517 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
1518 fidl::encoding::Encode<SessionManagerAbortTraceSessionRequest, D> for (T0,)
1519 {
1520 #[inline]
1521 unsafe fn encode(
1522 self,
1523 encoder: &mut fidl::encoding::Encoder<'_, D>,
1524 offset: usize,
1525 depth: fidl::encoding::Depth,
1526 ) -> fidl::Result<()> {
1527 encoder.debug_check_bounds::<SessionManagerAbortTraceSessionRequest>(offset);
1528 self.0.encode(encoder, offset + 0, depth)?;
1532 Ok(())
1533 }
1534 }
1535
1536 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1537 for SessionManagerAbortTraceSessionRequest
1538 {
1539 #[inline(always)]
1540 fn new_empty() -> Self {
1541 Self { task_id: fidl::new_empty!(u64, D) }
1542 }
1543
1544 #[inline]
1545 unsafe fn decode(
1546 &mut self,
1547 decoder: &mut fidl::encoding::Decoder<'_, D>,
1548 offset: usize,
1549 _depth: fidl::encoding::Depth,
1550 ) -> fidl::Result<()> {
1551 decoder.debug_check_bounds::<Self>(offset);
1552 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1553 unsafe {
1556 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
1557 }
1558 Ok(())
1559 }
1560 }
1561
1562 impl fidl::encoding::ValueTypeMarker for SessionManagerEndTraceSessionResponse {
1563 type Borrowed<'a> = &'a Self;
1564 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1565 value
1566 }
1567 }
1568
1569 unsafe impl fidl::encoding::TypeMarker for SessionManagerEndTraceSessionResponse {
1570 type Owned = Self;
1571
1572 #[inline(always)]
1573 fn inline_align(_context: fidl::encoding::Context) -> usize {
1574 8
1575 }
1576
1577 #[inline(always)]
1578 fn inline_size(_context: fidl::encoding::Context) -> usize {
1579 32
1580 }
1581 }
1582
1583 unsafe impl<D: fidl::encoding::ResourceDialect>
1584 fidl::encoding::Encode<SessionManagerEndTraceSessionResponse, D>
1585 for &SessionManagerEndTraceSessionResponse
1586 {
1587 #[inline]
1588 unsafe fn encode(
1589 self,
1590 encoder: &mut fidl::encoding::Encoder<'_, D>,
1591 offset: usize,
1592 _depth: fidl::encoding::Depth,
1593 ) -> fidl::Result<()> {
1594 encoder.debug_check_bounds::<SessionManagerEndTraceSessionResponse>(offset);
1595 fidl::encoding::Encode::<SessionManagerEndTraceSessionResponse, D>::encode(
1597 (
1598 <TraceOptions as fidl::encoding::ValueTypeMarker>::borrow(&self.options),
1599 <StopResult as fidl::encoding::ValueTypeMarker>::borrow(&self.result),
1600 ),
1601 encoder,
1602 offset,
1603 _depth,
1604 )
1605 }
1606 }
1607 unsafe impl<
1608 D: fidl::encoding::ResourceDialect,
1609 T0: fidl::encoding::Encode<TraceOptions, D>,
1610 T1: fidl::encoding::Encode<StopResult, D>,
1611 > fidl::encoding::Encode<SessionManagerEndTraceSessionResponse, D> for (T0, T1)
1612 {
1613 #[inline]
1614 unsafe fn encode(
1615 self,
1616 encoder: &mut fidl::encoding::Encoder<'_, D>,
1617 offset: usize,
1618 depth: fidl::encoding::Depth,
1619 ) -> fidl::Result<()> {
1620 encoder.debug_check_bounds::<SessionManagerEndTraceSessionResponse>(offset);
1621 self.0.encode(encoder, offset + 0, depth)?;
1625 self.1.encode(encoder, offset + 16, depth)?;
1626 Ok(())
1627 }
1628 }
1629
1630 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1631 for SessionManagerEndTraceSessionResponse
1632 {
1633 #[inline(always)]
1634 fn new_empty() -> Self {
1635 Self {
1636 options: fidl::new_empty!(TraceOptions, D),
1637 result: fidl::new_empty!(StopResult, D),
1638 }
1639 }
1640
1641 #[inline]
1642 unsafe fn decode(
1643 &mut self,
1644 decoder: &mut fidl::encoding::Decoder<'_, D>,
1645 offset: usize,
1646 _depth: fidl::encoding::Depth,
1647 ) -> fidl::Result<()> {
1648 decoder.debug_check_bounds::<Self>(offset);
1649 fidl::decode!(TraceOptions, D, &mut self.options, decoder, offset + 0, _depth)?;
1651 fidl::decode!(StopResult, D, &mut self.result, decoder, offset + 16, _depth)?;
1652 Ok(())
1653 }
1654 }
1655
1656 impl fidl::encoding::ValueTypeMarker for SessionManagerGetKnownCategoriesResponse {
1657 type Borrowed<'a> = &'a Self;
1658 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1659 value
1660 }
1661 }
1662
1663 unsafe impl fidl::encoding::TypeMarker for SessionManagerGetKnownCategoriesResponse {
1664 type Owned = Self;
1665
1666 #[inline(always)]
1667 fn inline_align(_context: fidl::encoding::Context) -> usize {
1668 8
1669 }
1670
1671 #[inline(always)]
1672 fn inline_size(_context: fidl::encoding::Context) -> usize {
1673 16
1674 }
1675 }
1676
1677 unsafe impl<D: fidl::encoding::ResourceDialect>
1678 fidl::encoding::Encode<SessionManagerGetKnownCategoriesResponse, D>
1679 for &SessionManagerGetKnownCategoriesResponse
1680 {
1681 #[inline]
1682 unsafe fn encode(
1683 self,
1684 encoder: &mut fidl::encoding::Encoder<'_, D>,
1685 offset: usize,
1686 _depth: fidl::encoding::Depth,
1687 ) -> fidl::Result<()> {
1688 encoder.debug_check_bounds::<SessionManagerGetKnownCategoriesResponse>(offset);
1689 fidl::encoding::Encode::<SessionManagerGetKnownCategoriesResponse, D>::encode(
1691 (
1692 <fidl::encoding::Vector<fidl_fuchsia_tracing_common::KnownCategory, 5000> as fidl::encoding::ValueTypeMarker>::borrow(&self.categories),
1693 ),
1694 encoder, offset, _depth
1695 )
1696 }
1697 }
1698 unsafe impl<
1699 D: fidl::encoding::ResourceDialect,
1700 T0: fidl::encoding::Encode<
1701 fidl::encoding::Vector<fidl_fuchsia_tracing_common::KnownCategory, 5000>,
1702 D,
1703 >,
1704 > fidl::encoding::Encode<SessionManagerGetKnownCategoriesResponse, D> for (T0,)
1705 {
1706 #[inline]
1707 unsafe fn encode(
1708 self,
1709 encoder: &mut fidl::encoding::Encoder<'_, D>,
1710 offset: usize,
1711 depth: fidl::encoding::Depth,
1712 ) -> fidl::Result<()> {
1713 encoder.debug_check_bounds::<SessionManagerGetKnownCategoriesResponse>(offset);
1714 self.0.encode(encoder, offset + 0, depth)?;
1718 Ok(())
1719 }
1720 }
1721
1722 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1723 for SessionManagerGetKnownCategoriesResponse
1724 {
1725 #[inline(always)]
1726 fn new_empty() -> Self {
1727 Self {
1728 categories: fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_tracing_common::KnownCategory, 5000>, D),
1729 }
1730 }
1731
1732 #[inline]
1733 unsafe fn decode(
1734 &mut self,
1735 decoder: &mut fidl::encoding::Decoder<'_, D>,
1736 offset: usize,
1737 _depth: fidl::encoding::Depth,
1738 ) -> fidl::Result<()> {
1739 decoder.debug_check_bounds::<Self>(offset);
1740 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_tracing_common::KnownCategory, 5000>, D, &mut self.categories, decoder, offset + 0, _depth)?;
1742 Ok(())
1743 }
1744 }
1745
1746 impl fidl::encoding::ValueTypeMarker for SessionManagerGetProvidersResponse {
1747 type Borrowed<'a> = &'a Self;
1748 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1749 value
1750 }
1751 }
1752
1753 unsafe impl fidl::encoding::TypeMarker for SessionManagerGetProvidersResponse {
1754 type Owned = Self;
1755
1756 #[inline(always)]
1757 fn inline_align(_context: fidl::encoding::Context) -> usize {
1758 8
1759 }
1760
1761 #[inline(always)]
1762 fn inline_size(_context: fidl::encoding::Context) -> usize {
1763 16
1764 }
1765 }
1766
1767 unsafe impl<D: fidl::encoding::ResourceDialect>
1768 fidl::encoding::Encode<SessionManagerGetProvidersResponse, D>
1769 for &SessionManagerGetProvidersResponse
1770 {
1771 #[inline]
1772 unsafe fn encode(
1773 self,
1774 encoder: &mut fidl::encoding::Encoder<'_, D>,
1775 offset: usize,
1776 _depth: fidl::encoding::Depth,
1777 ) -> fidl::Result<()> {
1778 encoder.debug_check_bounds::<SessionManagerGetProvidersResponse>(offset);
1779 fidl::encoding::Encode::<SessionManagerGetProvidersResponse, D>::encode(
1781 (
1782 <fidl::encoding::Vector<ProviderInfo, 100> as fidl::encoding::ValueTypeMarker>::borrow(&self.providers),
1783 ),
1784 encoder, offset, _depth
1785 )
1786 }
1787 }
1788 unsafe impl<
1789 D: fidl::encoding::ResourceDialect,
1790 T0: fidl::encoding::Encode<fidl::encoding::Vector<ProviderInfo, 100>, D>,
1791 > fidl::encoding::Encode<SessionManagerGetProvidersResponse, D> for (T0,)
1792 {
1793 #[inline]
1794 unsafe fn encode(
1795 self,
1796 encoder: &mut fidl::encoding::Encoder<'_, D>,
1797 offset: usize,
1798 depth: fidl::encoding::Depth,
1799 ) -> fidl::Result<()> {
1800 encoder.debug_check_bounds::<SessionManagerGetProvidersResponse>(offset);
1801 self.0.encode(encoder, offset + 0, depth)?;
1805 Ok(())
1806 }
1807 }
1808
1809 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1810 for SessionManagerGetProvidersResponse
1811 {
1812 #[inline(always)]
1813 fn new_empty() -> Self {
1814 Self { providers: fidl::new_empty!(fidl::encoding::Vector<ProviderInfo, 100>, D) }
1815 }
1816
1817 #[inline]
1818 unsafe fn decode(
1819 &mut self,
1820 decoder: &mut fidl::encoding::Decoder<'_, D>,
1821 offset: usize,
1822 _depth: fidl::encoding::Depth,
1823 ) -> fidl::Result<()> {
1824 decoder.debug_check_bounds::<Self>(offset);
1825 fidl::decode!(fidl::encoding::Vector<ProviderInfo, 100>, D, &mut self.providers, decoder, offset + 0, _depth)?;
1827 Ok(())
1828 }
1829 }
1830
1831 impl fidl::encoding::ValueTypeMarker for SessionManagerStartTraceSessionResponse {
1832 type Borrowed<'a> = &'a Self;
1833 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1834 value
1835 }
1836 }
1837
1838 unsafe impl fidl::encoding::TypeMarker for SessionManagerStartTraceSessionResponse {
1839 type Owned = Self;
1840
1841 #[inline(always)]
1842 fn inline_align(_context: fidl::encoding::Context) -> usize {
1843 8
1844 }
1845
1846 #[inline(always)]
1847 fn inline_size(_context: fidl::encoding::Context) -> usize {
1848 8
1849 }
1850 #[inline(always)]
1851 fn encode_is_copy() -> bool {
1852 true
1853 }
1854
1855 #[inline(always)]
1856 fn decode_is_copy() -> bool {
1857 true
1858 }
1859 }
1860
1861 unsafe impl<D: fidl::encoding::ResourceDialect>
1862 fidl::encoding::Encode<SessionManagerStartTraceSessionResponse, D>
1863 for &SessionManagerStartTraceSessionResponse
1864 {
1865 #[inline]
1866 unsafe fn encode(
1867 self,
1868 encoder: &mut fidl::encoding::Encoder<'_, D>,
1869 offset: usize,
1870 _depth: fidl::encoding::Depth,
1871 ) -> fidl::Result<()> {
1872 encoder.debug_check_bounds::<SessionManagerStartTraceSessionResponse>(offset);
1873 unsafe {
1874 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1876 (buf_ptr as *mut SessionManagerStartTraceSessionResponse).write_unaligned(
1877 (self as *const SessionManagerStartTraceSessionResponse).read(),
1878 );
1879 }
1882 Ok(())
1883 }
1884 }
1885 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
1886 fidl::encoding::Encode<SessionManagerStartTraceSessionResponse, D> for (T0,)
1887 {
1888 #[inline]
1889 unsafe fn encode(
1890 self,
1891 encoder: &mut fidl::encoding::Encoder<'_, D>,
1892 offset: usize,
1893 depth: fidl::encoding::Depth,
1894 ) -> fidl::Result<()> {
1895 encoder.debug_check_bounds::<SessionManagerStartTraceSessionResponse>(offset);
1896 self.0.encode(encoder, offset + 0, depth)?;
1900 Ok(())
1901 }
1902 }
1903
1904 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1905 for SessionManagerStartTraceSessionResponse
1906 {
1907 #[inline(always)]
1908 fn new_empty() -> Self {
1909 Self { task_id: fidl::new_empty!(u64, D) }
1910 }
1911
1912 #[inline]
1913 unsafe fn decode(
1914 &mut self,
1915 decoder: &mut fidl::encoding::Decoder<'_, D>,
1916 offset: usize,
1917 _depth: fidl::encoding::Depth,
1918 ) -> fidl::Result<()> {
1919 decoder.debug_check_bounds::<Self>(offset);
1920 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1921 unsafe {
1924 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
1925 }
1926 Ok(())
1927 }
1928 }
1929
1930 impl fidl::encoding::ValueTypeMarker for SessionOnSessionStateChangeRequest {
1931 type Borrowed<'a> = &'a Self;
1932 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1933 value
1934 }
1935 }
1936
1937 unsafe impl fidl::encoding::TypeMarker for SessionOnSessionStateChangeRequest {
1938 type Owned = Self;
1939
1940 #[inline(always)]
1941 fn inline_align(_context: fidl::encoding::Context) -> usize {
1942 4
1943 }
1944
1945 #[inline(always)]
1946 fn inline_size(_context: fidl::encoding::Context) -> usize {
1947 4
1948 }
1949 }
1950
1951 unsafe impl<D: fidl::encoding::ResourceDialect>
1952 fidl::encoding::Encode<SessionOnSessionStateChangeRequest, D>
1953 for &SessionOnSessionStateChangeRequest
1954 {
1955 #[inline]
1956 unsafe fn encode(
1957 self,
1958 encoder: &mut fidl::encoding::Encoder<'_, D>,
1959 offset: usize,
1960 _depth: fidl::encoding::Depth,
1961 ) -> fidl::Result<()> {
1962 encoder.debug_check_bounds::<SessionOnSessionStateChangeRequest>(offset);
1963 fidl::encoding::Encode::<SessionOnSessionStateChangeRequest, D>::encode(
1965 (<SessionState as fidl::encoding::ValueTypeMarker>::borrow(&self.state),),
1966 encoder,
1967 offset,
1968 _depth,
1969 )
1970 }
1971 }
1972 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SessionState, D>>
1973 fidl::encoding::Encode<SessionOnSessionStateChangeRequest, D> for (T0,)
1974 {
1975 #[inline]
1976 unsafe fn encode(
1977 self,
1978 encoder: &mut fidl::encoding::Encoder<'_, D>,
1979 offset: usize,
1980 depth: fidl::encoding::Depth,
1981 ) -> fidl::Result<()> {
1982 encoder.debug_check_bounds::<SessionOnSessionStateChangeRequest>(offset);
1983 self.0.encode(encoder, offset + 0, depth)?;
1987 Ok(())
1988 }
1989 }
1990
1991 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1992 for SessionOnSessionStateChangeRequest
1993 {
1994 #[inline(always)]
1995 fn new_empty() -> Self {
1996 Self { state: fidl::new_empty!(SessionState, D) }
1997 }
1998
1999 #[inline]
2000 unsafe fn decode(
2001 &mut self,
2002 decoder: &mut fidl::encoding::Decoder<'_, D>,
2003 offset: usize,
2004 _depth: fidl::encoding::Depth,
2005 ) -> fidl::Result<()> {
2006 decoder.debug_check_bounds::<Self>(offset);
2007 fidl::decode!(SessionState, D, &mut self.state, decoder, offset + 0, _depth)?;
2009 Ok(())
2010 }
2011 }
2012
2013 impl fidl::encoding::ValueTypeMarker for SessionWatchAlertResponse {
2014 type Borrowed<'a> = &'a Self;
2015 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2016 value
2017 }
2018 }
2019
2020 unsafe impl fidl::encoding::TypeMarker for SessionWatchAlertResponse {
2021 type Owned = Self;
2022
2023 #[inline(always)]
2024 fn inline_align(_context: fidl::encoding::Context) -> usize {
2025 8
2026 }
2027
2028 #[inline(always)]
2029 fn inline_size(_context: fidl::encoding::Context) -> usize {
2030 16
2031 }
2032 }
2033
2034 unsafe impl<D: fidl::encoding::ResourceDialect>
2035 fidl::encoding::Encode<SessionWatchAlertResponse, D> for &SessionWatchAlertResponse
2036 {
2037 #[inline]
2038 unsafe fn encode(
2039 self,
2040 encoder: &mut fidl::encoding::Encoder<'_, D>,
2041 offset: usize,
2042 _depth: fidl::encoding::Depth,
2043 ) -> fidl::Result<()> {
2044 encoder.debug_check_bounds::<SessionWatchAlertResponse>(offset);
2045 fidl::encoding::Encode::<SessionWatchAlertResponse, D>::encode(
2047 (<fidl::encoding::BoundedString<14> as fidl::encoding::ValueTypeMarker>::borrow(
2048 &self.alert_name,
2049 ),),
2050 encoder,
2051 offset,
2052 _depth,
2053 )
2054 }
2055 }
2056 unsafe impl<
2057 D: fidl::encoding::ResourceDialect,
2058 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<14>, D>,
2059 > fidl::encoding::Encode<SessionWatchAlertResponse, D> for (T0,)
2060 {
2061 #[inline]
2062 unsafe fn encode(
2063 self,
2064 encoder: &mut fidl::encoding::Encoder<'_, D>,
2065 offset: usize,
2066 depth: fidl::encoding::Depth,
2067 ) -> fidl::Result<()> {
2068 encoder.debug_check_bounds::<SessionWatchAlertResponse>(offset);
2069 self.0.encode(encoder, offset + 0, depth)?;
2073 Ok(())
2074 }
2075 }
2076
2077 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2078 for SessionWatchAlertResponse
2079 {
2080 #[inline(always)]
2081 fn new_empty() -> Self {
2082 Self { alert_name: fidl::new_empty!(fidl::encoding::BoundedString<14>, D) }
2083 }
2084
2085 #[inline]
2086 unsafe fn decode(
2087 &mut self,
2088 decoder: &mut fidl::encoding::Decoder<'_, D>,
2089 offset: usize,
2090 _depth: fidl::encoding::Depth,
2091 ) -> fidl::Result<()> {
2092 decoder.debug_check_bounds::<Self>(offset);
2093 fidl::decode!(
2095 fidl::encoding::BoundedString<14>,
2096 D,
2097 &mut self.alert_name,
2098 decoder,
2099 offset + 0,
2100 _depth
2101 )?;
2102 Ok(())
2103 }
2104 }
2105
2106 impl FxtVersion {
2107 #[inline(always)]
2108 fn max_ordinal_present(&self) -> u64 {
2109 if let Some(_) = self.minor {
2110 return 2;
2111 }
2112 if let Some(_) = self.major {
2113 return 1;
2114 }
2115 0
2116 }
2117 }
2118
2119 impl fidl::encoding::ValueTypeMarker for FxtVersion {
2120 type Borrowed<'a> = &'a Self;
2121 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2122 value
2123 }
2124 }
2125
2126 unsafe impl fidl::encoding::TypeMarker for FxtVersion {
2127 type Owned = Self;
2128
2129 #[inline(always)]
2130 fn inline_align(_context: fidl::encoding::Context) -> usize {
2131 8
2132 }
2133
2134 #[inline(always)]
2135 fn inline_size(_context: fidl::encoding::Context) -> usize {
2136 16
2137 }
2138 }
2139
2140 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FxtVersion, D>
2141 for &FxtVersion
2142 {
2143 unsafe fn encode(
2144 self,
2145 encoder: &mut fidl::encoding::Encoder<'_, D>,
2146 offset: usize,
2147 mut depth: fidl::encoding::Depth,
2148 ) -> fidl::Result<()> {
2149 encoder.debug_check_bounds::<FxtVersion>(offset);
2150 let max_ordinal: u64 = self.max_ordinal_present();
2152 encoder.write_num(max_ordinal, offset);
2153 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2154 if max_ordinal == 0 {
2156 return Ok(());
2157 }
2158 depth.increment()?;
2159 let envelope_size = 8;
2160 let bytes_len = max_ordinal as usize * envelope_size;
2161 #[allow(unused_variables)]
2162 let offset = encoder.out_of_line_offset(bytes_len);
2163 let mut _prev_end_offset: usize = 0;
2164 if 1 > max_ordinal {
2165 return Ok(());
2166 }
2167
2168 let cur_offset: usize = (1 - 1) * envelope_size;
2171
2172 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2174
2175 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2180 self.major.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2181 encoder,
2182 offset + cur_offset,
2183 depth,
2184 )?;
2185
2186 _prev_end_offset = cur_offset + envelope_size;
2187 if 2 > max_ordinal {
2188 return Ok(());
2189 }
2190
2191 let cur_offset: usize = (2 - 1) * envelope_size;
2194
2195 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2197
2198 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2203 self.minor.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2204 encoder,
2205 offset + cur_offset,
2206 depth,
2207 )?;
2208
2209 _prev_end_offset = cur_offset + envelope_size;
2210
2211 Ok(())
2212 }
2213 }
2214
2215 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FxtVersion {
2216 #[inline(always)]
2217 fn new_empty() -> Self {
2218 Self::default()
2219 }
2220
2221 unsafe fn decode(
2222 &mut self,
2223 decoder: &mut fidl::encoding::Decoder<'_, D>,
2224 offset: usize,
2225 mut depth: fidl::encoding::Depth,
2226 ) -> fidl::Result<()> {
2227 decoder.debug_check_bounds::<Self>(offset);
2228 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2229 None => return Err(fidl::Error::NotNullable),
2230 Some(len) => len,
2231 };
2232 if len == 0 {
2234 return Ok(());
2235 };
2236 depth.increment()?;
2237 let envelope_size = 8;
2238 let bytes_len = len * envelope_size;
2239 let offset = decoder.out_of_line_offset(bytes_len)?;
2240 let mut _next_ordinal_to_read = 0;
2242 let mut next_offset = offset;
2243 let end_offset = offset + bytes_len;
2244 _next_ordinal_to_read += 1;
2245 if next_offset >= end_offset {
2246 return Ok(());
2247 }
2248
2249 while _next_ordinal_to_read < 1 {
2251 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2252 _next_ordinal_to_read += 1;
2253 next_offset += envelope_size;
2254 }
2255
2256 let next_out_of_line = decoder.next_out_of_line();
2257 let handles_before = decoder.remaining_handles();
2258 if let Some((inlined, num_bytes, num_handles)) =
2259 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2260 {
2261 let member_inline_size =
2262 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2263 if inlined != (member_inline_size <= 4) {
2264 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2265 }
2266 let inner_offset;
2267 let mut inner_depth = depth.clone();
2268 if inlined {
2269 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2270 inner_offset = next_offset;
2271 } else {
2272 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2273 inner_depth.increment()?;
2274 }
2275 let val_ref = self.major.get_or_insert_with(|| fidl::new_empty!(u32, D));
2276 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2277 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2278 {
2279 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2280 }
2281 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2282 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2283 }
2284 }
2285
2286 next_offset += envelope_size;
2287 _next_ordinal_to_read += 1;
2288 if next_offset >= end_offset {
2289 return Ok(());
2290 }
2291
2292 while _next_ordinal_to_read < 2 {
2294 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2295 _next_ordinal_to_read += 1;
2296 next_offset += envelope_size;
2297 }
2298
2299 let next_out_of_line = decoder.next_out_of_line();
2300 let handles_before = decoder.remaining_handles();
2301 if let Some((inlined, num_bytes, num_handles)) =
2302 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2303 {
2304 let member_inline_size =
2305 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2306 if inlined != (member_inline_size <= 4) {
2307 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2308 }
2309 let inner_offset;
2310 let mut inner_depth = depth.clone();
2311 if inlined {
2312 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2313 inner_offset = next_offset;
2314 } else {
2315 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2316 inner_depth.increment()?;
2317 }
2318 let val_ref = self.minor.get_or_insert_with(|| fidl::new_empty!(u32, D));
2319 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2320 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2321 {
2322 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2323 }
2324 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2325 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2326 }
2327 }
2328
2329 next_offset += envelope_size;
2330
2331 while next_offset < end_offset {
2333 _next_ordinal_to_read += 1;
2334 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2335 next_offset += envelope_size;
2336 }
2337
2338 Ok(())
2339 }
2340 }
2341
2342 impl ProviderInfo {
2343 #[inline(always)]
2344 fn max_ordinal_present(&self) -> u64 {
2345 if let Some(_) = self.name {
2346 return 3;
2347 }
2348 if let Some(_) = self.pid {
2349 return 2;
2350 }
2351 if let Some(_) = self.id {
2352 return 1;
2353 }
2354 0
2355 }
2356 }
2357
2358 impl fidl::encoding::ValueTypeMarker for ProviderInfo {
2359 type Borrowed<'a> = &'a Self;
2360 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2361 value
2362 }
2363 }
2364
2365 unsafe impl fidl::encoding::TypeMarker for ProviderInfo {
2366 type Owned = Self;
2367
2368 #[inline(always)]
2369 fn inline_align(_context: fidl::encoding::Context) -> usize {
2370 8
2371 }
2372
2373 #[inline(always)]
2374 fn inline_size(_context: fidl::encoding::Context) -> usize {
2375 16
2376 }
2377 }
2378
2379 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProviderInfo, D>
2380 for &ProviderInfo
2381 {
2382 unsafe fn encode(
2383 self,
2384 encoder: &mut fidl::encoding::Encoder<'_, D>,
2385 offset: usize,
2386 mut depth: fidl::encoding::Depth,
2387 ) -> fidl::Result<()> {
2388 encoder.debug_check_bounds::<ProviderInfo>(offset);
2389 let max_ordinal: u64 = self.max_ordinal_present();
2391 encoder.write_num(max_ordinal, offset);
2392 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2393 if max_ordinal == 0 {
2395 return Ok(());
2396 }
2397 depth.increment()?;
2398 let envelope_size = 8;
2399 let bytes_len = max_ordinal as usize * envelope_size;
2400 #[allow(unused_variables)]
2401 let offset = encoder.out_of_line_offset(bytes_len);
2402 let mut _prev_end_offset: usize = 0;
2403 if 1 > max_ordinal {
2404 return Ok(());
2405 }
2406
2407 let cur_offset: usize = (1 - 1) * envelope_size;
2410
2411 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2413
2414 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2419 self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2420 encoder,
2421 offset + cur_offset,
2422 depth,
2423 )?;
2424
2425 _prev_end_offset = cur_offset + envelope_size;
2426 if 2 > max_ordinal {
2427 return Ok(());
2428 }
2429
2430 let cur_offset: usize = (2 - 1) * envelope_size;
2433
2434 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2436
2437 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2442 self.pid.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2443 encoder,
2444 offset + cur_offset,
2445 depth,
2446 )?;
2447
2448 _prev_end_offset = cur_offset + envelope_size;
2449 if 3 > max_ordinal {
2450 return Ok(());
2451 }
2452
2453 let cur_offset: usize = (3 - 1) * envelope_size;
2456
2457 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2459
2460 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
2465 self.name.as_ref().map(
2466 <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
2467 ),
2468 encoder,
2469 offset + cur_offset,
2470 depth,
2471 )?;
2472
2473 _prev_end_offset = cur_offset + envelope_size;
2474
2475 Ok(())
2476 }
2477 }
2478
2479 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProviderInfo {
2480 #[inline(always)]
2481 fn new_empty() -> Self {
2482 Self::default()
2483 }
2484
2485 unsafe fn decode(
2486 &mut self,
2487 decoder: &mut fidl::encoding::Decoder<'_, D>,
2488 offset: usize,
2489 mut depth: fidl::encoding::Depth,
2490 ) -> fidl::Result<()> {
2491 decoder.debug_check_bounds::<Self>(offset);
2492 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2493 None => return Err(fidl::Error::NotNullable),
2494 Some(len) => len,
2495 };
2496 if len == 0 {
2498 return Ok(());
2499 };
2500 depth.increment()?;
2501 let envelope_size = 8;
2502 let bytes_len = len * envelope_size;
2503 let offset = decoder.out_of_line_offset(bytes_len)?;
2504 let mut _next_ordinal_to_read = 0;
2506 let mut next_offset = offset;
2507 let end_offset = offset + bytes_len;
2508 _next_ordinal_to_read += 1;
2509 if next_offset >= end_offset {
2510 return Ok(());
2511 }
2512
2513 while _next_ordinal_to_read < 1 {
2515 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2516 _next_ordinal_to_read += 1;
2517 next_offset += envelope_size;
2518 }
2519
2520 let next_out_of_line = decoder.next_out_of_line();
2521 let handles_before = decoder.remaining_handles();
2522 if let Some((inlined, num_bytes, num_handles)) =
2523 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2524 {
2525 let member_inline_size =
2526 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2527 if inlined != (member_inline_size <= 4) {
2528 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2529 }
2530 let inner_offset;
2531 let mut inner_depth = depth.clone();
2532 if inlined {
2533 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2534 inner_offset = next_offset;
2535 } else {
2536 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2537 inner_depth.increment()?;
2538 }
2539 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2540 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2541 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2542 {
2543 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2544 }
2545 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2546 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2547 }
2548 }
2549
2550 next_offset += envelope_size;
2551 _next_ordinal_to_read += 1;
2552 if next_offset >= end_offset {
2553 return Ok(());
2554 }
2555
2556 while _next_ordinal_to_read < 2 {
2558 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2559 _next_ordinal_to_read += 1;
2560 next_offset += envelope_size;
2561 }
2562
2563 let next_out_of_line = decoder.next_out_of_line();
2564 let handles_before = decoder.remaining_handles();
2565 if let Some((inlined, num_bytes, num_handles)) =
2566 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2567 {
2568 let member_inline_size =
2569 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2570 if inlined != (member_inline_size <= 4) {
2571 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2572 }
2573 let inner_offset;
2574 let mut inner_depth = depth.clone();
2575 if inlined {
2576 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2577 inner_offset = next_offset;
2578 } else {
2579 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2580 inner_depth.increment()?;
2581 }
2582 let val_ref = self.pid.get_or_insert_with(|| fidl::new_empty!(u64, D));
2583 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2584 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2585 {
2586 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2587 }
2588 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2589 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2590 }
2591 }
2592
2593 next_offset += envelope_size;
2594 _next_ordinal_to_read += 1;
2595 if next_offset >= end_offset {
2596 return Ok(());
2597 }
2598
2599 while _next_ordinal_to_read < 3 {
2601 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2602 _next_ordinal_to_read += 1;
2603 next_offset += envelope_size;
2604 }
2605
2606 let next_out_of_line = decoder.next_out_of_line();
2607 let handles_before = decoder.remaining_handles();
2608 if let Some((inlined, num_bytes, num_handles)) =
2609 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2610 {
2611 let member_inline_size =
2612 <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
2613 decoder.context,
2614 );
2615 if inlined != (member_inline_size <= 4) {
2616 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2617 }
2618 let inner_offset;
2619 let mut inner_depth = depth.clone();
2620 if inlined {
2621 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2622 inner_offset = next_offset;
2623 } else {
2624 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2625 inner_depth.increment()?;
2626 }
2627 let val_ref = self
2628 .name
2629 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
2630 fidl::decode!(
2631 fidl::encoding::BoundedString<100>,
2632 D,
2633 val_ref,
2634 decoder,
2635 inner_offset,
2636 inner_depth
2637 )?;
2638 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2639 {
2640 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2641 }
2642 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2643 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2644 }
2645 }
2646
2647 next_offset += envelope_size;
2648
2649 while next_offset < end_offset {
2651 _next_ordinal_to_read += 1;
2652 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2653 next_offset += envelope_size;
2654 }
2655
2656 Ok(())
2657 }
2658 }
2659
2660 impl ProviderSpec {
2661 #[inline(always)]
2662 fn max_ordinal_present(&self) -> u64 {
2663 if let Some(_) = self.categories {
2664 return 3;
2665 }
2666 if let Some(_) = self.buffer_size_megabytes_hint {
2667 return 2;
2668 }
2669 if let Some(_) = self.name {
2670 return 1;
2671 }
2672 0
2673 }
2674 }
2675
2676 impl fidl::encoding::ValueTypeMarker for ProviderSpec {
2677 type Borrowed<'a> = &'a Self;
2678 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2679 value
2680 }
2681 }
2682
2683 unsafe impl fidl::encoding::TypeMarker for ProviderSpec {
2684 type Owned = Self;
2685
2686 #[inline(always)]
2687 fn inline_align(_context: fidl::encoding::Context) -> usize {
2688 8
2689 }
2690
2691 #[inline(always)]
2692 fn inline_size(_context: fidl::encoding::Context) -> usize {
2693 16
2694 }
2695 }
2696
2697 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProviderSpec, D>
2698 for &ProviderSpec
2699 {
2700 unsafe fn encode(
2701 self,
2702 encoder: &mut fidl::encoding::Encoder<'_, D>,
2703 offset: usize,
2704 mut depth: fidl::encoding::Depth,
2705 ) -> fidl::Result<()> {
2706 encoder.debug_check_bounds::<ProviderSpec>(offset);
2707 let max_ordinal: u64 = self.max_ordinal_present();
2709 encoder.write_num(max_ordinal, offset);
2710 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2711 if max_ordinal == 0 {
2713 return Ok(());
2714 }
2715 depth.increment()?;
2716 let envelope_size = 8;
2717 let bytes_len = max_ordinal as usize * envelope_size;
2718 #[allow(unused_variables)]
2719 let offset = encoder.out_of_line_offset(bytes_len);
2720 let mut _prev_end_offset: usize = 0;
2721 if 1 > max_ordinal {
2722 return Ok(());
2723 }
2724
2725 let cur_offset: usize = (1 - 1) * envelope_size;
2728
2729 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2731
2732 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
2737 self.name.as_ref().map(
2738 <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
2739 ),
2740 encoder,
2741 offset + cur_offset,
2742 depth,
2743 )?;
2744
2745 _prev_end_offset = cur_offset + envelope_size;
2746 if 2 > max_ordinal {
2747 return Ok(());
2748 }
2749
2750 let cur_offset: usize = (2 - 1) * envelope_size;
2753
2754 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2756
2757 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2762 self.buffer_size_megabytes_hint
2763 .as_ref()
2764 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2765 encoder,
2766 offset + cur_offset,
2767 depth,
2768 )?;
2769
2770 _prev_end_offset = cur_offset + envelope_size;
2771 if 3 > max_ordinal {
2772 return Ok(());
2773 }
2774
2775 let cur_offset: usize = (3 - 1) * envelope_size;
2778
2779 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2781
2782 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>, D>(
2787 self.categories.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000> as fidl::encoding::ValueTypeMarker>::borrow),
2788 encoder, offset + cur_offset, depth
2789 )?;
2790
2791 _prev_end_offset = cur_offset + envelope_size;
2792
2793 Ok(())
2794 }
2795 }
2796
2797 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProviderSpec {
2798 #[inline(always)]
2799 fn new_empty() -> Self {
2800 Self::default()
2801 }
2802
2803 unsafe fn decode(
2804 &mut self,
2805 decoder: &mut fidl::encoding::Decoder<'_, D>,
2806 offset: usize,
2807 mut depth: fidl::encoding::Depth,
2808 ) -> fidl::Result<()> {
2809 decoder.debug_check_bounds::<Self>(offset);
2810 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2811 None => return Err(fidl::Error::NotNullable),
2812 Some(len) => len,
2813 };
2814 if len == 0 {
2816 return Ok(());
2817 };
2818 depth.increment()?;
2819 let envelope_size = 8;
2820 let bytes_len = len * envelope_size;
2821 let offset = decoder.out_of_line_offset(bytes_len)?;
2822 let mut _next_ordinal_to_read = 0;
2824 let mut next_offset = offset;
2825 let end_offset = offset + bytes_len;
2826 _next_ordinal_to_read += 1;
2827 if next_offset >= end_offset {
2828 return Ok(());
2829 }
2830
2831 while _next_ordinal_to_read < 1 {
2833 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2834 _next_ordinal_to_read += 1;
2835 next_offset += envelope_size;
2836 }
2837
2838 let next_out_of_line = decoder.next_out_of_line();
2839 let handles_before = decoder.remaining_handles();
2840 if let Some((inlined, num_bytes, num_handles)) =
2841 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2842 {
2843 let member_inline_size =
2844 <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
2845 decoder.context,
2846 );
2847 if inlined != (member_inline_size <= 4) {
2848 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2849 }
2850 let inner_offset;
2851 let mut inner_depth = depth.clone();
2852 if inlined {
2853 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2854 inner_offset = next_offset;
2855 } else {
2856 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2857 inner_depth.increment()?;
2858 }
2859 let val_ref = self
2860 .name
2861 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
2862 fidl::decode!(
2863 fidl::encoding::BoundedString<100>,
2864 D,
2865 val_ref,
2866 decoder,
2867 inner_offset,
2868 inner_depth
2869 )?;
2870 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2871 {
2872 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2873 }
2874 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2875 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2876 }
2877 }
2878
2879 next_offset += envelope_size;
2880 _next_ordinal_to_read += 1;
2881 if next_offset >= end_offset {
2882 return Ok(());
2883 }
2884
2885 while _next_ordinal_to_read < 2 {
2887 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2888 _next_ordinal_to_read += 1;
2889 next_offset += envelope_size;
2890 }
2891
2892 let next_out_of_line = decoder.next_out_of_line();
2893 let handles_before = decoder.remaining_handles();
2894 if let Some((inlined, num_bytes, num_handles)) =
2895 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2896 {
2897 let member_inline_size =
2898 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2899 if inlined != (member_inline_size <= 4) {
2900 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2901 }
2902 let inner_offset;
2903 let mut inner_depth = depth.clone();
2904 if inlined {
2905 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2906 inner_offset = next_offset;
2907 } else {
2908 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2909 inner_depth.increment()?;
2910 }
2911 let val_ref =
2912 self.buffer_size_megabytes_hint.get_or_insert_with(|| fidl::new_empty!(u32, D));
2913 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2914 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2915 {
2916 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2917 }
2918 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2919 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2920 }
2921 }
2922
2923 next_offset += envelope_size;
2924 _next_ordinal_to_read += 1;
2925 if next_offset >= end_offset {
2926 return Ok(());
2927 }
2928
2929 while _next_ordinal_to_read < 3 {
2931 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2932 _next_ordinal_to_read += 1;
2933 next_offset += envelope_size;
2934 }
2935
2936 let next_out_of_line = decoder.next_out_of_line();
2937 let handles_before = decoder.remaining_handles();
2938 if let Some((inlined, num_bytes, num_handles)) =
2939 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2940 {
2941 let member_inline_size = <fidl::encoding::Vector<
2942 fidl::encoding::BoundedString<100>,
2943 5000,
2944 > as fidl::encoding::TypeMarker>::inline_size(
2945 decoder.context
2946 );
2947 if inlined != (member_inline_size <= 4) {
2948 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2949 }
2950 let inner_offset;
2951 let mut inner_depth = depth.clone();
2952 if inlined {
2953 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2954 inner_offset = next_offset;
2955 } else {
2956 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2957 inner_depth.increment()?;
2958 }
2959 let val_ref = self.categories.get_or_insert_with(|| {
2960 fidl::new_empty!(
2961 fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>,
2962 D
2963 )
2964 });
2965 fidl::decode!(
2966 fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>,
2967 D,
2968 val_ref,
2969 decoder,
2970 inner_offset,
2971 inner_depth
2972 )?;
2973 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2974 {
2975 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2976 }
2977 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2978 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2979 }
2980 }
2981
2982 next_offset += envelope_size;
2983
2984 while next_offset < end_offset {
2986 _next_ordinal_to_read += 1;
2987 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2988 next_offset += envelope_size;
2989 }
2990
2991 Ok(())
2992 }
2993 }
2994
2995 impl ProviderStats {
2996 #[inline(always)]
2997 fn max_ordinal_present(&self) -> u64 {
2998 if let Some(_) = self.non_durable_bytes_written {
2999 return 7;
3000 }
3001 if let Some(_) = self.percentage_durable_buffer_used {
3002 return 6;
3003 }
3004 if let Some(_) = self.records_dropped {
3005 return 5;
3006 }
3007 if let Some(_) = self.buffer_wrapped_count {
3008 return 4;
3009 }
3010 if let Some(_) = self.buffering_mode {
3011 return 3;
3012 }
3013 if let Some(_) = self.pid {
3014 return 2;
3015 }
3016 if let Some(_) = self.name {
3017 return 1;
3018 }
3019 0
3020 }
3021 }
3022
3023 impl fidl::encoding::ValueTypeMarker for ProviderStats {
3024 type Borrowed<'a> = &'a Self;
3025 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3026 value
3027 }
3028 }
3029
3030 unsafe impl fidl::encoding::TypeMarker for ProviderStats {
3031 type Owned = Self;
3032
3033 #[inline(always)]
3034 fn inline_align(_context: fidl::encoding::Context) -> usize {
3035 8
3036 }
3037
3038 #[inline(always)]
3039 fn inline_size(_context: fidl::encoding::Context) -> usize {
3040 16
3041 }
3042 }
3043
3044 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProviderStats, D>
3045 for &ProviderStats
3046 {
3047 unsafe fn encode(
3048 self,
3049 encoder: &mut fidl::encoding::Encoder<'_, D>,
3050 offset: usize,
3051 mut depth: fidl::encoding::Depth,
3052 ) -> fidl::Result<()> {
3053 encoder.debug_check_bounds::<ProviderStats>(offset);
3054 let max_ordinal: u64 = self.max_ordinal_present();
3056 encoder.write_num(max_ordinal, offset);
3057 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3058 if max_ordinal == 0 {
3060 return Ok(());
3061 }
3062 depth.increment()?;
3063 let envelope_size = 8;
3064 let bytes_len = max_ordinal as usize * envelope_size;
3065 #[allow(unused_variables)]
3066 let offset = encoder.out_of_line_offset(bytes_len);
3067 let mut _prev_end_offset: usize = 0;
3068 if 1 > max_ordinal {
3069 return Ok(());
3070 }
3071
3072 let cur_offset: usize = (1 - 1) * envelope_size;
3075
3076 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3078
3079 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<100>, D>(
3084 self.name.as_ref().map(
3085 <fidl::encoding::BoundedString<100> as fidl::encoding::ValueTypeMarker>::borrow,
3086 ),
3087 encoder,
3088 offset + cur_offset,
3089 depth,
3090 )?;
3091
3092 _prev_end_offset = cur_offset + envelope_size;
3093 if 2 > max_ordinal {
3094 return Ok(());
3095 }
3096
3097 let cur_offset: usize = (2 - 1) * envelope_size;
3100
3101 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3103
3104 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3109 self.pid.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3110 encoder,
3111 offset + cur_offset,
3112 depth,
3113 )?;
3114
3115 _prev_end_offset = cur_offset + envelope_size;
3116 if 3 > max_ordinal {
3117 return Ok(());
3118 }
3119
3120 let cur_offset: usize = (3 - 1) * envelope_size;
3123
3124 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3126
3127 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_tracing_common::BufferingMode, D>(
3132 self.buffering_mode.as_ref().map(<fidl_fuchsia_tracing_common::BufferingMode as fidl::encoding::ValueTypeMarker>::borrow),
3133 encoder, offset + cur_offset, depth
3134 )?;
3135
3136 _prev_end_offset = cur_offset + envelope_size;
3137 if 4 > max_ordinal {
3138 return Ok(());
3139 }
3140
3141 let cur_offset: usize = (4 - 1) * envelope_size;
3144
3145 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3147
3148 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3153 self.buffer_wrapped_count
3154 .as_ref()
3155 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3156 encoder,
3157 offset + cur_offset,
3158 depth,
3159 )?;
3160
3161 _prev_end_offset = cur_offset + envelope_size;
3162 if 5 > max_ordinal {
3163 return Ok(());
3164 }
3165
3166 let cur_offset: usize = (5 - 1) * envelope_size;
3169
3170 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3172
3173 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3178 self.records_dropped.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3179 encoder,
3180 offset + cur_offset,
3181 depth,
3182 )?;
3183
3184 _prev_end_offset = cur_offset + envelope_size;
3185 if 6 > max_ordinal {
3186 return Ok(());
3187 }
3188
3189 let cur_offset: usize = (6 - 1) * envelope_size;
3192
3193 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3195
3196 fidl::encoding::encode_in_envelope_optional::<f32, D>(
3201 self.percentage_durable_buffer_used
3202 .as_ref()
3203 .map(<f32 as fidl::encoding::ValueTypeMarker>::borrow),
3204 encoder,
3205 offset + cur_offset,
3206 depth,
3207 )?;
3208
3209 _prev_end_offset = cur_offset + envelope_size;
3210 if 7 > max_ordinal {
3211 return Ok(());
3212 }
3213
3214 let cur_offset: usize = (7 - 1) * envelope_size;
3217
3218 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3220
3221 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3226 self.non_durable_bytes_written
3227 .as_ref()
3228 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3229 encoder,
3230 offset + cur_offset,
3231 depth,
3232 )?;
3233
3234 _prev_end_offset = cur_offset + envelope_size;
3235
3236 Ok(())
3237 }
3238 }
3239
3240 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProviderStats {
3241 #[inline(always)]
3242 fn new_empty() -> Self {
3243 Self::default()
3244 }
3245
3246 unsafe fn decode(
3247 &mut self,
3248 decoder: &mut fidl::encoding::Decoder<'_, D>,
3249 offset: usize,
3250 mut depth: fidl::encoding::Depth,
3251 ) -> fidl::Result<()> {
3252 decoder.debug_check_bounds::<Self>(offset);
3253 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3254 None => return Err(fidl::Error::NotNullable),
3255 Some(len) => len,
3256 };
3257 if len == 0 {
3259 return Ok(());
3260 };
3261 depth.increment()?;
3262 let envelope_size = 8;
3263 let bytes_len = len * envelope_size;
3264 let offset = decoder.out_of_line_offset(bytes_len)?;
3265 let mut _next_ordinal_to_read = 0;
3267 let mut next_offset = offset;
3268 let end_offset = offset + bytes_len;
3269 _next_ordinal_to_read += 1;
3270 if next_offset >= end_offset {
3271 return Ok(());
3272 }
3273
3274 while _next_ordinal_to_read < 1 {
3276 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3277 _next_ordinal_to_read += 1;
3278 next_offset += envelope_size;
3279 }
3280
3281 let next_out_of_line = decoder.next_out_of_line();
3282 let handles_before = decoder.remaining_handles();
3283 if let Some((inlined, num_bytes, num_handles)) =
3284 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3285 {
3286 let member_inline_size =
3287 <fidl::encoding::BoundedString<100> as fidl::encoding::TypeMarker>::inline_size(
3288 decoder.context,
3289 );
3290 if inlined != (member_inline_size <= 4) {
3291 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3292 }
3293 let inner_offset;
3294 let mut inner_depth = depth.clone();
3295 if inlined {
3296 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3297 inner_offset = next_offset;
3298 } else {
3299 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3300 inner_depth.increment()?;
3301 }
3302 let val_ref = self
3303 .name
3304 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<100>, D));
3305 fidl::decode!(
3306 fidl::encoding::BoundedString<100>,
3307 D,
3308 val_ref,
3309 decoder,
3310 inner_offset,
3311 inner_depth
3312 )?;
3313 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3314 {
3315 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3316 }
3317 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3318 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3319 }
3320 }
3321
3322 next_offset += envelope_size;
3323 _next_ordinal_to_read += 1;
3324 if next_offset >= end_offset {
3325 return Ok(());
3326 }
3327
3328 while _next_ordinal_to_read < 2 {
3330 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3331 _next_ordinal_to_read += 1;
3332 next_offset += envelope_size;
3333 }
3334
3335 let next_out_of_line = decoder.next_out_of_line();
3336 let handles_before = decoder.remaining_handles();
3337 if let Some((inlined, num_bytes, num_handles)) =
3338 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3339 {
3340 let member_inline_size =
3341 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3342 if inlined != (member_inline_size <= 4) {
3343 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3344 }
3345 let inner_offset;
3346 let mut inner_depth = depth.clone();
3347 if inlined {
3348 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3349 inner_offset = next_offset;
3350 } else {
3351 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3352 inner_depth.increment()?;
3353 }
3354 let val_ref = self.pid.get_or_insert_with(|| fidl::new_empty!(u64, D));
3355 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3356 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3357 {
3358 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3359 }
3360 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3361 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3362 }
3363 }
3364
3365 next_offset += envelope_size;
3366 _next_ordinal_to_read += 1;
3367 if next_offset >= end_offset {
3368 return Ok(());
3369 }
3370
3371 while _next_ordinal_to_read < 3 {
3373 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3374 _next_ordinal_to_read += 1;
3375 next_offset += envelope_size;
3376 }
3377
3378 let next_out_of_line = decoder.next_out_of_line();
3379 let handles_before = decoder.remaining_handles();
3380 if let Some((inlined, num_bytes, num_handles)) =
3381 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3382 {
3383 let member_inline_size = <fidl_fuchsia_tracing_common::BufferingMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3384 if inlined != (member_inline_size <= 4) {
3385 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3386 }
3387 let inner_offset;
3388 let mut inner_depth = depth.clone();
3389 if inlined {
3390 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3391 inner_offset = next_offset;
3392 } else {
3393 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3394 inner_depth.increment()?;
3395 }
3396 let val_ref = self.buffering_mode.get_or_insert_with(|| {
3397 fidl::new_empty!(fidl_fuchsia_tracing_common::BufferingMode, D)
3398 });
3399 fidl::decode!(
3400 fidl_fuchsia_tracing_common::BufferingMode,
3401 D,
3402 val_ref,
3403 decoder,
3404 inner_offset,
3405 inner_depth
3406 )?;
3407 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3408 {
3409 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3410 }
3411 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3412 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3413 }
3414 }
3415
3416 next_offset += envelope_size;
3417 _next_ordinal_to_read += 1;
3418 if next_offset >= end_offset {
3419 return Ok(());
3420 }
3421
3422 while _next_ordinal_to_read < 4 {
3424 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3425 _next_ordinal_to_read += 1;
3426 next_offset += envelope_size;
3427 }
3428
3429 let next_out_of_line = decoder.next_out_of_line();
3430 let handles_before = decoder.remaining_handles();
3431 if let Some((inlined, num_bytes, num_handles)) =
3432 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3433 {
3434 let member_inline_size =
3435 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3436 if inlined != (member_inline_size <= 4) {
3437 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3438 }
3439 let inner_offset;
3440 let mut inner_depth = depth.clone();
3441 if inlined {
3442 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3443 inner_offset = next_offset;
3444 } else {
3445 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3446 inner_depth.increment()?;
3447 }
3448 let val_ref =
3449 self.buffer_wrapped_count.get_or_insert_with(|| fidl::new_empty!(u32, D));
3450 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3451 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3452 {
3453 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3454 }
3455 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3456 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3457 }
3458 }
3459
3460 next_offset += envelope_size;
3461 _next_ordinal_to_read += 1;
3462 if next_offset >= end_offset {
3463 return Ok(());
3464 }
3465
3466 while _next_ordinal_to_read < 5 {
3468 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3469 _next_ordinal_to_read += 1;
3470 next_offset += envelope_size;
3471 }
3472
3473 let next_out_of_line = decoder.next_out_of_line();
3474 let handles_before = decoder.remaining_handles();
3475 if let Some((inlined, num_bytes, num_handles)) =
3476 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3477 {
3478 let member_inline_size =
3479 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3480 if inlined != (member_inline_size <= 4) {
3481 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3482 }
3483 let inner_offset;
3484 let mut inner_depth = depth.clone();
3485 if inlined {
3486 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3487 inner_offset = next_offset;
3488 } else {
3489 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3490 inner_depth.increment()?;
3491 }
3492 let val_ref = self.records_dropped.get_or_insert_with(|| fidl::new_empty!(u64, D));
3493 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3494 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3495 {
3496 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3497 }
3498 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3499 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3500 }
3501 }
3502
3503 next_offset += envelope_size;
3504 _next_ordinal_to_read += 1;
3505 if next_offset >= end_offset {
3506 return Ok(());
3507 }
3508
3509 while _next_ordinal_to_read < 6 {
3511 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3512 _next_ordinal_to_read += 1;
3513 next_offset += envelope_size;
3514 }
3515
3516 let next_out_of_line = decoder.next_out_of_line();
3517 let handles_before = decoder.remaining_handles();
3518 if let Some((inlined, num_bytes, num_handles)) =
3519 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3520 {
3521 let member_inline_size =
3522 <f32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3523 if inlined != (member_inline_size <= 4) {
3524 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3525 }
3526 let inner_offset;
3527 let mut inner_depth = depth.clone();
3528 if inlined {
3529 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3530 inner_offset = next_offset;
3531 } else {
3532 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3533 inner_depth.increment()?;
3534 }
3535 let val_ref = self
3536 .percentage_durable_buffer_used
3537 .get_or_insert_with(|| fidl::new_empty!(f32, D));
3538 fidl::decode!(f32, D, val_ref, decoder, inner_offset, inner_depth)?;
3539 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3540 {
3541 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3542 }
3543 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3544 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3545 }
3546 }
3547
3548 next_offset += envelope_size;
3549 _next_ordinal_to_read += 1;
3550 if next_offset >= end_offset {
3551 return Ok(());
3552 }
3553
3554 while _next_ordinal_to_read < 7 {
3556 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3557 _next_ordinal_to_read += 1;
3558 next_offset += envelope_size;
3559 }
3560
3561 let next_out_of_line = decoder.next_out_of_line();
3562 let handles_before = decoder.remaining_handles();
3563 if let Some((inlined, num_bytes, num_handles)) =
3564 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3565 {
3566 let member_inline_size =
3567 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3568 if inlined != (member_inline_size <= 4) {
3569 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3570 }
3571 let inner_offset;
3572 let mut inner_depth = depth.clone();
3573 if inlined {
3574 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3575 inner_offset = next_offset;
3576 } else {
3577 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3578 inner_depth.increment()?;
3579 }
3580 let val_ref =
3581 self.non_durable_bytes_written.get_or_insert_with(|| fidl::new_empty!(u64, D));
3582 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3583 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3584 {
3585 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3586 }
3587 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3588 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3589 }
3590 }
3591
3592 next_offset += envelope_size;
3593
3594 while next_offset < end_offset {
3596 _next_ordinal_to_read += 1;
3597 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3598 next_offset += envelope_size;
3599 }
3600
3601 Ok(())
3602 }
3603 }
3604
3605 impl StartOptions {
3606 #[inline(always)]
3607 fn max_ordinal_present(&self) -> u64 {
3608 if let Some(_) = self.additional_categories {
3609 return 2;
3610 }
3611 if let Some(_) = self.buffer_disposition {
3612 return 1;
3613 }
3614 0
3615 }
3616 }
3617
3618 impl fidl::encoding::ValueTypeMarker for StartOptions {
3619 type Borrowed<'a> = &'a Self;
3620 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3621 value
3622 }
3623 }
3624
3625 unsafe impl fidl::encoding::TypeMarker for StartOptions {
3626 type Owned = Self;
3627
3628 #[inline(always)]
3629 fn inline_align(_context: fidl::encoding::Context) -> usize {
3630 8
3631 }
3632
3633 #[inline(always)]
3634 fn inline_size(_context: fidl::encoding::Context) -> usize {
3635 16
3636 }
3637 }
3638
3639 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StartOptions, D>
3640 for &StartOptions
3641 {
3642 unsafe fn encode(
3643 self,
3644 encoder: &mut fidl::encoding::Encoder<'_, D>,
3645 offset: usize,
3646 mut depth: fidl::encoding::Depth,
3647 ) -> fidl::Result<()> {
3648 encoder.debug_check_bounds::<StartOptions>(offset);
3649 let max_ordinal: u64 = self.max_ordinal_present();
3651 encoder.write_num(max_ordinal, offset);
3652 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3653 if max_ordinal == 0 {
3655 return Ok(());
3656 }
3657 depth.increment()?;
3658 let envelope_size = 8;
3659 let bytes_len = max_ordinal as usize * envelope_size;
3660 #[allow(unused_variables)]
3661 let offset = encoder.out_of_line_offset(bytes_len);
3662 let mut _prev_end_offset: usize = 0;
3663 if 1 > max_ordinal {
3664 return Ok(());
3665 }
3666
3667 let cur_offset: usize = (1 - 1) * envelope_size;
3670
3671 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3673
3674 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_tracing_common::BufferDisposition, D>(
3679 self.buffer_disposition.as_ref().map(<fidl_fuchsia_tracing_common::BufferDisposition as fidl::encoding::ValueTypeMarker>::borrow),
3680 encoder, offset + cur_offset, depth
3681 )?;
3682
3683 _prev_end_offset = cur_offset + envelope_size;
3684 if 2 > max_ordinal {
3685 return Ok(());
3686 }
3687
3688 let cur_offset: usize = (2 - 1) * envelope_size;
3691
3692 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3694
3695 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>, D>(
3700 self.additional_categories.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000> as fidl::encoding::ValueTypeMarker>::borrow),
3701 encoder, offset + cur_offset, depth
3702 )?;
3703
3704 _prev_end_offset = cur_offset + envelope_size;
3705
3706 Ok(())
3707 }
3708 }
3709
3710 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartOptions {
3711 #[inline(always)]
3712 fn new_empty() -> Self {
3713 Self::default()
3714 }
3715
3716 unsafe fn decode(
3717 &mut self,
3718 decoder: &mut fidl::encoding::Decoder<'_, D>,
3719 offset: usize,
3720 mut depth: fidl::encoding::Depth,
3721 ) -> fidl::Result<()> {
3722 decoder.debug_check_bounds::<Self>(offset);
3723 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3724 None => return Err(fidl::Error::NotNullable),
3725 Some(len) => len,
3726 };
3727 if len == 0 {
3729 return Ok(());
3730 };
3731 depth.increment()?;
3732 let envelope_size = 8;
3733 let bytes_len = len * envelope_size;
3734 let offset = decoder.out_of_line_offset(bytes_len)?;
3735 let mut _next_ordinal_to_read = 0;
3737 let mut next_offset = offset;
3738 let end_offset = offset + bytes_len;
3739 _next_ordinal_to_read += 1;
3740 if next_offset >= end_offset {
3741 return Ok(());
3742 }
3743
3744 while _next_ordinal_to_read < 1 {
3746 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3747 _next_ordinal_to_read += 1;
3748 next_offset += envelope_size;
3749 }
3750
3751 let next_out_of_line = decoder.next_out_of_line();
3752 let handles_before = decoder.remaining_handles();
3753 if let Some((inlined, num_bytes, num_handles)) =
3754 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3755 {
3756 let member_inline_size = <fidl_fuchsia_tracing_common::BufferDisposition as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3757 if inlined != (member_inline_size <= 4) {
3758 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3759 }
3760 let inner_offset;
3761 let mut inner_depth = depth.clone();
3762 if inlined {
3763 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3764 inner_offset = next_offset;
3765 } else {
3766 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3767 inner_depth.increment()?;
3768 }
3769 let val_ref = self.buffer_disposition.get_or_insert_with(|| {
3770 fidl::new_empty!(fidl_fuchsia_tracing_common::BufferDisposition, D)
3771 });
3772 fidl::decode!(
3773 fidl_fuchsia_tracing_common::BufferDisposition,
3774 D,
3775 val_ref,
3776 decoder,
3777 inner_offset,
3778 inner_depth
3779 )?;
3780 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3781 {
3782 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3783 }
3784 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3785 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3786 }
3787 }
3788
3789 next_offset += envelope_size;
3790 _next_ordinal_to_read += 1;
3791 if next_offset >= end_offset {
3792 return Ok(());
3793 }
3794
3795 while _next_ordinal_to_read < 2 {
3797 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3798 _next_ordinal_to_read += 1;
3799 next_offset += envelope_size;
3800 }
3801
3802 let next_out_of_line = decoder.next_out_of_line();
3803 let handles_before = decoder.remaining_handles();
3804 if let Some((inlined, num_bytes, num_handles)) =
3805 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3806 {
3807 let member_inline_size = <fidl::encoding::Vector<
3808 fidl::encoding::BoundedString<100>,
3809 5000,
3810 > as fidl::encoding::TypeMarker>::inline_size(
3811 decoder.context
3812 );
3813 if inlined != (member_inline_size <= 4) {
3814 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3815 }
3816 let inner_offset;
3817 let mut inner_depth = depth.clone();
3818 if inlined {
3819 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3820 inner_offset = next_offset;
3821 } else {
3822 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3823 inner_depth.increment()?;
3824 }
3825 let val_ref = self.additional_categories.get_or_insert_with(|| {
3826 fidl::new_empty!(
3827 fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>,
3828 D
3829 )
3830 });
3831 fidl::decode!(
3832 fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>,
3833 D,
3834 val_ref,
3835 decoder,
3836 inner_offset,
3837 inner_depth
3838 )?;
3839 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3840 {
3841 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3842 }
3843 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3844 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3845 }
3846 }
3847
3848 next_offset += envelope_size;
3849
3850 while next_offset < end_offset {
3852 _next_ordinal_to_read += 1;
3853 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3854 next_offset += envelope_size;
3855 }
3856
3857 Ok(())
3858 }
3859 }
3860
3861 impl StopOptions {
3862 #[inline(always)]
3863 fn max_ordinal_present(&self) -> u64 {
3864 if let Some(_) = self.write_results {
3865 return 1;
3866 }
3867 0
3868 }
3869 }
3870
3871 impl fidl::encoding::ValueTypeMarker for StopOptions {
3872 type Borrowed<'a> = &'a Self;
3873 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3874 value
3875 }
3876 }
3877
3878 unsafe impl fidl::encoding::TypeMarker for StopOptions {
3879 type Owned = Self;
3880
3881 #[inline(always)]
3882 fn inline_align(_context: fidl::encoding::Context) -> usize {
3883 8
3884 }
3885
3886 #[inline(always)]
3887 fn inline_size(_context: fidl::encoding::Context) -> usize {
3888 16
3889 }
3890 }
3891
3892 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StopOptions, D>
3893 for &StopOptions
3894 {
3895 unsafe fn encode(
3896 self,
3897 encoder: &mut fidl::encoding::Encoder<'_, D>,
3898 offset: usize,
3899 mut depth: fidl::encoding::Depth,
3900 ) -> fidl::Result<()> {
3901 encoder.debug_check_bounds::<StopOptions>(offset);
3902 let max_ordinal: u64 = self.max_ordinal_present();
3904 encoder.write_num(max_ordinal, offset);
3905 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3906 if max_ordinal == 0 {
3908 return Ok(());
3909 }
3910 depth.increment()?;
3911 let envelope_size = 8;
3912 let bytes_len = max_ordinal as usize * envelope_size;
3913 #[allow(unused_variables)]
3914 let offset = encoder.out_of_line_offset(bytes_len);
3915 let mut _prev_end_offset: usize = 0;
3916 if 1 > max_ordinal {
3917 return Ok(());
3918 }
3919
3920 let cur_offset: usize = (1 - 1) * envelope_size;
3923
3924 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3926
3927 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3932 self.write_results.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3933 encoder,
3934 offset + cur_offset,
3935 depth,
3936 )?;
3937
3938 _prev_end_offset = cur_offset + envelope_size;
3939
3940 Ok(())
3941 }
3942 }
3943
3944 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopOptions {
3945 #[inline(always)]
3946 fn new_empty() -> Self {
3947 Self::default()
3948 }
3949
3950 unsafe fn decode(
3951 &mut self,
3952 decoder: &mut fidl::encoding::Decoder<'_, D>,
3953 offset: usize,
3954 mut depth: fidl::encoding::Depth,
3955 ) -> fidl::Result<()> {
3956 decoder.debug_check_bounds::<Self>(offset);
3957 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3958 None => return Err(fidl::Error::NotNullable),
3959 Some(len) => len,
3960 };
3961 if len == 0 {
3963 return Ok(());
3964 };
3965 depth.increment()?;
3966 let envelope_size = 8;
3967 let bytes_len = len * envelope_size;
3968 let offset = decoder.out_of_line_offset(bytes_len)?;
3969 let mut _next_ordinal_to_read = 0;
3971 let mut next_offset = offset;
3972 let end_offset = offset + bytes_len;
3973 _next_ordinal_to_read += 1;
3974 if next_offset >= end_offset {
3975 return Ok(());
3976 }
3977
3978 while _next_ordinal_to_read < 1 {
3980 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3981 _next_ordinal_to_read += 1;
3982 next_offset += envelope_size;
3983 }
3984
3985 let next_out_of_line = decoder.next_out_of_line();
3986 let handles_before = decoder.remaining_handles();
3987 if let Some((inlined, num_bytes, num_handles)) =
3988 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3989 {
3990 let member_inline_size =
3991 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3992 if inlined != (member_inline_size <= 4) {
3993 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3994 }
3995 let inner_offset;
3996 let mut inner_depth = depth.clone();
3997 if inlined {
3998 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3999 inner_offset = next_offset;
4000 } else {
4001 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4002 inner_depth.increment()?;
4003 }
4004 let val_ref = self.write_results.get_or_insert_with(|| fidl::new_empty!(bool, D));
4005 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4006 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4007 {
4008 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4009 }
4010 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4011 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4012 }
4013 }
4014
4015 next_offset += envelope_size;
4016
4017 while next_offset < end_offset {
4019 _next_ordinal_to_read += 1;
4020 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4021 next_offset += envelope_size;
4022 }
4023
4024 Ok(())
4025 }
4026 }
4027
4028 impl StopResult {
4029 #[inline(always)]
4030 fn max_ordinal_present(&self) -> u64 {
4031 if let Some(_) = self.provider_stats {
4032 return 1;
4033 }
4034 0
4035 }
4036 }
4037
4038 impl fidl::encoding::ValueTypeMarker for StopResult {
4039 type Borrowed<'a> = &'a Self;
4040 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4041 value
4042 }
4043 }
4044
4045 unsafe impl fidl::encoding::TypeMarker for StopResult {
4046 type Owned = Self;
4047
4048 #[inline(always)]
4049 fn inline_align(_context: fidl::encoding::Context) -> usize {
4050 8
4051 }
4052
4053 #[inline(always)]
4054 fn inline_size(_context: fidl::encoding::Context) -> usize {
4055 16
4056 }
4057 }
4058
4059 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StopResult, D>
4060 for &StopResult
4061 {
4062 unsafe fn encode(
4063 self,
4064 encoder: &mut fidl::encoding::Encoder<'_, D>,
4065 offset: usize,
4066 mut depth: fidl::encoding::Depth,
4067 ) -> fidl::Result<()> {
4068 encoder.debug_check_bounds::<StopResult>(offset);
4069 let max_ordinal: u64 = self.max_ordinal_present();
4071 encoder.write_num(max_ordinal, offset);
4072 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4073 if max_ordinal == 0 {
4075 return Ok(());
4076 }
4077 depth.increment()?;
4078 let envelope_size = 8;
4079 let bytes_len = max_ordinal as usize * envelope_size;
4080 #[allow(unused_variables)]
4081 let offset = encoder.out_of_line_offset(bytes_len);
4082 let mut _prev_end_offset: usize = 0;
4083 if 1 > max_ordinal {
4084 return Ok(());
4085 }
4086
4087 let cur_offset: usize = (1 - 1) * envelope_size;
4090
4091 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4093
4094 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ProviderStats, 100>, D>(
4099 self.provider_stats.as_ref().map(<fidl::encoding::Vector<ProviderStats, 100> as fidl::encoding::ValueTypeMarker>::borrow),
4100 encoder, offset + cur_offset, depth
4101 )?;
4102
4103 _prev_end_offset = cur_offset + envelope_size;
4104
4105 Ok(())
4106 }
4107 }
4108
4109 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopResult {
4110 #[inline(always)]
4111 fn new_empty() -> Self {
4112 Self::default()
4113 }
4114
4115 unsafe fn decode(
4116 &mut self,
4117 decoder: &mut fidl::encoding::Decoder<'_, D>,
4118 offset: usize,
4119 mut depth: fidl::encoding::Depth,
4120 ) -> fidl::Result<()> {
4121 decoder.debug_check_bounds::<Self>(offset);
4122 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4123 None => return Err(fidl::Error::NotNullable),
4124 Some(len) => len,
4125 };
4126 if len == 0 {
4128 return Ok(());
4129 };
4130 depth.increment()?;
4131 let envelope_size = 8;
4132 let bytes_len = len * envelope_size;
4133 let offset = decoder.out_of_line_offset(bytes_len)?;
4134 let mut _next_ordinal_to_read = 0;
4136 let mut next_offset = offset;
4137 let end_offset = offset + bytes_len;
4138 _next_ordinal_to_read += 1;
4139 if next_offset >= end_offset {
4140 return Ok(());
4141 }
4142
4143 while _next_ordinal_to_read < 1 {
4145 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4146 _next_ordinal_to_read += 1;
4147 next_offset += envelope_size;
4148 }
4149
4150 let next_out_of_line = decoder.next_out_of_line();
4151 let handles_before = decoder.remaining_handles();
4152 if let Some((inlined, num_bytes, num_handles)) =
4153 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4154 {
4155 let member_inline_size = <fidl::encoding::Vector<ProviderStats, 100> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4156 if inlined != (member_inline_size <= 4) {
4157 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4158 }
4159 let inner_offset;
4160 let mut inner_depth = depth.clone();
4161 if inlined {
4162 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4163 inner_offset = next_offset;
4164 } else {
4165 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4166 inner_depth.increment()?;
4167 }
4168 let val_ref = self.provider_stats.get_or_insert_with(
4169 || fidl::new_empty!(fidl::encoding::Vector<ProviderStats, 100>, D),
4170 );
4171 fidl::decode!(fidl::encoding::Vector<ProviderStats, 100>, D, val_ref, decoder, inner_offset, inner_depth)?;
4172 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4173 {
4174 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4175 }
4176 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4177 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4178 }
4179 }
4180
4181 next_offset += envelope_size;
4182
4183 while next_offset < end_offset {
4185 _next_ordinal_to_read += 1;
4186 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4187 next_offset += envelope_size;
4188 }
4189
4190 Ok(())
4191 }
4192 }
4193
4194 impl TraceConfig {
4195 #[inline(always)]
4196 fn max_ordinal_present(&self) -> u64 {
4197 if let Some(_) = self.defer_transfer {
4198 return 7;
4199 }
4200 if let Some(_) = self.version {
4201 return 6;
4202 }
4203 if let Some(_) = self.provider_specs {
4204 return 5;
4205 }
4206 if let Some(_) = self.buffering_mode {
4207 return 4;
4208 }
4209 if let Some(_) = self.start_timeout_milliseconds {
4210 return 3;
4211 }
4212 if let Some(_) = self.buffer_size_megabytes_hint {
4213 return 2;
4214 }
4215 if let Some(_) = self.categories {
4216 return 1;
4217 }
4218 0
4219 }
4220 }
4221
4222 impl fidl::encoding::ValueTypeMarker for TraceConfig {
4223 type Borrowed<'a> = &'a Self;
4224 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4225 value
4226 }
4227 }
4228
4229 unsafe impl fidl::encoding::TypeMarker for TraceConfig {
4230 type Owned = Self;
4231
4232 #[inline(always)]
4233 fn inline_align(_context: fidl::encoding::Context) -> usize {
4234 8
4235 }
4236
4237 #[inline(always)]
4238 fn inline_size(_context: fidl::encoding::Context) -> usize {
4239 16
4240 }
4241 }
4242
4243 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TraceConfig, D>
4244 for &TraceConfig
4245 {
4246 unsafe fn encode(
4247 self,
4248 encoder: &mut fidl::encoding::Encoder<'_, D>,
4249 offset: usize,
4250 mut depth: fidl::encoding::Depth,
4251 ) -> fidl::Result<()> {
4252 encoder.debug_check_bounds::<TraceConfig>(offset);
4253 let max_ordinal: u64 = self.max_ordinal_present();
4255 encoder.write_num(max_ordinal, offset);
4256 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4257 if max_ordinal == 0 {
4259 return Ok(());
4260 }
4261 depth.increment()?;
4262 let envelope_size = 8;
4263 let bytes_len = max_ordinal as usize * envelope_size;
4264 #[allow(unused_variables)]
4265 let offset = encoder.out_of_line_offset(bytes_len);
4266 let mut _prev_end_offset: usize = 0;
4267 if 1 > max_ordinal {
4268 return Ok(());
4269 }
4270
4271 let cur_offset: usize = (1 - 1) * envelope_size;
4274
4275 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4277
4278 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>, D>(
4283 self.categories.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000> as fidl::encoding::ValueTypeMarker>::borrow),
4284 encoder, offset + cur_offset, depth
4285 )?;
4286
4287 _prev_end_offset = cur_offset + envelope_size;
4288 if 2 > max_ordinal {
4289 return Ok(());
4290 }
4291
4292 let cur_offset: usize = (2 - 1) * envelope_size;
4295
4296 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4298
4299 fidl::encoding::encode_in_envelope_optional::<u32, D>(
4304 self.buffer_size_megabytes_hint
4305 .as_ref()
4306 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4307 encoder,
4308 offset + cur_offset,
4309 depth,
4310 )?;
4311
4312 _prev_end_offset = cur_offset + envelope_size;
4313 if 3 > max_ordinal {
4314 return Ok(());
4315 }
4316
4317 let cur_offset: usize = (3 - 1) * envelope_size;
4320
4321 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4323
4324 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4329 self.start_timeout_milliseconds
4330 .as_ref()
4331 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4332 encoder,
4333 offset + cur_offset,
4334 depth,
4335 )?;
4336
4337 _prev_end_offset = cur_offset + envelope_size;
4338 if 4 > max_ordinal {
4339 return Ok(());
4340 }
4341
4342 let cur_offset: usize = (4 - 1) * envelope_size;
4345
4346 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4348
4349 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_tracing_common::BufferingMode, D>(
4354 self.buffering_mode.as_ref().map(<fidl_fuchsia_tracing_common::BufferingMode as fidl::encoding::ValueTypeMarker>::borrow),
4355 encoder, offset + cur_offset, depth
4356 )?;
4357
4358 _prev_end_offset = cur_offset + envelope_size;
4359 if 5 > max_ordinal {
4360 return Ok(());
4361 }
4362
4363 let cur_offset: usize = (5 - 1) * envelope_size;
4366
4367 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4369
4370 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ProviderSpec, 100>, D>(
4375 self.provider_specs.as_ref().map(<fidl::encoding::Vector<ProviderSpec, 100> as fidl::encoding::ValueTypeMarker>::borrow),
4376 encoder, offset + cur_offset, depth
4377 )?;
4378
4379 _prev_end_offset = cur_offset + envelope_size;
4380 if 6 > max_ordinal {
4381 return Ok(());
4382 }
4383
4384 let cur_offset: usize = (6 - 1) * envelope_size;
4387
4388 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4390
4391 fidl::encoding::encode_in_envelope_optional::<FxtVersion, D>(
4396 self.version.as_ref().map(<FxtVersion as fidl::encoding::ValueTypeMarker>::borrow),
4397 encoder,
4398 offset + cur_offset,
4399 depth,
4400 )?;
4401
4402 _prev_end_offset = cur_offset + envelope_size;
4403 if 7 > max_ordinal {
4404 return Ok(());
4405 }
4406
4407 let cur_offset: usize = (7 - 1) * envelope_size;
4410
4411 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4413
4414 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4419 self.defer_transfer.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4420 encoder,
4421 offset + cur_offset,
4422 depth,
4423 )?;
4424
4425 _prev_end_offset = cur_offset + envelope_size;
4426
4427 Ok(())
4428 }
4429 }
4430
4431 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TraceConfig {
4432 #[inline(always)]
4433 fn new_empty() -> Self {
4434 Self::default()
4435 }
4436
4437 unsafe fn decode(
4438 &mut self,
4439 decoder: &mut fidl::encoding::Decoder<'_, D>,
4440 offset: usize,
4441 mut depth: fidl::encoding::Depth,
4442 ) -> fidl::Result<()> {
4443 decoder.debug_check_bounds::<Self>(offset);
4444 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4445 None => return Err(fidl::Error::NotNullable),
4446 Some(len) => len,
4447 };
4448 if len == 0 {
4450 return Ok(());
4451 };
4452 depth.increment()?;
4453 let envelope_size = 8;
4454 let bytes_len = len * envelope_size;
4455 let offset = decoder.out_of_line_offset(bytes_len)?;
4456 let mut _next_ordinal_to_read = 0;
4458 let mut next_offset = offset;
4459 let end_offset = offset + bytes_len;
4460 _next_ordinal_to_read += 1;
4461 if next_offset >= end_offset {
4462 return Ok(());
4463 }
4464
4465 while _next_ordinal_to_read < 1 {
4467 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4468 _next_ordinal_to_read += 1;
4469 next_offset += envelope_size;
4470 }
4471
4472 let next_out_of_line = decoder.next_out_of_line();
4473 let handles_before = decoder.remaining_handles();
4474 if let Some((inlined, num_bytes, num_handles)) =
4475 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4476 {
4477 let member_inline_size = <fidl::encoding::Vector<
4478 fidl::encoding::BoundedString<100>,
4479 5000,
4480 > as fidl::encoding::TypeMarker>::inline_size(
4481 decoder.context
4482 );
4483 if inlined != (member_inline_size <= 4) {
4484 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4485 }
4486 let inner_offset;
4487 let mut inner_depth = depth.clone();
4488 if inlined {
4489 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4490 inner_offset = next_offset;
4491 } else {
4492 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4493 inner_depth.increment()?;
4494 }
4495 let val_ref = self.categories.get_or_insert_with(|| {
4496 fidl::new_empty!(
4497 fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>,
4498 D
4499 )
4500 });
4501 fidl::decode!(
4502 fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>,
4503 D,
4504 val_ref,
4505 decoder,
4506 inner_offset,
4507 inner_depth
4508 )?;
4509 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4510 {
4511 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4512 }
4513 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4514 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4515 }
4516 }
4517
4518 next_offset += envelope_size;
4519 _next_ordinal_to_read += 1;
4520 if next_offset >= end_offset {
4521 return Ok(());
4522 }
4523
4524 while _next_ordinal_to_read < 2 {
4526 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4527 _next_ordinal_to_read += 1;
4528 next_offset += envelope_size;
4529 }
4530
4531 let next_out_of_line = decoder.next_out_of_line();
4532 let handles_before = decoder.remaining_handles();
4533 if let Some((inlined, num_bytes, num_handles)) =
4534 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4535 {
4536 let member_inline_size =
4537 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4538 if inlined != (member_inline_size <= 4) {
4539 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4540 }
4541 let inner_offset;
4542 let mut inner_depth = depth.clone();
4543 if inlined {
4544 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4545 inner_offset = next_offset;
4546 } else {
4547 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4548 inner_depth.increment()?;
4549 }
4550 let val_ref =
4551 self.buffer_size_megabytes_hint.get_or_insert_with(|| fidl::new_empty!(u32, D));
4552 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4553 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4554 {
4555 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4556 }
4557 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4558 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4559 }
4560 }
4561
4562 next_offset += envelope_size;
4563 _next_ordinal_to_read += 1;
4564 if next_offset >= end_offset {
4565 return Ok(());
4566 }
4567
4568 while _next_ordinal_to_read < 3 {
4570 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4571 _next_ordinal_to_read += 1;
4572 next_offset += envelope_size;
4573 }
4574
4575 let next_out_of_line = decoder.next_out_of_line();
4576 let handles_before = decoder.remaining_handles();
4577 if let Some((inlined, num_bytes, num_handles)) =
4578 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4579 {
4580 let member_inline_size =
4581 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4582 if inlined != (member_inline_size <= 4) {
4583 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4584 }
4585 let inner_offset;
4586 let mut inner_depth = depth.clone();
4587 if inlined {
4588 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4589 inner_offset = next_offset;
4590 } else {
4591 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4592 inner_depth.increment()?;
4593 }
4594 let val_ref =
4595 self.start_timeout_milliseconds.get_or_insert_with(|| fidl::new_empty!(u64, D));
4596 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4597 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4598 {
4599 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4600 }
4601 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4602 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4603 }
4604 }
4605
4606 next_offset += envelope_size;
4607 _next_ordinal_to_read += 1;
4608 if next_offset >= end_offset {
4609 return Ok(());
4610 }
4611
4612 while _next_ordinal_to_read < 4 {
4614 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4615 _next_ordinal_to_read += 1;
4616 next_offset += envelope_size;
4617 }
4618
4619 let next_out_of_line = decoder.next_out_of_line();
4620 let handles_before = decoder.remaining_handles();
4621 if let Some((inlined, num_bytes, num_handles)) =
4622 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4623 {
4624 let member_inline_size = <fidl_fuchsia_tracing_common::BufferingMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4625 if inlined != (member_inline_size <= 4) {
4626 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4627 }
4628 let inner_offset;
4629 let mut inner_depth = depth.clone();
4630 if inlined {
4631 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4632 inner_offset = next_offset;
4633 } else {
4634 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4635 inner_depth.increment()?;
4636 }
4637 let val_ref = self.buffering_mode.get_or_insert_with(|| {
4638 fidl::new_empty!(fidl_fuchsia_tracing_common::BufferingMode, D)
4639 });
4640 fidl::decode!(
4641 fidl_fuchsia_tracing_common::BufferingMode,
4642 D,
4643 val_ref,
4644 decoder,
4645 inner_offset,
4646 inner_depth
4647 )?;
4648 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4649 {
4650 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4651 }
4652 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4653 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4654 }
4655 }
4656
4657 next_offset += envelope_size;
4658 _next_ordinal_to_read += 1;
4659 if next_offset >= end_offset {
4660 return Ok(());
4661 }
4662
4663 while _next_ordinal_to_read < 5 {
4665 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4666 _next_ordinal_to_read += 1;
4667 next_offset += envelope_size;
4668 }
4669
4670 let next_out_of_line = decoder.next_out_of_line();
4671 let handles_before = decoder.remaining_handles();
4672 if let Some((inlined, num_bytes, num_handles)) =
4673 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4674 {
4675 let member_inline_size = <fidl::encoding::Vector<ProviderSpec, 100> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4676 if inlined != (member_inline_size <= 4) {
4677 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4678 }
4679 let inner_offset;
4680 let mut inner_depth = depth.clone();
4681 if inlined {
4682 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4683 inner_offset = next_offset;
4684 } else {
4685 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4686 inner_depth.increment()?;
4687 }
4688 let val_ref = self.provider_specs.get_or_insert_with(
4689 || fidl::new_empty!(fidl::encoding::Vector<ProviderSpec, 100>, D),
4690 );
4691 fidl::decode!(fidl::encoding::Vector<ProviderSpec, 100>, D, val_ref, decoder, inner_offset, inner_depth)?;
4692 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4693 {
4694 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4695 }
4696 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4697 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4698 }
4699 }
4700
4701 next_offset += envelope_size;
4702 _next_ordinal_to_read += 1;
4703 if next_offset >= end_offset {
4704 return Ok(());
4705 }
4706
4707 while _next_ordinal_to_read < 6 {
4709 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4710 _next_ordinal_to_read += 1;
4711 next_offset += envelope_size;
4712 }
4713
4714 let next_out_of_line = decoder.next_out_of_line();
4715 let handles_before = decoder.remaining_handles();
4716 if let Some((inlined, num_bytes, num_handles)) =
4717 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4718 {
4719 let member_inline_size =
4720 <FxtVersion as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4721 if inlined != (member_inline_size <= 4) {
4722 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4723 }
4724 let inner_offset;
4725 let mut inner_depth = depth.clone();
4726 if inlined {
4727 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4728 inner_offset = next_offset;
4729 } else {
4730 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4731 inner_depth.increment()?;
4732 }
4733 let val_ref = self.version.get_or_insert_with(|| fidl::new_empty!(FxtVersion, D));
4734 fidl::decode!(FxtVersion, D, val_ref, decoder, inner_offset, inner_depth)?;
4735 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4736 {
4737 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4738 }
4739 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4740 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4741 }
4742 }
4743
4744 next_offset += envelope_size;
4745 _next_ordinal_to_read += 1;
4746 if next_offset >= end_offset {
4747 return Ok(());
4748 }
4749
4750 while _next_ordinal_to_read < 7 {
4752 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4753 _next_ordinal_to_read += 1;
4754 next_offset += envelope_size;
4755 }
4756
4757 let next_out_of_line = decoder.next_out_of_line();
4758 let handles_before = decoder.remaining_handles();
4759 if let Some((inlined, num_bytes, num_handles)) =
4760 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4761 {
4762 let member_inline_size =
4763 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4764 if inlined != (member_inline_size <= 4) {
4765 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4766 }
4767 let inner_offset;
4768 let mut inner_depth = depth.clone();
4769 if inlined {
4770 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4771 inner_offset = next_offset;
4772 } else {
4773 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4774 inner_depth.increment()?;
4775 }
4776 let val_ref = self.defer_transfer.get_or_insert_with(|| fidl::new_empty!(bool, D));
4777 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4778 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4779 {
4780 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4781 }
4782 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4783 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4784 }
4785 }
4786
4787 next_offset += envelope_size;
4788
4789 while next_offset < end_offset {
4791 _next_ordinal_to_read += 1;
4792 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4793 next_offset += envelope_size;
4794 }
4795
4796 Ok(())
4797 }
4798 }
4799
4800 impl TraceOptions {
4801 #[inline(always)]
4802 fn max_ordinal_present(&self) -> u64 {
4803 if let Some(_) = self.compression {
4804 return 4;
4805 }
4806 if let Some(_) = self.requested_categories {
4807 return 3;
4808 }
4809 if let Some(_) = self.triggers {
4810 return 2;
4811 }
4812 if let Some(_) = self.duration_ns {
4813 return 1;
4814 }
4815 0
4816 }
4817 }
4818
4819 impl fidl::encoding::ValueTypeMarker for TraceOptions {
4820 type Borrowed<'a> = &'a Self;
4821 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4822 value
4823 }
4824 }
4825
4826 unsafe impl fidl::encoding::TypeMarker for TraceOptions {
4827 type Owned = Self;
4828
4829 #[inline(always)]
4830 fn inline_align(_context: fidl::encoding::Context) -> usize {
4831 8
4832 }
4833
4834 #[inline(always)]
4835 fn inline_size(_context: fidl::encoding::Context) -> usize {
4836 16
4837 }
4838 }
4839
4840 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TraceOptions, D>
4841 for &TraceOptions
4842 {
4843 unsafe fn encode(
4844 self,
4845 encoder: &mut fidl::encoding::Encoder<'_, D>,
4846 offset: usize,
4847 mut depth: fidl::encoding::Depth,
4848 ) -> fidl::Result<()> {
4849 encoder.debug_check_bounds::<TraceOptions>(offset);
4850 let max_ordinal: u64 = self.max_ordinal_present();
4852 encoder.write_num(max_ordinal, offset);
4853 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4854 if max_ordinal == 0 {
4856 return Ok(());
4857 }
4858 depth.increment()?;
4859 let envelope_size = 8;
4860 let bytes_len = max_ordinal as usize * envelope_size;
4861 #[allow(unused_variables)]
4862 let offset = encoder.out_of_line_offset(bytes_len);
4863 let mut _prev_end_offset: usize = 0;
4864 if 1 > max_ordinal {
4865 return Ok(());
4866 }
4867
4868 let cur_offset: usize = (1 - 1) * envelope_size;
4871
4872 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4874
4875 fidl::encoding::encode_in_envelope_optional::<i64, D>(
4880 self.duration_ns.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
4881 encoder,
4882 offset + cur_offset,
4883 depth,
4884 )?;
4885
4886 _prev_end_offset = cur_offset + envelope_size;
4887 if 2 > max_ordinal {
4888 return Ok(());
4889 }
4890
4891 let cur_offset: usize = (2 - 1) * envelope_size;
4894
4895 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4897
4898 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Trigger>, D>(
4903 self.triggers.as_ref().map(<fidl::encoding::UnboundedVector<Trigger> as fidl::encoding::ValueTypeMarker>::borrow),
4904 encoder, offset + cur_offset, depth
4905 )?;
4906
4907 _prev_end_offset = cur_offset + envelope_size;
4908 if 3 > max_ordinal {
4909 return Ok(());
4910 }
4911
4912 let cur_offset: usize = (3 - 1) * envelope_size;
4915
4916 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4918
4919 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>, D>(
4924 self.requested_categories.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000> as fidl::encoding::ValueTypeMarker>::borrow),
4925 encoder, offset + cur_offset, depth
4926 )?;
4927
4928 _prev_end_offset = cur_offset + envelope_size;
4929 if 4 > max_ordinal {
4930 return Ok(());
4931 }
4932
4933 let cur_offset: usize = (4 - 1) * envelope_size;
4936
4937 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4939
4940 fidl::encoding::encode_in_envelope_optional::<CompressionType, D>(
4945 self.compression
4946 .as_ref()
4947 .map(<CompressionType as fidl::encoding::ValueTypeMarker>::borrow),
4948 encoder,
4949 offset + cur_offset,
4950 depth,
4951 )?;
4952
4953 _prev_end_offset = cur_offset + envelope_size;
4954
4955 Ok(())
4956 }
4957 }
4958
4959 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TraceOptions {
4960 #[inline(always)]
4961 fn new_empty() -> Self {
4962 Self::default()
4963 }
4964
4965 unsafe fn decode(
4966 &mut self,
4967 decoder: &mut fidl::encoding::Decoder<'_, D>,
4968 offset: usize,
4969 mut depth: fidl::encoding::Depth,
4970 ) -> fidl::Result<()> {
4971 decoder.debug_check_bounds::<Self>(offset);
4972 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4973 None => return Err(fidl::Error::NotNullable),
4974 Some(len) => len,
4975 };
4976 if len == 0 {
4978 return Ok(());
4979 };
4980 depth.increment()?;
4981 let envelope_size = 8;
4982 let bytes_len = len * envelope_size;
4983 let offset = decoder.out_of_line_offset(bytes_len)?;
4984 let mut _next_ordinal_to_read = 0;
4986 let mut next_offset = offset;
4987 let end_offset = offset + bytes_len;
4988 _next_ordinal_to_read += 1;
4989 if next_offset >= end_offset {
4990 return Ok(());
4991 }
4992
4993 while _next_ordinal_to_read < 1 {
4995 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4996 _next_ordinal_to_read += 1;
4997 next_offset += envelope_size;
4998 }
4999
5000 let next_out_of_line = decoder.next_out_of_line();
5001 let handles_before = decoder.remaining_handles();
5002 if let Some((inlined, num_bytes, num_handles)) =
5003 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5004 {
5005 let member_inline_size =
5006 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5007 if inlined != (member_inline_size <= 4) {
5008 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5009 }
5010 let inner_offset;
5011 let mut inner_depth = depth.clone();
5012 if inlined {
5013 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5014 inner_offset = next_offset;
5015 } else {
5016 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5017 inner_depth.increment()?;
5018 }
5019 let val_ref = self.duration_ns.get_or_insert_with(|| fidl::new_empty!(i64, D));
5020 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
5021 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5022 {
5023 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5024 }
5025 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5026 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5027 }
5028 }
5029
5030 next_offset += envelope_size;
5031 _next_ordinal_to_read += 1;
5032 if next_offset >= end_offset {
5033 return Ok(());
5034 }
5035
5036 while _next_ordinal_to_read < 2 {
5038 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5039 _next_ordinal_to_read += 1;
5040 next_offset += envelope_size;
5041 }
5042
5043 let next_out_of_line = decoder.next_out_of_line();
5044 let handles_before = decoder.remaining_handles();
5045 if let Some((inlined, num_bytes, num_handles)) =
5046 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5047 {
5048 let member_inline_size = <fidl::encoding::UnboundedVector<Trigger> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5049 if inlined != (member_inline_size <= 4) {
5050 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5051 }
5052 let inner_offset;
5053 let mut inner_depth = depth.clone();
5054 if inlined {
5055 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5056 inner_offset = next_offset;
5057 } else {
5058 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5059 inner_depth.increment()?;
5060 }
5061 let val_ref = self.triggers.get_or_insert_with(|| {
5062 fidl::new_empty!(fidl::encoding::UnboundedVector<Trigger>, D)
5063 });
5064 fidl::decode!(
5065 fidl::encoding::UnboundedVector<Trigger>,
5066 D,
5067 val_ref,
5068 decoder,
5069 inner_offset,
5070 inner_depth
5071 )?;
5072 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5073 {
5074 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5075 }
5076 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5077 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5078 }
5079 }
5080
5081 next_offset += envelope_size;
5082 _next_ordinal_to_read += 1;
5083 if next_offset >= end_offset {
5084 return Ok(());
5085 }
5086
5087 while _next_ordinal_to_read < 3 {
5089 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5090 _next_ordinal_to_read += 1;
5091 next_offset += envelope_size;
5092 }
5093
5094 let next_out_of_line = decoder.next_out_of_line();
5095 let handles_before = decoder.remaining_handles();
5096 if let Some((inlined, num_bytes, num_handles)) =
5097 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5098 {
5099 let member_inline_size = <fidl::encoding::Vector<
5100 fidl::encoding::BoundedString<100>,
5101 5000,
5102 > as fidl::encoding::TypeMarker>::inline_size(
5103 decoder.context
5104 );
5105 if inlined != (member_inline_size <= 4) {
5106 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5107 }
5108 let inner_offset;
5109 let mut inner_depth = depth.clone();
5110 if inlined {
5111 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5112 inner_offset = next_offset;
5113 } else {
5114 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5115 inner_depth.increment()?;
5116 }
5117 let val_ref = self.requested_categories.get_or_insert_with(|| {
5118 fidl::new_empty!(
5119 fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>,
5120 D
5121 )
5122 });
5123 fidl::decode!(
5124 fidl::encoding::Vector<fidl::encoding::BoundedString<100>, 5000>,
5125 D,
5126 val_ref,
5127 decoder,
5128 inner_offset,
5129 inner_depth
5130 )?;
5131 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5132 {
5133 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5134 }
5135 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5136 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5137 }
5138 }
5139
5140 next_offset += envelope_size;
5141 _next_ordinal_to_read += 1;
5142 if next_offset >= end_offset {
5143 return Ok(());
5144 }
5145
5146 while _next_ordinal_to_read < 4 {
5148 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5149 _next_ordinal_to_read += 1;
5150 next_offset += envelope_size;
5151 }
5152
5153 let next_out_of_line = decoder.next_out_of_line();
5154 let handles_before = decoder.remaining_handles();
5155 if let Some((inlined, num_bytes, num_handles)) =
5156 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5157 {
5158 let member_inline_size =
5159 <CompressionType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5160 if inlined != (member_inline_size <= 4) {
5161 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5162 }
5163 let inner_offset;
5164 let mut inner_depth = depth.clone();
5165 if inlined {
5166 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5167 inner_offset = next_offset;
5168 } else {
5169 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5170 inner_depth.increment()?;
5171 }
5172 let val_ref =
5173 self.compression.get_or_insert_with(|| fidl::new_empty!(CompressionType, D));
5174 fidl::decode!(CompressionType, D, val_ref, decoder, inner_offset, inner_depth)?;
5175 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5176 {
5177 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5178 }
5179 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5180 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5181 }
5182 }
5183
5184 next_offset += envelope_size;
5185
5186 while next_offset < end_offset {
5188 _next_ordinal_to_read += 1;
5189 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5190 next_offset += envelope_size;
5191 }
5192
5193 Ok(())
5194 }
5195 }
5196
5197 impl TraceStatus {
5198 #[inline(always)]
5199 fn max_ordinal_present(&self) -> u64 {
5200 if let Some(_) = self.task_id {
5201 return 7;
5202 }
5203 if let Some(_) = self.triggers {
5204 return 6;
5205 }
5206 if let Some(_) = self.config {
5207 return 5;
5208 }
5209 if let Some(_) = self.remaining_runtime {
5210 return 4;
5211 }
5212 if let Some(_) = self.duration {
5213 return 3;
5214 }
5215 0
5216 }
5217 }
5218
5219 impl fidl::encoding::ValueTypeMarker for TraceStatus {
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 TraceStatus {
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<TraceStatus, D>
5241 for &TraceStatus
5242 {
5243 unsafe fn encode(
5244 self,
5245 encoder: &mut fidl::encoding::Encoder<'_, D>,
5246 offset: usize,
5247 mut depth: fidl::encoding::Depth,
5248 ) -> fidl::Result<()> {
5249 encoder.debug_check_bounds::<TraceStatus>(offset);
5250 let max_ordinal: u64 = self.max_ordinal_present();
5252 encoder.write_num(max_ordinal, offset);
5253 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5254 if max_ordinal == 0 {
5256 return Ok(());
5257 }
5258 depth.increment()?;
5259 let envelope_size = 8;
5260 let bytes_len = max_ordinal as usize * envelope_size;
5261 #[allow(unused_variables)]
5262 let offset = encoder.out_of_line_offset(bytes_len);
5263 let mut _prev_end_offset: usize = 0;
5264 if 3 > max_ordinal {
5265 return Ok(());
5266 }
5267
5268 let cur_offset: usize = (3 - 1) * envelope_size;
5271
5272 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5274
5275 fidl::encoding::encode_in_envelope_optional::<i64, D>(
5280 self.duration.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
5281 encoder,
5282 offset + cur_offset,
5283 depth,
5284 )?;
5285
5286 _prev_end_offset = cur_offset + envelope_size;
5287 if 4 > max_ordinal {
5288 return Ok(());
5289 }
5290
5291 let cur_offset: usize = (4 - 1) * envelope_size;
5294
5295 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5297
5298 fidl::encoding::encode_in_envelope_optional::<i64, D>(
5303 self.remaining_runtime
5304 .as_ref()
5305 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
5306 encoder,
5307 offset + cur_offset,
5308 depth,
5309 )?;
5310
5311 _prev_end_offset = cur_offset + envelope_size;
5312 if 5 > max_ordinal {
5313 return Ok(());
5314 }
5315
5316 let cur_offset: usize = (5 - 1) * envelope_size;
5319
5320 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5322
5323 fidl::encoding::encode_in_envelope_optional::<TraceConfig, D>(
5328 self.config.as_ref().map(<TraceConfig as fidl::encoding::ValueTypeMarker>::borrow),
5329 encoder,
5330 offset + cur_offset,
5331 depth,
5332 )?;
5333
5334 _prev_end_offset = cur_offset + envelope_size;
5335 if 6 > max_ordinal {
5336 return Ok(());
5337 }
5338
5339 let cur_offset: usize = (6 - 1) * envelope_size;
5342
5343 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5345
5346 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Trigger>, D>(
5351 self.triggers.as_ref().map(<fidl::encoding::UnboundedVector<Trigger> as fidl::encoding::ValueTypeMarker>::borrow),
5352 encoder, offset + cur_offset, depth
5353 )?;
5354
5355 _prev_end_offset = cur_offset + envelope_size;
5356 if 7 > max_ordinal {
5357 return Ok(());
5358 }
5359
5360 let cur_offset: usize = (7 - 1) * envelope_size;
5363
5364 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5366
5367 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5372 self.task_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5373 encoder,
5374 offset + cur_offset,
5375 depth,
5376 )?;
5377
5378 _prev_end_offset = cur_offset + envelope_size;
5379
5380 Ok(())
5381 }
5382 }
5383
5384 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TraceStatus {
5385 #[inline(always)]
5386 fn new_empty() -> Self {
5387 Self::default()
5388 }
5389
5390 unsafe fn decode(
5391 &mut self,
5392 decoder: &mut fidl::encoding::Decoder<'_, D>,
5393 offset: usize,
5394 mut depth: fidl::encoding::Depth,
5395 ) -> fidl::Result<()> {
5396 decoder.debug_check_bounds::<Self>(offset);
5397 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5398 None => return Err(fidl::Error::NotNullable),
5399 Some(len) => len,
5400 };
5401 if len == 0 {
5403 return Ok(());
5404 };
5405 depth.increment()?;
5406 let envelope_size = 8;
5407 let bytes_len = len * envelope_size;
5408 let offset = decoder.out_of_line_offset(bytes_len)?;
5409 let mut _next_ordinal_to_read = 0;
5411 let mut next_offset = offset;
5412 let end_offset = offset + bytes_len;
5413 _next_ordinal_to_read += 1;
5414 if next_offset >= end_offset {
5415 return Ok(());
5416 }
5417
5418 while _next_ordinal_to_read < 3 {
5420 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5421 _next_ordinal_to_read += 1;
5422 next_offset += envelope_size;
5423 }
5424
5425 let next_out_of_line = decoder.next_out_of_line();
5426 let handles_before = decoder.remaining_handles();
5427 if let Some((inlined, num_bytes, num_handles)) =
5428 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5429 {
5430 let member_inline_size =
5431 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5432 if inlined != (member_inline_size <= 4) {
5433 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5434 }
5435 let inner_offset;
5436 let mut inner_depth = depth.clone();
5437 if inlined {
5438 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5439 inner_offset = next_offset;
5440 } else {
5441 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5442 inner_depth.increment()?;
5443 }
5444 let val_ref = self.duration.get_or_insert_with(|| fidl::new_empty!(i64, D));
5445 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
5446 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5447 {
5448 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5449 }
5450 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5451 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5452 }
5453 }
5454
5455 next_offset += envelope_size;
5456 _next_ordinal_to_read += 1;
5457 if next_offset >= end_offset {
5458 return Ok(());
5459 }
5460
5461 while _next_ordinal_to_read < 4 {
5463 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5464 _next_ordinal_to_read += 1;
5465 next_offset += envelope_size;
5466 }
5467
5468 let next_out_of_line = decoder.next_out_of_line();
5469 let handles_before = decoder.remaining_handles();
5470 if let Some((inlined, num_bytes, num_handles)) =
5471 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5472 {
5473 let member_inline_size =
5474 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5475 if inlined != (member_inline_size <= 4) {
5476 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5477 }
5478 let inner_offset;
5479 let mut inner_depth = depth.clone();
5480 if inlined {
5481 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5482 inner_offset = next_offset;
5483 } else {
5484 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5485 inner_depth.increment()?;
5486 }
5487 let val_ref =
5488 self.remaining_runtime.get_or_insert_with(|| fidl::new_empty!(i64, D));
5489 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
5490 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5491 {
5492 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5493 }
5494 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5495 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5496 }
5497 }
5498
5499 next_offset += envelope_size;
5500 _next_ordinal_to_read += 1;
5501 if next_offset >= end_offset {
5502 return Ok(());
5503 }
5504
5505 while _next_ordinal_to_read < 5 {
5507 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5508 _next_ordinal_to_read += 1;
5509 next_offset += envelope_size;
5510 }
5511
5512 let next_out_of_line = decoder.next_out_of_line();
5513 let handles_before = decoder.remaining_handles();
5514 if let Some((inlined, num_bytes, num_handles)) =
5515 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5516 {
5517 let member_inline_size =
5518 <TraceConfig as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5519 if inlined != (member_inline_size <= 4) {
5520 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5521 }
5522 let inner_offset;
5523 let mut inner_depth = depth.clone();
5524 if inlined {
5525 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5526 inner_offset = next_offset;
5527 } else {
5528 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5529 inner_depth.increment()?;
5530 }
5531 let val_ref = self.config.get_or_insert_with(|| fidl::new_empty!(TraceConfig, D));
5532 fidl::decode!(TraceConfig, D, val_ref, decoder, inner_offset, inner_depth)?;
5533 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5534 {
5535 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5536 }
5537 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5538 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5539 }
5540 }
5541
5542 next_offset += envelope_size;
5543 _next_ordinal_to_read += 1;
5544 if next_offset >= end_offset {
5545 return Ok(());
5546 }
5547
5548 while _next_ordinal_to_read < 6 {
5550 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5551 _next_ordinal_to_read += 1;
5552 next_offset += envelope_size;
5553 }
5554
5555 let next_out_of_line = decoder.next_out_of_line();
5556 let handles_before = decoder.remaining_handles();
5557 if let Some((inlined, num_bytes, num_handles)) =
5558 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5559 {
5560 let member_inline_size = <fidl::encoding::UnboundedVector<Trigger> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5561 if inlined != (member_inline_size <= 4) {
5562 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5563 }
5564 let inner_offset;
5565 let mut inner_depth = depth.clone();
5566 if inlined {
5567 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5568 inner_offset = next_offset;
5569 } else {
5570 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5571 inner_depth.increment()?;
5572 }
5573 let val_ref = self.triggers.get_or_insert_with(|| {
5574 fidl::new_empty!(fidl::encoding::UnboundedVector<Trigger>, D)
5575 });
5576 fidl::decode!(
5577 fidl::encoding::UnboundedVector<Trigger>,
5578 D,
5579 val_ref,
5580 decoder,
5581 inner_offset,
5582 inner_depth
5583 )?;
5584 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5585 {
5586 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5587 }
5588 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5589 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5590 }
5591 }
5592
5593 next_offset += envelope_size;
5594 _next_ordinal_to_read += 1;
5595 if next_offset >= end_offset {
5596 return Ok(());
5597 }
5598
5599 while _next_ordinal_to_read < 7 {
5601 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5602 _next_ordinal_to_read += 1;
5603 next_offset += envelope_size;
5604 }
5605
5606 let next_out_of_line = decoder.next_out_of_line();
5607 let handles_before = decoder.remaining_handles();
5608 if let Some((inlined, num_bytes, num_handles)) =
5609 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5610 {
5611 let member_inline_size =
5612 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5613 if inlined != (member_inline_size <= 4) {
5614 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5615 }
5616 let inner_offset;
5617 let mut inner_depth = depth.clone();
5618 if inlined {
5619 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5620 inner_offset = next_offset;
5621 } else {
5622 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5623 inner_depth.increment()?;
5624 }
5625 let val_ref = self.task_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
5626 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5627 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5628 {
5629 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5630 }
5631 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5632 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5633 }
5634 }
5635
5636 next_offset += envelope_size;
5637
5638 while next_offset < end_offset {
5640 _next_ordinal_to_read += 1;
5641 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5642 next_offset += envelope_size;
5643 }
5644
5645 Ok(())
5646 }
5647 }
5648
5649 impl Trigger {
5650 #[inline(always)]
5651 fn max_ordinal_present(&self) -> u64 {
5652 if let Some(_) = self.action {
5653 return 2;
5654 }
5655 if let Some(_) = self.alert {
5656 return 1;
5657 }
5658 0
5659 }
5660 }
5661
5662 impl fidl::encoding::ValueTypeMarker for Trigger {
5663 type Borrowed<'a> = &'a Self;
5664 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5665 value
5666 }
5667 }
5668
5669 unsafe impl fidl::encoding::TypeMarker for Trigger {
5670 type Owned = Self;
5671
5672 #[inline(always)]
5673 fn inline_align(_context: fidl::encoding::Context) -> usize {
5674 8
5675 }
5676
5677 #[inline(always)]
5678 fn inline_size(_context: fidl::encoding::Context) -> usize {
5679 16
5680 }
5681 }
5682
5683 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Trigger, D> for &Trigger {
5684 unsafe fn encode(
5685 self,
5686 encoder: &mut fidl::encoding::Encoder<'_, D>,
5687 offset: usize,
5688 mut depth: fidl::encoding::Depth,
5689 ) -> fidl::Result<()> {
5690 encoder.debug_check_bounds::<Trigger>(offset);
5691 let max_ordinal: u64 = self.max_ordinal_present();
5693 encoder.write_num(max_ordinal, offset);
5694 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5695 if max_ordinal == 0 {
5697 return Ok(());
5698 }
5699 depth.increment()?;
5700 let envelope_size = 8;
5701 let bytes_len = max_ordinal as usize * envelope_size;
5702 #[allow(unused_variables)]
5703 let offset = encoder.out_of_line_offset(bytes_len);
5704 let mut _prev_end_offset: usize = 0;
5705 if 1 > max_ordinal {
5706 return Ok(());
5707 }
5708
5709 let cur_offset: usize = (1 - 1) * envelope_size;
5712
5713 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5715
5716 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<14>, D>(
5721 self.alert.as_ref().map(
5722 <fidl::encoding::BoundedString<14> as fidl::encoding::ValueTypeMarker>::borrow,
5723 ),
5724 encoder,
5725 offset + cur_offset,
5726 depth,
5727 )?;
5728
5729 _prev_end_offset = cur_offset + envelope_size;
5730 if 2 > max_ordinal {
5731 return Ok(());
5732 }
5733
5734 let cur_offset: usize = (2 - 1) * envelope_size;
5737
5738 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5740
5741 fidl::encoding::encode_in_envelope_optional::<Action, D>(
5746 self.action.as_ref().map(<Action as fidl::encoding::ValueTypeMarker>::borrow),
5747 encoder,
5748 offset + cur_offset,
5749 depth,
5750 )?;
5751
5752 _prev_end_offset = cur_offset + envelope_size;
5753
5754 Ok(())
5755 }
5756 }
5757
5758 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Trigger {
5759 #[inline(always)]
5760 fn new_empty() -> Self {
5761 Self::default()
5762 }
5763
5764 unsafe fn decode(
5765 &mut self,
5766 decoder: &mut fidl::encoding::Decoder<'_, D>,
5767 offset: usize,
5768 mut depth: fidl::encoding::Depth,
5769 ) -> fidl::Result<()> {
5770 decoder.debug_check_bounds::<Self>(offset);
5771 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5772 None => return Err(fidl::Error::NotNullable),
5773 Some(len) => len,
5774 };
5775 if len == 0 {
5777 return Ok(());
5778 };
5779 depth.increment()?;
5780 let envelope_size = 8;
5781 let bytes_len = len * envelope_size;
5782 let offset = decoder.out_of_line_offset(bytes_len)?;
5783 let mut _next_ordinal_to_read = 0;
5785 let mut next_offset = offset;
5786 let end_offset = offset + bytes_len;
5787 _next_ordinal_to_read += 1;
5788 if next_offset >= end_offset {
5789 return Ok(());
5790 }
5791
5792 while _next_ordinal_to_read < 1 {
5794 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5795 _next_ordinal_to_read += 1;
5796 next_offset += envelope_size;
5797 }
5798
5799 let next_out_of_line = decoder.next_out_of_line();
5800 let handles_before = decoder.remaining_handles();
5801 if let Some((inlined, num_bytes, num_handles)) =
5802 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5803 {
5804 let member_inline_size =
5805 <fidl::encoding::BoundedString<14> as fidl::encoding::TypeMarker>::inline_size(
5806 decoder.context,
5807 );
5808 if inlined != (member_inline_size <= 4) {
5809 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5810 }
5811 let inner_offset;
5812 let mut inner_depth = depth.clone();
5813 if inlined {
5814 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5815 inner_offset = next_offset;
5816 } else {
5817 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5818 inner_depth.increment()?;
5819 }
5820 let val_ref = self
5821 .alert
5822 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<14>, D));
5823 fidl::decode!(
5824 fidl::encoding::BoundedString<14>,
5825 D,
5826 val_ref,
5827 decoder,
5828 inner_offset,
5829 inner_depth
5830 )?;
5831 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5832 {
5833 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5834 }
5835 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5836 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5837 }
5838 }
5839
5840 next_offset += envelope_size;
5841 _next_ordinal_to_read += 1;
5842 if next_offset >= end_offset {
5843 return Ok(());
5844 }
5845
5846 while _next_ordinal_to_read < 2 {
5848 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5849 _next_ordinal_to_read += 1;
5850 next_offset += envelope_size;
5851 }
5852
5853 let next_out_of_line = decoder.next_out_of_line();
5854 let handles_before = decoder.remaining_handles();
5855 if let Some((inlined, num_bytes, num_handles)) =
5856 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5857 {
5858 let member_inline_size =
5859 <Action as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5860 if inlined != (member_inline_size <= 4) {
5861 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5862 }
5863 let inner_offset;
5864 let mut inner_depth = depth.clone();
5865 if inlined {
5866 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5867 inner_offset = next_offset;
5868 } else {
5869 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5870 inner_depth.increment()?;
5871 }
5872 let val_ref = self.action.get_or_insert_with(|| fidl::new_empty!(Action, D));
5873 fidl::decode!(Action, D, val_ref, decoder, inner_offset, inner_depth)?;
5874 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5875 {
5876 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5877 }
5878 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5879 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5880 }
5881 }
5882
5883 next_offset += envelope_size;
5884
5885 while next_offset < end_offset {
5887 _next_ordinal_to_read += 1;
5888 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5889 next_offset += envelope_size;
5890 }
5891
5892 Ok(())
5893 }
5894 }
5895}