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, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
803pub struct HealthHealthCheckRequest {
804 pub request: HealthCheckRequest,
805}
806
807impl fidl::Persistable for HealthHealthCheckRequest {}
808
809#[derive(Clone, Debug, PartialEq)]
810pub struct HealthOnHealthAlertRequest {
811 pub alert: HealthAlert,
812}
813
814impl fidl::Persistable for HealthOnHealthAlertRequest {}
815
816#[derive(Clone, Debug, PartialEq)]
817pub struct NodeProperty2 {
818 pub key: String,
820 pub value: NodePropertyValue,
822}
823
824impl fidl::Persistable for NodeProperty2 {}
825
826#[derive(Clone, Debug, PartialEq)]
828pub struct NodePropertyEntry2 {
829 pub name: String,
831 pub properties: Vec<NodeProperty2>,
835}
836
837impl fidl::Persistable for NodePropertyEntry2 {}
838
839#[derive(Clone, Debug, PartialEq)]
842pub struct ParentSpec2 {
843 pub bind_rules: Vec<BindRule2>,
845 pub properties: Vec<NodeProperty2>,
848}
849
850impl fidl::Persistable for ParentSpec2 {}
851
852#[derive(Clone, Debug, PartialEq)]
853pub struct ResourceProperty {
854 pub key: String,
856 pub value: NodePropertyValue,
858}
859
860impl fidl::Persistable for ResourceProperty {}
861
862#[derive(Clone, Debug, Default, PartialEq)]
863pub struct BusInfo {
864 pub bus: Option<BusType>,
866 pub address: Option<DeviceAddress>,
868 pub address_stability: Option<DeviceAddressStability>,
870 #[doc(hidden)]
871 pub __source_breaking: fidl::marker::SourceBreaking,
872}
873
874impl fidl::Persistable for BusInfo {}
875
876#[derive(Clone, Debug, Default, PartialEq)]
878pub struct CompositeDriverInfo {
879 pub composite_name: Option<String>,
881 pub driver_info: Option<DriverInfo>,
883 #[doc(hidden)]
884 pub __source_breaking: fidl::marker::SourceBreaking,
885}
886
887impl fidl::Persistable for CompositeDriverInfo {}
888
889#[derive(Clone, Debug, Default, PartialEq)]
891pub struct CompositeDriverMatch {
892 pub composite_driver: Option<CompositeDriverInfo>,
894 pub parent_names: Option<Vec<String>>,
897 pub primary_parent_index: Option<u32>,
900 #[doc(hidden)]
901 pub __source_breaking: fidl::marker::SourceBreaking,
902}
903
904impl fidl::Persistable for CompositeDriverMatch {}
905
906#[derive(Clone, Debug, Default, PartialEq)]
908pub struct CompositeInfo {
909 pub spec: Option<CompositeNodeSpec>,
911 pub matched_driver: Option<CompositeDriverMatch>,
914 #[doc(hidden)]
915 pub __source_breaking: fidl::marker::SourceBreaking,
916}
917
918impl fidl::Persistable for CompositeInfo {}
919
920#[derive(Clone, Debug, Default, PartialEq)]
922pub struct CompositeNodeSpec {
923 pub name: Option<String>,
925 pub parents2: Option<Vec<ParentSpec2>>,
928 pub driver_host: Option<String>,
933 #[doc(hidden)]
934 pub __source_breaking: fidl::marker::SourceBreaking,
935}
936
937impl fidl::Persistable for CompositeNodeSpec {}
938
939#[derive(Clone, Debug, Default, PartialEq)]
941pub struct CompositeParent {
942 pub composite: Option<CompositeInfo>,
944 pub index: Option<u32>,
946 #[doc(hidden)]
947 pub __source_breaking: fidl::marker::SourceBreaking,
948}
949
950impl fidl::Persistable for CompositeParent {}
951
952#[derive(Clone, Debug, Default, PartialEq)]
955pub struct Dependency {
956 pub selector: Option<Selector>,
958 pub tags: Option<Vec<ResourceProperty>>,
960 #[doc(hidden)]
961 pub __source_breaking: fidl::marker::SourceBreaking,
962}
963
964impl fidl::Persistable for Dependency {}
965
966#[derive(Clone, Debug, Default, PartialEq)]
968pub struct DeviceCategory {
969 pub category: Option<String>,
970 pub subcategory: Option<String>,
971 #[doc(hidden)]
972 pub __source_breaking: fidl::marker::SourceBreaking,
973}
974
975impl fidl::Persistable for DeviceCategory {}
976
977#[derive(Clone, Debug, Default, PartialEq)]
979pub struct DriverInfo {
980 pub url: Option<String>,
982 pub name: Option<String>,
985 pub colocate: Option<bool>,
987 pub package_type: Option<DriverPackageType>,
989 pub is_fallback: Option<bool>,
993 pub device_categories: Option<Vec<DeviceCategory>>,
995 pub bind_rules_bytecode: Option<Vec<u8>>,
999 pub driver_framework_version: Option<u8>,
1003 pub is_disabled: Option<bool>,
1005 #[doc(hidden)]
1006 pub __source_breaking: fidl::marker::SourceBreaking,
1007}
1008
1009impl fidl::Persistable for DriverInfo {}
1010
1011#[derive(Clone, Debug, Default, PartialEq)]
1013pub struct HealthCheckResponse {
1014 pub diagnostics: Option<Vec<HealthDiagnosticItem>>,
1018 pub conditions: Option<Vec<HealthCondition>>,
1023 #[doc(hidden)]
1024 pub __source_breaking: fidl::marker::SourceBreaking,
1025}
1026
1027impl fidl::Persistable for HealthCheckResponse {}
1028
1029#[derive(Clone, Debug, Default, PartialEq)]
1031pub struct HealthCondition {
1032 pub status: Option<HealthStatus>,
1035 pub reason_code: Option<String>,
1038 pub message: Option<String>,
1040 pub diagnostics: Option<Vec<HealthDiagnosticItem>>,
1042 pub first_observed: Option<fidl::BootInstant>,
1044 pub last_observed: Option<fidl::BootInstant>,
1047 pub occurrence_count: Option<u64>,
1050 #[doc(hidden)]
1051 pub __source_breaking: fidl::marker::SourceBreaking,
1052}
1053
1054impl fidl::Persistable for HealthCondition {}
1055
1056#[derive(Clone, Debug, Default, PartialEq)]
1059pub struct Node2 {
1060 pub name: Option<String>,
1061 pub dependencies: Option<Vec<Dependency>>,
1062 #[doc(hidden)]
1063 pub __source_breaking: fidl::marker::SourceBreaking,
1064}
1065
1066impl fidl::Persistable for Node2 {}
1067
1068#[derive(Clone, Debug, Default, PartialEq)]
1069pub struct NodeControllerRequestBindRequest {
1070 pub force_rebind: Option<bool>,
1073 pub driver_url_suffix: Option<String>,
1077 #[doc(hidden)]
1078 pub __source_breaking: fidl::marker::SourceBreaking,
1079}
1080
1081impl fidl::Persistable for NodeControllerRequestBindRequest {}
1082
1083#[derive(Clone, Debug, Default, PartialEq)]
1086pub struct NodeSymbol {
1087 pub name: Option<String>,
1089 pub address: Option<u64>,
1091 pub module_name: Option<String>,
1094 #[doc(hidden)]
1095 pub __source_breaking: fidl::marker::SourceBreaking,
1096}
1097
1098impl fidl::Persistable for NodeSymbol {}
1099
1100#[derive(Clone, Debug, Default, PartialEq)]
1102pub struct Selector {
1103 pub offers: Option<Vec<Offer>>,
1105 pub include_properties: Option<Vec<ResourceProperty>>,
1108 pub exclude_properties: Option<Vec<ResourceProperty>>,
1110 #[doc(hidden)]
1111 pub __source_breaking: fidl::marker::SourceBreaking,
1112}
1113
1114impl fidl::Persistable for Selector {}
1115
1116#[derive(Clone, Debug)]
1117pub enum DeviceAddress {
1118 IntValue(u8),
1120 ArrayIntValue(Vec<u8>),
1122 CharIntValue(String),
1124 ArrayCharIntValue(Vec<String>),
1126 StringValue(String),
1128 #[doc(hidden)]
1129 __SourceBreaking { unknown_ordinal: u64 },
1130}
1131
1132#[macro_export]
1134macro_rules! DeviceAddressUnknown {
1135 () => {
1136 _
1137 };
1138}
1139
1140impl PartialEq for DeviceAddress {
1142 fn eq(&self, other: &Self) -> bool {
1143 match (self, other) {
1144 (Self::IntValue(x), Self::IntValue(y)) => *x == *y,
1145 (Self::ArrayIntValue(x), Self::ArrayIntValue(y)) => *x == *y,
1146 (Self::CharIntValue(x), Self::CharIntValue(y)) => *x == *y,
1147 (Self::ArrayCharIntValue(x), Self::ArrayCharIntValue(y)) => *x == *y,
1148 (Self::StringValue(x), Self::StringValue(y)) => *x == *y,
1149 _ => false,
1150 }
1151 }
1152}
1153
1154impl DeviceAddress {
1155 #[inline]
1156 pub fn ordinal(&self) -> u64 {
1157 match *self {
1158 Self::IntValue(_) => 1,
1159 Self::ArrayIntValue(_) => 2,
1160 Self::CharIntValue(_) => 3,
1161 Self::ArrayCharIntValue(_) => 4,
1162 Self::StringValue(_) => 5,
1163 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1164 }
1165 }
1166
1167 #[inline]
1168 pub fn unknown_variant_for_testing() -> Self {
1169 Self::__SourceBreaking { unknown_ordinal: 0 }
1170 }
1171
1172 #[inline]
1173 pub fn is_unknown(&self) -> bool {
1174 match self {
1175 Self::__SourceBreaking { .. } => true,
1176 _ => false,
1177 }
1178 }
1179}
1180
1181impl fidl::Persistable for DeviceAddress {}
1182
1183#[derive(Clone, Debug)]
1188pub enum HealthAlert {
1189 SelfFault(HealthCheckResponse),
1195 UpstreamNeighborFault(HealthCheckResponse),
1198 DownstreamNeighborFault(HealthCheckResponse),
1201 #[doc(hidden)]
1202 __SourceBreaking { unknown_ordinal: u64 },
1203}
1204
1205#[macro_export]
1207macro_rules! HealthAlertUnknown {
1208 () => {
1209 _
1210 };
1211}
1212
1213impl PartialEq for HealthAlert {
1215 fn eq(&self, other: &Self) -> bool {
1216 match (self, other) {
1217 (Self::SelfFault(x), Self::SelfFault(y)) => *x == *y,
1218 (Self::UpstreamNeighborFault(x), Self::UpstreamNeighborFault(y)) => *x == *y,
1219 (Self::DownstreamNeighborFault(x), Self::DownstreamNeighborFault(y)) => *x == *y,
1220 _ => false,
1221 }
1222 }
1223}
1224
1225impl HealthAlert {
1226 #[inline]
1227 pub fn ordinal(&self) -> u64 {
1228 match *self {
1229 Self::SelfFault(_) => 1,
1230 Self::UpstreamNeighborFault(_) => 2,
1231 Self::DownstreamNeighborFault(_) => 3,
1232 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1233 }
1234 }
1235
1236 #[inline]
1237 pub fn unknown_variant_for_testing() -> Self {
1238 Self::__SourceBreaking { unknown_ordinal: 0 }
1239 }
1240
1241 #[inline]
1242 pub fn is_unknown(&self) -> bool {
1243 match self {
1244 Self::__SourceBreaking { .. } => true,
1245 _ => false,
1246 }
1247 }
1248}
1249
1250impl fidl::Persistable for HealthAlert {}
1251
1252#[derive(Clone, Debug)]
1254pub enum HealthDiagnosticValue {
1255 StringValue(String),
1256 IntValue(i64),
1257 UintValue(u64),
1258 BoolValue(bool),
1259 Timestamp(fidl::BootInstant),
1261 #[doc(hidden)]
1262 __SourceBreaking {
1263 unknown_ordinal: u64,
1264 },
1265}
1266
1267#[macro_export]
1269macro_rules! HealthDiagnosticValueUnknown {
1270 () => {
1271 _
1272 };
1273}
1274
1275impl PartialEq for HealthDiagnosticValue {
1277 fn eq(&self, other: &Self) -> bool {
1278 match (self, other) {
1279 (Self::StringValue(x), Self::StringValue(y)) => *x == *y,
1280 (Self::IntValue(x), Self::IntValue(y)) => *x == *y,
1281 (Self::UintValue(x), Self::UintValue(y)) => *x == *y,
1282 (Self::BoolValue(x), Self::BoolValue(y)) => *x == *y,
1283 (Self::Timestamp(x), Self::Timestamp(y)) => *x == *y,
1284 _ => false,
1285 }
1286 }
1287}
1288
1289impl HealthDiagnosticValue {
1290 #[inline]
1291 pub fn ordinal(&self) -> u64 {
1292 match *self {
1293 Self::StringValue(_) => 1,
1294 Self::IntValue(_) => 2,
1295 Self::UintValue(_) => 3,
1296 Self::BoolValue(_) => 4,
1297 Self::Timestamp(_) => 5,
1298 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1299 }
1300 }
1301
1302 #[inline]
1303 pub fn unknown_variant_for_testing() -> Self {
1304 Self::__SourceBreaking { unknown_ordinal: 0 }
1305 }
1306
1307 #[inline]
1308 pub fn is_unknown(&self) -> bool {
1309 match self {
1310 Self::__SourceBreaking { .. } => true,
1311 _ => false,
1312 }
1313 }
1314}
1315
1316impl fidl::Persistable for HealthDiagnosticValue {}
1317
1318#[derive(Clone, Debug)]
1319pub enum NodePropertyValue {
1320 IntValue(u32),
1321 StringValue(String),
1322 BoolValue(bool),
1323 EnumValue(String),
1324 #[doc(hidden)]
1325 __SourceBreaking {
1326 unknown_ordinal: u64,
1327 },
1328}
1329
1330#[macro_export]
1332macro_rules! NodePropertyValueUnknown {
1333 () => {
1334 _
1335 };
1336}
1337
1338impl PartialEq for NodePropertyValue {
1340 fn eq(&self, other: &Self) -> bool {
1341 match (self, other) {
1342 (Self::IntValue(x), Self::IntValue(y)) => *x == *y,
1343 (Self::StringValue(x), Self::StringValue(y)) => *x == *y,
1344 (Self::BoolValue(x), Self::BoolValue(y)) => *x == *y,
1345 (Self::EnumValue(x), Self::EnumValue(y)) => *x == *y,
1346 _ => false,
1347 }
1348 }
1349}
1350
1351impl NodePropertyValue {
1352 #[inline]
1353 pub fn ordinal(&self) -> u64 {
1354 match *self {
1355 Self::IntValue(_) => 1,
1356 Self::StringValue(_) => 2,
1357 Self::BoolValue(_) => 3,
1358 Self::EnumValue(_) => 4,
1359 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1360 }
1361 }
1362
1363 #[inline]
1364 pub fn unknown_variant_for_testing() -> Self {
1365 Self::__SourceBreaking { unknown_ordinal: 0 }
1366 }
1367
1368 #[inline]
1369 pub fn is_unknown(&self) -> bool {
1370 match self {
1371 Self::__SourceBreaking { .. } => true,
1372 _ => false,
1373 }
1374 }
1375}
1376
1377impl fidl::Persistable for NodePropertyValue {}
1378
1379#[derive(Clone, Debug)]
1380pub enum Offer {
1381 ZirconTransport(fidl_fuchsia_component_decl_common::Offer),
1382 DriverTransport(fidl_fuchsia_component_decl_common::Offer),
1383 DictionaryOffer(fidl_fuchsia_component_decl_common::Offer),
1386 #[doc(hidden)]
1387 __SourceBreaking {
1388 unknown_ordinal: u64,
1389 },
1390}
1391
1392#[macro_export]
1394macro_rules! OfferUnknown {
1395 () => {
1396 _
1397 };
1398}
1399
1400impl PartialEq for Offer {
1402 fn eq(&self, other: &Self) -> bool {
1403 match (self, other) {
1404 (Self::ZirconTransport(x), Self::ZirconTransport(y)) => *x == *y,
1405 (Self::DriverTransport(x), Self::DriverTransport(y)) => *x == *y,
1406 (Self::DictionaryOffer(x), Self::DictionaryOffer(y)) => *x == *y,
1407 _ => false,
1408 }
1409 }
1410}
1411
1412impl Offer {
1413 #[inline]
1414 pub fn ordinal(&self) -> u64 {
1415 match *self {
1416 Self::ZirconTransport(_) => 1,
1417 Self::DriverTransport(_) => 2,
1418 Self::DictionaryOffer(_) => 3,
1419 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1420 }
1421 }
1422
1423 #[inline]
1424 pub fn unknown_variant_for_testing() -> Self {
1425 Self::__SourceBreaking { unknown_ordinal: 0 }
1426 }
1427
1428 #[inline]
1429 pub fn is_unknown(&self) -> bool {
1430 match self {
1431 Self::__SourceBreaking { .. } => true,
1432 _ => false,
1433 }
1434 }
1435}
1436
1437impl fidl::Persistable for Offer {}
1438
1439pub mod composite_node_manager_ordinals {
1440 pub const ADD_SPEC: u64 = 0x524e353c8130cc74;
1441}
1442
1443pub mod driver_ordinals {
1444 pub const START: u64 = 0x27be00ae42aa60c2;
1445 pub const STOP: u64 = 0x4b96c67e29b3843d;
1446 pub const SUSPEND: u64 = 0x4cebadedf5da22b8;
1447 pub const RESUME: u64 = 0x2535384cc6595148;
1448}
1449
1450pub mod health_ordinals {
1451 pub const HEALTH_CHECK: u64 = 0x14f4749a0e351134;
1452 pub const ON_HEALTH_ALERT: u64 = 0x78a1ec8d7746b739;
1453}
1454
1455pub mod node_ordinals {
1456 pub const ADD_CHILD: u64 = 0x77d10dff3c1ea129;
1457 pub const PROVIDE_RESOURCE: u64 = 0x2ba4a8e5f3409ace;
1458}
1459
1460pub mod node_controller_ordinals {
1461 pub const REMOVE: u64 = 0x54fa8b3dfe7bb341;
1462 pub const REQUEST_BIND: u64 = 0x41b954726b13508f;
1463 pub const ON_BIND: u64 = 0x51f4165bc5ea202a;
1464 pub const WAIT_FOR_DRIVER: u64 = 0x69f7106e47d81387;
1465}
1466
1467pub mod node_manager_ordinals {
1468 pub const ADD_NODE: u64 = 0x71873eed0baf16fd;
1469}
1470
1471pub mod resource_controller_ordinals {
1472 pub const REMOVE: u64 = 0x1257bec06bde4f98;
1473}
1474
1475mod internal {
1476 use super::*;
1477 unsafe impl fidl::encoding::TypeMarker for BusType {
1478 type Owned = Self;
1479
1480 #[inline(always)]
1481 fn inline_align(_context: fidl::encoding::Context) -> usize {
1482 std::mem::align_of::<u32>()
1483 }
1484
1485 #[inline(always)]
1486 fn inline_size(_context: fidl::encoding::Context) -> usize {
1487 std::mem::size_of::<u32>()
1488 }
1489
1490 #[inline(always)]
1491 fn encode_is_copy() -> bool {
1492 false
1493 }
1494
1495 #[inline(always)]
1496 fn decode_is_copy() -> bool {
1497 false
1498 }
1499 }
1500
1501 impl fidl::encoding::ValueTypeMarker for BusType {
1502 type Borrowed<'a> = Self;
1503 #[inline(always)]
1504 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1505 *value
1506 }
1507 }
1508
1509 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for BusType {
1510 #[inline]
1511 unsafe fn encode(
1512 self,
1513 encoder: &mut fidl::encoding::Encoder<'_, D>,
1514 offset: usize,
1515 _depth: fidl::encoding::Depth,
1516 ) -> fidl::Result<()> {
1517 encoder.debug_check_bounds::<Self>(offset);
1518 encoder.write_num(self.into_primitive(), offset);
1519 Ok(())
1520 }
1521 }
1522
1523 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BusType {
1524 #[inline(always)]
1525 fn new_empty() -> Self {
1526 Self::unknown()
1527 }
1528
1529 #[inline]
1530 unsafe fn decode(
1531 &mut self,
1532 decoder: &mut fidl::encoding::Decoder<'_, D>,
1533 offset: usize,
1534 _depth: fidl::encoding::Depth,
1535 ) -> fidl::Result<()> {
1536 decoder.debug_check_bounds::<Self>(offset);
1537 let prim = decoder.read_num::<u32>(offset);
1538
1539 *self = Self::from_primitive_allow_unknown(prim);
1540 Ok(())
1541 }
1542 }
1543 unsafe impl fidl::encoding::TypeMarker for CompositeNodeSpecError {
1544 type Owned = Self;
1545
1546 #[inline(always)]
1547 fn inline_align(_context: fidl::encoding::Context) -> usize {
1548 std::mem::align_of::<u32>()
1549 }
1550
1551 #[inline(always)]
1552 fn inline_size(_context: fidl::encoding::Context) -> usize {
1553 std::mem::size_of::<u32>()
1554 }
1555
1556 #[inline(always)]
1557 fn encode_is_copy() -> bool {
1558 false
1559 }
1560
1561 #[inline(always)]
1562 fn decode_is_copy() -> bool {
1563 false
1564 }
1565 }
1566
1567 impl fidl::encoding::ValueTypeMarker for CompositeNodeSpecError {
1568 type Borrowed<'a> = Self;
1569 #[inline(always)]
1570 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1571 *value
1572 }
1573 }
1574
1575 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1576 for CompositeNodeSpecError
1577 {
1578 #[inline]
1579 unsafe fn encode(
1580 self,
1581 encoder: &mut fidl::encoding::Encoder<'_, D>,
1582 offset: usize,
1583 _depth: fidl::encoding::Depth,
1584 ) -> fidl::Result<()> {
1585 encoder.debug_check_bounds::<Self>(offset);
1586 encoder.write_num(self.into_primitive(), offset);
1587 Ok(())
1588 }
1589 }
1590
1591 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1592 for CompositeNodeSpecError
1593 {
1594 #[inline(always)]
1595 fn new_empty() -> Self {
1596 Self::unknown()
1597 }
1598
1599 #[inline]
1600 unsafe fn decode(
1601 &mut self,
1602 decoder: &mut fidl::encoding::Decoder<'_, D>,
1603 offset: usize,
1604 _depth: fidl::encoding::Depth,
1605 ) -> fidl::Result<()> {
1606 decoder.debug_check_bounds::<Self>(offset);
1607 let prim = decoder.read_num::<u32>(offset);
1608
1609 *self = Self::from_primitive_allow_unknown(prim);
1610 Ok(())
1611 }
1612 }
1613 unsafe impl fidl::encoding::TypeMarker for Condition {
1614 type Owned = Self;
1615
1616 #[inline(always)]
1617 fn inline_align(_context: fidl::encoding::Context) -> usize {
1618 std::mem::align_of::<u32>()
1619 }
1620
1621 #[inline(always)]
1622 fn inline_size(_context: fidl::encoding::Context) -> usize {
1623 std::mem::size_of::<u32>()
1624 }
1625
1626 #[inline(always)]
1627 fn encode_is_copy() -> bool {
1628 true
1629 }
1630
1631 #[inline(always)]
1632 fn decode_is_copy() -> bool {
1633 false
1634 }
1635 }
1636
1637 impl fidl::encoding::ValueTypeMarker for Condition {
1638 type Borrowed<'a> = Self;
1639 #[inline(always)]
1640 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1641 *value
1642 }
1643 }
1644
1645 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Condition {
1646 #[inline]
1647 unsafe fn encode(
1648 self,
1649 encoder: &mut fidl::encoding::Encoder<'_, D>,
1650 offset: usize,
1651 _depth: fidl::encoding::Depth,
1652 ) -> fidl::Result<()> {
1653 encoder.debug_check_bounds::<Self>(offset);
1654 encoder.write_num(self.into_primitive(), offset);
1655 Ok(())
1656 }
1657 }
1658
1659 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Condition {
1660 #[inline(always)]
1661 fn new_empty() -> Self {
1662 Self::Unknown
1663 }
1664
1665 #[inline]
1666 unsafe fn decode(
1667 &mut self,
1668 decoder: &mut fidl::encoding::Decoder<'_, D>,
1669 offset: usize,
1670 _depth: fidl::encoding::Depth,
1671 ) -> fidl::Result<()> {
1672 decoder.debug_check_bounds::<Self>(offset);
1673 let prim = decoder.read_num::<u32>(offset);
1674
1675 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1676 Ok(())
1677 }
1678 }
1679 unsafe impl fidl::encoding::TypeMarker for DeviceAddressStability {
1680 type Owned = Self;
1681
1682 #[inline(always)]
1683 fn inline_align(_context: fidl::encoding::Context) -> usize {
1684 std::mem::align_of::<u32>()
1685 }
1686
1687 #[inline(always)]
1688 fn inline_size(_context: fidl::encoding::Context) -> usize {
1689 std::mem::size_of::<u32>()
1690 }
1691
1692 #[inline(always)]
1693 fn encode_is_copy() -> bool {
1694 false
1695 }
1696
1697 #[inline(always)]
1698 fn decode_is_copy() -> bool {
1699 false
1700 }
1701 }
1702
1703 impl fidl::encoding::ValueTypeMarker for DeviceAddressStability {
1704 type Borrowed<'a> = Self;
1705 #[inline(always)]
1706 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1707 *value
1708 }
1709 }
1710
1711 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1712 for DeviceAddressStability
1713 {
1714 #[inline]
1715 unsafe fn encode(
1716 self,
1717 encoder: &mut fidl::encoding::Encoder<'_, D>,
1718 offset: usize,
1719 _depth: fidl::encoding::Depth,
1720 ) -> fidl::Result<()> {
1721 encoder.debug_check_bounds::<Self>(offset);
1722 encoder.write_num(self.into_primitive(), offset);
1723 Ok(())
1724 }
1725 }
1726
1727 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1728 for DeviceAddressStability
1729 {
1730 #[inline(always)]
1731 fn new_empty() -> Self {
1732 Self::unknown()
1733 }
1734
1735 #[inline]
1736 unsafe fn decode(
1737 &mut self,
1738 decoder: &mut fidl::encoding::Decoder<'_, D>,
1739 offset: usize,
1740 _depth: fidl::encoding::Depth,
1741 ) -> fidl::Result<()> {
1742 decoder.debug_check_bounds::<Self>(offset);
1743 let prim = decoder.read_num::<u32>(offset);
1744
1745 *self = Self::from_primitive_allow_unknown(prim);
1746 Ok(())
1747 }
1748 }
1749 unsafe impl fidl::encoding::TypeMarker for DriverPackageType {
1750 type Owned = Self;
1751
1752 #[inline(always)]
1753 fn inline_align(_context: fidl::encoding::Context) -> usize {
1754 std::mem::align_of::<u8>()
1755 }
1756
1757 #[inline(always)]
1758 fn inline_size(_context: fidl::encoding::Context) -> usize {
1759 std::mem::size_of::<u8>()
1760 }
1761
1762 #[inline(always)]
1763 fn encode_is_copy() -> bool {
1764 false
1765 }
1766
1767 #[inline(always)]
1768 fn decode_is_copy() -> bool {
1769 false
1770 }
1771 }
1772
1773 impl fidl::encoding::ValueTypeMarker for DriverPackageType {
1774 type Borrowed<'a> = Self;
1775 #[inline(always)]
1776 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1777 *value
1778 }
1779 }
1780
1781 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1782 for DriverPackageType
1783 {
1784 #[inline]
1785 unsafe fn encode(
1786 self,
1787 encoder: &mut fidl::encoding::Encoder<'_, D>,
1788 offset: usize,
1789 _depth: fidl::encoding::Depth,
1790 ) -> fidl::Result<()> {
1791 encoder.debug_check_bounds::<Self>(offset);
1792 encoder.write_num(self.into_primitive(), offset);
1793 Ok(())
1794 }
1795 }
1796
1797 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DriverPackageType {
1798 #[inline(always)]
1799 fn new_empty() -> Self {
1800 Self::unknown()
1801 }
1802
1803 #[inline]
1804 unsafe fn decode(
1805 &mut self,
1806 decoder: &mut fidl::encoding::Decoder<'_, D>,
1807 offset: usize,
1808 _depth: fidl::encoding::Depth,
1809 ) -> fidl::Result<()> {
1810 decoder.debug_check_bounds::<Self>(offset);
1811 let prim = decoder.read_num::<u8>(offset);
1812
1813 *self = Self::from_primitive_allow_unknown(prim);
1814 Ok(())
1815 }
1816 }
1817 unsafe impl fidl::encoding::TypeMarker for HealthCheckError {
1818 type Owned = Self;
1819
1820 #[inline(always)]
1821 fn inline_align(_context: fidl::encoding::Context) -> usize {
1822 std::mem::align_of::<u32>()
1823 }
1824
1825 #[inline(always)]
1826 fn inline_size(_context: fidl::encoding::Context) -> usize {
1827 std::mem::size_of::<u32>()
1828 }
1829
1830 #[inline(always)]
1831 fn encode_is_copy() -> bool {
1832 false
1833 }
1834
1835 #[inline(always)]
1836 fn decode_is_copy() -> bool {
1837 false
1838 }
1839 }
1840
1841 impl fidl::encoding::ValueTypeMarker for HealthCheckError {
1842 type Borrowed<'a> = Self;
1843 #[inline(always)]
1844 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1845 *value
1846 }
1847 }
1848
1849 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1850 for HealthCheckError
1851 {
1852 #[inline]
1853 unsafe fn encode(
1854 self,
1855 encoder: &mut fidl::encoding::Encoder<'_, D>,
1856 offset: usize,
1857 _depth: fidl::encoding::Depth,
1858 ) -> fidl::Result<()> {
1859 encoder.debug_check_bounds::<Self>(offset);
1860 encoder.write_num(self.into_primitive(), offset);
1861 Ok(())
1862 }
1863 }
1864
1865 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HealthCheckError {
1866 #[inline(always)]
1867 fn new_empty() -> Self {
1868 Self::unknown()
1869 }
1870
1871 #[inline]
1872 unsafe fn decode(
1873 &mut self,
1874 decoder: &mut fidl::encoding::Decoder<'_, D>,
1875 offset: usize,
1876 _depth: fidl::encoding::Depth,
1877 ) -> fidl::Result<()> {
1878 decoder.debug_check_bounds::<Self>(offset);
1879 let prim = decoder.read_num::<u32>(offset);
1880
1881 *self = Self::from_primitive_allow_unknown(prim);
1882 Ok(())
1883 }
1884 }
1885 unsafe impl fidl::encoding::TypeMarker for HealthCheckRequest {
1886 type Owned = Self;
1887
1888 #[inline(always)]
1889 fn inline_align(_context: fidl::encoding::Context) -> usize {
1890 std::mem::align_of::<u32>()
1891 }
1892
1893 #[inline(always)]
1894 fn inline_size(_context: fidl::encoding::Context) -> usize {
1895 std::mem::size_of::<u32>()
1896 }
1897
1898 #[inline(always)]
1899 fn encode_is_copy() -> bool {
1900 false
1901 }
1902
1903 #[inline(always)]
1904 fn decode_is_copy() -> bool {
1905 false
1906 }
1907 }
1908
1909 impl fidl::encoding::ValueTypeMarker for HealthCheckRequest {
1910 type Borrowed<'a> = Self;
1911 #[inline(always)]
1912 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1913 *value
1914 }
1915 }
1916
1917 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1918 for HealthCheckRequest
1919 {
1920 #[inline]
1921 unsafe fn encode(
1922 self,
1923 encoder: &mut fidl::encoding::Encoder<'_, D>,
1924 offset: usize,
1925 _depth: fidl::encoding::Depth,
1926 ) -> fidl::Result<()> {
1927 encoder.debug_check_bounds::<Self>(offset);
1928 encoder.write_num(self.into_primitive(), offset);
1929 Ok(())
1930 }
1931 }
1932
1933 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HealthCheckRequest {
1934 #[inline(always)]
1935 fn new_empty() -> Self {
1936 Self::unknown()
1937 }
1938
1939 #[inline]
1940 unsafe fn decode(
1941 &mut self,
1942 decoder: &mut fidl::encoding::Decoder<'_, D>,
1943 offset: usize,
1944 _depth: fidl::encoding::Depth,
1945 ) -> fidl::Result<()> {
1946 decoder.debug_check_bounds::<Self>(offset);
1947 let prim = decoder.read_num::<u32>(offset);
1948
1949 *self = Self::from_primitive_allow_unknown(prim);
1950 Ok(())
1951 }
1952 }
1953 unsafe impl fidl::encoding::TypeMarker for HealthStatus {
1954 type Owned = Self;
1955
1956 #[inline(always)]
1957 fn inline_align(_context: fidl::encoding::Context) -> usize {
1958 std::mem::align_of::<u32>()
1959 }
1960
1961 #[inline(always)]
1962 fn inline_size(_context: fidl::encoding::Context) -> usize {
1963 std::mem::size_of::<u32>()
1964 }
1965
1966 #[inline(always)]
1967 fn encode_is_copy() -> bool {
1968 false
1969 }
1970
1971 #[inline(always)]
1972 fn decode_is_copy() -> bool {
1973 false
1974 }
1975 }
1976
1977 impl fidl::encoding::ValueTypeMarker for HealthStatus {
1978 type Borrowed<'a> = Self;
1979 #[inline(always)]
1980 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1981 *value
1982 }
1983 }
1984
1985 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for HealthStatus {
1986 #[inline]
1987 unsafe fn encode(
1988 self,
1989 encoder: &mut fidl::encoding::Encoder<'_, D>,
1990 offset: usize,
1991 _depth: fidl::encoding::Depth,
1992 ) -> fidl::Result<()> {
1993 encoder.debug_check_bounds::<Self>(offset);
1994 encoder.write_num(self.into_primitive(), offset);
1995 Ok(())
1996 }
1997 }
1998
1999 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HealthStatus {
2000 #[inline(always)]
2001 fn new_empty() -> Self {
2002 Self::unknown()
2003 }
2004
2005 #[inline]
2006 unsafe fn decode(
2007 &mut self,
2008 decoder: &mut fidl::encoding::Decoder<'_, D>,
2009 offset: usize,
2010 _depth: fidl::encoding::Depth,
2011 ) -> fidl::Result<()> {
2012 decoder.debug_check_bounds::<Self>(offset);
2013 let prim = decoder.read_num::<u32>(offset);
2014
2015 *self = Self::from_primitive_allow_unknown(prim);
2016 Ok(())
2017 }
2018 }
2019 unsafe impl fidl::encoding::TypeMarker for NodeError {
2020 type Owned = Self;
2021
2022 #[inline(always)]
2023 fn inline_align(_context: fidl::encoding::Context) -> usize {
2024 std::mem::align_of::<u32>()
2025 }
2026
2027 #[inline(always)]
2028 fn inline_size(_context: fidl::encoding::Context) -> usize {
2029 std::mem::size_of::<u32>()
2030 }
2031
2032 #[inline(always)]
2033 fn encode_is_copy() -> bool {
2034 false
2035 }
2036
2037 #[inline(always)]
2038 fn decode_is_copy() -> bool {
2039 false
2040 }
2041 }
2042
2043 impl fidl::encoding::ValueTypeMarker for NodeError {
2044 type Borrowed<'a> = Self;
2045 #[inline(always)]
2046 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2047 *value
2048 }
2049 }
2050
2051 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for NodeError {
2052 #[inline]
2053 unsafe fn encode(
2054 self,
2055 encoder: &mut fidl::encoding::Encoder<'_, D>,
2056 offset: usize,
2057 _depth: fidl::encoding::Depth,
2058 ) -> fidl::Result<()> {
2059 encoder.debug_check_bounds::<Self>(offset);
2060 encoder.write_num(self.into_primitive(), offset);
2061 Ok(())
2062 }
2063 }
2064
2065 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeError {
2066 #[inline(always)]
2067 fn new_empty() -> Self {
2068 Self::unknown()
2069 }
2070
2071 #[inline]
2072 unsafe fn decode(
2073 &mut self,
2074 decoder: &mut fidl::encoding::Decoder<'_, D>,
2075 offset: usize,
2076 _depth: fidl::encoding::Depth,
2077 ) -> fidl::Result<()> {
2078 decoder.debug_check_bounds::<Self>(offset);
2079 let prim = decoder.read_num::<u32>(offset);
2080
2081 *self = Self::from_primitive_allow_unknown(prim);
2082 Ok(())
2083 }
2084 }
2085
2086 impl fidl::encoding::ValueTypeMarker for BindRule2 {
2087 type Borrowed<'a> = &'a Self;
2088 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2089 value
2090 }
2091 }
2092
2093 unsafe impl fidl::encoding::TypeMarker for BindRule2 {
2094 type Owned = Self;
2095
2096 #[inline(always)]
2097 fn inline_align(_context: fidl::encoding::Context) -> usize {
2098 8
2099 }
2100
2101 #[inline(always)]
2102 fn inline_size(_context: fidl::encoding::Context) -> usize {
2103 40
2104 }
2105 }
2106
2107 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BindRule2, D>
2108 for &BindRule2
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 fidl::encoding::Encode::<BindRule2, D>::encode(
2120 (
2121 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
2122 <Condition as fidl::encoding::ValueTypeMarker>::borrow(&self.condition),
2123 <fidl::encoding::Vector<NodePropertyValue, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.values),
2124 ),
2125 encoder, offset, _depth
2126 )
2127 }
2128 }
2129 unsafe impl<
2130 D: fidl::encoding::ResourceDialect,
2131 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<256>, D>,
2132 T1: fidl::encoding::Encode<Condition, D>,
2133 T2: fidl::encoding::Encode<fidl::encoding::Vector<NodePropertyValue, 64>, D>,
2134 > fidl::encoding::Encode<BindRule2, D> for (T0, T1, T2)
2135 {
2136 #[inline]
2137 unsafe fn encode(
2138 self,
2139 encoder: &mut fidl::encoding::Encoder<'_, D>,
2140 offset: usize,
2141 depth: fidl::encoding::Depth,
2142 ) -> fidl::Result<()> {
2143 encoder.debug_check_bounds::<BindRule2>(offset);
2144 unsafe {
2147 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
2148 (ptr as *mut u64).write_unaligned(0);
2149 }
2150 self.0.encode(encoder, offset + 0, depth)?;
2152 self.1.encode(encoder, offset + 16, depth)?;
2153 self.2.encode(encoder, offset + 24, depth)?;
2154 Ok(())
2155 }
2156 }
2157
2158 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BindRule2 {
2159 #[inline(always)]
2160 fn new_empty() -> Self {
2161 Self {
2162 key: fidl::new_empty!(fidl::encoding::BoundedString<256>, D),
2163 condition: fidl::new_empty!(Condition, D),
2164 values: fidl::new_empty!(fidl::encoding::Vector<NodePropertyValue, 64>, D),
2165 }
2166 }
2167
2168 #[inline]
2169 unsafe fn decode(
2170 &mut self,
2171 decoder: &mut fidl::encoding::Decoder<'_, D>,
2172 offset: usize,
2173 _depth: fidl::encoding::Depth,
2174 ) -> fidl::Result<()> {
2175 decoder.debug_check_bounds::<Self>(offset);
2176 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
2178 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2179 let mask = 0xffffffff00000000u64;
2180 let maskedval = padval & mask;
2181 if maskedval != 0 {
2182 return Err(fidl::Error::NonZeroPadding {
2183 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
2184 });
2185 }
2186 fidl::decode!(
2187 fidl::encoding::BoundedString<256>,
2188 D,
2189 &mut self.key,
2190 decoder,
2191 offset + 0,
2192 _depth
2193 )?;
2194 fidl::decode!(Condition, D, &mut self.condition, decoder, offset + 16, _depth)?;
2195 fidl::decode!(fidl::encoding::Vector<NodePropertyValue, 64>, D, &mut self.values, decoder, offset + 24, _depth)?;
2196 Ok(())
2197 }
2198 }
2199
2200 impl fidl::encoding::ValueTypeMarker for HealthDiagnosticItem {
2201 type Borrowed<'a> = &'a Self;
2202 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2203 value
2204 }
2205 }
2206
2207 unsafe impl fidl::encoding::TypeMarker for HealthDiagnosticItem {
2208 type Owned = Self;
2209
2210 #[inline(always)]
2211 fn inline_align(_context: fidl::encoding::Context) -> usize {
2212 8
2213 }
2214
2215 #[inline(always)]
2216 fn inline_size(_context: fidl::encoding::Context) -> usize {
2217 32
2218 }
2219 }
2220
2221 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HealthDiagnosticItem, D>
2222 for &HealthDiagnosticItem
2223 {
2224 #[inline]
2225 unsafe fn encode(
2226 self,
2227 encoder: &mut fidl::encoding::Encoder<'_, D>,
2228 offset: usize,
2229 _depth: fidl::encoding::Depth,
2230 ) -> fidl::Result<()> {
2231 encoder.debug_check_bounds::<HealthDiagnosticItem>(offset);
2232 fidl::encoding::Encode::<HealthDiagnosticItem, D>::encode(
2234 (
2235 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow(
2236 &self.key,
2237 ),
2238 <HealthDiagnosticValue as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
2239 ),
2240 encoder,
2241 offset,
2242 _depth,
2243 )
2244 }
2245 }
2246 unsafe impl<
2247 D: fidl::encoding::ResourceDialect,
2248 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<64>, D>,
2249 T1: fidl::encoding::Encode<HealthDiagnosticValue, D>,
2250 > fidl::encoding::Encode<HealthDiagnosticItem, D> for (T0, T1)
2251 {
2252 #[inline]
2253 unsafe fn encode(
2254 self,
2255 encoder: &mut fidl::encoding::Encoder<'_, D>,
2256 offset: usize,
2257 depth: fidl::encoding::Depth,
2258 ) -> fidl::Result<()> {
2259 encoder.debug_check_bounds::<HealthDiagnosticItem>(offset);
2260 self.0.encode(encoder, offset + 0, depth)?;
2264 self.1.encode(encoder, offset + 16, depth)?;
2265 Ok(())
2266 }
2267 }
2268
2269 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HealthDiagnosticItem {
2270 #[inline(always)]
2271 fn new_empty() -> Self {
2272 Self {
2273 key: fidl::new_empty!(fidl::encoding::BoundedString<64>, D),
2274 value: fidl::new_empty!(HealthDiagnosticValue, D),
2275 }
2276 }
2277
2278 #[inline]
2279 unsafe fn decode(
2280 &mut self,
2281 decoder: &mut fidl::encoding::Decoder<'_, D>,
2282 offset: usize,
2283 _depth: fidl::encoding::Depth,
2284 ) -> fidl::Result<()> {
2285 decoder.debug_check_bounds::<Self>(offset);
2286 fidl::decode!(
2288 fidl::encoding::BoundedString<64>,
2289 D,
2290 &mut self.key,
2291 decoder,
2292 offset + 0,
2293 _depth
2294 )?;
2295 fidl::decode!(HealthDiagnosticValue, D, &mut self.value, decoder, offset + 16, _depth)?;
2296 Ok(())
2297 }
2298 }
2299
2300 impl fidl::encoding::ValueTypeMarker for HealthHealthCheckRequest {
2301 type Borrowed<'a> = &'a Self;
2302 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2303 value
2304 }
2305 }
2306
2307 unsafe impl fidl::encoding::TypeMarker for HealthHealthCheckRequest {
2308 type Owned = Self;
2309
2310 #[inline(always)]
2311 fn inline_align(_context: fidl::encoding::Context) -> usize {
2312 4
2313 }
2314
2315 #[inline(always)]
2316 fn inline_size(_context: fidl::encoding::Context) -> usize {
2317 4
2318 }
2319 }
2320
2321 unsafe impl<D: fidl::encoding::ResourceDialect>
2322 fidl::encoding::Encode<HealthHealthCheckRequest, D> for &HealthHealthCheckRequest
2323 {
2324 #[inline]
2325 unsafe fn encode(
2326 self,
2327 encoder: &mut fidl::encoding::Encoder<'_, D>,
2328 offset: usize,
2329 _depth: fidl::encoding::Depth,
2330 ) -> fidl::Result<()> {
2331 encoder.debug_check_bounds::<HealthHealthCheckRequest>(offset);
2332 fidl::encoding::Encode::<HealthHealthCheckRequest, D>::encode(
2334 (<HealthCheckRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.request),),
2335 encoder,
2336 offset,
2337 _depth,
2338 )
2339 }
2340 }
2341 unsafe impl<
2342 D: fidl::encoding::ResourceDialect,
2343 T0: fidl::encoding::Encode<HealthCheckRequest, D>,
2344 > fidl::encoding::Encode<HealthHealthCheckRequest, D> for (T0,)
2345 {
2346 #[inline]
2347 unsafe fn encode(
2348 self,
2349 encoder: &mut fidl::encoding::Encoder<'_, D>,
2350 offset: usize,
2351 depth: fidl::encoding::Depth,
2352 ) -> fidl::Result<()> {
2353 encoder.debug_check_bounds::<HealthHealthCheckRequest>(offset);
2354 self.0.encode(encoder, offset + 0, depth)?;
2358 Ok(())
2359 }
2360 }
2361
2362 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2363 for HealthHealthCheckRequest
2364 {
2365 #[inline(always)]
2366 fn new_empty() -> Self {
2367 Self { request: fidl::new_empty!(HealthCheckRequest, D) }
2368 }
2369
2370 #[inline]
2371 unsafe fn decode(
2372 &mut self,
2373 decoder: &mut fidl::encoding::Decoder<'_, D>,
2374 offset: usize,
2375 _depth: fidl::encoding::Depth,
2376 ) -> fidl::Result<()> {
2377 decoder.debug_check_bounds::<Self>(offset);
2378 fidl::decode!(HealthCheckRequest, D, &mut self.request, decoder, offset + 0, _depth)?;
2380 Ok(())
2381 }
2382 }
2383
2384 impl fidl::encoding::ValueTypeMarker for HealthOnHealthAlertRequest {
2385 type Borrowed<'a> = &'a Self;
2386 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2387 value
2388 }
2389 }
2390
2391 unsafe impl fidl::encoding::TypeMarker for HealthOnHealthAlertRequest {
2392 type Owned = Self;
2393
2394 #[inline(always)]
2395 fn inline_align(_context: fidl::encoding::Context) -> usize {
2396 8
2397 }
2398
2399 #[inline(always)]
2400 fn inline_size(_context: fidl::encoding::Context) -> usize {
2401 16
2402 }
2403 }
2404
2405 unsafe impl<D: fidl::encoding::ResourceDialect>
2406 fidl::encoding::Encode<HealthOnHealthAlertRequest, D> for &HealthOnHealthAlertRequest
2407 {
2408 #[inline]
2409 unsafe fn encode(
2410 self,
2411 encoder: &mut fidl::encoding::Encoder<'_, D>,
2412 offset: usize,
2413 _depth: fidl::encoding::Depth,
2414 ) -> fidl::Result<()> {
2415 encoder.debug_check_bounds::<HealthOnHealthAlertRequest>(offset);
2416 fidl::encoding::Encode::<HealthOnHealthAlertRequest, D>::encode(
2418 (<HealthAlert as fidl::encoding::ValueTypeMarker>::borrow(&self.alert),),
2419 encoder,
2420 offset,
2421 _depth,
2422 )
2423 }
2424 }
2425 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<HealthAlert, D>>
2426 fidl::encoding::Encode<HealthOnHealthAlertRequest, D> for (T0,)
2427 {
2428 #[inline]
2429 unsafe fn encode(
2430 self,
2431 encoder: &mut fidl::encoding::Encoder<'_, D>,
2432 offset: usize,
2433 depth: fidl::encoding::Depth,
2434 ) -> fidl::Result<()> {
2435 encoder.debug_check_bounds::<HealthOnHealthAlertRequest>(offset);
2436 self.0.encode(encoder, offset + 0, depth)?;
2440 Ok(())
2441 }
2442 }
2443
2444 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2445 for HealthOnHealthAlertRequest
2446 {
2447 #[inline(always)]
2448 fn new_empty() -> Self {
2449 Self { alert: fidl::new_empty!(HealthAlert, D) }
2450 }
2451
2452 #[inline]
2453 unsafe fn decode(
2454 &mut self,
2455 decoder: &mut fidl::encoding::Decoder<'_, D>,
2456 offset: usize,
2457 _depth: fidl::encoding::Depth,
2458 ) -> fidl::Result<()> {
2459 decoder.debug_check_bounds::<Self>(offset);
2460 fidl::decode!(HealthAlert, D, &mut self.alert, decoder, offset + 0, _depth)?;
2462 Ok(())
2463 }
2464 }
2465
2466 impl fidl::encoding::ValueTypeMarker for NodeProperty2 {
2467 type Borrowed<'a> = &'a Self;
2468 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2469 value
2470 }
2471 }
2472
2473 unsafe impl fidl::encoding::TypeMarker for NodeProperty2 {
2474 type Owned = Self;
2475
2476 #[inline(always)]
2477 fn inline_align(_context: fidl::encoding::Context) -> usize {
2478 8
2479 }
2480
2481 #[inline(always)]
2482 fn inline_size(_context: fidl::encoding::Context) -> usize {
2483 32
2484 }
2485 }
2486
2487 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeProperty2, D>
2488 for &NodeProperty2
2489 {
2490 #[inline]
2491 unsafe fn encode(
2492 self,
2493 encoder: &mut fidl::encoding::Encoder<'_, D>,
2494 offset: usize,
2495 _depth: fidl::encoding::Depth,
2496 ) -> fidl::Result<()> {
2497 encoder.debug_check_bounds::<NodeProperty2>(offset);
2498 fidl::encoding::Encode::<NodeProperty2, D>::encode(
2500 (
2501 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
2502 &self.key,
2503 ),
2504 <NodePropertyValue as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
2505 ),
2506 encoder,
2507 offset,
2508 _depth,
2509 )
2510 }
2511 }
2512 unsafe impl<
2513 D: fidl::encoding::ResourceDialect,
2514 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<256>, D>,
2515 T1: fidl::encoding::Encode<NodePropertyValue, D>,
2516 > fidl::encoding::Encode<NodeProperty2, 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::<NodeProperty2>(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 NodeProperty2 {
2536 #[inline(always)]
2537 fn new_empty() -> Self {
2538 Self {
2539 key: fidl::new_empty!(fidl::encoding::BoundedString<256>, D),
2540 value: fidl::new_empty!(NodePropertyValue, 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!(
2554 fidl::encoding::BoundedString<256>,
2555 D,
2556 &mut self.key,
2557 decoder,
2558 offset + 0,
2559 _depth
2560 )?;
2561 fidl::decode!(NodePropertyValue, D, &mut self.value, decoder, offset + 16, _depth)?;
2562 Ok(())
2563 }
2564 }
2565
2566 impl fidl::encoding::ValueTypeMarker for NodePropertyEntry2 {
2567 type Borrowed<'a> = &'a Self;
2568 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2569 value
2570 }
2571 }
2572
2573 unsafe impl fidl::encoding::TypeMarker for NodePropertyEntry2 {
2574 type Owned = Self;
2575
2576 #[inline(always)]
2577 fn inline_align(_context: fidl::encoding::Context) -> usize {
2578 8
2579 }
2580
2581 #[inline(always)]
2582 fn inline_size(_context: fidl::encoding::Context) -> usize {
2583 32
2584 }
2585 }
2586
2587 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodePropertyEntry2, D>
2588 for &NodePropertyEntry2
2589 {
2590 #[inline]
2591 unsafe fn encode(
2592 self,
2593 encoder: &mut fidl::encoding::Encoder<'_, D>,
2594 offset: usize,
2595 _depth: fidl::encoding::Depth,
2596 ) -> fidl::Result<()> {
2597 encoder.debug_check_bounds::<NodePropertyEntry2>(offset);
2598 fidl::encoding::Encode::<NodePropertyEntry2, D>::encode(
2600 (
2601 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
2602 <fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.properties),
2603 ),
2604 encoder, offset, _depth
2605 )
2606 }
2607 }
2608 unsafe impl<
2609 D: fidl::encoding::ResourceDialect,
2610 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<128>, D>,
2611 T1: fidl::encoding::Encode<fidl::encoding::Vector<NodeProperty2, 64>, D>,
2612 > fidl::encoding::Encode<NodePropertyEntry2, D> for (T0, T1)
2613 {
2614 #[inline]
2615 unsafe fn encode(
2616 self,
2617 encoder: &mut fidl::encoding::Encoder<'_, D>,
2618 offset: usize,
2619 depth: fidl::encoding::Depth,
2620 ) -> fidl::Result<()> {
2621 encoder.debug_check_bounds::<NodePropertyEntry2>(offset);
2622 self.0.encode(encoder, offset + 0, depth)?;
2626 self.1.encode(encoder, offset + 16, depth)?;
2627 Ok(())
2628 }
2629 }
2630
2631 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodePropertyEntry2 {
2632 #[inline(always)]
2633 fn new_empty() -> Self {
2634 Self {
2635 name: fidl::new_empty!(fidl::encoding::BoundedString<128>, D),
2636 properties: fidl::new_empty!(fidl::encoding::Vector<NodeProperty2, 64>, D),
2637 }
2638 }
2639
2640 #[inline]
2641 unsafe fn decode(
2642 &mut self,
2643 decoder: &mut fidl::encoding::Decoder<'_, D>,
2644 offset: usize,
2645 _depth: fidl::encoding::Depth,
2646 ) -> fidl::Result<()> {
2647 decoder.debug_check_bounds::<Self>(offset);
2648 fidl::decode!(
2650 fidl::encoding::BoundedString<128>,
2651 D,
2652 &mut self.name,
2653 decoder,
2654 offset + 0,
2655 _depth
2656 )?;
2657 fidl::decode!(fidl::encoding::Vector<NodeProperty2, 64>, D, &mut self.properties, decoder, offset + 16, _depth)?;
2658 Ok(())
2659 }
2660 }
2661
2662 impl fidl::encoding::ValueTypeMarker for ParentSpec2 {
2663 type Borrowed<'a> = &'a Self;
2664 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2665 value
2666 }
2667 }
2668
2669 unsafe impl fidl::encoding::TypeMarker for ParentSpec2 {
2670 type Owned = Self;
2671
2672 #[inline(always)]
2673 fn inline_align(_context: fidl::encoding::Context) -> usize {
2674 8
2675 }
2676
2677 #[inline(always)]
2678 fn inline_size(_context: fidl::encoding::Context) -> usize {
2679 32
2680 }
2681 }
2682
2683 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ParentSpec2, D>
2684 for &ParentSpec2
2685 {
2686 #[inline]
2687 unsafe fn encode(
2688 self,
2689 encoder: &mut fidl::encoding::Encoder<'_, D>,
2690 offset: usize,
2691 _depth: fidl::encoding::Depth,
2692 ) -> fidl::Result<()> {
2693 encoder.debug_check_bounds::<ParentSpec2>(offset);
2694 fidl::encoding::Encode::<ParentSpec2, D>::encode(
2696 (
2697 <fidl::encoding::Vector<BindRule2, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.bind_rules),
2698 <fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.properties),
2699 ),
2700 encoder, offset, _depth
2701 )
2702 }
2703 }
2704 unsafe impl<
2705 D: fidl::encoding::ResourceDialect,
2706 T0: fidl::encoding::Encode<fidl::encoding::Vector<BindRule2, 64>, D>,
2707 T1: fidl::encoding::Encode<fidl::encoding::Vector<NodeProperty2, 64>, D>,
2708 > fidl::encoding::Encode<ParentSpec2, D> for (T0, T1)
2709 {
2710 #[inline]
2711 unsafe fn encode(
2712 self,
2713 encoder: &mut fidl::encoding::Encoder<'_, D>,
2714 offset: usize,
2715 depth: fidl::encoding::Depth,
2716 ) -> fidl::Result<()> {
2717 encoder.debug_check_bounds::<ParentSpec2>(offset);
2718 self.0.encode(encoder, offset + 0, depth)?;
2722 self.1.encode(encoder, offset + 16, depth)?;
2723 Ok(())
2724 }
2725 }
2726
2727 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ParentSpec2 {
2728 #[inline(always)]
2729 fn new_empty() -> Self {
2730 Self {
2731 bind_rules: fidl::new_empty!(fidl::encoding::Vector<BindRule2, 64>, D),
2732 properties: fidl::new_empty!(fidl::encoding::Vector<NodeProperty2, 64>, D),
2733 }
2734 }
2735
2736 #[inline]
2737 unsafe fn decode(
2738 &mut self,
2739 decoder: &mut fidl::encoding::Decoder<'_, D>,
2740 offset: usize,
2741 _depth: fidl::encoding::Depth,
2742 ) -> fidl::Result<()> {
2743 decoder.debug_check_bounds::<Self>(offset);
2744 fidl::decode!(fidl::encoding::Vector<BindRule2, 64>, D, &mut self.bind_rules, decoder, offset + 0, _depth)?;
2746 fidl::decode!(fidl::encoding::Vector<NodeProperty2, 64>, D, &mut self.properties, decoder, offset + 16, _depth)?;
2747 Ok(())
2748 }
2749 }
2750
2751 impl fidl::encoding::ValueTypeMarker for ResourceProperty {
2752 type Borrowed<'a> = &'a Self;
2753 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2754 value
2755 }
2756 }
2757
2758 unsafe impl fidl::encoding::TypeMarker for ResourceProperty {
2759 type Owned = Self;
2760
2761 #[inline(always)]
2762 fn inline_align(_context: fidl::encoding::Context) -> usize {
2763 8
2764 }
2765
2766 #[inline(always)]
2767 fn inline_size(_context: fidl::encoding::Context) -> usize {
2768 32
2769 }
2770 }
2771
2772 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ResourceProperty, D>
2773 for &ResourceProperty
2774 {
2775 #[inline]
2776 unsafe fn encode(
2777 self,
2778 encoder: &mut fidl::encoding::Encoder<'_, D>,
2779 offset: usize,
2780 _depth: fidl::encoding::Depth,
2781 ) -> fidl::Result<()> {
2782 encoder.debug_check_bounds::<ResourceProperty>(offset);
2783 fidl::encoding::Encode::<ResourceProperty, D>::encode(
2785 (
2786 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
2787 &self.key,
2788 ),
2789 <NodePropertyValue as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
2790 ),
2791 encoder,
2792 offset,
2793 _depth,
2794 )
2795 }
2796 }
2797 unsafe impl<
2798 D: fidl::encoding::ResourceDialect,
2799 T0: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
2800 T1: fidl::encoding::Encode<NodePropertyValue, D>,
2801 > fidl::encoding::Encode<ResourceProperty, D> for (T0, T1)
2802 {
2803 #[inline]
2804 unsafe fn encode(
2805 self,
2806 encoder: &mut fidl::encoding::Encoder<'_, D>,
2807 offset: usize,
2808 depth: fidl::encoding::Depth,
2809 ) -> fidl::Result<()> {
2810 encoder.debug_check_bounds::<ResourceProperty>(offset);
2811 self.0.encode(encoder, offset + 0, depth)?;
2815 self.1.encode(encoder, offset + 16, depth)?;
2816 Ok(())
2817 }
2818 }
2819
2820 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResourceProperty {
2821 #[inline(always)]
2822 fn new_empty() -> Self {
2823 Self {
2824 key: fidl::new_empty!(fidl::encoding::UnboundedString, D),
2825 value: fidl::new_empty!(NodePropertyValue, D),
2826 }
2827 }
2828
2829 #[inline]
2830 unsafe fn decode(
2831 &mut self,
2832 decoder: &mut fidl::encoding::Decoder<'_, D>,
2833 offset: usize,
2834 _depth: fidl::encoding::Depth,
2835 ) -> fidl::Result<()> {
2836 decoder.debug_check_bounds::<Self>(offset);
2837 fidl::decode!(
2839 fidl::encoding::UnboundedString,
2840 D,
2841 &mut self.key,
2842 decoder,
2843 offset + 0,
2844 _depth
2845 )?;
2846 fidl::decode!(NodePropertyValue, D, &mut self.value, decoder, offset + 16, _depth)?;
2847 Ok(())
2848 }
2849 }
2850
2851 impl BusInfo {
2852 #[inline(always)]
2853 fn max_ordinal_present(&self) -> u64 {
2854 if let Some(_) = self.address_stability {
2855 return 3;
2856 }
2857 if let Some(_) = self.address {
2858 return 2;
2859 }
2860 if let Some(_) = self.bus {
2861 return 1;
2862 }
2863 0
2864 }
2865 }
2866
2867 impl fidl::encoding::ValueTypeMarker for BusInfo {
2868 type Borrowed<'a> = &'a Self;
2869 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2870 value
2871 }
2872 }
2873
2874 unsafe impl fidl::encoding::TypeMarker for BusInfo {
2875 type Owned = Self;
2876
2877 #[inline(always)]
2878 fn inline_align(_context: fidl::encoding::Context) -> usize {
2879 8
2880 }
2881
2882 #[inline(always)]
2883 fn inline_size(_context: fidl::encoding::Context) -> usize {
2884 16
2885 }
2886 }
2887
2888 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BusInfo, D> for &BusInfo {
2889 unsafe fn encode(
2890 self,
2891 encoder: &mut fidl::encoding::Encoder<'_, D>,
2892 offset: usize,
2893 mut depth: fidl::encoding::Depth,
2894 ) -> fidl::Result<()> {
2895 encoder.debug_check_bounds::<BusInfo>(offset);
2896 let max_ordinal: u64 = self.max_ordinal_present();
2898 encoder.write_num(max_ordinal, offset);
2899 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2900 if max_ordinal == 0 {
2902 return Ok(());
2903 }
2904 depth.increment()?;
2905 let envelope_size = 8;
2906 let bytes_len = max_ordinal as usize * envelope_size;
2907 #[allow(unused_variables)]
2908 let offset = encoder.out_of_line_offset(bytes_len);
2909 let mut _prev_end_offset: usize = 0;
2910 if 1 > max_ordinal {
2911 return Ok(());
2912 }
2913
2914 let cur_offset: usize = (1 - 1) * envelope_size;
2917
2918 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2920
2921 fidl::encoding::encode_in_envelope_optional::<BusType, D>(
2926 self.bus.as_ref().map(<BusType as fidl::encoding::ValueTypeMarker>::borrow),
2927 encoder,
2928 offset + cur_offset,
2929 depth,
2930 )?;
2931
2932 _prev_end_offset = cur_offset + envelope_size;
2933 if 2 > max_ordinal {
2934 return Ok(());
2935 }
2936
2937 let cur_offset: usize = (2 - 1) * envelope_size;
2940
2941 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2943
2944 fidl::encoding::encode_in_envelope_optional::<DeviceAddress, D>(
2949 self.address
2950 .as_ref()
2951 .map(<DeviceAddress as fidl::encoding::ValueTypeMarker>::borrow),
2952 encoder,
2953 offset + cur_offset,
2954 depth,
2955 )?;
2956
2957 _prev_end_offset = cur_offset + envelope_size;
2958 if 3 > max_ordinal {
2959 return Ok(());
2960 }
2961
2962 let cur_offset: usize = (3 - 1) * envelope_size;
2965
2966 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2968
2969 fidl::encoding::encode_in_envelope_optional::<DeviceAddressStability, D>(
2974 self.address_stability
2975 .as_ref()
2976 .map(<DeviceAddressStability as fidl::encoding::ValueTypeMarker>::borrow),
2977 encoder,
2978 offset + cur_offset,
2979 depth,
2980 )?;
2981
2982 _prev_end_offset = cur_offset + envelope_size;
2983
2984 Ok(())
2985 }
2986 }
2987
2988 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BusInfo {
2989 #[inline(always)]
2990 fn new_empty() -> Self {
2991 Self::default()
2992 }
2993
2994 unsafe fn decode(
2995 &mut self,
2996 decoder: &mut fidl::encoding::Decoder<'_, D>,
2997 offset: usize,
2998 mut depth: fidl::encoding::Depth,
2999 ) -> fidl::Result<()> {
3000 decoder.debug_check_bounds::<Self>(offset);
3001 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3002 None => return Err(fidl::Error::NotNullable),
3003 Some(len) => len,
3004 };
3005 if len == 0 {
3007 return Ok(());
3008 };
3009 depth.increment()?;
3010 let envelope_size = 8;
3011 let bytes_len = len * envelope_size;
3012 let offset = decoder.out_of_line_offset(bytes_len)?;
3013 let mut _next_ordinal_to_read = 0;
3015 let mut next_offset = offset;
3016 let end_offset = offset + bytes_len;
3017 _next_ordinal_to_read += 1;
3018 if next_offset >= end_offset {
3019 return Ok(());
3020 }
3021
3022 while _next_ordinal_to_read < 1 {
3024 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3025 _next_ordinal_to_read += 1;
3026 next_offset += envelope_size;
3027 }
3028
3029 let next_out_of_line = decoder.next_out_of_line();
3030 let handles_before = decoder.remaining_handles();
3031 if let Some((inlined, num_bytes, num_handles)) =
3032 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3033 {
3034 let member_inline_size =
3035 <BusType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3036 if inlined != (member_inline_size <= 4) {
3037 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3038 }
3039 let inner_offset;
3040 let mut inner_depth = depth.clone();
3041 if inlined {
3042 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3043 inner_offset = next_offset;
3044 } else {
3045 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3046 inner_depth.increment()?;
3047 }
3048 let val_ref = self.bus.get_or_insert_with(|| fidl::new_empty!(BusType, D));
3049 fidl::decode!(BusType, D, val_ref, decoder, inner_offset, inner_depth)?;
3050 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3051 {
3052 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3053 }
3054 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3055 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3056 }
3057 }
3058
3059 next_offset += envelope_size;
3060 _next_ordinal_to_read += 1;
3061 if next_offset >= end_offset {
3062 return Ok(());
3063 }
3064
3065 while _next_ordinal_to_read < 2 {
3067 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3068 _next_ordinal_to_read += 1;
3069 next_offset += envelope_size;
3070 }
3071
3072 let next_out_of_line = decoder.next_out_of_line();
3073 let handles_before = decoder.remaining_handles();
3074 if let Some((inlined, num_bytes, num_handles)) =
3075 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3076 {
3077 let member_inline_size =
3078 <DeviceAddress as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3079 if inlined != (member_inline_size <= 4) {
3080 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3081 }
3082 let inner_offset;
3083 let mut inner_depth = depth.clone();
3084 if inlined {
3085 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3086 inner_offset = next_offset;
3087 } else {
3088 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3089 inner_depth.increment()?;
3090 }
3091 let val_ref =
3092 self.address.get_or_insert_with(|| fidl::new_empty!(DeviceAddress, D));
3093 fidl::decode!(DeviceAddress, D, val_ref, decoder, inner_offset, inner_depth)?;
3094 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3095 {
3096 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3097 }
3098 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3099 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3100 }
3101 }
3102
3103 next_offset += envelope_size;
3104 _next_ordinal_to_read += 1;
3105 if next_offset >= end_offset {
3106 return Ok(());
3107 }
3108
3109 while _next_ordinal_to_read < 3 {
3111 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3112 _next_ordinal_to_read += 1;
3113 next_offset += envelope_size;
3114 }
3115
3116 let next_out_of_line = decoder.next_out_of_line();
3117 let handles_before = decoder.remaining_handles();
3118 if let Some((inlined, num_bytes, num_handles)) =
3119 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3120 {
3121 let member_inline_size =
3122 <DeviceAddressStability as fidl::encoding::TypeMarker>::inline_size(
3123 decoder.context,
3124 );
3125 if inlined != (member_inline_size <= 4) {
3126 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3127 }
3128 let inner_offset;
3129 let mut inner_depth = depth.clone();
3130 if inlined {
3131 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3132 inner_offset = next_offset;
3133 } else {
3134 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3135 inner_depth.increment()?;
3136 }
3137 let val_ref = self
3138 .address_stability
3139 .get_or_insert_with(|| fidl::new_empty!(DeviceAddressStability, D));
3140 fidl::decode!(
3141 DeviceAddressStability,
3142 D,
3143 val_ref,
3144 decoder,
3145 inner_offset,
3146 inner_depth
3147 )?;
3148 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3149 {
3150 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3151 }
3152 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3153 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3154 }
3155 }
3156
3157 next_offset += envelope_size;
3158
3159 while next_offset < end_offset {
3161 _next_ordinal_to_read += 1;
3162 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3163 next_offset += envelope_size;
3164 }
3165
3166 Ok(())
3167 }
3168 }
3169
3170 impl CompositeDriverInfo {
3171 #[inline(always)]
3172 fn max_ordinal_present(&self) -> u64 {
3173 if let Some(_) = self.driver_info {
3174 return 2;
3175 }
3176 if let Some(_) = self.composite_name {
3177 return 1;
3178 }
3179 0
3180 }
3181 }
3182
3183 impl fidl::encoding::ValueTypeMarker for CompositeDriverInfo {
3184 type Borrowed<'a> = &'a Self;
3185 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3186 value
3187 }
3188 }
3189
3190 unsafe impl fidl::encoding::TypeMarker for CompositeDriverInfo {
3191 type Owned = Self;
3192
3193 #[inline(always)]
3194 fn inline_align(_context: fidl::encoding::Context) -> usize {
3195 8
3196 }
3197
3198 #[inline(always)]
3199 fn inline_size(_context: fidl::encoding::Context) -> usize {
3200 16
3201 }
3202 }
3203
3204 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeDriverInfo, D>
3205 for &CompositeDriverInfo
3206 {
3207 unsafe fn encode(
3208 self,
3209 encoder: &mut fidl::encoding::Encoder<'_, D>,
3210 offset: usize,
3211 mut depth: fidl::encoding::Depth,
3212 ) -> fidl::Result<()> {
3213 encoder.debug_check_bounds::<CompositeDriverInfo>(offset);
3214 let max_ordinal: u64 = self.max_ordinal_present();
3216 encoder.write_num(max_ordinal, offset);
3217 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3218 if max_ordinal == 0 {
3220 return Ok(());
3221 }
3222 depth.increment()?;
3223 let envelope_size = 8;
3224 let bytes_len = max_ordinal as usize * envelope_size;
3225 #[allow(unused_variables)]
3226 let offset = encoder.out_of_line_offset(bytes_len);
3227 let mut _prev_end_offset: usize = 0;
3228 if 1 > max_ordinal {
3229 return Ok(());
3230 }
3231
3232 let cur_offset: usize = (1 - 1) * envelope_size;
3235
3236 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3238
3239 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
3244 self.composite_name.as_ref().map(
3245 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
3246 ),
3247 encoder,
3248 offset + cur_offset,
3249 depth,
3250 )?;
3251
3252 _prev_end_offset = cur_offset + envelope_size;
3253 if 2 > max_ordinal {
3254 return Ok(());
3255 }
3256
3257 let cur_offset: usize = (2 - 1) * envelope_size;
3260
3261 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3263
3264 fidl::encoding::encode_in_envelope_optional::<DriverInfo, D>(
3269 self.driver_info
3270 .as_ref()
3271 .map(<DriverInfo as fidl::encoding::ValueTypeMarker>::borrow),
3272 encoder,
3273 offset + cur_offset,
3274 depth,
3275 )?;
3276
3277 _prev_end_offset = cur_offset + envelope_size;
3278
3279 Ok(())
3280 }
3281 }
3282
3283 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeDriverInfo {
3284 #[inline(always)]
3285 fn new_empty() -> Self {
3286 Self::default()
3287 }
3288
3289 unsafe fn decode(
3290 &mut self,
3291 decoder: &mut fidl::encoding::Decoder<'_, D>,
3292 offset: usize,
3293 mut depth: fidl::encoding::Depth,
3294 ) -> fidl::Result<()> {
3295 decoder.debug_check_bounds::<Self>(offset);
3296 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3297 None => return Err(fidl::Error::NotNullable),
3298 Some(len) => len,
3299 };
3300 if len == 0 {
3302 return Ok(());
3303 };
3304 depth.increment()?;
3305 let envelope_size = 8;
3306 let bytes_len = len * envelope_size;
3307 let offset = decoder.out_of_line_offset(bytes_len)?;
3308 let mut _next_ordinal_to_read = 0;
3310 let mut next_offset = offset;
3311 let end_offset = offset + bytes_len;
3312 _next_ordinal_to_read += 1;
3313 if next_offset >= end_offset {
3314 return Ok(());
3315 }
3316
3317 while _next_ordinal_to_read < 1 {
3319 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3320 _next_ordinal_to_read += 1;
3321 next_offset += envelope_size;
3322 }
3323
3324 let next_out_of_line = decoder.next_out_of_line();
3325 let handles_before = decoder.remaining_handles();
3326 if let Some((inlined, num_bytes, num_handles)) =
3327 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3328 {
3329 let member_inline_size =
3330 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
3331 decoder.context,
3332 );
3333 if inlined != (member_inline_size <= 4) {
3334 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3335 }
3336 let inner_offset;
3337 let mut inner_depth = depth.clone();
3338 if inlined {
3339 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3340 inner_offset = next_offset;
3341 } else {
3342 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3343 inner_depth.increment()?;
3344 }
3345 let val_ref = self
3346 .composite_name
3347 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
3348 fidl::decode!(
3349 fidl::encoding::UnboundedString,
3350 D,
3351 val_ref,
3352 decoder,
3353 inner_offset,
3354 inner_depth
3355 )?;
3356 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3357 {
3358 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3359 }
3360 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3361 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3362 }
3363 }
3364
3365 next_offset += envelope_size;
3366 _next_ordinal_to_read += 1;
3367 if next_offset >= end_offset {
3368 return Ok(());
3369 }
3370
3371 while _next_ordinal_to_read < 2 {
3373 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3374 _next_ordinal_to_read += 1;
3375 next_offset += envelope_size;
3376 }
3377
3378 let next_out_of_line = decoder.next_out_of_line();
3379 let handles_before = decoder.remaining_handles();
3380 if let Some((inlined, num_bytes, num_handles)) =
3381 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3382 {
3383 let member_inline_size =
3384 <DriverInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3385 if inlined != (member_inline_size <= 4) {
3386 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3387 }
3388 let inner_offset;
3389 let mut inner_depth = depth.clone();
3390 if inlined {
3391 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3392 inner_offset = next_offset;
3393 } else {
3394 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3395 inner_depth.increment()?;
3396 }
3397 let val_ref =
3398 self.driver_info.get_or_insert_with(|| fidl::new_empty!(DriverInfo, D));
3399 fidl::decode!(DriverInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
3400 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3401 {
3402 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3403 }
3404 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3405 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3406 }
3407 }
3408
3409 next_offset += envelope_size;
3410
3411 while next_offset < end_offset {
3413 _next_ordinal_to_read += 1;
3414 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3415 next_offset += envelope_size;
3416 }
3417
3418 Ok(())
3419 }
3420 }
3421
3422 impl CompositeDriverMatch {
3423 #[inline(always)]
3424 fn max_ordinal_present(&self) -> u64 {
3425 if let Some(_) = self.primary_parent_index {
3426 return 3;
3427 }
3428 if let Some(_) = self.parent_names {
3429 return 2;
3430 }
3431 if let Some(_) = self.composite_driver {
3432 return 1;
3433 }
3434 0
3435 }
3436 }
3437
3438 impl fidl::encoding::ValueTypeMarker for CompositeDriverMatch {
3439 type Borrowed<'a> = &'a Self;
3440 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3441 value
3442 }
3443 }
3444
3445 unsafe impl fidl::encoding::TypeMarker for CompositeDriverMatch {
3446 type Owned = Self;
3447
3448 #[inline(always)]
3449 fn inline_align(_context: fidl::encoding::Context) -> usize {
3450 8
3451 }
3452
3453 #[inline(always)]
3454 fn inline_size(_context: fidl::encoding::Context) -> usize {
3455 16
3456 }
3457 }
3458
3459 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeDriverMatch, D>
3460 for &CompositeDriverMatch
3461 {
3462 unsafe fn encode(
3463 self,
3464 encoder: &mut fidl::encoding::Encoder<'_, D>,
3465 offset: usize,
3466 mut depth: fidl::encoding::Depth,
3467 ) -> fidl::Result<()> {
3468 encoder.debug_check_bounds::<CompositeDriverMatch>(offset);
3469 let max_ordinal: u64 = self.max_ordinal_present();
3471 encoder.write_num(max_ordinal, offset);
3472 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3473 if max_ordinal == 0 {
3475 return Ok(());
3476 }
3477 depth.increment()?;
3478 let envelope_size = 8;
3479 let bytes_len = max_ordinal as usize * envelope_size;
3480 #[allow(unused_variables)]
3481 let offset = encoder.out_of_line_offset(bytes_len);
3482 let mut _prev_end_offset: usize = 0;
3483 if 1 > max_ordinal {
3484 return Ok(());
3485 }
3486
3487 let cur_offset: usize = (1 - 1) * envelope_size;
3490
3491 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3493
3494 fidl::encoding::encode_in_envelope_optional::<CompositeDriverInfo, D>(
3499 self.composite_driver
3500 .as_ref()
3501 .map(<CompositeDriverInfo as fidl::encoding::ValueTypeMarker>::borrow),
3502 encoder,
3503 offset + cur_offset,
3504 depth,
3505 )?;
3506
3507 _prev_end_offset = cur_offset + envelope_size;
3508 if 2 > max_ordinal {
3509 return Ok(());
3510 }
3511
3512 let cur_offset: usize = (2 - 1) * envelope_size;
3515
3516 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3518
3519 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>, D>(
3524 self.parent_names.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString> as fidl::encoding::ValueTypeMarker>::borrow),
3525 encoder, offset + cur_offset, depth
3526 )?;
3527
3528 _prev_end_offset = cur_offset + envelope_size;
3529 if 3 > max_ordinal {
3530 return Ok(());
3531 }
3532
3533 let cur_offset: usize = (3 - 1) * envelope_size;
3536
3537 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3539
3540 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3545 self.primary_parent_index
3546 .as_ref()
3547 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3548 encoder,
3549 offset + cur_offset,
3550 depth,
3551 )?;
3552
3553 _prev_end_offset = cur_offset + envelope_size;
3554
3555 Ok(())
3556 }
3557 }
3558
3559 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeDriverMatch {
3560 #[inline(always)]
3561 fn new_empty() -> Self {
3562 Self::default()
3563 }
3564
3565 unsafe fn decode(
3566 &mut self,
3567 decoder: &mut fidl::encoding::Decoder<'_, D>,
3568 offset: usize,
3569 mut depth: fidl::encoding::Depth,
3570 ) -> fidl::Result<()> {
3571 decoder.debug_check_bounds::<Self>(offset);
3572 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3573 None => return Err(fidl::Error::NotNullable),
3574 Some(len) => len,
3575 };
3576 if len == 0 {
3578 return Ok(());
3579 };
3580 depth.increment()?;
3581 let envelope_size = 8;
3582 let bytes_len = len * envelope_size;
3583 let offset = decoder.out_of_line_offset(bytes_len)?;
3584 let mut _next_ordinal_to_read = 0;
3586 let mut next_offset = offset;
3587 let end_offset = offset + bytes_len;
3588 _next_ordinal_to_read += 1;
3589 if next_offset >= end_offset {
3590 return Ok(());
3591 }
3592
3593 while _next_ordinal_to_read < 1 {
3595 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3596 _next_ordinal_to_read += 1;
3597 next_offset += envelope_size;
3598 }
3599
3600 let next_out_of_line = decoder.next_out_of_line();
3601 let handles_before = decoder.remaining_handles();
3602 if let Some((inlined, num_bytes, num_handles)) =
3603 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3604 {
3605 let member_inline_size =
3606 <CompositeDriverInfo as fidl::encoding::TypeMarker>::inline_size(
3607 decoder.context,
3608 );
3609 if inlined != (member_inline_size <= 4) {
3610 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3611 }
3612 let inner_offset;
3613 let mut inner_depth = depth.clone();
3614 if inlined {
3615 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3616 inner_offset = next_offset;
3617 } else {
3618 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3619 inner_depth.increment()?;
3620 }
3621 let val_ref = self
3622 .composite_driver
3623 .get_or_insert_with(|| fidl::new_empty!(CompositeDriverInfo, D));
3624 fidl::decode!(CompositeDriverInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
3625 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3626 {
3627 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3628 }
3629 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3630 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3631 }
3632 }
3633
3634 next_offset += envelope_size;
3635 _next_ordinal_to_read += 1;
3636 if next_offset >= end_offset {
3637 return Ok(());
3638 }
3639
3640 while _next_ordinal_to_read < 2 {
3642 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3643 _next_ordinal_to_read += 1;
3644 next_offset += envelope_size;
3645 }
3646
3647 let next_out_of_line = decoder.next_out_of_line();
3648 let handles_before = decoder.remaining_handles();
3649 if let Some((inlined, num_bytes, num_handles)) =
3650 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3651 {
3652 let member_inline_size = <fidl::encoding::UnboundedVector<
3653 fidl::encoding::UnboundedString,
3654 > as fidl::encoding::TypeMarker>::inline_size(
3655 decoder.context
3656 );
3657 if inlined != (member_inline_size <= 4) {
3658 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3659 }
3660 let inner_offset;
3661 let mut inner_depth = depth.clone();
3662 if inlined {
3663 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3664 inner_offset = next_offset;
3665 } else {
3666 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3667 inner_depth.increment()?;
3668 }
3669 let val_ref = self.parent_names.get_or_insert_with(|| {
3670 fidl::new_empty!(
3671 fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
3672 D
3673 )
3674 });
3675 fidl::decode!(
3676 fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
3677 D,
3678 val_ref,
3679 decoder,
3680 inner_offset,
3681 inner_depth
3682 )?;
3683 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3684 {
3685 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3686 }
3687 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3688 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3689 }
3690 }
3691
3692 next_offset += envelope_size;
3693 _next_ordinal_to_read += 1;
3694 if next_offset >= end_offset {
3695 return Ok(());
3696 }
3697
3698 while _next_ordinal_to_read < 3 {
3700 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3701 _next_ordinal_to_read += 1;
3702 next_offset += envelope_size;
3703 }
3704
3705 let next_out_of_line = decoder.next_out_of_line();
3706 let handles_before = decoder.remaining_handles();
3707 if let Some((inlined, num_bytes, num_handles)) =
3708 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3709 {
3710 let member_inline_size =
3711 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3712 if inlined != (member_inline_size <= 4) {
3713 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3714 }
3715 let inner_offset;
3716 let mut inner_depth = depth.clone();
3717 if inlined {
3718 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3719 inner_offset = next_offset;
3720 } else {
3721 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3722 inner_depth.increment()?;
3723 }
3724 let val_ref =
3725 self.primary_parent_index.get_or_insert_with(|| fidl::new_empty!(u32, D));
3726 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3727 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3728 {
3729 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3730 }
3731 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3732 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3733 }
3734 }
3735
3736 next_offset += envelope_size;
3737
3738 while next_offset < end_offset {
3740 _next_ordinal_to_read += 1;
3741 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3742 next_offset += envelope_size;
3743 }
3744
3745 Ok(())
3746 }
3747 }
3748
3749 impl CompositeInfo {
3750 #[inline(always)]
3751 fn max_ordinal_present(&self) -> u64 {
3752 if let Some(_) = self.matched_driver {
3753 return 2;
3754 }
3755 if let Some(_) = self.spec {
3756 return 1;
3757 }
3758 0
3759 }
3760 }
3761
3762 impl fidl::encoding::ValueTypeMarker for CompositeInfo {
3763 type Borrowed<'a> = &'a Self;
3764 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3765 value
3766 }
3767 }
3768
3769 unsafe impl fidl::encoding::TypeMarker for CompositeInfo {
3770 type Owned = Self;
3771
3772 #[inline(always)]
3773 fn inline_align(_context: fidl::encoding::Context) -> usize {
3774 8
3775 }
3776
3777 #[inline(always)]
3778 fn inline_size(_context: fidl::encoding::Context) -> usize {
3779 16
3780 }
3781 }
3782
3783 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeInfo, D>
3784 for &CompositeInfo
3785 {
3786 unsafe fn encode(
3787 self,
3788 encoder: &mut fidl::encoding::Encoder<'_, D>,
3789 offset: usize,
3790 mut depth: fidl::encoding::Depth,
3791 ) -> fidl::Result<()> {
3792 encoder.debug_check_bounds::<CompositeInfo>(offset);
3793 let max_ordinal: u64 = self.max_ordinal_present();
3795 encoder.write_num(max_ordinal, offset);
3796 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3797 if max_ordinal == 0 {
3799 return Ok(());
3800 }
3801 depth.increment()?;
3802 let envelope_size = 8;
3803 let bytes_len = max_ordinal as usize * envelope_size;
3804 #[allow(unused_variables)]
3805 let offset = encoder.out_of_line_offset(bytes_len);
3806 let mut _prev_end_offset: usize = 0;
3807 if 1 > max_ordinal {
3808 return Ok(());
3809 }
3810
3811 let cur_offset: usize = (1 - 1) * envelope_size;
3814
3815 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3817
3818 fidl::encoding::encode_in_envelope_optional::<CompositeNodeSpec, D>(
3823 self.spec
3824 .as_ref()
3825 .map(<CompositeNodeSpec as fidl::encoding::ValueTypeMarker>::borrow),
3826 encoder,
3827 offset + cur_offset,
3828 depth,
3829 )?;
3830
3831 _prev_end_offset = cur_offset + envelope_size;
3832 if 2 > max_ordinal {
3833 return Ok(());
3834 }
3835
3836 let cur_offset: usize = (2 - 1) * envelope_size;
3839
3840 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3842
3843 fidl::encoding::encode_in_envelope_optional::<CompositeDriverMatch, D>(
3848 self.matched_driver
3849 .as_ref()
3850 .map(<CompositeDriverMatch as fidl::encoding::ValueTypeMarker>::borrow),
3851 encoder,
3852 offset + cur_offset,
3853 depth,
3854 )?;
3855
3856 _prev_end_offset = cur_offset + envelope_size;
3857
3858 Ok(())
3859 }
3860 }
3861
3862 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeInfo {
3863 #[inline(always)]
3864 fn new_empty() -> Self {
3865 Self::default()
3866 }
3867
3868 unsafe fn decode(
3869 &mut self,
3870 decoder: &mut fidl::encoding::Decoder<'_, D>,
3871 offset: usize,
3872 mut depth: fidl::encoding::Depth,
3873 ) -> fidl::Result<()> {
3874 decoder.debug_check_bounds::<Self>(offset);
3875 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3876 None => return Err(fidl::Error::NotNullable),
3877 Some(len) => len,
3878 };
3879 if len == 0 {
3881 return Ok(());
3882 };
3883 depth.increment()?;
3884 let envelope_size = 8;
3885 let bytes_len = len * envelope_size;
3886 let offset = decoder.out_of_line_offset(bytes_len)?;
3887 let mut _next_ordinal_to_read = 0;
3889 let mut next_offset = offset;
3890 let end_offset = offset + bytes_len;
3891 _next_ordinal_to_read += 1;
3892 if next_offset >= end_offset {
3893 return Ok(());
3894 }
3895
3896 while _next_ordinal_to_read < 1 {
3898 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3899 _next_ordinal_to_read += 1;
3900 next_offset += envelope_size;
3901 }
3902
3903 let next_out_of_line = decoder.next_out_of_line();
3904 let handles_before = decoder.remaining_handles();
3905 if let Some((inlined, num_bytes, num_handles)) =
3906 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3907 {
3908 let member_inline_size =
3909 <CompositeNodeSpec as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3910 if inlined != (member_inline_size <= 4) {
3911 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3912 }
3913 let inner_offset;
3914 let mut inner_depth = depth.clone();
3915 if inlined {
3916 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3917 inner_offset = next_offset;
3918 } else {
3919 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3920 inner_depth.increment()?;
3921 }
3922 let val_ref =
3923 self.spec.get_or_insert_with(|| fidl::new_empty!(CompositeNodeSpec, D));
3924 fidl::decode!(CompositeNodeSpec, D, val_ref, decoder, inner_offset, inner_depth)?;
3925 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3926 {
3927 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3928 }
3929 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3930 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3931 }
3932 }
3933
3934 next_offset += envelope_size;
3935 _next_ordinal_to_read += 1;
3936 if next_offset >= end_offset {
3937 return Ok(());
3938 }
3939
3940 while _next_ordinal_to_read < 2 {
3942 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3943 _next_ordinal_to_read += 1;
3944 next_offset += envelope_size;
3945 }
3946
3947 let next_out_of_line = decoder.next_out_of_line();
3948 let handles_before = decoder.remaining_handles();
3949 if let Some((inlined, num_bytes, num_handles)) =
3950 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3951 {
3952 let member_inline_size =
3953 <CompositeDriverMatch as fidl::encoding::TypeMarker>::inline_size(
3954 decoder.context,
3955 );
3956 if inlined != (member_inline_size <= 4) {
3957 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3958 }
3959 let inner_offset;
3960 let mut inner_depth = depth.clone();
3961 if inlined {
3962 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3963 inner_offset = next_offset;
3964 } else {
3965 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3966 inner_depth.increment()?;
3967 }
3968 let val_ref = self
3969 .matched_driver
3970 .get_or_insert_with(|| fidl::new_empty!(CompositeDriverMatch, D));
3971 fidl::decode!(
3972 CompositeDriverMatch,
3973 D,
3974 val_ref,
3975 decoder,
3976 inner_offset,
3977 inner_depth
3978 )?;
3979 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3980 {
3981 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3982 }
3983 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3984 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3985 }
3986 }
3987
3988 next_offset += envelope_size;
3989
3990 while next_offset < end_offset {
3992 _next_ordinal_to_read += 1;
3993 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3994 next_offset += envelope_size;
3995 }
3996
3997 Ok(())
3998 }
3999 }
4000
4001 impl CompositeNodeSpec {
4002 #[inline(always)]
4003 fn max_ordinal_present(&self) -> u64 {
4004 if let Some(_) = self.driver_host {
4005 return 4;
4006 }
4007 if let Some(_) = self.parents2 {
4008 return 3;
4009 }
4010 if let Some(_) = self.name {
4011 return 1;
4012 }
4013 0
4014 }
4015 }
4016
4017 impl fidl::encoding::ValueTypeMarker for CompositeNodeSpec {
4018 type Borrowed<'a> = &'a Self;
4019 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4020 value
4021 }
4022 }
4023
4024 unsafe impl fidl::encoding::TypeMarker for CompositeNodeSpec {
4025 type Owned = Self;
4026
4027 #[inline(always)]
4028 fn inline_align(_context: fidl::encoding::Context) -> usize {
4029 8
4030 }
4031
4032 #[inline(always)]
4033 fn inline_size(_context: fidl::encoding::Context) -> usize {
4034 16
4035 }
4036 }
4037
4038 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeNodeSpec, D>
4039 for &CompositeNodeSpec
4040 {
4041 unsafe fn encode(
4042 self,
4043 encoder: &mut fidl::encoding::Encoder<'_, D>,
4044 offset: usize,
4045 mut depth: fidl::encoding::Depth,
4046 ) -> fidl::Result<()> {
4047 encoder.debug_check_bounds::<CompositeNodeSpec>(offset);
4048 let max_ordinal: u64 = self.max_ordinal_present();
4050 encoder.write_num(max_ordinal, offset);
4051 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4052 if max_ordinal == 0 {
4054 return Ok(());
4055 }
4056 depth.increment()?;
4057 let envelope_size = 8;
4058 let bytes_len = max_ordinal as usize * envelope_size;
4059 #[allow(unused_variables)]
4060 let offset = encoder.out_of_line_offset(bytes_len);
4061 let mut _prev_end_offset: usize = 0;
4062 if 1 > max_ordinal {
4063 return Ok(());
4064 }
4065
4066 let cur_offset: usize = (1 - 1) * envelope_size;
4069
4070 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4072
4073 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4078 self.name.as_ref().map(
4079 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4080 ),
4081 encoder,
4082 offset + cur_offset,
4083 depth,
4084 )?;
4085
4086 _prev_end_offset = cur_offset + envelope_size;
4087 if 3 > max_ordinal {
4088 return Ok(());
4089 }
4090
4091 let cur_offset: usize = (3 - 1) * envelope_size;
4094
4095 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4097
4098 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ParentSpec2>, D>(
4103 self.parents2.as_ref().map(<fidl::encoding::UnboundedVector<ParentSpec2> as fidl::encoding::ValueTypeMarker>::borrow),
4104 encoder, offset + cur_offset, depth
4105 )?;
4106
4107 _prev_end_offset = cur_offset + envelope_size;
4108 if 4 > max_ordinal {
4109 return Ok(());
4110 }
4111
4112 let cur_offset: usize = (4 - 1) * envelope_size;
4115
4116 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4118
4119 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
4124 self.driver_host.as_ref().map(
4125 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
4126 ),
4127 encoder,
4128 offset + cur_offset,
4129 depth,
4130 )?;
4131
4132 _prev_end_offset = cur_offset + envelope_size;
4133
4134 Ok(())
4135 }
4136 }
4137
4138 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeNodeSpec {
4139 #[inline(always)]
4140 fn new_empty() -> Self {
4141 Self::default()
4142 }
4143
4144 unsafe fn decode(
4145 &mut self,
4146 decoder: &mut fidl::encoding::Decoder<'_, D>,
4147 offset: usize,
4148 mut depth: fidl::encoding::Depth,
4149 ) -> fidl::Result<()> {
4150 decoder.debug_check_bounds::<Self>(offset);
4151 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4152 None => return Err(fidl::Error::NotNullable),
4153 Some(len) => len,
4154 };
4155 if len == 0 {
4157 return Ok(());
4158 };
4159 depth.increment()?;
4160 let envelope_size = 8;
4161 let bytes_len = len * envelope_size;
4162 let offset = decoder.out_of_line_offset(bytes_len)?;
4163 let mut _next_ordinal_to_read = 0;
4165 let mut next_offset = offset;
4166 let end_offset = offset + bytes_len;
4167 _next_ordinal_to_read += 1;
4168 if next_offset >= end_offset {
4169 return Ok(());
4170 }
4171
4172 while _next_ordinal_to_read < 1 {
4174 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4175 _next_ordinal_to_read += 1;
4176 next_offset += envelope_size;
4177 }
4178
4179 let next_out_of_line = decoder.next_out_of_line();
4180 let handles_before = decoder.remaining_handles();
4181 if let Some((inlined, num_bytes, num_handles)) =
4182 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4183 {
4184 let member_inline_size =
4185 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4186 decoder.context,
4187 );
4188 if inlined != (member_inline_size <= 4) {
4189 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4190 }
4191 let inner_offset;
4192 let mut inner_depth = depth.clone();
4193 if inlined {
4194 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4195 inner_offset = next_offset;
4196 } else {
4197 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4198 inner_depth.increment()?;
4199 }
4200 let val_ref = self
4201 .name
4202 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
4203 fidl::decode!(
4204 fidl::encoding::UnboundedString,
4205 D,
4206 val_ref,
4207 decoder,
4208 inner_offset,
4209 inner_depth
4210 )?;
4211 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4212 {
4213 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4214 }
4215 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4216 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4217 }
4218 }
4219
4220 next_offset += envelope_size;
4221 _next_ordinal_to_read += 1;
4222 if next_offset >= end_offset {
4223 return Ok(());
4224 }
4225
4226 while _next_ordinal_to_read < 3 {
4228 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4229 _next_ordinal_to_read += 1;
4230 next_offset += envelope_size;
4231 }
4232
4233 let next_out_of_line = decoder.next_out_of_line();
4234 let handles_before = decoder.remaining_handles();
4235 if let Some((inlined, num_bytes, num_handles)) =
4236 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4237 {
4238 let member_inline_size = <fidl::encoding::UnboundedVector<ParentSpec2> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4239 if inlined != (member_inline_size <= 4) {
4240 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4241 }
4242 let inner_offset;
4243 let mut inner_depth = depth.clone();
4244 if inlined {
4245 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4246 inner_offset = next_offset;
4247 } else {
4248 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4249 inner_depth.increment()?;
4250 }
4251 let val_ref = self.parents2.get_or_insert_with(|| {
4252 fidl::new_empty!(fidl::encoding::UnboundedVector<ParentSpec2>, D)
4253 });
4254 fidl::decode!(
4255 fidl::encoding::UnboundedVector<ParentSpec2>,
4256 D,
4257 val_ref,
4258 decoder,
4259 inner_offset,
4260 inner_depth
4261 )?;
4262 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4263 {
4264 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4265 }
4266 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4267 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4268 }
4269 }
4270
4271 next_offset += envelope_size;
4272 _next_ordinal_to_read += 1;
4273 if next_offset >= end_offset {
4274 return Ok(());
4275 }
4276
4277 while _next_ordinal_to_read < 4 {
4279 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4280 _next_ordinal_to_read += 1;
4281 next_offset += envelope_size;
4282 }
4283
4284 let next_out_of_line = decoder.next_out_of_line();
4285 let handles_before = decoder.remaining_handles();
4286 if let Some((inlined, num_bytes, num_handles)) =
4287 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4288 {
4289 let member_inline_size =
4290 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
4291 decoder.context,
4292 );
4293 if inlined != (member_inline_size <= 4) {
4294 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4295 }
4296 let inner_offset;
4297 let mut inner_depth = depth.clone();
4298 if inlined {
4299 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4300 inner_offset = next_offset;
4301 } else {
4302 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4303 inner_depth.increment()?;
4304 }
4305 let val_ref = self
4306 .driver_host
4307 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
4308 fidl::decode!(
4309 fidl::encoding::BoundedString<128>,
4310 D,
4311 val_ref,
4312 decoder,
4313 inner_offset,
4314 inner_depth
4315 )?;
4316 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4317 {
4318 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4319 }
4320 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4321 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4322 }
4323 }
4324
4325 next_offset += envelope_size;
4326
4327 while next_offset < end_offset {
4329 _next_ordinal_to_read += 1;
4330 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4331 next_offset += envelope_size;
4332 }
4333
4334 Ok(())
4335 }
4336 }
4337
4338 impl CompositeParent {
4339 #[inline(always)]
4340 fn max_ordinal_present(&self) -> u64 {
4341 if let Some(_) = self.index {
4342 return 2;
4343 }
4344 if let Some(_) = self.composite {
4345 return 1;
4346 }
4347 0
4348 }
4349 }
4350
4351 impl fidl::encoding::ValueTypeMarker for CompositeParent {
4352 type Borrowed<'a> = &'a Self;
4353 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4354 value
4355 }
4356 }
4357
4358 unsafe impl fidl::encoding::TypeMarker for CompositeParent {
4359 type Owned = Self;
4360
4361 #[inline(always)]
4362 fn inline_align(_context: fidl::encoding::Context) -> usize {
4363 8
4364 }
4365
4366 #[inline(always)]
4367 fn inline_size(_context: fidl::encoding::Context) -> usize {
4368 16
4369 }
4370 }
4371
4372 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeParent, D>
4373 for &CompositeParent
4374 {
4375 unsafe fn encode(
4376 self,
4377 encoder: &mut fidl::encoding::Encoder<'_, D>,
4378 offset: usize,
4379 mut depth: fidl::encoding::Depth,
4380 ) -> fidl::Result<()> {
4381 encoder.debug_check_bounds::<CompositeParent>(offset);
4382 let max_ordinal: u64 = self.max_ordinal_present();
4384 encoder.write_num(max_ordinal, offset);
4385 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4386 if max_ordinal == 0 {
4388 return Ok(());
4389 }
4390 depth.increment()?;
4391 let envelope_size = 8;
4392 let bytes_len = max_ordinal as usize * envelope_size;
4393 #[allow(unused_variables)]
4394 let offset = encoder.out_of_line_offset(bytes_len);
4395 let mut _prev_end_offset: usize = 0;
4396 if 1 > max_ordinal {
4397 return Ok(());
4398 }
4399
4400 let cur_offset: usize = (1 - 1) * envelope_size;
4403
4404 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4406
4407 fidl::encoding::encode_in_envelope_optional::<CompositeInfo, D>(
4412 self.composite
4413 .as_ref()
4414 .map(<CompositeInfo as fidl::encoding::ValueTypeMarker>::borrow),
4415 encoder,
4416 offset + cur_offset,
4417 depth,
4418 )?;
4419
4420 _prev_end_offset = cur_offset + envelope_size;
4421 if 2 > max_ordinal {
4422 return Ok(());
4423 }
4424
4425 let cur_offset: usize = (2 - 1) * envelope_size;
4428
4429 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4431
4432 fidl::encoding::encode_in_envelope_optional::<u32, D>(
4437 self.index.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4438 encoder,
4439 offset + cur_offset,
4440 depth,
4441 )?;
4442
4443 _prev_end_offset = cur_offset + envelope_size;
4444
4445 Ok(())
4446 }
4447 }
4448
4449 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeParent {
4450 #[inline(always)]
4451 fn new_empty() -> Self {
4452 Self::default()
4453 }
4454
4455 unsafe fn decode(
4456 &mut self,
4457 decoder: &mut fidl::encoding::Decoder<'_, D>,
4458 offset: usize,
4459 mut depth: fidl::encoding::Depth,
4460 ) -> fidl::Result<()> {
4461 decoder.debug_check_bounds::<Self>(offset);
4462 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4463 None => return Err(fidl::Error::NotNullable),
4464 Some(len) => len,
4465 };
4466 if len == 0 {
4468 return Ok(());
4469 };
4470 depth.increment()?;
4471 let envelope_size = 8;
4472 let bytes_len = len * envelope_size;
4473 let offset = decoder.out_of_line_offset(bytes_len)?;
4474 let mut _next_ordinal_to_read = 0;
4476 let mut next_offset = offset;
4477 let end_offset = offset + bytes_len;
4478 _next_ordinal_to_read += 1;
4479 if next_offset >= end_offset {
4480 return Ok(());
4481 }
4482
4483 while _next_ordinal_to_read < 1 {
4485 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4486 _next_ordinal_to_read += 1;
4487 next_offset += envelope_size;
4488 }
4489
4490 let next_out_of_line = decoder.next_out_of_line();
4491 let handles_before = decoder.remaining_handles();
4492 if let Some((inlined, num_bytes, num_handles)) =
4493 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4494 {
4495 let member_inline_size =
4496 <CompositeInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4497 if inlined != (member_inline_size <= 4) {
4498 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4499 }
4500 let inner_offset;
4501 let mut inner_depth = depth.clone();
4502 if inlined {
4503 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4504 inner_offset = next_offset;
4505 } else {
4506 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4507 inner_depth.increment()?;
4508 }
4509 let val_ref =
4510 self.composite.get_or_insert_with(|| fidl::new_empty!(CompositeInfo, D));
4511 fidl::decode!(CompositeInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
4512 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4513 {
4514 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4515 }
4516 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4517 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4518 }
4519 }
4520
4521 next_offset += envelope_size;
4522 _next_ordinal_to_read += 1;
4523 if next_offset >= end_offset {
4524 return Ok(());
4525 }
4526
4527 while _next_ordinal_to_read < 2 {
4529 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4530 _next_ordinal_to_read += 1;
4531 next_offset += envelope_size;
4532 }
4533
4534 let next_out_of_line = decoder.next_out_of_line();
4535 let handles_before = decoder.remaining_handles();
4536 if let Some((inlined, num_bytes, num_handles)) =
4537 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4538 {
4539 let member_inline_size =
4540 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4541 if inlined != (member_inline_size <= 4) {
4542 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4543 }
4544 let inner_offset;
4545 let mut inner_depth = depth.clone();
4546 if inlined {
4547 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4548 inner_offset = next_offset;
4549 } else {
4550 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4551 inner_depth.increment()?;
4552 }
4553 let val_ref = self.index.get_or_insert_with(|| fidl::new_empty!(u32, D));
4554 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4555 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4556 {
4557 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4558 }
4559 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4560 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4561 }
4562 }
4563
4564 next_offset += envelope_size;
4565
4566 while next_offset < end_offset {
4568 _next_ordinal_to_read += 1;
4569 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4570 next_offset += envelope_size;
4571 }
4572
4573 Ok(())
4574 }
4575 }
4576
4577 impl Dependency {
4578 #[inline(always)]
4579 fn max_ordinal_present(&self) -> u64 {
4580 if let Some(_) = self.tags {
4581 return 2;
4582 }
4583 if let Some(_) = self.selector {
4584 return 1;
4585 }
4586 0
4587 }
4588 }
4589
4590 impl fidl::encoding::ValueTypeMarker for Dependency {
4591 type Borrowed<'a> = &'a Self;
4592 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4593 value
4594 }
4595 }
4596
4597 unsafe impl fidl::encoding::TypeMarker for Dependency {
4598 type Owned = Self;
4599
4600 #[inline(always)]
4601 fn inline_align(_context: fidl::encoding::Context) -> usize {
4602 8
4603 }
4604
4605 #[inline(always)]
4606 fn inline_size(_context: fidl::encoding::Context) -> usize {
4607 16
4608 }
4609 }
4610
4611 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Dependency, D>
4612 for &Dependency
4613 {
4614 unsafe fn encode(
4615 self,
4616 encoder: &mut fidl::encoding::Encoder<'_, D>,
4617 offset: usize,
4618 mut depth: fidl::encoding::Depth,
4619 ) -> fidl::Result<()> {
4620 encoder.debug_check_bounds::<Dependency>(offset);
4621 let max_ordinal: u64 = self.max_ordinal_present();
4623 encoder.write_num(max_ordinal, offset);
4624 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4625 if max_ordinal == 0 {
4627 return Ok(());
4628 }
4629 depth.increment()?;
4630 let envelope_size = 8;
4631 let bytes_len = max_ordinal as usize * envelope_size;
4632 #[allow(unused_variables)]
4633 let offset = encoder.out_of_line_offset(bytes_len);
4634 let mut _prev_end_offset: usize = 0;
4635 if 1 > max_ordinal {
4636 return Ok(());
4637 }
4638
4639 let cur_offset: usize = (1 - 1) * envelope_size;
4642
4643 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4645
4646 fidl::encoding::encode_in_envelope_optional::<Selector, D>(
4651 self.selector.as_ref().map(<Selector as fidl::encoding::ValueTypeMarker>::borrow),
4652 encoder,
4653 offset + cur_offset,
4654 depth,
4655 )?;
4656
4657 _prev_end_offset = cur_offset + envelope_size;
4658 if 2 > max_ordinal {
4659 return Ok(());
4660 }
4661
4662 let cur_offset: usize = (2 - 1) * envelope_size;
4665
4666 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4668
4669 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ResourceProperty, 64>, D>(
4674 self.tags.as_ref().map(<fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
4675 encoder, offset + cur_offset, depth
4676 )?;
4677
4678 _prev_end_offset = cur_offset + envelope_size;
4679
4680 Ok(())
4681 }
4682 }
4683
4684 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dependency {
4685 #[inline(always)]
4686 fn new_empty() -> Self {
4687 Self::default()
4688 }
4689
4690 unsafe fn decode(
4691 &mut self,
4692 decoder: &mut fidl::encoding::Decoder<'_, D>,
4693 offset: usize,
4694 mut depth: fidl::encoding::Depth,
4695 ) -> fidl::Result<()> {
4696 decoder.debug_check_bounds::<Self>(offset);
4697 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4698 None => return Err(fidl::Error::NotNullable),
4699 Some(len) => len,
4700 };
4701 if len == 0 {
4703 return Ok(());
4704 };
4705 depth.increment()?;
4706 let envelope_size = 8;
4707 let bytes_len = len * envelope_size;
4708 let offset = decoder.out_of_line_offset(bytes_len)?;
4709 let mut _next_ordinal_to_read = 0;
4711 let mut next_offset = offset;
4712 let end_offset = offset + bytes_len;
4713 _next_ordinal_to_read += 1;
4714 if next_offset >= end_offset {
4715 return Ok(());
4716 }
4717
4718 while _next_ordinal_to_read < 1 {
4720 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4721 _next_ordinal_to_read += 1;
4722 next_offset += envelope_size;
4723 }
4724
4725 let next_out_of_line = decoder.next_out_of_line();
4726 let handles_before = decoder.remaining_handles();
4727 if let Some((inlined, num_bytes, num_handles)) =
4728 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4729 {
4730 let member_inline_size =
4731 <Selector as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4732 if inlined != (member_inline_size <= 4) {
4733 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4734 }
4735 let inner_offset;
4736 let mut inner_depth = depth.clone();
4737 if inlined {
4738 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4739 inner_offset = next_offset;
4740 } else {
4741 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4742 inner_depth.increment()?;
4743 }
4744 let val_ref = self.selector.get_or_insert_with(|| fidl::new_empty!(Selector, D));
4745 fidl::decode!(Selector, D, val_ref, decoder, inner_offset, inner_depth)?;
4746 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4747 {
4748 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4749 }
4750 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4751 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4752 }
4753 }
4754
4755 next_offset += envelope_size;
4756 _next_ordinal_to_read += 1;
4757 if next_offset >= end_offset {
4758 return Ok(());
4759 }
4760
4761 while _next_ordinal_to_read < 2 {
4763 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4764 _next_ordinal_to_read += 1;
4765 next_offset += envelope_size;
4766 }
4767
4768 let next_out_of_line = decoder.next_out_of_line();
4769 let handles_before = decoder.remaining_handles();
4770 if let Some((inlined, num_bytes, num_handles)) =
4771 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4772 {
4773 let member_inline_size = <fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4774 if inlined != (member_inline_size <= 4) {
4775 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4776 }
4777 let inner_offset;
4778 let mut inner_depth = depth.clone();
4779 if inlined {
4780 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4781 inner_offset = next_offset;
4782 } else {
4783 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4784 inner_depth.increment()?;
4785 }
4786 let val_ref = self.tags.get_or_insert_with(
4787 || fidl::new_empty!(fidl::encoding::Vector<ResourceProperty, 64>, D),
4788 );
4789 fidl::decode!(fidl::encoding::Vector<ResourceProperty, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
4790 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4791 {
4792 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4793 }
4794 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4795 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4796 }
4797 }
4798
4799 next_offset += envelope_size;
4800
4801 while next_offset < end_offset {
4803 _next_ordinal_to_read += 1;
4804 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4805 next_offset += envelope_size;
4806 }
4807
4808 Ok(())
4809 }
4810 }
4811
4812 impl DeviceCategory {
4813 #[inline(always)]
4814 fn max_ordinal_present(&self) -> u64 {
4815 if let Some(_) = self.subcategory {
4816 return 2;
4817 }
4818 if let Some(_) = self.category {
4819 return 1;
4820 }
4821 0
4822 }
4823 }
4824
4825 impl fidl::encoding::ValueTypeMarker for DeviceCategory {
4826 type Borrowed<'a> = &'a Self;
4827 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4828 value
4829 }
4830 }
4831
4832 unsafe impl fidl::encoding::TypeMarker for DeviceCategory {
4833 type Owned = Self;
4834
4835 #[inline(always)]
4836 fn inline_align(_context: fidl::encoding::Context) -> usize {
4837 8
4838 }
4839
4840 #[inline(always)]
4841 fn inline_size(_context: fidl::encoding::Context) -> usize {
4842 16
4843 }
4844 }
4845
4846 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceCategory, D>
4847 for &DeviceCategory
4848 {
4849 unsafe fn encode(
4850 self,
4851 encoder: &mut fidl::encoding::Encoder<'_, D>,
4852 offset: usize,
4853 mut depth: fidl::encoding::Depth,
4854 ) -> fidl::Result<()> {
4855 encoder.debug_check_bounds::<DeviceCategory>(offset);
4856 let max_ordinal: u64 = self.max_ordinal_present();
4858 encoder.write_num(max_ordinal, offset);
4859 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4860 if max_ordinal == 0 {
4862 return Ok(());
4863 }
4864 depth.increment()?;
4865 let envelope_size = 8;
4866 let bytes_len = max_ordinal as usize * envelope_size;
4867 #[allow(unused_variables)]
4868 let offset = encoder.out_of_line_offset(bytes_len);
4869 let mut _prev_end_offset: usize = 0;
4870 if 1 > max_ordinal {
4871 return Ok(());
4872 }
4873
4874 let cur_offset: usize = (1 - 1) * envelope_size;
4877
4878 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4880
4881 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4886 self.category.as_ref().map(
4887 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4888 ),
4889 encoder,
4890 offset + cur_offset,
4891 depth,
4892 )?;
4893
4894 _prev_end_offset = cur_offset + envelope_size;
4895 if 2 > max_ordinal {
4896 return Ok(());
4897 }
4898
4899 let cur_offset: usize = (2 - 1) * envelope_size;
4902
4903 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4905
4906 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4911 self.subcategory.as_ref().map(
4912 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4913 ),
4914 encoder,
4915 offset + cur_offset,
4916 depth,
4917 )?;
4918
4919 _prev_end_offset = cur_offset + envelope_size;
4920
4921 Ok(())
4922 }
4923 }
4924
4925 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceCategory {
4926 #[inline(always)]
4927 fn new_empty() -> Self {
4928 Self::default()
4929 }
4930
4931 unsafe fn decode(
4932 &mut self,
4933 decoder: &mut fidl::encoding::Decoder<'_, D>,
4934 offset: usize,
4935 mut depth: fidl::encoding::Depth,
4936 ) -> fidl::Result<()> {
4937 decoder.debug_check_bounds::<Self>(offset);
4938 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4939 None => return Err(fidl::Error::NotNullable),
4940 Some(len) => len,
4941 };
4942 if len == 0 {
4944 return Ok(());
4945 };
4946 depth.increment()?;
4947 let envelope_size = 8;
4948 let bytes_len = len * envelope_size;
4949 let offset = decoder.out_of_line_offset(bytes_len)?;
4950 let mut _next_ordinal_to_read = 0;
4952 let mut next_offset = offset;
4953 let end_offset = offset + bytes_len;
4954 _next_ordinal_to_read += 1;
4955 if next_offset >= end_offset {
4956 return Ok(());
4957 }
4958
4959 while _next_ordinal_to_read < 1 {
4961 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4962 _next_ordinal_to_read += 1;
4963 next_offset += envelope_size;
4964 }
4965
4966 let next_out_of_line = decoder.next_out_of_line();
4967 let handles_before = decoder.remaining_handles();
4968 if let Some((inlined, num_bytes, num_handles)) =
4969 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4970 {
4971 let member_inline_size =
4972 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4973 decoder.context,
4974 );
4975 if inlined != (member_inline_size <= 4) {
4976 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4977 }
4978 let inner_offset;
4979 let mut inner_depth = depth.clone();
4980 if inlined {
4981 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4982 inner_offset = next_offset;
4983 } else {
4984 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4985 inner_depth.increment()?;
4986 }
4987 let val_ref = self
4988 .category
4989 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
4990 fidl::decode!(
4991 fidl::encoding::UnboundedString,
4992 D,
4993 val_ref,
4994 decoder,
4995 inner_offset,
4996 inner_depth
4997 )?;
4998 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4999 {
5000 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5001 }
5002 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5003 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5004 }
5005 }
5006
5007 next_offset += envelope_size;
5008 _next_ordinal_to_read += 1;
5009 if next_offset >= end_offset {
5010 return Ok(());
5011 }
5012
5013 while _next_ordinal_to_read < 2 {
5015 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5016 _next_ordinal_to_read += 1;
5017 next_offset += envelope_size;
5018 }
5019
5020 let next_out_of_line = decoder.next_out_of_line();
5021 let handles_before = decoder.remaining_handles();
5022 if let Some((inlined, num_bytes, num_handles)) =
5023 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5024 {
5025 let member_inline_size =
5026 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
5027 decoder.context,
5028 );
5029 if inlined != (member_inline_size <= 4) {
5030 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5031 }
5032 let inner_offset;
5033 let mut inner_depth = depth.clone();
5034 if inlined {
5035 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5036 inner_offset = next_offset;
5037 } else {
5038 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5039 inner_depth.increment()?;
5040 }
5041 let val_ref = self
5042 .subcategory
5043 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
5044 fidl::decode!(
5045 fidl::encoding::UnboundedString,
5046 D,
5047 val_ref,
5048 decoder,
5049 inner_offset,
5050 inner_depth
5051 )?;
5052 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5053 {
5054 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5055 }
5056 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5057 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5058 }
5059 }
5060
5061 next_offset += envelope_size;
5062
5063 while next_offset < end_offset {
5065 _next_ordinal_to_read += 1;
5066 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5067 next_offset += envelope_size;
5068 }
5069
5070 Ok(())
5071 }
5072 }
5073
5074 impl DriverInfo {
5075 #[inline(always)]
5076 fn max_ordinal_present(&self) -> u64 {
5077 if let Some(_) = self.is_disabled {
5078 return 9;
5079 }
5080 if let Some(_) = self.driver_framework_version {
5081 return 8;
5082 }
5083 if let Some(_) = self.bind_rules_bytecode {
5084 return 7;
5085 }
5086 if let Some(_) = self.device_categories {
5087 return 6;
5088 }
5089 if let Some(_) = self.is_fallback {
5090 return 5;
5091 }
5092 if let Some(_) = self.package_type {
5093 return 4;
5094 }
5095 if let Some(_) = self.colocate {
5096 return 3;
5097 }
5098 if let Some(_) = self.name {
5099 return 2;
5100 }
5101 if let Some(_) = self.url {
5102 return 1;
5103 }
5104 0
5105 }
5106 }
5107
5108 impl fidl::encoding::ValueTypeMarker for DriverInfo {
5109 type Borrowed<'a> = &'a Self;
5110 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5111 value
5112 }
5113 }
5114
5115 unsafe impl fidl::encoding::TypeMarker for DriverInfo {
5116 type Owned = Self;
5117
5118 #[inline(always)]
5119 fn inline_align(_context: fidl::encoding::Context) -> usize {
5120 8
5121 }
5122
5123 #[inline(always)]
5124 fn inline_size(_context: fidl::encoding::Context) -> usize {
5125 16
5126 }
5127 }
5128
5129 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DriverInfo, D>
5130 for &DriverInfo
5131 {
5132 unsafe fn encode(
5133 self,
5134 encoder: &mut fidl::encoding::Encoder<'_, D>,
5135 offset: usize,
5136 mut depth: fidl::encoding::Depth,
5137 ) -> fidl::Result<()> {
5138 encoder.debug_check_bounds::<DriverInfo>(offset);
5139 let max_ordinal: u64 = self.max_ordinal_present();
5141 encoder.write_num(max_ordinal, offset);
5142 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5143 if max_ordinal == 0 {
5145 return Ok(());
5146 }
5147 depth.increment()?;
5148 let envelope_size = 8;
5149 let bytes_len = max_ordinal as usize * envelope_size;
5150 #[allow(unused_variables)]
5151 let offset = encoder.out_of_line_offset(bytes_len);
5152 let mut _prev_end_offset: usize = 0;
5153 if 1 > max_ordinal {
5154 return Ok(());
5155 }
5156
5157 let cur_offset: usize = (1 - 1) * envelope_size;
5160
5161 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5163
5164 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
5169 self.url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
5170 encoder, offset + cur_offset, depth
5171 )?;
5172
5173 _prev_end_offset = cur_offset + envelope_size;
5174 if 2 > max_ordinal {
5175 return Ok(());
5176 }
5177
5178 let cur_offset: usize = (2 - 1) * envelope_size;
5181
5182 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5184
5185 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
5190 self.name.as_ref().map(
5191 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
5192 ),
5193 encoder,
5194 offset + cur_offset,
5195 depth,
5196 )?;
5197
5198 _prev_end_offset = cur_offset + envelope_size;
5199 if 3 > max_ordinal {
5200 return Ok(());
5201 }
5202
5203 let cur_offset: usize = (3 - 1) * envelope_size;
5206
5207 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5209
5210 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5215 self.colocate.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5216 encoder,
5217 offset + cur_offset,
5218 depth,
5219 )?;
5220
5221 _prev_end_offset = cur_offset + envelope_size;
5222 if 4 > max_ordinal {
5223 return Ok(());
5224 }
5225
5226 let cur_offset: usize = (4 - 1) * envelope_size;
5229
5230 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5232
5233 fidl::encoding::encode_in_envelope_optional::<DriverPackageType, D>(
5238 self.package_type
5239 .as_ref()
5240 .map(<DriverPackageType as fidl::encoding::ValueTypeMarker>::borrow),
5241 encoder,
5242 offset + cur_offset,
5243 depth,
5244 )?;
5245
5246 _prev_end_offset = cur_offset + envelope_size;
5247 if 5 > max_ordinal {
5248 return Ok(());
5249 }
5250
5251 let cur_offset: usize = (5 - 1) * envelope_size;
5254
5255 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5257
5258 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5263 self.is_fallback.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5264 encoder,
5265 offset + cur_offset,
5266 depth,
5267 )?;
5268
5269 _prev_end_offset = cur_offset + envelope_size;
5270 if 6 > max_ordinal {
5271 return Ok(());
5272 }
5273
5274 let cur_offset: usize = (6 - 1) * envelope_size;
5277
5278 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5280
5281 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<DeviceCategory>, D>(
5286 self.device_categories.as_ref().map(<fidl::encoding::UnboundedVector<DeviceCategory> as fidl::encoding::ValueTypeMarker>::borrow),
5287 encoder, offset + cur_offset, depth
5288 )?;
5289
5290 _prev_end_offset = cur_offset + envelope_size;
5291 if 7 > max_ordinal {
5292 return Ok(());
5293 }
5294
5295 let cur_offset: usize = (7 - 1) * envelope_size;
5298
5299 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5301
5302 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
5307 self.bind_rules_bytecode.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
5308 encoder, offset + cur_offset, depth
5309 )?;
5310
5311 _prev_end_offset = cur_offset + envelope_size;
5312 if 8 > max_ordinal {
5313 return Ok(());
5314 }
5315
5316 let cur_offset: usize = (8 - 1) * envelope_size;
5319
5320 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5322
5323 fidl::encoding::encode_in_envelope_optional::<u8, D>(
5328 self.driver_framework_version
5329 .as_ref()
5330 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
5331 encoder,
5332 offset + cur_offset,
5333 depth,
5334 )?;
5335
5336 _prev_end_offset = cur_offset + envelope_size;
5337 if 9 > max_ordinal {
5338 return Ok(());
5339 }
5340
5341 let cur_offset: usize = (9 - 1) * envelope_size;
5344
5345 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5347
5348 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5353 self.is_disabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5354 encoder,
5355 offset + cur_offset,
5356 depth,
5357 )?;
5358
5359 _prev_end_offset = cur_offset + envelope_size;
5360
5361 Ok(())
5362 }
5363 }
5364
5365 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DriverInfo {
5366 #[inline(always)]
5367 fn new_empty() -> Self {
5368 Self::default()
5369 }
5370
5371 unsafe fn decode(
5372 &mut self,
5373 decoder: &mut fidl::encoding::Decoder<'_, D>,
5374 offset: usize,
5375 mut depth: fidl::encoding::Depth,
5376 ) -> fidl::Result<()> {
5377 decoder.debug_check_bounds::<Self>(offset);
5378 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5379 None => return Err(fidl::Error::NotNullable),
5380 Some(len) => len,
5381 };
5382 if len == 0 {
5384 return Ok(());
5385 };
5386 depth.increment()?;
5387 let envelope_size = 8;
5388 let bytes_len = len * envelope_size;
5389 let offset = decoder.out_of_line_offset(bytes_len)?;
5390 let mut _next_ordinal_to_read = 0;
5392 let mut next_offset = offset;
5393 let end_offset = offset + bytes_len;
5394 _next_ordinal_to_read += 1;
5395 if next_offset >= end_offset {
5396 return Ok(());
5397 }
5398
5399 while _next_ordinal_to_read < 1 {
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 = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5412 if inlined != (member_inline_size <= 4) {
5413 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5414 }
5415 let inner_offset;
5416 let mut inner_depth = depth.clone();
5417 if inlined {
5418 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5419 inner_offset = next_offset;
5420 } else {
5421 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5422 inner_depth.increment()?;
5423 }
5424 let val_ref = self.url.get_or_insert_with(|| {
5425 fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
5426 });
5427 fidl::decode!(
5428 fidl::encoding::BoundedString<4096>,
5429 D,
5430 val_ref,
5431 decoder,
5432 inner_offset,
5433 inner_depth
5434 )?;
5435 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5436 {
5437 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5438 }
5439 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5440 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5441 }
5442 }
5443
5444 next_offset += envelope_size;
5445 _next_ordinal_to_read += 1;
5446 if next_offset >= end_offset {
5447 return Ok(());
5448 }
5449
5450 while _next_ordinal_to_read < 2 {
5452 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5453 _next_ordinal_to_read += 1;
5454 next_offset += envelope_size;
5455 }
5456
5457 let next_out_of_line = decoder.next_out_of_line();
5458 let handles_before = decoder.remaining_handles();
5459 if let Some((inlined, num_bytes, num_handles)) =
5460 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5461 {
5462 let member_inline_size =
5463 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
5464 decoder.context,
5465 );
5466 if inlined != (member_inline_size <= 4) {
5467 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5468 }
5469 let inner_offset;
5470 let mut inner_depth = depth.clone();
5471 if inlined {
5472 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5473 inner_offset = next_offset;
5474 } else {
5475 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5476 inner_depth.increment()?;
5477 }
5478 let val_ref = self
5479 .name
5480 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
5481 fidl::decode!(
5482 fidl::encoding::UnboundedString,
5483 D,
5484 val_ref,
5485 decoder,
5486 inner_offset,
5487 inner_depth
5488 )?;
5489 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5490 {
5491 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5492 }
5493 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5494 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5495 }
5496 }
5497
5498 next_offset += envelope_size;
5499 _next_ordinal_to_read += 1;
5500 if next_offset >= end_offset {
5501 return Ok(());
5502 }
5503
5504 while _next_ordinal_to_read < 3 {
5506 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5507 _next_ordinal_to_read += 1;
5508 next_offset += envelope_size;
5509 }
5510
5511 let next_out_of_line = decoder.next_out_of_line();
5512 let handles_before = decoder.remaining_handles();
5513 if let Some((inlined, num_bytes, num_handles)) =
5514 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5515 {
5516 let member_inline_size =
5517 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5518 if inlined != (member_inline_size <= 4) {
5519 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5520 }
5521 let inner_offset;
5522 let mut inner_depth = depth.clone();
5523 if inlined {
5524 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5525 inner_offset = next_offset;
5526 } else {
5527 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5528 inner_depth.increment()?;
5529 }
5530 let val_ref = self.colocate.get_or_insert_with(|| fidl::new_empty!(bool, D));
5531 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5532 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5533 {
5534 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5535 }
5536 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5537 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5538 }
5539 }
5540
5541 next_offset += envelope_size;
5542 _next_ordinal_to_read += 1;
5543 if next_offset >= end_offset {
5544 return Ok(());
5545 }
5546
5547 while _next_ordinal_to_read < 4 {
5549 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5550 _next_ordinal_to_read += 1;
5551 next_offset += envelope_size;
5552 }
5553
5554 let next_out_of_line = decoder.next_out_of_line();
5555 let handles_before = decoder.remaining_handles();
5556 if let Some((inlined, num_bytes, num_handles)) =
5557 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5558 {
5559 let member_inline_size =
5560 <DriverPackageType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5561 if inlined != (member_inline_size <= 4) {
5562 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5563 }
5564 let inner_offset;
5565 let mut inner_depth = depth.clone();
5566 if inlined {
5567 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5568 inner_offset = next_offset;
5569 } else {
5570 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5571 inner_depth.increment()?;
5572 }
5573 let val_ref =
5574 self.package_type.get_or_insert_with(|| fidl::new_empty!(DriverPackageType, D));
5575 fidl::decode!(DriverPackageType, D, val_ref, decoder, inner_offset, inner_depth)?;
5576 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5577 {
5578 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5579 }
5580 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5581 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5582 }
5583 }
5584
5585 next_offset += envelope_size;
5586 _next_ordinal_to_read += 1;
5587 if next_offset >= end_offset {
5588 return Ok(());
5589 }
5590
5591 while _next_ordinal_to_read < 5 {
5593 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5594 _next_ordinal_to_read += 1;
5595 next_offset += envelope_size;
5596 }
5597
5598 let next_out_of_line = decoder.next_out_of_line();
5599 let handles_before = decoder.remaining_handles();
5600 if let Some((inlined, num_bytes, num_handles)) =
5601 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5602 {
5603 let member_inline_size =
5604 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5605 if inlined != (member_inline_size <= 4) {
5606 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5607 }
5608 let inner_offset;
5609 let mut inner_depth = depth.clone();
5610 if inlined {
5611 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5612 inner_offset = next_offset;
5613 } else {
5614 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5615 inner_depth.increment()?;
5616 }
5617 let val_ref = self.is_fallback.get_or_insert_with(|| fidl::new_empty!(bool, D));
5618 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5619 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5620 {
5621 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5622 }
5623 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5624 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5625 }
5626 }
5627
5628 next_offset += envelope_size;
5629 _next_ordinal_to_read += 1;
5630 if next_offset >= end_offset {
5631 return Ok(());
5632 }
5633
5634 while _next_ordinal_to_read < 6 {
5636 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5637 _next_ordinal_to_read += 1;
5638 next_offset += envelope_size;
5639 }
5640
5641 let next_out_of_line = decoder.next_out_of_line();
5642 let handles_before = decoder.remaining_handles();
5643 if let Some((inlined, num_bytes, num_handles)) =
5644 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5645 {
5646 let member_inline_size = <fidl::encoding::UnboundedVector<DeviceCategory> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5647 if inlined != (member_inline_size <= 4) {
5648 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5649 }
5650 let inner_offset;
5651 let mut inner_depth = depth.clone();
5652 if inlined {
5653 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5654 inner_offset = next_offset;
5655 } else {
5656 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5657 inner_depth.increment()?;
5658 }
5659 let val_ref = self.device_categories.get_or_insert_with(|| {
5660 fidl::new_empty!(fidl::encoding::UnboundedVector<DeviceCategory>, D)
5661 });
5662 fidl::decode!(
5663 fidl::encoding::UnboundedVector<DeviceCategory>,
5664 D,
5665 val_ref,
5666 decoder,
5667 inner_offset,
5668 inner_depth
5669 )?;
5670 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5671 {
5672 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5673 }
5674 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5675 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5676 }
5677 }
5678
5679 next_offset += envelope_size;
5680 _next_ordinal_to_read += 1;
5681 if next_offset >= end_offset {
5682 return Ok(());
5683 }
5684
5685 while _next_ordinal_to_read < 7 {
5687 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5688 _next_ordinal_to_read += 1;
5689 next_offset += envelope_size;
5690 }
5691
5692 let next_out_of_line = decoder.next_out_of_line();
5693 let handles_before = decoder.remaining_handles();
5694 if let Some((inlined, num_bytes, num_handles)) =
5695 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5696 {
5697 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5698 if inlined != (member_inline_size <= 4) {
5699 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5700 }
5701 let inner_offset;
5702 let mut inner_depth = depth.clone();
5703 if inlined {
5704 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5705 inner_offset = next_offset;
5706 } else {
5707 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5708 inner_depth.increment()?;
5709 }
5710 let val_ref = self.bind_rules_bytecode.get_or_insert_with(|| {
5711 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
5712 });
5713 fidl::decode!(
5714 fidl::encoding::UnboundedVector<u8>,
5715 D,
5716 val_ref,
5717 decoder,
5718 inner_offset,
5719 inner_depth
5720 )?;
5721 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5722 {
5723 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5724 }
5725 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5726 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5727 }
5728 }
5729
5730 next_offset += envelope_size;
5731 _next_ordinal_to_read += 1;
5732 if next_offset >= end_offset {
5733 return Ok(());
5734 }
5735
5736 while _next_ordinal_to_read < 8 {
5738 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5739 _next_ordinal_to_read += 1;
5740 next_offset += envelope_size;
5741 }
5742
5743 let next_out_of_line = decoder.next_out_of_line();
5744 let handles_before = decoder.remaining_handles();
5745 if let Some((inlined, num_bytes, num_handles)) =
5746 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5747 {
5748 let member_inline_size =
5749 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5750 if inlined != (member_inline_size <= 4) {
5751 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5752 }
5753 let inner_offset;
5754 let mut inner_depth = depth.clone();
5755 if inlined {
5756 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5757 inner_offset = next_offset;
5758 } else {
5759 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5760 inner_depth.increment()?;
5761 }
5762 let val_ref =
5763 self.driver_framework_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
5764 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
5765 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5766 {
5767 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5768 }
5769 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5770 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5771 }
5772 }
5773
5774 next_offset += envelope_size;
5775 _next_ordinal_to_read += 1;
5776 if next_offset >= end_offset {
5777 return Ok(());
5778 }
5779
5780 while _next_ordinal_to_read < 9 {
5782 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5783 _next_ordinal_to_read += 1;
5784 next_offset += envelope_size;
5785 }
5786
5787 let next_out_of_line = decoder.next_out_of_line();
5788 let handles_before = decoder.remaining_handles();
5789 if let Some((inlined, num_bytes, num_handles)) =
5790 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5791 {
5792 let member_inline_size =
5793 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5794 if inlined != (member_inline_size <= 4) {
5795 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5796 }
5797 let inner_offset;
5798 let mut inner_depth = depth.clone();
5799 if inlined {
5800 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5801 inner_offset = next_offset;
5802 } else {
5803 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5804 inner_depth.increment()?;
5805 }
5806 let val_ref = self.is_disabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
5807 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5808 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5809 {
5810 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5811 }
5812 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5813 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5814 }
5815 }
5816
5817 next_offset += envelope_size;
5818
5819 while next_offset < end_offset {
5821 _next_ordinal_to_read += 1;
5822 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5823 next_offset += envelope_size;
5824 }
5825
5826 Ok(())
5827 }
5828 }
5829
5830 impl HealthCheckResponse {
5831 #[inline(always)]
5832 fn max_ordinal_present(&self) -> u64 {
5833 if let Some(_) = self.conditions {
5834 return 2;
5835 }
5836 if let Some(_) = self.diagnostics {
5837 return 1;
5838 }
5839 0
5840 }
5841 }
5842
5843 impl fidl::encoding::ValueTypeMarker for HealthCheckResponse {
5844 type Borrowed<'a> = &'a Self;
5845 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5846 value
5847 }
5848 }
5849
5850 unsafe impl fidl::encoding::TypeMarker for HealthCheckResponse {
5851 type Owned = Self;
5852
5853 #[inline(always)]
5854 fn inline_align(_context: fidl::encoding::Context) -> usize {
5855 8
5856 }
5857
5858 #[inline(always)]
5859 fn inline_size(_context: fidl::encoding::Context) -> usize {
5860 16
5861 }
5862 }
5863
5864 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HealthCheckResponse, D>
5865 for &HealthCheckResponse
5866 {
5867 unsafe fn encode(
5868 self,
5869 encoder: &mut fidl::encoding::Encoder<'_, D>,
5870 offset: usize,
5871 mut depth: fidl::encoding::Depth,
5872 ) -> fidl::Result<()> {
5873 encoder.debug_check_bounds::<HealthCheckResponse>(offset);
5874 let max_ordinal: u64 = self.max_ordinal_present();
5876 encoder.write_num(max_ordinal, offset);
5877 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5878 if max_ordinal == 0 {
5880 return Ok(());
5881 }
5882 depth.increment()?;
5883 let envelope_size = 8;
5884 let bytes_len = max_ordinal as usize * envelope_size;
5885 #[allow(unused_variables)]
5886 let offset = encoder.out_of_line_offset(bytes_len);
5887 let mut _prev_end_offset: usize = 0;
5888 if 1 > max_ordinal {
5889 return Ok(());
5890 }
5891
5892 let cur_offset: usize = (1 - 1) * envelope_size;
5895
5896 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5898
5899 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<HealthDiagnosticItem, 32>, D>(
5904 self.diagnostics.as_ref().map(<fidl::encoding::Vector<HealthDiagnosticItem, 32> as fidl::encoding::ValueTypeMarker>::borrow),
5905 encoder, offset + cur_offset, depth
5906 )?;
5907
5908 _prev_end_offset = cur_offset + envelope_size;
5909 if 2 > max_ordinal {
5910 return Ok(());
5911 }
5912
5913 let cur_offset: usize = (2 - 1) * envelope_size;
5916
5917 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5919
5920 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<HealthCondition, 16>, D>(
5925 self.conditions.as_ref().map(<fidl::encoding::Vector<HealthCondition, 16> as fidl::encoding::ValueTypeMarker>::borrow),
5926 encoder, offset + cur_offset, depth
5927 )?;
5928
5929 _prev_end_offset = cur_offset + envelope_size;
5930
5931 Ok(())
5932 }
5933 }
5934
5935 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HealthCheckResponse {
5936 #[inline(always)]
5937 fn new_empty() -> Self {
5938 Self::default()
5939 }
5940
5941 unsafe fn decode(
5942 &mut self,
5943 decoder: &mut fidl::encoding::Decoder<'_, D>,
5944 offset: usize,
5945 mut depth: fidl::encoding::Depth,
5946 ) -> fidl::Result<()> {
5947 decoder.debug_check_bounds::<Self>(offset);
5948 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5949 None => return Err(fidl::Error::NotNullable),
5950 Some(len) => len,
5951 };
5952 if len == 0 {
5954 return Ok(());
5955 };
5956 depth.increment()?;
5957 let envelope_size = 8;
5958 let bytes_len = len * envelope_size;
5959 let offset = decoder.out_of_line_offset(bytes_len)?;
5960 let mut _next_ordinal_to_read = 0;
5962 let mut next_offset = offset;
5963 let end_offset = offset + bytes_len;
5964 _next_ordinal_to_read += 1;
5965 if next_offset >= end_offset {
5966 return Ok(());
5967 }
5968
5969 while _next_ordinal_to_read < 1 {
5971 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5972 _next_ordinal_to_read += 1;
5973 next_offset += envelope_size;
5974 }
5975
5976 let next_out_of_line = decoder.next_out_of_line();
5977 let handles_before = decoder.remaining_handles();
5978 if let Some((inlined, num_bytes, num_handles)) =
5979 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5980 {
5981 let member_inline_size = <fidl::encoding::Vector<HealthDiagnosticItem, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5982 if inlined != (member_inline_size <= 4) {
5983 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5984 }
5985 let inner_offset;
5986 let mut inner_depth = depth.clone();
5987 if inlined {
5988 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5989 inner_offset = next_offset;
5990 } else {
5991 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5992 inner_depth.increment()?;
5993 }
5994 let val_ref = self.diagnostics.get_or_insert_with(
5995 || fidl::new_empty!(fidl::encoding::Vector<HealthDiagnosticItem, 32>, D),
5996 );
5997 fidl::decode!(fidl::encoding::Vector<HealthDiagnosticItem, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
5998 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5999 {
6000 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6001 }
6002 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6003 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6004 }
6005 }
6006
6007 next_offset += envelope_size;
6008 _next_ordinal_to_read += 1;
6009 if next_offset >= end_offset {
6010 return Ok(());
6011 }
6012
6013 while _next_ordinal_to_read < 2 {
6015 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6016 _next_ordinal_to_read += 1;
6017 next_offset += envelope_size;
6018 }
6019
6020 let next_out_of_line = decoder.next_out_of_line();
6021 let handles_before = decoder.remaining_handles();
6022 if let Some((inlined, num_bytes, num_handles)) =
6023 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6024 {
6025 let member_inline_size = <fidl::encoding::Vector<HealthCondition, 16> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6026 if inlined != (member_inline_size <= 4) {
6027 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6028 }
6029 let inner_offset;
6030 let mut inner_depth = depth.clone();
6031 if inlined {
6032 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6033 inner_offset = next_offset;
6034 } else {
6035 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6036 inner_depth.increment()?;
6037 }
6038 let val_ref = self.conditions.get_or_insert_with(
6039 || fidl::new_empty!(fidl::encoding::Vector<HealthCondition, 16>, D),
6040 );
6041 fidl::decode!(fidl::encoding::Vector<HealthCondition, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
6042 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6043 {
6044 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6045 }
6046 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6047 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6048 }
6049 }
6050
6051 next_offset += envelope_size;
6052
6053 while next_offset < end_offset {
6055 _next_ordinal_to_read += 1;
6056 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6057 next_offset += envelope_size;
6058 }
6059
6060 Ok(())
6061 }
6062 }
6063
6064 impl HealthCondition {
6065 #[inline(always)]
6066 fn max_ordinal_present(&self) -> u64 {
6067 if let Some(_) = self.occurrence_count {
6068 return 7;
6069 }
6070 if let Some(_) = self.last_observed {
6071 return 6;
6072 }
6073 if let Some(_) = self.first_observed {
6074 return 5;
6075 }
6076 if let Some(_) = self.diagnostics {
6077 return 4;
6078 }
6079 if let Some(_) = self.message {
6080 return 3;
6081 }
6082 if let Some(_) = self.reason_code {
6083 return 2;
6084 }
6085 if let Some(_) = self.status {
6086 return 1;
6087 }
6088 0
6089 }
6090 }
6091
6092 impl fidl::encoding::ValueTypeMarker for HealthCondition {
6093 type Borrowed<'a> = &'a Self;
6094 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6095 value
6096 }
6097 }
6098
6099 unsafe impl fidl::encoding::TypeMarker for HealthCondition {
6100 type Owned = Self;
6101
6102 #[inline(always)]
6103 fn inline_align(_context: fidl::encoding::Context) -> usize {
6104 8
6105 }
6106
6107 #[inline(always)]
6108 fn inline_size(_context: fidl::encoding::Context) -> usize {
6109 16
6110 }
6111 }
6112
6113 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HealthCondition, D>
6114 for &HealthCondition
6115 {
6116 unsafe fn encode(
6117 self,
6118 encoder: &mut fidl::encoding::Encoder<'_, D>,
6119 offset: usize,
6120 mut depth: fidl::encoding::Depth,
6121 ) -> fidl::Result<()> {
6122 encoder.debug_check_bounds::<HealthCondition>(offset);
6123 let max_ordinal: u64 = self.max_ordinal_present();
6125 encoder.write_num(max_ordinal, offset);
6126 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6127 if max_ordinal == 0 {
6129 return Ok(());
6130 }
6131 depth.increment()?;
6132 let envelope_size = 8;
6133 let bytes_len = max_ordinal as usize * envelope_size;
6134 #[allow(unused_variables)]
6135 let offset = encoder.out_of_line_offset(bytes_len);
6136 let mut _prev_end_offset: usize = 0;
6137 if 1 > max_ordinal {
6138 return Ok(());
6139 }
6140
6141 let cur_offset: usize = (1 - 1) * envelope_size;
6144
6145 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6147
6148 fidl::encoding::encode_in_envelope_optional::<HealthStatus, D>(
6153 self.status.as_ref().map(<HealthStatus as fidl::encoding::ValueTypeMarker>::borrow),
6154 encoder,
6155 offset + cur_offset,
6156 depth,
6157 )?;
6158
6159 _prev_end_offset = cur_offset + envelope_size;
6160 if 2 > max_ordinal {
6161 return Ok(());
6162 }
6163
6164 let cur_offset: usize = (2 - 1) * envelope_size;
6167
6168 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6170
6171 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
6176 self.reason_code.as_ref().map(
6177 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
6178 ),
6179 encoder,
6180 offset + cur_offset,
6181 depth,
6182 )?;
6183
6184 _prev_end_offset = cur_offset + envelope_size;
6185 if 3 > max_ordinal {
6186 return Ok(());
6187 }
6188
6189 let cur_offset: usize = (3 - 1) * envelope_size;
6192
6193 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6195
6196 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
6201 self.message.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
6202 encoder, offset + cur_offset, depth
6203 )?;
6204
6205 _prev_end_offset = cur_offset + envelope_size;
6206 if 4 > max_ordinal {
6207 return Ok(());
6208 }
6209
6210 let cur_offset: usize = (4 - 1) * envelope_size;
6213
6214 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6216
6217 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<HealthDiagnosticItem, 32>, D>(
6222 self.diagnostics.as_ref().map(<fidl::encoding::Vector<HealthDiagnosticItem, 32> as fidl::encoding::ValueTypeMarker>::borrow),
6223 encoder, offset + cur_offset, depth
6224 )?;
6225
6226 _prev_end_offset = cur_offset + envelope_size;
6227 if 5 > max_ordinal {
6228 return Ok(());
6229 }
6230
6231 let cur_offset: usize = (5 - 1) * envelope_size;
6234
6235 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6237
6238 fidl::encoding::encode_in_envelope_optional::<fidl::BootInstant, D>(
6243 self.first_observed
6244 .as_ref()
6245 .map(<fidl::BootInstant as fidl::encoding::ValueTypeMarker>::borrow),
6246 encoder,
6247 offset + cur_offset,
6248 depth,
6249 )?;
6250
6251 _prev_end_offset = cur_offset + envelope_size;
6252 if 6 > max_ordinal {
6253 return Ok(());
6254 }
6255
6256 let cur_offset: usize = (6 - 1) * envelope_size;
6259
6260 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6262
6263 fidl::encoding::encode_in_envelope_optional::<fidl::BootInstant, D>(
6268 self.last_observed
6269 .as_ref()
6270 .map(<fidl::BootInstant as fidl::encoding::ValueTypeMarker>::borrow),
6271 encoder,
6272 offset + cur_offset,
6273 depth,
6274 )?;
6275
6276 _prev_end_offset = cur_offset + envelope_size;
6277 if 7 > max_ordinal {
6278 return Ok(());
6279 }
6280
6281 let cur_offset: usize = (7 - 1) * envelope_size;
6284
6285 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6287
6288 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6293 self.occurrence_count
6294 .as_ref()
6295 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6296 encoder,
6297 offset + cur_offset,
6298 depth,
6299 )?;
6300
6301 _prev_end_offset = cur_offset + envelope_size;
6302
6303 Ok(())
6304 }
6305 }
6306
6307 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HealthCondition {
6308 #[inline(always)]
6309 fn new_empty() -> Self {
6310 Self::default()
6311 }
6312
6313 unsafe fn decode(
6314 &mut self,
6315 decoder: &mut fidl::encoding::Decoder<'_, D>,
6316 offset: usize,
6317 mut depth: fidl::encoding::Depth,
6318 ) -> fidl::Result<()> {
6319 decoder.debug_check_bounds::<Self>(offset);
6320 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6321 None => return Err(fidl::Error::NotNullable),
6322 Some(len) => len,
6323 };
6324 if len == 0 {
6326 return Ok(());
6327 };
6328 depth.increment()?;
6329 let envelope_size = 8;
6330 let bytes_len = len * envelope_size;
6331 let offset = decoder.out_of_line_offset(bytes_len)?;
6332 let mut _next_ordinal_to_read = 0;
6334 let mut next_offset = offset;
6335 let end_offset = offset + bytes_len;
6336 _next_ordinal_to_read += 1;
6337 if next_offset >= end_offset {
6338 return Ok(());
6339 }
6340
6341 while _next_ordinal_to_read < 1 {
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 <HealthStatus 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.status.get_or_insert_with(|| fidl::new_empty!(HealthStatus, D));
6368 fidl::decode!(HealthStatus, D, val_ref, decoder, inner_offset, inner_depth)?;
6369 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6370 {
6371 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6372 }
6373 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6374 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6375 }
6376 }
6377
6378 next_offset += envelope_size;
6379 _next_ordinal_to_read += 1;
6380 if next_offset >= end_offset {
6381 return Ok(());
6382 }
6383
6384 while _next_ordinal_to_read < 2 {
6386 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6387 _next_ordinal_to_read += 1;
6388 next_offset += envelope_size;
6389 }
6390
6391 let next_out_of_line = decoder.next_out_of_line();
6392 let handles_before = decoder.remaining_handles();
6393 if let Some((inlined, num_bytes, num_handles)) =
6394 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6395 {
6396 let member_inline_size =
6397 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
6398 decoder.context,
6399 );
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 .reason_code
6414 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
6415 fidl::decode!(
6416 fidl::encoding::BoundedString<128>,
6417 D,
6418 val_ref,
6419 decoder,
6420 inner_offset,
6421 inner_depth
6422 )?;
6423 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6424 {
6425 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6426 }
6427 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6428 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6429 }
6430 }
6431
6432 next_offset += envelope_size;
6433 _next_ordinal_to_read += 1;
6434 if next_offset >= end_offset {
6435 return Ok(());
6436 }
6437
6438 while _next_ordinal_to_read < 3 {
6440 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6441 _next_ordinal_to_read += 1;
6442 next_offset += envelope_size;
6443 }
6444
6445 let next_out_of_line = decoder.next_out_of_line();
6446 let handles_before = decoder.remaining_handles();
6447 if let Some((inlined, num_bytes, num_handles)) =
6448 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6449 {
6450 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6451 if inlined != (member_inline_size <= 4) {
6452 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6453 }
6454 let inner_offset;
6455 let mut inner_depth = depth.clone();
6456 if inlined {
6457 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6458 inner_offset = next_offset;
6459 } else {
6460 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6461 inner_depth.increment()?;
6462 }
6463 let val_ref = self.message.get_or_insert_with(|| {
6464 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
6465 });
6466 fidl::decode!(
6467 fidl::encoding::BoundedString<1024>,
6468 D,
6469 val_ref,
6470 decoder,
6471 inner_offset,
6472 inner_depth
6473 )?;
6474 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6475 {
6476 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6477 }
6478 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6479 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6480 }
6481 }
6482
6483 next_offset += envelope_size;
6484 _next_ordinal_to_read += 1;
6485 if next_offset >= end_offset {
6486 return Ok(());
6487 }
6488
6489 while _next_ordinal_to_read < 4 {
6491 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6492 _next_ordinal_to_read += 1;
6493 next_offset += envelope_size;
6494 }
6495
6496 let next_out_of_line = decoder.next_out_of_line();
6497 let handles_before = decoder.remaining_handles();
6498 if let Some((inlined, num_bytes, num_handles)) =
6499 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6500 {
6501 let member_inline_size = <fidl::encoding::Vector<HealthDiagnosticItem, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6502 if inlined != (member_inline_size <= 4) {
6503 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6504 }
6505 let inner_offset;
6506 let mut inner_depth = depth.clone();
6507 if inlined {
6508 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6509 inner_offset = next_offset;
6510 } else {
6511 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6512 inner_depth.increment()?;
6513 }
6514 let val_ref = self.diagnostics.get_or_insert_with(
6515 || fidl::new_empty!(fidl::encoding::Vector<HealthDiagnosticItem, 32>, D),
6516 );
6517 fidl::decode!(fidl::encoding::Vector<HealthDiagnosticItem, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
6518 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6519 {
6520 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6521 }
6522 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6523 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6524 }
6525 }
6526
6527 next_offset += envelope_size;
6528 _next_ordinal_to_read += 1;
6529 if next_offset >= end_offset {
6530 return Ok(());
6531 }
6532
6533 while _next_ordinal_to_read < 5 {
6535 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6536 _next_ordinal_to_read += 1;
6537 next_offset += envelope_size;
6538 }
6539
6540 let next_out_of_line = decoder.next_out_of_line();
6541 let handles_before = decoder.remaining_handles();
6542 if let Some((inlined, num_bytes, num_handles)) =
6543 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6544 {
6545 let member_inline_size =
6546 <fidl::BootInstant as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6547 if inlined != (member_inline_size <= 4) {
6548 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6549 }
6550 let inner_offset;
6551 let mut inner_depth = depth.clone();
6552 if inlined {
6553 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6554 inner_offset = next_offset;
6555 } else {
6556 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6557 inner_depth.increment()?;
6558 }
6559 let val_ref = self
6560 .first_observed
6561 .get_or_insert_with(|| fidl::new_empty!(fidl::BootInstant, D));
6562 fidl::decode!(fidl::BootInstant, D, val_ref, decoder, inner_offset, inner_depth)?;
6563 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6564 {
6565 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6566 }
6567 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6568 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6569 }
6570 }
6571
6572 next_offset += envelope_size;
6573 _next_ordinal_to_read += 1;
6574 if next_offset >= end_offset {
6575 return Ok(());
6576 }
6577
6578 while _next_ordinal_to_read < 6 {
6580 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6581 _next_ordinal_to_read += 1;
6582 next_offset += envelope_size;
6583 }
6584
6585 let next_out_of_line = decoder.next_out_of_line();
6586 let handles_before = decoder.remaining_handles();
6587 if let Some((inlined, num_bytes, num_handles)) =
6588 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6589 {
6590 let member_inline_size =
6591 <fidl::BootInstant as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6592 if inlined != (member_inline_size <= 4) {
6593 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6594 }
6595 let inner_offset;
6596 let mut inner_depth = depth.clone();
6597 if inlined {
6598 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6599 inner_offset = next_offset;
6600 } else {
6601 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6602 inner_depth.increment()?;
6603 }
6604 let val_ref = self
6605 .last_observed
6606 .get_or_insert_with(|| fidl::new_empty!(fidl::BootInstant, D));
6607 fidl::decode!(fidl::BootInstant, D, val_ref, decoder, inner_offset, inner_depth)?;
6608 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6609 {
6610 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6611 }
6612 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6613 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6614 }
6615 }
6616
6617 next_offset += envelope_size;
6618 _next_ordinal_to_read += 1;
6619 if next_offset >= end_offset {
6620 return Ok(());
6621 }
6622
6623 while _next_ordinal_to_read < 7 {
6625 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6626 _next_ordinal_to_read += 1;
6627 next_offset += envelope_size;
6628 }
6629
6630 let next_out_of_line = decoder.next_out_of_line();
6631 let handles_before = decoder.remaining_handles();
6632 if let Some((inlined, num_bytes, num_handles)) =
6633 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6634 {
6635 let member_inline_size =
6636 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6637 if inlined != (member_inline_size <= 4) {
6638 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6639 }
6640 let inner_offset;
6641 let mut inner_depth = depth.clone();
6642 if inlined {
6643 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6644 inner_offset = next_offset;
6645 } else {
6646 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6647 inner_depth.increment()?;
6648 }
6649 let val_ref = self.occurrence_count.get_or_insert_with(|| fidl::new_empty!(u64, D));
6650 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6651 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6652 {
6653 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6654 }
6655 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6656 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6657 }
6658 }
6659
6660 next_offset += envelope_size;
6661
6662 while next_offset < end_offset {
6664 _next_ordinal_to_read += 1;
6665 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6666 next_offset += envelope_size;
6667 }
6668
6669 Ok(())
6670 }
6671 }
6672
6673 impl Node2 {
6674 #[inline(always)]
6675 fn max_ordinal_present(&self) -> u64 {
6676 if let Some(_) = self.dependencies {
6677 return 2;
6678 }
6679 if let Some(_) = self.name {
6680 return 1;
6681 }
6682 0
6683 }
6684 }
6685
6686 impl fidl::encoding::ValueTypeMarker for Node2 {
6687 type Borrowed<'a> = &'a Self;
6688 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6689 value
6690 }
6691 }
6692
6693 unsafe impl fidl::encoding::TypeMarker for Node2 {
6694 type Owned = Self;
6695
6696 #[inline(always)]
6697 fn inline_align(_context: fidl::encoding::Context) -> usize {
6698 8
6699 }
6700
6701 #[inline(always)]
6702 fn inline_size(_context: fidl::encoding::Context) -> usize {
6703 16
6704 }
6705 }
6706
6707 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Node2, D> for &Node2 {
6708 unsafe fn encode(
6709 self,
6710 encoder: &mut fidl::encoding::Encoder<'_, D>,
6711 offset: usize,
6712 mut depth: fidl::encoding::Depth,
6713 ) -> fidl::Result<()> {
6714 encoder.debug_check_bounds::<Node2>(offset);
6715 let max_ordinal: u64 = self.max_ordinal_present();
6717 encoder.write_num(max_ordinal, offset);
6718 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6719 if max_ordinal == 0 {
6721 return Ok(());
6722 }
6723 depth.increment()?;
6724 let envelope_size = 8;
6725 let bytes_len = max_ordinal as usize * envelope_size;
6726 #[allow(unused_variables)]
6727 let offset = encoder.out_of_line_offset(bytes_len);
6728 let mut _prev_end_offset: usize = 0;
6729 if 1 > max_ordinal {
6730 return Ok(());
6731 }
6732
6733 let cur_offset: usize = (1 - 1) * envelope_size;
6736
6737 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6739
6740 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
6745 self.name.as_ref().map(
6746 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
6747 ),
6748 encoder,
6749 offset + cur_offset,
6750 depth,
6751 )?;
6752
6753 _prev_end_offset = cur_offset + envelope_size;
6754 if 2 > max_ordinal {
6755 return Ok(());
6756 }
6757
6758 let cur_offset: usize = (2 - 1) * envelope_size;
6761
6762 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6764
6765 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Dependency>, D>(
6770 self.dependencies.as_ref().map(<fidl::encoding::UnboundedVector<Dependency> as fidl::encoding::ValueTypeMarker>::borrow),
6771 encoder, offset + cur_offset, depth
6772 )?;
6773
6774 _prev_end_offset = cur_offset + envelope_size;
6775
6776 Ok(())
6777 }
6778 }
6779
6780 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Node2 {
6781 #[inline(always)]
6782 fn new_empty() -> Self {
6783 Self::default()
6784 }
6785
6786 unsafe fn decode(
6787 &mut self,
6788 decoder: &mut fidl::encoding::Decoder<'_, D>,
6789 offset: usize,
6790 mut depth: fidl::encoding::Depth,
6791 ) -> fidl::Result<()> {
6792 decoder.debug_check_bounds::<Self>(offset);
6793 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6794 None => return Err(fidl::Error::NotNullable),
6795 Some(len) => len,
6796 };
6797 if len == 0 {
6799 return Ok(());
6800 };
6801 depth.increment()?;
6802 let envelope_size = 8;
6803 let bytes_len = len * envelope_size;
6804 let offset = decoder.out_of_line_offset(bytes_len)?;
6805 let mut _next_ordinal_to_read = 0;
6807 let mut next_offset = offset;
6808 let end_offset = offset + bytes_len;
6809 _next_ordinal_to_read += 1;
6810 if next_offset >= end_offset {
6811 return Ok(());
6812 }
6813
6814 while _next_ordinal_to_read < 1 {
6816 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6817 _next_ordinal_to_read += 1;
6818 next_offset += envelope_size;
6819 }
6820
6821 let next_out_of_line = decoder.next_out_of_line();
6822 let handles_before = decoder.remaining_handles();
6823 if let Some((inlined, num_bytes, num_handles)) =
6824 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6825 {
6826 let member_inline_size =
6827 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
6828 decoder.context,
6829 );
6830 if inlined != (member_inline_size <= 4) {
6831 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6832 }
6833 let inner_offset;
6834 let mut inner_depth = depth.clone();
6835 if inlined {
6836 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6837 inner_offset = next_offset;
6838 } else {
6839 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6840 inner_depth.increment()?;
6841 }
6842 let val_ref = self
6843 .name
6844 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
6845 fidl::decode!(
6846 fidl::encoding::UnboundedString,
6847 D,
6848 val_ref,
6849 decoder,
6850 inner_offset,
6851 inner_depth
6852 )?;
6853 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6854 {
6855 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6856 }
6857 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6858 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6859 }
6860 }
6861
6862 next_offset += envelope_size;
6863 _next_ordinal_to_read += 1;
6864 if next_offset >= end_offset {
6865 return Ok(());
6866 }
6867
6868 while _next_ordinal_to_read < 2 {
6870 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6871 _next_ordinal_to_read += 1;
6872 next_offset += envelope_size;
6873 }
6874
6875 let next_out_of_line = decoder.next_out_of_line();
6876 let handles_before = decoder.remaining_handles();
6877 if let Some((inlined, num_bytes, num_handles)) =
6878 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6879 {
6880 let member_inline_size = <fidl::encoding::UnboundedVector<Dependency> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6881 if inlined != (member_inline_size <= 4) {
6882 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6883 }
6884 let inner_offset;
6885 let mut inner_depth = depth.clone();
6886 if inlined {
6887 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6888 inner_offset = next_offset;
6889 } else {
6890 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6891 inner_depth.increment()?;
6892 }
6893 let val_ref = self.dependencies.get_or_insert_with(|| {
6894 fidl::new_empty!(fidl::encoding::UnboundedVector<Dependency>, D)
6895 });
6896 fidl::decode!(
6897 fidl::encoding::UnboundedVector<Dependency>,
6898 D,
6899 val_ref,
6900 decoder,
6901 inner_offset,
6902 inner_depth
6903 )?;
6904 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6905 {
6906 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6907 }
6908 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6909 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6910 }
6911 }
6912
6913 next_offset += envelope_size;
6914
6915 while next_offset < end_offset {
6917 _next_ordinal_to_read += 1;
6918 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6919 next_offset += envelope_size;
6920 }
6921
6922 Ok(())
6923 }
6924 }
6925
6926 impl NodeControllerRequestBindRequest {
6927 #[inline(always)]
6928 fn max_ordinal_present(&self) -> u64 {
6929 if let Some(_) = self.driver_url_suffix {
6930 return 2;
6931 }
6932 if let Some(_) = self.force_rebind {
6933 return 1;
6934 }
6935 0
6936 }
6937 }
6938
6939 impl fidl::encoding::ValueTypeMarker for NodeControllerRequestBindRequest {
6940 type Borrowed<'a> = &'a Self;
6941 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6942 value
6943 }
6944 }
6945
6946 unsafe impl fidl::encoding::TypeMarker for NodeControllerRequestBindRequest {
6947 type Owned = Self;
6948
6949 #[inline(always)]
6950 fn inline_align(_context: fidl::encoding::Context) -> usize {
6951 8
6952 }
6953
6954 #[inline(always)]
6955 fn inline_size(_context: fidl::encoding::Context) -> usize {
6956 16
6957 }
6958 }
6959
6960 unsafe impl<D: fidl::encoding::ResourceDialect>
6961 fidl::encoding::Encode<NodeControllerRequestBindRequest, D>
6962 for &NodeControllerRequestBindRequest
6963 {
6964 unsafe fn encode(
6965 self,
6966 encoder: &mut fidl::encoding::Encoder<'_, D>,
6967 offset: usize,
6968 mut depth: fidl::encoding::Depth,
6969 ) -> fidl::Result<()> {
6970 encoder.debug_check_bounds::<NodeControllerRequestBindRequest>(offset);
6971 let max_ordinal: u64 = self.max_ordinal_present();
6973 encoder.write_num(max_ordinal, offset);
6974 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6975 if max_ordinal == 0 {
6977 return Ok(());
6978 }
6979 depth.increment()?;
6980 let envelope_size = 8;
6981 let bytes_len = max_ordinal as usize * envelope_size;
6982 #[allow(unused_variables)]
6983 let offset = encoder.out_of_line_offset(bytes_len);
6984 let mut _prev_end_offset: usize = 0;
6985 if 1 > max_ordinal {
6986 return Ok(());
6987 }
6988
6989 let cur_offset: usize = (1 - 1) * envelope_size;
6992
6993 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6995
6996 fidl::encoding::encode_in_envelope_optional::<bool, D>(
7001 self.force_rebind.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7002 encoder,
7003 offset + cur_offset,
7004 depth,
7005 )?;
7006
7007 _prev_end_offset = cur_offset + envelope_size;
7008 if 2 > max_ordinal {
7009 return Ok(());
7010 }
7011
7012 let cur_offset: usize = (2 - 1) * envelope_size;
7015
7016 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7018
7019 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
7024 self.driver_url_suffix.as_ref().map(
7025 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
7026 ),
7027 encoder,
7028 offset + cur_offset,
7029 depth,
7030 )?;
7031
7032 _prev_end_offset = cur_offset + envelope_size;
7033
7034 Ok(())
7035 }
7036 }
7037
7038 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7039 for NodeControllerRequestBindRequest
7040 {
7041 #[inline(always)]
7042 fn new_empty() -> Self {
7043 Self::default()
7044 }
7045
7046 unsafe fn decode(
7047 &mut self,
7048 decoder: &mut fidl::encoding::Decoder<'_, D>,
7049 offset: usize,
7050 mut depth: fidl::encoding::Depth,
7051 ) -> fidl::Result<()> {
7052 decoder.debug_check_bounds::<Self>(offset);
7053 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7054 None => return Err(fidl::Error::NotNullable),
7055 Some(len) => len,
7056 };
7057 if len == 0 {
7059 return Ok(());
7060 };
7061 depth.increment()?;
7062 let envelope_size = 8;
7063 let bytes_len = len * envelope_size;
7064 let offset = decoder.out_of_line_offset(bytes_len)?;
7065 let mut _next_ordinal_to_read = 0;
7067 let mut next_offset = offset;
7068 let end_offset = offset + bytes_len;
7069 _next_ordinal_to_read += 1;
7070 if next_offset >= end_offset {
7071 return Ok(());
7072 }
7073
7074 while _next_ordinal_to_read < 1 {
7076 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7077 _next_ordinal_to_read += 1;
7078 next_offset += envelope_size;
7079 }
7080
7081 let next_out_of_line = decoder.next_out_of_line();
7082 let handles_before = decoder.remaining_handles();
7083 if let Some((inlined, num_bytes, num_handles)) =
7084 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7085 {
7086 let member_inline_size =
7087 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7088 if inlined != (member_inline_size <= 4) {
7089 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7090 }
7091 let inner_offset;
7092 let mut inner_depth = depth.clone();
7093 if inlined {
7094 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7095 inner_offset = next_offset;
7096 } else {
7097 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7098 inner_depth.increment()?;
7099 }
7100 let val_ref = self.force_rebind.get_or_insert_with(|| fidl::new_empty!(bool, D));
7101 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7102 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7103 {
7104 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7105 }
7106 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7107 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7108 }
7109 }
7110
7111 next_offset += envelope_size;
7112 _next_ordinal_to_read += 1;
7113 if next_offset >= end_offset {
7114 return Ok(());
7115 }
7116
7117 while _next_ordinal_to_read < 2 {
7119 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7120 _next_ordinal_to_read += 1;
7121 next_offset += envelope_size;
7122 }
7123
7124 let next_out_of_line = decoder.next_out_of_line();
7125 let handles_before = decoder.remaining_handles();
7126 if let Some((inlined, num_bytes, num_handles)) =
7127 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7128 {
7129 let member_inline_size =
7130 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
7131 decoder.context,
7132 );
7133 if inlined != (member_inline_size <= 4) {
7134 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7135 }
7136 let inner_offset;
7137 let mut inner_depth = depth.clone();
7138 if inlined {
7139 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7140 inner_offset = next_offset;
7141 } else {
7142 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7143 inner_depth.increment()?;
7144 }
7145 let val_ref = self
7146 .driver_url_suffix
7147 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
7148 fidl::decode!(
7149 fidl::encoding::UnboundedString,
7150 D,
7151 val_ref,
7152 decoder,
7153 inner_offset,
7154 inner_depth
7155 )?;
7156 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7157 {
7158 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7159 }
7160 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7161 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7162 }
7163 }
7164
7165 next_offset += envelope_size;
7166
7167 while next_offset < end_offset {
7169 _next_ordinal_to_read += 1;
7170 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7171 next_offset += envelope_size;
7172 }
7173
7174 Ok(())
7175 }
7176 }
7177
7178 impl NodeSymbol {
7179 #[inline(always)]
7180 fn max_ordinal_present(&self) -> u64 {
7181 if let Some(_) = self.module_name {
7182 return 3;
7183 }
7184 if let Some(_) = self.address {
7185 return 2;
7186 }
7187 if let Some(_) = self.name {
7188 return 1;
7189 }
7190 0
7191 }
7192 }
7193
7194 impl fidl::encoding::ValueTypeMarker for NodeSymbol {
7195 type Borrowed<'a> = &'a Self;
7196 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7197 value
7198 }
7199 }
7200
7201 unsafe impl fidl::encoding::TypeMarker for NodeSymbol {
7202 type Owned = Self;
7203
7204 #[inline(always)]
7205 fn inline_align(_context: fidl::encoding::Context) -> usize {
7206 8
7207 }
7208
7209 #[inline(always)]
7210 fn inline_size(_context: fidl::encoding::Context) -> usize {
7211 16
7212 }
7213 }
7214
7215 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeSymbol, D>
7216 for &NodeSymbol
7217 {
7218 unsafe fn encode(
7219 self,
7220 encoder: &mut fidl::encoding::Encoder<'_, D>,
7221 offset: usize,
7222 mut depth: fidl::encoding::Depth,
7223 ) -> fidl::Result<()> {
7224 encoder.debug_check_bounds::<NodeSymbol>(offset);
7225 let max_ordinal: u64 = self.max_ordinal_present();
7227 encoder.write_num(max_ordinal, offset);
7228 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7229 if max_ordinal == 0 {
7231 return Ok(());
7232 }
7233 depth.increment()?;
7234 let envelope_size = 8;
7235 let bytes_len = max_ordinal as usize * envelope_size;
7236 #[allow(unused_variables)]
7237 let offset = encoder.out_of_line_offset(bytes_len);
7238 let mut _prev_end_offset: usize = 0;
7239 if 1 > max_ordinal {
7240 return Ok(());
7241 }
7242
7243 let cur_offset: usize = (1 - 1) * envelope_size;
7246
7247 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7249
7250 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
7255 self.name.as_ref().map(
7256 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
7257 ),
7258 encoder,
7259 offset + cur_offset,
7260 depth,
7261 )?;
7262
7263 _prev_end_offset = cur_offset + envelope_size;
7264 if 2 > max_ordinal {
7265 return Ok(());
7266 }
7267
7268 let cur_offset: usize = (2 - 1) * envelope_size;
7271
7272 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7274
7275 fidl::encoding::encode_in_envelope_optional::<u64, D>(
7280 self.address.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
7281 encoder,
7282 offset + cur_offset,
7283 depth,
7284 )?;
7285
7286 _prev_end_offset = cur_offset + envelope_size;
7287 if 3 > max_ordinal {
7288 return Ok(());
7289 }
7290
7291 let cur_offset: usize = (3 - 1) * envelope_size;
7294
7295 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7297
7298 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
7303 self.module_name.as_ref().map(
7304 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
7305 ),
7306 encoder,
7307 offset + cur_offset,
7308 depth,
7309 )?;
7310
7311 _prev_end_offset = cur_offset + envelope_size;
7312
7313 Ok(())
7314 }
7315 }
7316
7317 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeSymbol {
7318 #[inline(always)]
7319 fn new_empty() -> Self {
7320 Self::default()
7321 }
7322
7323 unsafe fn decode(
7324 &mut self,
7325 decoder: &mut fidl::encoding::Decoder<'_, D>,
7326 offset: usize,
7327 mut depth: fidl::encoding::Depth,
7328 ) -> fidl::Result<()> {
7329 decoder.debug_check_bounds::<Self>(offset);
7330 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7331 None => return Err(fidl::Error::NotNullable),
7332 Some(len) => len,
7333 };
7334 if len == 0 {
7336 return Ok(());
7337 };
7338 depth.increment()?;
7339 let envelope_size = 8;
7340 let bytes_len = len * envelope_size;
7341 let offset = decoder.out_of_line_offset(bytes_len)?;
7342 let mut _next_ordinal_to_read = 0;
7344 let mut next_offset = offset;
7345 let end_offset = offset + bytes_len;
7346 _next_ordinal_to_read += 1;
7347 if next_offset >= end_offset {
7348 return Ok(());
7349 }
7350
7351 while _next_ordinal_to_read < 1 {
7353 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7354 _next_ordinal_to_read += 1;
7355 next_offset += envelope_size;
7356 }
7357
7358 let next_out_of_line = decoder.next_out_of_line();
7359 let handles_before = decoder.remaining_handles();
7360 if let Some((inlined, num_bytes, num_handles)) =
7361 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7362 {
7363 let member_inline_size =
7364 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
7365 decoder.context,
7366 );
7367 if inlined != (member_inline_size <= 4) {
7368 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7369 }
7370 let inner_offset;
7371 let mut inner_depth = depth.clone();
7372 if inlined {
7373 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7374 inner_offset = next_offset;
7375 } else {
7376 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7377 inner_depth.increment()?;
7378 }
7379 let val_ref = self
7380 .name
7381 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
7382 fidl::decode!(
7383 fidl::encoding::BoundedString<128>,
7384 D,
7385 val_ref,
7386 decoder,
7387 inner_offset,
7388 inner_depth
7389 )?;
7390 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7391 {
7392 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7393 }
7394 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7395 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7396 }
7397 }
7398
7399 next_offset += envelope_size;
7400 _next_ordinal_to_read += 1;
7401 if next_offset >= end_offset {
7402 return Ok(());
7403 }
7404
7405 while _next_ordinal_to_read < 2 {
7407 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7408 _next_ordinal_to_read += 1;
7409 next_offset += envelope_size;
7410 }
7411
7412 let next_out_of_line = decoder.next_out_of_line();
7413 let handles_before = decoder.remaining_handles();
7414 if let Some((inlined, num_bytes, num_handles)) =
7415 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7416 {
7417 let member_inline_size =
7418 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7419 if inlined != (member_inline_size <= 4) {
7420 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7421 }
7422 let inner_offset;
7423 let mut inner_depth = depth.clone();
7424 if inlined {
7425 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7426 inner_offset = next_offset;
7427 } else {
7428 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7429 inner_depth.increment()?;
7430 }
7431 let val_ref = self.address.get_or_insert_with(|| fidl::new_empty!(u64, D));
7432 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
7433 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7434 {
7435 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7436 }
7437 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7438 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7439 }
7440 }
7441
7442 next_offset += envelope_size;
7443 _next_ordinal_to_read += 1;
7444 if next_offset >= end_offset {
7445 return Ok(());
7446 }
7447
7448 while _next_ordinal_to_read < 3 {
7450 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7451 _next_ordinal_to_read += 1;
7452 next_offset += envelope_size;
7453 }
7454
7455 let next_out_of_line = decoder.next_out_of_line();
7456 let handles_before = decoder.remaining_handles();
7457 if let Some((inlined, num_bytes, num_handles)) =
7458 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7459 {
7460 let member_inline_size =
7461 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
7462 decoder.context,
7463 );
7464 if inlined != (member_inline_size <= 4) {
7465 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7466 }
7467 let inner_offset;
7468 let mut inner_depth = depth.clone();
7469 if inlined {
7470 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7471 inner_offset = next_offset;
7472 } else {
7473 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7474 inner_depth.increment()?;
7475 }
7476 let val_ref = self
7477 .module_name
7478 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
7479 fidl::decode!(
7480 fidl::encoding::BoundedString<128>,
7481 D,
7482 val_ref,
7483 decoder,
7484 inner_offset,
7485 inner_depth
7486 )?;
7487 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7488 {
7489 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7490 }
7491 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7492 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7493 }
7494 }
7495
7496 next_offset += envelope_size;
7497
7498 while next_offset < end_offset {
7500 _next_ordinal_to_read += 1;
7501 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7502 next_offset += envelope_size;
7503 }
7504
7505 Ok(())
7506 }
7507 }
7508
7509 impl Selector {
7510 #[inline(always)]
7511 fn max_ordinal_present(&self) -> u64 {
7512 if let Some(_) = self.exclude_properties {
7513 return 3;
7514 }
7515 if let Some(_) = self.include_properties {
7516 return 2;
7517 }
7518 if let Some(_) = self.offers {
7519 return 1;
7520 }
7521 0
7522 }
7523 }
7524
7525 impl fidl::encoding::ValueTypeMarker for Selector {
7526 type Borrowed<'a> = &'a Self;
7527 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7528 value
7529 }
7530 }
7531
7532 unsafe impl fidl::encoding::TypeMarker for Selector {
7533 type Owned = Self;
7534
7535 #[inline(always)]
7536 fn inline_align(_context: fidl::encoding::Context) -> usize {
7537 8
7538 }
7539
7540 #[inline(always)]
7541 fn inline_size(_context: fidl::encoding::Context) -> usize {
7542 16
7543 }
7544 }
7545
7546 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Selector, D> for &Selector {
7547 unsafe fn encode(
7548 self,
7549 encoder: &mut fidl::encoding::Encoder<'_, D>,
7550 offset: usize,
7551 mut depth: fidl::encoding::Depth,
7552 ) -> fidl::Result<()> {
7553 encoder.debug_check_bounds::<Selector>(offset);
7554 let max_ordinal: u64 = self.max_ordinal_present();
7556 encoder.write_num(max_ordinal, offset);
7557 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7558 if max_ordinal == 0 {
7560 return Ok(());
7561 }
7562 depth.increment()?;
7563 let envelope_size = 8;
7564 let bytes_len = max_ordinal as usize * envelope_size;
7565 #[allow(unused_variables)]
7566 let offset = encoder.out_of_line_offset(bytes_len);
7567 let mut _prev_end_offset: usize = 0;
7568 if 1 > max_ordinal {
7569 return Ok(());
7570 }
7571
7572 let cur_offset: usize = (1 - 1) * envelope_size;
7575
7576 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7578
7579 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<Offer, 128>, D>(
7584 self.offers.as_ref().map(
7585 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::ValueTypeMarker>::borrow,
7586 ),
7587 encoder,
7588 offset + cur_offset,
7589 depth,
7590 )?;
7591
7592 _prev_end_offset = cur_offset + envelope_size;
7593 if 2 > max_ordinal {
7594 return Ok(());
7595 }
7596
7597 let cur_offset: usize = (2 - 1) * envelope_size;
7600
7601 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7603
7604 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ResourceProperty, 64>, D>(
7609 self.include_properties.as_ref().map(<fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
7610 encoder, offset + cur_offset, depth
7611 )?;
7612
7613 _prev_end_offset = cur_offset + envelope_size;
7614 if 3 > max_ordinal {
7615 return Ok(());
7616 }
7617
7618 let cur_offset: usize = (3 - 1) * envelope_size;
7621
7622 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7624
7625 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ResourceProperty, 64>, D>(
7630 self.exclude_properties.as_ref().map(<fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
7631 encoder, offset + cur_offset, depth
7632 )?;
7633
7634 _prev_end_offset = cur_offset + envelope_size;
7635
7636 Ok(())
7637 }
7638 }
7639
7640 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Selector {
7641 #[inline(always)]
7642 fn new_empty() -> Self {
7643 Self::default()
7644 }
7645
7646 unsafe fn decode(
7647 &mut self,
7648 decoder: &mut fidl::encoding::Decoder<'_, D>,
7649 offset: usize,
7650 mut depth: fidl::encoding::Depth,
7651 ) -> fidl::Result<()> {
7652 decoder.debug_check_bounds::<Self>(offset);
7653 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7654 None => return Err(fidl::Error::NotNullable),
7655 Some(len) => len,
7656 };
7657 if len == 0 {
7659 return Ok(());
7660 };
7661 depth.increment()?;
7662 let envelope_size = 8;
7663 let bytes_len = len * envelope_size;
7664 let offset = decoder.out_of_line_offset(bytes_len)?;
7665 let mut _next_ordinal_to_read = 0;
7667 let mut next_offset = offset;
7668 let end_offset = offset + bytes_len;
7669 _next_ordinal_to_read += 1;
7670 if next_offset >= end_offset {
7671 return Ok(());
7672 }
7673
7674 while _next_ordinal_to_read < 1 {
7676 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7677 _next_ordinal_to_read += 1;
7678 next_offset += envelope_size;
7679 }
7680
7681 let next_out_of_line = decoder.next_out_of_line();
7682 let handles_before = decoder.remaining_handles();
7683 if let Some((inlined, num_bytes, num_handles)) =
7684 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7685 {
7686 let member_inline_size =
7687 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::TypeMarker>::inline_size(
7688 decoder.context,
7689 );
7690 if inlined != (member_inline_size <= 4) {
7691 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7692 }
7693 let inner_offset;
7694 let mut inner_depth = depth.clone();
7695 if inlined {
7696 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7697 inner_offset = next_offset;
7698 } else {
7699 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7700 inner_depth.increment()?;
7701 }
7702 let val_ref = self
7703 .offers
7704 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<Offer, 128>, D));
7705 fidl::decode!(fidl::encoding::Vector<Offer, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
7706 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7707 {
7708 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7709 }
7710 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7711 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7712 }
7713 }
7714
7715 next_offset += envelope_size;
7716 _next_ordinal_to_read += 1;
7717 if next_offset >= end_offset {
7718 return Ok(());
7719 }
7720
7721 while _next_ordinal_to_read < 2 {
7723 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7724 _next_ordinal_to_read += 1;
7725 next_offset += envelope_size;
7726 }
7727
7728 let next_out_of_line = decoder.next_out_of_line();
7729 let handles_before = decoder.remaining_handles();
7730 if let Some((inlined, num_bytes, num_handles)) =
7731 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7732 {
7733 let member_inline_size = <fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7734 if inlined != (member_inline_size <= 4) {
7735 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7736 }
7737 let inner_offset;
7738 let mut inner_depth = depth.clone();
7739 if inlined {
7740 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7741 inner_offset = next_offset;
7742 } else {
7743 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7744 inner_depth.increment()?;
7745 }
7746 let val_ref = self.include_properties.get_or_insert_with(
7747 || fidl::new_empty!(fidl::encoding::Vector<ResourceProperty, 64>, D),
7748 );
7749 fidl::decode!(fidl::encoding::Vector<ResourceProperty, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
7750 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7751 {
7752 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7753 }
7754 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7755 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7756 }
7757 }
7758
7759 next_offset += envelope_size;
7760 _next_ordinal_to_read += 1;
7761 if next_offset >= end_offset {
7762 return Ok(());
7763 }
7764
7765 while _next_ordinal_to_read < 3 {
7767 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7768 _next_ordinal_to_read += 1;
7769 next_offset += envelope_size;
7770 }
7771
7772 let next_out_of_line = decoder.next_out_of_line();
7773 let handles_before = decoder.remaining_handles();
7774 if let Some((inlined, num_bytes, num_handles)) =
7775 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7776 {
7777 let member_inline_size = <fidl::encoding::Vector<ResourceProperty, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7778 if inlined != (member_inline_size <= 4) {
7779 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7780 }
7781 let inner_offset;
7782 let mut inner_depth = depth.clone();
7783 if inlined {
7784 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7785 inner_offset = next_offset;
7786 } else {
7787 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7788 inner_depth.increment()?;
7789 }
7790 let val_ref = self.exclude_properties.get_or_insert_with(
7791 || fidl::new_empty!(fidl::encoding::Vector<ResourceProperty, 64>, D),
7792 );
7793 fidl::decode!(fidl::encoding::Vector<ResourceProperty, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
7794 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7795 {
7796 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7797 }
7798 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7799 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7800 }
7801 }
7802
7803 next_offset += envelope_size;
7804
7805 while next_offset < end_offset {
7807 _next_ordinal_to_read += 1;
7808 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7809 next_offset += envelope_size;
7810 }
7811
7812 Ok(())
7813 }
7814 }
7815
7816 impl fidl::encoding::ValueTypeMarker for DeviceAddress {
7817 type Borrowed<'a> = &'a Self;
7818 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7819 value
7820 }
7821 }
7822
7823 unsafe impl fidl::encoding::TypeMarker for DeviceAddress {
7824 type Owned = Self;
7825
7826 #[inline(always)]
7827 fn inline_align(_context: fidl::encoding::Context) -> usize {
7828 8
7829 }
7830
7831 #[inline(always)]
7832 fn inline_size(_context: fidl::encoding::Context) -> usize {
7833 16
7834 }
7835 }
7836
7837 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceAddress, D>
7838 for &DeviceAddress
7839 {
7840 #[inline]
7841 unsafe fn encode(
7842 self,
7843 encoder: &mut fidl::encoding::Encoder<'_, D>,
7844 offset: usize,
7845 _depth: fidl::encoding::Depth,
7846 ) -> fidl::Result<()> {
7847 encoder.debug_check_bounds::<DeviceAddress>(offset);
7848 encoder.write_num::<u64>(self.ordinal(), offset);
7849 match self {
7850 DeviceAddress::IntValue(ref val) => {
7851 fidl::encoding::encode_in_envelope::<u8, D>(
7852 <u8 as fidl::encoding::ValueTypeMarker>::borrow(val),
7853 encoder, offset + 8, _depth
7854 )
7855 }
7856 DeviceAddress::ArrayIntValue(ref val) => {
7857 fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<u8, 10>, D>(
7858 <fidl::encoding::Vector<u8, 10> as fidl::encoding::ValueTypeMarker>::borrow(val),
7859 encoder, offset + 8, _depth
7860 )
7861 }
7862 DeviceAddress::CharIntValue(ref val) => {
7863 fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<4>, D>(
7864 <fidl::encoding::BoundedString<4> as fidl::encoding::ValueTypeMarker>::borrow(val),
7865 encoder, offset + 8, _depth
7866 )
7867 }
7868 DeviceAddress::ArrayCharIntValue(ref val) => {
7869 fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10>, D>(
7870 <fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10> as fidl::encoding::ValueTypeMarker>::borrow(val),
7871 encoder, offset + 8, _depth
7872 )
7873 }
7874 DeviceAddress::StringValue(ref val) => {
7875 fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<32>, D>(
7876 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow(val),
7877 encoder, offset + 8, _depth
7878 )
7879 }
7880 DeviceAddress::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
7881 }
7882 }
7883 }
7884
7885 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceAddress {
7886 #[inline(always)]
7887 fn new_empty() -> Self {
7888 Self::__SourceBreaking { unknown_ordinal: 0 }
7889 }
7890
7891 #[inline]
7892 unsafe fn decode(
7893 &mut self,
7894 decoder: &mut fidl::encoding::Decoder<'_, D>,
7895 offset: usize,
7896 mut depth: fidl::encoding::Depth,
7897 ) -> fidl::Result<()> {
7898 decoder.debug_check_bounds::<Self>(offset);
7899 #[allow(unused_variables)]
7900 let next_out_of_line = decoder.next_out_of_line();
7901 let handles_before = decoder.remaining_handles();
7902 let (ordinal, inlined, num_bytes, num_handles) =
7903 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7904
7905 let member_inline_size = match ordinal {
7906 1 => <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7907 2 => <fidl::encoding::Vector<u8, 10> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7908 3 => <fidl::encoding::BoundedString<4> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7909 4 => <fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7910 5 => <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7911 0 => return Err(fidl::Error::UnknownUnionTag),
7912 _ => num_bytes as usize,
7913 };
7914
7915 if inlined != (member_inline_size <= 4) {
7916 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7917 }
7918 let _inner_offset;
7919 if inlined {
7920 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7921 _inner_offset = offset + 8;
7922 } else {
7923 depth.increment()?;
7924 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7925 }
7926 match ordinal {
7927 1 => {
7928 #[allow(irrefutable_let_patterns)]
7929 if let DeviceAddress::IntValue(_) = self {
7930 } else {
7932 *self = DeviceAddress::IntValue(fidl::new_empty!(u8, D));
7934 }
7935 #[allow(irrefutable_let_patterns)]
7936 if let DeviceAddress::IntValue(ref mut val) = self {
7937 fidl::decode!(u8, D, val, decoder, _inner_offset, depth)?;
7938 } else {
7939 unreachable!()
7940 }
7941 }
7942 2 => {
7943 #[allow(irrefutable_let_patterns)]
7944 if let DeviceAddress::ArrayIntValue(_) = self {
7945 } else {
7947 *self = DeviceAddress::ArrayIntValue(
7949 fidl::new_empty!(fidl::encoding::Vector<u8, 10>, D),
7950 );
7951 }
7952 #[allow(irrefutable_let_patterns)]
7953 if let DeviceAddress::ArrayIntValue(ref mut val) = self {
7954 fidl::decode!(fidl::encoding::Vector<u8, 10>, D, val, decoder, _inner_offset, depth)?;
7955 } else {
7956 unreachable!()
7957 }
7958 }
7959 3 => {
7960 #[allow(irrefutable_let_patterns)]
7961 if let DeviceAddress::CharIntValue(_) = self {
7962 } else {
7964 *self = DeviceAddress::CharIntValue(fidl::new_empty!(
7966 fidl::encoding::BoundedString<4>,
7967 D
7968 ));
7969 }
7970 #[allow(irrefutable_let_patterns)]
7971 if let DeviceAddress::CharIntValue(ref mut val) = self {
7972 fidl::decode!(
7973 fidl::encoding::BoundedString<4>,
7974 D,
7975 val,
7976 decoder,
7977 _inner_offset,
7978 depth
7979 )?;
7980 } else {
7981 unreachable!()
7982 }
7983 }
7984 4 => {
7985 #[allow(irrefutable_let_patterns)]
7986 if let DeviceAddress::ArrayCharIntValue(_) = self {
7987 } else {
7989 *self = DeviceAddress::ArrayCharIntValue(fidl::new_empty!(
7991 fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10>,
7992 D
7993 ));
7994 }
7995 #[allow(irrefutable_let_patterns)]
7996 if let DeviceAddress::ArrayCharIntValue(ref mut val) = self {
7997 fidl::decode!(
7998 fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10>,
7999 D,
8000 val,
8001 decoder,
8002 _inner_offset,
8003 depth
8004 )?;
8005 } else {
8006 unreachable!()
8007 }
8008 }
8009 5 => {
8010 #[allow(irrefutable_let_patterns)]
8011 if let DeviceAddress::StringValue(_) = self {
8012 } else {
8014 *self = DeviceAddress::StringValue(fidl::new_empty!(
8016 fidl::encoding::BoundedString<32>,
8017 D
8018 ));
8019 }
8020 #[allow(irrefutable_let_patterns)]
8021 if let DeviceAddress::StringValue(ref mut val) = self {
8022 fidl::decode!(
8023 fidl::encoding::BoundedString<32>,
8024 D,
8025 val,
8026 decoder,
8027 _inner_offset,
8028 depth
8029 )?;
8030 } else {
8031 unreachable!()
8032 }
8033 }
8034 #[allow(deprecated)]
8035 ordinal => {
8036 for _ in 0..num_handles {
8037 decoder.drop_next_handle()?;
8038 }
8039 *self = DeviceAddress::__SourceBreaking { unknown_ordinal: ordinal };
8040 }
8041 }
8042 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
8043 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8044 }
8045 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8046 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8047 }
8048 Ok(())
8049 }
8050 }
8051
8052 impl fidl::encoding::ValueTypeMarker for HealthAlert {
8053 type Borrowed<'a> = &'a Self;
8054 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8055 value
8056 }
8057 }
8058
8059 unsafe impl fidl::encoding::TypeMarker for HealthAlert {
8060 type Owned = Self;
8061
8062 #[inline(always)]
8063 fn inline_align(_context: fidl::encoding::Context) -> usize {
8064 8
8065 }
8066
8067 #[inline(always)]
8068 fn inline_size(_context: fidl::encoding::Context) -> usize {
8069 16
8070 }
8071 }
8072
8073 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HealthAlert, D>
8074 for &HealthAlert
8075 {
8076 #[inline]
8077 unsafe fn encode(
8078 self,
8079 encoder: &mut fidl::encoding::Encoder<'_, D>,
8080 offset: usize,
8081 _depth: fidl::encoding::Depth,
8082 ) -> fidl::Result<()> {
8083 encoder.debug_check_bounds::<HealthAlert>(offset);
8084 encoder.write_num::<u64>(self.ordinal(), offset);
8085 match self {
8086 HealthAlert::SelfFault(ref val) => {
8087 fidl::encoding::encode_in_envelope::<HealthCheckResponse, D>(
8088 <HealthCheckResponse as fidl::encoding::ValueTypeMarker>::borrow(val),
8089 encoder,
8090 offset + 8,
8091 _depth,
8092 )
8093 }
8094 HealthAlert::UpstreamNeighborFault(ref val) => {
8095 fidl::encoding::encode_in_envelope::<HealthCheckResponse, D>(
8096 <HealthCheckResponse as fidl::encoding::ValueTypeMarker>::borrow(val),
8097 encoder,
8098 offset + 8,
8099 _depth,
8100 )
8101 }
8102 HealthAlert::DownstreamNeighborFault(ref val) => {
8103 fidl::encoding::encode_in_envelope::<HealthCheckResponse, D>(
8104 <HealthCheckResponse as fidl::encoding::ValueTypeMarker>::borrow(val),
8105 encoder,
8106 offset + 8,
8107 _depth,
8108 )
8109 }
8110 HealthAlert::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
8111 }
8112 }
8113 }
8114
8115 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HealthAlert {
8116 #[inline(always)]
8117 fn new_empty() -> Self {
8118 Self::__SourceBreaking { unknown_ordinal: 0 }
8119 }
8120
8121 #[inline]
8122 unsafe fn decode(
8123 &mut self,
8124 decoder: &mut fidl::encoding::Decoder<'_, D>,
8125 offset: usize,
8126 mut depth: fidl::encoding::Depth,
8127 ) -> fidl::Result<()> {
8128 decoder.debug_check_bounds::<Self>(offset);
8129 #[allow(unused_variables)]
8130 let next_out_of_line = decoder.next_out_of_line();
8131 let handles_before = decoder.remaining_handles();
8132 let (ordinal, inlined, num_bytes, num_handles) =
8133 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
8134
8135 let member_inline_size = match ordinal {
8136 1 => <HealthCheckResponse as fidl::encoding::TypeMarker>::inline_size(
8137 decoder.context,
8138 ),
8139 2 => <HealthCheckResponse as fidl::encoding::TypeMarker>::inline_size(
8140 decoder.context,
8141 ),
8142 3 => <HealthCheckResponse as fidl::encoding::TypeMarker>::inline_size(
8143 decoder.context,
8144 ),
8145 0 => return Err(fidl::Error::UnknownUnionTag),
8146 _ => num_bytes as usize,
8147 };
8148
8149 if inlined != (member_inline_size <= 4) {
8150 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8151 }
8152 let _inner_offset;
8153 if inlined {
8154 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
8155 _inner_offset = offset + 8;
8156 } else {
8157 depth.increment()?;
8158 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8159 }
8160 match ordinal {
8161 1 => {
8162 #[allow(irrefutable_let_patterns)]
8163 if let HealthAlert::SelfFault(_) = self {
8164 } else {
8166 *self = HealthAlert::SelfFault(fidl::new_empty!(HealthCheckResponse, D));
8168 }
8169 #[allow(irrefutable_let_patterns)]
8170 if let HealthAlert::SelfFault(ref mut val) = self {
8171 fidl::decode!(HealthCheckResponse, D, val, decoder, _inner_offset, depth)?;
8172 } else {
8173 unreachable!()
8174 }
8175 }
8176 2 => {
8177 #[allow(irrefutable_let_patterns)]
8178 if let HealthAlert::UpstreamNeighborFault(_) = self {
8179 } else {
8181 *self = HealthAlert::UpstreamNeighborFault(fidl::new_empty!(
8183 HealthCheckResponse,
8184 D
8185 ));
8186 }
8187 #[allow(irrefutable_let_patterns)]
8188 if let HealthAlert::UpstreamNeighborFault(ref mut val) = self {
8189 fidl::decode!(HealthCheckResponse, D, val, decoder, _inner_offset, depth)?;
8190 } else {
8191 unreachable!()
8192 }
8193 }
8194 3 => {
8195 #[allow(irrefutable_let_patterns)]
8196 if let HealthAlert::DownstreamNeighborFault(_) = self {
8197 } else {
8199 *self = HealthAlert::DownstreamNeighborFault(fidl::new_empty!(
8201 HealthCheckResponse,
8202 D
8203 ));
8204 }
8205 #[allow(irrefutable_let_patterns)]
8206 if let HealthAlert::DownstreamNeighborFault(ref mut val) = self {
8207 fidl::decode!(HealthCheckResponse, D, val, decoder, _inner_offset, depth)?;
8208 } else {
8209 unreachable!()
8210 }
8211 }
8212 #[allow(deprecated)]
8213 ordinal => {
8214 for _ in 0..num_handles {
8215 decoder.drop_next_handle()?;
8216 }
8217 *self = HealthAlert::__SourceBreaking { unknown_ordinal: ordinal };
8218 }
8219 }
8220 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
8221 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8222 }
8223 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8224 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8225 }
8226 Ok(())
8227 }
8228 }
8229
8230 impl fidl::encoding::ValueTypeMarker for HealthDiagnosticValue {
8231 type Borrowed<'a> = &'a Self;
8232 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8233 value
8234 }
8235 }
8236
8237 unsafe impl fidl::encoding::TypeMarker for HealthDiagnosticValue {
8238 type Owned = Self;
8239
8240 #[inline(always)]
8241 fn inline_align(_context: fidl::encoding::Context) -> usize {
8242 8
8243 }
8244
8245 #[inline(always)]
8246 fn inline_size(_context: fidl::encoding::Context) -> usize {
8247 16
8248 }
8249 }
8250
8251 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HealthDiagnosticValue, D>
8252 for &HealthDiagnosticValue
8253 {
8254 #[inline]
8255 unsafe fn encode(
8256 self,
8257 encoder: &mut fidl::encoding::Encoder<'_, D>,
8258 offset: usize,
8259 _depth: fidl::encoding::Depth,
8260 ) -> fidl::Result<()> {
8261 encoder.debug_check_bounds::<HealthDiagnosticValue>(offset);
8262 encoder.write_num::<u64>(self.ordinal(), offset);
8263 match self {
8264 HealthDiagnosticValue::StringValue(ref val) => fidl::encoding::encode_in_envelope::<
8265 fidl::encoding::BoundedString<256>,
8266 D,
8267 >(
8268 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
8269 val,
8270 ),
8271 encoder,
8272 offset + 8,
8273 _depth,
8274 ),
8275 HealthDiagnosticValue::IntValue(ref val) => {
8276 fidl::encoding::encode_in_envelope::<i64, D>(
8277 <i64 as fidl::encoding::ValueTypeMarker>::borrow(val),
8278 encoder,
8279 offset + 8,
8280 _depth,
8281 )
8282 }
8283 HealthDiagnosticValue::UintValue(ref val) => {
8284 fidl::encoding::encode_in_envelope::<u64, D>(
8285 <u64 as fidl::encoding::ValueTypeMarker>::borrow(val),
8286 encoder,
8287 offset + 8,
8288 _depth,
8289 )
8290 }
8291 HealthDiagnosticValue::BoolValue(ref val) => {
8292 fidl::encoding::encode_in_envelope::<bool, D>(
8293 <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
8294 encoder,
8295 offset + 8,
8296 _depth,
8297 )
8298 }
8299 HealthDiagnosticValue::Timestamp(ref val) => {
8300 fidl::encoding::encode_in_envelope::<fidl::BootInstant, D>(
8301 <fidl::BootInstant as fidl::encoding::ValueTypeMarker>::borrow(val),
8302 encoder,
8303 offset + 8,
8304 _depth,
8305 )
8306 }
8307 HealthDiagnosticValue::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
8308 }
8309 }
8310 }
8311
8312 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HealthDiagnosticValue {
8313 #[inline(always)]
8314 fn new_empty() -> Self {
8315 Self::__SourceBreaking { unknown_ordinal: 0 }
8316 }
8317
8318 #[inline]
8319 unsafe fn decode(
8320 &mut self,
8321 decoder: &mut fidl::encoding::Decoder<'_, D>,
8322 offset: usize,
8323 mut depth: fidl::encoding::Depth,
8324 ) -> fidl::Result<()> {
8325 decoder.debug_check_bounds::<Self>(offset);
8326 #[allow(unused_variables)]
8327 let next_out_of_line = decoder.next_out_of_line();
8328 let handles_before = decoder.remaining_handles();
8329 let (ordinal, inlined, num_bytes, num_handles) =
8330 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
8331
8332 let member_inline_size = match ordinal {
8333 1 => {
8334 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
8335 decoder.context,
8336 )
8337 }
8338 2 => <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
8339 3 => <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
8340 4 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
8341 5 => {
8342 <fidl::BootInstant as fidl::encoding::TypeMarker>::inline_size(decoder.context)
8343 }
8344 0 => return Err(fidl::Error::UnknownUnionTag),
8345 _ => num_bytes as usize,
8346 };
8347
8348 if inlined != (member_inline_size <= 4) {
8349 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8350 }
8351 let _inner_offset;
8352 if inlined {
8353 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
8354 _inner_offset = offset + 8;
8355 } else {
8356 depth.increment()?;
8357 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8358 }
8359 match ordinal {
8360 1 => {
8361 #[allow(irrefutable_let_patterns)]
8362 if let HealthDiagnosticValue::StringValue(_) = self {
8363 } else {
8365 *self = HealthDiagnosticValue::StringValue(fidl::new_empty!(
8367 fidl::encoding::BoundedString<256>,
8368 D
8369 ));
8370 }
8371 #[allow(irrefutable_let_patterns)]
8372 if let HealthDiagnosticValue::StringValue(ref mut val) = self {
8373 fidl::decode!(
8374 fidl::encoding::BoundedString<256>,
8375 D,
8376 val,
8377 decoder,
8378 _inner_offset,
8379 depth
8380 )?;
8381 } else {
8382 unreachable!()
8383 }
8384 }
8385 2 => {
8386 #[allow(irrefutable_let_patterns)]
8387 if let HealthDiagnosticValue::IntValue(_) = self {
8388 } else {
8390 *self = HealthDiagnosticValue::IntValue(fidl::new_empty!(i64, D));
8392 }
8393 #[allow(irrefutable_let_patterns)]
8394 if let HealthDiagnosticValue::IntValue(ref mut val) = self {
8395 fidl::decode!(i64, D, val, decoder, _inner_offset, depth)?;
8396 } else {
8397 unreachable!()
8398 }
8399 }
8400 3 => {
8401 #[allow(irrefutable_let_patterns)]
8402 if let HealthDiagnosticValue::UintValue(_) = self {
8403 } else {
8405 *self = HealthDiagnosticValue::UintValue(fidl::new_empty!(u64, D));
8407 }
8408 #[allow(irrefutable_let_patterns)]
8409 if let HealthDiagnosticValue::UintValue(ref mut val) = self {
8410 fidl::decode!(u64, D, val, decoder, _inner_offset, depth)?;
8411 } else {
8412 unreachable!()
8413 }
8414 }
8415 4 => {
8416 #[allow(irrefutable_let_patterns)]
8417 if let HealthDiagnosticValue::BoolValue(_) = self {
8418 } else {
8420 *self = HealthDiagnosticValue::BoolValue(fidl::new_empty!(bool, D));
8422 }
8423 #[allow(irrefutable_let_patterns)]
8424 if let HealthDiagnosticValue::BoolValue(ref mut val) = self {
8425 fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
8426 } else {
8427 unreachable!()
8428 }
8429 }
8430 5 => {
8431 #[allow(irrefutable_let_patterns)]
8432 if let HealthDiagnosticValue::Timestamp(_) = self {
8433 } else {
8435 *self = HealthDiagnosticValue::Timestamp(fidl::new_empty!(
8437 fidl::BootInstant,
8438 D
8439 ));
8440 }
8441 #[allow(irrefutable_let_patterns)]
8442 if let HealthDiagnosticValue::Timestamp(ref mut val) = self {
8443 fidl::decode!(fidl::BootInstant, D, val, decoder, _inner_offset, depth)?;
8444 } else {
8445 unreachable!()
8446 }
8447 }
8448 #[allow(deprecated)]
8449 ordinal => {
8450 for _ in 0..num_handles {
8451 decoder.drop_next_handle()?;
8452 }
8453 *self = HealthDiagnosticValue::__SourceBreaking { unknown_ordinal: ordinal };
8454 }
8455 }
8456 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
8457 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8458 }
8459 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8460 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8461 }
8462 Ok(())
8463 }
8464 }
8465
8466 impl fidl::encoding::ValueTypeMarker for NodePropertyValue {
8467 type Borrowed<'a> = &'a Self;
8468 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8469 value
8470 }
8471 }
8472
8473 unsafe impl fidl::encoding::TypeMarker for NodePropertyValue {
8474 type Owned = Self;
8475
8476 #[inline(always)]
8477 fn inline_align(_context: fidl::encoding::Context) -> usize {
8478 8
8479 }
8480
8481 #[inline(always)]
8482 fn inline_size(_context: fidl::encoding::Context) -> usize {
8483 16
8484 }
8485 }
8486
8487 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodePropertyValue, D>
8488 for &NodePropertyValue
8489 {
8490 #[inline]
8491 unsafe fn encode(
8492 self,
8493 encoder: &mut fidl::encoding::Encoder<'_, D>,
8494 offset: usize,
8495 _depth: fidl::encoding::Depth,
8496 ) -> fidl::Result<()> {
8497 encoder.debug_check_bounds::<NodePropertyValue>(offset);
8498 encoder.write_num::<u64>(self.ordinal(), offset);
8499 match self {
8500 NodePropertyValue::IntValue(ref val) => {
8501 fidl::encoding::encode_in_envelope::<u32, D>(
8502 <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
8503 encoder,
8504 offset + 8,
8505 _depth,
8506 )
8507 }
8508 NodePropertyValue::StringValue(ref val) => fidl::encoding::encode_in_envelope::<
8509 fidl::encoding::BoundedString<256>,
8510 D,
8511 >(
8512 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
8513 val,
8514 ),
8515 encoder,
8516 offset + 8,
8517 _depth,
8518 ),
8519 NodePropertyValue::BoolValue(ref val) => {
8520 fidl::encoding::encode_in_envelope::<bool, D>(
8521 <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
8522 encoder,
8523 offset + 8,
8524 _depth,
8525 )
8526 }
8527 NodePropertyValue::EnumValue(ref val) => fidl::encoding::encode_in_envelope::<
8528 fidl::encoding::BoundedString<256>,
8529 D,
8530 >(
8531 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
8532 val,
8533 ),
8534 encoder,
8535 offset + 8,
8536 _depth,
8537 ),
8538 NodePropertyValue::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
8539 }
8540 }
8541 }
8542
8543 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodePropertyValue {
8544 #[inline(always)]
8545 fn new_empty() -> Self {
8546 Self::__SourceBreaking { unknown_ordinal: 0 }
8547 }
8548
8549 #[inline]
8550 unsafe fn decode(
8551 &mut self,
8552 decoder: &mut fidl::encoding::Decoder<'_, D>,
8553 offset: usize,
8554 mut depth: fidl::encoding::Depth,
8555 ) -> fidl::Result<()> {
8556 decoder.debug_check_bounds::<Self>(offset);
8557 #[allow(unused_variables)]
8558 let next_out_of_line = decoder.next_out_of_line();
8559 let handles_before = decoder.remaining_handles();
8560 let (ordinal, inlined, num_bytes, num_handles) =
8561 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
8562
8563 let member_inline_size = match ordinal {
8564 1 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
8565 2 => {
8566 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
8567 decoder.context,
8568 )
8569 }
8570 3 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
8571 4 => {
8572 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
8573 decoder.context,
8574 )
8575 }
8576 0 => return Err(fidl::Error::UnknownUnionTag),
8577 _ => num_bytes as usize,
8578 };
8579
8580 if inlined != (member_inline_size <= 4) {
8581 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8582 }
8583 let _inner_offset;
8584 if inlined {
8585 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
8586 _inner_offset = offset + 8;
8587 } else {
8588 depth.increment()?;
8589 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8590 }
8591 match ordinal {
8592 1 => {
8593 #[allow(irrefutable_let_patterns)]
8594 if let NodePropertyValue::IntValue(_) = self {
8595 } else {
8597 *self = NodePropertyValue::IntValue(fidl::new_empty!(u32, D));
8599 }
8600 #[allow(irrefutable_let_patterns)]
8601 if let NodePropertyValue::IntValue(ref mut val) = self {
8602 fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
8603 } else {
8604 unreachable!()
8605 }
8606 }
8607 2 => {
8608 #[allow(irrefutable_let_patterns)]
8609 if let NodePropertyValue::StringValue(_) = self {
8610 } else {
8612 *self = NodePropertyValue::StringValue(fidl::new_empty!(
8614 fidl::encoding::BoundedString<256>,
8615 D
8616 ));
8617 }
8618 #[allow(irrefutable_let_patterns)]
8619 if let NodePropertyValue::StringValue(ref mut val) = self {
8620 fidl::decode!(
8621 fidl::encoding::BoundedString<256>,
8622 D,
8623 val,
8624 decoder,
8625 _inner_offset,
8626 depth
8627 )?;
8628 } else {
8629 unreachable!()
8630 }
8631 }
8632 3 => {
8633 #[allow(irrefutable_let_patterns)]
8634 if let NodePropertyValue::BoolValue(_) = self {
8635 } else {
8637 *self = NodePropertyValue::BoolValue(fidl::new_empty!(bool, D));
8639 }
8640 #[allow(irrefutable_let_patterns)]
8641 if let NodePropertyValue::BoolValue(ref mut val) = self {
8642 fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
8643 } else {
8644 unreachable!()
8645 }
8646 }
8647 4 => {
8648 #[allow(irrefutable_let_patterns)]
8649 if let NodePropertyValue::EnumValue(_) = self {
8650 } else {
8652 *self = NodePropertyValue::EnumValue(fidl::new_empty!(
8654 fidl::encoding::BoundedString<256>,
8655 D
8656 ));
8657 }
8658 #[allow(irrefutable_let_patterns)]
8659 if let NodePropertyValue::EnumValue(ref mut val) = self {
8660 fidl::decode!(
8661 fidl::encoding::BoundedString<256>,
8662 D,
8663 val,
8664 decoder,
8665 _inner_offset,
8666 depth
8667 )?;
8668 } else {
8669 unreachable!()
8670 }
8671 }
8672 #[allow(deprecated)]
8673 ordinal => {
8674 for _ in 0..num_handles {
8675 decoder.drop_next_handle()?;
8676 }
8677 *self = NodePropertyValue::__SourceBreaking { unknown_ordinal: ordinal };
8678 }
8679 }
8680 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
8681 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8682 }
8683 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8684 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8685 }
8686 Ok(())
8687 }
8688 }
8689
8690 impl fidl::encoding::ValueTypeMarker for Offer {
8691 type Borrowed<'a> = &'a Self;
8692 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8693 value
8694 }
8695 }
8696
8697 unsafe impl fidl::encoding::TypeMarker for Offer {
8698 type Owned = Self;
8699
8700 #[inline(always)]
8701 fn inline_align(_context: fidl::encoding::Context) -> usize {
8702 8
8703 }
8704
8705 #[inline(always)]
8706 fn inline_size(_context: fidl::encoding::Context) -> usize {
8707 16
8708 }
8709 }
8710
8711 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Offer, D> for &Offer {
8712 #[inline]
8713 unsafe fn encode(
8714 self,
8715 encoder: &mut fidl::encoding::Encoder<'_, D>,
8716 offset: usize,
8717 _depth: fidl::encoding::Depth,
8718 ) -> fidl::Result<()> {
8719 encoder.debug_check_bounds::<Offer>(offset);
8720 encoder.write_num::<u64>(self.ordinal(), offset);
8721 match self {
8722 Offer::ZirconTransport(ref val) => {
8723 fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl_common::Offer, D>(
8724 <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::ValueTypeMarker>::borrow(val),
8725 encoder, offset + 8, _depth
8726 )
8727 }
8728 Offer::DriverTransport(ref val) => {
8729 fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl_common::Offer, D>(
8730 <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::ValueTypeMarker>::borrow(val),
8731 encoder, offset + 8, _depth
8732 )
8733 }
8734 Offer::DictionaryOffer(ref val) => {
8735 fidl::encoding::encode_in_envelope::<fidl_fuchsia_component_decl_common::Offer, D>(
8736 <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::ValueTypeMarker>::borrow(val),
8737 encoder, offset + 8, _depth
8738 )
8739 }
8740 Offer::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
8741 }
8742 }
8743 }
8744
8745 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Offer {
8746 #[inline(always)]
8747 fn new_empty() -> Self {
8748 Self::__SourceBreaking { unknown_ordinal: 0 }
8749 }
8750
8751 #[inline]
8752 unsafe fn decode(
8753 &mut self,
8754 decoder: &mut fidl::encoding::Decoder<'_, D>,
8755 offset: usize,
8756 mut depth: fidl::encoding::Depth,
8757 ) -> fidl::Result<()> {
8758 decoder.debug_check_bounds::<Self>(offset);
8759 #[allow(unused_variables)]
8760 let next_out_of_line = decoder.next_out_of_line();
8761 let handles_before = decoder.remaining_handles();
8762 let (ordinal, inlined, num_bytes, num_handles) =
8763 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
8764
8765 let member_inline_size = match ordinal {
8766 1 => <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::TypeMarker>::inline_size(decoder.context),
8767 2 => <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::TypeMarker>::inline_size(decoder.context),
8768 3 => <fidl_fuchsia_component_decl_common::Offer as fidl::encoding::TypeMarker>::inline_size(decoder.context),
8769 0 => return Err(fidl::Error::UnknownUnionTag),
8770 _ => num_bytes as usize,
8771 };
8772
8773 if inlined != (member_inline_size <= 4) {
8774 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8775 }
8776 let _inner_offset;
8777 if inlined {
8778 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
8779 _inner_offset = offset + 8;
8780 } else {
8781 depth.increment()?;
8782 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8783 }
8784 match ordinal {
8785 1 => {
8786 #[allow(irrefutable_let_patterns)]
8787 if let Offer::ZirconTransport(_) = self {
8788 } else {
8790 *self = Offer::ZirconTransport(fidl::new_empty!(
8792 fidl_fuchsia_component_decl_common::Offer,
8793 D
8794 ));
8795 }
8796 #[allow(irrefutable_let_patterns)]
8797 if let Offer::ZirconTransport(ref mut val) = self {
8798 fidl::decode!(
8799 fidl_fuchsia_component_decl_common::Offer,
8800 D,
8801 val,
8802 decoder,
8803 _inner_offset,
8804 depth
8805 )?;
8806 } else {
8807 unreachable!()
8808 }
8809 }
8810 2 => {
8811 #[allow(irrefutable_let_patterns)]
8812 if let Offer::DriverTransport(_) = self {
8813 } else {
8815 *self = Offer::DriverTransport(fidl::new_empty!(
8817 fidl_fuchsia_component_decl_common::Offer,
8818 D
8819 ));
8820 }
8821 #[allow(irrefutable_let_patterns)]
8822 if let Offer::DriverTransport(ref mut val) = self {
8823 fidl::decode!(
8824 fidl_fuchsia_component_decl_common::Offer,
8825 D,
8826 val,
8827 decoder,
8828 _inner_offset,
8829 depth
8830 )?;
8831 } else {
8832 unreachable!()
8833 }
8834 }
8835 3 => {
8836 #[allow(irrefutable_let_patterns)]
8837 if let Offer::DictionaryOffer(_) = self {
8838 } else {
8840 *self = Offer::DictionaryOffer(fidl::new_empty!(
8842 fidl_fuchsia_component_decl_common::Offer,
8843 D
8844 ));
8845 }
8846 #[allow(irrefutable_let_patterns)]
8847 if let Offer::DictionaryOffer(ref mut val) = self {
8848 fidl::decode!(
8849 fidl_fuchsia_component_decl_common::Offer,
8850 D,
8851 val,
8852 decoder,
8853 _inner_offset,
8854 depth
8855 )?;
8856 } else {
8857 unreachable!()
8858 }
8859 }
8860 #[allow(deprecated)]
8861 ordinal => {
8862 for _ in 0..num_handles {
8863 decoder.drop_next_handle()?;
8864 }
8865 *self = Offer::__SourceBreaking { unknown_ordinal: ordinal };
8866 }
8867 }
8868 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
8869 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8870 }
8871 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8872 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8873 }
8874 Ok(())
8875 }
8876 }
8877}