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 NodeName = String;
12
13pub type NodeOffersVector = Vec<Offer>;
14
15pub type NodeProperties = Vec<NodeProperty2>;
16
17pub type NodePropertyDictionary2 = Vec<NodePropertyEntry2>;
18
19pub type NodePropertyKeyString = String;
20
21pub type NodePropertyKeyUint = u32;
22
23pub type NodePropertyValueBool = bool;
24
25pub type NodePropertyValueEnum = String;
26
27pub type NodePropertyValueString = String;
28
29pub type NodePropertyValueUint = u32;
30
31pub type ResourceName = String;
32
33pub type ResourceProperties = Vec<NodeProperty2>;
34
35pub type ResourcePropertyValue = NodePropertyValue;
36
37pub type ResourcePropertyValueBool = bool;
38
39pub type ResourcePropertyValueString = String;
40
41pub type ResourcePropertyValueUint = u32;
42
43pub const MAX_DEVICE_ADDRESS_ARRAY_LEN: u32 = 10;
44
45pub const MAX_DEVICE_ADDRESS_STR_LEN: u32 = 32;
46
47pub const MAX_DRIVER_HOST_LENGTH: u8 = 128;
48
49pub const MAX_MODULE_NAME_LENGTH: u8 = 128;
50
51pub const MAX_NAMESPACE_COUNT: u32 =
52 fidl_fuchsia_component_runner_common::MAX_NAMESPACE_COUNT as u32;
53
54pub const MAX_NODE_NAME_LENGTH: u8 = 128;
55
56pub const MAX_OFFER_COUNT: u32 = fidl_fuchsia_component_common::MAX_DYNAMIC_OFFER_COUNT as u32;
57
58pub const MAX_PROPERTY_COUNT: u8 = 64;
59
60pub const MAX_RESOURCE_NAME_LENGTH: u8 = 128;
61
62pub const MAX_SYMBOL_COUNT: u8 = 64;
63
64pub const MAX_SYMBOL_NAME_LENGTH: u8 = 128;
65
66#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
67pub enum BusType {
68 Platform,
69 Acpi,
70 DeviceTree,
71 Pci,
72 Usb,
73 Gpio,
74 I2C,
75 Spi,
76 Sdio,
77 Uart,
78 Spmi,
79 UsbPeripheral,
80 Virtio,
81 #[doc(hidden)]
82 __SourceBreaking {
83 unknown_ordinal: u32,
84 },
85}
86
87#[macro_export]
89macro_rules! BusTypeUnknown {
90 () => {
91 _
92 };
93}
94
95impl BusType {
96 #[inline]
97 pub fn from_primitive(prim: u32) -> Option<Self> {
98 match prim {
99 1 => Some(Self::Platform),
100 2 => Some(Self::Acpi),
101 3 => Some(Self::DeviceTree),
102 4 => Some(Self::Pci),
103 5 => Some(Self::Usb),
104 6 => Some(Self::Gpio),
105 7 => Some(Self::I2C),
106 8 => Some(Self::Spi),
107 9 => Some(Self::Sdio),
108 10 => Some(Self::Uart),
109 11 => Some(Self::Spmi),
110 12 => Some(Self::UsbPeripheral),
111 13 => Some(Self::Virtio),
112 _ => None,
113 }
114 }
115
116 #[inline]
117 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
118 match prim {
119 1 => Self::Platform,
120 2 => Self::Acpi,
121 3 => Self::DeviceTree,
122 4 => Self::Pci,
123 5 => Self::Usb,
124 6 => Self::Gpio,
125 7 => Self::I2C,
126 8 => Self::Spi,
127 9 => Self::Sdio,
128 10 => Self::Uart,
129 11 => Self::Spmi,
130 12 => Self::UsbPeripheral,
131 13 => Self::Virtio,
132 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
133 }
134 }
135
136 #[inline]
137 pub fn unknown() -> Self {
138 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
139 }
140
141 #[inline]
142 pub const fn into_primitive(self) -> u32 {
143 match self {
144 Self::Platform => 1,
145 Self::Acpi => 2,
146 Self::DeviceTree => 3,
147 Self::Pci => 4,
148 Self::Usb => 5,
149 Self::Gpio => 6,
150 Self::I2C => 7,
151 Self::Spi => 8,
152 Self::Sdio => 9,
153 Self::Uart => 10,
154 Self::Spmi => 11,
155 Self::UsbPeripheral => 12,
156 Self::Virtio => 13,
157 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
158 }
159 }
160
161 #[inline]
162 pub fn is_unknown(&self) -> bool {
163 match self {
164 Self::__SourceBreaking { unknown_ordinal: _ } => true,
165 _ => false,
166 }
167 }
168}
169
170#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
172pub enum CompositeNodeSpecError {
173 MissingArgs,
175 EmptyNodes,
177 AlreadyExists,
180 DriverIndexFailure,
182 DuplicateParents,
184 #[doc(hidden)]
185 __SourceBreaking { unknown_ordinal: u32 },
186}
187
188#[macro_export]
190macro_rules! CompositeNodeSpecErrorUnknown {
191 () => {
192 _
193 };
194}
195
196impl CompositeNodeSpecError {
197 #[inline]
198 pub fn from_primitive(prim: u32) -> Option<Self> {
199 match prim {
200 1 => Some(Self::MissingArgs),
201 2 => Some(Self::EmptyNodes),
202 3 => Some(Self::AlreadyExists),
203 4 => Some(Self::DriverIndexFailure),
204 5 => Some(Self::DuplicateParents),
205 _ => None,
206 }
207 }
208
209 #[inline]
210 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
211 match prim {
212 1 => Self::MissingArgs,
213 2 => Self::EmptyNodes,
214 3 => Self::AlreadyExists,
215 4 => Self::DriverIndexFailure,
216 5 => Self::DuplicateParents,
217 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
218 }
219 }
220
221 #[inline]
222 pub fn unknown() -> Self {
223 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
224 }
225
226 #[inline]
227 pub const fn into_primitive(self) -> u32 {
228 match self {
229 Self::MissingArgs => 1,
230 Self::EmptyNodes => 2,
231 Self::AlreadyExists => 3,
232 Self::DriverIndexFailure => 4,
233 Self::DuplicateParents => 5,
234 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
235 }
236 }
237
238 #[inline]
239 pub fn is_unknown(&self) -> bool {
240 match self {
241 Self::__SourceBreaking { unknown_ordinal: _ } => true,
242 _ => false,
243 }
244 }
245}
246
247#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
249#[repr(u32)]
250pub enum Condition {
251 Unknown = 0,
252 Accept = 1,
253 Reject = 2,
254}
255
256impl Condition {
257 #[inline]
258 pub fn from_primitive(prim: u32) -> Option<Self> {
259 match prim {
260 0 => Some(Self::Unknown),
261 1 => Some(Self::Accept),
262 2 => Some(Self::Reject),
263 _ => None,
264 }
265 }
266
267 #[inline]
268 pub const fn into_primitive(self) -> u32 {
269 self as u32
270 }
271}
272
273#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
274pub enum DeviceAddressStability {
275 UnstableBetweenDriverRestart,
277 UnstableBetweenBoot,
279 UnstableBetweenSoftwareUpdate,
281 Stable,
283 #[doc(hidden)]
284 __SourceBreaking { unknown_ordinal: u32 },
285}
286
287#[macro_export]
289macro_rules! DeviceAddressStabilityUnknown {
290 () => {
291 _
292 };
293}
294
295impl DeviceAddressStability {
296 #[inline]
297 pub fn from_primitive(prim: u32) -> Option<Self> {
298 match prim {
299 0 => Some(Self::UnstableBetweenDriverRestart),
300 1 => Some(Self::UnstableBetweenBoot),
301 2 => Some(Self::UnstableBetweenSoftwareUpdate),
302 3 => Some(Self::Stable),
303 _ => None,
304 }
305 }
306
307 #[inline]
308 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
309 match prim {
310 0 => Self::UnstableBetweenDriverRestart,
311 1 => Self::UnstableBetweenBoot,
312 2 => Self::UnstableBetweenSoftwareUpdate,
313 3 => Self::Stable,
314 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
315 }
316 }
317
318 #[inline]
319 pub fn unknown() -> Self {
320 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
321 }
322
323 #[inline]
324 pub const fn into_primitive(self) -> u32 {
325 match self {
326 Self::UnstableBetweenDriverRestart => 0,
327 Self::UnstableBetweenBoot => 1,
328 Self::UnstableBetweenSoftwareUpdate => 2,
329 Self::Stable => 3,
330 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
331 }
332 }
333
334 #[inline]
335 pub fn is_unknown(&self) -> bool {
336 match self {
337 Self::__SourceBreaking { unknown_ordinal: _ } => true,
338 _ => false,
339 }
340 }
341}
342
343#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
347pub enum DriverPackageType {
348 Boot,
350 Base,
352 Cached,
355 Universe,
357 #[doc(hidden)]
358 __SourceBreaking { unknown_ordinal: u8 },
359}
360
361#[macro_export]
363macro_rules! DriverPackageTypeUnknown {
364 () => {
365 _
366 };
367}
368
369impl DriverPackageType {
370 #[inline]
371 pub fn from_primitive(prim: u8) -> Option<Self> {
372 match prim {
373 0 => Some(Self::Boot),
374 1 => Some(Self::Base),
375 2 => Some(Self::Cached),
376 3 => Some(Self::Universe),
377 _ => None,
378 }
379 }
380
381 #[inline]
382 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
383 match prim {
384 0 => Self::Boot,
385 1 => Self::Base,
386 2 => Self::Cached,
387 3 => Self::Universe,
388 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
389 }
390 }
391
392 #[inline]
393 pub fn unknown() -> Self {
394 Self::__SourceBreaking { unknown_ordinal: 0xff }
395 }
396
397 #[inline]
398 pub const fn into_primitive(self) -> u8 {
399 match self {
400 Self::Boot => 0,
401 Self::Base => 1,
402 Self::Cached => 2,
403 Self::Universe => 3,
404 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
405 }
406 }
407
408 #[inline]
409 pub fn is_unknown(&self) -> bool {
410 match self {
411 Self::__SourceBreaking { unknown_ordinal: _ } => true,
412 _ => false,
413 }
414 }
415}
416
417#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
419pub enum HealthCheckError {
420 Timeout,
422 InternalError,
424 NotSupported,
426 InvalidState,
428 Unavailable,
433 CommunicationError,
436 NotFound,
439 #[doc(hidden)]
440 __SourceBreaking { unknown_ordinal: u32 },
441}
442
443#[macro_export]
445macro_rules! HealthCheckErrorUnknown {
446 () => {
447 _
448 };
449}
450
451impl HealthCheckError {
452 #[inline]
453 pub fn from_primitive(prim: u32) -> Option<Self> {
454 match prim {
455 1 => Some(Self::Timeout),
456 2 => Some(Self::InternalError),
457 3 => Some(Self::NotSupported),
458 4 => Some(Self::InvalidState),
459 5 => Some(Self::Unavailable),
460 6 => Some(Self::CommunicationError),
461 7 => Some(Self::NotFound),
462 _ => None,
463 }
464 }
465
466 #[inline]
467 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
468 match prim {
469 1 => Self::Timeout,
470 2 => Self::InternalError,
471 3 => Self::NotSupported,
472 4 => Self::InvalidState,
473 5 => Self::Unavailable,
474 6 => Self::CommunicationError,
475 7 => Self::NotFound,
476 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
477 }
478 }
479
480 #[inline]
481 pub fn unknown() -> Self {
482 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
483 }
484
485 #[inline]
486 pub const fn into_primitive(self) -> u32 {
487 match self {
488 Self::Timeout => 1,
489 Self::InternalError => 2,
490 Self::NotSupported => 3,
491 Self::InvalidState => 4,
492 Self::Unavailable => 5,
493 Self::CommunicationError => 6,
494 Self::NotFound => 7,
495 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
496 }
497 }
498
499 #[inline]
500 pub fn is_unknown(&self) -> bool {
501 match self {
502 Self::__SourceBreaking { unknown_ordinal: _ } => true,
503 _ => false,
504 }
505 }
506}
507
508#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
510pub enum HealthCheckRequest {
511 Ping,
517 Fast,
522 Deep,
527 #[doc(hidden)]
528 __SourceBreaking { unknown_ordinal: u32 },
529}
530
531#[macro_export]
533macro_rules! HealthCheckRequestUnknown {
534 () => {
535 _
536 };
537}
538
539impl HealthCheckRequest {
540 #[inline]
541 pub fn from_primitive(prim: u32) -> Option<Self> {
542 match prim {
543 1 => Some(Self::Ping),
544 2 => Some(Self::Fast),
545 3 => Some(Self::Deep),
546 _ => None,
547 }
548 }
549
550 #[inline]
551 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
552 match prim {
553 1 => Self::Ping,
554 2 => Self::Fast,
555 3 => Self::Deep,
556 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
557 }
558 }
559
560 #[inline]
561 pub fn unknown() -> Self {
562 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
563 }
564
565 #[inline]
566 pub const fn into_primitive(self) -> u32 {
567 match self {
568 Self::Ping => 1,
569 Self::Fast => 2,
570 Self::Deep => 3,
571 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
572 }
573 }
574
575 #[inline]
576 pub fn is_unknown(&self) -> bool {
577 match self {
578 Self::__SourceBreaking { unknown_ordinal: _ } => true,
579 _ => false,
580 }
581 }
582}
583
584#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
586pub enum HealthStatus {
587 Ok,
589 Degraded,
592 Unhealthy,
594 #[doc(hidden)]
595 __SourceBreaking { unknown_ordinal: u32 },
596}
597
598#[macro_export]
600macro_rules! HealthStatusUnknown {
601 () => {
602 _
603 };
604}
605
606impl HealthStatus {
607 #[inline]
608 pub fn from_primitive(prim: u32) -> Option<Self> {
609 match prim {
610 1 => Some(Self::Ok),
611 2 => Some(Self::Degraded),
612 3 => Some(Self::Unhealthy),
613 _ => None,
614 }
615 }
616
617 #[inline]
618 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
619 match prim {
620 1 => Self::Ok,
621 2 => Self::Degraded,
622 3 => Self::Unhealthy,
623 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
624 }
625 }
626
627 #[inline]
628 pub fn unknown() -> Self {
629 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
630 }
631
632 #[inline]
633 pub const fn into_primitive(self) -> u32 {
634 match self {
635 Self::Ok => 1,
636 Self::Degraded => 2,
637 Self::Unhealthy => 3,
638 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
639 }
640 }
641
642 #[inline]
643 pub fn is_unknown(&self) -> bool {
644 match self {
645 Self::__SourceBreaking { unknown_ordinal: _ } => true,
646 _ => false,
647 }
648 }
649}
650
651#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
653pub enum NodeError {
654 Internal,
655 NodeRemoved,
656 NameMissing,
657 NameInvalid,
660 NameAlreadyExists,
662 OfferSourceNameMissing,
664 OfferRefExists,
666 SymbolNameMissing,
668 SymbolAddressMissing,
670 SymbolAlreadyExists,
672 UnbindChildrenInProgress,
674 UnsupportedArgs,
676 DuplicatePropertyKeys,
678 OfferSourceInstanceFilterMissing,
680 OfferRenamedInstancesMissing,
682 #[doc(hidden)]
683 __SourceBreaking {
684 unknown_ordinal: u32,
685 },
686}
687
688#[macro_export]
690macro_rules! NodeErrorUnknown {
691 () => {
692 _
693 };
694}
695
696impl NodeError {
697 #[inline]
698 pub fn from_primitive(prim: u32) -> Option<Self> {
699 match prim {
700 1 => Some(Self::Internal),
701 2 => Some(Self::NodeRemoved),
702 3 => Some(Self::NameMissing),
703 4 => Some(Self::NameInvalid),
704 5 => Some(Self::NameAlreadyExists),
705 6 => Some(Self::OfferSourceNameMissing),
706 7 => Some(Self::OfferRefExists),
707 8 => Some(Self::SymbolNameMissing),
708 9 => Some(Self::SymbolAddressMissing),
709 10 => Some(Self::SymbolAlreadyExists),
710 11 => Some(Self::UnbindChildrenInProgress),
711 12 => Some(Self::UnsupportedArgs),
712 13 => Some(Self::DuplicatePropertyKeys),
713 14 => Some(Self::OfferSourceInstanceFilterMissing),
714 15 => Some(Self::OfferRenamedInstancesMissing),
715 _ => None,
716 }
717 }
718
719 #[inline]
720 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
721 match prim {
722 1 => Self::Internal,
723 2 => Self::NodeRemoved,
724 3 => Self::NameMissing,
725 4 => Self::NameInvalid,
726 5 => Self::NameAlreadyExists,
727 6 => Self::OfferSourceNameMissing,
728 7 => Self::OfferRefExists,
729 8 => Self::SymbolNameMissing,
730 9 => Self::SymbolAddressMissing,
731 10 => Self::SymbolAlreadyExists,
732 11 => Self::UnbindChildrenInProgress,
733 12 => Self::UnsupportedArgs,
734 13 => Self::DuplicatePropertyKeys,
735 14 => Self::OfferSourceInstanceFilterMissing,
736 15 => Self::OfferRenamedInstancesMissing,
737 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
738 }
739 }
740
741 #[inline]
742 pub fn unknown() -> Self {
743 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
744 }
745
746 #[inline]
747 pub const fn into_primitive(self) -> u32 {
748 match self {
749 Self::Internal => 1,
750 Self::NodeRemoved => 2,
751 Self::NameMissing => 3,
752 Self::NameInvalid => 4,
753 Self::NameAlreadyExists => 5,
754 Self::OfferSourceNameMissing => 6,
755 Self::OfferRefExists => 7,
756 Self::SymbolNameMissing => 8,
757 Self::SymbolAddressMissing => 9,
758 Self::SymbolAlreadyExists => 10,
759 Self::UnbindChildrenInProgress => 11,
760 Self::UnsupportedArgs => 12,
761 Self::DuplicatePropertyKeys => 13,
762 Self::OfferSourceInstanceFilterMissing => 14,
763 Self::OfferRenamedInstancesMissing => 15,
764 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
765 }
766 }
767
768 #[inline]
769 pub fn is_unknown(&self) -> bool {
770 match self {
771 Self::__SourceBreaking { unknown_ordinal: _ } => true,
772 _ => false,
773 }
774 }
775}
776
777#[derive(Clone, Debug, PartialEq)]
779pub struct BindRule2 {
780 pub key: String,
782 pub condition: Condition,
786 pub values: Vec<NodePropertyValue>,
789}
790
791impl fidl::Persistable for BindRule2 {}
792
793#[derive(Clone, Debug, PartialEq)]
795pub struct HealthDiagnosticItem {
796 pub key: String,
797 pub value: HealthDiagnosticValue,
798}
799
800impl fidl::Persistable for HealthDiagnosticItem {}
801
802#[derive(Clone, Debug, PartialEq)]
803pub struct NodeProperty2 {
804 pub key: String,
806 pub value: NodePropertyValue,
808}
809
810impl fidl::Persistable for NodeProperty2 {}
811
812#[derive(Clone, Debug, PartialEq)]
814pub struct NodePropertyEntry2 {
815 pub name: String,
817 pub properties: Vec<NodeProperty2>,
821}
822
823impl fidl::Persistable for NodePropertyEntry2 {}
824
825#[derive(Clone, Debug, PartialEq)]
828pub struct ParentSpec2 {
829 pub bind_rules: Vec<BindRule2>,
831 pub properties: Vec<NodeProperty2>,
834}
835
836impl fidl::Persistable for ParentSpec2 {}
837
838#[derive(Clone, Debug, PartialEq)]
839pub struct ResourceProperty {
840 pub key: String,
842 pub value: NodePropertyValue,
844}
845
846impl fidl::Persistable for ResourceProperty {}
847
848#[derive(Clone, Debug, Default, PartialEq)]
849pub struct BusInfo {
850 pub bus: Option<BusType>,
852 pub address: Option<DeviceAddress>,
854 pub address_stability: Option<DeviceAddressStability>,
856 #[doc(hidden)]
857 pub __source_breaking: fidl::marker::SourceBreaking,
858}
859
860impl fidl::Persistable for BusInfo {}
861
862#[derive(Clone, Debug, Default, PartialEq)]
864pub struct CompositeDriverInfo {
865 pub composite_name: Option<String>,
867 pub driver_info: Option<DriverInfo>,
869 #[doc(hidden)]
870 pub __source_breaking: fidl::marker::SourceBreaking,
871}
872
873impl fidl::Persistable for CompositeDriverInfo {}
874
875#[derive(Clone, Debug, Default, PartialEq)]
877pub struct CompositeDriverMatch {
878 pub composite_driver: Option<CompositeDriverInfo>,
880 pub parent_names: Option<Vec<String>>,
883 pub primary_parent_index: Option<u32>,
886 #[doc(hidden)]
887 pub __source_breaking: fidl::marker::SourceBreaking,
888}
889
890impl fidl::Persistable for CompositeDriverMatch {}
891
892#[derive(Clone, Debug, Default, PartialEq)]
894pub struct CompositeInfo {
895 pub spec: Option<CompositeNodeSpec>,
897 pub matched_driver: Option<CompositeDriverMatch>,
900 #[doc(hidden)]
901 pub __source_breaking: fidl::marker::SourceBreaking,
902}
903
904impl fidl::Persistable for CompositeInfo {}
905
906#[derive(Clone, Debug, Default, PartialEq)]
908pub struct CompositeNodeSpec {
909 pub name: Option<String>,
911 pub parents2: Option<Vec<ParentSpec2>>,
914 pub driver_host: Option<String>,
919 #[doc(hidden)]
920 pub __source_breaking: fidl::marker::SourceBreaking,
921}
922
923impl fidl::Persistable for CompositeNodeSpec {}
924
925#[derive(Clone, Debug, Default, PartialEq)]
927pub struct CompositeParent {
928 pub composite: Option<CompositeInfo>,
930 pub index: Option<u32>,
932 #[doc(hidden)]
933 pub __source_breaking: fidl::marker::SourceBreaking,
934}
935
936impl fidl::Persistable for CompositeParent {}
937
938#[derive(Clone, Debug, Default, PartialEq)]
941pub struct Dependency {
942 pub selector: Option<Selector>,
944 pub tags: Option<Vec<ResourceProperty>>,
946 #[doc(hidden)]
947 pub __source_breaking: fidl::marker::SourceBreaking,
948}
949
950impl fidl::Persistable for Dependency {}
951
952#[derive(Clone, Debug, Default, PartialEq)]
954pub struct DeviceCategory {
955 pub category: Option<String>,
956 pub subcategory: Option<String>,
957 #[doc(hidden)]
958 pub __source_breaking: fidl::marker::SourceBreaking,
959}
960
961impl fidl::Persistable for DeviceCategory {}
962
963#[derive(Clone, Debug, Default, PartialEq)]
965pub struct DriverInfo {
966 pub url: Option<String>,
968 pub name: Option<String>,
971 pub colocate: Option<bool>,
973 pub package_type: Option<DriverPackageType>,
975 pub is_fallback: Option<bool>,
979 pub device_categories: Option<Vec<DeviceCategory>>,
981 pub bind_rules_bytecode: Option<Vec<u8>>,
985 pub driver_framework_version: Option<u8>,
989 pub is_disabled: Option<bool>,
991 #[doc(hidden)]
992 pub __source_breaking: fidl::marker::SourceBreaking,
993}
994
995impl fidl::Persistable for DriverInfo {}
996
997#[derive(Clone, Debug, Default, PartialEq)]
999pub struct HealthCheckResponse {
1000 pub diagnostics: Option<Vec<HealthDiagnosticItem>>,
1004 pub conditions: Option<Vec<HealthCondition>>,
1009 #[doc(hidden)]
1010 pub __source_breaking: fidl::marker::SourceBreaking,
1011}
1012
1013impl fidl::Persistable for HealthCheckResponse {}
1014
1015#[derive(Clone, Debug, Default, PartialEq)]
1017pub struct HealthCondition {
1018 pub status: Option<HealthStatus>,
1021 pub reason_code: Option<String>,
1024 pub message: Option<String>,
1026 pub diagnostics: Option<Vec<HealthDiagnosticItem>>,
1028 pub first_observed: Option<fidl::BootInstant>,
1030 pub last_observed: Option<fidl::BootInstant>,
1033 pub occurrence_count: Option<u64>,
1036 #[doc(hidden)]
1037 pub __source_breaking: fidl::marker::SourceBreaking,
1038}
1039
1040impl fidl::Persistable for HealthCondition {}
1041
1042#[derive(Clone, Debug, Default, PartialEq)]
1045pub struct Node2 {
1046 pub name: Option<String>,
1047 pub dependencies: Option<Vec<Dependency>>,
1048 #[doc(hidden)]
1049 pub __source_breaking: fidl::marker::SourceBreaking,
1050}
1051
1052impl fidl::Persistable for Node2 {}
1053
1054#[derive(Clone, Debug, Default, PartialEq)]
1055pub struct NodeControllerRequestBindRequest {
1056 pub force_rebind: Option<bool>,
1059 pub driver_url_suffix: Option<String>,
1063 #[doc(hidden)]
1064 pub __source_breaking: fidl::marker::SourceBreaking,
1065}
1066
1067impl fidl::Persistable for NodeControllerRequestBindRequest {}
1068
1069#[derive(Clone, Debug, Default, PartialEq)]
1072pub struct NodeSymbol {
1073 pub name: Option<String>,
1075 pub address: Option<u64>,
1077 pub module_name: Option<String>,
1080 #[doc(hidden)]
1081 pub __source_breaking: fidl::marker::SourceBreaking,
1082}
1083
1084impl fidl::Persistable for NodeSymbol {}
1085
1086#[derive(Clone, Debug, Default, PartialEq)]
1088pub struct Selector {
1089 pub offers: Option<Vec<Offer>>,
1091 pub include_properties: Option<Vec<ResourceProperty>>,
1094 pub exclude_properties: Option<Vec<ResourceProperty>>,
1096 #[doc(hidden)]
1097 pub __source_breaking: fidl::marker::SourceBreaking,
1098}
1099
1100impl fidl::Persistable for Selector {}
1101
1102#[derive(Clone, Debug)]
1103pub enum DeviceAddress {
1104 IntValue(u8),
1106 ArrayIntValue(Vec<u8>),
1108 CharIntValue(String),
1110 ArrayCharIntValue(Vec<String>),
1112 StringValue(String),
1114 #[doc(hidden)]
1115 __SourceBreaking { unknown_ordinal: u64 },
1116}
1117
1118#[macro_export]
1120macro_rules! DeviceAddressUnknown {
1121 () => {
1122 _
1123 };
1124}
1125
1126impl PartialEq for DeviceAddress {
1128 fn eq(&self, other: &Self) -> bool {
1129 match (self, other) {
1130 (Self::IntValue(x), Self::IntValue(y)) => *x == *y,
1131 (Self::ArrayIntValue(x), Self::ArrayIntValue(y)) => *x == *y,
1132 (Self::CharIntValue(x), Self::CharIntValue(y)) => *x == *y,
1133 (Self::ArrayCharIntValue(x), Self::ArrayCharIntValue(y)) => *x == *y,
1134 (Self::StringValue(x), Self::StringValue(y)) => *x == *y,
1135 _ => false,
1136 }
1137 }
1138}
1139
1140impl DeviceAddress {
1141 #[inline]
1142 pub fn ordinal(&self) -> u64 {
1143 match *self {
1144 Self::IntValue(_) => 1,
1145 Self::ArrayIntValue(_) => 2,
1146 Self::CharIntValue(_) => 3,
1147 Self::ArrayCharIntValue(_) => 4,
1148 Self::StringValue(_) => 5,
1149 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1150 }
1151 }
1152
1153 #[inline]
1154 pub fn unknown_variant_for_testing() -> Self {
1155 Self::__SourceBreaking { unknown_ordinal: 0 }
1156 }
1157
1158 #[inline]
1159 pub fn is_unknown(&self) -> bool {
1160 match self {
1161 Self::__SourceBreaking { .. } => true,
1162 _ => false,
1163 }
1164 }
1165}
1166
1167impl fidl::Persistable for DeviceAddress {}
1168
1169#[derive(Clone, Debug)]
1174pub enum HealthAlert {
1175 SelfFault(HealthCheckResponse),
1181 UpstreamNeighborFault(HealthCheckResponse),
1184 DownstreamNeighborFault(HealthCheckResponse),
1187 #[doc(hidden)]
1188 __SourceBreaking { unknown_ordinal: u64 },
1189}
1190
1191#[macro_export]
1193macro_rules! HealthAlertUnknown {
1194 () => {
1195 _
1196 };
1197}
1198
1199impl PartialEq for HealthAlert {
1201 fn eq(&self, other: &Self) -> bool {
1202 match (self, other) {
1203 (Self::SelfFault(x), Self::SelfFault(y)) => *x == *y,
1204 (Self::UpstreamNeighborFault(x), Self::UpstreamNeighborFault(y)) => *x == *y,
1205 (Self::DownstreamNeighborFault(x), Self::DownstreamNeighborFault(y)) => *x == *y,
1206 _ => false,
1207 }
1208 }
1209}
1210
1211impl HealthAlert {
1212 #[inline]
1213 pub fn ordinal(&self) -> u64 {
1214 match *self {
1215 Self::SelfFault(_) => 1,
1216 Self::UpstreamNeighborFault(_) => 2,
1217 Self::DownstreamNeighborFault(_) => 3,
1218 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1219 }
1220 }
1221
1222 #[inline]
1223 pub fn unknown_variant_for_testing() -> Self {
1224 Self::__SourceBreaking { unknown_ordinal: 0 }
1225 }
1226
1227 #[inline]
1228 pub fn is_unknown(&self) -> bool {
1229 match self {
1230 Self::__SourceBreaking { .. } => true,
1231 _ => false,
1232 }
1233 }
1234}
1235
1236impl fidl::Persistable for HealthAlert {}
1237
1238#[derive(Clone, Debug)]
1240pub enum HealthDiagnosticValue {
1241 StringValue(String),
1242 IntValue(i64),
1243 UintValue(u64),
1244 BoolValue(bool),
1245 Timestamp(fidl::BootInstant),
1247 #[doc(hidden)]
1248 __SourceBreaking {
1249 unknown_ordinal: u64,
1250 },
1251}
1252
1253#[macro_export]
1255macro_rules! HealthDiagnosticValueUnknown {
1256 () => {
1257 _
1258 };
1259}
1260
1261impl PartialEq for HealthDiagnosticValue {
1263 fn eq(&self, other: &Self) -> bool {
1264 match (self, other) {
1265 (Self::StringValue(x), Self::StringValue(y)) => *x == *y,
1266 (Self::IntValue(x), Self::IntValue(y)) => *x == *y,
1267 (Self::UintValue(x), Self::UintValue(y)) => *x == *y,
1268 (Self::BoolValue(x), Self::BoolValue(y)) => *x == *y,
1269 (Self::Timestamp(x), Self::Timestamp(y)) => *x == *y,
1270 _ => false,
1271 }
1272 }
1273}
1274
1275impl HealthDiagnosticValue {
1276 #[inline]
1277 pub fn ordinal(&self) -> u64 {
1278 match *self {
1279 Self::StringValue(_) => 1,
1280 Self::IntValue(_) => 2,
1281 Self::UintValue(_) => 3,
1282 Self::BoolValue(_) => 4,
1283 Self::Timestamp(_) => 5,
1284 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1285 }
1286 }
1287
1288 #[inline]
1289 pub fn unknown_variant_for_testing() -> Self {
1290 Self::__SourceBreaking { unknown_ordinal: 0 }
1291 }
1292
1293 #[inline]
1294 pub fn is_unknown(&self) -> bool {
1295 match self {
1296 Self::__SourceBreaking { .. } => true,
1297 _ => false,
1298 }
1299 }
1300}
1301
1302impl fidl::Persistable for HealthDiagnosticValue {}
1303
1304#[derive(Clone, Debug)]
1305pub enum NodePropertyValue {
1306 IntValue(u32),
1307 StringValue(String),
1308 BoolValue(bool),
1309 EnumValue(String),
1310 #[doc(hidden)]
1311 __SourceBreaking {
1312 unknown_ordinal: u64,
1313 },
1314}
1315
1316#[macro_export]
1318macro_rules! NodePropertyValueUnknown {
1319 () => {
1320 _
1321 };
1322}
1323
1324impl PartialEq for NodePropertyValue {
1326 fn eq(&self, other: &Self) -> bool {
1327 match (self, other) {
1328 (Self::IntValue(x), Self::IntValue(y)) => *x == *y,
1329 (Self::StringValue(x), Self::StringValue(y)) => *x == *y,
1330 (Self::BoolValue(x), Self::BoolValue(y)) => *x == *y,
1331 (Self::EnumValue(x), Self::EnumValue(y)) => *x == *y,
1332 _ => false,
1333 }
1334 }
1335}
1336
1337impl NodePropertyValue {
1338 #[inline]
1339 pub fn ordinal(&self) -> u64 {
1340 match *self {
1341 Self::IntValue(_) => 1,
1342 Self::StringValue(_) => 2,
1343 Self::BoolValue(_) => 3,
1344 Self::EnumValue(_) => 4,
1345 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1346 }
1347 }
1348
1349 #[inline]
1350 pub fn unknown_variant_for_testing() -> Self {
1351 Self::__SourceBreaking { unknown_ordinal: 0 }
1352 }
1353
1354 #[inline]
1355 pub fn is_unknown(&self) -> bool {
1356 match self {
1357 Self::__SourceBreaking { .. } => true,
1358 _ => false,
1359 }
1360 }
1361}
1362
1363impl fidl::Persistable for NodePropertyValue {}
1364
1365#[derive(Clone, Debug)]
1366pub enum Offer {
1367 ZirconTransport(fidl_fuchsia_component_decl_common::Offer),
1368 DriverTransport(fidl_fuchsia_component_decl_common::Offer),
1369 DictionaryOffer(fidl_fuchsia_component_decl_common::Offer),
1372 #[doc(hidden)]
1373 __SourceBreaking {
1374 unknown_ordinal: u64,
1375 },
1376}
1377
1378#[macro_export]
1380macro_rules! OfferUnknown {
1381 () => {
1382 _
1383 };
1384}
1385
1386impl PartialEq for Offer {
1388 fn eq(&self, other: &Self) -> bool {
1389 match (self, other) {
1390 (Self::ZirconTransport(x), Self::ZirconTransport(y)) => *x == *y,
1391 (Self::DriverTransport(x), Self::DriverTransport(y)) => *x == *y,
1392 (Self::DictionaryOffer(x), Self::DictionaryOffer(y)) => *x == *y,
1393 _ => false,
1394 }
1395 }
1396}
1397
1398impl Offer {
1399 #[inline]
1400 pub fn ordinal(&self) -> u64 {
1401 match *self {
1402 Self::ZirconTransport(_) => 1,
1403 Self::DriverTransport(_) => 2,
1404 Self::DictionaryOffer(_) => 3,
1405 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1406 }
1407 }
1408
1409 #[inline]
1410 pub fn unknown_variant_for_testing() -> Self {
1411 Self::__SourceBreaking { unknown_ordinal: 0 }
1412 }
1413
1414 #[inline]
1415 pub fn is_unknown(&self) -> bool {
1416 match self {
1417 Self::__SourceBreaking { .. } => true,
1418 _ => false,
1419 }
1420 }
1421}
1422
1423impl fidl::Persistable for Offer {}
1424
1425pub mod composite_node_manager_ordinals {
1426 pub const ADD_SPEC: u64 = 0x524e353c8130cc74;
1427}
1428
1429pub mod node_ordinals {
1430 pub const ADD_CHILD: u64 = 0x77d10dff3c1ea129;
1431 pub const PROVIDE_RESOURCE: u64 = 0x2ba4a8e5f3409ace;
1432}
1433
1434pub mod node_controller_ordinals {
1435 pub const REMOVE: u64 = 0x54fa8b3dfe7bb341;
1436 pub const REQUEST_BIND: u64 = 0x41b954726b13508f;
1437 pub const ON_BIND: u64 = 0x51f4165bc5ea202a;
1438 pub const WAIT_FOR_DRIVER: u64 = 0x69f7106e47d81387;
1439}
1440
1441pub mod node_manager_ordinals {
1442 pub const ADD_NODE: u64 = 0x71873eed0baf16fd;
1443}
1444
1445pub mod resource_controller_ordinals {
1446 pub const REMOVE: u64 = 0x1257bec06bde4f98;
1447}
1448
1449mod internal {
1450 use super::*;
1451 unsafe impl fidl::encoding::TypeMarker for BusType {
1452 type Owned = Self;
1453
1454 #[inline(always)]
1455 fn inline_align(_context: fidl::encoding::Context) -> usize {
1456 std::mem::align_of::<u32>()
1457 }
1458
1459 #[inline(always)]
1460 fn inline_size(_context: fidl::encoding::Context) -> usize {
1461 std::mem::size_of::<u32>()
1462 }
1463
1464 #[inline(always)]
1465 fn encode_is_copy() -> bool {
1466 false
1467 }
1468
1469 #[inline(always)]
1470 fn decode_is_copy() -> bool {
1471 false
1472 }
1473 }
1474
1475 impl fidl::encoding::ValueTypeMarker for BusType {
1476 type Borrowed<'a> = Self;
1477 #[inline(always)]
1478 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1479 *value
1480 }
1481 }
1482
1483 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for BusType {
1484 #[inline]
1485 unsafe fn encode(
1486 self,
1487 encoder: &mut fidl::encoding::Encoder<'_, D>,
1488 offset: usize,
1489 _depth: fidl::encoding::Depth,
1490 ) -> fidl::Result<()> {
1491 encoder.debug_check_bounds::<Self>(offset);
1492 encoder.write_num(self.into_primitive(), offset);
1493 Ok(())
1494 }
1495 }
1496
1497 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BusType {
1498 #[inline(always)]
1499 fn new_empty() -> Self {
1500 Self::unknown()
1501 }
1502
1503 #[inline]
1504 unsafe fn decode(
1505 &mut self,
1506 decoder: &mut fidl::encoding::Decoder<'_, D>,
1507 offset: usize,
1508 _depth: fidl::encoding::Depth,
1509 ) -> fidl::Result<()> {
1510 decoder.debug_check_bounds::<Self>(offset);
1511 let prim = decoder.read_num::<u32>(offset);
1512
1513 *self = Self::from_primitive_allow_unknown(prim);
1514 Ok(())
1515 }
1516 }
1517 unsafe impl fidl::encoding::TypeMarker for CompositeNodeSpecError {
1518 type Owned = Self;
1519
1520 #[inline(always)]
1521 fn inline_align(_context: fidl::encoding::Context) -> usize {
1522 std::mem::align_of::<u32>()
1523 }
1524
1525 #[inline(always)]
1526 fn inline_size(_context: fidl::encoding::Context) -> usize {
1527 std::mem::size_of::<u32>()
1528 }
1529
1530 #[inline(always)]
1531 fn encode_is_copy() -> bool {
1532 false
1533 }
1534
1535 #[inline(always)]
1536 fn decode_is_copy() -> bool {
1537 false
1538 }
1539 }
1540
1541 impl fidl::encoding::ValueTypeMarker for CompositeNodeSpecError {
1542 type Borrowed<'a> = Self;
1543 #[inline(always)]
1544 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1545 *value
1546 }
1547 }
1548
1549 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1550 for CompositeNodeSpecError
1551 {
1552 #[inline]
1553 unsafe fn encode(
1554 self,
1555 encoder: &mut fidl::encoding::Encoder<'_, D>,
1556 offset: usize,
1557 _depth: fidl::encoding::Depth,
1558 ) -> fidl::Result<()> {
1559 encoder.debug_check_bounds::<Self>(offset);
1560 encoder.write_num(self.into_primitive(), offset);
1561 Ok(())
1562 }
1563 }
1564
1565 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1566 for CompositeNodeSpecError
1567 {
1568 #[inline(always)]
1569 fn new_empty() -> Self {
1570 Self::unknown()
1571 }
1572
1573 #[inline]
1574 unsafe fn decode(
1575 &mut self,
1576 decoder: &mut fidl::encoding::Decoder<'_, D>,
1577 offset: usize,
1578 _depth: fidl::encoding::Depth,
1579 ) -> fidl::Result<()> {
1580 decoder.debug_check_bounds::<Self>(offset);
1581 let prim = decoder.read_num::<u32>(offset);
1582
1583 *self = Self::from_primitive_allow_unknown(prim);
1584 Ok(())
1585 }
1586 }
1587 unsafe impl fidl::encoding::TypeMarker for Condition {
1588 type Owned = Self;
1589
1590 #[inline(always)]
1591 fn inline_align(_context: fidl::encoding::Context) -> usize {
1592 std::mem::align_of::<u32>()
1593 }
1594
1595 #[inline(always)]
1596 fn inline_size(_context: fidl::encoding::Context) -> usize {
1597 std::mem::size_of::<u32>()
1598 }
1599
1600 #[inline(always)]
1601 fn encode_is_copy() -> bool {
1602 true
1603 }
1604
1605 #[inline(always)]
1606 fn decode_is_copy() -> bool {
1607 false
1608 }
1609 }
1610
1611 impl fidl::encoding::ValueTypeMarker for Condition {
1612 type Borrowed<'a> = Self;
1613 #[inline(always)]
1614 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1615 *value
1616 }
1617 }
1618
1619 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Condition {
1620 #[inline]
1621 unsafe fn encode(
1622 self,
1623 encoder: &mut fidl::encoding::Encoder<'_, D>,
1624 offset: usize,
1625 _depth: fidl::encoding::Depth,
1626 ) -> fidl::Result<()> {
1627 encoder.debug_check_bounds::<Self>(offset);
1628 encoder.write_num(self.into_primitive(), offset);
1629 Ok(())
1630 }
1631 }
1632
1633 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Condition {
1634 #[inline(always)]
1635 fn new_empty() -> Self {
1636 Self::Unknown
1637 }
1638
1639 #[inline]
1640 unsafe fn decode(
1641 &mut self,
1642 decoder: &mut fidl::encoding::Decoder<'_, D>,
1643 offset: usize,
1644 _depth: fidl::encoding::Depth,
1645 ) -> fidl::Result<()> {
1646 decoder.debug_check_bounds::<Self>(offset);
1647 let prim = decoder.read_num::<u32>(offset);
1648
1649 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1650 Ok(())
1651 }
1652 }
1653 unsafe impl fidl::encoding::TypeMarker for DeviceAddressStability {
1654 type Owned = Self;
1655
1656 #[inline(always)]
1657 fn inline_align(_context: fidl::encoding::Context) -> usize {
1658 std::mem::align_of::<u32>()
1659 }
1660
1661 #[inline(always)]
1662 fn inline_size(_context: fidl::encoding::Context) -> usize {
1663 std::mem::size_of::<u32>()
1664 }
1665
1666 #[inline(always)]
1667 fn encode_is_copy() -> bool {
1668 false
1669 }
1670
1671 #[inline(always)]
1672 fn decode_is_copy() -> bool {
1673 false
1674 }
1675 }
1676
1677 impl fidl::encoding::ValueTypeMarker for DeviceAddressStability {
1678 type Borrowed<'a> = Self;
1679 #[inline(always)]
1680 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1681 *value
1682 }
1683 }
1684
1685 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1686 for DeviceAddressStability
1687 {
1688 #[inline]
1689 unsafe fn encode(
1690 self,
1691 encoder: &mut fidl::encoding::Encoder<'_, D>,
1692 offset: usize,
1693 _depth: fidl::encoding::Depth,
1694 ) -> fidl::Result<()> {
1695 encoder.debug_check_bounds::<Self>(offset);
1696 encoder.write_num(self.into_primitive(), offset);
1697 Ok(())
1698 }
1699 }
1700
1701 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1702 for DeviceAddressStability
1703 {
1704 #[inline(always)]
1705 fn new_empty() -> Self {
1706 Self::unknown()
1707 }
1708
1709 #[inline]
1710 unsafe fn decode(
1711 &mut self,
1712 decoder: &mut fidl::encoding::Decoder<'_, D>,
1713 offset: usize,
1714 _depth: fidl::encoding::Depth,
1715 ) -> fidl::Result<()> {
1716 decoder.debug_check_bounds::<Self>(offset);
1717 let prim = decoder.read_num::<u32>(offset);
1718
1719 *self = Self::from_primitive_allow_unknown(prim);
1720 Ok(())
1721 }
1722 }
1723 unsafe impl fidl::encoding::TypeMarker for DriverPackageType {
1724 type Owned = Self;
1725
1726 #[inline(always)]
1727 fn inline_align(_context: fidl::encoding::Context) -> usize {
1728 std::mem::align_of::<u8>()
1729 }
1730
1731 #[inline(always)]
1732 fn inline_size(_context: fidl::encoding::Context) -> usize {
1733 std::mem::size_of::<u8>()
1734 }
1735
1736 #[inline(always)]
1737 fn encode_is_copy() -> bool {
1738 false
1739 }
1740
1741 #[inline(always)]
1742 fn decode_is_copy() -> bool {
1743 false
1744 }
1745 }
1746
1747 impl fidl::encoding::ValueTypeMarker for DriverPackageType {
1748 type Borrowed<'a> = Self;
1749 #[inline(always)]
1750 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1751 *value
1752 }
1753 }
1754
1755 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1756 for DriverPackageType
1757 {
1758 #[inline]
1759 unsafe fn encode(
1760 self,
1761 encoder: &mut fidl::encoding::Encoder<'_, D>,
1762 offset: usize,
1763 _depth: fidl::encoding::Depth,
1764 ) -> fidl::Result<()> {
1765 encoder.debug_check_bounds::<Self>(offset);
1766 encoder.write_num(self.into_primitive(), offset);
1767 Ok(())
1768 }
1769 }
1770
1771 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DriverPackageType {
1772 #[inline(always)]
1773 fn new_empty() -> Self {
1774 Self::unknown()
1775 }
1776
1777 #[inline]
1778 unsafe fn decode(
1779 &mut self,
1780 decoder: &mut fidl::encoding::Decoder<'_, D>,
1781 offset: usize,
1782 _depth: fidl::encoding::Depth,
1783 ) -> fidl::Result<()> {
1784 decoder.debug_check_bounds::<Self>(offset);
1785 let prim = decoder.read_num::<u8>(offset);
1786
1787 *self = Self::from_primitive_allow_unknown(prim);
1788 Ok(())
1789 }
1790 }
1791 unsafe impl fidl::encoding::TypeMarker for HealthCheckError {
1792 type Owned = Self;
1793
1794 #[inline(always)]
1795 fn inline_align(_context: fidl::encoding::Context) -> usize {
1796 std::mem::align_of::<u32>()
1797 }
1798
1799 #[inline(always)]
1800 fn inline_size(_context: fidl::encoding::Context) -> usize {
1801 std::mem::size_of::<u32>()
1802 }
1803
1804 #[inline(always)]
1805 fn encode_is_copy() -> bool {
1806 false
1807 }
1808
1809 #[inline(always)]
1810 fn decode_is_copy() -> bool {
1811 false
1812 }
1813 }
1814
1815 impl fidl::encoding::ValueTypeMarker for HealthCheckError {
1816 type Borrowed<'a> = Self;
1817 #[inline(always)]
1818 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1819 *value
1820 }
1821 }
1822
1823 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1824 for HealthCheckError
1825 {
1826 #[inline]
1827 unsafe fn encode(
1828 self,
1829 encoder: &mut fidl::encoding::Encoder<'_, D>,
1830 offset: usize,
1831 _depth: fidl::encoding::Depth,
1832 ) -> fidl::Result<()> {
1833 encoder.debug_check_bounds::<Self>(offset);
1834 encoder.write_num(self.into_primitive(), offset);
1835 Ok(())
1836 }
1837 }
1838
1839 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HealthCheckError {
1840 #[inline(always)]
1841 fn new_empty() -> Self {
1842 Self::unknown()
1843 }
1844
1845 #[inline]
1846 unsafe fn decode(
1847 &mut self,
1848 decoder: &mut fidl::encoding::Decoder<'_, D>,
1849 offset: usize,
1850 _depth: fidl::encoding::Depth,
1851 ) -> fidl::Result<()> {
1852 decoder.debug_check_bounds::<Self>(offset);
1853 let prim = decoder.read_num::<u32>(offset);
1854
1855 *self = Self::from_primitive_allow_unknown(prim);
1856 Ok(())
1857 }
1858 }
1859 unsafe impl fidl::encoding::TypeMarker for HealthCheckRequest {
1860 type Owned = Self;
1861
1862 #[inline(always)]
1863 fn inline_align(_context: fidl::encoding::Context) -> usize {
1864 std::mem::align_of::<u32>()
1865 }
1866
1867 #[inline(always)]
1868 fn inline_size(_context: fidl::encoding::Context) -> usize {
1869 std::mem::size_of::<u32>()
1870 }
1871
1872 #[inline(always)]
1873 fn encode_is_copy() -> bool {
1874 false
1875 }
1876
1877 #[inline(always)]
1878 fn decode_is_copy() -> bool {
1879 false
1880 }
1881 }
1882
1883 impl fidl::encoding::ValueTypeMarker for HealthCheckRequest {
1884 type Borrowed<'a> = Self;
1885 #[inline(always)]
1886 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1887 *value
1888 }
1889 }
1890
1891 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1892 for HealthCheckRequest
1893 {
1894 #[inline]
1895 unsafe fn encode(
1896 self,
1897 encoder: &mut fidl::encoding::Encoder<'_, D>,
1898 offset: usize,
1899 _depth: fidl::encoding::Depth,
1900 ) -> fidl::Result<()> {
1901 encoder.debug_check_bounds::<Self>(offset);
1902 encoder.write_num(self.into_primitive(), offset);
1903 Ok(())
1904 }
1905 }
1906
1907 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HealthCheckRequest {
1908 #[inline(always)]
1909 fn new_empty() -> Self {
1910 Self::unknown()
1911 }
1912
1913 #[inline]
1914 unsafe fn decode(
1915 &mut self,
1916 decoder: &mut fidl::encoding::Decoder<'_, D>,
1917 offset: usize,
1918 _depth: fidl::encoding::Depth,
1919 ) -> fidl::Result<()> {
1920 decoder.debug_check_bounds::<Self>(offset);
1921 let prim = decoder.read_num::<u32>(offset);
1922
1923 *self = Self::from_primitive_allow_unknown(prim);
1924 Ok(())
1925 }
1926 }
1927 unsafe impl fidl::encoding::TypeMarker for HealthStatus {
1928 type Owned = Self;
1929
1930 #[inline(always)]
1931 fn inline_align(_context: fidl::encoding::Context) -> usize {
1932 std::mem::align_of::<u32>()
1933 }
1934
1935 #[inline(always)]
1936 fn inline_size(_context: fidl::encoding::Context) -> usize {
1937 std::mem::size_of::<u32>()
1938 }
1939
1940 #[inline(always)]
1941 fn encode_is_copy() -> bool {
1942 false
1943 }
1944
1945 #[inline(always)]
1946 fn decode_is_copy() -> bool {
1947 false
1948 }
1949 }
1950
1951 impl fidl::encoding::ValueTypeMarker for HealthStatus {
1952 type Borrowed<'a> = Self;
1953 #[inline(always)]
1954 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1955 *value
1956 }
1957 }
1958
1959 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for HealthStatus {
1960 #[inline]
1961 unsafe fn encode(
1962 self,
1963 encoder: &mut fidl::encoding::Encoder<'_, D>,
1964 offset: usize,
1965 _depth: fidl::encoding::Depth,
1966 ) -> fidl::Result<()> {
1967 encoder.debug_check_bounds::<Self>(offset);
1968 encoder.write_num(self.into_primitive(), offset);
1969 Ok(())
1970 }
1971 }
1972
1973 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HealthStatus {
1974 #[inline(always)]
1975 fn new_empty() -> Self {
1976 Self::unknown()
1977 }
1978
1979 #[inline]
1980 unsafe fn decode(
1981 &mut self,
1982 decoder: &mut fidl::encoding::Decoder<'_, D>,
1983 offset: usize,
1984 _depth: fidl::encoding::Depth,
1985 ) -> fidl::Result<()> {
1986 decoder.debug_check_bounds::<Self>(offset);
1987 let prim = decoder.read_num::<u32>(offset);
1988
1989 *self = Self::from_primitive_allow_unknown(prim);
1990 Ok(())
1991 }
1992 }
1993 unsafe impl fidl::encoding::TypeMarker for NodeError {
1994 type Owned = Self;
1995
1996 #[inline(always)]
1997 fn inline_align(_context: fidl::encoding::Context) -> usize {
1998 std::mem::align_of::<u32>()
1999 }
2000
2001 #[inline(always)]
2002 fn inline_size(_context: fidl::encoding::Context) -> usize {
2003 std::mem::size_of::<u32>()
2004 }
2005
2006 #[inline(always)]
2007 fn encode_is_copy() -> bool {
2008 false
2009 }
2010
2011 #[inline(always)]
2012 fn decode_is_copy() -> bool {
2013 false
2014 }
2015 }
2016
2017 impl fidl::encoding::ValueTypeMarker for NodeError {
2018 type Borrowed<'a> = Self;
2019 #[inline(always)]
2020 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2021 *value
2022 }
2023 }
2024
2025 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for NodeError {
2026 #[inline]
2027 unsafe fn encode(
2028 self,
2029 encoder: &mut fidl::encoding::Encoder<'_, D>,
2030 offset: usize,
2031 _depth: fidl::encoding::Depth,
2032 ) -> fidl::Result<()> {
2033 encoder.debug_check_bounds::<Self>(offset);
2034 encoder.write_num(self.into_primitive(), offset);
2035 Ok(())
2036 }
2037 }
2038
2039 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeError {
2040 #[inline(always)]
2041 fn new_empty() -> Self {
2042 Self::unknown()
2043 }
2044
2045 #[inline]
2046 unsafe fn decode(
2047 &mut self,
2048 decoder: &mut fidl::encoding::Decoder<'_, D>,
2049 offset: usize,
2050 _depth: fidl::encoding::Depth,
2051 ) -> fidl::Result<()> {
2052 decoder.debug_check_bounds::<Self>(offset);
2053 let prim = decoder.read_num::<u32>(offset);
2054
2055 *self = Self::from_primitive_allow_unknown(prim);
2056 Ok(())
2057 }
2058 }
2059
2060 impl fidl::encoding::ValueTypeMarker for BindRule2 {
2061 type Borrowed<'a> = &'a Self;
2062 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2063 value
2064 }
2065 }
2066
2067 unsafe impl fidl::encoding::TypeMarker for BindRule2 {
2068 type Owned = Self;
2069
2070 #[inline(always)]
2071 fn inline_align(_context: fidl::encoding::Context) -> usize {
2072 8
2073 }
2074
2075 #[inline(always)]
2076 fn inline_size(_context: fidl::encoding::Context) -> usize {
2077 40
2078 }
2079 }
2080
2081 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BindRule2, D>
2082 for &BindRule2
2083 {
2084 #[inline]
2085 unsafe fn encode(
2086 self,
2087 encoder: &mut fidl::encoding::Encoder<'_, D>,
2088 offset: usize,
2089 _depth: fidl::encoding::Depth,
2090 ) -> fidl::Result<()> {
2091 encoder.debug_check_bounds::<BindRule2>(offset);
2092 fidl::encoding::Encode::<BindRule2, D>::encode(
2094 (
2095 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
2096 <Condition as fidl::encoding::ValueTypeMarker>::borrow(&self.condition),
2097 <fidl::encoding::Vector<NodePropertyValue, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.values),
2098 ),
2099 encoder, offset, _depth
2100 )
2101 }
2102 }
2103 unsafe impl<
2104 D: fidl::encoding::ResourceDialect,
2105 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<256>, D>,
2106 T1: fidl::encoding::Encode<Condition, D>,
2107 T2: fidl::encoding::Encode<fidl::encoding::Vector<NodePropertyValue, 64>, D>,
2108 > fidl::encoding::Encode<BindRule2, D> for (T0, T1, T2)
2109 {
2110 #[inline]
2111 unsafe fn encode(
2112 self,
2113 encoder: &mut fidl::encoding::Encoder<'_, D>,
2114 offset: usize,
2115 depth: fidl::encoding::Depth,
2116 ) -> fidl::Result<()> {
2117 encoder.debug_check_bounds::<BindRule2>(offset);
2118 unsafe {
2121 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
2122 (ptr as *mut u64).write_unaligned(0);
2123 }
2124 self.0.encode(encoder, offset + 0, depth)?;
2126 self.1.encode(encoder, offset + 16, depth)?;
2127 self.2.encode(encoder, offset + 24, depth)?;
2128 Ok(())
2129 }
2130 }
2131
2132 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BindRule2 {
2133 #[inline(always)]
2134 fn new_empty() -> Self {
2135 Self {
2136 key: fidl::new_empty!(fidl::encoding::BoundedString<256>, D),
2137 condition: fidl::new_empty!(Condition, D),
2138 values: fidl::new_empty!(fidl::encoding::Vector<NodePropertyValue, 64>, D),
2139 }
2140 }
2141
2142 #[inline]
2143 unsafe fn decode(
2144 &mut self,
2145 decoder: &mut fidl::encoding::Decoder<'_, D>,
2146 offset: usize,
2147 _depth: fidl::encoding::Depth,
2148 ) -> fidl::Result<()> {
2149 decoder.debug_check_bounds::<Self>(offset);
2150 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
2152 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2153 let mask = 0xffffffff00000000u64;
2154 let maskedval = padval & mask;
2155 if maskedval != 0 {
2156 return Err(fidl::Error::NonZeroPadding {
2157 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
2158 });
2159 }
2160 fidl::decode!(
2161 fidl::encoding::BoundedString<256>,
2162 D,
2163 &mut self.key,
2164 decoder,
2165 offset + 0,
2166 _depth
2167 )?;
2168 fidl::decode!(Condition, D, &mut self.condition, decoder, offset + 16, _depth)?;
2169 fidl::decode!(fidl::encoding::Vector<NodePropertyValue, 64>, D, &mut self.values, decoder, offset + 24, _depth)?;
2170 Ok(())
2171 }
2172 }
2173
2174 impl fidl::encoding::ValueTypeMarker for HealthDiagnosticItem {
2175 type Borrowed<'a> = &'a Self;
2176 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2177 value
2178 }
2179 }
2180
2181 unsafe impl fidl::encoding::TypeMarker for HealthDiagnosticItem {
2182 type Owned = Self;
2183
2184 #[inline(always)]
2185 fn inline_align(_context: fidl::encoding::Context) -> usize {
2186 8
2187 }
2188
2189 #[inline(always)]
2190 fn inline_size(_context: fidl::encoding::Context) -> usize {
2191 32
2192 }
2193 }
2194
2195 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HealthDiagnosticItem, D>
2196 for &HealthDiagnosticItem
2197 {
2198 #[inline]
2199 unsafe fn encode(
2200 self,
2201 encoder: &mut fidl::encoding::Encoder<'_, D>,
2202 offset: usize,
2203 _depth: fidl::encoding::Depth,
2204 ) -> fidl::Result<()> {
2205 encoder.debug_check_bounds::<HealthDiagnosticItem>(offset);
2206 fidl::encoding::Encode::<HealthDiagnosticItem, D>::encode(
2208 (
2209 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow(
2210 &self.key,
2211 ),
2212 <HealthDiagnosticValue as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
2213 ),
2214 encoder,
2215 offset,
2216 _depth,
2217 )
2218 }
2219 }
2220 unsafe impl<
2221 D: fidl::encoding::ResourceDialect,
2222 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<64>, D>,
2223 T1: fidl::encoding::Encode<HealthDiagnosticValue, D>,
2224 > fidl::encoding::Encode<HealthDiagnosticItem, D> for (T0, T1)
2225 {
2226 #[inline]
2227 unsafe fn encode(
2228 self,
2229 encoder: &mut fidl::encoding::Encoder<'_, D>,
2230 offset: usize,
2231 depth: fidl::encoding::Depth,
2232 ) -> fidl::Result<()> {
2233 encoder.debug_check_bounds::<HealthDiagnosticItem>(offset);
2234 self.0.encode(encoder, offset + 0, depth)?;
2238 self.1.encode(encoder, offset + 16, depth)?;
2239 Ok(())
2240 }
2241 }
2242
2243 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HealthDiagnosticItem {
2244 #[inline(always)]
2245 fn new_empty() -> Self {
2246 Self {
2247 key: fidl::new_empty!(fidl::encoding::BoundedString<64>, D),
2248 value: fidl::new_empty!(HealthDiagnosticValue, D),
2249 }
2250 }
2251
2252 #[inline]
2253 unsafe fn decode(
2254 &mut self,
2255 decoder: &mut fidl::encoding::Decoder<'_, D>,
2256 offset: usize,
2257 _depth: fidl::encoding::Depth,
2258 ) -> fidl::Result<()> {
2259 decoder.debug_check_bounds::<Self>(offset);
2260 fidl::decode!(
2262 fidl::encoding::BoundedString<64>,
2263 D,
2264 &mut self.key,
2265 decoder,
2266 offset + 0,
2267 _depth
2268 )?;
2269 fidl::decode!(HealthDiagnosticValue, D, &mut self.value, decoder, offset + 16, _depth)?;
2270 Ok(())
2271 }
2272 }
2273
2274 impl fidl::encoding::ValueTypeMarker for NodeProperty2 {
2275 type Borrowed<'a> = &'a Self;
2276 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2277 value
2278 }
2279 }
2280
2281 unsafe impl fidl::encoding::TypeMarker for NodeProperty2 {
2282 type Owned = Self;
2283
2284 #[inline(always)]
2285 fn inline_align(_context: fidl::encoding::Context) -> usize {
2286 8
2287 }
2288
2289 #[inline(always)]
2290 fn inline_size(_context: fidl::encoding::Context) -> usize {
2291 32
2292 }
2293 }
2294
2295 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeProperty2, D>
2296 for &NodeProperty2
2297 {
2298 #[inline]
2299 unsafe fn encode(
2300 self,
2301 encoder: &mut fidl::encoding::Encoder<'_, D>,
2302 offset: usize,
2303 _depth: fidl::encoding::Depth,
2304 ) -> fidl::Result<()> {
2305 encoder.debug_check_bounds::<NodeProperty2>(offset);
2306 fidl::encoding::Encode::<NodeProperty2, D>::encode(
2308 (
2309 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
2310 &self.key,
2311 ),
2312 <NodePropertyValue as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
2313 ),
2314 encoder,
2315 offset,
2316 _depth,
2317 )
2318 }
2319 }
2320 unsafe impl<
2321 D: fidl::encoding::ResourceDialect,
2322 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<256>, D>,
2323 T1: fidl::encoding::Encode<NodePropertyValue, D>,
2324 > fidl::encoding::Encode<NodeProperty2, D> for (T0, T1)
2325 {
2326 #[inline]
2327 unsafe fn encode(
2328 self,
2329 encoder: &mut fidl::encoding::Encoder<'_, D>,
2330 offset: usize,
2331 depth: fidl::encoding::Depth,
2332 ) -> fidl::Result<()> {
2333 encoder.debug_check_bounds::<NodeProperty2>(offset);
2334 self.0.encode(encoder, offset + 0, depth)?;
2338 self.1.encode(encoder, offset + 16, depth)?;
2339 Ok(())
2340 }
2341 }
2342
2343 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeProperty2 {
2344 #[inline(always)]
2345 fn new_empty() -> Self {
2346 Self {
2347 key: fidl::new_empty!(fidl::encoding::BoundedString<256>, D),
2348 value: fidl::new_empty!(NodePropertyValue, D),
2349 }
2350 }
2351
2352 #[inline]
2353 unsafe fn decode(
2354 &mut self,
2355 decoder: &mut fidl::encoding::Decoder<'_, D>,
2356 offset: usize,
2357 _depth: fidl::encoding::Depth,
2358 ) -> fidl::Result<()> {
2359 decoder.debug_check_bounds::<Self>(offset);
2360 fidl::decode!(
2362 fidl::encoding::BoundedString<256>,
2363 D,
2364 &mut self.key,
2365 decoder,
2366 offset + 0,
2367 _depth
2368 )?;
2369 fidl::decode!(NodePropertyValue, D, &mut self.value, decoder, offset + 16, _depth)?;
2370 Ok(())
2371 }
2372 }
2373
2374 impl fidl::encoding::ValueTypeMarker for NodePropertyEntry2 {
2375 type Borrowed<'a> = &'a Self;
2376 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2377 value
2378 }
2379 }
2380
2381 unsafe impl fidl::encoding::TypeMarker for NodePropertyEntry2 {
2382 type Owned = Self;
2383
2384 #[inline(always)]
2385 fn inline_align(_context: fidl::encoding::Context) -> usize {
2386 8
2387 }
2388
2389 #[inline(always)]
2390 fn inline_size(_context: fidl::encoding::Context) -> usize {
2391 32
2392 }
2393 }
2394
2395 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodePropertyEntry2, D>
2396 for &NodePropertyEntry2
2397 {
2398 #[inline]
2399 unsafe fn encode(
2400 self,
2401 encoder: &mut fidl::encoding::Encoder<'_, D>,
2402 offset: usize,
2403 _depth: fidl::encoding::Depth,
2404 ) -> fidl::Result<()> {
2405 encoder.debug_check_bounds::<NodePropertyEntry2>(offset);
2406 fidl::encoding::Encode::<NodePropertyEntry2, D>::encode(
2408 (
2409 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
2410 <fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.properties),
2411 ),
2412 encoder, offset, _depth
2413 )
2414 }
2415 }
2416 unsafe impl<
2417 D: fidl::encoding::ResourceDialect,
2418 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<128>, D>,
2419 T1: fidl::encoding::Encode<fidl::encoding::Vector<NodeProperty2, 64>, D>,
2420 > fidl::encoding::Encode<NodePropertyEntry2, D> for (T0, T1)
2421 {
2422 #[inline]
2423 unsafe fn encode(
2424 self,
2425 encoder: &mut fidl::encoding::Encoder<'_, D>,
2426 offset: usize,
2427 depth: fidl::encoding::Depth,
2428 ) -> fidl::Result<()> {
2429 encoder.debug_check_bounds::<NodePropertyEntry2>(offset);
2430 self.0.encode(encoder, offset + 0, depth)?;
2434 self.1.encode(encoder, offset + 16, depth)?;
2435 Ok(())
2436 }
2437 }
2438
2439 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodePropertyEntry2 {
2440 #[inline(always)]
2441 fn new_empty() -> Self {
2442 Self {
2443 name: fidl::new_empty!(fidl::encoding::BoundedString<128>, D),
2444 properties: fidl::new_empty!(fidl::encoding::Vector<NodeProperty2, 64>, D),
2445 }
2446 }
2447
2448 #[inline]
2449 unsafe fn decode(
2450 &mut self,
2451 decoder: &mut fidl::encoding::Decoder<'_, D>,
2452 offset: usize,
2453 _depth: fidl::encoding::Depth,
2454 ) -> fidl::Result<()> {
2455 decoder.debug_check_bounds::<Self>(offset);
2456 fidl::decode!(
2458 fidl::encoding::BoundedString<128>,
2459 D,
2460 &mut self.name,
2461 decoder,
2462 offset + 0,
2463 _depth
2464 )?;
2465 fidl::decode!(fidl::encoding::Vector<NodeProperty2, 64>, D, &mut self.properties, decoder, offset + 16, _depth)?;
2466 Ok(())
2467 }
2468 }
2469
2470 impl fidl::encoding::ValueTypeMarker for ParentSpec2 {
2471 type Borrowed<'a> = &'a Self;
2472 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2473 value
2474 }
2475 }
2476
2477 unsafe impl fidl::encoding::TypeMarker for ParentSpec2 {
2478 type Owned = Self;
2479
2480 #[inline(always)]
2481 fn inline_align(_context: fidl::encoding::Context) -> usize {
2482 8
2483 }
2484
2485 #[inline(always)]
2486 fn inline_size(_context: fidl::encoding::Context) -> usize {
2487 32
2488 }
2489 }
2490
2491 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ParentSpec2, D>
2492 for &ParentSpec2
2493 {
2494 #[inline]
2495 unsafe fn encode(
2496 self,
2497 encoder: &mut fidl::encoding::Encoder<'_, D>,
2498 offset: usize,
2499 _depth: fidl::encoding::Depth,
2500 ) -> fidl::Result<()> {
2501 encoder.debug_check_bounds::<ParentSpec2>(offset);
2502 fidl::encoding::Encode::<ParentSpec2, D>::encode(
2504 (
2505 <fidl::encoding::Vector<BindRule2, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.bind_rules),
2506 <fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.properties),
2507 ),
2508 encoder, offset, _depth
2509 )
2510 }
2511 }
2512 unsafe impl<
2513 D: fidl::encoding::ResourceDialect,
2514 T0: fidl::encoding::Encode<fidl::encoding::Vector<BindRule2, 64>, D>,
2515 T1: fidl::encoding::Encode<fidl::encoding::Vector<NodeProperty2, 64>, D>,
2516 > fidl::encoding::Encode<ParentSpec2, D> for (T0, T1)
2517 {
2518 #[inline]
2519 unsafe fn encode(
2520 self,
2521 encoder: &mut fidl::encoding::Encoder<'_, D>,
2522 offset: usize,
2523 depth: fidl::encoding::Depth,
2524 ) -> fidl::Result<()> {
2525 encoder.debug_check_bounds::<ParentSpec2>(offset);
2526 self.0.encode(encoder, offset + 0, depth)?;
2530 self.1.encode(encoder, offset + 16, depth)?;
2531 Ok(())
2532 }
2533 }
2534
2535 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ParentSpec2 {
2536 #[inline(always)]
2537 fn new_empty() -> Self {
2538 Self {
2539 bind_rules: fidl::new_empty!(fidl::encoding::Vector<BindRule2, 64>, D),
2540 properties: fidl::new_empty!(fidl::encoding::Vector<NodeProperty2, 64>, D),
2541 }
2542 }
2543
2544 #[inline]
2545 unsafe fn decode(
2546 &mut self,
2547 decoder: &mut fidl::encoding::Decoder<'_, D>,
2548 offset: usize,
2549 _depth: fidl::encoding::Depth,
2550 ) -> fidl::Result<()> {
2551 decoder.debug_check_bounds::<Self>(offset);
2552 fidl::decode!(fidl::encoding::Vector<BindRule2, 64>, D, &mut self.bind_rules, decoder, offset + 0, _depth)?;
2554 fidl::decode!(fidl::encoding::Vector<NodeProperty2, 64>, D, &mut self.properties, decoder, offset + 16, _depth)?;
2555 Ok(())
2556 }
2557 }
2558
2559 impl fidl::encoding::ValueTypeMarker for ResourceProperty {
2560 type Borrowed<'a> = &'a Self;
2561 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2562 value
2563 }
2564 }
2565
2566 unsafe impl fidl::encoding::TypeMarker for ResourceProperty {
2567 type Owned = Self;
2568
2569 #[inline(always)]
2570 fn inline_align(_context: fidl::encoding::Context) -> usize {
2571 8
2572 }
2573
2574 #[inline(always)]
2575 fn inline_size(_context: fidl::encoding::Context) -> usize {
2576 32
2577 }
2578 }
2579
2580 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ResourceProperty, D>
2581 for &ResourceProperty
2582 {
2583 #[inline]
2584 unsafe fn encode(
2585 self,
2586 encoder: &mut fidl::encoding::Encoder<'_, D>,
2587 offset: usize,
2588 _depth: fidl::encoding::Depth,
2589 ) -> fidl::Result<()> {
2590 encoder.debug_check_bounds::<ResourceProperty>(offset);
2591 fidl::encoding::Encode::<ResourceProperty, D>::encode(
2593 (
2594 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
2595 &self.key,
2596 ),
2597 <NodePropertyValue as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
2598 ),
2599 encoder,
2600 offset,
2601 _depth,
2602 )
2603 }
2604 }
2605 unsafe impl<
2606 D: fidl::encoding::ResourceDialect,
2607 T0: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
2608 T1: fidl::encoding::Encode<NodePropertyValue, D>,
2609 > fidl::encoding::Encode<ResourceProperty, D> for (T0, T1)
2610 {
2611 #[inline]
2612 unsafe fn encode(
2613 self,
2614 encoder: &mut fidl::encoding::Encoder<'_, D>,
2615 offset: usize,
2616 depth: fidl::encoding::Depth,
2617 ) -> fidl::Result<()> {
2618 encoder.debug_check_bounds::<ResourceProperty>(offset);
2619 self.0.encode(encoder, offset + 0, depth)?;
2623 self.1.encode(encoder, offset + 16, depth)?;
2624 Ok(())
2625 }
2626 }
2627
2628 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResourceProperty {
2629 #[inline(always)]
2630 fn new_empty() -> Self {
2631 Self {
2632 key: fidl::new_empty!(fidl::encoding::UnboundedString, D),
2633 value: fidl::new_empty!(NodePropertyValue, D),
2634 }
2635 }
2636
2637 #[inline]
2638 unsafe fn decode(
2639 &mut self,
2640 decoder: &mut fidl::encoding::Decoder<'_, D>,
2641 offset: usize,
2642 _depth: fidl::encoding::Depth,
2643 ) -> fidl::Result<()> {
2644 decoder.debug_check_bounds::<Self>(offset);
2645 fidl::decode!(
2647 fidl::encoding::UnboundedString,
2648 D,
2649 &mut self.key,
2650 decoder,
2651 offset + 0,
2652 _depth
2653 )?;
2654 fidl::decode!(NodePropertyValue, D, &mut self.value, decoder, offset + 16, _depth)?;
2655 Ok(())
2656 }
2657 }
2658
2659 impl BusInfo {
2660 #[inline(always)]
2661 fn max_ordinal_present(&self) -> u64 {
2662 if let Some(_) = self.address_stability {
2663 return 3;
2664 }
2665 if let Some(_) = self.address {
2666 return 2;
2667 }
2668 if let Some(_) = self.bus {
2669 return 1;
2670 }
2671 0
2672 }
2673 }
2674
2675 impl fidl::encoding::ValueTypeMarker for BusInfo {
2676 type Borrowed<'a> = &'a Self;
2677 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2678 value
2679 }
2680 }
2681
2682 unsafe impl fidl::encoding::TypeMarker for BusInfo {
2683 type Owned = Self;
2684
2685 #[inline(always)]
2686 fn inline_align(_context: fidl::encoding::Context) -> usize {
2687 8
2688 }
2689
2690 #[inline(always)]
2691 fn inline_size(_context: fidl::encoding::Context) -> usize {
2692 16
2693 }
2694 }
2695
2696 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BusInfo, D> for &BusInfo {
2697 unsafe fn encode(
2698 self,
2699 encoder: &mut fidl::encoding::Encoder<'_, D>,
2700 offset: usize,
2701 mut depth: fidl::encoding::Depth,
2702 ) -> fidl::Result<()> {
2703 encoder.debug_check_bounds::<BusInfo>(offset);
2704 let max_ordinal: u64 = self.max_ordinal_present();
2706 encoder.write_num(max_ordinal, offset);
2707 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2708 if max_ordinal == 0 {
2710 return Ok(());
2711 }
2712 depth.increment()?;
2713 let envelope_size = 8;
2714 let bytes_len = max_ordinal as usize * envelope_size;
2715 #[allow(unused_variables)]
2716 let offset = encoder.out_of_line_offset(bytes_len);
2717 let mut _prev_end_offset: usize = 0;
2718 if 1 > max_ordinal {
2719 return Ok(());
2720 }
2721
2722 let cur_offset: usize = (1 - 1) * envelope_size;
2725
2726 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2728
2729 fidl::encoding::encode_in_envelope_optional::<BusType, D>(
2734 self.bus.as_ref().map(<BusType as fidl::encoding::ValueTypeMarker>::borrow),
2735 encoder,
2736 offset + cur_offset,
2737 depth,
2738 )?;
2739
2740 _prev_end_offset = cur_offset + envelope_size;
2741 if 2 > max_ordinal {
2742 return Ok(());
2743 }
2744
2745 let cur_offset: usize = (2 - 1) * envelope_size;
2748
2749 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2751
2752 fidl::encoding::encode_in_envelope_optional::<DeviceAddress, D>(
2757 self.address
2758 .as_ref()
2759 .map(<DeviceAddress as fidl::encoding::ValueTypeMarker>::borrow),
2760 encoder,
2761 offset + cur_offset,
2762 depth,
2763 )?;
2764
2765 _prev_end_offset = cur_offset + envelope_size;
2766 if 3 > max_ordinal {
2767 return Ok(());
2768 }
2769
2770 let cur_offset: usize = (3 - 1) * envelope_size;
2773
2774 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2776
2777 fidl::encoding::encode_in_envelope_optional::<DeviceAddressStability, D>(
2782 self.address_stability
2783 .as_ref()
2784 .map(<DeviceAddressStability as fidl::encoding::ValueTypeMarker>::borrow),
2785 encoder,
2786 offset + cur_offset,
2787 depth,
2788 )?;
2789
2790 _prev_end_offset = cur_offset + envelope_size;
2791
2792 Ok(())
2793 }
2794 }
2795
2796 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BusInfo {
2797 #[inline(always)]
2798 fn new_empty() -> Self {
2799 Self::default()
2800 }
2801
2802 unsafe fn decode(
2803 &mut self,
2804 decoder: &mut fidl::encoding::Decoder<'_, D>,
2805 offset: usize,
2806 mut depth: fidl::encoding::Depth,
2807 ) -> fidl::Result<()> {
2808 decoder.debug_check_bounds::<Self>(offset);
2809 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2810 None => return Err(fidl::Error::NotNullable),
2811 Some(len) => len,
2812 };
2813 if len == 0 {
2815 return Ok(());
2816 };
2817 depth.increment()?;
2818 let envelope_size = 8;
2819 let bytes_len = len * envelope_size;
2820 let offset = decoder.out_of_line_offset(bytes_len)?;
2821 let mut _next_ordinal_to_read = 0;
2823 let mut next_offset = offset;
2824 let end_offset = offset + bytes_len;
2825 _next_ordinal_to_read += 1;
2826 if next_offset >= end_offset {
2827 return Ok(());
2828 }
2829
2830 while _next_ordinal_to_read < 1 {
2832 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2833 _next_ordinal_to_read += 1;
2834 next_offset += envelope_size;
2835 }
2836
2837 let next_out_of_line = decoder.next_out_of_line();
2838 let handles_before = decoder.remaining_handles();
2839 if let Some((inlined, num_bytes, num_handles)) =
2840 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2841 {
2842 let member_inline_size =
2843 <BusType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2844 if inlined != (member_inline_size <= 4) {
2845 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2846 }
2847 let inner_offset;
2848 let mut inner_depth = depth.clone();
2849 if inlined {
2850 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2851 inner_offset = next_offset;
2852 } else {
2853 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2854 inner_depth.increment()?;
2855 }
2856 let val_ref = self.bus.get_or_insert_with(|| fidl::new_empty!(BusType, D));
2857 fidl::decode!(BusType, D, val_ref, decoder, inner_offset, inner_depth)?;
2858 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2859 {
2860 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2861 }
2862 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2863 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2864 }
2865 }
2866
2867 next_offset += envelope_size;
2868 _next_ordinal_to_read += 1;
2869 if next_offset >= end_offset {
2870 return Ok(());
2871 }
2872
2873 while _next_ordinal_to_read < 2 {
2875 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2876 _next_ordinal_to_read += 1;
2877 next_offset += envelope_size;
2878 }
2879
2880 let next_out_of_line = decoder.next_out_of_line();
2881 let handles_before = decoder.remaining_handles();
2882 if let Some((inlined, num_bytes, num_handles)) =
2883 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2884 {
2885 let member_inline_size =
2886 <DeviceAddress as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2887 if inlined != (member_inline_size <= 4) {
2888 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2889 }
2890 let inner_offset;
2891 let mut inner_depth = depth.clone();
2892 if inlined {
2893 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2894 inner_offset = next_offset;
2895 } else {
2896 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2897 inner_depth.increment()?;
2898 }
2899 let val_ref =
2900 self.address.get_or_insert_with(|| fidl::new_empty!(DeviceAddress, D));
2901 fidl::decode!(DeviceAddress, D, val_ref, decoder, inner_offset, inner_depth)?;
2902 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2903 {
2904 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2905 }
2906 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2907 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2908 }
2909 }
2910
2911 next_offset += envelope_size;
2912 _next_ordinal_to_read += 1;
2913 if next_offset >= end_offset {
2914 return Ok(());
2915 }
2916
2917 while _next_ordinal_to_read < 3 {
2919 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2920 _next_ordinal_to_read += 1;
2921 next_offset += envelope_size;
2922 }
2923
2924 let next_out_of_line = decoder.next_out_of_line();
2925 let handles_before = decoder.remaining_handles();
2926 if let Some((inlined, num_bytes, num_handles)) =
2927 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2928 {
2929 let member_inline_size =
2930 <DeviceAddressStability as fidl::encoding::TypeMarker>::inline_size(
2931 decoder.context,
2932 );
2933 if inlined != (member_inline_size <= 4) {
2934 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2935 }
2936 let inner_offset;
2937 let mut inner_depth = depth.clone();
2938 if inlined {
2939 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2940 inner_offset = next_offset;
2941 } else {
2942 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2943 inner_depth.increment()?;
2944 }
2945 let val_ref = self
2946 .address_stability
2947 .get_or_insert_with(|| fidl::new_empty!(DeviceAddressStability, D));
2948 fidl::decode!(
2949 DeviceAddressStability,
2950 D,
2951 val_ref,
2952 decoder,
2953 inner_offset,
2954 inner_depth
2955 )?;
2956 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2957 {
2958 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2959 }
2960 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2961 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2962 }
2963 }
2964
2965 next_offset += envelope_size;
2966
2967 while next_offset < end_offset {
2969 _next_ordinal_to_read += 1;
2970 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2971 next_offset += envelope_size;
2972 }
2973
2974 Ok(())
2975 }
2976 }
2977
2978 impl CompositeDriverInfo {
2979 #[inline(always)]
2980 fn max_ordinal_present(&self) -> u64 {
2981 if let Some(_) = self.driver_info {
2982 return 2;
2983 }
2984 if let Some(_) = self.composite_name {
2985 return 1;
2986 }
2987 0
2988 }
2989 }
2990
2991 impl fidl::encoding::ValueTypeMarker for CompositeDriverInfo {
2992 type Borrowed<'a> = &'a Self;
2993 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2994 value
2995 }
2996 }
2997
2998 unsafe impl fidl::encoding::TypeMarker for CompositeDriverInfo {
2999 type Owned = Self;
3000
3001 #[inline(always)]
3002 fn inline_align(_context: fidl::encoding::Context) -> usize {
3003 8
3004 }
3005
3006 #[inline(always)]
3007 fn inline_size(_context: fidl::encoding::Context) -> usize {
3008 16
3009 }
3010 }
3011
3012 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeDriverInfo, D>
3013 for &CompositeDriverInfo
3014 {
3015 unsafe fn encode(
3016 self,
3017 encoder: &mut fidl::encoding::Encoder<'_, D>,
3018 offset: usize,
3019 mut depth: fidl::encoding::Depth,
3020 ) -> fidl::Result<()> {
3021 encoder.debug_check_bounds::<CompositeDriverInfo>(offset);
3022 let max_ordinal: u64 = self.max_ordinal_present();
3024 encoder.write_num(max_ordinal, offset);
3025 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3026 if max_ordinal == 0 {
3028 return Ok(());
3029 }
3030 depth.increment()?;
3031 let envelope_size = 8;
3032 let bytes_len = max_ordinal as usize * envelope_size;
3033 #[allow(unused_variables)]
3034 let offset = encoder.out_of_line_offset(bytes_len);
3035 let mut _prev_end_offset: usize = 0;
3036 if 1 > max_ordinal {
3037 return Ok(());
3038 }
3039
3040 let cur_offset: usize = (1 - 1) * envelope_size;
3043
3044 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3046
3047 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
3052 self.composite_name.as_ref().map(
3053 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
3054 ),
3055 encoder,
3056 offset + cur_offset,
3057 depth,
3058 )?;
3059
3060 _prev_end_offset = cur_offset + envelope_size;
3061 if 2 > max_ordinal {
3062 return Ok(());
3063 }
3064
3065 let cur_offset: usize = (2 - 1) * envelope_size;
3068
3069 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3071
3072 fidl::encoding::encode_in_envelope_optional::<DriverInfo, D>(
3077 self.driver_info
3078 .as_ref()
3079 .map(<DriverInfo as fidl::encoding::ValueTypeMarker>::borrow),
3080 encoder,
3081 offset + cur_offset,
3082 depth,
3083 )?;
3084
3085 _prev_end_offset = cur_offset + envelope_size;
3086
3087 Ok(())
3088 }
3089 }
3090
3091 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeDriverInfo {
3092 #[inline(always)]
3093 fn new_empty() -> Self {
3094 Self::default()
3095 }
3096
3097 unsafe fn decode(
3098 &mut self,
3099 decoder: &mut fidl::encoding::Decoder<'_, D>,
3100 offset: usize,
3101 mut depth: fidl::encoding::Depth,
3102 ) -> fidl::Result<()> {
3103 decoder.debug_check_bounds::<Self>(offset);
3104 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3105 None => return Err(fidl::Error::NotNullable),
3106 Some(len) => len,
3107 };
3108 if len == 0 {
3110 return Ok(());
3111 };
3112 depth.increment()?;
3113 let envelope_size = 8;
3114 let bytes_len = len * envelope_size;
3115 let offset = decoder.out_of_line_offset(bytes_len)?;
3116 let mut _next_ordinal_to_read = 0;
3118 let mut next_offset = offset;
3119 let end_offset = offset + bytes_len;
3120 _next_ordinal_to_read += 1;
3121 if next_offset >= end_offset {
3122 return Ok(());
3123 }
3124
3125 while _next_ordinal_to_read < 1 {
3127 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3128 _next_ordinal_to_read += 1;
3129 next_offset += envelope_size;
3130 }
3131
3132 let next_out_of_line = decoder.next_out_of_line();
3133 let handles_before = decoder.remaining_handles();
3134 if let Some((inlined, num_bytes, num_handles)) =
3135 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3136 {
3137 let member_inline_size =
3138 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
3139 decoder.context,
3140 );
3141 if inlined != (member_inline_size <= 4) {
3142 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3143 }
3144 let inner_offset;
3145 let mut inner_depth = depth.clone();
3146 if inlined {
3147 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3148 inner_offset = next_offset;
3149 } else {
3150 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3151 inner_depth.increment()?;
3152 }
3153 let val_ref = self
3154 .composite_name
3155 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
3156 fidl::decode!(
3157 fidl::encoding::UnboundedString,
3158 D,
3159 val_ref,
3160 decoder,
3161 inner_offset,
3162 inner_depth
3163 )?;
3164 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3165 {
3166 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3167 }
3168 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3169 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3170 }
3171 }
3172
3173 next_offset += envelope_size;
3174 _next_ordinal_to_read += 1;
3175 if next_offset >= end_offset {
3176 return Ok(());
3177 }
3178
3179 while _next_ordinal_to_read < 2 {
3181 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3182 _next_ordinal_to_read += 1;
3183 next_offset += envelope_size;
3184 }
3185
3186 let next_out_of_line = decoder.next_out_of_line();
3187 let handles_before = decoder.remaining_handles();
3188 if let Some((inlined, num_bytes, num_handles)) =
3189 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3190 {
3191 let member_inline_size =
3192 <DriverInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3193 if inlined != (member_inline_size <= 4) {
3194 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3195 }
3196 let inner_offset;
3197 let mut inner_depth = depth.clone();
3198 if inlined {
3199 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3200 inner_offset = next_offset;
3201 } else {
3202 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3203 inner_depth.increment()?;
3204 }
3205 let val_ref =
3206 self.driver_info.get_or_insert_with(|| fidl::new_empty!(DriverInfo, D));
3207 fidl::decode!(DriverInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
3208 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3209 {
3210 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3211 }
3212 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3213 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3214 }
3215 }
3216
3217 next_offset += envelope_size;
3218
3219 while next_offset < end_offset {
3221 _next_ordinal_to_read += 1;
3222 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3223 next_offset += envelope_size;
3224 }
3225
3226 Ok(())
3227 }
3228 }
3229
3230 impl CompositeDriverMatch {
3231 #[inline(always)]
3232 fn max_ordinal_present(&self) -> u64 {
3233 if let Some(_) = self.primary_parent_index {
3234 return 3;
3235 }
3236 if let Some(_) = self.parent_names {
3237 return 2;
3238 }
3239 if let Some(_) = self.composite_driver {
3240 return 1;
3241 }
3242 0
3243 }
3244 }
3245
3246 impl fidl::encoding::ValueTypeMarker for CompositeDriverMatch {
3247 type Borrowed<'a> = &'a Self;
3248 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3249 value
3250 }
3251 }
3252
3253 unsafe impl fidl::encoding::TypeMarker for CompositeDriverMatch {
3254 type Owned = Self;
3255
3256 #[inline(always)]
3257 fn inline_align(_context: fidl::encoding::Context) -> usize {
3258 8
3259 }
3260
3261 #[inline(always)]
3262 fn inline_size(_context: fidl::encoding::Context) -> usize {
3263 16
3264 }
3265 }
3266
3267 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeDriverMatch, D>
3268 for &CompositeDriverMatch
3269 {
3270 unsafe fn encode(
3271 self,
3272 encoder: &mut fidl::encoding::Encoder<'_, D>,
3273 offset: usize,
3274 mut depth: fidl::encoding::Depth,
3275 ) -> fidl::Result<()> {
3276 encoder.debug_check_bounds::<CompositeDriverMatch>(offset);
3277 let max_ordinal: u64 = self.max_ordinal_present();
3279 encoder.write_num(max_ordinal, offset);
3280 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3281 if max_ordinal == 0 {
3283 return Ok(());
3284 }
3285 depth.increment()?;
3286 let envelope_size = 8;
3287 let bytes_len = max_ordinal as usize * envelope_size;
3288 #[allow(unused_variables)]
3289 let offset = encoder.out_of_line_offset(bytes_len);
3290 let mut _prev_end_offset: usize = 0;
3291 if 1 > max_ordinal {
3292 return Ok(());
3293 }
3294
3295 let cur_offset: usize = (1 - 1) * envelope_size;
3298
3299 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3301
3302 fidl::encoding::encode_in_envelope_optional::<CompositeDriverInfo, D>(
3307 self.composite_driver
3308 .as_ref()
3309 .map(<CompositeDriverInfo as fidl::encoding::ValueTypeMarker>::borrow),
3310 encoder,
3311 offset + cur_offset,
3312 depth,
3313 )?;
3314
3315 _prev_end_offset = cur_offset + envelope_size;
3316 if 2 > max_ordinal {
3317 return Ok(());
3318 }
3319
3320 let cur_offset: usize = (2 - 1) * envelope_size;
3323
3324 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3326
3327 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>, D>(
3332 self.parent_names.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString> as fidl::encoding::ValueTypeMarker>::borrow),
3333 encoder, offset + cur_offset, depth
3334 )?;
3335
3336 _prev_end_offset = cur_offset + envelope_size;
3337 if 3 > max_ordinal {
3338 return Ok(());
3339 }
3340
3341 let cur_offset: usize = (3 - 1) * envelope_size;
3344
3345 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3347
3348 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3353 self.primary_parent_index
3354 .as_ref()
3355 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3356 encoder,
3357 offset + cur_offset,
3358 depth,
3359 )?;
3360
3361 _prev_end_offset = cur_offset + envelope_size;
3362
3363 Ok(())
3364 }
3365 }
3366
3367 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeDriverMatch {
3368 #[inline(always)]
3369 fn new_empty() -> Self {
3370 Self::default()
3371 }
3372
3373 unsafe fn decode(
3374 &mut self,
3375 decoder: &mut fidl::encoding::Decoder<'_, D>,
3376 offset: usize,
3377 mut depth: fidl::encoding::Depth,
3378 ) -> fidl::Result<()> {
3379 decoder.debug_check_bounds::<Self>(offset);
3380 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3381 None => return Err(fidl::Error::NotNullable),
3382 Some(len) => len,
3383 };
3384 if len == 0 {
3386 return Ok(());
3387 };
3388 depth.increment()?;
3389 let envelope_size = 8;
3390 let bytes_len = len * envelope_size;
3391 let offset = decoder.out_of_line_offset(bytes_len)?;
3392 let mut _next_ordinal_to_read = 0;
3394 let mut next_offset = offset;
3395 let end_offset = offset + bytes_len;
3396 _next_ordinal_to_read += 1;
3397 if next_offset >= end_offset {
3398 return Ok(());
3399 }
3400
3401 while _next_ordinal_to_read < 1 {
3403 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3404 _next_ordinal_to_read += 1;
3405 next_offset += envelope_size;
3406 }
3407
3408 let next_out_of_line = decoder.next_out_of_line();
3409 let handles_before = decoder.remaining_handles();
3410 if let Some((inlined, num_bytes, num_handles)) =
3411 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3412 {
3413 let member_inline_size =
3414 <CompositeDriverInfo as fidl::encoding::TypeMarker>::inline_size(
3415 decoder.context,
3416 );
3417 if inlined != (member_inline_size <= 4) {
3418 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3419 }
3420 let inner_offset;
3421 let mut inner_depth = depth.clone();
3422 if inlined {
3423 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3424 inner_offset = next_offset;
3425 } else {
3426 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3427 inner_depth.increment()?;
3428 }
3429 let val_ref = self
3430 .composite_driver
3431 .get_or_insert_with(|| fidl::new_empty!(CompositeDriverInfo, D));
3432 fidl::decode!(CompositeDriverInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
3433 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3434 {
3435 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3436 }
3437 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3438 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3439 }
3440 }
3441
3442 next_offset += envelope_size;
3443 _next_ordinal_to_read += 1;
3444 if next_offset >= end_offset {
3445 return Ok(());
3446 }
3447
3448 while _next_ordinal_to_read < 2 {
3450 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3451 _next_ordinal_to_read += 1;
3452 next_offset += envelope_size;
3453 }
3454
3455 let next_out_of_line = decoder.next_out_of_line();
3456 let handles_before = decoder.remaining_handles();
3457 if let Some((inlined, num_bytes, num_handles)) =
3458 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3459 {
3460 let member_inline_size = <fidl::encoding::UnboundedVector<
3461 fidl::encoding::UnboundedString,
3462 > as fidl::encoding::TypeMarker>::inline_size(
3463 decoder.context
3464 );
3465 if inlined != (member_inline_size <= 4) {
3466 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3467 }
3468 let inner_offset;
3469 let mut inner_depth = depth.clone();
3470 if inlined {
3471 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3472 inner_offset = next_offset;
3473 } else {
3474 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3475 inner_depth.increment()?;
3476 }
3477 let val_ref = self.parent_names.get_or_insert_with(|| {
3478 fidl::new_empty!(
3479 fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
3480 D
3481 )
3482 });
3483 fidl::decode!(
3484 fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
3485 D,
3486 val_ref,
3487 decoder,
3488 inner_offset,
3489 inner_depth
3490 )?;
3491 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3492 {
3493 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3494 }
3495 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3496 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3497 }
3498 }
3499
3500 next_offset += envelope_size;
3501 _next_ordinal_to_read += 1;
3502 if next_offset >= end_offset {
3503 return Ok(());
3504 }
3505
3506 while _next_ordinal_to_read < 3 {
3508 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3509 _next_ordinal_to_read += 1;
3510 next_offset += envelope_size;
3511 }
3512
3513 let next_out_of_line = decoder.next_out_of_line();
3514 let handles_before = decoder.remaining_handles();
3515 if let Some((inlined, num_bytes, num_handles)) =
3516 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3517 {
3518 let member_inline_size =
3519 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3520 if inlined != (member_inline_size <= 4) {
3521 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3522 }
3523 let inner_offset;
3524 let mut inner_depth = depth.clone();
3525 if inlined {
3526 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3527 inner_offset = next_offset;
3528 } else {
3529 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3530 inner_depth.increment()?;
3531 }
3532 let val_ref =
3533 self.primary_parent_index.get_or_insert_with(|| fidl::new_empty!(u32, D));
3534 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3535 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3536 {
3537 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3538 }
3539 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3540 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3541 }
3542 }
3543
3544 next_offset += envelope_size;
3545
3546 while next_offset < end_offset {
3548 _next_ordinal_to_read += 1;
3549 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3550 next_offset += envelope_size;
3551 }
3552
3553 Ok(())
3554 }
3555 }
3556
3557 impl CompositeInfo {
3558 #[inline(always)]
3559 fn max_ordinal_present(&self) -> u64 {
3560 if let Some(_) = self.matched_driver {
3561 return 2;
3562 }
3563 if let Some(_) = self.spec {
3564 return 1;
3565 }
3566 0
3567 }
3568 }
3569
3570 impl fidl::encoding::ValueTypeMarker for CompositeInfo {
3571 type Borrowed<'a> = &'a Self;
3572 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3573 value
3574 }
3575 }
3576
3577 unsafe impl fidl::encoding::TypeMarker for CompositeInfo {
3578 type Owned = Self;
3579
3580 #[inline(always)]
3581 fn inline_align(_context: fidl::encoding::Context) -> usize {
3582 8
3583 }
3584
3585 #[inline(always)]
3586 fn inline_size(_context: fidl::encoding::Context) -> usize {
3587 16
3588 }
3589 }
3590
3591 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeInfo, D>
3592 for &CompositeInfo
3593 {
3594 unsafe fn encode(
3595 self,
3596 encoder: &mut fidl::encoding::Encoder<'_, D>,
3597 offset: usize,
3598 mut depth: fidl::encoding::Depth,
3599 ) -> fidl::Result<()> {
3600 encoder.debug_check_bounds::<CompositeInfo>(offset);
3601 let max_ordinal: u64 = self.max_ordinal_present();
3603 encoder.write_num(max_ordinal, offset);
3604 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3605 if max_ordinal == 0 {
3607 return Ok(());
3608 }
3609 depth.increment()?;
3610 let envelope_size = 8;
3611 let bytes_len = max_ordinal as usize * envelope_size;
3612 #[allow(unused_variables)]
3613 let offset = encoder.out_of_line_offset(bytes_len);
3614 let mut _prev_end_offset: usize = 0;
3615 if 1 > max_ordinal {
3616 return Ok(());
3617 }
3618
3619 let cur_offset: usize = (1 - 1) * envelope_size;
3622
3623 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3625
3626 fidl::encoding::encode_in_envelope_optional::<CompositeNodeSpec, D>(
3631 self.spec
3632 .as_ref()
3633 .map(<CompositeNodeSpec as fidl::encoding::ValueTypeMarker>::borrow),
3634 encoder,
3635 offset + cur_offset,
3636 depth,
3637 )?;
3638
3639 _prev_end_offset = cur_offset + envelope_size;
3640 if 2 > max_ordinal {
3641 return Ok(());
3642 }
3643
3644 let cur_offset: usize = (2 - 1) * envelope_size;
3647
3648 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3650
3651 fidl::encoding::encode_in_envelope_optional::<CompositeDriverMatch, D>(
3656 self.matched_driver
3657 .as_ref()
3658 .map(<CompositeDriverMatch as fidl::encoding::ValueTypeMarker>::borrow),
3659 encoder,
3660 offset + cur_offset,
3661 depth,
3662 )?;
3663
3664 _prev_end_offset = cur_offset + envelope_size;
3665
3666 Ok(())
3667 }
3668 }
3669
3670 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeInfo {
3671 #[inline(always)]
3672 fn new_empty() -> Self {
3673 Self::default()
3674 }
3675
3676 unsafe fn decode(
3677 &mut self,
3678 decoder: &mut fidl::encoding::Decoder<'_, D>,
3679 offset: usize,
3680 mut depth: fidl::encoding::Depth,
3681 ) -> fidl::Result<()> {
3682 decoder.debug_check_bounds::<Self>(offset);
3683 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3684 None => return Err(fidl::Error::NotNullable),
3685 Some(len) => len,
3686 };
3687 if len == 0 {
3689 return Ok(());
3690 };
3691 depth.increment()?;
3692 let envelope_size = 8;
3693 let bytes_len = len * envelope_size;
3694 let offset = decoder.out_of_line_offset(bytes_len)?;
3695 let mut _next_ordinal_to_read = 0;
3697 let mut next_offset = offset;
3698 let end_offset = offset + bytes_len;
3699 _next_ordinal_to_read += 1;
3700 if next_offset >= end_offset {
3701 return Ok(());
3702 }
3703
3704 while _next_ordinal_to_read < 1 {
3706 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3707 _next_ordinal_to_read += 1;
3708 next_offset += envelope_size;
3709 }
3710
3711 let next_out_of_line = decoder.next_out_of_line();
3712 let handles_before = decoder.remaining_handles();
3713 if let Some((inlined, num_bytes, num_handles)) =
3714 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3715 {
3716 let member_inline_size =
3717 <CompositeNodeSpec as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3718 if inlined != (member_inline_size <= 4) {
3719 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3720 }
3721 let inner_offset;
3722 let mut inner_depth = depth.clone();
3723 if inlined {
3724 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3725 inner_offset = next_offset;
3726 } else {
3727 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3728 inner_depth.increment()?;
3729 }
3730 let val_ref =
3731 self.spec.get_or_insert_with(|| fidl::new_empty!(CompositeNodeSpec, D));
3732 fidl::decode!(CompositeNodeSpec, D, val_ref, decoder, inner_offset, inner_depth)?;
3733 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3734 {
3735 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3736 }
3737 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3738 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3739 }
3740 }
3741
3742 next_offset += envelope_size;
3743 _next_ordinal_to_read += 1;
3744 if next_offset >= end_offset {
3745 return Ok(());
3746 }
3747
3748 while _next_ordinal_to_read < 2 {
3750 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3751 _next_ordinal_to_read += 1;
3752 next_offset += envelope_size;
3753 }
3754
3755 let next_out_of_line = decoder.next_out_of_line();
3756 let handles_before = decoder.remaining_handles();
3757 if let Some((inlined, num_bytes, num_handles)) =
3758 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3759 {
3760 let member_inline_size =
3761 <CompositeDriverMatch as fidl::encoding::TypeMarker>::inline_size(
3762 decoder.context,
3763 );
3764 if inlined != (member_inline_size <= 4) {
3765 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3766 }
3767 let inner_offset;
3768 let mut inner_depth = depth.clone();
3769 if inlined {
3770 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3771 inner_offset = next_offset;
3772 } else {
3773 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3774 inner_depth.increment()?;
3775 }
3776 let val_ref = self
3777 .matched_driver
3778 .get_or_insert_with(|| fidl::new_empty!(CompositeDriverMatch, D));
3779 fidl::decode!(
3780 CompositeDriverMatch,
3781 D,
3782 val_ref,
3783 decoder,
3784 inner_offset,
3785 inner_depth
3786 )?;
3787 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3788 {
3789 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3790 }
3791 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3792 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3793 }
3794 }
3795
3796 next_offset += envelope_size;
3797
3798 while next_offset < end_offset {
3800 _next_ordinal_to_read += 1;
3801 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3802 next_offset += envelope_size;
3803 }
3804
3805 Ok(())
3806 }
3807 }
3808
3809 impl CompositeNodeSpec {
3810 #[inline(always)]
3811 fn max_ordinal_present(&self) -> u64 {
3812 if let Some(_) = self.driver_host {
3813 return 4;
3814 }
3815 if let Some(_) = self.parents2 {
3816 return 3;
3817 }
3818 if let Some(_) = self.name {
3819 return 1;
3820 }
3821 0
3822 }
3823 }
3824
3825 impl fidl::encoding::ValueTypeMarker for CompositeNodeSpec {
3826 type Borrowed<'a> = &'a Self;
3827 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3828 value
3829 }
3830 }
3831
3832 unsafe impl fidl::encoding::TypeMarker for CompositeNodeSpec {
3833 type Owned = Self;
3834
3835 #[inline(always)]
3836 fn inline_align(_context: fidl::encoding::Context) -> usize {
3837 8
3838 }
3839
3840 #[inline(always)]
3841 fn inline_size(_context: fidl::encoding::Context) -> usize {
3842 16
3843 }
3844 }
3845
3846 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeNodeSpec, D>
3847 for &CompositeNodeSpec
3848 {
3849 unsafe fn encode(
3850 self,
3851 encoder: &mut fidl::encoding::Encoder<'_, D>,
3852 offset: usize,
3853 mut depth: fidl::encoding::Depth,
3854 ) -> fidl::Result<()> {
3855 encoder.debug_check_bounds::<CompositeNodeSpec>(offset);
3856 let max_ordinal: u64 = self.max_ordinal_present();
3858 encoder.write_num(max_ordinal, offset);
3859 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3860 if max_ordinal == 0 {
3862 return Ok(());
3863 }
3864 depth.increment()?;
3865 let envelope_size = 8;
3866 let bytes_len = max_ordinal as usize * envelope_size;
3867 #[allow(unused_variables)]
3868 let offset = encoder.out_of_line_offset(bytes_len);
3869 let mut _prev_end_offset: usize = 0;
3870 if 1 > max_ordinal {
3871 return Ok(());
3872 }
3873
3874 let cur_offset: usize = (1 - 1) * envelope_size;
3877
3878 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3880
3881 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
3886 self.name.as_ref().map(
3887 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
3888 ),
3889 encoder,
3890 offset + cur_offset,
3891 depth,
3892 )?;
3893
3894 _prev_end_offset = cur_offset + envelope_size;
3895 if 3 > max_ordinal {
3896 return Ok(());
3897 }
3898
3899 let cur_offset: usize = (3 - 1) * envelope_size;
3902
3903 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3905
3906 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ParentSpec2>, D>(
3911 self.parents2.as_ref().map(<fidl::encoding::UnboundedVector<ParentSpec2> as fidl::encoding::ValueTypeMarker>::borrow),
3912 encoder, offset + cur_offset, depth
3913 )?;
3914
3915 _prev_end_offset = cur_offset + envelope_size;
3916 if 4 > max_ordinal {
3917 return Ok(());
3918 }
3919
3920 let cur_offset: usize = (4 - 1) * envelope_size;
3923
3924 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3926
3927 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
3932 self.driver_host.as_ref().map(
3933 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
3934 ),
3935 encoder,
3936 offset + cur_offset,
3937 depth,
3938 )?;
3939
3940 _prev_end_offset = cur_offset + envelope_size;
3941
3942 Ok(())
3943 }
3944 }
3945
3946 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeNodeSpec {
3947 #[inline(always)]
3948 fn new_empty() -> Self {
3949 Self::default()
3950 }
3951
3952 unsafe fn decode(
3953 &mut self,
3954 decoder: &mut fidl::encoding::Decoder<'_, D>,
3955 offset: usize,
3956 mut depth: fidl::encoding::Depth,
3957 ) -> fidl::Result<()> {
3958 decoder.debug_check_bounds::<Self>(offset);
3959 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3960 None => return Err(fidl::Error::NotNullable),
3961 Some(len) => len,
3962 };
3963 if len == 0 {
3965 return Ok(());
3966 };
3967 depth.increment()?;
3968 let envelope_size = 8;
3969 let bytes_len = len * envelope_size;
3970 let offset = decoder.out_of_line_offset(bytes_len)?;
3971 let mut _next_ordinal_to_read = 0;
3973 let mut next_offset = offset;
3974 let end_offset = offset + bytes_len;
3975 _next_ordinal_to_read += 1;
3976 if next_offset >= end_offset {
3977 return Ok(());
3978 }
3979
3980 while _next_ordinal_to_read < 1 {
3982 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3983 _next_ordinal_to_read += 1;
3984 next_offset += envelope_size;
3985 }
3986
3987 let next_out_of_line = decoder.next_out_of_line();
3988 let handles_before = decoder.remaining_handles();
3989 if let Some((inlined, num_bytes, num_handles)) =
3990 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3991 {
3992 let member_inline_size =
3993 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
3994 decoder.context,
3995 );
3996 if inlined != (member_inline_size <= 4) {
3997 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3998 }
3999 let inner_offset;
4000 let mut inner_depth = depth.clone();
4001 if inlined {
4002 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4003 inner_offset = next_offset;
4004 } else {
4005 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4006 inner_depth.increment()?;
4007 }
4008 let val_ref = self
4009 .name
4010 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
4011 fidl::decode!(
4012 fidl::encoding::UnboundedString,
4013 D,
4014 val_ref,
4015 decoder,
4016 inner_offset,
4017 inner_depth
4018 )?;
4019 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4020 {
4021 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4022 }
4023 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4024 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4025 }
4026 }
4027
4028 next_offset += envelope_size;
4029 _next_ordinal_to_read += 1;
4030 if next_offset >= end_offset {
4031 return Ok(());
4032 }
4033
4034 while _next_ordinal_to_read < 3 {
4036 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4037 _next_ordinal_to_read += 1;
4038 next_offset += envelope_size;
4039 }
4040
4041 let next_out_of_line = decoder.next_out_of_line();
4042 let handles_before = decoder.remaining_handles();
4043 if let Some((inlined, num_bytes, num_handles)) =
4044 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4045 {
4046 let member_inline_size = <fidl::encoding::UnboundedVector<ParentSpec2> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4047 if inlined != (member_inline_size <= 4) {
4048 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4049 }
4050 let inner_offset;
4051 let mut inner_depth = depth.clone();
4052 if inlined {
4053 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4054 inner_offset = next_offset;
4055 } else {
4056 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4057 inner_depth.increment()?;
4058 }
4059 let val_ref = self.parents2.get_or_insert_with(|| {
4060 fidl::new_empty!(fidl::encoding::UnboundedVector<ParentSpec2>, D)
4061 });
4062 fidl::decode!(
4063 fidl::encoding::UnboundedVector<ParentSpec2>,
4064 D,
4065 val_ref,
4066 decoder,
4067 inner_offset,
4068 inner_depth
4069 )?;
4070 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4071 {
4072 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4073 }
4074 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4075 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4076 }
4077 }
4078
4079 next_offset += envelope_size;
4080 _next_ordinal_to_read += 1;
4081 if next_offset >= end_offset {
4082 return Ok(());
4083 }
4084
4085 while _next_ordinal_to_read < 4 {
4087 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4088 _next_ordinal_to_read += 1;
4089 next_offset += envelope_size;
4090 }
4091
4092 let next_out_of_line = decoder.next_out_of_line();
4093 let handles_before = decoder.remaining_handles();
4094 if let Some((inlined, num_bytes, num_handles)) =
4095 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4096 {
4097 let member_inline_size =
4098 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
4099 decoder.context,
4100 );
4101 if inlined != (member_inline_size <= 4) {
4102 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4103 }
4104 let inner_offset;
4105 let mut inner_depth = depth.clone();
4106 if inlined {
4107 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4108 inner_offset = next_offset;
4109 } else {
4110 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4111 inner_depth.increment()?;
4112 }
4113 let val_ref = self
4114 .driver_host
4115 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
4116 fidl::decode!(
4117 fidl::encoding::BoundedString<128>,
4118 D,
4119 val_ref,
4120 decoder,
4121 inner_offset,
4122 inner_depth
4123 )?;
4124 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4125 {
4126 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4127 }
4128 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4129 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4130 }
4131 }
4132
4133 next_offset += envelope_size;
4134
4135 while next_offset < end_offset {
4137 _next_ordinal_to_read += 1;
4138 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4139 next_offset += envelope_size;
4140 }
4141
4142 Ok(())
4143 }
4144 }
4145
4146 impl CompositeParent {
4147 #[inline(always)]
4148 fn max_ordinal_present(&self) -> u64 {
4149 if let Some(_) = self.index {
4150 return 2;
4151 }
4152 if let Some(_) = self.composite {
4153 return 1;
4154 }
4155 0
4156 }
4157 }
4158
4159 impl fidl::encoding::ValueTypeMarker for CompositeParent {
4160 type Borrowed<'a> = &'a Self;
4161 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4162 value
4163 }
4164 }
4165
4166 unsafe impl fidl::encoding::TypeMarker for CompositeParent {
4167 type Owned = Self;
4168
4169 #[inline(always)]
4170 fn inline_align(_context: fidl::encoding::Context) -> usize {
4171 8
4172 }
4173
4174 #[inline(always)]
4175 fn inline_size(_context: fidl::encoding::Context) -> usize {
4176 16
4177 }
4178 }
4179
4180 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeParent, D>
4181 for &CompositeParent
4182 {
4183 unsafe fn encode(
4184 self,
4185 encoder: &mut fidl::encoding::Encoder<'_, D>,
4186 offset: usize,
4187 mut depth: fidl::encoding::Depth,
4188 ) -> fidl::Result<()> {
4189 encoder.debug_check_bounds::<CompositeParent>(offset);
4190 let max_ordinal: u64 = self.max_ordinal_present();
4192 encoder.write_num(max_ordinal, offset);
4193 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4194 if max_ordinal == 0 {
4196 return Ok(());
4197 }
4198 depth.increment()?;
4199 let envelope_size = 8;
4200 let bytes_len = max_ordinal as usize * envelope_size;
4201 #[allow(unused_variables)]
4202 let offset = encoder.out_of_line_offset(bytes_len);
4203 let mut _prev_end_offset: usize = 0;
4204 if 1 > max_ordinal {
4205 return Ok(());
4206 }
4207
4208 let cur_offset: usize = (1 - 1) * envelope_size;
4211
4212 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4214
4215 fidl::encoding::encode_in_envelope_optional::<CompositeInfo, D>(
4220 self.composite
4221 .as_ref()
4222 .map(<CompositeInfo as fidl::encoding::ValueTypeMarker>::borrow),
4223 encoder,
4224 offset + cur_offset,
4225 depth,
4226 )?;
4227
4228 _prev_end_offset = cur_offset + envelope_size;
4229 if 2 > max_ordinal {
4230 return Ok(());
4231 }
4232
4233 let cur_offset: usize = (2 - 1) * envelope_size;
4236
4237 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4239
4240 fidl::encoding::encode_in_envelope_optional::<u32, D>(
4245 self.index.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4246 encoder,
4247 offset + cur_offset,
4248 depth,
4249 )?;
4250
4251 _prev_end_offset = cur_offset + envelope_size;
4252
4253 Ok(())
4254 }
4255 }
4256
4257 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeParent {
4258 #[inline(always)]
4259 fn new_empty() -> Self {
4260 Self::default()
4261 }
4262
4263 unsafe fn decode(
4264 &mut self,
4265 decoder: &mut fidl::encoding::Decoder<'_, D>,
4266 offset: usize,
4267 mut depth: fidl::encoding::Depth,
4268 ) -> fidl::Result<()> {
4269 decoder.debug_check_bounds::<Self>(offset);
4270 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4271 None => return Err(fidl::Error::NotNullable),
4272 Some(len) => len,
4273 };
4274 if len == 0 {
4276 return Ok(());
4277 };
4278 depth.increment()?;
4279 let envelope_size = 8;
4280 let bytes_len = len * envelope_size;
4281 let offset = decoder.out_of_line_offset(bytes_len)?;
4282 let mut _next_ordinal_to_read = 0;
4284 let mut next_offset = offset;
4285 let end_offset = offset + bytes_len;
4286 _next_ordinal_to_read += 1;
4287 if next_offset >= end_offset {
4288 return Ok(());
4289 }
4290
4291 while _next_ordinal_to_read < 1 {
4293 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4294 _next_ordinal_to_read += 1;
4295 next_offset += envelope_size;
4296 }
4297
4298 let next_out_of_line = decoder.next_out_of_line();
4299 let handles_before = decoder.remaining_handles();
4300 if let Some((inlined, num_bytes, num_handles)) =
4301 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4302 {
4303 let member_inline_size =
4304 <CompositeInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4305 if inlined != (member_inline_size <= 4) {
4306 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4307 }
4308 let inner_offset;
4309 let mut inner_depth = depth.clone();
4310 if inlined {
4311 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4312 inner_offset = next_offset;
4313 } else {
4314 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4315 inner_depth.increment()?;
4316 }
4317 let val_ref =
4318 self.composite.get_or_insert_with(|| fidl::new_empty!(CompositeInfo, D));
4319 fidl::decode!(CompositeInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
4320 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4321 {
4322 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4323 }
4324 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4325 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4326 }
4327 }
4328
4329 next_offset += envelope_size;
4330 _next_ordinal_to_read += 1;
4331 if next_offset >= end_offset {
4332 return Ok(());
4333 }
4334
4335 while _next_ordinal_to_read < 2 {
4337 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4338 _next_ordinal_to_read += 1;
4339 next_offset += envelope_size;
4340 }
4341
4342 let next_out_of_line = decoder.next_out_of_line();
4343 let handles_before = decoder.remaining_handles();
4344 if let Some((inlined, num_bytes, num_handles)) =
4345 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4346 {
4347 let member_inline_size =
4348 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4349 if inlined != (member_inline_size <= 4) {
4350 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4351 }
4352 let inner_offset;
4353 let mut inner_depth = depth.clone();
4354 if inlined {
4355 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4356 inner_offset = next_offset;
4357 } else {
4358 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4359 inner_depth.increment()?;
4360 }
4361 let val_ref = self.index.get_or_insert_with(|| fidl::new_empty!(u32, D));
4362 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4363 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4364 {
4365 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4366 }
4367 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4368 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4369 }
4370 }
4371
4372 next_offset += envelope_size;
4373
4374 while next_offset < end_offset {
4376 _next_ordinal_to_read += 1;
4377 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4378 next_offset += envelope_size;
4379 }
4380
4381 Ok(())
4382 }
4383 }
4384
4385 impl Dependency {
4386 #[inline(always)]
4387 fn max_ordinal_present(&self) -> u64 {
4388 if let Some(_) = self.tags {
4389 return 2;
4390 }
4391 if let Some(_) = self.selector {
4392 return 1;
4393 }
4394 0
4395 }
4396 }
4397
4398 impl fidl::encoding::ValueTypeMarker for Dependency {
4399 type Borrowed<'a> = &'a Self;
4400 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4401 value
4402 }
4403 }
4404
4405 unsafe impl fidl::encoding::TypeMarker for Dependency {
4406 type Owned = Self;
4407
4408 #[inline(always)]
4409 fn inline_align(_context: fidl::encoding::Context) -> usize {
4410 8
4411 }
4412
4413 #[inline(always)]
4414 fn inline_size(_context: fidl::encoding::Context) -> usize {
4415 16
4416 }
4417 }
4418
4419 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Dependency, D>
4420 for &Dependency
4421 {
4422 unsafe fn encode(
4423 self,
4424 encoder: &mut fidl::encoding::Encoder<'_, D>,
4425 offset: usize,
4426 mut depth: fidl::encoding::Depth,
4427 ) -> fidl::Result<()> {
4428 encoder.debug_check_bounds::<Dependency>(offset);
4429 let max_ordinal: u64 = self.max_ordinal_present();
4431 encoder.write_num(max_ordinal, offset);
4432 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4433 if max_ordinal == 0 {
4435 return Ok(());
4436 }
4437 depth.increment()?;
4438 let envelope_size = 8;
4439 let bytes_len = max_ordinal as usize * envelope_size;
4440 #[allow(unused_variables)]
4441 let offset = encoder.out_of_line_offset(bytes_len);
4442 let mut _prev_end_offset: usize = 0;
4443 if 1 > max_ordinal {
4444 return Ok(());
4445 }
4446
4447 let cur_offset: usize = (1 - 1) * envelope_size;
4450
4451 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4453
4454 fidl::encoding::encode_in_envelope_optional::<Selector, D>(
4459 self.selector.as_ref().map(<Selector as fidl::encoding::ValueTypeMarker>::borrow),
4460 encoder,
4461 offset + cur_offset,
4462 depth,
4463 )?;
4464
4465 _prev_end_offset = cur_offset + envelope_size;
4466 if 2 > max_ordinal {
4467 return Ok(());
4468 }
4469
4470 let cur_offset: usize = (2 - 1) * envelope_size;
4473
4474 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4476
4477 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ResourceProperty, 64>, D>(
4482 self.tags.as_ref().map(<fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
4483 encoder, offset + cur_offset, depth
4484 )?;
4485
4486 _prev_end_offset = cur_offset + envelope_size;
4487
4488 Ok(())
4489 }
4490 }
4491
4492 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dependency {
4493 #[inline(always)]
4494 fn new_empty() -> Self {
4495 Self::default()
4496 }
4497
4498 unsafe fn decode(
4499 &mut self,
4500 decoder: &mut fidl::encoding::Decoder<'_, D>,
4501 offset: usize,
4502 mut depth: fidl::encoding::Depth,
4503 ) -> fidl::Result<()> {
4504 decoder.debug_check_bounds::<Self>(offset);
4505 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4506 None => return Err(fidl::Error::NotNullable),
4507 Some(len) => len,
4508 };
4509 if len == 0 {
4511 return Ok(());
4512 };
4513 depth.increment()?;
4514 let envelope_size = 8;
4515 let bytes_len = len * envelope_size;
4516 let offset = decoder.out_of_line_offset(bytes_len)?;
4517 let mut _next_ordinal_to_read = 0;
4519 let mut next_offset = offset;
4520 let end_offset = offset + bytes_len;
4521 _next_ordinal_to_read += 1;
4522 if next_offset >= end_offset {
4523 return Ok(());
4524 }
4525
4526 while _next_ordinal_to_read < 1 {
4528 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4529 _next_ordinal_to_read += 1;
4530 next_offset += envelope_size;
4531 }
4532
4533 let next_out_of_line = decoder.next_out_of_line();
4534 let handles_before = decoder.remaining_handles();
4535 if let Some((inlined, num_bytes, num_handles)) =
4536 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4537 {
4538 let member_inline_size =
4539 <Selector as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4540 if inlined != (member_inline_size <= 4) {
4541 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4542 }
4543 let inner_offset;
4544 let mut inner_depth = depth.clone();
4545 if inlined {
4546 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4547 inner_offset = next_offset;
4548 } else {
4549 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4550 inner_depth.increment()?;
4551 }
4552 let val_ref = self.selector.get_or_insert_with(|| fidl::new_empty!(Selector, D));
4553 fidl::decode!(Selector, D, val_ref, decoder, inner_offset, inner_depth)?;
4554 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4555 {
4556 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4557 }
4558 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4559 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4560 }
4561 }
4562
4563 next_offset += envelope_size;
4564 _next_ordinal_to_read += 1;
4565 if next_offset >= end_offset {
4566 return Ok(());
4567 }
4568
4569 while _next_ordinal_to_read < 2 {
4571 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4572 _next_ordinal_to_read += 1;
4573 next_offset += envelope_size;
4574 }
4575
4576 let next_out_of_line = decoder.next_out_of_line();
4577 let handles_before = decoder.remaining_handles();
4578 if let Some((inlined, num_bytes, num_handles)) =
4579 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4580 {
4581 let member_inline_size = <fidl::encoding::Vector<ResourceProperty, 64> 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 = self.tags.get_or_insert_with(
4595 || fidl::new_empty!(fidl::encoding::Vector<ResourceProperty, 64>, D),
4596 );
4597 fidl::decode!(fidl::encoding::Vector<ResourceProperty, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
4598 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4599 {
4600 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4601 }
4602 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4603 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4604 }
4605 }
4606
4607 next_offset += envelope_size;
4608
4609 while next_offset < end_offset {
4611 _next_ordinal_to_read += 1;
4612 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4613 next_offset += envelope_size;
4614 }
4615
4616 Ok(())
4617 }
4618 }
4619
4620 impl DeviceCategory {
4621 #[inline(always)]
4622 fn max_ordinal_present(&self) -> u64 {
4623 if let Some(_) = self.subcategory {
4624 return 2;
4625 }
4626 if let Some(_) = self.category {
4627 return 1;
4628 }
4629 0
4630 }
4631 }
4632
4633 impl fidl::encoding::ValueTypeMarker for DeviceCategory {
4634 type Borrowed<'a> = &'a Self;
4635 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4636 value
4637 }
4638 }
4639
4640 unsafe impl fidl::encoding::TypeMarker for DeviceCategory {
4641 type Owned = Self;
4642
4643 #[inline(always)]
4644 fn inline_align(_context: fidl::encoding::Context) -> usize {
4645 8
4646 }
4647
4648 #[inline(always)]
4649 fn inline_size(_context: fidl::encoding::Context) -> usize {
4650 16
4651 }
4652 }
4653
4654 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceCategory, D>
4655 for &DeviceCategory
4656 {
4657 unsafe fn encode(
4658 self,
4659 encoder: &mut fidl::encoding::Encoder<'_, D>,
4660 offset: usize,
4661 mut depth: fidl::encoding::Depth,
4662 ) -> fidl::Result<()> {
4663 encoder.debug_check_bounds::<DeviceCategory>(offset);
4664 let max_ordinal: u64 = self.max_ordinal_present();
4666 encoder.write_num(max_ordinal, offset);
4667 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4668 if max_ordinal == 0 {
4670 return Ok(());
4671 }
4672 depth.increment()?;
4673 let envelope_size = 8;
4674 let bytes_len = max_ordinal as usize * envelope_size;
4675 #[allow(unused_variables)]
4676 let offset = encoder.out_of_line_offset(bytes_len);
4677 let mut _prev_end_offset: usize = 0;
4678 if 1 > max_ordinal {
4679 return Ok(());
4680 }
4681
4682 let cur_offset: usize = (1 - 1) * envelope_size;
4685
4686 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4688
4689 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4694 self.category.as_ref().map(
4695 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4696 ),
4697 encoder,
4698 offset + cur_offset,
4699 depth,
4700 )?;
4701
4702 _prev_end_offset = cur_offset + envelope_size;
4703 if 2 > max_ordinal {
4704 return Ok(());
4705 }
4706
4707 let cur_offset: usize = (2 - 1) * envelope_size;
4710
4711 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4713
4714 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4719 self.subcategory.as_ref().map(
4720 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4721 ),
4722 encoder,
4723 offset + cur_offset,
4724 depth,
4725 )?;
4726
4727 _prev_end_offset = cur_offset + envelope_size;
4728
4729 Ok(())
4730 }
4731 }
4732
4733 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceCategory {
4734 #[inline(always)]
4735 fn new_empty() -> Self {
4736 Self::default()
4737 }
4738
4739 unsafe fn decode(
4740 &mut self,
4741 decoder: &mut fidl::encoding::Decoder<'_, D>,
4742 offset: usize,
4743 mut depth: fidl::encoding::Depth,
4744 ) -> fidl::Result<()> {
4745 decoder.debug_check_bounds::<Self>(offset);
4746 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4747 None => return Err(fidl::Error::NotNullable),
4748 Some(len) => len,
4749 };
4750 if len == 0 {
4752 return Ok(());
4753 };
4754 depth.increment()?;
4755 let envelope_size = 8;
4756 let bytes_len = len * envelope_size;
4757 let offset = decoder.out_of_line_offset(bytes_len)?;
4758 let mut _next_ordinal_to_read = 0;
4760 let mut next_offset = offset;
4761 let end_offset = offset + bytes_len;
4762 _next_ordinal_to_read += 1;
4763 if next_offset >= end_offset {
4764 return Ok(());
4765 }
4766
4767 while _next_ordinal_to_read < 1 {
4769 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4770 _next_ordinal_to_read += 1;
4771 next_offset += envelope_size;
4772 }
4773
4774 let next_out_of_line = decoder.next_out_of_line();
4775 let handles_before = decoder.remaining_handles();
4776 if let Some((inlined, num_bytes, num_handles)) =
4777 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4778 {
4779 let member_inline_size =
4780 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4781 decoder.context,
4782 );
4783 if inlined != (member_inline_size <= 4) {
4784 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4785 }
4786 let inner_offset;
4787 let mut inner_depth = depth.clone();
4788 if inlined {
4789 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4790 inner_offset = next_offset;
4791 } else {
4792 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4793 inner_depth.increment()?;
4794 }
4795 let val_ref = self
4796 .category
4797 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
4798 fidl::decode!(
4799 fidl::encoding::UnboundedString,
4800 D,
4801 val_ref,
4802 decoder,
4803 inner_offset,
4804 inner_depth
4805 )?;
4806 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4807 {
4808 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4809 }
4810 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4811 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4812 }
4813 }
4814
4815 next_offset += envelope_size;
4816 _next_ordinal_to_read += 1;
4817 if next_offset >= end_offset {
4818 return Ok(());
4819 }
4820
4821 while _next_ordinal_to_read < 2 {
4823 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4824 _next_ordinal_to_read += 1;
4825 next_offset += envelope_size;
4826 }
4827
4828 let next_out_of_line = decoder.next_out_of_line();
4829 let handles_before = decoder.remaining_handles();
4830 if let Some((inlined, num_bytes, num_handles)) =
4831 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4832 {
4833 let member_inline_size =
4834 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4835 decoder.context,
4836 );
4837 if inlined != (member_inline_size <= 4) {
4838 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4839 }
4840 let inner_offset;
4841 let mut inner_depth = depth.clone();
4842 if inlined {
4843 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4844 inner_offset = next_offset;
4845 } else {
4846 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4847 inner_depth.increment()?;
4848 }
4849 let val_ref = self
4850 .subcategory
4851 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
4852 fidl::decode!(
4853 fidl::encoding::UnboundedString,
4854 D,
4855 val_ref,
4856 decoder,
4857 inner_offset,
4858 inner_depth
4859 )?;
4860 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4861 {
4862 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4863 }
4864 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4865 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4866 }
4867 }
4868
4869 next_offset += envelope_size;
4870
4871 while next_offset < end_offset {
4873 _next_ordinal_to_read += 1;
4874 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4875 next_offset += envelope_size;
4876 }
4877
4878 Ok(())
4879 }
4880 }
4881
4882 impl DriverInfo {
4883 #[inline(always)]
4884 fn max_ordinal_present(&self) -> u64 {
4885 if let Some(_) = self.is_disabled {
4886 return 9;
4887 }
4888 if let Some(_) = self.driver_framework_version {
4889 return 8;
4890 }
4891 if let Some(_) = self.bind_rules_bytecode {
4892 return 7;
4893 }
4894 if let Some(_) = self.device_categories {
4895 return 6;
4896 }
4897 if let Some(_) = self.is_fallback {
4898 return 5;
4899 }
4900 if let Some(_) = self.package_type {
4901 return 4;
4902 }
4903 if let Some(_) = self.colocate {
4904 return 3;
4905 }
4906 if let Some(_) = self.name {
4907 return 2;
4908 }
4909 if let Some(_) = self.url {
4910 return 1;
4911 }
4912 0
4913 }
4914 }
4915
4916 impl fidl::encoding::ValueTypeMarker for DriverInfo {
4917 type Borrowed<'a> = &'a Self;
4918 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4919 value
4920 }
4921 }
4922
4923 unsafe impl fidl::encoding::TypeMarker for DriverInfo {
4924 type Owned = Self;
4925
4926 #[inline(always)]
4927 fn inline_align(_context: fidl::encoding::Context) -> usize {
4928 8
4929 }
4930
4931 #[inline(always)]
4932 fn inline_size(_context: fidl::encoding::Context) -> usize {
4933 16
4934 }
4935 }
4936
4937 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DriverInfo, D>
4938 for &DriverInfo
4939 {
4940 unsafe fn encode(
4941 self,
4942 encoder: &mut fidl::encoding::Encoder<'_, D>,
4943 offset: usize,
4944 mut depth: fidl::encoding::Depth,
4945 ) -> fidl::Result<()> {
4946 encoder.debug_check_bounds::<DriverInfo>(offset);
4947 let max_ordinal: u64 = self.max_ordinal_present();
4949 encoder.write_num(max_ordinal, offset);
4950 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4951 if max_ordinal == 0 {
4953 return Ok(());
4954 }
4955 depth.increment()?;
4956 let envelope_size = 8;
4957 let bytes_len = max_ordinal as usize * envelope_size;
4958 #[allow(unused_variables)]
4959 let offset = encoder.out_of_line_offset(bytes_len);
4960 let mut _prev_end_offset: usize = 0;
4961 if 1 > max_ordinal {
4962 return Ok(());
4963 }
4964
4965 let cur_offset: usize = (1 - 1) * envelope_size;
4968
4969 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4971
4972 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
4977 self.url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
4978 encoder, offset + cur_offset, depth
4979 )?;
4980
4981 _prev_end_offset = cur_offset + envelope_size;
4982 if 2 > max_ordinal {
4983 return Ok(());
4984 }
4985
4986 let cur_offset: usize = (2 - 1) * envelope_size;
4989
4990 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4992
4993 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4998 self.name.as_ref().map(
4999 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
5000 ),
5001 encoder,
5002 offset + cur_offset,
5003 depth,
5004 )?;
5005
5006 _prev_end_offset = cur_offset + envelope_size;
5007 if 3 > max_ordinal {
5008 return Ok(());
5009 }
5010
5011 let cur_offset: usize = (3 - 1) * envelope_size;
5014
5015 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5017
5018 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5023 self.colocate.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5024 encoder,
5025 offset + cur_offset,
5026 depth,
5027 )?;
5028
5029 _prev_end_offset = cur_offset + envelope_size;
5030 if 4 > max_ordinal {
5031 return Ok(());
5032 }
5033
5034 let cur_offset: usize = (4 - 1) * envelope_size;
5037
5038 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5040
5041 fidl::encoding::encode_in_envelope_optional::<DriverPackageType, D>(
5046 self.package_type
5047 .as_ref()
5048 .map(<DriverPackageType as fidl::encoding::ValueTypeMarker>::borrow),
5049 encoder,
5050 offset + cur_offset,
5051 depth,
5052 )?;
5053
5054 _prev_end_offset = cur_offset + envelope_size;
5055 if 5 > max_ordinal {
5056 return Ok(());
5057 }
5058
5059 let cur_offset: usize = (5 - 1) * envelope_size;
5062
5063 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5065
5066 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5071 self.is_fallback.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5072 encoder,
5073 offset + cur_offset,
5074 depth,
5075 )?;
5076
5077 _prev_end_offset = cur_offset + envelope_size;
5078 if 6 > max_ordinal {
5079 return Ok(());
5080 }
5081
5082 let cur_offset: usize = (6 - 1) * envelope_size;
5085
5086 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5088
5089 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<DeviceCategory>, D>(
5094 self.device_categories.as_ref().map(<fidl::encoding::UnboundedVector<DeviceCategory> as fidl::encoding::ValueTypeMarker>::borrow),
5095 encoder, offset + cur_offset, depth
5096 )?;
5097
5098 _prev_end_offset = cur_offset + envelope_size;
5099 if 7 > max_ordinal {
5100 return Ok(());
5101 }
5102
5103 let cur_offset: usize = (7 - 1) * envelope_size;
5106
5107 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5109
5110 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
5115 self.bind_rules_bytecode.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
5116 encoder, offset + cur_offset, depth
5117 )?;
5118
5119 _prev_end_offset = cur_offset + envelope_size;
5120 if 8 > max_ordinal {
5121 return Ok(());
5122 }
5123
5124 let cur_offset: usize = (8 - 1) * envelope_size;
5127
5128 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5130
5131 fidl::encoding::encode_in_envelope_optional::<u8, D>(
5136 self.driver_framework_version
5137 .as_ref()
5138 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
5139 encoder,
5140 offset + cur_offset,
5141 depth,
5142 )?;
5143
5144 _prev_end_offset = cur_offset + envelope_size;
5145 if 9 > max_ordinal {
5146 return Ok(());
5147 }
5148
5149 let cur_offset: usize = (9 - 1) * envelope_size;
5152
5153 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5155
5156 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5161 self.is_disabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5162 encoder,
5163 offset + cur_offset,
5164 depth,
5165 )?;
5166
5167 _prev_end_offset = cur_offset + envelope_size;
5168
5169 Ok(())
5170 }
5171 }
5172
5173 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DriverInfo {
5174 #[inline(always)]
5175 fn new_empty() -> Self {
5176 Self::default()
5177 }
5178
5179 unsafe fn decode(
5180 &mut self,
5181 decoder: &mut fidl::encoding::Decoder<'_, D>,
5182 offset: usize,
5183 mut depth: fidl::encoding::Depth,
5184 ) -> fidl::Result<()> {
5185 decoder.debug_check_bounds::<Self>(offset);
5186 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5187 None => return Err(fidl::Error::NotNullable),
5188 Some(len) => len,
5189 };
5190 if len == 0 {
5192 return Ok(());
5193 };
5194 depth.increment()?;
5195 let envelope_size = 8;
5196 let bytes_len = len * envelope_size;
5197 let offset = decoder.out_of_line_offset(bytes_len)?;
5198 let mut _next_ordinal_to_read = 0;
5200 let mut next_offset = offset;
5201 let end_offset = offset + bytes_len;
5202 _next_ordinal_to_read += 1;
5203 if next_offset >= end_offset {
5204 return Ok(());
5205 }
5206
5207 while _next_ordinal_to_read < 1 {
5209 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5210 _next_ordinal_to_read += 1;
5211 next_offset += envelope_size;
5212 }
5213
5214 let next_out_of_line = decoder.next_out_of_line();
5215 let handles_before = decoder.remaining_handles();
5216 if let Some((inlined, num_bytes, num_handles)) =
5217 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5218 {
5219 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5220 if inlined != (member_inline_size <= 4) {
5221 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5222 }
5223 let inner_offset;
5224 let mut inner_depth = depth.clone();
5225 if inlined {
5226 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5227 inner_offset = next_offset;
5228 } else {
5229 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5230 inner_depth.increment()?;
5231 }
5232 let val_ref = self.url.get_or_insert_with(|| {
5233 fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
5234 });
5235 fidl::decode!(
5236 fidl::encoding::BoundedString<4096>,
5237 D,
5238 val_ref,
5239 decoder,
5240 inner_offset,
5241 inner_depth
5242 )?;
5243 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5244 {
5245 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5246 }
5247 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5248 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5249 }
5250 }
5251
5252 next_offset += envelope_size;
5253 _next_ordinal_to_read += 1;
5254 if next_offset >= end_offset {
5255 return Ok(());
5256 }
5257
5258 while _next_ordinal_to_read < 2 {
5260 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5261 _next_ordinal_to_read += 1;
5262 next_offset += envelope_size;
5263 }
5264
5265 let next_out_of_line = decoder.next_out_of_line();
5266 let handles_before = decoder.remaining_handles();
5267 if let Some((inlined, num_bytes, num_handles)) =
5268 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5269 {
5270 let member_inline_size =
5271 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
5272 decoder.context,
5273 );
5274 if inlined != (member_inline_size <= 4) {
5275 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5276 }
5277 let inner_offset;
5278 let mut inner_depth = depth.clone();
5279 if inlined {
5280 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5281 inner_offset = next_offset;
5282 } else {
5283 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5284 inner_depth.increment()?;
5285 }
5286 let val_ref = self
5287 .name
5288 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
5289 fidl::decode!(
5290 fidl::encoding::UnboundedString,
5291 D,
5292 val_ref,
5293 decoder,
5294 inner_offset,
5295 inner_depth
5296 )?;
5297 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5298 {
5299 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5300 }
5301 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5302 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5303 }
5304 }
5305
5306 next_offset += envelope_size;
5307 _next_ordinal_to_read += 1;
5308 if next_offset >= end_offset {
5309 return Ok(());
5310 }
5311
5312 while _next_ordinal_to_read < 3 {
5314 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5315 _next_ordinal_to_read += 1;
5316 next_offset += envelope_size;
5317 }
5318
5319 let next_out_of_line = decoder.next_out_of_line();
5320 let handles_before = decoder.remaining_handles();
5321 if let Some((inlined, num_bytes, num_handles)) =
5322 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5323 {
5324 let member_inline_size =
5325 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5326 if inlined != (member_inline_size <= 4) {
5327 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5328 }
5329 let inner_offset;
5330 let mut inner_depth = depth.clone();
5331 if inlined {
5332 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5333 inner_offset = next_offset;
5334 } else {
5335 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5336 inner_depth.increment()?;
5337 }
5338 let val_ref = self.colocate.get_or_insert_with(|| fidl::new_empty!(bool, D));
5339 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5340 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5341 {
5342 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5343 }
5344 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5345 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5346 }
5347 }
5348
5349 next_offset += envelope_size;
5350 _next_ordinal_to_read += 1;
5351 if next_offset >= end_offset {
5352 return Ok(());
5353 }
5354
5355 while _next_ordinal_to_read < 4 {
5357 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5358 _next_ordinal_to_read += 1;
5359 next_offset += envelope_size;
5360 }
5361
5362 let next_out_of_line = decoder.next_out_of_line();
5363 let handles_before = decoder.remaining_handles();
5364 if let Some((inlined, num_bytes, num_handles)) =
5365 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5366 {
5367 let member_inline_size =
5368 <DriverPackageType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5369 if inlined != (member_inline_size <= 4) {
5370 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5371 }
5372 let inner_offset;
5373 let mut inner_depth = depth.clone();
5374 if inlined {
5375 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5376 inner_offset = next_offset;
5377 } else {
5378 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5379 inner_depth.increment()?;
5380 }
5381 let val_ref =
5382 self.package_type.get_or_insert_with(|| fidl::new_empty!(DriverPackageType, D));
5383 fidl::decode!(DriverPackageType, D, val_ref, decoder, inner_offset, inner_depth)?;
5384 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5385 {
5386 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5387 }
5388 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5389 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5390 }
5391 }
5392
5393 next_offset += envelope_size;
5394 _next_ordinal_to_read += 1;
5395 if next_offset >= end_offset {
5396 return Ok(());
5397 }
5398
5399 while _next_ordinal_to_read < 5 {
5401 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5402 _next_ordinal_to_read += 1;
5403 next_offset += envelope_size;
5404 }
5405
5406 let next_out_of_line = decoder.next_out_of_line();
5407 let handles_before = decoder.remaining_handles();
5408 if let Some((inlined, num_bytes, num_handles)) =
5409 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5410 {
5411 let member_inline_size =
5412 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5413 if inlined != (member_inline_size <= 4) {
5414 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5415 }
5416 let inner_offset;
5417 let mut inner_depth = depth.clone();
5418 if inlined {
5419 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5420 inner_offset = next_offset;
5421 } else {
5422 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5423 inner_depth.increment()?;
5424 }
5425 let val_ref = self.is_fallback.get_or_insert_with(|| fidl::new_empty!(bool, D));
5426 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5427 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5428 {
5429 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5430 }
5431 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5432 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5433 }
5434 }
5435
5436 next_offset += envelope_size;
5437 _next_ordinal_to_read += 1;
5438 if next_offset >= end_offset {
5439 return Ok(());
5440 }
5441
5442 while _next_ordinal_to_read < 6 {
5444 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5445 _next_ordinal_to_read += 1;
5446 next_offset += envelope_size;
5447 }
5448
5449 let next_out_of_line = decoder.next_out_of_line();
5450 let handles_before = decoder.remaining_handles();
5451 if let Some((inlined, num_bytes, num_handles)) =
5452 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5453 {
5454 let member_inline_size = <fidl::encoding::UnboundedVector<DeviceCategory> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5455 if inlined != (member_inline_size <= 4) {
5456 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5457 }
5458 let inner_offset;
5459 let mut inner_depth = depth.clone();
5460 if inlined {
5461 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5462 inner_offset = next_offset;
5463 } else {
5464 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5465 inner_depth.increment()?;
5466 }
5467 let val_ref = self.device_categories.get_or_insert_with(|| {
5468 fidl::new_empty!(fidl::encoding::UnboundedVector<DeviceCategory>, D)
5469 });
5470 fidl::decode!(
5471 fidl::encoding::UnboundedVector<DeviceCategory>,
5472 D,
5473 val_ref,
5474 decoder,
5475 inner_offset,
5476 inner_depth
5477 )?;
5478 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5479 {
5480 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5481 }
5482 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5483 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5484 }
5485 }
5486
5487 next_offset += envelope_size;
5488 _next_ordinal_to_read += 1;
5489 if next_offset >= end_offset {
5490 return Ok(());
5491 }
5492
5493 while _next_ordinal_to_read < 7 {
5495 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5496 _next_ordinal_to_read += 1;
5497 next_offset += envelope_size;
5498 }
5499
5500 let next_out_of_line = decoder.next_out_of_line();
5501 let handles_before = decoder.remaining_handles();
5502 if let Some((inlined, num_bytes, num_handles)) =
5503 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5504 {
5505 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5506 if inlined != (member_inline_size <= 4) {
5507 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5508 }
5509 let inner_offset;
5510 let mut inner_depth = depth.clone();
5511 if inlined {
5512 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5513 inner_offset = next_offset;
5514 } else {
5515 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5516 inner_depth.increment()?;
5517 }
5518 let val_ref = self.bind_rules_bytecode.get_or_insert_with(|| {
5519 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
5520 });
5521 fidl::decode!(
5522 fidl::encoding::UnboundedVector<u8>,
5523 D,
5524 val_ref,
5525 decoder,
5526 inner_offset,
5527 inner_depth
5528 )?;
5529 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5530 {
5531 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5532 }
5533 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5534 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5535 }
5536 }
5537
5538 next_offset += envelope_size;
5539 _next_ordinal_to_read += 1;
5540 if next_offset >= end_offset {
5541 return Ok(());
5542 }
5543
5544 while _next_ordinal_to_read < 8 {
5546 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5547 _next_ordinal_to_read += 1;
5548 next_offset += envelope_size;
5549 }
5550
5551 let next_out_of_line = decoder.next_out_of_line();
5552 let handles_before = decoder.remaining_handles();
5553 if let Some((inlined, num_bytes, num_handles)) =
5554 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5555 {
5556 let member_inline_size =
5557 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5558 if inlined != (member_inline_size <= 4) {
5559 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5560 }
5561 let inner_offset;
5562 let mut inner_depth = depth.clone();
5563 if inlined {
5564 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5565 inner_offset = next_offset;
5566 } else {
5567 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5568 inner_depth.increment()?;
5569 }
5570 let val_ref =
5571 self.driver_framework_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
5572 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
5573 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5574 {
5575 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5576 }
5577 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5578 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5579 }
5580 }
5581
5582 next_offset += envelope_size;
5583 _next_ordinal_to_read += 1;
5584 if next_offset >= end_offset {
5585 return Ok(());
5586 }
5587
5588 while _next_ordinal_to_read < 9 {
5590 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5591 _next_ordinal_to_read += 1;
5592 next_offset += envelope_size;
5593 }
5594
5595 let next_out_of_line = decoder.next_out_of_line();
5596 let handles_before = decoder.remaining_handles();
5597 if let Some((inlined, num_bytes, num_handles)) =
5598 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5599 {
5600 let member_inline_size =
5601 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5602 if inlined != (member_inline_size <= 4) {
5603 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5604 }
5605 let inner_offset;
5606 let mut inner_depth = depth.clone();
5607 if inlined {
5608 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5609 inner_offset = next_offset;
5610 } else {
5611 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5612 inner_depth.increment()?;
5613 }
5614 let val_ref = self.is_disabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
5615 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5616 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5617 {
5618 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5619 }
5620 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5621 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5622 }
5623 }
5624
5625 next_offset += envelope_size;
5626
5627 while next_offset < end_offset {
5629 _next_ordinal_to_read += 1;
5630 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5631 next_offset += envelope_size;
5632 }
5633
5634 Ok(())
5635 }
5636 }
5637
5638 impl HealthCheckResponse {
5639 #[inline(always)]
5640 fn max_ordinal_present(&self) -> u64 {
5641 if let Some(_) = self.conditions {
5642 return 2;
5643 }
5644 if let Some(_) = self.diagnostics {
5645 return 1;
5646 }
5647 0
5648 }
5649 }
5650
5651 impl fidl::encoding::ValueTypeMarker for HealthCheckResponse {
5652 type Borrowed<'a> = &'a Self;
5653 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5654 value
5655 }
5656 }
5657
5658 unsafe impl fidl::encoding::TypeMarker for HealthCheckResponse {
5659 type Owned = Self;
5660
5661 #[inline(always)]
5662 fn inline_align(_context: fidl::encoding::Context) -> usize {
5663 8
5664 }
5665
5666 #[inline(always)]
5667 fn inline_size(_context: fidl::encoding::Context) -> usize {
5668 16
5669 }
5670 }
5671
5672 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HealthCheckResponse, D>
5673 for &HealthCheckResponse
5674 {
5675 unsafe fn encode(
5676 self,
5677 encoder: &mut fidl::encoding::Encoder<'_, D>,
5678 offset: usize,
5679 mut depth: fidl::encoding::Depth,
5680 ) -> fidl::Result<()> {
5681 encoder.debug_check_bounds::<HealthCheckResponse>(offset);
5682 let max_ordinal: u64 = self.max_ordinal_present();
5684 encoder.write_num(max_ordinal, offset);
5685 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5686 if max_ordinal == 0 {
5688 return Ok(());
5689 }
5690 depth.increment()?;
5691 let envelope_size = 8;
5692 let bytes_len = max_ordinal as usize * envelope_size;
5693 #[allow(unused_variables)]
5694 let offset = encoder.out_of_line_offset(bytes_len);
5695 let mut _prev_end_offset: usize = 0;
5696 if 1 > max_ordinal {
5697 return Ok(());
5698 }
5699
5700 let cur_offset: usize = (1 - 1) * envelope_size;
5703
5704 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5706
5707 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<HealthDiagnosticItem, 32>, D>(
5712 self.diagnostics.as_ref().map(<fidl::encoding::Vector<HealthDiagnosticItem, 32> as fidl::encoding::ValueTypeMarker>::borrow),
5713 encoder, offset + cur_offset, depth
5714 )?;
5715
5716 _prev_end_offset = cur_offset + envelope_size;
5717 if 2 > max_ordinal {
5718 return Ok(());
5719 }
5720
5721 let cur_offset: usize = (2 - 1) * envelope_size;
5724
5725 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5727
5728 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<HealthCondition, 16>, D>(
5733 self.conditions.as_ref().map(<fidl::encoding::Vector<HealthCondition, 16> as fidl::encoding::ValueTypeMarker>::borrow),
5734 encoder, offset + cur_offset, depth
5735 )?;
5736
5737 _prev_end_offset = cur_offset + envelope_size;
5738
5739 Ok(())
5740 }
5741 }
5742
5743 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HealthCheckResponse {
5744 #[inline(always)]
5745 fn new_empty() -> Self {
5746 Self::default()
5747 }
5748
5749 unsafe fn decode(
5750 &mut self,
5751 decoder: &mut fidl::encoding::Decoder<'_, D>,
5752 offset: usize,
5753 mut depth: fidl::encoding::Depth,
5754 ) -> fidl::Result<()> {
5755 decoder.debug_check_bounds::<Self>(offset);
5756 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5757 None => return Err(fidl::Error::NotNullable),
5758 Some(len) => len,
5759 };
5760 if len == 0 {
5762 return Ok(());
5763 };
5764 depth.increment()?;
5765 let envelope_size = 8;
5766 let bytes_len = len * envelope_size;
5767 let offset = decoder.out_of_line_offset(bytes_len)?;
5768 let mut _next_ordinal_to_read = 0;
5770 let mut next_offset = offset;
5771 let end_offset = offset + bytes_len;
5772 _next_ordinal_to_read += 1;
5773 if next_offset >= end_offset {
5774 return Ok(());
5775 }
5776
5777 while _next_ordinal_to_read < 1 {
5779 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5780 _next_ordinal_to_read += 1;
5781 next_offset += envelope_size;
5782 }
5783
5784 let next_out_of_line = decoder.next_out_of_line();
5785 let handles_before = decoder.remaining_handles();
5786 if let Some((inlined, num_bytes, num_handles)) =
5787 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5788 {
5789 let member_inline_size = <fidl::encoding::Vector<HealthDiagnosticItem, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5790 if inlined != (member_inline_size <= 4) {
5791 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5792 }
5793 let inner_offset;
5794 let mut inner_depth = depth.clone();
5795 if inlined {
5796 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5797 inner_offset = next_offset;
5798 } else {
5799 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5800 inner_depth.increment()?;
5801 }
5802 let val_ref = self.diagnostics.get_or_insert_with(
5803 || fidl::new_empty!(fidl::encoding::Vector<HealthDiagnosticItem, 32>, D),
5804 );
5805 fidl::decode!(fidl::encoding::Vector<HealthDiagnosticItem, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
5806 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5807 {
5808 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5809 }
5810 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5811 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5812 }
5813 }
5814
5815 next_offset += envelope_size;
5816 _next_ordinal_to_read += 1;
5817 if next_offset >= end_offset {
5818 return Ok(());
5819 }
5820
5821 while _next_ordinal_to_read < 2 {
5823 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5824 _next_ordinal_to_read += 1;
5825 next_offset += envelope_size;
5826 }
5827
5828 let next_out_of_line = decoder.next_out_of_line();
5829 let handles_before = decoder.remaining_handles();
5830 if let Some((inlined, num_bytes, num_handles)) =
5831 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5832 {
5833 let member_inline_size = <fidl::encoding::Vector<HealthCondition, 16> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5834 if inlined != (member_inline_size <= 4) {
5835 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5836 }
5837 let inner_offset;
5838 let mut inner_depth = depth.clone();
5839 if inlined {
5840 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5841 inner_offset = next_offset;
5842 } else {
5843 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5844 inner_depth.increment()?;
5845 }
5846 let val_ref = self.conditions.get_or_insert_with(
5847 || fidl::new_empty!(fidl::encoding::Vector<HealthCondition, 16>, D),
5848 );
5849 fidl::decode!(fidl::encoding::Vector<HealthCondition, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
5850 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5851 {
5852 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5853 }
5854 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5855 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5856 }
5857 }
5858
5859 next_offset += envelope_size;
5860
5861 while next_offset < end_offset {
5863 _next_ordinal_to_read += 1;
5864 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5865 next_offset += envelope_size;
5866 }
5867
5868 Ok(())
5869 }
5870 }
5871
5872 impl HealthCondition {
5873 #[inline(always)]
5874 fn max_ordinal_present(&self) -> u64 {
5875 if let Some(_) = self.occurrence_count {
5876 return 7;
5877 }
5878 if let Some(_) = self.last_observed {
5879 return 6;
5880 }
5881 if let Some(_) = self.first_observed {
5882 return 5;
5883 }
5884 if let Some(_) = self.diagnostics {
5885 return 4;
5886 }
5887 if let Some(_) = self.message {
5888 return 3;
5889 }
5890 if let Some(_) = self.reason_code {
5891 return 2;
5892 }
5893 if let Some(_) = self.status {
5894 return 1;
5895 }
5896 0
5897 }
5898 }
5899
5900 impl fidl::encoding::ValueTypeMarker for HealthCondition {
5901 type Borrowed<'a> = &'a Self;
5902 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5903 value
5904 }
5905 }
5906
5907 unsafe impl fidl::encoding::TypeMarker for HealthCondition {
5908 type Owned = Self;
5909
5910 #[inline(always)]
5911 fn inline_align(_context: fidl::encoding::Context) -> usize {
5912 8
5913 }
5914
5915 #[inline(always)]
5916 fn inline_size(_context: fidl::encoding::Context) -> usize {
5917 16
5918 }
5919 }
5920
5921 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HealthCondition, D>
5922 for &HealthCondition
5923 {
5924 unsafe fn encode(
5925 self,
5926 encoder: &mut fidl::encoding::Encoder<'_, D>,
5927 offset: usize,
5928 mut depth: fidl::encoding::Depth,
5929 ) -> fidl::Result<()> {
5930 encoder.debug_check_bounds::<HealthCondition>(offset);
5931 let max_ordinal: u64 = self.max_ordinal_present();
5933 encoder.write_num(max_ordinal, offset);
5934 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5935 if max_ordinal == 0 {
5937 return Ok(());
5938 }
5939 depth.increment()?;
5940 let envelope_size = 8;
5941 let bytes_len = max_ordinal as usize * envelope_size;
5942 #[allow(unused_variables)]
5943 let offset = encoder.out_of_line_offset(bytes_len);
5944 let mut _prev_end_offset: usize = 0;
5945 if 1 > max_ordinal {
5946 return Ok(());
5947 }
5948
5949 let cur_offset: usize = (1 - 1) * envelope_size;
5952
5953 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5955
5956 fidl::encoding::encode_in_envelope_optional::<HealthStatus, D>(
5961 self.status.as_ref().map(<HealthStatus as fidl::encoding::ValueTypeMarker>::borrow),
5962 encoder,
5963 offset + cur_offset,
5964 depth,
5965 )?;
5966
5967 _prev_end_offset = cur_offset + envelope_size;
5968 if 2 > max_ordinal {
5969 return Ok(());
5970 }
5971
5972 let cur_offset: usize = (2 - 1) * envelope_size;
5975
5976 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5978
5979 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
5984 self.reason_code.as_ref().map(
5985 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
5986 ),
5987 encoder,
5988 offset + cur_offset,
5989 depth,
5990 )?;
5991
5992 _prev_end_offset = cur_offset + envelope_size;
5993 if 3 > max_ordinal {
5994 return Ok(());
5995 }
5996
5997 let cur_offset: usize = (3 - 1) * envelope_size;
6000
6001 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6003
6004 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
6009 self.message.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
6010 encoder, offset + cur_offset, depth
6011 )?;
6012
6013 _prev_end_offset = cur_offset + envelope_size;
6014 if 4 > max_ordinal {
6015 return Ok(());
6016 }
6017
6018 let cur_offset: usize = (4 - 1) * envelope_size;
6021
6022 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6024
6025 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<HealthDiagnosticItem, 32>, D>(
6030 self.diagnostics.as_ref().map(<fidl::encoding::Vector<HealthDiagnosticItem, 32> as fidl::encoding::ValueTypeMarker>::borrow),
6031 encoder, offset + cur_offset, depth
6032 )?;
6033
6034 _prev_end_offset = cur_offset + envelope_size;
6035 if 5 > max_ordinal {
6036 return Ok(());
6037 }
6038
6039 let cur_offset: usize = (5 - 1) * envelope_size;
6042
6043 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6045
6046 fidl::encoding::encode_in_envelope_optional::<fidl::BootInstant, D>(
6051 self.first_observed
6052 .as_ref()
6053 .map(<fidl::BootInstant as fidl::encoding::ValueTypeMarker>::borrow),
6054 encoder,
6055 offset + cur_offset,
6056 depth,
6057 )?;
6058
6059 _prev_end_offset = cur_offset + envelope_size;
6060 if 6 > max_ordinal {
6061 return Ok(());
6062 }
6063
6064 let cur_offset: usize = (6 - 1) * envelope_size;
6067
6068 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6070
6071 fidl::encoding::encode_in_envelope_optional::<fidl::BootInstant, D>(
6076 self.last_observed
6077 .as_ref()
6078 .map(<fidl::BootInstant as fidl::encoding::ValueTypeMarker>::borrow),
6079 encoder,
6080 offset + cur_offset,
6081 depth,
6082 )?;
6083
6084 _prev_end_offset = cur_offset + envelope_size;
6085 if 7 > max_ordinal {
6086 return Ok(());
6087 }
6088
6089 let cur_offset: usize = (7 - 1) * envelope_size;
6092
6093 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6095
6096 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6101 self.occurrence_count
6102 .as_ref()
6103 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6104 encoder,
6105 offset + cur_offset,
6106 depth,
6107 )?;
6108
6109 _prev_end_offset = cur_offset + envelope_size;
6110
6111 Ok(())
6112 }
6113 }
6114
6115 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HealthCondition {
6116 #[inline(always)]
6117 fn new_empty() -> Self {
6118 Self::default()
6119 }
6120
6121 unsafe fn decode(
6122 &mut self,
6123 decoder: &mut fidl::encoding::Decoder<'_, D>,
6124 offset: usize,
6125 mut depth: fidl::encoding::Depth,
6126 ) -> fidl::Result<()> {
6127 decoder.debug_check_bounds::<Self>(offset);
6128 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6129 None => return Err(fidl::Error::NotNullable),
6130 Some(len) => len,
6131 };
6132 if len == 0 {
6134 return Ok(());
6135 };
6136 depth.increment()?;
6137 let envelope_size = 8;
6138 let bytes_len = len * envelope_size;
6139 let offset = decoder.out_of_line_offset(bytes_len)?;
6140 let mut _next_ordinal_to_read = 0;
6142 let mut next_offset = offset;
6143 let end_offset = offset + bytes_len;
6144 _next_ordinal_to_read += 1;
6145 if next_offset >= end_offset {
6146 return Ok(());
6147 }
6148
6149 while _next_ordinal_to_read < 1 {
6151 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6152 _next_ordinal_to_read += 1;
6153 next_offset += envelope_size;
6154 }
6155
6156 let next_out_of_line = decoder.next_out_of_line();
6157 let handles_before = decoder.remaining_handles();
6158 if let Some((inlined, num_bytes, num_handles)) =
6159 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6160 {
6161 let member_inline_size =
6162 <HealthStatus as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6163 if inlined != (member_inline_size <= 4) {
6164 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6165 }
6166 let inner_offset;
6167 let mut inner_depth = depth.clone();
6168 if inlined {
6169 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6170 inner_offset = next_offset;
6171 } else {
6172 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6173 inner_depth.increment()?;
6174 }
6175 let val_ref = self.status.get_or_insert_with(|| fidl::new_empty!(HealthStatus, D));
6176 fidl::decode!(HealthStatus, D, val_ref, decoder, inner_offset, inner_depth)?;
6177 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6178 {
6179 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6180 }
6181 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6182 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6183 }
6184 }
6185
6186 next_offset += envelope_size;
6187 _next_ordinal_to_read += 1;
6188 if next_offset >= end_offset {
6189 return Ok(());
6190 }
6191
6192 while _next_ordinal_to_read < 2 {
6194 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6195 _next_ordinal_to_read += 1;
6196 next_offset += envelope_size;
6197 }
6198
6199 let next_out_of_line = decoder.next_out_of_line();
6200 let handles_before = decoder.remaining_handles();
6201 if let Some((inlined, num_bytes, num_handles)) =
6202 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6203 {
6204 let member_inline_size =
6205 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
6206 decoder.context,
6207 );
6208 if inlined != (member_inline_size <= 4) {
6209 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6210 }
6211 let inner_offset;
6212 let mut inner_depth = depth.clone();
6213 if inlined {
6214 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6215 inner_offset = next_offset;
6216 } else {
6217 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6218 inner_depth.increment()?;
6219 }
6220 let val_ref = self
6221 .reason_code
6222 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
6223 fidl::decode!(
6224 fidl::encoding::BoundedString<128>,
6225 D,
6226 val_ref,
6227 decoder,
6228 inner_offset,
6229 inner_depth
6230 )?;
6231 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6232 {
6233 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6234 }
6235 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6236 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6237 }
6238 }
6239
6240 next_offset += envelope_size;
6241 _next_ordinal_to_read += 1;
6242 if next_offset >= end_offset {
6243 return Ok(());
6244 }
6245
6246 while _next_ordinal_to_read < 3 {
6248 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6249 _next_ordinal_to_read += 1;
6250 next_offset += envelope_size;
6251 }
6252
6253 let next_out_of_line = decoder.next_out_of_line();
6254 let handles_before = decoder.remaining_handles();
6255 if let Some((inlined, num_bytes, num_handles)) =
6256 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6257 {
6258 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6259 if inlined != (member_inline_size <= 4) {
6260 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6261 }
6262 let inner_offset;
6263 let mut inner_depth = depth.clone();
6264 if inlined {
6265 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6266 inner_offset = next_offset;
6267 } else {
6268 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6269 inner_depth.increment()?;
6270 }
6271 let val_ref = self.message.get_or_insert_with(|| {
6272 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
6273 });
6274 fidl::decode!(
6275 fidl::encoding::BoundedString<1024>,
6276 D,
6277 val_ref,
6278 decoder,
6279 inner_offset,
6280 inner_depth
6281 )?;
6282 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6283 {
6284 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6285 }
6286 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6287 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6288 }
6289 }
6290
6291 next_offset += envelope_size;
6292 _next_ordinal_to_read += 1;
6293 if next_offset >= end_offset {
6294 return Ok(());
6295 }
6296
6297 while _next_ordinal_to_read < 4 {
6299 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6300 _next_ordinal_to_read += 1;
6301 next_offset += envelope_size;
6302 }
6303
6304 let next_out_of_line = decoder.next_out_of_line();
6305 let handles_before = decoder.remaining_handles();
6306 if let Some((inlined, num_bytes, num_handles)) =
6307 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6308 {
6309 let member_inline_size = <fidl::encoding::Vector<HealthDiagnosticItem, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6310 if inlined != (member_inline_size <= 4) {
6311 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6312 }
6313 let inner_offset;
6314 let mut inner_depth = depth.clone();
6315 if inlined {
6316 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6317 inner_offset = next_offset;
6318 } else {
6319 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6320 inner_depth.increment()?;
6321 }
6322 let val_ref = self.diagnostics.get_or_insert_with(
6323 || fidl::new_empty!(fidl::encoding::Vector<HealthDiagnosticItem, 32>, D),
6324 );
6325 fidl::decode!(fidl::encoding::Vector<HealthDiagnosticItem, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
6326 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6327 {
6328 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6329 }
6330 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6331 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6332 }
6333 }
6334
6335 next_offset += envelope_size;
6336 _next_ordinal_to_read += 1;
6337 if next_offset >= end_offset {
6338 return Ok(());
6339 }
6340
6341 while _next_ordinal_to_read < 5 {
6343 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6344 _next_ordinal_to_read += 1;
6345 next_offset += envelope_size;
6346 }
6347
6348 let next_out_of_line = decoder.next_out_of_line();
6349 let handles_before = decoder.remaining_handles();
6350 if let Some((inlined, num_bytes, num_handles)) =
6351 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6352 {
6353 let member_inline_size =
6354 <fidl::BootInstant as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6355 if inlined != (member_inline_size <= 4) {
6356 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6357 }
6358 let inner_offset;
6359 let mut inner_depth = depth.clone();
6360 if inlined {
6361 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6362 inner_offset = next_offset;
6363 } else {
6364 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6365 inner_depth.increment()?;
6366 }
6367 let val_ref = self
6368 .first_observed
6369 .get_or_insert_with(|| fidl::new_empty!(fidl::BootInstant, D));
6370 fidl::decode!(fidl::BootInstant, D, val_ref, decoder, inner_offset, inner_depth)?;
6371 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6372 {
6373 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6374 }
6375 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6376 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6377 }
6378 }
6379
6380 next_offset += envelope_size;
6381 _next_ordinal_to_read += 1;
6382 if next_offset >= end_offset {
6383 return Ok(());
6384 }
6385
6386 while _next_ordinal_to_read < 6 {
6388 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6389 _next_ordinal_to_read += 1;
6390 next_offset += envelope_size;
6391 }
6392
6393 let next_out_of_line = decoder.next_out_of_line();
6394 let handles_before = decoder.remaining_handles();
6395 if let Some((inlined, num_bytes, num_handles)) =
6396 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6397 {
6398 let member_inline_size =
6399 <fidl::BootInstant as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6400 if inlined != (member_inline_size <= 4) {
6401 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6402 }
6403 let inner_offset;
6404 let mut inner_depth = depth.clone();
6405 if inlined {
6406 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6407 inner_offset = next_offset;
6408 } else {
6409 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6410 inner_depth.increment()?;
6411 }
6412 let val_ref = self
6413 .last_observed
6414 .get_or_insert_with(|| fidl::new_empty!(fidl::BootInstant, D));
6415 fidl::decode!(fidl::BootInstant, D, val_ref, decoder, inner_offset, inner_depth)?;
6416 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6417 {
6418 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6419 }
6420 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6421 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6422 }
6423 }
6424
6425 next_offset += envelope_size;
6426 _next_ordinal_to_read += 1;
6427 if next_offset >= end_offset {
6428 return Ok(());
6429 }
6430
6431 while _next_ordinal_to_read < 7 {
6433 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6434 _next_ordinal_to_read += 1;
6435 next_offset += envelope_size;
6436 }
6437
6438 let next_out_of_line = decoder.next_out_of_line();
6439 let handles_before = decoder.remaining_handles();
6440 if let Some((inlined, num_bytes, num_handles)) =
6441 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6442 {
6443 let member_inline_size =
6444 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6445 if inlined != (member_inline_size <= 4) {
6446 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6447 }
6448 let inner_offset;
6449 let mut inner_depth = depth.clone();
6450 if inlined {
6451 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6452 inner_offset = next_offset;
6453 } else {
6454 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6455 inner_depth.increment()?;
6456 }
6457 let val_ref = self.occurrence_count.get_or_insert_with(|| fidl::new_empty!(u64, D));
6458 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6459 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6460 {
6461 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6462 }
6463 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6464 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6465 }
6466 }
6467
6468 next_offset += envelope_size;
6469
6470 while next_offset < end_offset {
6472 _next_ordinal_to_read += 1;
6473 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6474 next_offset += envelope_size;
6475 }
6476
6477 Ok(())
6478 }
6479 }
6480
6481 impl Node2 {
6482 #[inline(always)]
6483 fn max_ordinal_present(&self) -> u64 {
6484 if let Some(_) = self.dependencies {
6485 return 2;
6486 }
6487 if let Some(_) = self.name {
6488 return 1;
6489 }
6490 0
6491 }
6492 }
6493
6494 impl fidl::encoding::ValueTypeMarker for Node2 {
6495 type Borrowed<'a> = &'a Self;
6496 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6497 value
6498 }
6499 }
6500
6501 unsafe impl fidl::encoding::TypeMarker for Node2 {
6502 type Owned = Self;
6503
6504 #[inline(always)]
6505 fn inline_align(_context: fidl::encoding::Context) -> usize {
6506 8
6507 }
6508
6509 #[inline(always)]
6510 fn inline_size(_context: fidl::encoding::Context) -> usize {
6511 16
6512 }
6513 }
6514
6515 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Node2, D> for &Node2 {
6516 unsafe fn encode(
6517 self,
6518 encoder: &mut fidl::encoding::Encoder<'_, D>,
6519 offset: usize,
6520 mut depth: fidl::encoding::Depth,
6521 ) -> fidl::Result<()> {
6522 encoder.debug_check_bounds::<Node2>(offset);
6523 let max_ordinal: u64 = self.max_ordinal_present();
6525 encoder.write_num(max_ordinal, offset);
6526 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6527 if max_ordinal == 0 {
6529 return Ok(());
6530 }
6531 depth.increment()?;
6532 let envelope_size = 8;
6533 let bytes_len = max_ordinal as usize * envelope_size;
6534 #[allow(unused_variables)]
6535 let offset = encoder.out_of_line_offset(bytes_len);
6536 let mut _prev_end_offset: usize = 0;
6537 if 1 > max_ordinal {
6538 return Ok(());
6539 }
6540
6541 let cur_offset: usize = (1 - 1) * envelope_size;
6544
6545 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6547
6548 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
6553 self.name.as_ref().map(
6554 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
6555 ),
6556 encoder,
6557 offset + cur_offset,
6558 depth,
6559 )?;
6560
6561 _prev_end_offset = cur_offset + envelope_size;
6562 if 2 > max_ordinal {
6563 return Ok(());
6564 }
6565
6566 let cur_offset: usize = (2 - 1) * envelope_size;
6569
6570 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6572
6573 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Dependency>, D>(
6578 self.dependencies.as_ref().map(<fidl::encoding::UnboundedVector<Dependency> as fidl::encoding::ValueTypeMarker>::borrow),
6579 encoder, offset + cur_offset, depth
6580 )?;
6581
6582 _prev_end_offset = cur_offset + envelope_size;
6583
6584 Ok(())
6585 }
6586 }
6587
6588 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Node2 {
6589 #[inline(always)]
6590 fn new_empty() -> Self {
6591 Self::default()
6592 }
6593
6594 unsafe fn decode(
6595 &mut self,
6596 decoder: &mut fidl::encoding::Decoder<'_, D>,
6597 offset: usize,
6598 mut depth: fidl::encoding::Depth,
6599 ) -> fidl::Result<()> {
6600 decoder.debug_check_bounds::<Self>(offset);
6601 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6602 None => return Err(fidl::Error::NotNullable),
6603 Some(len) => len,
6604 };
6605 if len == 0 {
6607 return Ok(());
6608 };
6609 depth.increment()?;
6610 let envelope_size = 8;
6611 let bytes_len = len * envelope_size;
6612 let offset = decoder.out_of_line_offset(bytes_len)?;
6613 let mut _next_ordinal_to_read = 0;
6615 let mut next_offset = offset;
6616 let end_offset = offset + bytes_len;
6617 _next_ordinal_to_read += 1;
6618 if next_offset >= end_offset {
6619 return Ok(());
6620 }
6621
6622 while _next_ordinal_to_read < 1 {
6624 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6625 _next_ordinal_to_read += 1;
6626 next_offset += envelope_size;
6627 }
6628
6629 let next_out_of_line = decoder.next_out_of_line();
6630 let handles_before = decoder.remaining_handles();
6631 if let Some((inlined, num_bytes, num_handles)) =
6632 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6633 {
6634 let member_inline_size =
6635 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
6636 decoder.context,
6637 );
6638 if inlined != (member_inline_size <= 4) {
6639 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6640 }
6641 let inner_offset;
6642 let mut inner_depth = depth.clone();
6643 if inlined {
6644 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6645 inner_offset = next_offset;
6646 } else {
6647 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6648 inner_depth.increment()?;
6649 }
6650 let val_ref = self
6651 .name
6652 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
6653 fidl::decode!(
6654 fidl::encoding::UnboundedString,
6655 D,
6656 val_ref,
6657 decoder,
6658 inner_offset,
6659 inner_depth
6660 )?;
6661 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6662 {
6663 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6664 }
6665 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6666 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6667 }
6668 }
6669
6670 next_offset += envelope_size;
6671 _next_ordinal_to_read += 1;
6672 if next_offset >= end_offset {
6673 return Ok(());
6674 }
6675
6676 while _next_ordinal_to_read < 2 {
6678 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6679 _next_ordinal_to_read += 1;
6680 next_offset += envelope_size;
6681 }
6682
6683 let next_out_of_line = decoder.next_out_of_line();
6684 let handles_before = decoder.remaining_handles();
6685 if let Some((inlined, num_bytes, num_handles)) =
6686 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6687 {
6688 let member_inline_size = <fidl::encoding::UnboundedVector<Dependency> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6689 if inlined != (member_inline_size <= 4) {
6690 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6691 }
6692 let inner_offset;
6693 let mut inner_depth = depth.clone();
6694 if inlined {
6695 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6696 inner_offset = next_offset;
6697 } else {
6698 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6699 inner_depth.increment()?;
6700 }
6701 let val_ref = self.dependencies.get_or_insert_with(|| {
6702 fidl::new_empty!(fidl::encoding::UnboundedVector<Dependency>, D)
6703 });
6704 fidl::decode!(
6705 fidl::encoding::UnboundedVector<Dependency>,
6706 D,
6707 val_ref,
6708 decoder,
6709 inner_offset,
6710 inner_depth
6711 )?;
6712 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6713 {
6714 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6715 }
6716 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6717 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6718 }
6719 }
6720
6721 next_offset += envelope_size;
6722
6723 while next_offset < end_offset {
6725 _next_ordinal_to_read += 1;
6726 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6727 next_offset += envelope_size;
6728 }
6729
6730 Ok(())
6731 }
6732 }
6733
6734 impl NodeControllerRequestBindRequest {
6735 #[inline(always)]
6736 fn max_ordinal_present(&self) -> u64 {
6737 if let Some(_) = self.driver_url_suffix {
6738 return 2;
6739 }
6740 if let Some(_) = self.force_rebind {
6741 return 1;
6742 }
6743 0
6744 }
6745 }
6746
6747 impl fidl::encoding::ValueTypeMarker for NodeControllerRequestBindRequest {
6748 type Borrowed<'a> = &'a Self;
6749 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6750 value
6751 }
6752 }
6753
6754 unsafe impl fidl::encoding::TypeMarker for NodeControllerRequestBindRequest {
6755 type Owned = Self;
6756
6757 #[inline(always)]
6758 fn inline_align(_context: fidl::encoding::Context) -> usize {
6759 8
6760 }
6761
6762 #[inline(always)]
6763 fn inline_size(_context: fidl::encoding::Context) -> usize {
6764 16
6765 }
6766 }
6767
6768 unsafe impl<D: fidl::encoding::ResourceDialect>
6769 fidl::encoding::Encode<NodeControllerRequestBindRequest, D>
6770 for &NodeControllerRequestBindRequest
6771 {
6772 unsafe fn encode(
6773 self,
6774 encoder: &mut fidl::encoding::Encoder<'_, D>,
6775 offset: usize,
6776 mut depth: fidl::encoding::Depth,
6777 ) -> fidl::Result<()> {
6778 encoder.debug_check_bounds::<NodeControllerRequestBindRequest>(offset);
6779 let max_ordinal: u64 = self.max_ordinal_present();
6781 encoder.write_num(max_ordinal, offset);
6782 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6783 if max_ordinal == 0 {
6785 return Ok(());
6786 }
6787 depth.increment()?;
6788 let envelope_size = 8;
6789 let bytes_len = max_ordinal as usize * envelope_size;
6790 #[allow(unused_variables)]
6791 let offset = encoder.out_of_line_offset(bytes_len);
6792 let mut _prev_end_offset: usize = 0;
6793 if 1 > max_ordinal {
6794 return Ok(());
6795 }
6796
6797 let cur_offset: usize = (1 - 1) * envelope_size;
6800
6801 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6803
6804 fidl::encoding::encode_in_envelope_optional::<bool, D>(
6809 self.force_rebind.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6810 encoder,
6811 offset + cur_offset,
6812 depth,
6813 )?;
6814
6815 _prev_end_offset = cur_offset + envelope_size;
6816 if 2 > max_ordinal {
6817 return Ok(());
6818 }
6819
6820 let cur_offset: usize = (2 - 1) * envelope_size;
6823
6824 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6826
6827 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
6832 self.driver_url_suffix.as_ref().map(
6833 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
6834 ),
6835 encoder,
6836 offset + cur_offset,
6837 depth,
6838 )?;
6839
6840 _prev_end_offset = cur_offset + envelope_size;
6841
6842 Ok(())
6843 }
6844 }
6845
6846 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6847 for NodeControllerRequestBindRequest
6848 {
6849 #[inline(always)]
6850 fn new_empty() -> Self {
6851 Self::default()
6852 }
6853
6854 unsafe fn decode(
6855 &mut self,
6856 decoder: &mut fidl::encoding::Decoder<'_, D>,
6857 offset: usize,
6858 mut depth: fidl::encoding::Depth,
6859 ) -> fidl::Result<()> {
6860 decoder.debug_check_bounds::<Self>(offset);
6861 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6862 None => return Err(fidl::Error::NotNullable),
6863 Some(len) => len,
6864 };
6865 if len == 0 {
6867 return Ok(());
6868 };
6869 depth.increment()?;
6870 let envelope_size = 8;
6871 let bytes_len = len * envelope_size;
6872 let offset = decoder.out_of_line_offset(bytes_len)?;
6873 let mut _next_ordinal_to_read = 0;
6875 let mut next_offset = offset;
6876 let end_offset = offset + bytes_len;
6877 _next_ordinal_to_read += 1;
6878 if next_offset >= end_offset {
6879 return Ok(());
6880 }
6881
6882 while _next_ordinal_to_read < 1 {
6884 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6885 _next_ordinal_to_read += 1;
6886 next_offset += envelope_size;
6887 }
6888
6889 let next_out_of_line = decoder.next_out_of_line();
6890 let handles_before = decoder.remaining_handles();
6891 if let Some((inlined, num_bytes, num_handles)) =
6892 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6893 {
6894 let member_inline_size =
6895 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6896 if inlined != (member_inline_size <= 4) {
6897 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6898 }
6899 let inner_offset;
6900 let mut inner_depth = depth.clone();
6901 if inlined {
6902 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6903 inner_offset = next_offset;
6904 } else {
6905 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6906 inner_depth.increment()?;
6907 }
6908 let val_ref = self.force_rebind.get_or_insert_with(|| fidl::new_empty!(bool, D));
6909 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6910 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6911 {
6912 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6913 }
6914 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6915 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6916 }
6917 }
6918
6919 next_offset += envelope_size;
6920 _next_ordinal_to_read += 1;
6921 if next_offset >= end_offset {
6922 return Ok(());
6923 }
6924
6925 while _next_ordinal_to_read < 2 {
6927 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6928 _next_ordinal_to_read += 1;
6929 next_offset += envelope_size;
6930 }
6931
6932 let next_out_of_line = decoder.next_out_of_line();
6933 let handles_before = decoder.remaining_handles();
6934 if let Some((inlined, num_bytes, num_handles)) =
6935 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6936 {
6937 let member_inline_size =
6938 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
6939 decoder.context,
6940 );
6941 if inlined != (member_inline_size <= 4) {
6942 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6943 }
6944 let inner_offset;
6945 let mut inner_depth = depth.clone();
6946 if inlined {
6947 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6948 inner_offset = next_offset;
6949 } else {
6950 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6951 inner_depth.increment()?;
6952 }
6953 let val_ref = self
6954 .driver_url_suffix
6955 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
6956 fidl::decode!(
6957 fidl::encoding::UnboundedString,
6958 D,
6959 val_ref,
6960 decoder,
6961 inner_offset,
6962 inner_depth
6963 )?;
6964 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6965 {
6966 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6967 }
6968 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6969 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6970 }
6971 }
6972
6973 next_offset += envelope_size;
6974
6975 while next_offset < end_offset {
6977 _next_ordinal_to_read += 1;
6978 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6979 next_offset += envelope_size;
6980 }
6981
6982 Ok(())
6983 }
6984 }
6985
6986 impl NodeSymbol {
6987 #[inline(always)]
6988 fn max_ordinal_present(&self) -> u64 {
6989 if let Some(_) = self.module_name {
6990 return 3;
6991 }
6992 if let Some(_) = self.address {
6993 return 2;
6994 }
6995 if let Some(_) = self.name {
6996 return 1;
6997 }
6998 0
6999 }
7000 }
7001
7002 impl fidl::encoding::ValueTypeMarker for NodeSymbol {
7003 type Borrowed<'a> = &'a Self;
7004 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7005 value
7006 }
7007 }
7008
7009 unsafe impl fidl::encoding::TypeMarker for NodeSymbol {
7010 type Owned = Self;
7011
7012 #[inline(always)]
7013 fn inline_align(_context: fidl::encoding::Context) -> usize {
7014 8
7015 }
7016
7017 #[inline(always)]
7018 fn inline_size(_context: fidl::encoding::Context) -> usize {
7019 16
7020 }
7021 }
7022
7023 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeSymbol, D>
7024 for &NodeSymbol
7025 {
7026 unsafe fn encode(
7027 self,
7028 encoder: &mut fidl::encoding::Encoder<'_, D>,
7029 offset: usize,
7030 mut depth: fidl::encoding::Depth,
7031 ) -> fidl::Result<()> {
7032 encoder.debug_check_bounds::<NodeSymbol>(offset);
7033 let max_ordinal: u64 = self.max_ordinal_present();
7035 encoder.write_num(max_ordinal, offset);
7036 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7037 if max_ordinal == 0 {
7039 return Ok(());
7040 }
7041 depth.increment()?;
7042 let envelope_size = 8;
7043 let bytes_len = max_ordinal as usize * envelope_size;
7044 #[allow(unused_variables)]
7045 let offset = encoder.out_of_line_offset(bytes_len);
7046 let mut _prev_end_offset: usize = 0;
7047 if 1 > max_ordinal {
7048 return Ok(());
7049 }
7050
7051 let cur_offset: usize = (1 - 1) * envelope_size;
7054
7055 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7057
7058 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
7063 self.name.as_ref().map(
7064 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
7065 ),
7066 encoder,
7067 offset + cur_offset,
7068 depth,
7069 )?;
7070
7071 _prev_end_offset = cur_offset + envelope_size;
7072 if 2 > max_ordinal {
7073 return Ok(());
7074 }
7075
7076 let cur_offset: usize = (2 - 1) * envelope_size;
7079
7080 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7082
7083 fidl::encoding::encode_in_envelope_optional::<u64, D>(
7088 self.address.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
7089 encoder,
7090 offset + cur_offset,
7091 depth,
7092 )?;
7093
7094 _prev_end_offset = cur_offset + envelope_size;
7095 if 3 > max_ordinal {
7096 return Ok(());
7097 }
7098
7099 let cur_offset: usize = (3 - 1) * envelope_size;
7102
7103 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7105
7106 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
7111 self.module_name.as_ref().map(
7112 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
7113 ),
7114 encoder,
7115 offset + cur_offset,
7116 depth,
7117 )?;
7118
7119 _prev_end_offset = cur_offset + envelope_size;
7120
7121 Ok(())
7122 }
7123 }
7124
7125 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeSymbol {
7126 #[inline(always)]
7127 fn new_empty() -> Self {
7128 Self::default()
7129 }
7130
7131 unsafe fn decode(
7132 &mut self,
7133 decoder: &mut fidl::encoding::Decoder<'_, D>,
7134 offset: usize,
7135 mut depth: fidl::encoding::Depth,
7136 ) -> fidl::Result<()> {
7137 decoder.debug_check_bounds::<Self>(offset);
7138 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7139 None => return Err(fidl::Error::NotNullable),
7140 Some(len) => len,
7141 };
7142 if len == 0 {
7144 return Ok(());
7145 };
7146 depth.increment()?;
7147 let envelope_size = 8;
7148 let bytes_len = len * envelope_size;
7149 let offset = decoder.out_of_line_offset(bytes_len)?;
7150 let mut _next_ordinal_to_read = 0;
7152 let mut next_offset = offset;
7153 let end_offset = offset + bytes_len;
7154 _next_ordinal_to_read += 1;
7155 if next_offset >= end_offset {
7156 return Ok(());
7157 }
7158
7159 while _next_ordinal_to_read < 1 {
7161 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7162 _next_ordinal_to_read += 1;
7163 next_offset += envelope_size;
7164 }
7165
7166 let next_out_of_line = decoder.next_out_of_line();
7167 let handles_before = decoder.remaining_handles();
7168 if let Some((inlined, num_bytes, num_handles)) =
7169 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7170 {
7171 let member_inline_size =
7172 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
7173 decoder.context,
7174 );
7175 if inlined != (member_inline_size <= 4) {
7176 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7177 }
7178 let inner_offset;
7179 let mut inner_depth = depth.clone();
7180 if inlined {
7181 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7182 inner_offset = next_offset;
7183 } else {
7184 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7185 inner_depth.increment()?;
7186 }
7187 let val_ref = self
7188 .name
7189 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
7190 fidl::decode!(
7191 fidl::encoding::BoundedString<128>,
7192 D,
7193 val_ref,
7194 decoder,
7195 inner_offset,
7196 inner_depth
7197 )?;
7198 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7199 {
7200 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7201 }
7202 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7203 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7204 }
7205 }
7206
7207 next_offset += envelope_size;
7208 _next_ordinal_to_read += 1;
7209 if next_offset >= end_offset {
7210 return Ok(());
7211 }
7212
7213 while _next_ordinal_to_read < 2 {
7215 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7216 _next_ordinal_to_read += 1;
7217 next_offset += envelope_size;
7218 }
7219
7220 let next_out_of_line = decoder.next_out_of_line();
7221 let handles_before = decoder.remaining_handles();
7222 if let Some((inlined, num_bytes, num_handles)) =
7223 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7224 {
7225 let member_inline_size =
7226 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7227 if inlined != (member_inline_size <= 4) {
7228 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7229 }
7230 let inner_offset;
7231 let mut inner_depth = depth.clone();
7232 if inlined {
7233 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7234 inner_offset = next_offset;
7235 } else {
7236 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7237 inner_depth.increment()?;
7238 }
7239 let val_ref = self.address.get_or_insert_with(|| fidl::new_empty!(u64, D));
7240 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
7241 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7242 {
7243 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7244 }
7245 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7246 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7247 }
7248 }
7249
7250 next_offset += envelope_size;
7251 _next_ordinal_to_read += 1;
7252 if next_offset >= end_offset {
7253 return Ok(());
7254 }
7255
7256 while _next_ordinal_to_read < 3 {
7258 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7259 _next_ordinal_to_read += 1;
7260 next_offset += envelope_size;
7261 }
7262
7263 let next_out_of_line = decoder.next_out_of_line();
7264 let handles_before = decoder.remaining_handles();
7265 if let Some((inlined, num_bytes, num_handles)) =
7266 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7267 {
7268 let member_inline_size =
7269 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
7270 decoder.context,
7271 );
7272 if inlined != (member_inline_size <= 4) {
7273 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7274 }
7275 let inner_offset;
7276 let mut inner_depth = depth.clone();
7277 if inlined {
7278 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7279 inner_offset = next_offset;
7280 } else {
7281 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7282 inner_depth.increment()?;
7283 }
7284 let val_ref = self
7285 .module_name
7286 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
7287 fidl::decode!(
7288 fidl::encoding::BoundedString<128>,
7289 D,
7290 val_ref,
7291 decoder,
7292 inner_offset,
7293 inner_depth
7294 )?;
7295 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7296 {
7297 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7298 }
7299 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7300 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7301 }
7302 }
7303
7304 next_offset += envelope_size;
7305
7306 while next_offset < end_offset {
7308 _next_ordinal_to_read += 1;
7309 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7310 next_offset += envelope_size;
7311 }
7312
7313 Ok(())
7314 }
7315 }
7316
7317 impl Selector {
7318 #[inline(always)]
7319 fn max_ordinal_present(&self) -> u64 {
7320 if let Some(_) = self.exclude_properties {
7321 return 3;
7322 }
7323 if let Some(_) = self.include_properties {
7324 return 2;
7325 }
7326 if let Some(_) = self.offers {
7327 return 1;
7328 }
7329 0
7330 }
7331 }
7332
7333 impl fidl::encoding::ValueTypeMarker for Selector {
7334 type Borrowed<'a> = &'a Self;
7335 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7336 value
7337 }
7338 }
7339
7340 unsafe impl fidl::encoding::TypeMarker for Selector {
7341 type Owned = Self;
7342
7343 #[inline(always)]
7344 fn inline_align(_context: fidl::encoding::Context) -> usize {
7345 8
7346 }
7347
7348 #[inline(always)]
7349 fn inline_size(_context: fidl::encoding::Context) -> usize {
7350 16
7351 }
7352 }
7353
7354 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Selector, D> for &Selector {
7355 unsafe fn encode(
7356 self,
7357 encoder: &mut fidl::encoding::Encoder<'_, D>,
7358 offset: usize,
7359 mut depth: fidl::encoding::Depth,
7360 ) -> fidl::Result<()> {
7361 encoder.debug_check_bounds::<Selector>(offset);
7362 let max_ordinal: u64 = self.max_ordinal_present();
7364 encoder.write_num(max_ordinal, offset);
7365 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7366 if max_ordinal == 0 {
7368 return Ok(());
7369 }
7370 depth.increment()?;
7371 let envelope_size = 8;
7372 let bytes_len = max_ordinal as usize * envelope_size;
7373 #[allow(unused_variables)]
7374 let offset = encoder.out_of_line_offset(bytes_len);
7375 let mut _prev_end_offset: usize = 0;
7376 if 1 > max_ordinal {
7377 return Ok(());
7378 }
7379
7380 let cur_offset: usize = (1 - 1) * envelope_size;
7383
7384 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7386
7387 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<Offer, 128>, D>(
7392 self.offers.as_ref().map(
7393 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::ValueTypeMarker>::borrow,
7394 ),
7395 encoder,
7396 offset + cur_offset,
7397 depth,
7398 )?;
7399
7400 _prev_end_offset = cur_offset + envelope_size;
7401 if 2 > max_ordinal {
7402 return Ok(());
7403 }
7404
7405 let cur_offset: usize = (2 - 1) * envelope_size;
7408
7409 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7411
7412 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ResourceProperty, 64>, D>(
7417 self.include_properties.as_ref().map(<fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
7418 encoder, offset + cur_offset, depth
7419 )?;
7420
7421 _prev_end_offset = cur_offset + envelope_size;
7422 if 3 > max_ordinal {
7423 return Ok(());
7424 }
7425
7426 let cur_offset: usize = (3 - 1) * envelope_size;
7429
7430 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7432
7433 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ResourceProperty, 64>, D>(
7438 self.exclude_properties.as_ref().map(<fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
7439 encoder, offset + cur_offset, depth
7440 )?;
7441
7442 _prev_end_offset = cur_offset + envelope_size;
7443
7444 Ok(())
7445 }
7446 }
7447
7448 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Selector {
7449 #[inline(always)]
7450 fn new_empty() -> Self {
7451 Self::default()
7452 }
7453
7454 unsafe fn decode(
7455 &mut self,
7456 decoder: &mut fidl::encoding::Decoder<'_, D>,
7457 offset: usize,
7458 mut depth: fidl::encoding::Depth,
7459 ) -> fidl::Result<()> {
7460 decoder.debug_check_bounds::<Self>(offset);
7461 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7462 None => return Err(fidl::Error::NotNullable),
7463 Some(len) => len,
7464 };
7465 if len == 0 {
7467 return Ok(());
7468 };
7469 depth.increment()?;
7470 let envelope_size = 8;
7471 let bytes_len = len * envelope_size;
7472 let offset = decoder.out_of_line_offset(bytes_len)?;
7473 let mut _next_ordinal_to_read = 0;
7475 let mut next_offset = offset;
7476 let end_offset = offset + bytes_len;
7477 _next_ordinal_to_read += 1;
7478 if next_offset >= end_offset {
7479 return Ok(());
7480 }
7481
7482 while _next_ordinal_to_read < 1 {
7484 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7485 _next_ordinal_to_read += 1;
7486 next_offset += envelope_size;
7487 }
7488
7489 let next_out_of_line = decoder.next_out_of_line();
7490 let handles_before = decoder.remaining_handles();
7491 if let Some((inlined, num_bytes, num_handles)) =
7492 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7493 {
7494 let member_inline_size =
7495 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::TypeMarker>::inline_size(
7496 decoder.context,
7497 );
7498 if inlined != (member_inline_size <= 4) {
7499 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7500 }
7501 let inner_offset;
7502 let mut inner_depth = depth.clone();
7503 if inlined {
7504 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7505 inner_offset = next_offset;
7506 } else {
7507 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7508 inner_depth.increment()?;
7509 }
7510 let val_ref = self
7511 .offers
7512 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<Offer, 128>, D));
7513 fidl::decode!(fidl::encoding::Vector<Offer, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
7514 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7515 {
7516 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7517 }
7518 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7519 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7520 }
7521 }
7522
7523 next_offset += envelope_size;
7524 _next_ordinal_to_read += 1;
7525 if next_offset >= end_offset {
7526 return Ok(());
7527 }
7528
7529 while _next_ordinal_to_read < 2 {
7531 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7532 _next_ordinal_to_read += 1;
7533 next_offset += envelope_size;
7534 }
7535
7536 let next_out_of_line = decoder.next_out_of_line();
7537 let handles_before = decoder.remaining_handles();
7538 if let Some((inlined, num_bytes, num_handles)) =
7539 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7540 {
7541 let member_inline_size = <fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7542 if inlined != (member_inline_size <= 4) {
7543 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7544 }
7545 let inner_offset;
7546 let mut inner_depth = depth.clone();
7547 if inlined {
7548 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7549 inner_offset = next_offset;
7550 } else {
7551 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7552 inner_depth.increment()?;
7553 }
7554 let val_ref = self.include_properties.get_or_insert_with(
7555 || fidl::new_empty!(fidl::encoding::Vector<ResourceProperty, 64>, D),
7556 );
7557 fidl::decode!(fidl::encoding::Vector<ResourceProperty, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
7558 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7559 {
7560 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7561 }
7562 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7563 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7564 }
7565 }
7566
7567 next_offset += envelope_size;
7568 _next_ordinal_to_read += 1;
7569 if next_offset >= end_offset {
7570 return Ok(());
7571 }
7572
7573 while _next_ordinal_to_read < 3 {
7575 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7576 _next_ordinal_to_read += 1;
7577 next_offset += envelope_size;
7578 }
7579
7580 let next_out_of_line = decoder.next_out_of_line();
7581 let handles_before = decoder.remaining_handles();
7582 if let Some((inlined, num_bytes, num_handles)) =
7583 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7584 {
7585 let member_inline_size = <fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7586 if inlined != (member_inline_size <= 4) {
7587 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7588 }
7589 let inner_offset;
7590 let mut inner_depth = depth.clone();
7591 if inlined {
7592 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7593 inner_offset = next_offset;
7594 } else {
7595 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7596 inner_depth.increment()?;
7597 }
7598 let val_ref = self.exclude_properties.get_or_insert_with(
7599 || fidl::new_empty!(fidl::encoding::Vector<ResourceProperty, 64>, D),
7600 );
7601 fidl::decode!(fidl::encoding::Vector<ResourceProperty, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
7602 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7603 {
7604 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7605 }
7606 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7607 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7608 }
7609 }
7610
7611 next_offset += envelope_size;
7612
7613 while next_offset < end_offset {
7615 _next_ordinal_to_read += 1;
7616 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7617 next_offset += envelope_size;
7618 }
7619
7620 Ok(())
7621 }
7622 }
7623
7624 impl fidl::encoding::ValueTypeMarker for DeviceAddress {
7625 type Borrowed<'a> = &'a Self;
7626 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7627 value
7628 }
7629 }
7630
7631 unsafe impl fidl::encoding::TypeMarker for DeviceAddress {
7632 type Owned = Self;
7633
7634 #[inline(always)]
7635 fn inline_align(_context: fidl::encoding::Context) -> usize {
7636 8
7637 }
7638
7639 #[inline(always)]
7640 fn inline_size(_context: fidl::encoding::Context) -> usize {
7641 16
7642 }
7643 }
7644
7645 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceAddress, D>
7646 for &DeviceAddress
7647 {
7648 #[inline]
7649 unsafe fn encode(
7650 self,
7651 encoder: &mut fidl::encoding::Encoder<'_, D>,
7652 offset: usize,
7653 _depth: fidl::encoding::Depth,
7654 ) -> fidl::Result<()> {
7655 encoder.debug_check_bounds::<DeviceAddress>(offset);
7656 encoder.write_num::<u64>(self.ordinal(), offset);
7657 match self {
7658 DeviceAddress::IntValue(ref val) => {
7659 fidl::encoding::encode_in_envelope::<u8, D>(
7660 <u8 as fidl::encoding::ValueTypeMarker>::borrow(val),
7661 encoder, offset + 8, _depth
7662 )
7663 }
7664 DeviceAddress::ArrayIntValue(ref val) => {
7665 fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<u8, 10>, D>(
7666 <fidl::encoding::Vector<u8, 10> as fidl::encoding::ValueTypeMarker>::borrow(val),
7667 encoder, offset + 8, _depth
7668 )
7669 }
7670 DeviceAddress::CharIntValue(ref val) => {
7671 fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<4>, D>(
7672 <fidl::encoding::BoundedString<4> as fidl::encoding::ValueTypeMarker>::borrow(val),
7673 encoder, offset + 8, _depth
7674 )
7675 }
7676 DeviceAddress::ArrayCharIntValue(ref val) => {
7677 fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10>, D>(
7678 <fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10> as fidl::encoding::ValueTypeMarker>::borrow(val),
7679 encoder, offset + 8, _depth
7680 )
7681 }
7682 DeviceAddress::StringValue(ref val) => {
7683 fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<32>, D>(
7684 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow(val),
7685 encoder, offset + 8, _depth
7686 )
7687 }
7688 DeviceAddress::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
7689 }
7690 }
7691 }
7692
7693 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceAddress {
7694 #[inline(always)]
7695 fn new_empty() -> Self {
7696 Self::__SourceBreaking { unknown_ordinal: 0 }
7697 }
7698
7699 #[inline]
7700 unsafe fn decode(
7701 &mut self,
7702 decoder: &mut fidl::encoding::Decoder<'_, D>,
7703 offset: usize,
7704 mut depth: fidl::encoding::Depth,
7705 ) -> fidl::Result<()> {
7706 decoder.debug_check_bounds::<Self>(offset);
7707 #[allow(unused_variables)]
7708 let next_out_of_line = decoder.next_out_of_line();
7709 let handles_before = decoder.remaining_handles();
7710 let (ordinal, inlined, num_bytes, num_handles) =
7711 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7712
7713 let member_inline_size = match ordinal {
7714 1 => <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7715 2 => <fidl::encoding::Vector<u8, 10> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7716 3 => <fidl::encoding::BoundedString<4> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7717 4 => <fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7718 5 => <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7719 0 => return Err(fidl::Error::UnknownUnionTag),
7720 _ => num_bytes as usize,
7721 };
7722
7723 if inlined != (member_inline_size <= 4) {
7724 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7725 }
7726 let _inner_offset;
7727 if inlined {
7728 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7729 _inner_offset = offset + 8;
7730 } else {
7731 depth.increment()?;
7732 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7733 }
7734 match ordinal {
7735 1 => {
7736 #[allow(irrefutable_let_patterns)]
7737 if let DeviceAddress::IntValue(_) = self {
7738 } else {
7740 *self = DeviceAddress::IntValue(fidl::new_empty!(u8, D));
7742 }
7743 #[allow(irrefutable_let_patterns)]
7744 if let DeviceAddress::IntValue(ref mut val) = self {
7745 fidl::decode!(u8, D, val, decoder, _inner_offset, depth)?;
7746 } else {
7747 unreachable!()
7748 }
7749 }
7750 2 => {
7751 #[allow(irrefutable_let_patterns)]
7752 if let DeviceAddress::ArrayIntValue(_) = self {
7753 } else {
7755 *self = DeviceAddress::ArrayIntValue(
7757 fidl::new_empty!(fidl::encoding::Vector<u8, 10>, D),
7758 );
7759 }
7760 #[allow(irrefutable_let_patterns)]
7761 if let DeviceAddress::ArrayIntValue(ref mut val) = self {
7762 fidl::decode!(fidl::encoding::Vector<u8, 10>, D, val, decoder, _inner_offset, depth)?;
7763 } else {
7764 unreachable!()
7765 }
7766 }
7767 3 => {
7768 #[allow(irrefutable_let_patterns)]
7769 if let DeviceAddress::CharIntValue(_) = self {
7770 } else {
7772 *self = DeviceAddress::CharIntValue(fidl::new_empty!(
7774 fidl::encoding::BoundedString<4>,
7775 D
7776 ));
7777 }
7778 #[allow(irrefutable_let_patterns)]
7779 if let DeviceAddress::CharIntValue(ref mut val) = self {
7780 fidl::decode!(
7781 fidl::encoding::BoundedString<4>,
7782 D,
7783 val,
7784 decoder,
7785 _inner_offset,
7786 depth
7787 )?;
7788 } else {
7789 unreachable!()
7790 }
7791 }
7792 4 => {
7793 #[allow(irrefutable_let_patterns)]
7794 if let DeviceAddress::ArrayCharIntValue(_) = self {
7795 } else {
7797 *self = DeviceAddress::ArrayCharIntValue(fidl::new_empty!(
7799 fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10>,
7800 D
7801 ));
7802 }
7803 #[allow(irrefutable_let_patterns)]
7804 if let DeviceAddress::ArrayCharIntValue(ref mut val) = self {
7805 fidl::decode!(
7806 fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10>,
7807 D,
7808 val,
7809 decoder,
7810 _inner_offset,
7811 depth
7812 )?;
7813 } else {
7814 unreachable!()
7815 }
7816 }
7817 5 => {
7818 #[allow(irrefutable_let_patterns)]
7819 if let DeviceAddress::StringValue(_) = self {
7820 } else {
7822 *self = DeviceAddress::StringValue(fidl::new_empty!(
7824 fidl::encoding::BoundedString<32>,
7825 D
7826 ));
7827 }
7828 #[allow(irrefutable_let_patterns)]
7829 if let DeviceAddress::StringValue(ref mut val) = self {
7830 fidl::decode!(
7831 fidl::encoding::BoundedString<32>,
7832 D,
7833 val,
7834 decoder,
7835 _inner_offset,
7836 depth
7837 )?;
7838 } else {
7839 unreachable!()
7840 }
7841 }
7842 #[allow(deprecated)]
7843 ordinal => {
7844 for _ in 0..num_handles {
7845 decoder.drop_next_handle()?;
7846 }
7847 *self = DeviceAddress::__SourceBreaking { unknown_ordinal: ordinal };
7848 }
7849 }
7850 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
7851 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7852 }
7853 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7854 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7855 }
7856 Ok(())
7857 }
7858 }
7859
7860 impl fidl::encoding::ValueTypeMarker for HealthAlert {
7861 type Borrowed<'a> = &'a Self;
7862 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7863 value
7864 }
7865 }
7866
7867 unsafe impl fidl::encoding::TypeMarker for HealthAlert {
7868 type Owned = Self;
7869
7870 #[inline(always)]
7871 fn inline_align(_context: fidl::encoding::Context) -> usize {
7872 8
7873 }
7874
7875 #[inline(always)]
7876 fn inline_size(_context: fidl::encoding::Context) -> usize {
7877 16
7878 }
7879 }
7880
7881 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HealthAlert, D>
7882 for &HealthAlert
7883 {
7884 #[inline]
7885 unsafe fn encode(
7886 self,
7887 encoder: &mut fidl::encoding::Encoder<'_, D>,
7888 offset: usize,
7889 _depth: fidl::encoding::Depth,
7890 ) -> fidl::Result<()> {
7891 encoder.debug_check_bounds::<HealthAlert>(offset);
7892 encoder.write_num::<u64>(self.ordinal(), offset);
7893 match self {
7894 HealthAlert::SelfFault(ref val) => {
7895 fidl::encoding::encode_in_envelope::<HealthCheckResponse, D>(
7896 <HealthCheckResponse as fidl::encoding::ValueTypeMarker>::borrow(val),
7897 encoder,
7898 offset + 8,
7899 _depth,
7900 )
7901 }
7902 HealthAlert::UpstreamNeighborFault(ref val) => {
7903 fidl::encoding::encode_in_envelope::<HealthCheckResponse, D>(
7904 <HealthCheckResponse as fidl::encoding::ValueTypeMarker>::borrow(val),
7905 encoder,
7906 offset + 8,
7907 _depth,
7908 )
7909 }
7910 HealthAlert::DownstreamNeighborFault(ref val) => {
7911 fidl::encoding::encode_in_envelope::<HealthCheckResponse, D>(
7912 <HealthCheckResponse as fidl::encoding::ValueTypeMarker>::borrow(val),
7913 encoder,
7914 offset + 8,
7915 _depth,
7916 )
7917 }
7918 HealthAlert::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
7919 }
7920 }
7921 }
7922
7923 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HealthAlert {
7924 #[inline(always)]
7925 fn new_empty() -> Self {
7926 Self::__SourceBreaking { unknown_ordinal: 0 }
7927 }
7928
7929 #[inline]
7930 unsafe fn decode(
7931 &mut self,
7932 decoder: &mut fidl::encoding::Decoder<'_, D>,
7933 offset: usize,
7934 mut depth: fidl::encoding::Depth,
7935 ) -> fidl::Result<()> {
7936 decoder.debug_check_bounds::<Self>(offset);
7937 #[allow(unused_variables)]
7938 let next_out_of_line = decoder.next_out_of_line();
7939 let handles_before = decoder.remaining_handles();
7940 let (ordinal, inlined, num_bytes, num_handles) =
7941 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7942
7943 let member_inline_size = match ordinal {
7944 1 => <HealthCheckResponse as fidl::encoding::TypeMarker>::inline_size(
7945 decoder.context,
7946 ),
7947 2 => <HealthCheckResponse as fidl::encoding::TypeMarker>::inline_size(
7948 decoder.context,
7949 ),
7950 3 => <HealthCheckResponse as fidl::encoding::TypeMarker>::inline_size(
7951 decoder.context,
7952 ),
7953 0 => return Err(fidl::Error::UnknownUnionTag),
7954 _ => num_bytes as usize,
7955 };
7956
7957 if inlined != (member_inline_size <= 4) {
7958 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7959 }
7960 let _inner_offset;
7961 if inlined {
7962 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7963 _inner_offset = offset + 8;
7964 } else {
7965 depth.increment()?;
7966 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7967 }
7968 match ordinal {
7969 1 => {
7970 #[allow(irrefutable_let_patterns)]
7971 if let HealthAlert::SelfFault(_) = self {
7972 } else {
7974 *self = HealthAlert::SelfFault(fidl::new_empty!(HealthCheckResponse, D));
7976 }
7977 #[allow(irrefutable_let_patterns)]
7978 if let HealthAlert::SelfFault(ref mut val) = self {
7979 fidl::decode!(HealthCheckResponse, D, val, decoder, _inner_offset, depth)?;
7980 } else {
7981 unreachable!()
7982 }
7983 }
7984 2 => {
7985 #[allow(irrefutable_let_patterns)]
7986 if let HealthAlert::UpstreamNeighborFault(_) = self {
7987 } else {
7989 *self = HealthAlert::UpstreamNeighborFault(fidl::new_empty!(
7991 HealthCheckResponse,
7992 D
7993 ));
7994 }
7995 #[allow(irrefutable_let_patterns)]
7996 if let HealthAlert::UpstreamNeighborFault(ref mut val) = self {
7997 fidl::decode!(HealthCheckResponse, D, val, decoder, _inner_offset, depth)?;
7998 } else {
7999 unreachable!()
8000 }
8001 }
8002 3 => {
8003 #[allow(irrefutable_let_patterns)]
8004 if let HealthAlert::DownstreamNeighborFault(_) = self {
8005 } else {
8007 *self = HealthAlert::DownstreamNeighborFault(fidl::new_empty!(
8009 HealthCheckResponse,
8010 D
8011 ));
8012 }
8013 #[allow(irrefutable_let_patterns)]
8014 if let HealthAlert::DownstreamNeighborFault(ref mut val) = self {
8015 fidl::decode!(HealthCheckResponse, D, val, decoder, _inner_offset, depth)?;
8016 } else {
8017 unreachable!()
8018 }
8019 }
8020 #[allow(deprecated)]
8021 ordinal => {
8022 for _ in 0..num_handles {
8023 decoder.drop_next_handle()?;
8024 }
8025 *self = HealthAlert::__SourceBreaking { unknown_ordinal: ordinal };
8026 }
8027 }
8028 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
8029 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8030 }
8031 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8032 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8033 }
8034 Ok(())
8035 }
8036 }
8037
8038 impl fidl::encoding::ValueTypeMarker for HealthDiagnosticValue {
8039 type Borrowed<'a> = &'a Self;
8040 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8041 value
8042 }
8043 }
8044
8045 unsafe impl fidl::encoding::TypeMarker for HealthDiagnosticValue {
8046 type Owned = Self;
8047
8048 #[inline(always)]
8049 fn inline_align(_context: fidl::encoding::Context) -> usize {
8050 8
8051 }
8052
8053 #[inline(always)]
8054 fn inline_size(_context: fidl::encoding::Context) -> usize {
8055 16
8056 }
8057 }
8058
8059 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HealthDiagnosticValue, D>
8060 for &HealthDiagnosticValue
8061 {
8062 #[inline]
8063 unsafe fn encode(
8064 self,
8065 encoder: &mut fidl::encoding::Encoder<'_, D>,
8066 offset: usize,
8067 _depth: fidl::encoding::Depth,
8068 ) -> fidl::Result<()> {
8069 encoder.debug_check_bounds::<HealthDiagnosticValue>(offset);
8070 encoder.write_num::<u64>(self.ordinal(), offset);
8071 match self {
8072 HealthDiagnosticValue::StringValue(ref val) => fidl::encoding::encode_in_envelope::<
8073 fidl::encoding::BoundedString<256>,
8074 D,
8075 >(
8076 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
8077 val,
8078 ),
8079 encoder,
8080 offset + 8,
8081 _depth,
8082 ),
8083 HealthDiagnosticValue::IntValue(ref val) => {
8084 fidl::encoding::encode_in_envelope::<i64, D>(
8085 <i64 as fidl::encoding::ValueTypeMarker>::borrow(val),
8086 encoder,
8087 offset + 8,
8088 _depth,
8089 )
8090 }
8091 HealthDiagnosticValue::UintValue(ref val) => {
8092 fidl::encoding::encode_in_envelope::<u64, D>(
8093 <u64 as fidl::encoding::ValueTypeMarker>::borrow(val),
8094 encoder,
8095 offset + 8,
8096 _depth,
8097 )
8098 }
8099 HealthDiagnosticValue::BoolValue(ref val) => {
8100 fidl::encoding::encode_in_envelope::<bool, D>(
8101 <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
8102 encoder,
8103 offset + 8,
8104 _depth,
8105 )
8106 }
8107 HealthDiagnosticValue::Timestamp(ref val) => {
8108 fidl::encoding::encode_in_envelope::<fidl::BootInstant, D>(
8109 <fidl::BootInstant as fidl::encoding::ValueTypeMarker>::borrow(val),
8110 encoder,
8111 offset + 8,
8112 _depth,
8113 )
8114 }
8115 HealthDiagnosticValue::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
8116 }
8117 }
8118 }
8119
8120 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HealthDiagnosticValue {
8121 #[inline(always)]
8122 fn new_empty() -> Self {
8123 Self::__SourceBreaking { unknown_ordinal: 0 }
8124 }
8125
8126 #[inline]
8127 unsafe fn decode(
8128 &mut self,
8129 decoder: &mut fidl::encoding::Decoder<'_, D>,
8130 offset: usize,
8131 mut depth: fidl::encoding::Depth,
8132 ) -> fidl::Result<()> {
8133 decoder.debug_check_bounds::<Self>(offset);
8134 #[allow(unused_variables)]
8135 let next_out_of_line = decoder.next_out_of_line();
8136 let handles_before = decoder.remaining_handles();
8137 let (ordinal, inlined, num_bytes, num_handles) =
8138 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
8139
8140 let member_inline_size = match ordinal {
8141 1 => {
8142 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
8143 decoder.context,
8144 )
8145 }
8146 2 => <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
8147 3 => <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
8148 4 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
8149 5 => {
8150 <fidl::BootInstant as fidl::encoding::TypeMarker>::inline_size(decoder.context)
8151 }
8152 0 => return Err(fidl::Error::UnknownUnionTag),
8153 _ => num_bytes as usize,
8154 };
8155
8156 if inlined != (member_inline_size <= 4) {
8157 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8158 }
8159 let _inner_offset;
8160 if inlined {
8161 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
8162 _inner_offset = offset + 8;
8163 } else {
8164 depth.increment()?;
8165 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8166 }
8167 match ordinal {
8168 1 => {
8169 #[allow(irrefutable_let_patterns)]
8170 if let HealthDiagnosticValue::StringValue(_) = self {
8171 } else {
8173 *self = HealthDiagnosticValue::StringValue(fidl::new_empty!(
8175 fidl::encoding::BoundedString<256>,
8176 D
8177 ));
8178 }
8179 #[allow(irrefutable_let_patterns)]
8180 if let HealthDiagnosticValue::StringValue(ref mut val) = self {
8181 fidl::decode!(
8182 fidl::encoding::BoundedString<256>,
8183 D,
8184 val,
8185 decoder,
8186 _inner_offset,
8187 depth
8188 )?;
8189 } else {
8190 unreachable!()
8191 }
8192 }
8193 2 => {
8194 #[allow(irrefutable_let_patterns)]
8195 if let HealthDiagnosticValue::IntValue(_) = self {
8196 } else {
8198 *self = HealthDiagnosticValue::IntValue(fidl::new_empty!(i64, D));
8200 }
8201 #[allow(irrefutable_let_patterns)]
8202 if let HealthDiagnosticValue::IntValue(ref mut val) = self {
8203 fidl::decode!(i64, D, val, decoder, _inner_offset, depth)?;
8204 } else {
8205 unreachable!()
8206 }
8207 }
8208 3 => {
8209 #[allow(irrefutable_let_patterns)]
8210 if let HealthDiagnosticValue::UintValue(_) = self {
8211 } else {
8213 *self = HealthDiagnosticValue::UintValue(fidl::new_empty!(u64, D));
8215 }
8216 #[allow(irrefutable_let_patterns)]
8217 if let HealthDiagnosticValue::UintValue(ref mut val) = self {
8218 fidl::decode!(u64, D, val, decoder, _inner_offset, depth)?;
8219 } else {
8220 unreachable!()
8221 }
8222 }
8223 4 => {
8224 #[allow(irrefutable_let_patterns)]
8225 if let HealthDiagnosticValue::BoolValue(_) = self {
8226 } else {
8228 *self = HealthDiagnosticValue::BoolValue(fidl::new_empty!(bool, D));
8230 }
8231 #[allow(irrefutable_let_patterns)]
8232 if let HealthDiagnosticValue::BoolValue(ref mut val) = self {
8233 fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
8234 } else {
8235 unreachable!()
8236 }
8237 }
8238 5 => {
8239 #[allow(irrefutable_let_patterns)]
8240 if let HealthDiagnosticValue::Timestamp(_) = self {
8241 } else {
8243 *self = HealthDiagnosticValue::Timestamp(fidl::new_empty!(
8245 fidl::BootInstant,
8246 D
8247 ));
8248 }
8249 #[allow(irrefutable_let_patterns)]
8250 if let HealthDiagnosticValue::Timestamp(ref mut val) = self {
8251 fidl::decode!(fidl::BootInstant, D, val, decoder, _inner_offset, depth)?;
8252 } else {
8253 unreachable!()
8254 }
8255 }
8256 #[allow(deprecated)]
8257 ordinal => {
8258 for _ in 0..num_handles {
8259 decoder.drop_next_handle()?;
8260 }
8261 *self = HealthDiagnosticValue::__SourceBreaking { unknown_ordinal: ordinal };
8262 }
8263 }
8264 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
8265 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8266 }
8267 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8268 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8269 }
8270 Ok(())
8271 }
8272 }
8273
8274 impl fidl::encoding::ValueTypeMarker for NodePropertyValue {
8275 type Borrowed<'a> = &'a Self;
8276 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8277 value
8278 }
8279 }
8280
8281 unsafe impl fidl::encoding::TypeMarker for NodePropertyValue {
8282 type Owned = Self;
8283
8284 #[inline(always)]
8285 fn inline_align(_context: fidl::encoding::Context) -> usize {
8286 8
8287 }
8288
8289 #[inline(always)]
8290 fn inline_size(_context: fidl::encoding::Context) -> usize {
8291 16
8292 }
8293 }
8294
8295 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodePropertyValue, D>
8296 for &NodePropertyValue
8297 {
8298 #[inline]
8299 unsafe fn encode(
8300 self,
8301 encoder: &mut fidl::encoding::Encoder<'_, D>,
8302 offset: usize,
8303 _depth: fidl::encoding::Depth,
8304 ) -> fidl::Result<()> {
8305 encoder.debug_check_bounds::<NodePropertyValue>(offset);
8306 encoder.write_num::<u64>(self.ordinal(), offset);
8307 match self {
8308 NodePropertyValue::IntValue(ref val) => {
8309 fidl::encoding::encode_in_envelope::<u32, D>(
8310 <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
8311 encoder,
8312 offset + 8,
8313 _depth,
8314 )
8315 }
8316 NodePropertyValue::StringValue(ref val) => fidl::encoding::encode_in_envelope::<
8317 fidl::encoding::BoundedString<256>,
8318 D,
8319 >(
8320 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
8321 val,
8322 ),
8323 encoder,
8324 offset + 8,
8325 _depth,
8326 ),
8327 NodePropertyValue::BoolValue(ref val) => {
8328 fidl::encoding::encode_in_envelope::<bool, D>(
8329 <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
8330 encoder,
8331 offset + 8,
8332 _depth,
8333 )
8334 }
8335 NodePropertyValue::EnumValue(ref val) => fidl::encoding::encode_in_envelope::<
8336 fidl::encoding::BoundedString<256>,
8337 D,
8338 >(
8339 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
8340 val,
8341 ),
8342 encoder,
8343 offset + 8,
8344 _depth,
8345 ),
8346 NodePropertyValue::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
8347 }
8348 }
8349 }
8350
8351 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodePropertyValue {
8352 #[inline(always)]
8353 fn new_empty() -> Self {
8354 Self::__SourceBreaking { unknown_ordinal: 0 }
8355 }
8356
8357 #[inline]
8358 unsafe fn decode(
8359 &mut self,
8360 decoder: &mut fidl::encoding::Decoder<'_, D>,
8361 offset: usize,
8362 mut depth: fidl::encoding::Depth,
8363 ) -> fidl::Result<()> {
8364 decoder.debug_check_bounds::<Self>(offset);
8365 #[allow(unused_variables)]
8366 let next_out_of_line = decoder.next_out_of_line();
8367 let handles_before = decoder.remaining_handles();
8368 let (ordinal, inlined, num_bytes, num_handles) =
8369 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
8370
8371 let member_inline_size = match ordinal {
8372 1 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
8373 2 => {
8374 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
8375 decoder.context,
8376 )
8377 }
8378 3 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
8379 4 => {
8380 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
8381 decoder.context,
8382 )
8383 }
8384 0 => return Err(fidl::Error::UnknownUnionTag),
8385 _ => num_bytes as usize,
8386 };
8387
8388 if inlined != (member_inline_size <= 4) {
8389 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8390 }
8391 let _inner_offset;
8392 if inlined {
8393 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
8394 _inner_offset = offset + 8;
8395 } else {
8396 depth.increment()?;
8397 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8398 }
8399 match ordinal {
8400 1 => {
8401 #[allow(irrefutable_let_patterns)]
8402 if let NodePropertyValue::IntValue(_) = self {
8403 } else {
8405 *self = NodePropertyValue::IntValue(fidl::new_empty!(u32, D));
8407 }
8408 #[allow(irrefutable_let_patterns)]
8409 if let NodePropertyValue::IntValue(ref mut val) = self {
8410 fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
8411 } else {
8412 unreachable!()
8413 }
8414 }
8415 2 => {
8416 #[allow(irrefutable_let_patterns)]
8417 if let NodePropertyValue::StringValue(_) = self {
8418 } else {
8420 *self = NodePropertyValue::StringValue(fidl::new_empty!(
8422 fidl::encoding::BoundedString<256>,
8423 D
8424 ));
8425 }
8426 #[allow(irrefutable_let_patterns)]
8427 if let NodePropertyValue::StringValue(ref mut val) = self {
8428 fidl::decode!(
8429 fidl::encoding::BoundedString<256>,
8430 D,
8431 val,
8432 decoder,
8433 _inner_offset,
8434 depth
8435 )?;
8436 } else {
8437 unreachable!()
8438 }
8439 }
8440 3 => {
8441 #[allow(irrefutable_let_patterns)]
8442 if let NodePropertyValue::BoolValue(_) = self {
8443 } else {
8445 *self = NodePropertyValue::BoolValue(fidl::new_empty!(bool, D));
8447 }
8448 #[allow(irrefutable_let_patterns)]
8449 if let NodePropertyValue::BoolValue(ref mut val) = self {
8450 fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
8451 } else {
8452 unreachable!()
8453 }
8454 }
8455 4 => {
8456 #[allow(irrefutable_let_patterns)]
8457 if let NodePropertyValue::EnumValue(_) = self {
8458 } else {
8460 *self = NodePropertyValue::EnumValue(fidl::new_empty!(
8462 fidl::encoding::BoundedString<256>,
8463 D
8464 ));
8465 }
8466 #[allow(irrefutable_let_patterns)]
8467 if let NodePropertyValue::EnumValue(ref mut val) = self {
8468 fidl::decode!(
8469 fidl::encoding::BoundedString<256>,
8470 D,
8471 val,
8472 decoder,
8473 _inner_offset,
8474 depth
8475 )?;
8476 } else {
8477 unreachable!()
8478 }
8479 }
8480 #[allow(deprecated)]
8481 ordinal => {
8482 for _ in 0..num_handles {
8483 decoder.drop_next_handle()?;
8484 }
8485 *self = NodePropertyValue::__SourceBreaking { unknown_ordinal: ordinal };
8486 }
8487 }
8488 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
8489 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8490 }
8491 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8492 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8493 }
8494 Ok(())
8495 }
8496 }
8497
8498 impl fidl::encoding::ValueTypeMarker for Offer {
8499 type Borrowed<'a> = &'a Self;
8500 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8501 value
8502 }
8503 }
8504
8505 unsafe impl fidl::encoding::TypeMarker for Offer {
8506 type Owned = Self;
8507
8508 #[inline(always)]
8509 fn inline_align(_context: fidl::encoding::Context) -> usize {
8510 8
8511 }
8512
8513 #[inline(always)]
8514 fn inline_size(_context: fidl::encoding::Context) -> usize {
8515 16
8516 }
8517 }
8518
8519 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Offer, D> for &Offer {
8520 #[inline]
8521 unsafe fn encode(
8522 self,
8523 encoder: &mut fidl::encoding::Encoder<'_, D>,
8524 offset: usize,
8525 _depth: fidl::encoding::Depth,
8526 ) -> fidl::Result<()> {
8527 encoder.debug_check_bounds::<Offer>(offset);
8528 encoder.write_num::<u64>(self.ordinal(), offset);
8529 match self {
8530 Offer::ZirconTransport(ref val) => {
8531 fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl_common::Offer, D>(
8532 <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::ValueTypeMarker>::borrow(val),
8533 encoder, offset + 8, _depth
8534 )
8535 }
8536 Offer::DriverTransport(ref val) => {
8537 fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl_common::Offer, D>(
8538 <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::ValueTypeMarker>::borrow(val),
8539 encoder, offset + 8, _depth
8540 )
8541 }
8542 Offer::DictionaryOffer(ref val) => {
8543 fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl_common::Offer, D>(
8544 <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::ValueTypeMarker>::borrow(val),
8545 encoder, offset + 8, _depth
8546 )
8547 }
8548 Offer::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
8549 }
8550 }
8551 }
8552
8553 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Offer {
8554 #[inline(always)]
8555 fn new_empty() -> Self {
8556 Self::__SourceBreaking { unknown_ordinal: 0 }
8557 }
8558
8559 #[inline]
8560 unsafe fn decode(
8561 &mut self,
8562 decoder: &mut fidl::encoding::Decoder<'_, D>,
8563 offset: usize,
8564 mut depth: fidl::encoding::Depth,
8565 ) -> fidl::Result<()> {
8566 decoder.debug_check_bounds::<Self>(offset);
8567 #[allow(unused_variables)]
8568 let next_out_of_line = decoder.next_out_of_line();
8569 let handles_before = decoder.remaining_handles();
8570 let (ordinal, inlined, num_bytes, num_handles) =
8571 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
8572
8573 let member_inline_size = match ordinal {
8574 1 => <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::TypeMarker>::inline_size(decoder.context),
8575 2 => <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::TypeMarker>::inline_size(decoder.context),
8576 3 => <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::TypeMarker>::inline_size(decoder.context),
8577 0 => return Err(fidl::Error::UnknownUnionTag),
8578 _ => num_bytes as usize,
8579 };
8580
8581 if inlined != (member_inline_size <= 4) {
8582 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8583 }
8584 let _inner_offset;
8585 if inlined {
8586 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
8587 _inner_offset = offset + 8;
8588 } else {
8589 depth.increment()?;
8590 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8591 }
8592 match ordinal {
8593 1 => {
8594 #[allow(irrefutable_let_patterns)]
8595 if let Offer::ZirconTransport(_) = self {
8596 } else {
8598 *self = Offer::ZirconTransport(fidl::new_empty!(
8600 fidl_fuchsia_component_decl_common::Offer,
8601 D
8602 ));
8603 }
8604 #[allow(irrefutable_let_patterns)]
8605 if let Offer::ZirconTransport(ref mut val) = self {
8606 fidl::decode!(
8607 fidl_fuchsia_component_decl_common::Offer,
8608 D,
8609 val,
8610 decoder,
8611 _inner_offset,
8612 depth
8613 )?;
8614 } else {
8615 unreachable!()
8616 }
8617 }
8618 2 => {
8619 #[allow(irrefutable_let_patterns)]
8620 if let Offer::DriverTransport(_) = self {
8621 } else {
8623 *self = Offer::DriverTransport(fidl::new_empty!(
8625 fidl_fuchsia_component_decl_common::Offer,
8626 D
8627 ));
8628 }
8629 #[allow(irrefutable_let_patterns)]
8630 if let Offer::DriverTransport(ref mut val) = self {
8631 fidl::decode!(
8632 fidl_fuchsia_component_decl_common::Offer,
8633 D,
8634 val,
8635 decoder,
8636 _inner_offset,
8637 depth
8638 )?;
8639 } else {
8640 unreachable!()
8641 }
8642 }
8643 3 => {
8644 #[allow(irrefutable_let_patterns)]
8645 if let Offer::DictionaryOffer(_) = self {
8646 } else {
8648 *self = Offer::DictionaryOffer(fidl::new_empty!(
8650 fidl_fuchsia_component_decl_common::Offer,
8651 D
8652 ));
8653 }
8654 #[allow(irrefutable_let_patterns)]
8655 if let Offer::DictionaryOffer(ref mut val) = self {
8656 fidl::decode!(
8657 fidl_fuchsia_component_decl_common::Offer,
8658 D,
8659 val,
8660 decoder,
8661 _inner_offset,
8662 depth
8663 )?;
8664 } else {
8665 unreachable!()
8666 }
8667 }
8668 #[allow(deprecated)]
8669 ordinal => {
8670 for _ in 0..num_handles {
8671 decoder.drop_next_handle()?;
8672 }
8673 *self = Offer::__SourceBreaking { unknown_ordinal: ordinal };
8674 }
8675 }
8676 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
8677 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8678 }
8679 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8680 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8681 }
8682 Ok(())
8683 }
8684 }
8685}