1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::client::QueryResponseFut;
8use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
9use fidl::endpoints::{ControlHandle as _, Responder as _};
10use futures::future::{self, MaybeDone, TryFutureExt};
11use zx_status;
12
13pub type NodeName = String;
14
15pub type NodeOffersVector = Vec<Offer>;
16
17pub type NodeProperties = Vec<NodeProperty2>;
18
19pub type NodePropertyDictionary = Vec<NodePropertyEntry>;
20
21pub type NodePropertyDictionary2 = Vec<NodePropertyEntry2>;
22
23pub type NodePropertyKeyString = String;
24
25pub type NodePropertyKeyUint = u32;
26
27pub type NodePropertyValueBool = bool;
28
29pub type NodePropertyValueEnum = String;
30
31pub type NodePropertyValueString = String;
32
33pub type NodePropertyValueUint = u32;
34
35pub type NodePropertyVector = Vec<NodeProperty>;
36
37pub const MAX_DEVICE_ADDRESS_ARRAY_LEN: u32 = 10;
38
39pub const MAX_DEVICE_ADDRESS_STR_LEN: u32 = 32;
40
41pub const MAX_MODULE_NAME_LENGTH: u8 = 128;
42
43pub const MAX_NAMESPACE_COUNT: u32 = fidl_fuchsia_component_runner::MAX_NAMESPACE_COUNT as u32;
44
45pub const MAX_NODE_NAME_LENGTH: u8 = 128;
46
47pub const MAX_OFFER_COUNT: u32 = fidl_fuchsia_component::MAX_DYNAMIC_OFFER_COUNT as u32;
48
49pub const MAX_PROPERTY_COUNT: u8 = 64;
50
51pub const MAX_RESOURCE_NAME_LENGTH: u8 = 128;
52
53pub const MAX_SYMBOL_COUNT: u8 = 64;
54
55pub const MAX_SYMBOL_NAME_LENGTH: u8 = 128;
56
57#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
58pub enum BusType {
59 Platform,
60 Acpi,
61 DeviceTree,
62 Pci,
63 Usb,
64 Gpio,
65 I2C,
66 Spi,
67 Sdio,
68 Uart,
69 Spmi,
70 #[doc(hidden)]
71 __SourceBreaking {
72 unknown_ordinal: u32,
73 },
74}
75
76#[macro_export]
78macro_rules! BusTypeUnknown {
79 () => {
80 _
81 };
82}
83
84impl BusType {
85 #[inline]
86 pub fn from_primitive(prim: u32) -> Option<Self> {
87 match prim {
88 1 => Some(Self::Platform),
89 2 => Some(Self::Acpi),
90 3 => Some(Self::DeviceTree),
91 4 => Some(Self::Pci),
92 5 => Some(Self::Usb),
93 6 => Some(Self::Gpio),
94 7 => Some(Self::I2C),
95 8 => Some(Self::Spi),
96 9 => Some(Self::Sdio),
97 10 => Some(Self::Uart),
98 11 => Some(Self::Spmi),
99 _ => None,
100 }
101 }
102
103 #[inline]
104 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
105 match prim {
106 1 => Self::Platform,
107 2 => Self::Acpi,
108 3 => Self::DeviceTree,
109 4 => Self::Pci,
110 5 => Self::Usb,
111 6 => Self::Gpio,
112 7 => Self::I2C,
113 8 => Self::Spi,
114 9 => Self::Sdio,
115 10 => Self::Uart,
116 11 => Self::Spmi,
117 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
118 }
119 }
120
121 #[inline]
122 pub fn unknown() -> Self {
123 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
124 }
125
126 #[inline]
127 pub const fn into_primitive(self) -> u32 {
128 match self {
129 Self::Platform => 1,
130 Self::Acpi => 2,
131 Self::DeviceTree => 3,
132 Self::Pci => 4,
133 Self::Usb => 5,
134 Self::Gpio => 6,
135 Self::I2C => 7,
136 Self::Spi => 8,
137 Self::Sdio => 9,
138 Self::Uart => 10,
139 Self::Spmi => 11,
140 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
141 }
142 }
143
144 #[inline]
145 pub fn is_unknown(&self) -> bool {
146 match self {
147 Self::__SourceBreaking { unknown_ordinal: _ } => true,
148 _ => false,
149 }
150 }
151}
152
153#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
155pub enum CompositeNodeSpecError {
156 MissingArgs,
158 EmptyNodes,
160 AlreadyExists,
163 DriverIndexFailure,
165 #[doc(hidden)]
166 __SourceBreaking { unknown_ordinal: u32 },
167}
168
169#[macro_export]
171macro_rules! CompositeNodeSpecErrorUnknown {
172 () => {
173 _
174 };
175}
176
177impl CompositeNodeSpecError {
178 #[inline]
179 pub fn from_primitive(prim: u32) -> Option<Self> {
180 match prim {
181 1 => Some(Self::MissingArgs),
182 2 => Some(Self::EmptyNodes),
183 3 => Some(Self::AlreadyExists),
184 4 => Some(Self::DriverIndexFailure),
185 _ => None,
186 }
187 }
188
189 #[inline]
190 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
191 match prim {
192 1 => Self::MissingArgs,
193 2 => Self::EmptyNodes,
194 3 => Self::AlreadyExists,
195 4 => Self::DriverIndexFailure,
196 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
197 }
198 }
199
200 #[inline]
201 pub fn unknown() -> Self {
202 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
203 }
204
205 #[inline]
206 pub const fn into_primitive(self) -> u32 {
207 match self {
208 Self::MissingArgs => 1,
209 Self::EmptyNodes => 2,
210 Self::AlreadyExists => 3,
211 Self::DriverIndexFailure => 4,
212 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
213 }
214 }
215
216 #[inline]
217 pub fn is_unknown(&self) -> bool {
218 match self {
219 Self::__SourceBreaking { unknown_ordinal: _ } => true,
220 _ => false,
221 }
222 }
223}
224
225#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
227#[repr(u32)]
228pub enum Condition {
229 Unknown = 0,
230 Accept = 1,
231 Reject = 2,
232}
233
234impl Condition {
235 #[inline]
236 pub fn from_primitive(prim: u32) -> Option<Self> {
237 match prim {
238 0 => Some(Self::Unknown),
239 1 => Some(Self::Accept),
240 2 => Some(Self::Reject),
241 _ => None,
242 }
243 }
244
245 #[inline]
246 pub const fn into_primitive(self) -> u32 {
247 self as u32
248 }
249
250 #[deprecated = "Strict enums should not use `is_unknown`"]
251 #[inline]
252 pub fn is_unknown(&self) -> bool {
253 false
254 }
255}
256
257#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
258pub enum DeviceAddressStability {
259 UnstableBetweenDriverRestart,
261 UnstableBetweenBoot,
263 UnstableBetweenSoftwareUpdate,
265 Stable,
267 #[doc(hidden)]
268 __SourceBreaking { unknown_ordinal: u32 },
269}
270
271#[macro_export]
273macro_rules! DeviceAddressStabilityUnknown {
274 () => {
275 _
276 };
277}
278
279impl DeviceAddressStability {
280 #[inline]
281 pub fn from_primitive(prim: u32) -> Option<Self> {
282 match prim {
283 0 => Some(Self::UnstableBetweenDriverRestart),
284 1 => Some(Self::UnstableBetweenBoot),
285 2 => Some(Self::UnstableBetweenSoftwareUpdate),
286 3 => Some(Self::Stable),
287 _ => None,
288 }
289 }
290
291 #[inline]
292 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
293 match prim {
294 0 => Self::UnstableBetweenDriverRestart,
295 1 => Self::UnstableBetweenBoot,
296 2 => Self::UnstableBetweenSoftwareUpdate,
297 3 => Self::Stable,
298 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
299 }
300 }
301
302 #[inline]
303 pub fn unknown() -> Self {
304 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
305 }
306
307 #[inline]
308 pub const fn into_primitive(self) -> u32 {
309 match self {
310 Self::UnstableBetweenDriverRestart => 0,
311 Self::UnstableBetweenBoot => 1,
312 Self::UnstableBetweenSoftwareUpdate => 2,
313 Self::Stable => 3,
314 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
315 }
316 }
317
318 #[inline]
319 pub fn is_unknown(&self) -> bool {
320 match self {
321 Self::__SourceBreaking { unknown_ordinal: _ } => true,
322 _ => false,
323 }
324 }
325}
326
327#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
331pub enum DriverPackageType {
332 Boot,
334 Base,
336 Cached,
339 Universe,
341 #[doc(hidden)]
342 __SourceBreaking { unknown_ordinal: u8 },
343}
344
345#[macro_export]
347macro_rules! DriverPackageTypeUnknown {
348 () => {
349 _
350 };
351}
352
353impl DriverPackageType {
354 #[inline]
355 pub fn from_primitive(prim: u8) -> Option<Self> {
356 match prim {
357 0 => Some(Self::Boot),
358 1 => Some(Self::Base),
359 2 => Some(Self::Cached),
360 3 => Some(Self::Universe),
361 _ => None,
362 }
363 }
364
365 #[inline]
366 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
367 match prim {
368 0 => Self::Boot,
369 1 => Self::Base,
370 2 => Self::Cached,
371 3 => Self::Universe,
372 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
373 }
374 }
375
376 #[inline]
377 pub fn unknown() -> Self {
378 Self::__SourceBreaking { unknown_ordinal: 0xff }
379 }
380
381 #[inline]
382 pub const fn into_primitive(self) -> u8 {
383 match self {
384 Self::Boot => 0,
385 Self::Base => 1,
386 Self::Cached => 2,
387 Self::Universe => 3,
388 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
389 }
390 }
391
392 #[inline]
393 pub fn is_unknown(&self) -> bool {
394 match self {
395 Self::__SourceBreaking { unknown_ordinal: _ } => true,
396 _ => false,
397 }
398 }
399}
400
401#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
403pub enum NodeError {
404 Internal,
405 NodeRemoved,
406 NameMissing,
407 NameInvalid,
410 NameAlreadyExists,
412 OfferSourceNameMissing,
414 OfferRefExists,
416 SymbolNameMissing,
418 SymbolAddressMissing,
420 SymbolAlreadyExists,
422 UnbindChildrenInProgress,
424 UnsupportedArgs,
426 #[doc(hidden)]
427 __SourceBreaking {
428 unknown_ordinal: u32,
429 },
430}
431
432#[macro_export]
434macro_rules! NodeErrorUnknown {
435 () => {
436 _
437 };
438}
439
440impl NodeError {
441 #[inline]
442 pub fn from_primitive(prim: u32) -> Option<Self> {
443 match prim {
444 1 => Some(Self::Internal),
445 2 => Some(Self::NodeRemoved),
446 3 => Some(Self::NameMissing),
447 4 => Some(Self::NameInvalid),
448 5 => Some(Self::NameAlreadyExists),
449 6 => Some(Self::OfferSourceNameMissing),
450 7 => Some(Self::OfferRefExists),
451 8 => Some(Self::SymbolNameMissing),
452 9 => Some(Self::SymbolAddressMissing),
453 10 => Some(Self::SymbolAlreadyExists),
454 11 => Some(Self::UnbindChildrenInProgress),
455 12 => Some(Self::UnsupportedArgs),
456 _ => None,
457 }
458 }
459
460 #[inline]
461 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
462 match prim {
463 1 => Self::Internal,
464 2 => Self::NodeRemoved,
465 3 => Self::NameMissing,
466 4 => Self::NameInvalid,
467 5 => Self::NameAlreadyExists,
468 6 => Self::OfferSourceNameMissing,
469 7 => Self::OfferRefExists,
470 8 => Self::SymbolNameMissing,
471 9 => Self::SymbolAddressMissing,
472 10 => Self::SymbolAlreadyExists,
473 11 => Self::UnbindChildrenInProgress,
474 12 => Self::UnsupportedArgs,
475 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
476 }
477 }
478
479 #[inline]
480 pub fn unknown() -> Self {
481 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
482 }
483
484 #[inline]
485 pub const fn into_primitive(self) -> u32 {
486 match self {
487 Self::Internal => 1,
488 Self::NodeRemoved => 2,
489 Self::NameMissing => 3,
490 Self::NameInvalid => 4,
491 Self::NameAlreadyExists => 5,
492 Self::OfferSourceNameMissing => 6,
493 Self::OfferRefExists => 7,
494 Self::SymbolNameMissing => 8,
495 Self::SymbolAddressMissing => 9,
496 Self::SymbolAlreadyExists => 10,
497 Self::UnbindChildrenInProgress => 11,
498 Self::UnsupportedArgs => 12,
499 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
500 }
501 }
502
503 #[inline]
504 pub fn is_unknown(&self) -> bool {
505 match self {
506 Self::__SourceBreaking { unknown_ordinal: _ } => true,
507 _ => false,
508 }
509 }
510}
511
512#[derive(Clone, Debug, PartialEq)]
514pub struct BindRule {
515 pub key: NodePropertyKey,
517 pub condition: Condition,
521 pub values: Vec<NodePropertyValue>,
524}
525
526impl fidl::Persistable for BindRule {}
527
528#[derive(Debug, PartialEq)]
529pub struct DriverStartRequest {
530 pub start_args: DriverStartArgs,
531}
532
533impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DriverStartRequest {}
534
535#[derive(Debug, PartialEq)]
536pub struct NodeAddChildRequest {
537 pub args: NodeAddArgs,
538 pub controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
539 pub node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
540}
541
542impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for NodeAddChildRequest {}
543
544#[derive(Clone, Debug, PartialEq)]
547pub struct NodeProperty {
548 pub key: NodePropertyKey,
551 pub value: NodePropertyValue,
553}
554
555impl fidl::Persistable for NodeProperty {}
556
557#[derive(Clone, Debug, PartialEq)]
558pub struct NodeProperty2 {
559 pub key: String,
561 pub value: NodePropertyValue,
563}
564
565impl fidl::Persistable for NodeProperty2 {}
566
567#[derive(Clone, Debug, PartialEq)]
569pub struct NodePropertyEntry {
570 pub name: String,
572 pub properties: Vec<NodeProperty>,
576}
577
578impl fidl::Persistable for NodePropertyEntry {}
579
580#[derive(Clone, Debug, PartialEq)]
582pub struct NodePropertyEntry2 {
583 pub name: String,
585 pub properties: Vec<NodeProperty2>,
589}
590
591impl fidl::Persistable for NodePropertyEntry2 {}
592
593#[derive(Clone, Debug, PartialEq)]
596pub struct ParentSpec {
597 pub bind_rules: Vec<BindRule>,
599 pub properties: Vec<NodeProperty>,
602}
603
604impl fidl::Persistable for ParentSpec {}
605
606#[derive(Clone, Debug, Default, PartialEq)]
607pub struct BusInfo {
608 pub bus: Option<BusType>,
610 pub address: Option<DeviceAddress>,
612 pub address_stability: Option<DeviceAddressStability>,
614 #[doc(hidden)]
615 pub __source_breaking: fidl::marker::SourceBreaking,
616}
617
618impl fidl::Persistable for BusInfo {}
619
620#[derive(Clone, Debug, Default, PartialEq)]
622pub struct CompositeDriverInfo {
623 pub composite_name: Option<String>,
625 pub driver_info: Option<DriverInfo>,
627 #[doc(hidden)]
628 pub __source_breaking: fidl::marker::SourceBreaking,
629}
630
631impl fidl::Persistable for CompositeDriverInfo {}
632
633#[derive(Clone, Debug, Default, PartialEq)]
635pub struct CompositeDriverMatch {
636 pub composite_driver: Option<CompositeDriverInfo>,
638 pub parent_names: Option<Vec<String>>,
641 pub primary_parent_index: Option<u32>,
644 #[doc(hidden)]
645 pub __source_breaking: fidl::marker::SourceBreaking,
646}
647
648impl fidl::Persistable for CompositeDriverMatch {}
649
650#[derive(Clone, Debug, Default, PartialEq)]
652pub struct CompositeInfo {
653 pub spec: Option<CompositeNodeSpec>,
655 pub matched_driver: Option<CompositeDriverMatch>,
658 #[doc(hidden)]
659 pub __source_breaking: fidl::marker::SourceBreaking,
660}
661
662impl fidl::Persistable for CompositeInfo {}
663
664#[derive(Clone, Debug, Default, PartialEq)]
666pub struct CompositeNodeSpec {
667 pub name: Option<String>,
669 pub parents: Option<Vec<ParentSpec>>,
672 #[doc(hidden)]
673 pub __source_breaking: fidl::marker::SourceBreaking,
674}
675
676impl fidl::Persistable for CompositeNodeSpec {}
677
678#[derive(Clone, Debug, Default, PartialEq)]
680pub struct CompositeParent {
681 pub composite: Option<CompositeInfo>,
683 pub index: Option<u32>,
685 #[doc(hidden)]
686 pub __source_breaking: fidl::marker::SourceBreaking,
687}
688
689impl fidl::Persistable for CompositeParent {}
690
691#[derive(Debug, Default, PartialEq)]
692pub struct DevfsAddArgs {
693 pub connector: Option<fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>>,
697 pub class_name: Option<String>,
702 pub inspect: Option<fidl::Vmo>,
705 pub connector_supports: Option<fidl_fuchsia_device_fs::ConnectionType>,
710 pub controller_connector:
716 Option<fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>>,
717 #[doc(hidden)]
718 pub __source_breaking: fidl::marker::SourceBreaking,
719}
720
721impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DevfsAddArgs {}
722
723#[derive(Clone, Debug, Default, PartialEq)]
725pub struct DeviceCategory {
726 pub category: Option<String>,
727 pub subcategory: Option<String>,
728 #[doc(hidden)]
729 pub __source_breaking: fidl::marker::SourceBreaking,
730}
731
732impl fidl::Persistable for DeviceCategory {}
733
734#[derive(Clone, Debug, Default, PartialEq)]
736pub struct DriverInfo {
737 pub url: Option<String>,
739 pub name: Option<String>,
742 pub colocate: Option<bool>,
744 pub package_type: Option<DriverPackageType>,
746 pub is_fallback: Option<bool>,
750 pub device_categories: Option<Vec<DeviceCategory>>,
752 pub bind_rules_bytecode: Option<Vec<u8>>,
756 pub driver_framework_version: Option<u8>,
760 pub is_disabled: Option<bool>,
762 #[doc(hidden)]
763 pub __source_breaking: fidl::marker::SourceBreaking,
764}
765
766impl fidl::Persistable for DriverInfo {}
767
768#[derive(Debug, Default, PartialEq)]
770pub struct DriverStartArgs {
771 pub node: Option<fidl::endpoints::ClientEnd<NodeMarker>>,
773 pub symbols: Option<Vec<NodeSymbol>>,
777 pub url: Option<String>,
780 pub program: Option<fidl_fuchsia_data::Dictionary>,
796 pub incoming: Option<Vec<fidl_fuchsia_component_runner::ComponentNamespaceEntry>>,
798 pub outgoing_dir: Option<fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>>,
800 pub config: Option<fidl::Vmo>,
802 pub node_name: Option<String>,
804 pub node_properties: Option<Vec<NodePropertyEntry>>,
813 pub node_offers: Option<Vec<Offer>>,
815 pub node_token: Option<fidl::Event>,
818 pub node_properties_2: Option<Vec<NodePropertyEntry2>>,
819 #[doc(hidden)]
820 pub __source_breaking: fidl::marker::SourceBreaking,
821}
822
823impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DriverStartArgs {}
824
825#[derive(Debug, Default, PartialEq)]
827pub struct NodeAddArgs {
828 pub name: Option<String>,
830 pub offers: Option<Vec<fidl_fuchsia_component_decl::Offer>>,
834 pub symbols: Option<Vec<NodeSymbol>>,
836 pub properties: Option<Vec<NodeProperty>>,
839 pub devfs_args: Option<DevfsAddArgs>,
841 pub offers2: Option<Vec<Offer>>,
845 pub bus_info: Option<BusInfo>,
848 pub properties2: Option<Vec<NodeProperty2>>,
851 #[doc(hidden)]
852 pub __source_breaking: fidl::marker::SourceBreaking,
853}
854
855impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for NodeAddArgs {}
856
857#[derive(Clone, Debug, Default, PartialEq)]
858pub struct NodeControllerRequestBindRequest {
859 pub force_rebind: Option<bool>,
862 pub driver_url_suffix: Option<String>,
866 #[doc(hidden)]
867 pub __source_breaking: fidl::marker::SourceBreaking,
868}
869
870impl fidl::Persistable for NodeControllerRequestBindRequest {}
871
872#[derive(Clone, Debug, Default, PartialEq)]
875pub struct NodeSymbol {
876 pub name: Option<String>,
878 pub address: Option<u64>,
880 pub module_name: Option<String>,
883 #[doc(hidden)]
884 pub __source_breaking: fidl::marker::SourceBreaking,
885}
886
887impl fidl::Persistable for NodeSymbol {}
888
889#[derive(Clone, Debug)]
890pub enum DeviceAddress {
891 IntValue(u8),
893 ArrayIntValue(Vec<u8>),
895 CharIntValue(String),
897 ArrayCharIntValue(Vec<String>),
899 StringValue(String),
901 #[doc(hidden)]
902 __SourceBreaking { unknown_ordinal: u64 },
903}
904
905#[macro_export]
907macro_rules! DeviceAddressUnknown {
908 () => {
909 _
910 };
911}
912
913impl PartialEq for DeviceAddress {
915 fn eq(&self, other: &Self) -> bool {
916 match (self, other) {
917 (Self::IntValue(x), Self::IntValue(y)) => *x == *y,
918 (Self::ArrayIntValue(x), Self::ArrayIntValue(y)) => *x == *y,
919 (Self::CharIntValue(x), Self::CharIntValue(y)) => *x == *y,
920 (Self::ArrayCharIntValue(x), Self::ArrayCharIntValue(y)) => *x == *y,
921 (Self::StringValue(x), Self::StringValue(y)) => *x == *y,
922 _ => false,
923 }
924 }
925}
926
927impl DeviceAddress {
928 #[inline]
929 pub fn ordinal(&self) -> u64 {
930 match *self {
931 Self::IntValue(_) => 1,
932 Self::ArrayIntValue(_) => 2,
933 Self::CharIntValue(_) => 3,
934 Self::ArrayCharIntValue(_) => 4,
935 Self::StringValue(_) => 5,
936 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
937 }
938 }
939
940 #[inline]
941 pub fn unknown_variant_for_testing() -> Self {
942 Self::__SourceBreaking { unknown_ordinal: 0 }
943 }
944
945 #[inline]
946 pub fn is_unknown(&self) -> bool {
947 match self {
948 Self::__SourceBreaking { .. } => true,
949 _ => false,
950 }
951 }
952}
953
954impl fidl::Persistable for DeviceAddress {}
955
956#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
957pub enum NodePropertyKey {
958 IntValue(u32),
960 StringValue(String),
961}
962
963impl NodePropertyKey {
964 #[inline]
965 pub fn ordinal(&self) -> u64 {
966 match *self {
967 Self::IntValue(_) => 1,
968 Self::StringValue(_) => 2,
969 }
970 }
971
972 #[deprecated = "Strict unions should not use `is_unknown`"]
973 #[inline]
974 pub fn is_unknown(&self) -> bool {
975 false
976 }
977}
978
979impl fidl::Persistable for NodePropertyKey {}
980
981#[derive(Clone, Debug)]
982pub enum NodePropertyValue {
983 IntValue(u32),
984 StringValue(String),
985 BoolValue(bool),
986 EnumValue(String),
987 #[doc(hidden)]
988 __SourceBreaking {
989 unknown_ordinal: u64,
990 },
991}
992
993#[macro_export]
995macro_rules! NodePropertyValueUnknown {
996 () => {
997 _
998 };
999}
1000
1001impl PartialEq for NodePropertyValue {
1003 fn eq(&self, other: &Self) -> bool {
1004 match (self, other) {
1005 (Self::IntValue(x), Self::IntValue(y)) => *x == *y,
1006 (Self::StringValue(x), Self::StringValue(y)) => *x == *y,
1007 (Self::BoolValue(x), Self::BoolValue(y)) => *x == *y,
1008 (Self::EnumValue(x), Self::EnumValue(y)) => *x == *y,
1009 _ => false,
1010 }
1011 }
1012}
1013
1014impl NodePropertyValue {
1015 #[inline]
1016 pub fn ordinal(&self) -> u64 {
1017 match *self {
1018 Self::IntValue(_) => 1,
1019 Self::StringValue(_) => 2,
1020 Self::BoolValue(_) => 3,
1021 Self::EnumValue(_) => 4,
1022 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1023 }
1024 }
1025
1026 #[inline]
1027 pub fn unknown_variant_for_testing() -> Self {
1028 Self::__SourceBreaking { unknown_ordinal: 0 }
1029 }
1030
1031 #[inline]
1032 pub fn is_unknown(&self) -> bool {
1033 match self {
1034 Self::__SourceBreaking { .. } => true,
1035 _ => false,
1036 }
1037 }
1038}
1039
1040impl fidl::Persistable for NodePropertyValue {}
1041
1042#[derive(Clone, Debug)]
1043pub enum Offer {
1044 ZirconTransport(fidl_fuchsia_component_decl::Offer),
1045 DriverTransport(fidl_fuchsia_component_decl::Offer),
1046 #[doc(hidden)]
1047 __SourceBreaking {
1048 unknown_ordinal: u64,
1049 },
1050}
1051
1052#[macro_export]
1054macro_rules! OfferUnknown {
1055 () => {
1056 _
1057 };
1058}
1059
1060impl PartialEq for Offer {
1062 fn eq(&self, other: &Self) -> bool {
1063 match (self, other) {
1064 (Self::ZirconTransport(x), Self::ZirconTransport(y)) => *x == *y,
1065 (Self::DriverTransport(x), Self::DriverTransport(y)) => *x == *y,
1066 _ => false,
1067 }
1068 }
1069}
1070
1071impl Offer {
1072 #[inline]
1073 pub fn ordinal(&self) -> u64 {
1074 match *self {
1075 Self::ZirconTransport(_) => 1,
1076 Self::DriverTransport(_) => 2,
1077 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1078 }
1079 }
1080
1081 #[inline]
1082 pub fn unknown_variant_for_testing() -> Self {
1083 Self::__SourceBreaking { unknown_ordinal: 0 }
1084 }
1085
1086 #[inline]
1087 pub fn is_unknown(&self) -> bool {
1088 match self {
1089 Self::__SourceBreaking { .. } => true,
1090 _ => false,
1091 }
1092 }
1093}
1094
1095impl fidl::Persistable for Offer {}
1096
1097#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1098pub struct CompositeNodeManagerMarker;
1099
1100impl fidl::endpoints::ProtocolMarker for CompositeNodeManagerMarker {
1101 type Proxy = CompositeNodeManagerProxy;
1102 type RequestStream = CompositeNodeManagerRequestStream;
1103 #[cfg(target_os = "fuchsia")]
1104 type SynchronousProxy = CompositeNodeManagerSynchronousProxy;
1105
1106 const DEBUG_NAME: &'static str = "fuchsia.driver.framework.CompositeNodeManager";
1107}
1108impl fidl::endpoints::DiscoverableProtocolMarker for CompositeNodeManagerMarker {}
1109pub type CompositeNodeManagerAddSpecResult = Result<(), CompositeNodeSpecError>;
1110
1111pub trait CompositeNodeManagerProxyInterface: Send + Sync {
1112 type AddSpecResponseFut: std::future::Future<Output = Result<CompositeNodeManagerAddSpecResult, fidl::Error>>
1113 + Send;
1114 fn r#add_spec(&self, payload: &CompositeNodeSpec) -> Self::AddSpecResponseFut;
1115}
1116#[derive(Debug)]
1117#[cfg(target_os = "fuchsia")]
1118pub struct CompositeNodeManagerSynchronousProxy {
1119 client: fidl::client::sync::Client,
1120}
1121
1122#[cfg(target_os = "fuchsia")]
1123impl fidl::endpoints::SynchronousProxy for CompositeNodeManagerSynchronousProxy {
1124 type Proxy = CompositeNodeManagerProxy;
1125 type Protocol = CompositeNodeManagerMarker;
1126
1127 fn from_channel(inner: fidl::Channel) -> Self {
1128 Self::new(inner)
1129 }
1130
1131 fn into_channel(self) -> fidl::Channel {
1132 self.client.into_channel()
1133 }
1134
1135 fn as_channel(&self) -> &fidl::Channel {
1136 self.client.as_channel()
1137 }
1138}
1139
1140#[cfg(target_os = "fuchsia")]
1141impl CompositeNodeManagerSynchronousProxy {
1142 pub fn new(channel: fidl::Channel) -> Self {
1143 let protocol_name =
1144 <CompositeNodeManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1145 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
1146 }
1147
1148 pub fn into_channel(self) -> fidl::Channel {
1149 self.client.into_channel()
1150 }
1151
1152 pub fn wait_for_event(
1155 &self,
1156 deadline: zx::MonotonicInstant,
1157 ) -> Result<CompositeNodeManagerEvent, fidl::Error> {
1158 CompositeNodeManagerEvent::decode(self.client.wait_for_event(deadline)?)
1159 }
1160
1161 pub fn r#add_spec(
1163 &self,
1164 mut payload: &CompositeNodeSpec,
1165 ___deadline: zx::MonotonicInstant,
1166 ) -> Result<CompositeNodeManagerAddSpecResult, fidl::Error> {
1167 let _response =
1168 self.client
1169 .send_query::<CompositeNodeSpec, fidl::encoding::FlexibleResultType<
1170 fidl::encoding::EmptyStruct,
1171 CompositeNodeSpecError,
1172 >>(
1173 payload,
1174 0x524e353c8130cc74,
1175 fidl::encoding::DynamicFlags::FLEXIBLE,
1176 ___deadline,
1177 )?
1178 .into_result::<CompositeNodeManagerMarker>("add_spec")?;
1179 Ok(_response.map(|x| x))
1180 }
1181}
1182
1183#[derive(Debug, Clone)]
1184pub struct CompositeNodeManagerProxy {
1185 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1186}
1187
1188impl fidl::endpoints::Proxy for CompositeNodeManagerProxy {
1189 type Protocol = CompositeNodeManagerMarker;
1190
1191 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1192 Self::new(inner)
1193 }
1194
1195 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1196 self.client.into_channel().map_err(|client| Self { client })
1197 }
1198
1199 fn as_channel(&self) -> &::fidl::AsyncChannel {
1200 self.client.as_channel()
1201 }
1202}
1203
1204impl CompositeNodeManagerProxy {
1205 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1207 let protocol_name =
1208 <CompositeNodeManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1209 Self { client: fidl::client::Client::new(channel, protocol_name) }
1210 }
1211
1212 pub fn take_event_stream(&self) -> CompositeNodeManagerEventStream {
1218 CompositeNodeManagerEventStream { event_receiver: self.client.take_event_receiver() }
1219 }
1220
1221 pub fn r#add_spec(
1223 &self,
1224 mut payload: &CompositeNodeSpec,
1225 ) -> fidl::client::QueryResponseFut<
1226 CompositeNodeManagerAddSpecResult,
1227 fidl::encoding::DefaultFuchsiaResourceDialect,
1228 > {
1229 CompositeNodeManagerProxyInterface::r#add_spec(self, payload)
1230 }
1231}
1232
1233impl CompositeNodeManagerProxyInterface for CompositeNodeManagerProxy {
1234 type AddSpecResponseFut = fidl::client::QueryResponseFut<
1235 CompositeNodeManagerAddSpecResult,
1236 fidl::encoding::DefaultFuchsiaResourceDialect,
1237 >;
1238 fn r#add_spec(&self, mut payload: &CompositeNodeSpec) -> Self::AddSpecResponseFut {
1239 fn _decode(
1240 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1241 ) -> Result<CompositeNodeManagerAddSpecResult, fidl::Error> {
1242 let _response = fidl::client::decode_transaction_body::<
1243 fidl::encoding::FlexibleResultType<
1244 fidl::encoding::EmptyStruct,
1245 CompositeNodeSpecError,
1246 >,
1247 fidl::encoding::DefaultFuchsiaResourceDialect,
1248 0x524e353c8130cc74,
1249 >(_buf?)?
1250 .into_result::<CompositeNodeManagerMarker>("add_spec")?;
1251 Ok(_response.map(|x| x))
1252 }
1253 self.client.send_query_and_decode::<CompositeNodeSpec, CompositeNodeManagerAddSpecResult>(
1254 payload,
1255 0x524e353c8130cc74,
1256 fidl::encoding::DynamicFlags::FLEXIBLE,
1257 _decode,
1258 )
1259 }
1260}
1261
1262pub struct CompositeNodeManagerEventStream {
1263 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1264}
1265
1266impl std::marker::Unpin for CompositeNodeManagerEventStream {}
1267
1268impl futures::stream::FusedStream for CompositeNodeManagerEventStream {
1269 fn is_terminated(&self) -> bool {
1270 self.event_receiver.is_terminated()
1271 }
1272}
1273
1274impl futures::Stream for CompositeNodeManagerEventStream {
1275 type Item = Result<CompositeNodeManagerEvent, fidl::Error>;
1276
1277 fn poll_next(
1278 mut self: std::pin::Pin<&mut Self>,
1279 cx: &mut std::task::Context<'_>,
1280 ) -> std::task::Poll<Option<Self::Item>> {
1281 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1282 &mut self.event_receiver,
1283 cx
1284 )?) {
1285 Some(buf) => std::task::Poll::Ready(Some(CompositeNodeManagerEvent::decode(buf))),
1286 None => std::task::Poll::Ready(None),
1287 }
1288 }
1289}
1290
1291#[derive(Debug)]
1292pub enum CompositeNodeManagerEvent {
1293 #[non_exhaustive]
1294 _UnknownEvent {
1295 ordinal: u64,
1297 },
1298}
1299
1300impl CompositeNodeManagerEvent {
1301 fn decode(
1303 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1304 ) -> Result<CompositeNodeManagerEvent, fidl::Error> {
1305 let (bytes, _handles) = buf.split_mut();
1306 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1307 debug_assert_eq!(tx_header.tx_id, 0);
1308 match tx_header.ordinal {
1309 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1310 Ok(CompositeNodeManagerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
1311 }
1312 _ => Err(fidl::Error::UnknownOrdinal {
1313 ordinal: tx_header.ordinal,
1314 protocol_name:
1315 <CompositeNodeManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1316 }),
1317 }
1318 }
1319}
1320
1321pub struct CompositeNodeManagerRequestStream {
1323 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1324 is_terminated: bool,
1325}
1326
1327impl std::marker::Unpin for CompositeNodeManagerRequestStream {}
1328
1329impl futures::stream::FusedStream for CompositeNodeManagerRequestStream {
1330 fn is_terminated(&self) -> bool {
1331 self.is_terminated
1332 }
1333}
1334
1335impl fidl::endpoints::RequestStream for CompositeNodeManagerRequestStream {
1336 type Protocol = CompositeNodeManagerMarker;
1337 type ControlHandle = CompositeNodeManagerControlHandle;
1338
1339 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1340 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1341 }
1342
1343 fn control_handle(&self) -> Self::ControlHandle {
1344 CompositeNodeManagerControlHandle { inner: self.inner.clone() }
1345 }
1346
1347 fn into_inner(
1348 self,
1349 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1350 {
1351 (self.inner, self.is_terminated)
1352 }
1353
1354 fn from_inner(
1355 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1356 is_terminated: bool,
1357 ) -> Self {
1358 Self { inner, is_terminated }
1359 }
1360}
1361
1362impl futures::Stream for CompositeNodeManagerRequestStream {
1363 type Item = Result<CompositeNodeManagerRequest, fidl::Error>;
1364
1365 fn poll_next(
1366 mut self: std::pin::Pin<&mut Self>,
1367 cx: &mut std::task::Context<'_>,
1368 ) -> std::task::Poll<Option<Self::Item>> {
1369 let this = &mut *self;
1370 if this.inner.check_shutdown(cx) {
1371 this.is_terminated = true;
1372 return std::task::Poll::Ready(None);
1373 }
1374 if this.is_terminated {
1375 panic!("polled CompositeNodeManagerRequestStream after completion");
1376 }
1377 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1378 |bytes, handles| {
1379 match this.inner.channel().read_etc(cx, bytes, handles) {
1380 std::task::Poll::Ready(Ok(())) => {}
1381 std::task::Poll::Pending => return std::task::Poll::Pending,
1382 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1383 this.is_terminated = true;
1384 return std::task::Poll::Ready(None);
1385 }
1386 std::task::Poll::Ready(Err(e)) => {
1387 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1388 e.into(),
1389 ))))
1390 }
1391 }
1392
1393 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1395
1396 std::task::Poll::Ready(Some(match header.ordinal {
1397 0x524e353c8130cc74 => {
1398 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1399 let mut req = fidl::new_empty!(CompositeNodeSpec, fidl::encoding::DefaultFuchsiaResourceDialect);
1400 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CompositeNodeSpec>(&header, _body_bytes, handles, &mut req)?;
1401 let control_handle = CompositeNodeManagerControlHandle {
1402 inner: this.inner.clone(),
1403 };
1404 Ok(CompositeNodeManagerRequest::AddSpec {payload: req,
1405 responder: CompositeNodeManagerAddSpecResponder {
1406 control_handle: std::mem::ManuallyDrop::new(control_handle),
1407 tx_id: header.tx_id,
1408 },
1409 })
1410 }
1411 _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1412 Ok(CompositeNodeManagerRequest::_UnknownMethod {
1413 ordinal: header.ordinal,
1414 control_handle: CompositeNodeManagerControlHandle { inner: this.inner.clone() },
1415 method_type: fidl::MethodType::OneWay,
1416 })
1417 }
1418 _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1419 this.inner.send_framework_err(
1420 fidl::encoding::FrameworkErr::UnknownMethod,
1421 header.tx_id,
1422 header.ordinal,
1423 header.dynamic_flags(),
1424 (bytes, handles),
1425 )?;
1426 Ok(CompositeNodeManagerRequest::_UnknownMethod {
1427 ordinal: header.ordinal,
1428 control_handle: CompositeNodeManagerControlHandle { inner: this.inner.clone() },
1429 method_type: fidl::MethodType::TwoWay,
1430 })
1431 }
1432 _ => Err(fidl::Error::UnknownOrdinal {
1433 ordinal: header.ordinal,
1434 protocol_name: <CompositeNodeManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1435 }),
1436 }))
1437 },
1438 )
1439 }
1440}
1441
1442#[derive(Debug)]
1448pub enum CompositeNodeManagerRequest {
1449 AddSpec { payload: CompositeNodeSpec, responder: CompositeNodeManagerAddSpecResponder },
1451 #[non_exhaustive]
1453 _UnknownMethod {
1454 ordinal: u64,
1456 control_handle: CompositeNodeManagerControlHandle,
1457 method_type: fidl::MethodType,
1458 },
1459}
1460
1461impl CompositeNodeManagerRequest {
1462 #[allow(irrefutable_let_patterns)]
1463 pub fn into_add_spec(
1464 self,
1465 ) -> Option<(CompositeNodeSpec, CompositeNodeManagerAddSpecResponder)> {
1466 if let CompositeNodeManagerRequest::AddSpec { payload, responder } = self {
1467 Some((payload, responder))
1468 } else {
1469 None
1470 }
1471 }
1472
1473 pub fn method_name(&self) -> &'static str {
1475 match *self {
1476 CompositeNodeManagerRequest::AddSpec { .. } => "add_spec",
1477 CompositeNodeManagerRequest::_UnknownMethod {
1478 method_type: fidl::MethodType::OneWay,
1479 ..
1480 } => "unknown one-way method",
1481 CompositeNodeManagerRequest::_UnknownMethod {
1482 method_type: fidl::MethodType::TwoWay,
1483 ..
1484 } => "unknown two-way method",
1485 }
1486 }
1487}
1488
1489#[derive(Debug, Clone)]
1490pub struct CompositeNodeManagerControlHandle {
1491 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1492}
1493
1494impl fidl::endpoints::ControlHandle for CompositeNodeManagerControlHandle {
1495 fn shutdown(&self) {
1496 self.inner.shutdown()
1497 }
1498 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1499 self.inner.shutdown_with_epitaph(status)
1500 }
1501
1502 fn is_closed(&self) -> bool {
1503 self.inner.channel().is_closed()
1504 }
1505 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1506 self.inner.channel().on_closed()
1507 }
1508
1509 #[cfg(target_os = "fuchsia")]
1510 fn signal_peer(
1511 &self,
1512 clear_mask: zx::Signals,
1513 set_mask: zx::Signals,
1514 ) -> Result<(), zx_status::Status> {
1515 use fidl::Peered;
1516 self.inner.channel().signal_peer(clear_mask, set_mask)
1517 }
1518}
1519
1520impl CompositeNodeManagerControlHandle {}
1521
1522#[must_use = "FIDL methods require a response to be sent"]
1523#[derive(Debug)]
1524pub struct CompositeNodeManagerAddSpecResponder {
1525 control_handle: std::mem::ManuallyDrop<CompositeNodeManagerControlHandle>,
1526 tx_id: u32,
1527}
1528
1529impl std::ops::Drop for CompositeNodeManagerAddSpecResponder {
1533 fn drop(&mut self) {
1534 self.control_handle.shutdown();
1535 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1537 }
1538}
1539
1540impl fidl::endpoints::Responder for CompositeNodeManagerAddSpecResponder {
1541 type ControlHandle = CompositeNodeManagerControlHandle;
1542
1543 fn control_handle(&self) -> &CompositeNodeManagerControlHandle {
1544 &self.control_handle
1545 }
1546
1547 fn drop_without_shutdown(mut self) {
1548 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1550 std::mem::forget(self);
1552 }
1553}
1554
1555impl CompositeNodeManagerAddSpecResponder {
1556 pub fn send(self, mut result: Result<(), CompositeNodeSpecError>) -> Result<(), fidl::Error> {
1560 let _result = self.send_raw(result);
1561 if _result.is_err() {
1562 self.control_handle.shutdown();
1563 }
1564 self.drop_without_shutdown();
1565 _result
1566 }
1567
1568 pub fn send_no_shutdown_on_err(
1570 self,
1571 mut result: Result<(), CompositeNodeSpecError>,
1572 ) -> Result<(), fidl::Error> {
1573 let _result = self.send_raw(result);
1574 self.drop_without_shutdown();
1575 _result
1576 }
1577
1578 fn send_raw(&self, mut result: Result<(), CompositeNodeSpecError>) -> Result<(), fidl::Error> {
1579 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
1580 fidl::encoding::EmptyStruct,
1581 CompositeNodeSpecError,
1582 >>(
1583 fidl::encoding::FlexibleResult::new(result),
1584 self.tx_id,
1585 0x524e353c8130cc74,
1586 fidl::encoding::DynamicFlags::FLEXIBLE,
1587 )
1588 }
1589}
1590
1591#[cfg(feature = "driver")]
1592#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1593pub struct DriverMarker;
1594
1595#[cfg(feature = "driver")]
1596impl fidl_driver::endpoints::DriverProtocolMarker for DriverMarker {
1597 const DEBUG_NAME: &'static str = "(anonymous) Driver";
1598}
1599pub type DriverStartResult = Result<(), i32>;
1600
1601#[cfg(feature = "driver")]
1609#[derive(Debug)]
1610pub enum DriverRequest {
1611 Start { start_args: DriverStartArgs, responder: DriverStartResponder },
1625 Stop {},
1630 #[non_exhaustive]
1632 _UnknownMethod {
1633 ordinal: u64,
1635 method_type: fidl::MethodType,
1636 },
1637}
1638
1639#[cfg(feature = "driver")]
1640impl DriverRequest {
1641 #[allow(irrefutable_let_patterns)]
1642 pub fn into_start(self) -> Option<(DriverStartArgs, DriverStartResponder)> {
1643 if let DriverRequest::Start { start_args, responder } = self {
1644 Some((start_args, responder))
1645 } else {
1646 None
1647 }
1648 }
1649
1650 #[allow(irrefutable_let_patterns)]
1651 pub fn into_stop(self) -> Option<()> {
1652 if let DriverRequest::Stop {} = self {
1653 Some(())
1654 } else {
1655 None
1656 }
1657 }
1658
1659 pub fn new_start(self, start_args: DriverStartArgs, tx_id: u32) -> Self {
1660 Self::Start { start_args, responder: DriverStartResponder { tx_id } }
1661 }
1662
1663 pub fn new_stop(self) -> Self {
1664 Self::Stop {}
1665 }
1666
1667 pub fn r#start_as_message(
1668 arena: fdf::Arena,
1669 mut start_args: DriverStartArgs,
1670 tx_id: u32,
1671 ) -> Result<fdf::Message<[u8]>, fidl::Error> {
1672 let ordinal = 0x27be00ae42aa60c2;
1673 let dynamic_flags = fidl::encoding::DynamicFlags::FLEXIBLE;
1674 let body = (&mut start_args,);
1675 let msg = fidl::encoding::TransactionMessage {
1676 header: fidl::encoding::TransactionHeader::new(tx_id, ordinal, dynamic_flags),
1677 body,
1678 };
1679 fidl::encoding::with_tls_encoded::<
1680 fidl::encoding::TransactionMessageType<DriverStartRequest>,
1681 fidl::encoding::DefaultFuchsiaResourceDialect,
1682 fdf::Message<[u8]>,
1683 >(msg, |bytes, mut handles| {
1684 let handles = arena.insert_from_iter(
1685 std::mem::take(handles)
1686 .into_iter()
1687 .map(fidl_driver::encoding::mixed_from_handle_disposition),
1688 );
1689 Ok(fdf::Message::new(&arena, Some(arena.insert_slice(bytes)), Some(handles)))
1690 })
1691 }
1692
1693 pub fn r#stop_as_message(arena: fdf::Arena) -> Result<fdf::Message<[u8]>, fidl::Error> {
1694 let tx_id = 0;
1695 let ordinal = 0x4b96c67e29b3843d;
1696 let dynamic_flags = fidl::encoding::DynamicFlags::FLEXIBLE;
1697 let body = ();
1698 let msg = fidl::encoding::TransactionMessage {
1699 header: fidl::encoding::TransactionHeader::new(tx_id, ordinal, dynamic_flags),
1700 body,
1701 };
1702 fidl::encoding::with_tls_encoded::<
1703 fidl::encoding::TransactionMessageType<fidl::encoding::EmptyPayload>,
1704 fidl::encoding::DefaultFuchsiaResourceDialect,
1705 fdf::Message<[u8]>,
1706 >(msg, |bytes, mut handles| {
1707 let handles = arena.insert_from_iter(
1708 std::mem::take(handles)
1709 .into_iter()
1710 .map(fidl_driver::encoding::mixed_from_handle_disposition),
1711 );
1712 Ok(fdf::Message::new(&arena, Some(arena.insert_slice(bytes)), Some(handles)))
1713 })
1714 }
1715
1716 #[allow(irrefutable_let_patterns)]
1717 pub fn read_from(bytes: &[u8], _handles: &mut [zx::HandleInfo]) -> Result<Self, fidl::Error> {
1718 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1719
1720 match header.ordinal {
1721 0x27be00ae42aa60c2 => {
1722 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1723 let mut req = fidl::new_empty!(
1724 DriverStartRequest,
1725 fidl::encoding::DefaultFuchsiaResourceDialect
1726 );
1727 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DriverStartRequest>(&header, _body_bytes, _handles, &mut req)?;
1728 Ok(DriverRequest::Start {
1729 start_args: req.start_args,
1730
1731 responder: DriverStartResponder { tx_id: header.tx_id },
1732 })
1733 }
1734 0x4b96c67e29b3843d => {
1735 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
1736 let mut req = fidl::new_empty!(
1737 fidl::encoding::EmptyPayload,
1738 fidl::encoding::DefaultFuchsiaResourceDialect
1739 );
1740 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, _handles, &mut req)?;
1741 Ok(DriverRequest::Stop {})
1742 }
1743 _ if header.tx_id == 0
1744 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
1745 {
1746 Ok(DriverRequest::_UnknownMethod {
1747 ordinal: header.ordinal,
1748 method_type: fidl::MethodType::OneWay,
1749 })
1750 }
1751 _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1752 Ok(DriverRequest::_UnknownMethod {
1753 ordinal: header.ordinal,
1754 method_type: fidl::MethodType::TwoWay,
1755 })
1756 }
1757 _ => Err(fidl::Error::UnknownOrdinal {
1758 ordinal: header.ordinal,
1759 protocol_name:
1760 <DriverMarker as fidl_driver::endpoints::DriverProtocolMarker>::DEBUG_NAME,
1761 }),
1762 }
1763 }
1764
1765 pub fn read_from_message(
1766 mut message: fdf::Message<[u8]>,
1767 ) -> Result<(fdf::Arena, Self), fidl::Error> {
1768 let (arena, Some(body), Some(handles)) = message.take_arena_boxes() else {
1769 return Err(fidl::Error::Invalid);
1770 };
1771 let mut handles = arena.try_insert_from_iter(
1772 handles
1773 .into_iter()
1774 .map(|handle| unsafe { fidl_driver::encoding::mixed_into_handle_info(handle) }),
1775 );
1776 let res = match handles {
1777 Ok(ref mut handles) => Self::read_from(&*body, handles)?,
1778 Err(_) => return Err(fidl::Error::Invalid),
1779 };
1780 std::mem::drop((body, handles));
1781 Ok((message.take_arena(), res))
1782 }
1783
1784 pub fn method_name(&self) -> &'static str {
1786 match *self {
1787 DriverRequest::Start { .. } => "start",
1788 DriverRequest::Stop { .. } => "stop",
1789 DriverRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
1790 "unknown one-way method"
1791 }
1792 DriverRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
1793 "unknown two-way method"
1794 }
1795 }
1796 }
1797}
1798
1799#[cfg(feature = "driver")]
1801impl std::convert::TryFrom<fdf::Message<[u8]>> for DriverRequest {
1802 type Error = fidl::Error;
1803 fn try_from(msg: fdf::Message<[u8]>) -> Result<DriverRequest, fidl::Error> {
1804 Ok(DriverRequest::read_from_message(msg)?.1)
1805 }
1806}
1807
1808#[must_use = "FIDL methods require a response to be sent"]
1809#[cfg(feature = "driver")]
1810#[derive(Debug)]
1811pub struct DriverStartResponder {
1812 tx_id: u32,
1813}
1814
1815#[cfg(feature = "driver")]
1816impl DriverStartResponder {
1817 pub fn send_response(
1818 &self,
1819 server_handle: &fdf::Channel<[u8]>,
1820 mut result: Result<(), i32>,
1821 ) -> Result<(), fidl::Error> {
1822 let msg = fidl::encoding::TransactionMessage {
1823 header: fidl::encoding::TransactionHeader::new(
1824 self.tx_id,
1825 0x27be00ae42aa60c2,
1826 fidl::encoding::DynamicFlags::FLEXIBLE,
1827 ),
1828 body: fidl::encoding::FlexibleResult::new(result),
1829 };
1830 fidl::encoding::with_tls_encoded::<
1831 fidl::encoding::TransactionMessageType<
1832 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, i32>,
1833 >,
1834 fidl::encoding::DefaultFuchsiaResourceDialect,
1835 (),
1836 >(msg, |body, _handles| {
1837 server_handle
1838 .write_with_data(fdf::Arena::new(), |arena| arena.insert_slice(&body))
1839 .unwrap();
1840 Ok(())
1841 })
1842 }
1843}
1844
1845#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1846pub struct NodeMarker;
1847
1848impl fidl::endpoints::ProtocolMarker for NodeMarker {
1849 type Proxy = NodeProxy;
1850 type RequestStream = NodeRequestStream;
1851 #[cfg(target_os = "fuchsia")]
1852 type SynchronousProxy = NodeSynchronousProxy;
1853
1854 const DEBUG_NAME: &'static str = "(anonymous) Node";
1855}
1856pub type NodeAddChildResult = Result<(), NodeError>;
1857
1858pub trait NodeProxyInterface: Send + Sync {
1859 type AddChildResponseFut: std::future::Future<Output = Result<NodeAddChildResult, fidl::Error>>
1860 + Send;
1861 fn r#add_child(
1862 &self,
1863 args: NodeAddArgs,
1864 controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
1865 node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
1866 ) -> Self::AddChildResponseFut;
1867}
1868#[derive(Debug)]
1869#[cfg(target_os = "fuchsia")]
1870pub struct NodeSynchronousProxy {
1871 client: fidl::client::sync::Client,
1872}
1873
1874#[cfg(target_os = "fuchsia")]
1875impl fidl::endpoints::SynchronousProxy for NodeSynchronousProxy {
1876 type Proxy = NodeProxy;
1877 type Protocol = NodeMarker;
1878
1879 fn from_channel(inner: fidl::Channel) -> Self {
1880 Self::new(inner)
1881 }
1882
1883 fn into_channel(self) -> fidl::Channel {
1884 self.client.into_channel()
1885 }
1886
1887 fn as_channel(&self) -> &fidl::Channel {
1888 self.client.as_channel()
1889 }
1890}
1891
1892#[cfg(target_os = "fuchsia")]
1893impl NodeSynchronousProxy {
1894 pub fn new(channel: fidl::Channel) -> Self {
1895 let protocol_name = <NodeMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1896 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
1897 }
1898
1899 pub fn into_channel(self) -> fidl::Channel {
1900 self.client.into_channel()
1901 }
1902
1903 pub fn wait_for_event(&self, deadline: zx::MonotonicInstant) -> Result<NodeEvent, fidl::Error> {
1906 NodeEvent::decode(self.client.wait_for_event(deadline)?)
1907 }
1908
1909 pub fn r#add_child(
1915 &self,
1916 mut args: NodeAddArgs,
1917 mut controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
1918 mut node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
1919 ___deadline: zx::MonotonicInstant,
1920 ) -> Result<NodeAddChildResult, fidl::Error> {
1921 let _response = self.client.send_query::<
1922 NodeAddChildRequest,
1923 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, NodeError>,
1924 >(
1925 (&mut args, controller, node,),
1926 0x77d10dff3c1ea129,
1927 fidl::encoding::DynamicFlags::FLEXIBLE,
1928 ___deadline,
1929 )?
1930 .into_result::<NodeMarker>("add_child")?;
1931 Ok(_response.map(|x| x))
1932 }
1933}
1934
1935#[derive(Debug, Clone)]
1936pub struct NodeProxy {
1937 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1938}
1939
1940impl fidl::endpoints::Proxy for NodeProxy {
1941 type Protocol = NodeMarker;
1942
1943 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1944 Self::new(inner)
1945 }
1946
1947 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1948 self.client.into_channel().map_err(|client| Self { client })
1949 }
1950
1951 fn as_channel(&self) -> &::fidl::AsyncChannel {
1952 self.client.as_channel()
1953 }
1954}
1955
1956impl NodeProxy {
1957 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1959 let protocol_name = <NodeMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1960 Self { client: fidl::client::Client::new(channel, protocol_name) }
1961 }
1962
1963 pub fn take_event_stream(&self) -> NodeEventStream {
1969 NodeEventStream { event_receiver: self.client.take_event_receiver() }
1970 }
1971
1972 pub fn r#add_child(
1978 &self,
1979 mut args: NodeAddArgs,
1980 mut controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
1981 mut node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
1982 ) -> fidl::client::QueryResponseFut<
1983 NodeAddChildResult,
1984 fidl::encoding::DefaultFuchsiaResourceDialect,
1985 > {
1986 NodeProxyInterface::r#add_child(self, args, controller, node)
1987 }
1988}
1989
1990impl NodeProxyInterface for NodeProxy {
1991 type AddChildResponseFut = fidl::client::QueryResponseFut<
1992 NodeAddChildResult,
1993 fidl::encoding::DefaultFuchsiaResourceDialect,
1994 >;
1995 fn r#add_child(
1996 &self,
1997 mut args: NodeAddArgs,
1998 mut controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
1999 mut node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
2000 ) -> Self::AddChildResponseFut {
2001 fn _decode(
2002 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2003 ) -> Result<NodeAddChildResult, fidl::Error> {
2004 let _response = fidl::client::decode_transaction_body::<
2005 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, NodeError>,
2006 fidl::encoding::DefaultFuchsiaResourceDialect,
2007 0x77d10dff3c1ea129,
2008 >(_buf?)?
2009 .into_result::<NodeMarker>("add_child")?;
2010 Ok(_response.map(|x| x))
2011 }
2012 self.client.send_query_and_decode::<NodeAddChildRequest, NodeAddChildResult>(
2013 (&mut args, controller, node),
2014 0x77d10dff3c1ea129,
2015 fidl::encoding::DynamicFlags::FLEXIBLE,
2016 _decode,
2017 )
2018 }
2019}
2020
2021pub struct NodeEventStream {
2022 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
2023}
2024
2025impl std::marker::Unpin for NodeEventStream {}
2026
2027impl futures::stream::FusedStream for NodeEventStream {
2028 fn is_terminated(&self) -> bool {
2029 self.event_receiver.is_terminated()
2030 }
2031}
2032
2033impl futures::Stream for NodeEventStream {
2034 type Item = Result<NodeEvent, fidl::Error>;
2035
2036 fn poll_next(
2037 mut self: std::pin::Pin<&mut Self>,
2038 cx: &mut std::task::Context<'_>,
2039 ) -> std::task::Poll<Option<Self::Item>> {
2040 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
2041 &mut self.event_receiver,
2042 cx
2043 )?) {
2044 Some(buf) => std::task::Poll::Ready(Some(NodeEvent::decode(buf))),
2045 None => std::task::Poll::Ready(None),
2046 }
2047 }
2048}
2049
2050#[derive(Debug)]
2051pub enum NodeEvent {
2052 #[non_exhaustive]
2053 _UnknownEvent {
2054 ordinal: u64,
2056 },
2057}
2058
2059impl NodeEvent {
2060 fn decode(
2062 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
2063 ) -> Result<NodeEvent, fidl::Error> {
2064 let (bytes, _handles) = buf.split_mut();
2065 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2066 debug_assert_eq!(tx_header.tx_id, 0);
2067 match tx_header.ordinal {
2068 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
2069 Ok(NodeEvent::_UnknownEvent { ordinal: tx_header.ordinal })
2070 }
2071 _ => Err(fidl::Error::UnknownOrdinal {
2072 ordinal: tx_header.ordinal,
2073 protocol_name: <NodeMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2074 }),
2075 }
2076 }
2077}
2078
2079pub struct NodeRequestStream {
2081 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2082 is_terminated: bool,
2083}
2084
2085impl std::marker::Unpin for NodeRequestStream {}
2086
2087impl futures::stream::FusedStream for NodeRequestStream {
2088 fn is_terminated(&self) -> bool {
2089 self.is_terminated
2090 }
2091}
2092
2093impl fidl::endpoints::RequestStream for NodeRequestStream {
2094 type Protocol = NodeMarker;
2095 type ControlHandle = NodeControlHandle;
2096
2097 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
2098 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
2099 }
2100
2101 fn control_handle(&self) -> Self::ControlHandle {
2102 NodeControlHandle { inner: self.inner.clone() }
2103 }
2104
2105 fn into_inner(
2106 self,
2107 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
2108 {
2109 (self.inner, self.is_terminated)
2110 }
2111
2112 fn from_inner(
2113 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2114 is_terminated: bool,
2115 ) -> Self {
2116 Self { inner, is_terminated }
2117 }
2118}
2119
2120impl futures::Stream for NodeRequestStream {
2121 type Item = Result<NodeRequest, fidl::Error>;
2122
2123 fn poll_next(
2124 mut self: std::pin::Pin<&mut Self>,
2125 cx: &mut std::task::Context<'_>,
2126 ) -> std::task::Poll<Option<Self::Item>> {
2127 let this = &mut *self;
2128 if this.inner.check_shutdown(cx) {
2129 this.is_terminated = true;
2130 return std::task::Poll::Ready(None);
2131 }
2132 if this.is_terminated {
2133 panic!("polled NodeRequestStream after completion");
2134 }
2135 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
2136 |bytes, handles| {
2137 match this.inner.channel().read_etc(cx, bytes, handles) {
2138 std::task::Poll::Ready(Ok(())) => {}
2139 std::task::Poll::Pending => return std::task::Poll::Pending,
2140 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
2141 this.is_terminated = true;
2142 return std::task::Poll::Ready(None);
2143 }
2144 std::task::Poll::Ready(Err(e)) => {
2145 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
2146 e.into(),
2147 ))))
2148 }
2149 }
2150
2151 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2153
2154 std::task::Poll::Ready(Some(match header.ordinal {
2155 0x77d10dff3c1ea129 => {
2156 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2157 let mut req = fidl::new_empty!(
2158 NodeAddChildRequest,
2159 fidl::encoding::DefaultFuchsiaResourceDialect
2160 );
2161 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<NodeAddChildRequest>(&header, _body_bytes, handles, &mut req)?;
2162 let control_handle = NodeControlHandle { inner: this.inner.clone() };
2163 Ok(NodeRequest::AddChild {
2164 args: req.args,
2165 controller: req.controller,
2166 node: req.node,
2167
2168 responder: NodeAddChildResponder {
2169 control_handle: std::mem::ManuallyDrop::new(control_handle),
2170 tx_id: header.tx_id,
2171 },
2172 })
2173 }
2174 _ if header.tx_id == 0
2175 && header
2176 .dynamic_flags()
2177 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2178 {
2179 Ok(NodeRequest::_UnknownMethod {
2180 ordinal: header.ordinal,
2181 control_handle: NodeControlHandle { inner: this.inner.clone() },
2182 method_type: fidl::MethodType::OneWay,
2183 })
2184 }
2185 _ if header
2186 .dynamic_flags()
2187 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2188 {
2189 this.inner.send_framework_err(
2190 fidl::encoding::FrameworkErr::UnknownMethod,
2191 header.tx_id,
2192 header.ordinal,
2193 header.dynamic_flags(),
2194 (bytes, handles),
2195 )?;
2196 Ok(NodeRequest::_UnknownMethod {
2197 ordinal: header.ordinal,
2198 control_handle: NodeControlHandle { inner: this.inner.clone() },
2199 method_type: fidl::MethodType::TwoWay,
2200 })
2201 }
2202 _ => Err(fidl::Error::UnknownOrdinal {
2203 ordinal: header.ordinal,
2204 protocol_name: <NodeMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2205 }),
2206 }))
2207 },
2208 )
2209 }
2210}
2211
2212#[derive(Debug)]
2220pub enum NodeRequest {
2221 AddChild {
2227 args: NodeAddArgs,
2228 controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
2229 node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
2230 responder: NodeAddChildResponder,
2231 },
2232 #[non_exhaustive]
2234 _UnknownMethod {
2235 ordinal: u64,
2237 control_handle: NodeControlHandle,
2238 method_type: fidl::MethodType,
2239 },
2240}
2241
2242impl NodeRequest {
2243 #[allow(irrefutable_let_patterns)]
2244 pub fn into_add_child(
2245 self,
2246 ) -> Option<(
2247 NodeAddArgs,
2248 fidl::endpoints::ServerEnd<NodeControllerMarker>,
2249 Option<fidl::endpoints::ServerEnd<NodeMarker>>,
2250 NodeAddChildResponder,
2251 )> {
2252 if let NodeRequest::AddChild { args, controller, node, responder } = self {
2253 Some((args, controller, node, responder))
2254 } else {
2255 None
2256 }
2257 }
2258
2259 pub fn method_name(&self) -> &'static str {
2261 match *self {
2262 NodeRequest::AddChild { .. } => "add_child",
2263 NodeRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
2264 "unknown one-way method"
2265 }
2266 NodeRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
2267 "unknown two-way method"
2268 }
2269 }
2270 }
2271}
2272
2273#[derive(Debug, Clone)]
2274pub struct NodeControlHandle {
2275 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2276}
2277
2278impl fidl::endpoints::ControlHandle for NodeControlHandle {
2279 fn shutdown(&self) {
2280 self.inner.shutdown()
2281 }
2282 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
2283 self.inner.shutdown_with_epitaph(status)
2284 }
2285
2286 fn is_closed(&self) -> bool {
2287 self.inner.channel().is_closed()
2288 }
2289 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2290 self.inner.channel().on_closed()
2291 }
2292
2293 #[cfg(target_os = "fuchsia")]
2294 fn signal_peer(
2295 &self,
2296 clear_mask: zx::Signals,
2297 set_mask: zx::Signals,
2298 ) -> Result<(), zx_status::Status> {
2299 use fidl::Peered;
2300 self.inner.channel().signal_peer(clear_mask, set_mask)
2301 }
2302}
2303
2304impl NodeControlHandle {}
2305
2306#[must_use = "FIDL methods require a response to be sent"]
2307#[derive(Debug)]
2308pub struct NodeAddChildResponder {
2309 control_handle: std::mem::ManuallyDrop<NodeControlHandle>,
2310 tx_id: u32,
2311}
2312
2313impl std::ops::Drop for NodeAddChildResponder {
2317 fn drop(&mut self) {
2318 self.control_handle.shutdown();
2319 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2321 }
2322}
2323
2324impl fidl::endpoints::Responder for NodeAddChildResponder {
2325 type ControlHandle = NodeControlHandle;
2326
2327 fn control_handle(&self) -> &NodeControlHandle {
2328 &self.control_handle
2329 }
2330
2331 fn drop_without_shutdown(mut self) {
2332 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2334 std::mem::forget(self);
2336 }
2337}
2338
2339impl NodeAddChildResponder {
2340 pub fn send(self, mut result: Result<(), NodeError>) -> Result<(), fidl::Error> {
2344 let _result = self.send_raw(result);
2345 if _result.is_err() {
2346 self.control_handle.shutdown();
2347 }
2348 self.drop_without_shutdown();
2349 _result
2350 }
2351
2352 pub fn send_no_shutdown_on_err(
2354 self,
2355 mut result: Result<(), NodeError>,
2356 ) -> Result<(), fidl::Error> {
2357 let _result = self.send_raw(result);
2358 self.drop_without_shutdown();
2359 _result
2360 }
2361
2362 fn send_raw(&self, mut result: Result<(), NodeError>) -> Result<(), fidl::Error> {
2363 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
2364 fidl::encoding::EmptyStruct,
2365 NodeError,
2366 >>(
2367 fidl::encoding::FlexibleResult::new(result),
2368 self.tx_id,
2369 0x77d10dff3c1ea129,
2370 fidl::encoding::DynamicFlags::FLEXIBLE,
2371 )
2372 }
2373}
2374
2375#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
2376pub struct NodeControllerMarker;
2377
2378impl fidl::endpoints::ProtocolMarker for NodeControllerMarker {
2379 type Proxy = NodeControllerProxy;
2380 type RequestStream = NodeControllerRequestStream;
2381 #[cfg(target_os = "fuchsia")]
2382 type SynchronousProxy = NodeControllerSynchronousProxy;
2383
2384 const DEBUG_NAME: &'static str = "(anonymous) NodeController";
2385}
2386pub type NodeControllerRequestBindResult = Result<(), i32>;
2387
2388pub trait NodeControllerProxyInterface: Send + Sync {
2389 fn r#remove(&self) -> Result<(), fidl::Error>;
2390 type RequestBindResponseFut: std::future::Future<Output = Result<NodeControllerRequestBindResult, fidl::Error>>
2391 + Send;
2392 fn r#request_bind(
2393 &self,
2394 payload: &NodeControllerRequestBindRequest,
2395 ) -> Self::RequestBindResponseFut;
2396}
2397#[derive(Debug)]
2398#[cfg(target_os = "fuchsia")]
2399pub struct NodeControllerSynchronousProxy {
2400 client: fidl::client::sync::Client,
2401}
2402
2403#[cfg(target_os = "fuchsia")]
2404impl fidl::endpoints::SynchronousProxy for NodeControllerSynchronousProxy {
2405 type Proxy = NodeControllerProxy;
2406 type Protocol = NodeControllerMarker;
2407
2408 fn from_channel(inner: fidl::Channel) -> Self {
2409 Self::new(inner)
2410 }
2411
2412 fn into_channel(self) -> fidl::Channel {
2413 self.client.into_channel()
2414 }
2415
2416 fn as_channel(&self) -> &fidl::Channel {
2417 self.client.as_channel()
2418 }
2419}
2420
2421#[cfg(target_os = "fuchsia")]
2422impl NodeControllerSynchronousProxy {
2423 pub fn new(channel: fidl::Channel) -> Self {
2424 let protocol_name = <NodeControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
2425 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
2426 }
2427
2428 pub fn into_channel(self) -> fidl::Channel {
2429 self.client.into_channel()
2430 }
2431
2432 pub fn wait_for_event(
2435 &self,
2436 deadline: zx::MonotonicInstant,
2437 ) -> Result<NodeControllerEvent, fidl::Error> {
2438 NodeControllerEvent::decode(self.client.wait_for_event(deadline)?)
2439 }
2440
2441 pub fn r#remove(&self) -> Result<(), fidl::Error> {
2443 self.client.send::<fidl::encoding::EmptyPayload>(
2444 (),
2445 0x54fa8b3dfe7bb341,
2446 fidl::encoding::DynamicFlags::FLEXIBLE,
2447 )
2448 }
2449
2450 pub fn r#request_bind(
2457 &self,
2458 mut payload: &NodeControllerRequestBindRequest,
2459 ___deadline: zx::MonotonicInstant,
2460 ) -> Result<NodeControllerRequestBindResult, fidl::Error> {
2461 let _response = self.client.send_query::<
2462 NodeControllerRequestBindRequest,
2463 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, i32>,
2464 >(
2465 payload,
2466 0x41b954726b13508f,
2467 fidl::encoding::DynamicFlags::FLEXIBLE,
2468 ___deadline,
2469 )?
2470 .into_result::<NodeControllerMarker>("request_bind")?;
2471 Ok(_response.map(|x| x))
2472 }
2473}
2474
2475#[derive(Debug, Clone)]
2476pub struct NodeControllerProxy {
2477 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
2478}
2479
2480impl fidl::endpoints::Proxy for NodeControllerProxy {
2481 type Protocol = NodeControllerMarker;
2482
2483 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
2484 Self::new(inner)
2485 }
2486
2487 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
2488 self.client.into_channel().map_err(|client| Self { client })
2489 }
2490
2491 fn as_channel(&self) -> &::fidl::AsyncChannel {
2492 self.client.as_channel()
2493 }
2494}
2495
2496impl NodeControllerProxy {
2497 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
2499 let protocol_name = <NodeControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
2500 Self { client: fidl::client::Client::new(channel, protocol_name) }
2501 }
2502
2503 pub fn take_event_stream(&self) -> NodeControllerEventStream {
2509 NodeControllerEventStream { event_receiver: self.client.take_event_receiver() }
2510 }
2511
2512 pub fn r#remove(&self) -> Result<(), fidl::Error> {
2514 NodeControllerProxyInterface::r#remove(self)
2515 }
2516
2517 pub fn r#request_bind(
2524 &self,
2525 mut payload: &NodeControllerRequestBindRequest,
2526 ) -> fidl::client::QueryResponseFut<
2527 NodeControllerRequestBindResult,
2528 fidl::encoding::DefaultFuchsiaResourceDialect,
2529 > {
2530 NodeControllerProxyInterface::r#request_bind(self, payload)
2531 }
2532}
2533
2534impl NodeControllerProxyInterface for NodeControllerProxy {
2535 fn r#remove(&self) -> Result<(), fidl::Error> {
2536 self.client.send::<fidl::encoding::EmptyPayload>(
2537 (),
2538 0x54fa8b3dfe7bb341,
2539 fidl::encoding::DynamicFlags::FLEXIBLE,
2540 )
2541 }
2542
2543 type RequestBindResponseFut = fidl::client::QueryResponseFut<
2544 NodeControllerRequestBindResult,
2545 fidl::encoding::DefaultFuchsiaResourceDialect,
2546 >;
2547 fn r#request_bind(
2548 &self,
2549 mut payload: &NodeControllerRequestBindRequest,
2550 ) -> Self::RequestBindResponseFut {
2551 fn _decode(
2552 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2553 ) -> Result<NodeControllerRequestBindResult, fidl::Error> {
2554 let _response = fidl::client::decode_transaction_body::<
2555 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, i32>,
2556 fidl::encoding::DefaultFuchsiaResourceDialect,
2557 0x41b954726b13508f,
2558 >(_buf?)?
2559 .into_result::<NodeControllerMarker>("request_bind")?;
2560 Ok(_response.map(|x| x))
2561 }
2562 self.client.send_query_and_decode::<
2563 NodeControllerRequestBindRequest,
2564 NodeControllerRequestBindResult,
2565 >(
2566 payload,
2567 0x41b954726b13508f,
2568 fidl::encoding::DynamicFlags::FLEXIBLE,
2569 _decode,
2570 )
2571 }
2572}
2573
2574pub struct NodeControllerEventStream {
2575 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
2576}
2577
2578impl std::marker::Unpin for NodeControllerEventStream {}
2579
2580impl futures::stream::FusedStream for NodeControllerEventStream {
2581 fn is_terminated(&self) -> bool {
2582 self.event_receiver.is_terminated()
2583 }
2584}
2585
2586impl futures::Stream for NodeControllerEventStream {
2587 type Item = Result<NodeControllerEvent, fidl::Error>;
2588
2589 fn poll_next(
2590 mut self: std::pin::Pin<&mut Self>,
2591 cx: &mut std::task::Context<'_>,
2592 ) -> std::task::Poll<Option<Self::Item>> {
2593 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
2594 &mut self.event_receiver,
2595 cx
2596 )?) {
2597 Some(buf) => std::task::Poll::Ready(Some(NodeControllerEvent::decode(buf))),
2598 None => std::task::Poll::Ready(None),
2599 }
2600 }
2601}
2602
2603#[derive(Debug)]
2604pub enum NodeControllerEvent {
2605 OnBind {},
2606 #[non_exhaustive]
2607 _UnknownEvent {
2608 ordinal: u64,
2610 },
2611}
2612
2613impl NodeControllerEvent {
2614 #[allow(irrefutable_let_patterns)]
2615 pub fn into_on_bind(self) -> Option<()> {
2616 if let NodeControllerEvent::OnBind {} = self {
2617 Some(())
2618 } else {
2619 None
2620 }
2621 }
2622
2623 fn decode(
2625 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
2626 ) -> Result<NodeControllerEvent, fidl::Error> {
2627 let (bytes, _handles) = buf.split_mut();
2628 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2629 debug_assert_eq!(tx_header.tx_id, 0);
2630 match tx_header.ordinal {
2631 0x51f4165bc5ea202a => {
2632 let mut out = fidl::new_empty!(
2633 fidl::encoding::EmptyPayload,
2634 fidl::encoding::DefaultFuchsiaResourceDialect
2635 );
2636 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&tx_header, _body_bytes, _handles, &mut out)?;
2637 Ok((NodeControllerEvent::OnBind {}))
2638 }
2639 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
2640 Ok(NodeControllerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
2641 }
2642 _ => Err(fidl::Error::UnknownOrdinal {
2643 ordinal: tx_header.ordinal,
2644 protocol_name:
2645 <NodeControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2646 }),
2647 }
2648 }
2649}
2650
2651pub struct NodeControllerRequestStream {
2653 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2654 is_terminated: bool,
2655}
2656
2657impl std::marker::Unpin for NodeControllerRequestStream {}
2658
2659impl futures::stream::FusedStream for NodeControllerRequestStream {
2660 fn is_terminated(&self) -> bool {
2661 self.is_terminated
2662 }
2663}
2664
2665impl fidl::endpoints::RequestStream for NodeControllerRequestStream {
2666 type Protocol = NodeControllerMarker;
2667 type ControlHandle = NodeControllerControlHandle;
2668
2669 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
2670 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
2671 }
2672
2673 fn control_handle(&self) -> Self::ControlHandle {
2674 NodeControllerControlHandle { inner: self.inner.clone() }
2675 }
2676
2677 fn into_inner(
2678 self,
2679 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
2680 {
2681 (self.inner, self.is_terminated)
2682 }
2683
2684 fn from_inner(
2685 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2686 is_terminated: bool,
2687 ) -> Self {
2688 Self { inner, is_terminated }
2689 }
2690}
2691
2692impl futures::Stream for NodeControllerRequestStream {
2693 type Item = Result<NodeControllerRequest, fidl::Error>;
2694
2695 fn poll_next(
2696 mut self: std::pin::Pin<&mut Self>,
2697 cx: &mut std::task::Context<'_>,
2698 ) -> std::task::Poll<Option<Self::Item>> {
2699 let this = &mut *self;
2700 if this.inner.check_shutdown(cx) {
2701 this.is_terminated = true;
2702 return std::task::Poll::Ready(None);
2703 }
2704 if this.is_terminated {
2705 panic!("polled NodeControllerRequestStream after completion");
2706 }
2707 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
2708 |bytes, handles| {
2709 match this.inner.channel().read_etc(cx, bytes, handles) {
2710 std::task::Poll::Ready(Ok(())) => {}
2711 std::task::Poll::Pending => return std::task::Poll::Pending,
2712 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
2713 this.is_terminated = true;
2714 return std::task::Poll::Ready(None);
2715 }
2716 std::task::Poll::Ready(Err(e)) => {
2717 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
2718 e.into(),
2719 ))))
2720 }
2721 }
2722
2723 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2725
2726 std::task::Poll::Ready(Some(match header.ordinal {
2727 0x54fa8b3dfe7bb341 => {
2728 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2729 let mut req = fidl::new_empty!(
2730 fidl::encoding::EmptyPayload,
2731 fidl::encoding::DefaultFuchsiaResourceDialect
2732 );
2733 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2734 let control_handle =
2735 NodeControllerControlHandle { inner: this.inner.clone() };
2736 Ok(NodeControllerRequest::Remove { control_handle })
2737 }
2738 0x41b954726b13508f => {
2739 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2740 let mut req = fidl::new_empty!(
2741 NodeControllerRequestBindRequest,
2742 fidl::encoding::DefaultFuchsiaResourceDialect
2743 );
2744 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<NodeControllerRequestBindRequest>(&header, _body_bytes, handles, &mut req)?;
2745 let control_handle =
2746 NodeControllerControlHandle { inner: this.inner.clone() };
2747 Ok(NodeControllerRequest::RequestBind {
2748 payload: req,
2749 responder: NodeControllerRequestBindResponder {
2750 control_handle: std::mem::ManuallyDrop::new(control_handle),
2751 tx_id: header.tx_id,
2752 },
2753 })
2754 }
2755 _ if header.tx_id == 0
2756 && header
2757 .dynamic_flags()
2758 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2759 {
2760 Ok(NodeControllerRequest::_UnknownMethod {
2761 ordinal: header.ordinal,
2762 control_handle: NodeControllerControlHandle {
2763 inner: this.inner.clone(),
2764 },
2765 method_type: fidl::MethodType::OneWay,
2766 })
2767 }
2768 _ if header
2769 .dynamic_flags()
2770 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2771 {
2772 this.inner.send_framework_err(
2773 fidl::encoding::FrameworkErr::UnknownMethod,
2774 header.tx_id,
2775 header.ordinal,
2776 header.dynamic_flags(),
2777 (bytes, handles),
2778 )?;
2779 Ok(NodeControllerRequest::_UnknownMethod {
2780 ordinal: header.ordinal,
2781 control_handle: NodeControllerControlHandle {
2782 inner: this.inner.clone(),
2783 },
2784 method_type: fidl::MethodType::TwoWay,
2785 })
2786 }
2787 _ => Err(fidl::Error::UnknownOrdinal {
2788 ordinal: header.ordinal,
2789 protocol_name:
2790 <NodeControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2791 }),
2792 }))
2793 },
2794 )
2795 }
2796}
2797
2798#[derive(Debug)]
2800pub enum NodeControllerRequest {
2801 Remove { control_handle: NodeControllerControlHandle },
2803 RequestBind {
2810 payload: NodeControllerRequestBindRequest,
2811 responder: NodeControllerRequestBindResponder,
2812 },
2813 #[non_exhaustive]
2815 _UnknownMethod {
2816 ordinal: u64,
2818 control_handle: NodeControllerControlHandle,
2819 method_type: fidl::MethodType,
2820 },
2821}
2822
2823impl NodeControllerRequest {
2824 #[allow(irrefutable_let_patterns)]
2825 pub fn into_remove(self) -> Option<(NodeControllerControlHandle)> {
2826 if let NodeControllerRequest::Remove { control_handle } = self {
2827 Some((control_handle))
2828 } else {
2829 None
2830 }
2831 }
2832
2833 #[allow(irrefutable_let_patterns)]
2834 pub fn into_request_bind(
2835 self,
2836 ) -> Option<(NodeControllerRequestBindRequest, NodeControllerRequestBindResponder)> {
2837 if let NodeControllerRequest::RequestBind { payload, responder } = self {
2838 Some((payload, responder))
2839 } else {
2840 None
2841 }
2842 }
2843
2844 pub fn method_name(&self) -> &'static str {
2846 match *self {
2847 NodeControllerRequest::Remove { .. } => "remove",
2848 NodeControllerRequest::RequestBind { .. } => "request_bind",
2849 NodeControllerRequest::_UnknownMethod {
2850 method_type: fidl::MethodType::OneWay, ..
2851 } => "unknown one-way method",
2852 NodeControllerRequest::_UnknownMethod {
2853 method_type: fidl::MethodType::TwoWay, ..
2854 } => "unknown two-way method",
2855 }
2856 }
2857}
2858
2859#[derive(Debug, Clone)]
2860pub struct NodeControllerControlHandle {
2861 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2862}
2863
2864impl fidl::endpoints::ControlHandle for NodeControllerControlHandle {
2865 fn shutdown(&self) {
2866 self.inner.shutdown()
2867 }
2868 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
2869 self.inner.shutdown_with_epitaph(status)
2870 }
2871
2872 fn is_closed(&self) -> bool {
2873 self.inner.channel().is_closed()
2874 }
2875 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2876 self.inner.channel().on_closed()
2877 }
2878
2879 #[cfg(target_os = "fuchsia")]
2880 fn signal_peer(
2881 &self,
2882 clear_mask: zx::Signals,
2883 set_mask: zx::Signals,
2884 ) -> Result<(), zx_status::Status> {
2885 use fidl::Peered;
2886 self.inner.channel().signal_peer(clear_mask, set_mask)
2887 }
2888}
2889
2890impl NodeControllerControlHandle {
2891 pub fn send_on_bind(&self) -> Result<(), fidl::Error> {
2892 self.inner.send::<fidl::encoding::EmptyPayload>(
2893 (),
2894 0,
2895 0x51f4165bc5ea202a,
2896 fidl::encoding::DynamicFlags::FLEXIBLE,
2897 )
2898 }
2899}
2900
2901#[must_use = "FIDL methods require a response to be sent"]
2902#[derive(Debug)]
2903pub struct NodeControllerRequestBindResponder {
2904 control_handle: std::mem::ManuallyDrop<NodeControllerControlHandle>,
2905 tx_id: u32,
2906}
2907
2908impl std::ops::Drop for NodeControllerRequestBindResponder {
2912 fn drop(&mut self) {
2913 self.control_handle.shutdown();
2914 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2916 }
2917}
2918
2919impl fidl::endpoints::Responder for NodeControllerRequestBindResponder {
2920 type ControlHandle = NodeControllerControlHandle;
2921
2922 fn control_handle(&self) -> &NodeControllerControlHandle {
2923 &self.control_handle
2924 }
2925
2926 fn drop_without_shutdown(mut self) {
2927 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2929 std::mem::forget(self);
2931 }
2932}
2933
2934impl NodeControllerRequestBindResponder {
2935 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2939 let _result = self.send_raw(result);
2940 if _result.is_err() {
2941 self.control_handle.shutdown();
2942 }
2943 self.drop_without_shutdown();
2944 _result
2945 }
2946
2947 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2949 let _result = self.send_raw(result);
2950 self.drop_without_shutdown();
2951 _result
2952 }
2953
2954 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2955 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
2956 fidl::encoding::EmptyStruct,
2957 i32,
2958 >>(
2959 fidl::encoding::FlexibleResult::new(result),
2960 self.tx_id,
2961 0x41b954726b13508f,
2962 fidl::encoding::DynamicFlags::FLEXIBLE,
2963 )
2964 }
2965}
2966
2967mod internal {
2968 use super::*;
2969 unsafe impl fidl::encoding::TypeMarker for BusType {
2970 type Owned = Self;
2971
2972 #[inline(always)]
2973 fn inline_align(_context: fidl::encoding::Context) -> usize {
2974 std::mem::align_of::<u32>()
2975 }
2976
2977 #[inline(always)]
2978 fn inline_size(_context: fidl::encoding::Context) -> usize {
2979 std::mem::size_of::<u32>()
2980 }
2981
2982 #[inline(always)]
2983 fn encode_is_copy() -> bool {
2984 false
2985 }
2986
2987 #[inline(always)]
2988 fn decode_is_copy() -> bool {
2989 false
2990 }
2991 }
2992
2993 impl fidl::encoding::ValueTypeMarker for BusType {
2994 type Borrowed<'a> = Self;
2995 #[inline(always)]
2996 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2997 *value
2998 }
2999 }
3000
3001 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for BusType {
3002 #[inline]
3003 unsafe fn encode(
3004 self,
3005 encoder: &mut fidl::encoding::Encoder<'_, D>,
3006 offset: usize,
3007 _depth: fidl::encoding::Depth,
3008 ) -> fidl::Result<()> {
3009 encoder.debug_check_bounds::<Self>(offset);
3010 encoder.write_num(self.into_primitive(), offset);
3011 Ok(())
3012 }
3013 }
3014
3015 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BusType {
3016 #[inline(always)]
3017 fn new_empty() -> Self {
3018 Self::unknown()
3019 }
3020
3021 #[inline]
3022 unsafe fn decode(
3023 &mut self,
3024 decoder: &mut fidl::encoding::Decoder<'_, D>,
3025 offset: usize,
3026 _depth: fidl::encoding::Depth,
3027 ) -> fidl::Result<()> {
3028 decoder.debug_check_bounds::<Self>(offset);
3029 let prim = decoder.read_num::<u32>(offset);
3030
3031 *self = Self::from_primitive_allow_unknown(prim);
3032 Ok(())
3033 }
3034 }
3035 unsafe impl fidl::encoding::TypeMarker for CompositeNodeSpecError {
3036 type Owned = Self;
3037
3038 #[inline(always)]
3039 fn inline_align(_context: fidl::encoding::Context) -> usize {
3040 std::mem::align_of::<u32>()
3041 }
3042
3043 #[inline(always)]
3044 fn inline_size(_context: fidl::encoding::Context) -> usize {
3045 std::mem::size_of::<u32>()
3046 }
3047
3048 #[inline(always)]
3049 fn encode_is_copy() -> bool {
3050 false
3051 }
3052
3053 #[inline(always)]
3054 fn decode_is_copy() -> bool {
3055 false
3056 }
3057 }
3058
3059 impl fidl::encoding::ValueTypeMarker for CompositeNodeSpecError {
3060 type Borrowed<'a> = Self;
3061 #[inline(always)]
3062 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3063 *value
3064 }
3065 }
3066
3067 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3068 for CompositeNodeSpecError
3069 {
3070 #[inline]
3071 unsafe fn encode(
3072 self,
3073 encoder: &mut fidl::encoding::Encoder<'_, D>,
3074 offset: usize,
3075 _depth: fidl::encoding::Depth,
3076 ) -> fidl::Result<()> {
3077 encoder.debug_check_bounds::<Self>(offset);
3078 encoder.write_num(self.into_primitive(), offset);
3079 Ok(())
3080 }
3081 }
3082
3083 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3084 for CompositeNodeSpecError
3085 {
3086 #[inline(always)]
3087 fn new_empty() -> Self {
3088 Self::unknown()
3089 }
3090
3091 #[inline]
3092 unsafe fn decode(
3093 &mut self,
3094 decoder: &mut fidl::encoding::Decoder<'_, D>,
3095 offset: usize,
3096 _depth: fidl::encoding::Depth,
3097 ) -> fidl::Result<()> {
3098 decoder.debug_check_bounds::<Self>(offset);
3099 let prim = decoder.read_num::<u32>(offset);
3100
3101 *self = Self::from_primitive_allow_unknown(prim);
3102 Ok(())
3103 }
3104 }
3105 unsafe impl fidl::encoding::TypeMarker for Condition {
3106 type Owned = Self;
3107
3108 #[inline(always)]
3109 fn inline_align(_context: fidl::encoding::Context) -> usize {
3110 std::mem::align_of::<u32>()
3111 }
3112
3113 #[inline(always)]
3114 fn inline_size(_context: fidl::encoding::Context) -> usize {
3115 std::mem::size_of::<u32>()
3116 }
3117
3118 #[inline(always)]
3119 fn encode_is_copy() -> bool {
3120 true
3121 }
3122
3123 #[inline(always)]
3124 fn decode_is_copy() -> bool {
3125 false
3126 }
3127 }
3128
3129 impl fidl::encoding::ValueTypeMarker for Condition {
3130 type Borrowed<'a> = Self;
3131 #[inline(always)]
3132 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3133 *value
3134 }
3135 }
3136
3137 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Condition {
3138 #[inline]
3139 unsafe fn encode(
3140 self,
3141 encoder: &mut fidl::encoding::Encoder<'_, D>,
3142 offset: usize,
3143 _depth: fidl::encoding::Depth,
3144 ) -> fidl::Result<()> {
3145 encoder.debug_check_bounds::<Self>(offset);
3146 encoder.write_num(self.into_primitive(), offset);
3147 Ok(())
3148 }
3149 }
3150
3151 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Condition {
3152 #[inline(always)]
3153 fn new_empty() -> Self {
3154 Self::Unknown
3155 }
3156
3157 #[inline]
3158 unsafe fn decode(
3159 &mut self,
3160 decoder: &mut fidl::encoding::Decoder<'_, D>,
3161 offset: usize,
3162 _depth: fidl::encoding::Depth,
3163 ) -> fidl::Result<()> {
3164 decoder.debug_check_bounds::<Self>(offset);
3165 let prim = decoder.read_num::<u32>(offset);
3166
3167 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3168 Ok(())
3169 }
3170 }
3171 unsafe impl fidl::encoding::TypeMarker for DeviceAddressStability {
3172 type Owned = Self;
3173
3174 #[inline(always)]
3175 fn inline_align(_context: fidl::encoding::Context) -> usize {
3176 std::mem::align_of::<u32>()
3177 }
3178
3179 #[inline(always)]
3180 fn inline_size(_context: fidl::encoding::Context) -> usize {
3181 std::mem::size_of::<u32>()
3182 }
3183
3184 #[inline(always)]
3185 fn encode_is_copy() -> bool {
3186 false
3187 }
3188
3189 #[inline(always)]
3190 fn decode_is_copy() -> bool {
3191 false
3192 }
3193 }
3194
3195 impl fidl::encoding::ValueTypeMarker for DeviceAddressStability {
3196 type Borrowed<'a> = Self;
3197 #[inline(always)]
3198 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3199 *value
3200 }
3201 }
3202
3203 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3204 for DeviceAddressStability
3205 {
3206 #[inline]
3207 unsafe fn encode(
3208 self,
3209 encoder: &mut fidl::encoding::Encoder<'_, D>,
3210 offset: usize,
3211 _depth: fidl::encoding::Depth,
3212 ) -> fidl::Result<()> {
3213 encoder.debug_check_bounds::<Self>(offset);
3214 encoder.write_num(self.into_primitive(), offset);
3215 Ok(())
3216 }
3217 }
3218
3219 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3220 for DeviceAddressStability
3221 {
3222 #[inline(always)]
3223 fn new_empty() -> Self {
3224 Self::unknown()
3225 }
3226
3227 #[inline]
3228 unsafe fn decode(
3229 &mut self,
3230 decoder: &mut fidl::encoding::Decoder<'_, D>,
3231 offset: usize,
3232 _depth: fidl::encoding::Depth,
3233 ) -> fidl::Result<()> {
3234 decoder.debug_check_bounds::<Self>(offset);
3235 let prim = decoder.read_num::<u32>(offset);
3236
3237 *self = Self::from_primitive_allow_unknown(prim);
3238 Ok(())
3239 }
3240 }
3241 unsafe impl fidl::encoding::TypeMarker for DriverPackageType {
3242 type Owned = Self;
3243
3244 #[inline(always)]
3245 fn inline_align(_context: fidl::encoding::Context) -> usize {
3246 std::mem::align_of::<u8>()
3247 }
3248
3249 #[inline(always)]
3250 fn inline_size(_context: fidl::encoding::Context) -> usize {
3251 std::mem::size_of::<u8>()
3252 }
3253
3254 #[inline(always)]
3255 fn encode_is_copy() -> bool {
3256 false
3257 }
3258
3259 #[inline(always)]
3260 fn decode_is_copy() -> bool {
3261 false
3262 }
3263 }
3264
3265 impl fidl::encoding::ValueTypeMarker for DriverPackageType {
3266 type Borrowed<'a> = Self;
3267 #[inline(always)]
3268 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3269 *value
3270 }
3271 }
3272
3273 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3274 for DriverPackageType
3275 {
3276 #[inline]
3277 unsafe fn encode(
3278 self,
3279 encoder: &mut fidl::encoding::Encoder<'_, D>,
3280 offset: usize,
3281 _depth: fidl::encoding::Depth,
3282 ) -> fidl::Result<()> {
3283 encoder.debug_check_bounds::<Self>(offset);
3284 encoder.write_num(self.into_primitive(), offset);
3285 Ok(())
3286 }
3287 }
3288
3289 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DriverPackageType {
3290 #[inline(always)]
3291 fn new_empty() -> Self {
3292 Self::unknown()
3293 }
3294
3295 #[inline]
3296 unsafe fn decode(
3297 &mut self,
3298 decoder: &mut fidl::encoding::Decoder<'_, D>,
3299 offset: usize,
3300 _depth: fidl::encoding::Depth,
3301 ) -> fidl::Result<()> {
3302 decoder.debug_check_bounds::<Self>(offset);
3303 let prim = decoder.read_num::<u8>(offset);
3304
3305 *self = Self::from_primitive_allow_unknown(prim);
3306 Ok(())
3307 }
3308 }
3309 unsafe impl fidl::encoding::TypeMarker for NodeError {
3310 type Owned = Self;
3311
3312 #[inline(always)]
3313 fn inline_align(_context: fidl::encoding::Context) -> usize {
3314 std::mem::align_of::<u32>()
3315 }
3316
3317 #[inline(always)]
3318 fn inline_size(_context: fidl::encoding::Context) -> usize {
3319 std::mem::size_of::<u32>()
3320 }
3321
3322 #[inline(always)]
3323 fn encode_is_copy() -> bool {
3324 false
3325 }
3326
3327 #[inline(always)]
3328 fn decode_is_copy() -> bool {
3329 false
3330 }
3331 }
3332
3333 impl fidl::encoding::ValueTypeMarker for NodeError {
3334 type Borrowed<'a> = Self;
3335 #[inline(always)]
3336 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3337 *value
3338 }
3339 }
3340
3341 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for NodeError {
3342 #[inline]
3343 unsafe fn encode(
3344 self,
3345 encoder: &mut fidl::encoding::Encoder<'_, D>,
3346 offset: usize,
3347 _depth: fidl::encoding::Depth,
3348 ) -> fidl::Result<()> {
3349 encoder.debug_check_bounds::<Self>(offset);
3350 encoder.write_num(self.into_primitive(), offset);
3351 Ok(())
3352 }
3353 }
3354
3355 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeError {
3356 #[inline(always)]
3357 fn new_empty() -> Self {
3358 Self::unknown()
3359 }
3360
3361 #[inline]
3362 unsafe fn decode(
3363 &mut self,
3364 decoder: &mut fidl::encoding::Decoder<'_, D>,
3365 offset: usize,
3366 _depth: fidl::encoding::Depth,
3367 ) -> fidl::Result<()> {
3368 decoder.debug_check_bounds::<Self>(offset);
3369 let prim = decoder.read_num::<u32>(offset);
3370
3371 *self = Self::from_primitive_allow_unknown(prim);
3372 Ok(())
3373 }
3374 }
3375
3376 impl fidl::encoding::ValueTypeMarker for BindRule {
3377 type Borrowed<'a> = &'a Self;
3378 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3379 value
3380 }
3381 }
3382
3383 unsafe impl fidl::encoding::TypeMarker for BindRule {
3384 type Owned = Self;
3385
3386 #[inline(always)]
3387 fn inline_align(_context: fidl::encoding::Context) -> usize {
3388 8
3389 }
3390
3391 #[inline(always)]
3392 fn inline_size(_context: fidl::encoding::Context) -> usize {
3393 40
3394 }
3395 }
3396
3397 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BindRule, D> for &BindRule {
3398 #[inline]
3399 unsafe fn encode(
3400 self,
3401 encoder: &mut fidl::encoding::Encoder<'_, D>,
3402 offset: usize,
3403 _depth: fidl::encoding::Depth,
3404 ) -> fidl::Result<()> {
3405 encoder.debug_check_bounds::<BindRule>(offset);
3406 fidl::encoding::Encode::<BindRule, D>::encode(
3408 (
3409 <NodePropertyKey as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
3410 <Condition as fidl::encoding::ValueTypeMarker>::borrow(&self.condition),
3411 <fidl::encoding::Vector<NodePropertyValue, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.values),
3412 ),
3413 encoder, offset, _depth
3414 )
3415 }
3416 }
3417 unsafe impl<
3418 D: fidl::encoding::ResourceDialect,
3419 T0: fidl::encoding::Encode<NodePropertyKey, D>,
3420 T1: fidl::encoding::Encode<Condition, D>,
3421 T2: fidl::encoding::Encode<fidl::encoding::Vector<NodePropertyValue, 64>, D>,
3422 > fidl::encoding::Encode<BindRule, D> for (T0, T1, T2)
3423 {
3424 #[inline]
3425 unsafe fn encode(
3426 self,
3427 encoder: &mut fidl::encoding::Encoder<'_, D>,
3428 offset: usize,
3429 depth: fidl::encoding::Depth,
3430 ) -> fidl::Result<()> {
3431 encoder.debug_check_bounds::<BindRule>(offset);
3432 unsafe {
3435 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
3436 (ptr as *mut u64).write_unaligned(0);
3437 }
3438 self.0.encode(encoder, offset + 0, depth)?;
3440 self.1.encode(encoder, offset + 16, depth)?;
3441 self.2.encode(encoder, offset + 24, depth)?;
3442 Ok(())
3443 }
3444 }
3445
3446 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BindRule {
3447 #[inline(always)]
3448 fn new_empty() -> Self {
3449 Self {
3450 key: fidl::new_empty!(NodePropertyKey, D),
3451 condition: fidl::new_empty!(Condition, D),
3452 values: fidl::new_empty!(fidl::encoding::Vector<NodePropertyValue, 64>, D),
3453 }
3454 }
3455
3456 #[inline]
3457 unsafe fn decode(
3458 &mut self,
3459 decoder: &mut fidl::encoding::Decoder<'_, D>,
3460 offset: usize,
3461 _depth: fidl::encoding::Depth,
3462 ) -> fidl::Result<()> {
3463 decoder.debug_check_bounds::<Self>(offset);
3464 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
3466 let padval = unsafe { (ptr as *const u64).read_unaligned() };
3467 let mask = 0xffffffff00000000u64;
3468 let maskedval = padval & mask;
3469 if maskedval != 0 {
3470 return Err(fidl::Error::NonZeroPadding {
3471 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
3472 });
3473 }
3474 fidl::decode!(NodePropertyKey, D, &mut self.key, decoder, offset + 0, _depth)?;
3475 fidl::decode!(Condition, D, &mut self.condition, decoder, offset + 16, _depth)?;
3476 fidl::decode!(fidl::encoding::Vector<NodePropertyValue, 64>, D, &mut self.values, decoder, offset + 24, _depth)?;
3477 Ok(())
3478 }
3479 }
3480
3481 impl fidl::encoding::ResourceTypeMarker for DriverStartRequest {
3482 type Borrowed<'a> = &'a mut Self;
3483 fn take_or_borrow<'a>(
3484 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3485 ) -> Self::Borrowed<'a> {
3486 value
3487 }
3488 }
3489
3490 unsafe impl fidl::encoding::TypeMarker for DriverStartRequest {
3491 type Owned = Self;
3492
3493 #[inline(always)]
3494 fn inline_align(_context: fidl::encoding::Context) -> usize {
3495 8
3496 }
3497
3498 #[inline(always)]
3499 fn inline_size(_context: fidl::encoding::Context) -> usize {
3500 16
3501 }
3502 }
3503
3504 unsafe impl
3505 fidl::encoding::Encode<DriverStartRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
3506 for &mut DriverStartRequest
3507 {
3508 #[inline]
3509 unsafe fn encode(
3510 self,
3511 encoder: &mut fidl::encoding::Encoder<
3512 '_,
3513 fidl::encoding::DefaultFuchsiaResourceDialect,
3514 >,
3515 offset: usize,
3516 _depth: fidl::encoding::Depth,
3517 ) -> fidl::Result<()> {
3518 encoder.debug_check_bounds::<DriverStartRequest>(offset);
3519 fidl::encoding::Encode::<
3521 DriverStartRequest,
3522 fidl::encoding::DefaultFuchsiaResourceDialect,
3523 >::encode(
3524 (<DriverStartArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
3525 &mut self.start_args,
3526 ),),
3527 encoder,
3528 offset,
3529 _depth,
3530 )
3531 }
3532 }
3533 unsafe impl<
3534 T0: fidl::encoding::Encode<DriverStartArgs, fidl::encoding::DefaultFuchsiaResourceDialect>,
3535 >
3536 fidl::encoding::Encode<DriverStartRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
3537 for (T0,)
3538 {
3539 #[inline]
3540 unsafe fn encode(
3541 self,
3542 encoder: &mut fidl::encoding::Encoder<
3543 '_,
3544 fidl::encoding::DefaultFuchsiaResourceDialect,
3545 >,
3546 offset: usize,
3547 depth: fidl::encoding::Depth,
3548 ) -> fidl::Result<()> {
3549 encoder.debug_check_bounds::<DriverStartRequest>(offset);
3550 self.0.encode(encoder, offset + 0, depth)?;
3554 Ok(())
3555 }
3556 }
3557
3558 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3559 for DriverStartRequest
3560 {
3561 #[inline(always)]
3562 fn new_empty() -> Self {
3563 Self {
3564 start_args: fidl::new_empty!(
3565 DriverStartArgs,
3566 fidl::encoding::DefaultFuchsiaResourceDialect
3567 ),
3568 }
3569 }
3570
3571 #[inline]
3572 unsafe fn decode(
3573 &mut self,
3574 decoder: &mut fidl::encoding::Decoder<
3575 '_,
3576 fidl::encoding::DefaultFuchsiaResourceDialect,
3577 >,
3578 offset: usize,
3579 _depth: fidl::encoding::Depth,
3580 ) -> fidl::Result<()> {
3581 decoder.debug_check_bounds::<Self>(offset);
3582 fidl::decode!(
3584 DriverStartArgs,
3585 fidl::encoding::DefaultFuchsiaResourceDialect,
3586 &mut self.start_args,
3587 decoder,
3588 offset + 0,
3589 _depth
3590 )?;
3591 Ok(())
3592 }
3593 }
3594
3595 impl fidl::encoding::ResourceTypeMarker for NodeAddChildRequest {
3596 type Borrowed<'a> = &'a mut Self;
3597 fn take_or_borrow<'a>(
3598 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3599 ) -> Self::Borrowed<'a> {
3600 value
3601 }
3602 }
3603
3604 unsafe impl fidl::encoding::TypeMarker for NodeAddChildRequest {
3605 type Owned = Self;
3606
3607 #[inline(always)]
3608 fn inline_align(_context: fidl::encoding::Context) -> usize {
3609 8
3610 }
3611
3612 #[inline(always)]
3613 fn inline_size(_context: fidl::encoding::Context) -> usize {
3614 24
3615 }
3616 }
3617
3618 unsafe impl
3619 fidl::encoding::Encode<NodeAddChildRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
3620 for &mut NodeAddChildRequest
3621 {
3622 #[inline]
3623 unsafe fn encode(
3624 self,
3625 encoder: &mut fidl::encoding::Encoder<
3626 '_,
3627 fidl::encoding::DefaultFuchsiaResourceDialect,
3628 >,
3629 offset: usize,
3630 _depth: fidl::encoding::Depth,
3631 ) -> fidl::Result<()> {
3632 encoder.debug_check_bounds::<NodeAddChildRequest>(offset);
3633 fidl::encoding::Encode::<NodeAddChildRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
3635 (
3636 <NodeAddArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.args),
3637 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.controller),
3638 <fidl::encoding::Optional<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.node),
3639 ),
3640 encoder, offset, _depth
3641 )
3642 }
3643 }
3644 unsafe impl<
3645 T0: fidl::encoding::Encode<NodeAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect>,
3646 T1: fidl::encoding::Encode<
3647 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>>,
3648 fidl::encoding::DefaultFuchsiaResourceDialect,
3649 >,
3650 T2: fidl::encoding::Encode<
3651 fidl::encoding::Optional<
3652 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>,
3653 >,
3654 fidl::encoding::DefaultFuchsiaResourceDialect,
3655 >,
3656 >
3657 fidl::encoding::Encode<NodeAddChildRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
3658 for (T0, T1, T2)
3659 {
3660 #[inline]
3661 unsafe fn encode(
3662 self,
3663 encoder: &mut fidl::encoding::Encoder<
3664 '_,
3665 fidl::encoding::DefaultFuchsiaResourceDialect,
3666 >,
3667 offset: usize,
3668 depth: fidl::encoding::Depth,
3669 ) -> fidl::Result<()> {
3670 encoder.debug_check_bounds::<NodeAddChildRequest>(offset);
3671 self.0.encode(encoder, offset + 0, depth)?;
3675 self.1.encode(encoder, offset + 16, depth)?;
3676 self.2.encode(encoder, offset + 20, depth)?;
3677 Ok(())
3678 }
3679 }
3680
3681 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3682 for NodeAddChildRequest
3683 {
3684 #[inline(always)]
3685 fn new_empty() -> Self {
3686 Self {
3687 args: fidl::new_empty!(NodeAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect),
3688 controller: fidl::new_empty!(
3689 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>>,
3690 fidl::encoding::DefaultFuchsiaResourceDialect
3691 ),
3692 node: fidl::new_empty!(
3693 fidl::encoding::Optional<
3694 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>,
3695 >,
3696 fidl::encoding::DefaultFuchsiaResourceDialect
3697 ),
3698 }
3699 }
3700
3701 #[inline]
3702 unsafe fn decode(
3703 &mut self,
3704 decoder: &mut fidl::encoding::Decoder<
3705 '_,
3706 fidl::encoding::DefaultFuchsiaResourceDialect,
3707 >,
3708 offset: usize,
3709 _depth: fidl::encoding::Depth,
3710 ) -> fidl::Result<()> {
3711 decoder.debug_check_bounds::<Self>(offset);
3712 fidl::decode!(
3714 NodeAddArgs,
3715 fidl::encoding::DefaultFuchsiaResourceDialect,
3716 &mut self.args,
3717 decoder,
3718 offset + 0,
3719 _depth
3720 )?;
3721 fidl::decode!(
3722 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>>,
3723 fidl::encoding::DefaultFuchsiaResourceDialect,
3724 &mut self.controller,
3725 decoder,
3726 offset + 16,
3727 _depth
3728 )?;
3729 fidl::decode!(
3730 fidl::encoding::Optional<
3731 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>,
3732 >,
3733 fidl::encoding::DefaultFuchsiaResourceDialect,
3734 &mut self.node,
3735 decoder,
3736 offset + 20,
3737 _depth
3738 )?;
3739 Ok(())
3740 }
3741 }
3742
3743 impl fidl::encoding::ValueTypeMarker for NodeProperty {
3744 type Borrowed<'a> = &'a Self;
3745 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3746 value
3747 }
3748 }
3749
3750 unsafe impl fidl::encoding::TypeMarker for NodeProperty {
3751 type Owned = Self;
3752
3753 #[inline(always)]
3754 fn inline_align(_context: fidl::encoding::Context) -> usize {
3755 8
3756 }
3757
3758 #[inline(always)]
3759 fn inline_size(_context: fidl::encoding::Context) -> usize {
3760 32
3761 }
3762 }
3763
3764 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeProperty, D>
3765 for &NodeProperty
3766 {
3767 #[inline]
3768 unsafe fn encode(
3769 self,
3770 encoder: &mut fidl::encoding::Encoder<'_, D>,
3771 offset: usize,
3772 _depth: fidl::encoding::Depth,
3773 ) -> fidl::Result<()> {
3774 encoder.debug_check_bounds::<NodeProperty>(offset);
3775 fidl::encoding::Encode::<NodeProperty, D>::encode(
3777 (
3778 <NodePropertyKey as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
3779 <NodePropertyValue as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
3780 ),
3781 encoder,
3782 offset,
3783 _depth,
3784 )
3785 }
3786 }
3787 unsafe impl<
3788 D: fidl::encoding::ResourceDialect,
3789 T0: fidl::encoding::Encode<NodePropertyKey, D>,
3790 T1: fidl::encoding::Encode<NodePropertyValue, D>,
3791 > fidl::encoding::Encode<NodeProperty, D> for (T0, T1)
3792 {
3793 #[inline]
3794 unsafe fn encode(
3795 self,
3796 encoder: &mut fidl::encoding::Encoder<'_, D>,
3797 offset: usize,
3798 depth: fidl::encoding::Depth,
3799 ) -> fidl::Result<()> {
3800 encoder.debug_check_bounds::<NodeProperty>(offset);
3801 self.0.encode(encoder, offset + 0, depth)?;
3805 self.1.encode(encoder, offset + 16, depth)?;
3806 Ok(())
3807 }
3808 }
3809
3810 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeProperty {
3811 #[inline(always)]
3812 fn new_empty() -> Self {
3813 Self {
3814 key: fidl::new_empty!(NodePropertyKey, D),
3815 value: fidl::new_empty!(NodePropertyValue, D),
3816 }
3817 }
3818
3819 #[inline]
3820 unsafe fn decode(
3821 &mut self,
3822 decoder: &mut fidl::encoding::Decoder<'_, D>,
3823 offset: usize,
3824 _depth: fidl::encoding::Depth,
3825 ) -> fidl::Result<()> {
3826 decoder.debug_check_bounds::<Self>(offset);
3827 fidl::decode!(NodePropertyKey, D, &mut self.key, decoder, offset + 0, _depth)?;
3829 fidl::decode!(NodePropertyValue, D, &mut self.value, decoder, offset + 16, _depth)?;
3830 Ok(())
3831 }
3832 }
3833
3834 impl fidl::encoding::ValueTypeMarker for NodeProperty2 {
3835 type Borrowed<'a> = &'a Self;
3836 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3837 value
3838 }
3839 }
3840
3841 unsafe impl fidl::encoding::TypeMarker for NodeProperty2 {
3842 type Owned = Self;
3843
3844 #[inline(always)]
3845 fn inline_align(_context: fidl::encoding::Context) -> usize {
3846 8
3847 }
3848
3849 #[inline(always)]
3850 fn inline_size(_context: fidl::encoding::Context) -> usize {
3851 32
3852 }
3853 }
3854
3855 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeProperty2, D>
3856 for &NodeProperty2
3857 {
3858 #[inline]
3859 unsafe fn encode(
3860 self,
3861 encoder: &mut fidl::encoding::Encoder<'_, D>,
3862 offset: usize,
3863 _depth: fidl::encoding::Depth,
3864 ) -> fidl::Result<()> {
3865 encoder.debug_check_bounds::<NodeProperty2>(offset);
3866 fidl::encoding::Encode::<NodeProperty2, D>::encode(
3868 (
3869 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
3870 &self.key,
3871 ),
3872 <NodePropertyValue as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
3873 ),
3874 encoder,
3875 offset,
3876 _depth,
3877 )
3878 }
3879 }
3880 unsafe impl<
3881 D: fidl::encoding::ResourceDialect,
3882 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<256>, D>,
3883 T1: fidl::encoding::Encode<NodePropertyValue, D>,
3884 > fidl::encoding::Encode<NodeProperty2, D> for (T0, T1)
3885 {
3886 #[inline]
3887 unsafe fn encode(
3888 self,
3889 encoder: &mut fidl::encoding::Encoder<'_, D>,
3890 offset: usize,
3891 depth: fidl::encoding::Depth,
3892 ) -> fidl::Result<()> {
3893 encoder.debug_check_bounds::<NodeProperty2>(offset);
3894 self.0.encode(encoder, offset + 0, depth)?;
3898 self.1.encode(encoder, offset + 16, depth)?;
3899 Ok(())
3900 }
3901 }
3902
3903 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeProperty2 {
3904 #[inline(always)]
3905 fn new_empty() -> Self {
3906 Self {
3907 key: fidl::new_empty!(fidl::encoding::BoundedString<256>, D),
3908 value: fidl::new_empty!(NodePropertyValue, D),
3909 }
3910 }
3911
3912 #[inline]
3913 unsafe fn decode(
3914 &mut self,
3915 decoder: &mut fidl::encoding::Decoder<'_, D>,
3916 offset: usize,
3917 _depth: fidl::encoding::Depth,
3918 ) -> fidl::Result<()> {
3919 decoder.debug_check_bounds::<Self>(offset);
3920 fidl::decode!(
3922 fidl::encoding::BoundedString<256>,
3923 D,
3924 &mut self.key,
3925 decoder,
3926 offset + 0,
3927 _depth
3928 )?;
3929 fidl::decode!(NodePropertyValue, D, &mut self.value, decoder, offset + 16, _depth)?;
3930 Ok(())
3931 }
3932 }
3933
3934 impl fidl::encoding::ValueTypeMarker for NodePropertyEntry {
3935 type Borrowed<'a> = &'a Self;
3936 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3937 value
3938 }
3939 }
3940
3941 unsafe impl fidl::encoding::TypeMarker for NodePropertyEntry {
3942 type Owned = Self;
3943
3944 #[inline(always)]
3945 fn inline_align(_context: fidl::encoding::Context) -> usize {
3946 8
3947 }
3948
3949 #[inline(always)]
3950 fn inline_size(_context: fidl::encoding::Context) -> usize {
3951 32
3952 }
3953 }
3954
3955 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodePropertyEntry, D>
3956 for &NodePropertyEntry
3957 {
3958 #[inline]
3959 unsafe fn encode(
3960 self,
3961 encoder: &mut fidl::encoding::Encoder<'_, D>,
3962 offset: usize,
3963 _depth: fidl::encoding::Depth,
3964 ) -> fidl::Result<()> {
3965 encoder.debug_check_bounds::<NodePropertyEntry>(offset);
3966 fidl::encoding::Encode::<NodePropertyEntry, D>::encode(
3968 (
3969 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
3970 <fidl::encoding::Vector<NodeProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.properties),
3971 ),
3972 encoder, offset, _depth
3973 )
3974 }
3975 }
3976 unsafe impl<
3977 D: fidl::encoding::ResourceDialect,
3978 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<128>, D>,
3979 T1: fidl::encoding::Encode<fidl::encoding::Vector<NodeProperty, 64>, D>,
3980 > fidl::encoding::Encode<NodePropertyEntry, D> for (T0, T1)
3981 {
3982 #[inline]
3983 unsafe fn encode(
3984 self,
3985 encoder: &mut fidl::encoding::Encoder<'_, D>,
3986 offset: usize,
3987 depth: fidl::encoding::Depth,
3988 ) -> fidl::Result<()> {
3989 encoder.debug_check_bounds::<NodePropertyEntry>(offset);
3990 self.0.encode(encoder, offset + 0, depth)?;
3994 self.1.encode(encoder, offset + 16, depth)?;
3995 Ok(())
3996 }
3997 }
3998
3999 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodePropertyEntry {
4000 #[inline(always)]
4001 fn new_empty() -> Self {
4002 Self {
4003 name: fidl::new_empty!(fidl::encoding::BoundedString<128>, D),
4004 properties: fidl::new_empty!(fidl::encoding::Vector<NodeProperty, 64>, D),
4005 }
4006 }
4007
4008 #[inline]
4009 unsafe fn decode(
4010 &mut self,
4011 decoder: &mut fidl::encoding::Decoder<'_, D>,
4012 offset: usize,
4013 _depth: fidl::encoding::Depth,
4014 ) -> fidl::Result<()> {
4015 decoder.debug_check_bounds::<Self>(offset);
4016 fidl::decode!(
4018 fidl::encoding::BoundedString<128>,
4019 D,
4020 &mut self.name,
4021 decoder,
4022 offset + 0,
4023 _depth
4024 )?;
4025 fidl::decode!(fidl::encoding::Vector<NodeProperty, 64>, D, &mut self.properties, decoder, offset + 16, _depth)?;
4026 Ok(())
4027 }
4028 }
4029
4030 impl fidl::encoding::ValueTypeMarker for NodePropertyEntry2 {
4031 type Borrowed<'a> = &'a Self;
4032 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4033 value
4034 }
4035 }
4036
4037 unsafe impl fidl::encoding::TypeMarker for NodePropertyEntry2 {
4038 type Owned = Self;
4039
4040 #[inline(always)]
4041 fn inline_align(_context: fidl::encoding::Context) -> usize {
4042 8
4043 }
4044
4045 #[inline(always)]
4046 fn inline_size(_context: fidl::encoding::Context) -> usize {
4047 32
4048 }
4049 }
4050
4051 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodePropertyEntry2, D>
4052 for &NodePropertyEntry2
4053 {
4054 #[inline]
4055 unsafe fn encode(
4056 self,
4057 encoder: &mut fidl::encoding::Encoder<'_, D>,
4058 offset: usize,
4059 _depth: fidl::encoding::Depth,
4060 ) -> fidl::Result<()> {
4061 encoder.debug_check_bounds::<NodePropertyEntry2>(offset);
4062 fidl::encoding::Encode::<NodePropertyEntry2, D>::encode(
4064 (
4065 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
4066 <fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.properties),
4067 ),
4068 encoder, offset, _depth
4069 )
4070 }
4071 }
4072 unsafe impl<
4073 D: fidl::encoding::ResourceDialect,
4074 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<128>, D>,
4075 T1: fidl::encoding::Encode<fidl::encoding::Vector<NodeProperty2, 64>, D>,
4076 > fidl::encoding::Encode<NodePropertyEntry2, D> for (T0, T1)
4077 {
4078 #[inline]
4079 unsafe fn encode(
4080 self,
4081 encoder: &mut fidl::encoding::Encoder<'_, D>,
4082 offset: usize,
4083 depth: fidl::encoding::Depth,
4084 ) -> fidl::Result<()> {
4085 encoder.debug_check_bounds::<NodePropertyEntry2>(offset);
4086 self.0.encode(encoder, offset + 0, depth)?;
4090 self.1.encode(encoder, offset + 16, depth)?;
4091 Ok(())
4092 }
4093 }
4094
4095 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodePropertyEntry2 {
4096 #[inline(always)]
4097 fn new_empty() -> Self {
4098 Self {
4099 name: fidl::new_empty!(fidl::encoding::BoundedString<128>, D),
4100 properties: fidl::new_empty!(fidl::encoding::Vector<NodeProperty2, 64>, D),
4101 }
4102 }
4103
4104 #[inline]
4105 unsafe fn decode(
4106 &mut self,
4107 decoder: &mut fidl::encoding::Decoder<'_, D>,
4108 offset: usize,
4109 _depth: fidl::encoding::Depth,
4110 ) -> fidl::Result<()> {
4111 decoder.debug_check_bounds::<Self>(offset);
4112 fidl::decode!(
4114 fidl::encoding::BoundedString<128>,
4115 D,
4116 &mut self.name,
4117 decoder,
4118 offset + 0,
4119 _depth
4120 )?;
4121 fidl::decode!(fidl::encoding::Vector<NodeProperty2, 64>, D, &mut self.properties, decoder, offset + 16, _depth)?;
4122 Ok(())
4123 }
4124 }
4125
4126 impl fidl::encoding::ValueTypeMarker for ParentSpec {
4127 type Borrowed<'a> = &'a Self;
4128 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4129 value
4130 }
4131 }
4132
4133 unsafe impl fidl::encoding::TypeMarker for ParentSpec {
4134 type Owned = Self;
4135
4136 #[inline(always)]
4137 fn inline_align(_context: fidl::encoding::Context) -> usize {
4138 8
4139 }
4140
4141 #[inline(always)]
4142 fn inline_size(_context: fidl::encoding::Context) -> usize {
4143 32
4144 }
4145 }
4146
4147 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ParentSpec, D>
4148 for &ParentSpec
4149 {
4150 #[inline]
4151 unsafe fn encode(
4152 self,
4153 encoder: &mut fidl::encoding::Encoder<'_, D>,
4154 offset: usize,
4155 _depth: fidl::encoding::Depth,
4156 ) -> fidl::Result<()> {
4157 encoder.debug_check_bounds::<ParentSpec>(offset);
4158 fidl::encoding::Encode::<ParentSpec, D>::encode(
4160 (
4161 <fidl::encoding::Vector<BindRule, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.bind_rules),
4162 <fidl::encoding::Vector<NodeProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.properties),
4163 ),
4164 encoder, offset, _depth
4165 )
4166 }
4167 }
4168 unsafe impl<
4169 D: fidl::encoding::ResourceDialect,
4170 T0: fidl::encoding::Encode<fidl::encoding::Vector<BindRule, 64>, D>,
4171 T1: fidl::encoding::Encode<fidl::encoding::Vector<NodeProperty, 64>, D>,
4172 > fidl::encoding::Encode<ParentSpec, D> for (T0, T1)
4173 {
4174 #[inline]
4175 unsafe fn encode(
4176 self,
4177 encoder: &mut fidl::encoding::Encoder<'_, D>,
4178 offset: usize,
4179 depth: fidl::encoding::Depth,
4180 ) -> fidl::Result<()> {
4181 encoder.debug_check_bounds::<ParentSpec>(offset);
4182 self.0.encode(encoder, offset + 0, depth)?;
4186 self.1.encode(encoder, offset + 16, depth)?;
4187 Ok(())
4188 }
4189 }
4190
4191 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ParentSpec {
4192 #[inline(always)]
4193 fn new_empty() -> Self {
4194 Self {
4195 bind_rules: fidl::new_empty!(fidl::encoding::Vector<BindRule, 64>, D),
4196 properties: fidl::new_empty!(fidl::encoding::Vector<NodeProperty, 64>, D),
4197 }
4198 }
4199
4200 #[inline]
4201 unsafe fn decode(
4202 &mut self,
4203 decoder: &mut fidl::encoding::Decoder<'_, D>,
4204 offset: usize,
4205 _depth: fidl::encoding::Depth,
4206 ) -> fidl::Result<()> {
4207 decoder.debug_check_bounds::<Self>(offset);
4208 fidl::decode!(fidl::encoding::Vector<BindRule, 64>, D, &mut self.bind_rules, decoder, offset + 0, _depth)?;
4210 fidl::decode!(fidl::encoding::Vector<NodeProperty, 64>, D, &mut self.properties, decoder, offset + 16, _depth)?;
4211 Ok(())
4212 }
4213 }
4214
4215 impl BusInfo {
4216 #[inline(always)]
4217 fn max_ordinal_present(&self) -> u64 {
4218 if let Some(_) = self.address_stability {
4219 return 3;
4220 }
4221 if let Some(_) = self.address {
4222 return 2;
4223 }
4224 if let Some(_) = self.bus {
4225 return 1;
4226 }
4227 0
4228 }
4229 }
4230
4231 impl fidl::encoding::ValueTypeMarker for BusInfo {
4232 type Borrowed<'a> = &'a Self;
4233 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4234 value
4235 }
4236 }
4237
4238 unsafe impl fidl::encoding::TypeMarker for BusInfo {
4239 type Owned = Self;
4240
4241 #[inline(always)]
4242 fn inline_align(_context: fidl::encoding::Context) -> usize {
4243 8
4244 }
4245
4246 #[inline(always)]
4247 fn inline_size(_context: fidl::encoding::Context) -> usize {
4248 16
4249 }
4250 }
4251
4252 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BusInfo, D> for &BusInfo {
4253 unsafe fn encode(
4254 self,
4255 encoder: &mut fidl::encoding::Encoder<'_, D>,
4256 offset: usize,
4257 mut depth: fidl::encoding::Depth,
4258 ) -> fidl::Result<()> {
4259 encoder.debug_check_bounds::<BusInfo>(offset);
4260 let max_ordinal: u64 = self.max_ordinal_present();
4262 encoder.write_num(max_ordinal, offset);
4263 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4264 if max_ordinal == 0 {
4266 return Ok(());
4267 }
4268 depth.increment()?;
4269 let envelope_size = 8;
4270 let bytes_len = max_ordinal as usize * envelope_size;
4271 #[allow(unused_variables)]
4272 let offset = encoder.out_of_line_offset(bytes_len);
4273 let mut _prev_end_offset: usize = 0;
4274 if 1 > max_ordinal {
4275 return Ok(());
4276 }
4277
4278 let cur_offset: usize = (1 - 1) * envelope_size;
4281
4282 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4284
4285 fidl::encoding::encode_in_envelope_optional::<BusType, D>(
4290 self.bus.as_ref().map(<BusType as fidl::encoding::ValueTypeMarker>::borrow),
4291 encoder,
4292 offset + cur_offset,
4293 depth,
4294 )?;
4295
4296 _prev_end_offset = cur_offset + envelope_size;
4297 if 2 > max_ordinal {
4298 return Ok(());
4299 }
4300
4301 let cur_offset: usize = (2 - 1) * envelope_size;
4304
4305 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4307
4308 fidl::encoding::encode_in_envelope_optional::<DeviceAddress, D>(
4313 self.address
4314 .as_ref()
4315 .map(<DeviceAddress as fidl::encoding::ValueTypeMarker>::borrow),
4316 encoder,
4317 offset + cur_offset,
4318 depth,
4319 )?;
4320
4321 _prev_end_offset = cur_offset + envelope_size;
4322 if 3 > max_ordinal {
4323 return Ok(());
4324 }
4325
4326 let cur_offset: usize = (3 - 1) * envelope_size;
4329
4330 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4332
4333 fidl::encoding::encode_in_envelope_optional::<DeviceAddressStability, D>(
4338 self.address_stability
4339 .as_ref()
4340 .map(<DeviceAddressStability as fidl::encoding::ValueTypeMarker>::borrow),
4341 encoder,
4342 offset + cur_offset,
4343 depth,
4344 )?;
4345
4346 _prev_end_offset = cur_offset + envelope_size;
4347
4348 Ok(())
4349 }
4350 }
4351
4352 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BusInfo {
4353 #[inline(always)]
4354 fn new_empty() -> Self {
4355 Self::default()
4356 }
4357
4358 unsafe fn decode(
4359 &mut self,
4360 decoder: &mut fidl::encoding::Decoder<'_, D>,
4361 offset: usize,
4362 mut depth: fidl::encoding::Depth,
4363 ) -> fidl::Result<()> {
4364 decoder.debug_check_bounds::<Self>(offset);
4365 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4366 None => return Err(fidl::Error::NotNullable),
4367 Some(len) => len,
4368 };
4369 if len == 0 {
4371 return Ok(());
4372 };
4373 depth.increment()?;
4374 let envelope_size = 8;
4375 let bytes_len = len * envelope_size;
4376 let offset = decoder.out_of_line_offset(bytes_len)?;
4377 let mut _next_ordinal_to_read = 0;
4379 let mut next_offset = offset;
4380 let end_offset = offset + bytes_len;
4381 _next_ordinal_to_read += 1;
4382 if next_offset >= end_offset {
4383 return Ok(());
4384 }
4385
4386 while _next_ordinal_to_read < 1 {
4388 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4389 _next_ordinal_to_read += 1;
4390 next_offset += envelope_size;
4391 }
4392
4393 let next_out_of_line = decoder.next_out_of_line();
4394 let handles_before = decoder.remaining_handles();
4395 if let Some((inlined, num_bytes, num_handles)) =
4396 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4397 {
4398 let member_inline_size =
4399 <BusType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4400 if inlined != (member_inline_size <= 4) {
4401 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4402 }
4403 let inner_offset;
4404 let mut inner_depth = depth.clone();
4405 if inlined {
4406 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4407 inner_offset = next_offset;
4408 } else {
4409 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4410 inner_depth.increment()?;
4411 }
4412 let val_ref = self.bus.get_or_insert_with(|| fidl::new_empty!(BusType, D));
4413 fidl::decode!(BusType, D, val_ref, decoder, inner_offset, inner_depth)?;
4414 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4415 {
4416 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4417 }
4418 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4419 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4420 }
4421 }
4422
4423 next_offset += envelope_size;
4424 _next_ordinal_to_read += 1;
4425 if next_offset >= end_offset {
4426 return Ok(());
4427 }
4428
4429 while _next_ordinal_to_read < 2 {
4431 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4432 _next_ordinal_to_read += 1;
4433 next_offset += envelope_size;
4434 }
4435
4436 let next_out_of_line = decoder.next_out_of_line();
4437 let handles_before = decoder.remaining_handles();
4438 if let Some((inlined, num_bytes, num_handles)) =
4439 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4440 {
4441 let member_inline_size =
4442 <DeviceAddress as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4443 if inlined != (member_inline_size <= 4) {
4444 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4445 }
4446 let inner_offset;
4447 let mut inner_depth = depth.clone();
4448 if inlined {
4449 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4450 inner_offset = next_offset;
4451 } else {
4452 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4453 inner_depth.increment()?;
4454 }
4455 let val_ref =
4456 self.address.get_or_insert_with(|| fidl::new_empty!(DeviceAddress, D));
4457 fidl::decode!(DeviceAddress, D, val_ref, decoder, inner_offset, inner_depth)?;
4458 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4459 {
4460 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4461 }
4462 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4463 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4464 }
4465 }
4466
4467 next_offset += envelope_size;
4468 _next_ordinal_to_read += 1;
4469 if next_offset >= end_offset {
4470 return Ok(());
4471 }
4472
4473 while _next_ordinal_to_read < 3 {
4475 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4476 _next_ordinal_to_read += 1;
4477 next_offset += envelope_size;
4478 }
4479
4480 let next_out_of_line = decoder.next_out_of_line();
4481 let handles_before = decoder.remaining_handles();
4482 if let Some((inlined, num_bytes, num_handles)) =
4483 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4484 {
4485 let member_inline_size =
4486 <DeviceAddressStability as fidl::encoding::TypeMarker>::inline_size(
4487 decoder.context,
4488 );
4489 if inlined != (member_inline_size <= 4) {
4490 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4491 }
4492 let inner_offset;
4493 let mut inner_depth = depth.clone();
4494 if inlined {
4495 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4496 inner_offset = next_offset;
4497 } else {
4498 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4499 inner_depth.increment()?;
4500 }
4501 let val_ref = self
4502 .address_stability
4503 .get_or_insert_with(|| fidl::new_empty!(DeviceAddressStability, D));
4504 fidl::decode!(
4505 DeviceAddressStability,
4506 D,
4507 val_ref,
4508 decoder,
4509 inner_offset,
4510 inner_depth
4511 )?;
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
4523 while next_offset < end_offset {
4525 _next_ordinal_to_read += 1;
4526 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4527 next_offset += envelope_size;
4528 }
4529
4530 Ok(())
4531 }
4532 }
4533
4534 impl CompositeDriverInfo {
4535 #[inline(always)]
4536 fn max_ordinal_present(&self) -> u64 {
4537 if let Some(_) = self.driver_info {
4538 return 2;
4539 }
4540 if let Some(_) = self.composite_name {
4541 return 1;
4542 }
4543 0
4544 }
4545 }
4546
4547 impl fidl::encoding::ValueTypeMarker for CompositeDriverInfo {
4548 type Borrowed<'a> = &'a Self;
4549 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4550 value
4551 }
4552 }
4553
4554 unsafe impl fidl::encoding::TypeMarker for CompositeDriverInfo {
4555 type Owned = Self;
4556
4557 #[inline(always)]
4558 fn inline_align(_context: fidl::encoding::Context) -> usize {
4559 8
4560 }
4561
4562 #[inline(always)]
4563 fn inline_size(_context: fidl::encoding::Context) -> usize {
4564 16
4565 }
4566 }
4567
4568 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeDriverInfo, D>
4569 for &CompositeDriverInfo
4570 {
4571 unsafe fn encode(
4572 self,
4573 encoder: &mut fidl::encoding::Encoder<'_, D>,
4574 offset: usize,
4575 mut depth: fidl::encoding::Depth,
4576 ) -> fidl::Result<()> {
4577 encoder.debug_check_bounds::<CompositeDriverInfo>(offset);
4578 let max_ordinal: u64 = self.max_ordinal_present();
4580 encoder.write_num(max_ordinal, offset);
4581 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4582 if max_ordinal == 0 {
4584 return Ok(());
4585 }
4586 depth.increment()?;
4587 let envelope_size = 8;
4588 let bytes_len = max_ordinal as usize * envelope_size;
4589 #[allow(unused_variables)]
4590 let offset = encoder.out_of_line_offset(bytes_len);
4591 let mut _prev_end_offset: usize = 0;
4592 if 1 > max_ordinal {
4593 return Ok(());
4594 }
4595
4596 let cur_offset: usize = (1 - 1) * envelope_size;
4599
4600 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4602
4603 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4608 self.composite_name.as_ref().map(
4609 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4610 ),
4611 encoder,
4612 offset + cur_offset,
4613 depth,
4614 )?;
4615
4616 _prev_end_offset = cur_offset + envelope_size;
4617 if 2 > max_ordinal {
4618 return Ok(());
4619 }
4620
4621 let cur_offset: usize = (2 - 1) * envelope_size;
4624
4625 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4627
4628 fidl::encoding::encode_in_envelope_optional::<DriverInfo, D>(
4633 self.driver_info
4634 .as_ref()
4635 .map(<DriverInfo as fidl::encoding::ValueTypeMarker>::borrow),
4636 encoder,
4637 offset + cur_offset,
4638 depth,
4639 )?;
4640
4641 _prev_end_offset = cur_offset + envelope_size;
4642
4643 Ok(())
4644 }
4645 }
4646
4647 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeDriverInfo {
4648 #[inline(always)]
4649 fn new_empty() -> Self {
4650 Self::default()
4651 }
4652
4653 unsafe fn decode(
4654 &mut self,
4655 decoder: &mut fidl::encoding::Decoder<'_, D>,
4656 offset: usize,
4657 mut depth: fidl::encoding::Depth,
4658 ) -> fidl::Result<()> {
4659 decoder.debug_check_bounds::<Self>(offset);
4660 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4661 None => return Err(fidl::Error::NotNullable),
4662 Some(len) => len,
4663 };
4664 if len == 0 {
4666 return Ok(());
4667 };
4668 depth.increment()?;
4669 let envelope_size = 8;
4670 let bytes_len = len * envelope_size;
4671 let offset = decoder.out_of_line_offset(bytes_len)?;
4672 let mut _next_ordinal_to_read = 0;
4674 let mut next_offset = offset;
4675 let end_offset = offset + bytes_len;
4676 _next_ordinal_to_read += 1;
4677 if next_offset >= end_offset {
4678 return Ok(());
4679 }
4680
4681 while _next_ordinal_to_read < 1 {
4683 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4684 _next_ordinal_to_read += 1;
4685 next_offset += envelope_size;
4686 }
4687
4688 let next_out_of_line = decoder.next_out_of_line();
4689 let handles_before = decoder.remaining_handles();
4690 if let Some((inlined, num_bytes, num_handles)) =
4691 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4692 {
4693 let member_inline_size =
4694 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4695 decoder.context,
4696 );
4697 if inlined != (member_inline_size <= 4) {
4698 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4699 }
4700 let inner_offset;
4701 let mut inner_depth = depth.clone();
4702 if inlined {
4703 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4704 inner_offset = next_offset;
4705 } else {
4706 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4707 inner_depth.increment()?;
4708 }
4709 let val_ref = self
4710 .composite_name
4711 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
4712 fidl::decode!(
4713 fidl::encoding::UnboundedString,
4714 D,
4715 val_ref,
4716 decoder,
4717 inner_offset,
4718 inner_depth
4719 )?;
4720 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4721 {
4722 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4723 }
4724 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4725 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4726 }
4727 }
4728
4729 next_offset += envelope_size;
4730 _next_ordinal_to_read += 1;
4731 if next_offset >= end_offset {
4732 return Ok(());
4733 }
4734
4735 while _next_ordinal_to_read < 2 {
4737 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4738 _next_ordinal_to_read += 1;
4739 next_offset += envelope_size;
4740 }
4741
4742 let next_out_of_line = decoder.next_out_of_line();
4743 let handles_before = decoder.remaining_handles();
4744 if let Some((inlined, num_bytes, num_handles)) =
4745 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4746 {
4747 let member_inline_size =
4748 <DriverInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4749 if inlined != (member_inline_size <= 4) {
4750 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4751 }
4752 let inner_offset;
4753 let mut inner_depth = depth.clone();
4754 if inlined {
4755 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4756 inner_offset = next_offset;
4757 } else {
4758 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4759 inner_depth.increment()?;
4760 }
4761 let val_ref =
4762 self.driver_info.get_or_insert_with(|| fidl::new_empty!(DriverInfo, D));
4763 fidl::decode!(DriverInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
4764 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4765 {
4766 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4767 }
4768 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4769 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4770 }
4771 }
4772
4773 next_offset += envelope_size;
4774
4775 while next_offset < end_offset {
4777 _next_ordinal_to_read += 1;
4778 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4779 next_offset += envelope_size;
4780 }
4781
4782 Ok(())
4783 }
4784 }
4785
4786 impl CompositeDriverMatch {
4787 #[inline(always)]
4788 fn max_ordinal_present(&self) -> u64 {
4789 if let Some(_) = self.primary_parent_index {
4790 return 3;
4791 }
4792 if let Some(_) = self.parent_names {
4793 return 2;
4794 }
4795 if let Some(_) = self.composite_driver {
4796 return 1;
4797 }
4798 0
4799 }
4800 }
4801
4802 impl fidl::encoding::ValueTypeMarker for CompositeDriverMatch {
4803 type Borrowed<'a> = &'a Self;
4804 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4805 value
4806 }
4807 }
4808
4809 unsafe impl fidl::encoding::TypeMarker for CompositeDriverMatch {
4810 type Owned = Self;
4811
4812 #[inline(always)]
4813 fn inline_align(_context: fidl::encoding::Context) -> usize {
4814 8
4815 }
4816
4817 #[inline(always)]
4818 fn inline_size(_context: fidl::encoding::Context) -> usize {
4819 16
4820 }
4821 }
4822
4823 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeDriverMatch, D>
4824 for &CompositeDriverMatch
4825 {
4826 unsafe fn encode(
4827 self,
4828 encoder: &mut fidl::encoding::Encoder<'_, D>,
4829 offset: usize,
4830 mut depth: fidl::encoding::Depth,
4831 ) -> fidl::Result<()> {
4832 encoder.debug_check_bounds::<CompositeDriverMatch>(offset);
4833 let max_ordinal: u64 = self.max_ordinal_present();
4835 encoder.write_num(max_ordinal, offset);
4836 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4837 if max_ordinal == 0 {
4839 return Ok(());
4840 }
4841 depth.increment()?;
4842 let envelope_size = 8;
4843 let bytes_len = max_ordinal as usize * envelope_size;
4844 #[allow(unused_variables)]
4845 let offset = encoder.out_of_line_offset(bytes_len);
4846 let mut _prev_end_offset: usize = 0;
4847 if 1 > max_ordinal {
4848 return Ok(());
4849 }
4850
4851 let cur_offset: usize = (1 - 1) * envelope_size;
4854
4855 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4857
4858 fidl::encoding::encode_in_envelope_optional::<CompositeDriverInfo, D>(
4863 self.composite_driver
4864 .as_ref()
4865 .map(<CompositeDriverInfo as fidl::encoding::ValueTypeMarker>::borrow),
4866 encoder,
4867 offset + cur_offset,
4868 depth,
4869 )?;
4870
4871 _prev_end_offset = cur_offset + envelope_size;
4872 if 2 > max_ordinal {
4873 return Ok(());
4874 }
4875
4876 let cur_offset: usize = (2 - 1) * envelope_size;
4879
4880 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4882
4883 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>, D>(
4888 self.parent_names.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString> as fidl::encoding::ValueTypeMarker>::borrow),
4889 encoder, offset + cur_offset, depth
4890 )?;
4891
4892 _prev_end_offset = cur_offset + envelope_size;
4893 if 3 > max_ordinal {
4894 return Ok(());
4895 }
4896
4897 let cur_offset: usize = (3 - 1) * envelope_size;
4900
4901 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4903
4904 fidl::encoding::encode_in_envelope_optional::<u32, D>(
4909 self.primary_parent_index
4910 .as_ref()
4911 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4912 encoder,
4913 offset + cur_offset,
4914 depth,
4915 )?;
4916
4917 _prev_end_offset = cur_offset + envelope_size;
4918
4919 Ok(())
4920 }
4921 }
4922
4923 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeDriverMatch {
4924 #[inline(always)]
4925 fn new_empty() -> Self {
4926 Self::default()
4927 }
4928
4929 unsafe fn decode(
4930 &mut self,
4931 decoder: &mut fidl::encoding::Decoder<'_, D>,
4932 offset: usize,
4933 mut depth: fidl::encoding::Depth,
4934 ) -> fidl::Result<()> {
4935 decoder.debug_check_bounds::<Self>(offset);
4936 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4937 None => return Err(fidl::Error::NotNullable),
4938 Some(len) => len,
4939 };
4940 if len == 0 {
4942 return Ok(());
4943 };
4944 depth.increment()?;
4945 let envelope_size = 8;
4946 let bytes_len = len * envelope_size;
4947 let offset = decoder.out_of_line_offset(bytes_len)?;
4948 let mut _next_ordinal_to_read = 0;
4950 let mut next_offset = offset;
4951 let end_offset = offset + bytes_len;
4952 _next_ordinal_to_read += 1;
4953 if next_offset >= end_offset {
4954 return Ok(());
4955 }
4956
4957 while _next_ordinal_to_read < 1 {
4959 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4960 _next_ordinal_to_read += 1;
4961 next_offset += envelope_size;
4962 }
4963
4964 let next_out_of_line = decoder.next_out_of_line();
4965 let handles_before = decoder.remaining_handles();
4966 if let Some((inlined, num_bytes, num_handles)) =
4967 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4968 {
4969 let member_inline_size =
4970 <CompositeDriverInfo as fidl::encoding::TypeMarker>::inline_size(
4971 decoder.context,
4972 );
4973 if inlined != (member_inline_size <= 4) {
4974 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4975 }
4976 let inner_offset;
4977 let mut inner_depth = depth.clone();
4978 if inlined {
4979 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4980 inner_offset = next_offset;
4981 } else {
4982 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4983 inner_depth.increment()?;
4984 }
4985 let val_ref = self
4986 .composite_driver
4987 .get_or_insert_with(|| fidl::new_empty!(CompositeDriverInfo, D));
4988 fidl::decode!(CompositeDriverInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
4989 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4990 {
4991 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4992 }
4993 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4994 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4995 }
4996 }
4997
4998 next_offset += envelope_size;
4999 _next_ordinal_to_read += 1;
5000 if next_offset >= end_offset {
5001 return Ok(());
5002 }
5003
5004 while _next_ordinal_to_read < 2 {
5006 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5007 _next_ordinal_to_read += 1;
5008 next_offset += envelope_size;
5009 }
5010
5011 let next_out_of_line = decoder.next_out_of_line();
5012 let handles_before = decoder.remaining_handles();
5013 if let Some((inlined, num_bytes, num_handles)) =
5014 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5015 {
5016 let member_inline_size = <fidl::encoding::UnboundedVector<
5017 fidl::encoding::UnboundedString,
5018 > as fidl::encoding::TypeMarker>::inline_size(
5019 decoder.context
5020 );
5021 if inlined != (member_inline_size <= 4) {
5022 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5023 }
5024 let inner_offset;
5025 let mut inner_depth = depth.clone();
5026 if inlined {
5027 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5028 inner_offset = next_offset;
5029 } else {
5030 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5031 inner_depth.increment()?;
5032 }
5033 let val_ref = self.parent_names.get_or_insert_with(|| {
5034 fidl::new_empty!(
5035 fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
5036 D
5037 )
5038 });
5039 fidl::decode!(
5040 fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
5041 D,
5042 val_ref,
5043 decoder,
5044 inner_offset,
5045 inner_depth
5046 )?;
5047 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5048 {
5049 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5050 }
5051 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5052 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5053 }
5054 }
5055
5056 next_offset += envelope_size;
5057 _next_ordinal_to_read += 1;
5058 if next_offset >= end_offset {
5059 return Ok(());
5060 }
5061
5062 while _next_ordinal_to_read < 3 {
5064 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5065 _next_ordinal_to_read += 1;
5066 next_offset += envelope_size;
5067 }
5068
5069 let next_out_of_line = decoder.next_out_of_line();
5070 let handles_before = decoder.remaining_handles();
5071 if let Some((inlined, num_bytes, num_handles)) =
5072 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5073 {
5074 let member_inline_size =
5075 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5076 if inlined != (member_inline_size <= 4) {
5077 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5078 }
5079 let inner_offset;
5080 let mut inner_depth = depth.clone();
5081 if inlined {
5082 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5083 inner_offset = next_offset;
5084 } else {
5085 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5086 inner_depth.increment()?;
5087 }
5088 let val_ref =
5089 self.primary_parent_index.get_or_insert_with(|| fidl::new_empty!(u32, D));
5090 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
5091 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5092 {
5093 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5094 }
5095 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5096 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5097 }
5098 }
5099
5100 next_offset += envelope_size;
5101
5102 while next_offset < end_offset {
5104 _next_ordinal_to_read += 1;
5105 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5106 next_offset += envelope_size;
5107 }
5108
5109 Ok(())
5110 }
5111 }
5112
5113 impl CompositeInfo {
5114 #[inline(always)]
5115 fn max_ordinal_present(&self) -> u64 {
5116 if let Some(_) = self.matched_driver {
5117 return 2;
5118 }
5119 if let Some(_) = self.spec {
5120 return 1;
5121 }
5122 0
5123 }
5124 }
5125
5126 impl fidl::encoding::ValueTypeMarker for CompositeInfo {
5127 type Borrowed<'a> = &'a Self;
5128 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5129 value
5130 }
5131 }
5132
5133 unsafe impl fidl::encoding::TypeMarker for CompositeInfo {
5134 type Owned = Self;
5135
5136 #[inline(always)]
5137 fn inline_align(_context: fidl::encoding::Context) -> usize {
5138 8
5139 }
5140
5141 #[inline(always)]
5142 fn inline_size(_context: fidl::encoding::Context) -> usize {
5143 16
5144 }
5145 }
5146
5147 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeInfo, D>
5148 for &CompositeInfo
5149 {
5150 unsafe fn encode(
5151 self,
5152 encoder: &mut fidl::encoding::Encoder<'_, D>,
5153 offset: usize,
5154 mut depth: fidl::encoding::Depth,
5155 ) -> fidl::Result<()> {
5156 encoder.debug_check_bounds::<CompositeInfo>(offset);
5157 let max_ordinal: u64 = self.max_ordinal_present();
5159 encoder.write_num(max_ordinal, offset);
5160 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5161 if max_ordinal == 0 {
5163 return Ok(());
5164 }
5165 depth.increment()?;
5166 let envelope_size = 8;
5167 let bytes_len = max_ordinal as usize * envelope_size;
5168 #[allow(unused_variables)]
5169 let offset = encoder.out_of_line_offset(bytes_len);
5170 let mut _prev_end_offset: usize = 0;
5171 if 1 > max_ordinal {
5172 return Ok(());
5173 }
5174
5175 let cur_offset: usize = (1 - 1) * envelope_size;
5178
5179 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5181
5182 fidl::encoding::encode_in_envelope_optional::<CompositeNodeSpec, D>(
5187 self.spec
5188 .as_ref()
5189 .map(<CompositeNodeSpec as fidl::encoding::ValueTypeMarker>::borrow),
5190 encoder,
5191 offset + cur_offset,
5192 depth,
5193 )?;
5194
5195 _prev_end_offset = cur_offset + envelope_size;
5196 if 2 > max_ordinal {
5197 return Ok(());
5198 }
5199
5200 let cur_offset: usize = (2 - 1) * envelope_size;
5203
5204 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5206
5207 fidl::encoding::encode_in_envelope_optional::<CompositeDriverMatch, D>(
5212 self.matched_driver
5213 .as_ref()
5214 .map(<CompositeDriverMatch as fidl::encoding::ValueTypeMarker>::borrow),
5215 encoder,
5216 offset + cur_offset,
5217 depth,
5218 )?;
5219
5220 _prev_end_offset = cur_offset + envelope_size;
5221
5222 Ok(())
5223 }
5224 }
5225
5226 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeInfo {
5227 #[inline(always)]
5228 fn new_empty() -> Self {
5229 Self::default()
5230 }
5231
5232 unsafe fn decode(
5233 &mut self,
5234 decoder: &mut fidl::encoding::Decoder<'_, D>,
5235 offset: usize,
5236 mut depth: fidl::encoding::Depth,
5237 ) -> fidl::Result<()> {
5238 decoder.debug_check_bounds::<Self>(offset);
5239 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5240 None => return Err(fidl::Error::NotNullable),
5241 Some(len) => len,
5242 };
5243 if len == 0 {
5245 return Ok(());
5246 };
5247 depth.increment()?;
5248 let envelope_size = 8;
5249 let bytes_len = len * envelope_size;
5250 let offset = decoder.out_of_line_offset(bytes_len)?;
5251 let mut _next_ordinal_to_read = 0;
5253 let mut next_offset = offset;
5254 let end_offset = offset + bytes_len;
5255 _next_ordinal_to_read += 1;
5256 if next_offset >= end_offset {
5257 return Ok(());
5258 }
5259
5260 while _next_ordinal_to_read < 1 {
5262 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5263 _next_ordinal_to_read += 1;
5264 next_offset += envelope_size;
5265 }
5266
5267 let next_out_of_line = decoder.next_out_of_line();
5268 let handles_before = decoder.remaining_handles();
5269 if let Some((inlined, num_bytes, num_handles)) =
5270 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5271 {
5272 let member_inline_size =
5273 <CompositeNodeSpec as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5274 if inlined != (member_inline_size <= 4) {
5275 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5276 }
5277 let inner_offset;
5278 let mut inner_depth = depth.clone();
5279 if inlined {
5280 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5281 inner_offset = next_offset;
5282 } else {
5283 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5284 inner_depth.increment()?;
5285 }
5286 let val_ref =
5287 self.spec.get_or_insert_with(|| fidl::new_empty!(CompositeNodeSpec, D));
5288 fidl::decode!(CompositeNodeSpec, D, val_ref, decoder, inner_offset, inner_depth)?;
5289 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5290 {
5291 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5292 }
5293 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5294 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5295 }
5296 }
5297
5298 next_offset += envelope_size;
5299 _next_ordinal_to_read += 1;
5300 if next_offset >= end_offset {
5301 return Ok(());
5302 }
5303
5304 while _next_ordinal_to_read < 2 {
5306 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5307 _next_ordinal_to_read += 1;
5308 next_offset += envelope_size;
5309 }
5310
5311 let next_out_of_line = decoder.next_out_of_line();
5312 let handles_before = decoder.remaining_handles();
5313 if let Some((inlined, num_bytes, num_handles)) =
5314 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5315 {
5316 let member_inline_size =
5317 <CompositeDriverMatch as fidl::encoding::TypeMarker>::inline_size(
5318 decoder.context,
5319 );
5320 if inlined != (member_inline_size <= 4) {
5321 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5322 }
5323 let inner_offset;
5324 let mut inner_depth = depth.clone();
5325 if inlined {
5326 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5327 inner_offset = next_offset;
5328 } else {
5329 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5330 inner_depth.increment()?;
5331 }
5332 let val_ref = self
5333 .matched_driver
5334 .get_or_insert_with(|| fidl::new_empty!(CompositeDriverMatch, D));
5335 fidl::decode!(
5336 CompositeDriverMatch,
5337 D,
5338 val_ref,
5339 decoder,
5340 inner_offset,
5341 inner_depth
5342 )?;
5343 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5344 {
5345 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5346 }
5347 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5348 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5349 }
5350 }
5351
5352 next_offset += envelope_size;
5353
5354 while next_offset < end_offset {
5356 _next_ordinal_to_read += 1;
5357 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5358 next_offset += envelope_size;
5359 }
5360
5361 Ok(())
5362 }
5363 }
5364
5365 impl CompositeNodeSpec {
5366 #[inline(always)]
5367 fn max_ordinal_present(&self) -> u64 {
5368 if let Some(_) = self.parents {
5369 return 2;
5370 }
5371 if let Some(_) = self.name {
5372 return 1;
5373 }
5374 0
5375 }
5376 }
5377
5378 impl fidl::encoding::ValueTypeMarker for CompositeNodeSpec {
5379 type Borrowed<'a> = &'a Self;
5380 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5381 value
5382 }
5383 }
5384
5385 unsafe impl fidl::encoding::TypeMarker for CompositeNodeSpec {
5386 type Owned = Self;
5387
5388 #[inline(always)]
5389 fn inline_align(_context: fidl::encoding::Context) -> usize {
5390 8
5391 }
5392
5393 #[inline(always)]
5394 fn inline_size(_context: fidl::encoding::Context) -> usize {
5395 16
5396 }
5397 }
5398
5399 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeNodeSpec, D>
5400 for &CompositeNodeSpec
5401 {
5402 unsafe fn encode(
5403 self,
5404 encoder: &mut fidl::encoding::Encoder<'_, D>,
5405 offset: usize,
5406 mut depth: fidl::encoding::Depth,
5407 ) -> fidl::Result<()> {
5408 encoder.debug_check_bounds::<CompositeNodeSpec>(offset);
5409 let max_ordinal: u64 = self.max_ordinal_present();
5411 encoder.write_num(max_ordinal, offset);
5412 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5413 if max_ordinal == 0 {
5415 return Ok(());
5416 }
5417 depth.increment()?;
5418 let envelope_size = 8;
5419 let bytes_len = max_ordinal as usize * envelope_size;
5420 #[allow(unused_variables)]
5421 let offset = encoder.out_of_line_offset(bytes_len);
5422 let mut _prev_end_offset: usize = 0;
5423 if 1 > max_ordinal {
5424 return Ok(());
5425 }
5426
5427 let cur_offset: usize = (1 - 1) * envelope_size;
5430
5431 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5433
5434 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
5439 self.name.as_ref().map(
5440 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
5441 ),
5442 encoder,
5443 offset + cur_offset,
5444 depth,
5445 )?;
5446
5447 _prev_end_offset = cur_offset + envelope_size;
5448 if 2 > max_ordinal {
5449 return Ok(());
5450 }
5451
5452 let cur_offset: usize = (2 - 1) * envelope_size;
5455
5456 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5458
5459 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ParentSpec>, D>(
5464 self.parents.as_ref().map(<fidl::encoding::UnboundedVector<ParentSpec> as fidl::encoding::ValueTypeMarker>::borrow),
5465 encoder, offset + cur_offset, depth
5466 )?;
5467
5468 _prev_end_offset = cur_offset + envelope_size;
5469
5470 Ok(())
5471 }
5472 }
5473
5474 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeNodeSpec {
5475 #[inline(always)]
5476 fn new_empty() -> Self {
5477 Self::default()
5478 }
5479
5480 unsafe fn decode(
5481 &mut self,
5482 decoder: &mut fidl::encoding::Decoder<'_, D>,
5483 offset: usize,
5484 mut depth: fidl::encoding::Depth,
5485 ) -> fidl::Result<()> {
5486 decoder.debug_check_bounds::<Self>(offset);
5487 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5488 None => return Err(fidl::Error::NotNullable),
5489 Some(len) => len,
5490 };
5491 if len == 0 {
5493 return Ok(());
5494 };
5495 depth.increment()?;
5496 let envelope_size = 8;
5497 let bytes_len = len * envelope_size;
5498 let offset = decoder.out_of_line_offset(bytes_len)?;
5499 let mut _next_ordinal_to_read = 0;
5501 let mut next_offset = offset;
5502 let end_offset = offset + bytes_len;
5503 _next_ordinal_to_read += 1;
5504 if next_offset >= end_offset {
5505 return Ok(());
5506 }
5507
5508 while _next_ordinal_to_read < 1 {
5510 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5511 _next_ordinal_to_read += 1;
5512 next_offset += envelope_size;
5513 }
5514
5515 let next_out_of_line = decoder.next_out_of_line();
5516 let handles_before = decoder.remaining_handles();
5517 if let Some((inlined, num_bytes, num_handles)) =
5518 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5519 {
5520 let member_inline_size =
5521 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
5522 decoder.context,
5523 );
5524 if inlined != (member_inline_size <= 4) {
5525 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5526 }
5527 let inner_offset;
5528 let mut inner_depth = depth.clone();
5529 if inlined {
5530 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5531 inner_offset = next_offset;
5532 } else {
5533 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5534 inner_depth.increment()?;
5535 }
5536 let val_ref = self
5537 .name
5538 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
5539 fidl::decode!(
5540 fidl::encoding::UnboundedString,
5541 D,
5542 val_ref,
5543 decoder,
5544 inner_offset,
5545 inner_depth
5546 )?;
5547 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5548 {
5549 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5550 }
5551 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5552 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5553 }
5554 }
5555
5556 next_offset += envelope_size;
5557 _next_ordinal_to_read += 1;
5558 if next_offset >= end_offset {
5559 return Ok(());
5560 }
5561
5562 while _next_ordinal_to_read < 2 {
5564 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5565 _next_ordinal_to_read += 1;
5566 next_offset += envelope_size;
5567 }
5568
5569 let next_out_of_line = decoder.next_out_of_line();
5570 let handles_before = decoder.remaining_handles();
5571 if let Some((inlined, num_bytes, num_handles)) =
5572 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5573 {
5574 let member_inline_size = <fidl::encoding::UnboundedVector<ParentSpec> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5575 if inlined != (member_inline_size <= 4) {
5576 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5577 }
5578 let inner_offset;
5579 let mut inner_depth = depth.clone();
5580 if inlined {
5581 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5582 inner_offset = next_offset;
5583 } else {
5584 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5585 inner_depth.increment()?;
5586 }
5587 let val_ref = self.parents.get_or_insert_with(|| {
5588 fidl::new_empty!(fidl::encoding::UnboundedVector<ParentSpec>, D)
5589 });
5590 fidl::decode!(
5591 fidl::encoding::UnboundedVector<ParentSpec>,
5592 D,
5593 val_ref,
5594 decoder,
5595 inner_offset,
5596 inner_depth
5597 )?;
5598 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5599 {
5600 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5601 }
5602 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5603 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5604 }
5605 }
5606
5607 next_offset += envelope_size;
5608
5609 while next_offset < end_offset {
5611 _next_ordinal_to_read += 1;
5612 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5613 next_offset += envelope_size;
5614 }
5615
5616 Ok(())
5617 }
5618 }
5619
5620 impl CompositeParent {
5621 #[inline(always)]
5622 fn max_ordinal_present(&self) -> u64 {
5623 if let Some(_) = self.index {
5624 return 2;
5625 }
5626 if let Some(_) = self.composite {
5627 return 1;
5628 }
5629 0
5630 }
5631 }
5632
5633 impl fidl::encoding::ValueTypeMarker for CompositeParent {
5634 type Borrowed<'a> = &'a Self;
5635 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5636 value
5637 }
5638 }
5639
5640 unsafe impl fidl::encoding::TypeMarker for CompositeParent {
5641 type Owned = Self;
5642
5643 #[inline(always)]
5644 fn inline_align(_context: fidl::encoding::Context) -> usize {
5645 8
5646 }
5647
5648 #[inline(always)]
5649 fn inline_size(_context: fidl::encoding::Context) -> usize {
5650 16
5651 }
5652 }
5653
5654 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeParent, D>
5655 for &CompositeParent
5656 {
5657 unsafe fn encode(
5658 self,
5659 encoder: &mut fidl::encoding::Encoder<'_, D>,
5660 offset: usize,
5661 mut depth: fidl::encoding::Depth,
5662 ) -> fidl::Result<()> {
5663 encoder.debug_check_bounds::<CompositeParent>(offset);
5664 let max_ordinal: u64 = self.max_ordinal_present();
5666 encoder.write_num(max_ordinal, offset);
5667 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5668 if max_ordinal == 0 {
5670 return Ok(());
5671 }
5672 depth.increment()?;
5673 let envelope_size = 8;
5674 let bytes_len = max_ordinal as usize * envelope_size;
5675 #[allow(unused_variables)]
5676 let offset = encoder.out_of_line_offset(bytes_len);
5677 let mut _prev_end_offset: usize = 0;
5678 if 1 > max_ordinal {
5679 return Ok(());
5680 }
5681
5682 let cur_offset: usize = (1 - 1) * envelope_size;
5685
5686 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5688
5689 fidl::encoding::encode_in_envelope_optional::<CompositeInfo, D>(
5694 self.composite
5695 .as_ref()
5696 .map(<CompositeInfo as fidl::encoding::ValueTypeMarker>::borrow),
5697 encoder,
5698 offset + cur_offset,
5699 depth,
5700 )?;
5701
5702 _prev_end_offset = cur_offset + envelope_size;
5703 if 2 > max_ordinal {
5704 return Ok(());
5705 }
5706
5707 let cur_offset: usize = (2 - 1) * envelope_size;
5710
5711 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5713
5714 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5719 self.index.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5720 encoder,
5721 offset + cur_offset,
5722 depth,
5723 )?;
5724
5725 _prev_end_offset = cur_offset + envelope_size;
5726
5727 Ok(())
5728 }
5729 }
5730
5731 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeParent {
5732 #[inline(always)]
5733 fn new_empty() -> Self {
5734 Self::default()
5735 }
5736
5737 unsafe fn decode(
5738 &mut self,
5739 decoder: &mut fidl::encoding::Decoder<'_, D>,
5740 offset: usize,
5741 mut depth: fidl::encoding::Depth,
5742 ) -> fidl::Result<()> {
5743 decoder.debug_check_bounds::<Self>(offset);
5744 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5745 None => return Err(fidl::Error::NotNullable),
5746 Some(len) => len,
5747 };
5748 if len == 0 {
5750 return Ok(());
5751 };
5752 depth.increment()?;
5753 let envelope_size = 8;
5754 let bytes_len = len * envelope_size;
5755 let offset = decoder.out_of_line_offset(bytes_len)?;
5756 let mut _next_ordinal_to_read = 0;
5758 let mut next_offset = offset;
5759 let end_offset = offset + bytes_len;
5760 _next_ordinal_to_read += 1;
5761 if next_offset >= end_offset {
5762 return Ok(());
5763 }
5764
5765 while _next_ordinal_to_read < 1 {
5767 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5768 _next_ordinal_to_read += 1;
5769 next_offset += envelope_size;
5770 }
5771
5772 let next_out_of_line = decoder.next_out_of_line();
5773 let handles_before = decoder.remaining_handles();
5774 if let Some((inlined, num_bytes, num_handles)) =
5775 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5776 {
5777 let member_inline_size =
5778 <CompositeInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5779 if inlined != (member_inline_size <= 4) {
5780 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5781 }
5782 let inner_offset;
5783 let mut inner_depth = depth.clone();
5784 if inlined {
5785 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5786 inner_offset = next_offset;
5787 } else {
5788 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5789 inner_depth.increment()?;
5790 }
5791 let val_ref =
5792 self.composite.get_or_insert_with(|| fidl::new_empty!(CompositeInfo, D));
5793 fidl::decode!(CompositeInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
5794 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5795 {
5796 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5797 }
5798 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5799 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5800 }
5801 }
5802
5803 next_offset += envelope_size;
5804 _next_ordinal_to_read += 1;
5805 if next_offset >= end_offset {
5806 return Ok(());
5807 }
5808
5809 while _next_ordinal_to_read < 2 {
5811 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5812 _next_ordinal_to_read += 1;
5813 next_offset += envelope_size;
5814 }
5815
5816 let next_out_of_line = decoder.next_out_of_line();
5817 let handles_before = decoder.remaining_handles();
5818 if let Some((inlined, num_bytes, num_handles)) =
5819 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5820 {
5821 let member_inline_size =
5822 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5823 if inlined != (member_inline_size <= 4) {
5824 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5825 }
5826 let inner_offset;
5827 let mut inner_depth = depth.clone();
5828 if inlined {
5829 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5830 inner_offset = next_offset;
5831 } else {
5832 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5833 inner_depth.increment()?;
5834 }
5835 let val_ref = self.index.get_or_insert_with(|| fidl::new_empty!(u32, D));
5836 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
5837 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5838 {
5839 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5840 }
5841 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5842 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5843 }
5844 }
5845
5846 next_offset += envelope_size;
5847
5848 while next_offset < end_offset {
5850 _next_ordinal_to_read += 1;
5851 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5852 next_offset += envelope_size;
5853 }
5854
5855 Ok(())
5856 }
5857 }
5858
5859 impl DevfsAddArgs {
5860 #[inline(always)]
5861 fn max_ordinal_present(&self) -> u64 {
5862 if let Some(_) = self.controller_connector {
5863 return 5;
5864 }
5865 if let Some(_) = self.connector_supports {
5866 return 4;
5867 }
5868 if let Some(_) = self.inspect {
5869 return 3;
5870 }
5871 if let Some(_) = self.class_name {
5872 return 2;
5873 }
5874 if let Some(_) = self.connector {
5875 return 1;
5876 }
5877 0
5878 }
5879 }
5880
5881 impl fidl::encoding::ResourceTypeMarker for DevfsAddArgs {
5882 type Borrowed<'a> = &'a mut Self;
5883 fn take_or_borrow<'a>(
5884 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5885 ) -> Self::Borrowed<'a> {
5886 value
5887 }
5888 }
5889
5890 unsafe impl fidl::encoding::TypeMarker for DevfsAddArgs {
5891 type Owned = Self;
5892
5893 #[inline(always)]
5894 fn inline_align(_context: fidl::encoding::Context) -> usize {
5895 8
5896 }
5897
5898 #[inline(always)]
5899 fn inline_size(_context: fidl::encoding::Context) -> usize {
5900 16
5901 }
5902 }
5903
5904 unsafe impl fidl::encoding::Encode<DevfsAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
5905 for &mut DevfsAddArgs
5906 {
5907 unsafe fn encode(
5908 self,
5909 encoder: &mut fidl::encoding::Encoder<
5910 '_,
5911 fidl::encoding::DefaultFuchsiaResourceDialect,
5912 >,
5913 offset: usize,
5914 mut depth: fidl::encoding::Depth,
5915 ) -> fidl::Result<()> {
5916 encoder.debug_check_bounds::<DevfsAddArgs>(offset);
5917 let max_ordinal: u64 = self.max_ordinal_present();
5919 encoder.write_num(max_ordinal, offset);
5920 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5921 if max_ordinal == 0 {
5923 return Ok(());
5924 }
5925 depth.increment()?;
5926 let envelope_size = 8;
5927 let bytes_len = max_ordinal as usize * envelope_size;
5928 #[allow(unused_variables)]
5929 let offset = encoder.out_of_line_offset(bytes_len);
5930 let mut _prev_end_offset: usize = 0;
5931 if 1 > max_ordinal {
5932 return Ok(());
5933 }
5934
5935 let cur_offset: usize = (1 - 1) * envelope_size;
5938
5939 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5941
5942 fidl::encoding::encode_in_envelope_optional::<
5947 fidl::encoding::Endpoint<
5948 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
5949 >,
5950 fidl::encoding::DefaultFuchsiaResourceDialect,
5951 >(
5952 self.connector.as_mut().map(
5953 <fidl::encoding::Endpoint<
5954 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
5955 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
5956 ),
5957 encoder,
5958 offset + cur_offset,
5959 depth,
5960 )?;
5961
5962 _prev_end_offset = cur_offset + envelope_size;
5963 if 2 > max_ordinal {
5964 return Ok(());
5965 }
5966
5967 let cur_offset: usize = (2 - 1) * envelope_size;
5970
5971 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5973
5974 fidl::encoding::encode_in_envelope_optional::<
5979 fidl::encoding::BoundedString<255>,
5980 fidl::encoding::DefaultFuchsiaResourceDialect,
5981 >(
5982 self.class_name.as_ref().map(
5983 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
5984 ),
5985 encoder,
5986 offset + cur_offset,
5987 depth,
5988 )?;
5989
5990 _prev_end_offset = cur_offset + envelope_size;
5991 if 3 > max_ordinal {
5992 return Ok(());
5993 }
5994
5995 let cur_offset: usize = (3 - 1) * envelope_size;
5998
5999 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6001
6002 fidl::encoding::encode_in_envelope_optional::<
6007 fidl::encoding::HandleType<
6008 fidl::Vmo,
6009 { fidl::ObjectType::VMO.into_raw() },
6010 2147483648,
6011 >,
6012 fidl::encoding::DefaultFuchsiaResourceDialect,
6013 >(
6014 self.inspect.as_mut().map(
6015 <fidl::encoding::HandleType<
6016 fidl::Vmo,
6017 { fidl::ObjectType::VMO.into_raw() },
6018 2147483648,
6019 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
6020 ),
6021 encoder,
6022 offset + cur_offset,
6023 depth,
6024 )?;
6025
6026 _prev_end_offset = cur_offset + envelope_size;
6027 if 4 > max_ordinal {
6028 return Ok(());
6029 }
6030
6031 let cur_offset: usize = (4 - 1) * envelope_size;
6034
6035 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6037
6038 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_device_fs::ConnectionType, fidl::encoding::DefaultFuchsiaResourceDialect>(
6043 self.connector_supports.as_ref().map(<fidl_fuchsia_device_fs::ConnectionType as fidl::encoding::ValueTypeMarker>::borrow),
6044 encoder, offset + cur_offset, depth
6045 )?;
6046
6047 _prev_end_offset = cur_offset + envelope_size;
6048 if 5 > max_ordinal {
6049 return Ok(());
6050 }
6051
6052 let cur_offset: usize = (5 - 1) * envelope_size;
6055
6056 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6058
6059 fidl::encoding::encode_in_envelope_optional::<
6064 fidl::encoding::Endpoint<
6065 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
6066 >,
6067 fidl::encoding::DefaultFuchsiaResourceDialect,
6068 >(
6069 self.controller_connector.as_mut().map(
6070 <fidl::encoding::Endpoint<
6071 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
6072 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
6073 ),
6074 encoder,
6075 offset + cur_offset,
6076 depth,
6077 )?;
6078
6079 _prev_end_offset = cur_offset + envelope_size;
6080
6081 Ok(())
6082 }
6083 }
6084
6085 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for DevfsAddArgs {
6086 #[inline(always)]
6087 fn new_empty() -> Self {
6088 Self::default()
6089 }
6090
6091 unsafe fn decode(
6092 &mut self,
6093 decoder: &mut fidl::encoding::Decoder<
6094 '_,
6095 fidl::encoding::DefaultFuchsiaResourceDialect,
6096 >,
6097 offset: usize,
6098 mut depth: fidl::encoding::Depth,
6099 ) -> fidl::Result<()> {
6100 decoder.debug_check_bounds::<Self>(offset);
6101 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6102 None => return Err(fidl::Error::NotNullable),
6103 Some(len) => len,
6104 };
6105 if len == 0 {
6107 return Ok(());
6108 };
6109 depth.increment()?;
6110 let envelope_size = 8;
6111 let bytes_len = len * envelope_size;
6112 let offset = decoder.out_of_line_offset(bytes_len)?;
6113 let mut _next_ordinal_to_read = 0;
6115 let mut next_offset = offset;
6116 let end_offset = offset + bytes_len;
6117 _next_ordinal_to_read += 1;
6118 if next_offset >= end_offset {
6119 return Ok(());
6120 }
6121
6122 while _next_ordinal_to_read < 1 {
6124 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6125 _next_ordinal_to_read += 1;
6126 next_offset += envelope_size;
6127 }
6128
6129 let next_out_of_line = decoder.next_out_of_line();
6130 let handles_before = decoder.remaining_handles();
6131 if let Some((inlined, num_bytes, num_handles)) =
6132 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6133 {
6134 let member_inline_size = <fidl::encoding::Endpoint<
6135 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
6136 > as fidl::encoding::TypeMarker>::inline_size(
6137 decoder.context
6138 );
6139 if inlined != (member_inline_size <= 4) {
6140 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6141 }
6142 let inner_offset;
6143 let mut inner_depth = depth.clone();
6144 if inlined {
6145 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6146 inner_offset = next_offset;
6147 } else {
6148 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6149 inner_depth.increment()?;
6150 }
6151 let val_ref = self.connector.get_or_insert_with(|| {
6152 fidl::new_empty!(
6153 fidl::encoding::Endpoint<
6154 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
6155 >,
6156 fidl::encoding::DefaultFuchsiaResourceDialect
6157 )
6158 });
6159 fidl::decode!(
6160 fidl::encoding::Endpoint<
6161 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
6162 >,
6163 fidl::encoding::DefaultFuchsiaResourceDialect,
6164 val_ref,
6165 decoder,
6166 inner_offset,
6167 inner_depth
6168 )?;
6169 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6170 {
6171 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6172 }
6173 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6174 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6175 }
6176 }
6177
6178 next_offset += envelope_size;
6179 _next_ordinal_to_read += 1;
6180 if next_offset >= end_offset {
6181 return Ok(());
6182 }
6183
6184 while _next_ordinal_to_read < 2 {
6186 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6187 _next_ordinal_to_read += 1;
6188 next_offset += envelope_size;
6189 }
6190
6191 let next_out_of_line = decoder.next_out_of_line();
6192 let handles_before = decoder.remaining_handles();
6193 if let Some((inlined, num_bytes, num_handles)) =
6194 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6195 {
6196 let member_inline_size =
6197 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
6198 decoder.context,
6199 );
6200 if inlined != (member_inline_size <= 4) {
6201 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6202 }
6203 let inner_offset;
6204 let mut inner_depth = depth.clone();
6205 if inlined {
6206 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6207 inner_offset = next_offset;
6208 } else {
6209 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6210 inner_depth.increment()?;
6211 }
6212 let val_ref = self.class_name.get_or_insert_with(|| {
6213 fidl::new_empty!(
6214 fidl::encoding::BoundedString<255>,
6215 fidl::encoding::DefaultFuchsiaResourceDialect
6216 )
6217 });
6218 fidl::decode!(
6219 fidl::encoding::BoundedString<255>,
6220 fidl::encoding::DefaultFuchsiaResourceDialect,
6221 val_ref,
6222 decoder,
6223 inner_offset,
6224 inner_depth
6225 )?;
6226 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6227 {
6228 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6229 }
6230 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6231 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6232 }
6233 }
6234
6235 next_offset += envelope_size;
6236 _next_ordinal_to_read += 1;
6237 if next_offset >= end_offset {
6238 return Ok(());
6239 }
6240
6241 while _next_ordinal_to_read < 3 {
6243 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6244 _next_ordinal_to_read += 1;
6245 next_offset += envelope_size;
6246 }
6247
6248 let next_out_of_line = decoder.next_out_of_line();
6249 let handles_before = decoder.remaining_handles();
6250 if let Some((inlined, num_bytes, num_handles)) =
6251 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6252 {
6253 let member_inline_size = <fidl::encoding::HandleType<
6254 fidl::Vmo,
6255 { fidl::ObjectType::VMO.into_raw() },
6256 2147483648,
6257 > as fidl::encoding::TypeMarker>::inline_size(
6258 decoder.context
6259 );
6260 if inlined != (member_inline_size <= 4) {
6261 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6262 }
6263 let inner_offset;
6264 let mut inner_depth = depth.clone();
6265 if inlined {
6266 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6267 inner_offset = next_offset;
6268 } else {
6269 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6270 inner_depth.increment()?;
6271 }
6272 let val_ref =
6273 self.inspect.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
6274 fidl::decode!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
6275 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6276 {
6277 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6278 }
6279 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6280 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6281 }
6282 }
6283
6284 next_offset += envelope_size;
6285 _next_ordinal_to_read += 1;
6286 if next_offset >= end_offset {
6287 return Ok(());
6288 }
6289
6290 while _next_ordinal_to_read < 4 {
6292 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6293 _next_ordinal_to_read += 1;
6294 next_offset += envelope_size;
6295 }
6296
6297 let next_out_of_line = decoder.next_out_of_line();
6298 let handles_before = decoder.remaining_handles();
6299 if let Some((inlined, num_bytes, num_handles)) =
6300 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6301 {
6302 let member_inline_size = <fidl_fuchsia_device_fs::ConnectionType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6303 if inlined != (member_inline_size <= 4) {
6304 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6305 }
6306 let inner_offset;
6307 let mut inner_depth = depth.clone();
6308 if inlined {
6309 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6310 inner_offset = next_offset;
6311 } else {
6312 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6313 inner_depth.increment()?;
6314 }
6315 let val_ref = self.connector_supports.get_or_insert_with(|| {
6316 fidl::new_empty!(
6317 fidl_fuchsia_device_fs::ConnectionType,
6318 fidl::encoding::DefaultFuchsiaResourceDialect
6319 )
6320 });
6321 fidl::decode!(
6322 fidl_fuchsia_device_fs::ConnectionType,
6323 fidl::encoding::DefaultFuchsiaResourceDialect,
6324 val_ref,
6325 decoder,
6326 inner_offset,
6327 inner_depth
6328 )?;
6329 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6330 {
6331 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6332 }
6333 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6334 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6335 }
6336 }
6337
6338 next_offset += envelope_size;
6339 _next_ordinal_to_read += 1;
6340 if next_offset >= end_offset {
6341 return Ok(());
6342 }
6343
6344 while _next_ordinal_to_read < 5 {
6346 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6347 _next_ordinal_to_read += 1;
6348 next_offset += envelope_size;
6349 }
6350
6351 let next_out_of_line = decoder.next_out_of_line();
6352 let handles_before = decoder.remaining_handles();
6353 if let Some((inlined, num_bytes, num_handles)) =
6354 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6355 {
6356 let member_inline_size = <fidl::encoding::Endpoint<
6357 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
6358 > as fidl::encoding::TypeMarker>::inline_size(
6359 decoder.context
6360 );
6361 if inlined != (member_inline_size <= 4) {
6362 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6363 }
6364 let inner_offset;
6365 let mut inner_depth = depth.clone();
6366 if inlined {
6367 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6368 inner_offset = next_offset;
6369 } else {
6370 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6371 inner_depth.increment()?;
6372 }
6373 let val_ref = self.controller_connector.get_or_insert_with(|| {
6374 fidl::new_empty!(
6375 fidl::encoding::Endpoint<
6376 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
6377 >,
6378 fidl::encoding::DefaultFuchsiaResourceDialect
6379 )
6380 });
6381 fidl::decode!(
6382 fidl::encoding::Endpoint<
6383 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
6384 >,
6385 fidl::encoding::DefaultFuchsiaResourceDialect,
6386 val_ref,
6387 decoder,
6388 inner_offset,
6389 inner_depth
6390 )?;
6391 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6392 {
6393 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6394 }
6395 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6396 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6397 }
6398 }
6399
6400 next_offset += envelope_size;
6401
6402 while next_offset < end_offset {
6404 _next_ordinal_to_read += 1;
6405 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6406 next_offset += envelope_size;
6407 }
6408
6409 Ok(())
6410 }
6411 }
6412
6413 impl DeviceCategory {
6414 #[inline(always)]
6415 fn max_ordinal_present(&self) -> u64 {
6416 if let Some(_) = self.subcategory {
6417 return 2;
6418 }
6419 if let Some(_) = self.category {
6420 return 1;
6421 }
6422 0
6423 }
6424 }
6425
6426 impl fidl::encoding::ValueTypeMarker for DeviceCategory {
6427 type Borrowed<'a> = &'a Self;
6428 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6429 value
6430 }
6431 }
6432
6433 unsafe impl fidl::encoding::TypeMarker for DeviceCategory {
6434 type Owned = Self;
6435
6436 #[inline(always)]
6437 fn inline_align(_context: fidl::encoding::Context) -> usize {
6438 8
6439 }
6440
6441 #[inline(always)]
6442 fn inline_size(_context: fidl::encoding::Context) -> usize {
6443 16
6444 }
6445 }
6446
6447 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceCategory, D>
6448 for &DeviceCategory
6449 {
6450 unsafe fn encode(
6451 self,
6452 encoder: &mut fidl::encoding::Encoder<'_, D>,
6453 offset: usize,
6454 mut depth: fidl::encoding::Depth,
6455 ) -> fidl::Result<()> {
6456 encoder.debug_check_bounds::<DeviceCategory>(offset);
6457 let max_ordinal: u64 = self.max_ordinal_present();
6459 encoder.write_num(max_ordinal, offset);
6460 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6461 if max_ordinal == 0 {
6463 return Ok(());
6464 }
6465 depth.increment()?;
6466 let envelope_size = 8;
6467 let bytes_len = max_ordinal as usize * envelope_size;
6468 #[allow(unused_variables)]
6469 let offset = encoder.out_of_line_offset(bytes_len);
6470 let mut _prev_end_offset: usize = 0;
6471 if 1 > max_ordinal {
6472 return Ok(());
6473 }
6474
6475 let cur_offset: usize = (1 - 1) * envelope_size;
6478
6479 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6481
6482 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
6487 self.category.as_ref().map(
6488 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
6489 ),
6490 encoder,
6491 offset + cur_offset,
6492 depth,
6493 )?;
6494
6495 _prev_end_offset = cur_offset + envelope_size;
6496 if 2 > max_ordinal {
6497 return Ok(());
6498 }
6499
6500 let cur_offset: usize = (2 - 1) * envelope_size;
6503
6504 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6506
6507 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
6512 self.subcategory.as_ref().map(
6513 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
6514 ),
6515 encoder,
6516 offset + cur_offset,
6517 depth,
6518 )?;
6519
6520 _prev_end_offset = cur_offset + envelope_size;
6521
6522 Ok(())
6523 }
6524 }
6525
6526 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceCategory {
6527 #[inline(always)]
6528 fn new_empty() -> Self {
6529 Self::default()
6530 }
6531
6532 unsafe fn decode(
6533 &mut self,
6534 decoder: &mut fidl::encoding::Decoder<'_, D>,
6535 offset: usize,
6536 mut depth: fidl::encoding::Depth,
6537 ) -> fidl::Result<()> {
6538 decoder.debug_check_bounds::<Self>(offset);
6539 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6540 None => return Err(fidl::Error::NotNullable),
6541 Some(len) => len,
6542 };
6543 if len == 0 {
6545 return Ok(());
6546 };
6547 depth.increment()?;
6548 let envelope_size = 8;
6549 let bytes_len = len * envelope_size;
6550 let offset = decoder.out_of_line_offset(bytes_len)?;
6551 let mut _next_ordinal_to_read = 0;
6553 let mut next_offset = offset;
6554 let end_offset = offset + bytes_len;
6555 _next_ordinal_to_read += 1;
6556 if next_offset >= end_offset {
6557 return Ok(());
6558 }
6559
6560 while _next_ordinal_to_read < 1 {
6562 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6563 _next_ordinal_to_read += 1;
6564 next_offset += envelope_size;
6565 }
6566
6567 let next_out_of_line = decoder.next_out_of_line();
6568 let handles_before = decoder.remaining_handles();
6569 if let Some((inlined, num_bytes, num_handles)) =
6570 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6571 {
6572 let member_inline_size =
6573 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
6574 decoder.context,
6575 );
6576 if inlined != (member_inline_size <= 4) {
6577 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6578 }
6579 let inner_offset;
6580 let mut inner_depth = depth.clone();
6581 if inlined {
6582 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6583 inner_offset = next_offset;
6584 } else {
6585 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6586 inner_depth.increment()?;
6587 }
6588 let val_ref = self
6589 .category
6590 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
6591 fidl::decode!(
6592 fidl::encoding::UnboundedString,
6593 D,
6594 val_ref,
6595 decoder,
6596 inner_offset,
6597 inner_depth
6598 )?;
6599 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6600 {
6601 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6602 }
6603 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6604 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6605 }
6606 }
6607
6608 next_offset += envelope_size;
6609 _next_ordinal_to_read += 1;
6610 if next_offset >= end_offset {
6611 return Ok(());
6612 }
6613
6614 while _next_ordinal_to_read < 2 {
6616 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6617 _next_ordinal_to_read += 1;
6618 next_offset += envelope_size;
6619 }
6620
6621 let next_out_of_line = decoder.next_out_of_line();
6622 let handles_before = decoder.remaining_handles();
6623 if let Some((inlined, num_bytes, num_handles)) =
6624 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6625 {
6626 let member_inline_size =
6627 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
6628 decoder.context,
6629 );
6630 if inlined != (member_inline_size <= 4) {
6631 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6632 }
6633 let inner_offset;
6634 let mut inner_depth = depth.clone();
6635 if inlined {
6636 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6637 inner_offset = next_offset;
6638 } else {
6639 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6640 inner_depth.increment()?;
6641 }
6642 let val_ref = self
6643 .subcategory
6644 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
6645 fidl::decode!(
6646 fidl::encoding::UnboundedString,
6647 D,
6648 val_ref,
6649 decoder,
6650 inner_offset,
6651 inner_depth
6652 )?;
6653 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6654 {
6655 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6656 }
6657 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6658 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6659 }
6660 }
6661
6662 next_offset += envelope_size;
6663
6664 while next_offset < end_offset {
6666 _next_ordinal_to_read += 1;
6667 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6668 next_offset += envelope_size;
6669 }
6670
6671 Ok(())
6672 }
6673 }
6674
6675 impl DriverInfo {
6676 #[inline(always)]
6677 fn max_ordinal_present(&self) -> u64 {
6678 if let Some(_) = self.is_disabled {
6679 return 9;
6680 }
6681 if let Some(_) = self.driver_framework_version {
6682 return 8;
6683 }
6684 if let Some(_) = self.bind_rules_bytecode {
6685 return 7;
6686 }
6687 if let Some(_) = self.device_categories {
6688 return 6;
6689 }
6690 if let Some(_) = self.is_fallback {
6691 return 5;
6692 }
6693 if let Some(_) = self.package_type {
6694 return 4;
6695 }
6696 if let Some(_) = self.colocate {
6697 return 3;
6698 }
6699 if let Some(_) = self.name {
6700 return 2;
6701 }
6702 if let Some(_) = self.url {
6703 return 1;
6704 }
6705 0
6706 }
6707 }
6708
6709 impl fidl::encoding::ValueTypeMarker for DriverInfo {
6710 type Borrowed<'a> = &'a Self;
6711 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6712 value
6713 }
6714 }
6715
6716 unsafe impl fidl::encoding::TypeMarker for DriverInfo {
6717 type Owned = Self;
6718
6719 #[inline(always)]
6720 fn inline_align(_context: fidl::encoding::Context) -> usize {
6721 8
6722 }
6723
6724 #[inline(always)]
6725 fn inline_size(_context: fidl::encoding::Context) -> usize {
6726 16
6727 }
6728 }
6729
6730 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DriverInfo, D>
6731 for &DriverInfo
6732 {
6733 unsafe fn encode(
6734 self,
6735 encoder: &mut fidl::encoding::Encoder<'_, D>,
6736 offset: usize,
6737 mut depth: fidl::encoding::Depth,
6738 ) -> fidl::Result<()> {
6739 encoder.debug_check_bounds::<DriverInfo>(offset);
6740 let max_ordinal: u64 = self.max_ordinal_present();
6742 encoder.write_num(max_ordinal, offset);
6743 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6744 if max_ordinal == 0 {
6746 return Ok(());
6747 }
6748 depth.increment()?;
6749 let envelope_size = 8;
6750 let bytes_len = max_ordinal as usize * envelope_size;
6751 #[allow(unused_variables)]
6752 let offset = encoder.out_of_line_offset(bytes_len);
6753 let mut _prev_end_offset: usize = 0;
6754 if 1 > max_ordinal {
6755 return Ok(());
6756 }
6757
6758 let cur_offset: usize = (1 - 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::BoundedString<4096>, D>(
6770 self.url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
6771 encoder, offset + cur_offset, depth
6772 )?;
6773
6774 _prev_end_offset = cur_offset + envelope_size;
6775 if 2 > max_ordinal {
6776 return Ok(());
6777 }
6778
6779 let cur_offset: usize = (2 - 1) * envelope_size;
6782
6783 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6785
6786 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
6791 self.name.as_ref().map(
6792 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
6793 ),
6794 encoder,
6795 offset + cur_offset,
6796 depth,
6797 )?;
6798
6799 _prev_end_offset = cur_offset + envelope_size;
6800 if 3 > max_ordinal {
6801 return Ok(());
6802 }
6803
6804 let cur_offset: usize = (3 - 1) * envelope_size;
6807
6808 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6810
6811 fidl::encoding::encode_in_envelope_optional::<bool, D>(
6816 self.colocate.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6817 encoder,
6818 offset + cur_offset,
6819 depth,
6820 )?;
6821
6822 _prev_end_offset = cur_offset + envelope_size;
6823 if 4 > max_ordinal {
6824 return Ok(());
6825 }
6826
6827 let cur_offset: usize = (4 - 1) * envelope_size;
6830
6831 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6833
6834 fidl::encoding::encode_in_envelope_optional::<DriverPackageType, D>(
6839 self.package_type
6840 .as_ref()
6841 .map(<DriverPackageType as fidl::encoding::ValueTypeMarker>::borrow),
6842 encoder,
6843 offset + cur_offset,
6844 depth,
6845 )?;
6846
6847 _prev_end_offset = cur_offset + envelope_size;
6848 if 5 > max_ordinal {
6849 return Ok(());
6850 }
6851
6852 let cur_offset: usize = (5 - 1) * envelope_size;
6855
6856 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6858
6859 fidl::encoding::encode_in_envelope_optional::<bool, D>(
6864 self.is_fallback.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6865 encoder,
6866 offset + cur_offset,
6867 depth,
6868 )?;
6869
6870 _prev_end_offset = cur_offset + envelope_size;
6871 if 6 > max_ordinal {
6872 return Ok(());
6873 }
6874
6875 let cur_offset: usize = (6 - 1) * envelope_size;
6878
6879 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6881
6882 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<DeviceCategory>, D>(
6887 self.device_categories.as_ref().map(<fidl::encoding::UnboundedVector<DeviceCategory> as fidl::encoding::ValueTypeMarker>::borrow),
6888 encoder, offset + cur_offset, depth
6889 )?;
6890
6891 _prev_end_offset = cur_offset + envelope_size;
6892 if 7 > max_ordinal {
6893 return Ok(());
6894 }
6895
6896 let cur_offset: usize = (7 - 1) * envelope_size;
6899
6900 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6902
6903 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
6908 self.bind_rules_bytecode.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
6909 encoder, offset + cur_offset, depth
6910 )?;
6911
6912 _prev_end_offset = cur_offset + envelope_size;
6913 if 8 > max_ordinal {
6914 return Ok(());
6915 }
6916
6917 let cur_offset: usize = (8 - 1) * envelope_size;
6920
6921 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6923
6924 fidl::encoding::encode_in_envelope_optional::<u8, D>(
6929 self.driver_framework_version
6930 .as_ref()
6931 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
6932 encoder,
6933 offset + cur_offset,
6934 depth,
6935 )?;
6936
6937 _prev_end_offset = cur_offset + envelope_size;
6938 if 9 > max_ordinal {
6939 return Ok(());
6940 }
6941
6942 let cur_offset: usize = (9 - 1) * envelope_size;
6945
6946 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6948
6949 fidl::encoding::encode_in_envelope_optional::<bool, D>(
6954 self.is_disabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6955 encoder,
6956 offset + cur_offset,
6957 depth,
6958 )?;
6959
6960 _prev_end_offset = cur_offset + envelope_size;
6961
6962 Ok(())
6963 }
6964 }
6965
6966 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DriverInfo {
6967 #[inline(always)]
6968 fn new_empty() -> Self {
6969 Self::default()
6970 }
6971
6972 unsafe fn decode(
6973 &mut self,
6974 decoder: &mut fidl::encoding::Decoder<'_, D>,
6975 offset: usize,
6976 mut depth: fidl::encoding::Depth,
6977 ) -> fidl::Result<()> {
6978 decoder.debug_check_bounds::<Self>(offset);
6979 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6980 None => return Err(fidl::Error::NotNullable),
6981 Some(len) => len,
6982 };
6983 if len == 0 {
6985 return Ok(());
6986 };
6987 depth.increment()?;
6988 let envelope_size = 8;
6989 let bytes_len = len * envelope_size;
6990 let offset = decoder.out_of_line_offset(bytes_len)?;
6991 let mut _next_ordinal_to_read = 0;
6993 let mut next_offset = offset;
6994 let end_offset = offset + bytes_len;
6995 _next_ordinal_to_read += 1;
6996 if next_offset >= end_offset {
6997 return Ok(());
6998 }
6999
7000 while _next_ordinal_to_read < 1 {
7002 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7003 _next_ordinal_to_read += 1;
7004 next_offset += envelope_size;
7005 }
7006
7007 let next_out_of_line = decoder.next_out_of_line();
7008 let handles_before = decoder.remaining_handles();
7009 if let Some((inlined, num_bytes, num_handles)) =
7010 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7011 {
7012 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7013 if inlined != (member_inline_size <= 4) {
7014 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7015 }
7016 let inner_offset;
7017 let mut inner_depth = depth.clone();
7018 if inlined {
7019 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7020 inner_offset = next_offset;
7021 } else {
7022 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7023 inner_depth.increment()?;
7024 }
7025 let val_ref = self.url.get_or_insert_with(|| {
7026 fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
7027 });
7028 fidl::decode!(
7029 fidl::encoding::BoundedString<4096>,
7030 D,
7031 val_ref,
7032 decoder,
7033 inner_offset,
7034 inner_depth
7035 )?;
7036 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7037 {
7038 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7039 }
7040 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7041 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7042 }
7043 }
7044
7045 next_offset += envelope_size;
7046 _next_ordinal_to_read += 1;
7047 if next_offset >= end_offset {
7048 return Ok(());
7049 }
7050
7051 while _next_ordinal_to_read < 2 {
7053 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7054 _next_ordinal_to_read += 1;
7055 next_offset += envelope_size;
7056 }
7057
7058 let next_out_of_line = decoder.next_out_of_line();
7059 let handles_before = decoder.remaining_handles();
7060 if let Some((inlined, num_bytes, num_handles)) =
7061 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7062 {
7063 let member_inline_size =
7064 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
7065 decoder.context,
7066 );
7067 if inlined != (member_inline_size <= 4) {
7068 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7069 }
7070 let inner_offset;
7071 let mut inner_depth = depth.clone();
7072 if inlined {
7073 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7074 inner_offset = next_offset;
7075 } else {
7076 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7077 inner_depth.increment()?;
7078 }
7079 let val_ref = self
7080 .name
7081 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
7082 fidl::decode!(
7083 fidl::encoding::UnboundedString,
7084 D,
7085 val_ref,
7086 decoder,
7087 inner_offset,
7088 inner_depth
7089 )?;
7090 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7091 {
7092 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7093 }
7094 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7095 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7096 }
7097 }
7098
7099 next_offset += envelope_size;
7100 _next_ordinal_to_read += 1;
7101 if next_offset >= end_offset {
7102 return Ok(());
7103 }
7104
7105 while _next_ordinal_to_read < 3 {
7107 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7108 _next_ordinal_to_read += 1;
7109 next_offset += envelope_size;
7110 }
7111
7112 let next_out_of_line = decoder.next_out_of_line();
7113 let handles_before = decoder.remaining_handles();
7114 if let Some((inlined, num_bytes, num_handles)) =
7115 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7116 {
7117 let member_inline_size =
7118 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7119 if inlined != (member_inline_size <= 4) {
7120 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7121 }
7122 let inner_offset;
7123 let mut inner_depth = depth.clone();
7124 if inlined {
7125 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7126 inner_offset = next_offset;
7127 } else {
7128 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7129 inner_depth.increment()?;
7130 }
7131 let val_ref = self.colocate.get_or_insert_with(|| fidl::new_empty!(bool, D));
7132 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7133 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7134 {
7135 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7136 }
7137 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7138 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7139 }
7140 }
7141
7142 next_offset += envelope_size;
7143 _next_ordinal_to_read += 1;
7144 if next_offset >= end_offset {
7145 return Ok(());
7146 }
7147
7148 while _next_ordinal_to_read < 4 {
7150 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7151 _next_ordinal_to_read += 1;
7152 next_offset += envelope_size;
7153 }
7154
7155 let next_out_of_line = decoder.next_out_of_line();
7156 let handles_before = decoder.remaining_handles();
7157 if let Some((inlined, num_bytes, num_handles)) =
7158 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7159 {
7160 let member_inline_size =
7161 <DriverPackageType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7162 if inlined != (member_inline_size <= 4) {
7163 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7164 }
7165 let inner_offset;
7166 let mut inner_depth = depth.clone();
7167 if inlined {
7168 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7169 inner_offset = next_offset;
7170 } else {
7171 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7172 inner_depth.increment()?;
7173 }
7174 let val_ref =
7175 self.package_type.get_or_insert_with(|| fidl::new_empty!(DriverPackageType, D));
7176 fidl::decode!(DriverPackageType, D, val_ref, decoder, inner_offset, inner_depth)?;
7177 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7178 {
7179 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7180 }
7181 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7182 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7183 }
7184 }
7185
7186 next_offset += envelope_size;
7187 _next_ordinal_to_read += 1;
7188 if next_offset >= end_offset {
7189 return Ok(());
7190 }
7191
7192 while _next_ordinal_to_read < 5 {
7194 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7195 _next_ordinal_to_read += 1;
7196 next_offset += envelope_size;
7197 }
7198
7199 let next_out_of_line = decoder.next_out_of_line();
7200 let handles_before = decoder.remaining_handles();
7201 if let Some((inlined, num_bytes, num_handles)) =
7202 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7203 {
7204 let member_inline_size =
7205 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7206 if inlined != (member_inline_size <= 4) {
7207 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7208 }
7209 let inner_offset;
7210 let mut inner_depth = depth.clone();
7211 if inlined {
7212 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7213 inner_offset = next_offset;
7214 } else {
7215 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7216 inner_depth.increment()?;
7217 }
7218 let val_ref = self.is_fallback.get_or_insert_with(|| fidl::new_empty!(bool, D));
7219 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7220 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7221 {
7222 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7223 }
7224 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7225 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7226 }
7227 }
7228
7229 next_offset += envelope_size;
7230 _next_ordinal_to_read += 1;
7231 if next_offset >= end_offset {
7232 return Ok(());
7233 }
7234
7235 while _next_ordinal_to_read < 6 {
7237 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7238 _next_ordinal_to_read += 1;
7239 next_offset += envelope_size;
7240 }
7241
7242 let next_out_of_line = decoder.next_out_of_line();
7243 let handles_before = decoder.remaining_handles();
7244 if let Some((inlined, num_bytes, num_handles)) =
7245 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7246 {
7247 let member_inline_size = <fidl::encoding::UnboundedVector<DeviceCategory> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7248 if inlined != (member_inline_size <= 4) {
7249 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7250 }
7251 let inner_offset;
7252 let mut inner_depth = depth.clone();
7253 if inlined {
7254 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7255 inner_offset = next_offset;
7256 } else {
7257 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7258 inner_depth.increment()?;
7259 }
7260 let val_ref = self.device_categories.get_or_insert_with(|| {
7261 fidl::new_empty!(fidl::encoding::UnboundedVector<DeviceCategory>, D)
7262 });
7263 fidl::decode!(
7264 fidl::encoding::UnboundedVector<DeviceCategory>,
7265 D,
7266 val_ref,
7267 decoder,
7268 inner_offset,
7269 inner_depth
7270 )?;
7271 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7272 {
7273 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7274 }
7275 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7276 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7277 }
7278 }
7279
7280 next_offset += envelope_size;
7281 _next_ordinal_to_read += 1;
7282 if next_offset >= end_offset {
7283 return Ok(());
7284 }
7285
7286 while _next_ordinal_to_read < 7 {
7288 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7289 _next_ordinal_to_read += 1;
7290 next_offset += envelope_size;
7291 }
7292
7293 let next_out_of_line = decoder.next_out_of_line();
7294 let handles_before = decoder.remaining_handles();
7295 if let Some((inlined, num_bytes, num_handles)) =
7296 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7297 {
7298 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7299 if inlined != (member_inline_size <= 4) {
7300 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7301 }
7302 let inner_offset;
7303 let mut inner_depth = depth.clone();
7304 if inlined {
7305 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7306 inner_offset = next_offset;
7307 } else {
7308 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7309 inner_depth.increment()?;
7310 }
7311 let val_ref = self.bind_rules_bytecode.get_or_insert_with(|| {
7312 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
7313 });
7314 fidl::decode!(
7315 fidl::encoding::UnboundedVector<u8>,
7316 D,
7317 val_ref,
7318 decoder,
7319 inner_offset,
7320 inner_depth
7321 )?;
7322 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7323 {
7324 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7325 }
7326 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7327 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7328 }
7329 }
7330
7331 next_offset += envelope_size;
7332 _next_ordinal_to_read += 1;
7333 if next_offset >= end_offset {
7334 return Ok(());
7335 }
7336
7337 while _next_ordinal_to_read < 8 {
7339 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7340 _next_ordinal_to_read += 1;
7341 next_offset += envelope_size;
7342 }
7343
7344 let next_out_of_line = decoder.next_out_of_line();
7345 let handles_before = decoder.remaining_handles();
7346 if let Some((inlined, num_bytes, num_handles)) =
7347 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7348 {
7349 let member_inline_size =
7350 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7351 if inlined != (member_inline_size <= 4) {
7352 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7353 }
7354 let inner_offset;
7355 let mut inner_depth = depth.clone();
7356 if inlined {
7357 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7358 inner_offset = next_offset;
7359 } else {
7360 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7361 inner_depth.increment()?;
7362 }
7363 let val_ref =
7364 self.driver_framework_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
7365 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
7366 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7367 {
7368 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7369 }
7370 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7371 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7372 }
7373 }
7374
7375 next_offset += envelope_size;
7376 _next_ordinal_to_read += 1;
7377 if next_offset >= end_offset {
7378 return Ok(());
7379 }
7380
7381 while _next_ordinal_to_read < 9 {
7383 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7384 _next_ordinal_to_read += 1;
7385 next_offset += envelope_size;
7386 }
7387
7388 let next_out_of_line = decoder.next_out_of_line();
7389 let handles_before = decoder.remaining_handles();
7390 if let Some((inlined, num_bytes, num_handles)) =
7391 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7392 {
7393 let member_inline_size =
7394 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7395 if inlined != (member_inline_size <= 4) {
7396 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7397 }
7398 let inner_offset;
7399 let mut inner_depth = depth.clone();
7400 if inlined {
7401 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7402 inner_offset = next_offset;
7403 } else {
7404 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7405 inner_depth.increment()?;
7406 }
7407 let val_ref = self.is_disabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
7408 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7409 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7410 {
7411 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7412 }
7413 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7414 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7415 }
7416 }
7417
7418 next_offset += envelope_size;
7419
7420 while next_offset < end_offset {
7422 _next_ordinal_to_read += 1;
7423 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7424 next_offset += envelope_size;
7425 }
7426
7427 Ok(())
7428 }
7429 }
7430
7431 impl DriverStartArgs {
7432 #[inline(always)]
7433 fn max_ordinal_present(&self) -> u64 {
7434 if let Some(_) = self.node_properties_2 {
7435 return 12;
7436 }
7437 if let Some(_) = self.node_token {
7438 return 11;
7439 }
7440 if let Some(_) = self.node_offers {
7441 return 10;
7442 }
7443 if let Some(_) = self.node_properties {
7444 return 9;
7445 }
7446 if let Some(_) = self.node_name {
7447 return 8;
7448 }
7449 if let Some(_) = self.config {
7450 return 7;
7451 }
7452 if let Some(_) = self.outgoing_dir {
7453 return 6;
7454 }
7455 if let Some(_) = self.incoming {
7456 return 5;
7457 }
7458 if let Some(_) = self.program {
7459 return 4;
7460 }
7461 if let Some(_) = self.url {
7462 return 3;
7463 }
7464 if let Some(_) = self.symbols {
7465 return 2;
7466 }
7467 if let Some(_) = self.node {
7468 return 1;
7469 }
7470 0
7471 }
7472 }
7473
7474 impl fidl::encoding::ResourceTypeMarker for DriverStartArgs {
7475 type Borrowed<'a> = &'a mut Self;
7476 fn take_or_borrow<'a>(
7477 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
7478 ) -> Self::Borrowed<'a> {
7479 value
7480 }
7481 }
7482
7483 unsafe impl fidl::encoding::TypeMarker for DriverStartArgs {
7484 type Owned = Self;
7485
7486 #[inline(always)]
7487 fn inline_align(_context: fidl::encoding::Context) -> usize {
7488 8
7489 }
7490
7491 #[inline(always)]
7492 fn inline_size(_context: fidl::encoding::Context) -> usize {
7493 16
7494 }
7495 }
7496
7497 unsafe impl
7498 fidl::encoding::Encode<DriverStartArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
7499 for &mut DriverStartArgs
7500 {
7501 unsafe fn encode(
7502 self,
7503 encoder: &mut fidl::encoding::Encoder<
7504 '_,
7505 fidl::encoding::DefaultFuchsiaResourceDialect,
7506 >,
7507 offset: usize,
7508 mut depth: fidl::encoding::Depth,
7509 ) -> fidl::Result<()> {
7510 encoder.debug_check_bounds::<DriverStartArgs>(offset);
7511 let max_ordinal: u64 = self.max_ordinal_present();
7513 encoder.write_num(max_ordinal, offset);
7514 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7515 if max_ordinal == 0 {
7517 return Ok(());
7518 }
7519 depth.increment()?;
7520 let envelope_size = 8;
7521 let bytes_len = max_ordinal as usize * envelope_size;
7522 #[allow(unused_variables)]
7523 let offset = encoder.out_of_line_offset(bytes_len);
7524 let mut _prev_end_offset: usize = 0;
7525 if 1 > max_ordinal {
7526 return Ok(());
7527 }
7528
7529 let cur_offset: usize = (1 - 1) * envelope_size;
7532
7533 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7535
7536 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
7541 self.node.as_mut().map(<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
7542 encoder, offset + cur_offset, depth
7543 )?;
7544
7545 _prev_end_offset = cur_offset + envelope_size;
7546 if 2 > max_ordinal {
7547 return Ok(());
7548 }
7549
7550 let cur_offset: usize = (2 - 1) * envelope_size;
7553
7554 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7556
7557 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
7562 self.symbols.as_ref().map(<fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::ValueTypeMarker>::borrow),
7563 encoder, offset + cur_offset, depth
7564 )?;
7565
7566 _prev_end_offset = cur_offset + envelope_size;
7567 if 3 > max_ordinal {
7568 return Ok(());
7569 }
7570
7571 let cur_offset: usize = (3 - 1) * envelope_size;
7574
7575 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7577
7578 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, fidl::encoding::DefaultFuchsiaResourceDialect>(
7583 self.url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
7584 encoder, offset + cur_offset, depth
7585 )?;
7586
7587 _prev_end_offset = cur_offset + envelope_size;
7588 if 4 > max_ordinal {
7589 return Ok(());
7590 }
7591
7592 let cur_offset: usize = (4 - 1) * envelope_size;
7595
7596 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7598
7599 fidl::encoding::encode_in_envelope_optional::<
7604 fidl_fuchsia_data::Dictionary,
7605 fidl::encoding::DefaultFuchsiaResourceDialect,
7606 >(
7607 self.program.as_ref().map(
7608 <fidl_fuchsia_data::Dictionary as fidl::encoding::ValueTypeMarker>::borrow,
7609 ),
7610 encoder,
7611 offset + cur_offset,
7612 depth,
7613 )?;
7614
7615 _prev_end_offset = cur_offset + envelope_size;
7616 if 5 > max_ordinal {
7617 return Ok(());
7618 }
7619
7620 let cur_offset: usize = (5 - 1) * envelope_size;
7623
7624 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7626
7627 fidl::encoding::encode_in_envelope_optional::<
7632 fidl::encoding::Vector<fidl_fuchsia_component_runner::ComponentNamespaceEntry, 32>,
7633 fidl::encoding::DefaultFuchsiaResourceDialect,
7634 >(
7635 self.incoming.as_mut().map(
7636 <fidl::encoding::Vector<
7637 fidl_fuchsia_component_runner::ComponentNamespaceEntry,
7638 32,
7639 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
7640 ),
7641 encoder,
7642 offset + cur_offset,
7643 depth,
7644 )?;
7645
7646 _prev_end_offset = cur_offset + envelope_size;
7647 if 6 > max_ordinal {
7648 return Ok(());
7649 }
7650
7651 let cur_offset: usize = (6 - 1) * envelope_size;
7654
7655 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7657
7658 fidl::encoding::encode_in_envelope_optional::<
7663 fidl::encoding::Endpoint<
7664 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
7665 >,
7666 fidl::encoding::DefaultFuchsiaResourceDialect,
7667 >(
7668 self.outgoing_dir.as_mut().map(
7669 <fidl::encoding::Endpoint<
7670 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
7671 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
7672 ),
7673 encoder,
7674 offset + cur_offset,
7675 depth,
7676 )?;
7677
7678 _prev_end_offset = cur_offset + envelope_size;
7679 if 7 > max_ordinal {
7680 return Ok(());
7681 }
7682
7683 let cur_offset: usize = (7 - 1) * envelope_size;
7686
7687 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7689
7690 fidl::encoding::encode_in_envelope_optional::<
7695 fidl::encoding::HandleType<
7696 fidl::Vmo,
7697 { fidl::ObjectType::VMO.into_raw() },
7698 2147483648,
7699 >,
7700 fidl::encoding::DefaultFuchsiaResourceDialect,
7701 >(
7702 self.config.as_mut().map(
7703 <fidl::encoding::HandleType<
7704 fidl::Vmo,
7705 { fidl::ObjectType::VMO.into_raw() },
7706 2147483648,
7707 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
7708 ),
7709 encoder,
7710 offset + cur_offset,
7711 depth,
7712 )?;
7713
7714 _prev_end_offset = cur_offset + envelope_size;
7715 if 8 > max_ordinal {
7716 return Ok(());
7717 }
7718
7719 let cur_offset: usize = (8 - 1) * envelope_size;
7722
7723 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7725
7726 fidl::encoding::encode_in_envelope_optional::<
7731 fidl::encoding::UnboundedString,
7732 fidl::encoding::DefaultFuchsiaResourceDialect,
7733 >(
7734 self.node_name.as_ref().map(
7735 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
7736 ),
7737 encoder,
7738 offset + cur_offset,
7739 depth,
7740 )?;
7741
7742 _prev_end_offset = cur_offset + envelope_size;
7743 if 9 > max_ordinal {
7744 return Ok(());
7745 }
7746
7747 let cur_offset: usize = (9 - 1) * envelope_size;
7750
7751 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7753
7754 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<NodePropertyEntry>, fidl::encoding::DefaultFuchsiaResourceDialect>(
7759 self.node_properties.as_ref().map(<fidl::encoding::UnboundedVector<NodePropertyEntry> as fidl::encoding::ValueTypeMarker>::borrow),
7760 encoder, offset + cur_offset, depth
7761 )?;
7762
7763 _prev_end_offset = cur_offset + envelope_size;
7764 if 10 > max_ordinal {
7765 return Ok(());
7766 }
7767
7768 let cur_offset: usize = (10 - 1) * envelope_size;
7771
7772 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7774
7775 fidl::encoding::encode_in_envelope_optional::<
7780 fidl::encoding::Vector<Offer, 128>,
7781 fidl::encoding::DefaultFuchsiaResourceDialect,
7782 >(
7783 self.node_offers.as_ref().map(
7784 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::ValueTypeMarker>::borrow,
7785 ),
7786 encoder,
7787 offset + cur_offset,
7788 depth,
7789 )?;
7790
7791 _prev_end_offset = cur_offset + envelope_size;
7792 if 11 > max_ordinal {
7793 return Ok(());
7794 }
7795
7796 let cur_offset: usize = (11 - 1) * envelope_size;
7799
7800 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7802
7803 fidl::encoding::encode_in_envelope_optional::<
7808 fidl::encoding::HandleType<
7809 fidl::Event,
7810 { fidl::ObjectType::EVENT.into_raw() },
7811 2147483648,
7812 >,
7813 fidl::encoding::DefaultFuchsiaResourceDialect,
7814 >(
7815 self.node_token.as_mut().map(
7816 <fidl::encoding::HandleType<
7817 fidl::Event,
7818 { fidl::ObjectType::EVENT.into_raw() },
7819 2147483648,
7820 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
7821 ),
7822 encoder,
7823 offset + cur_offset,
7824 depth,
7825 )?;
7826
7827 _prev_end_offset = cur_offset + envelope_size;
7828 if 12 > max_ordinal {
7829 return Ok(());
7830 }
7831
7832 let cur_offset: usize = (12 - 1) * envelope_size;
7835
7836 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7838
7839 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<NodePropertyEntry2>, fidl::encoding::DefaultFuchsiaResourceDialect>(
7844 self.node_properties_2.as_ref().map(<fidl::encoding::UnboundedVector<NodePropertyEntry2> as fidl::encoding::ValueTypeMarker>::borrow),
7845 encoder, offset + cur_offset, depth
7846 )?;
7847
7848 _prev_end_offset = cur_offset + envelope_size;
7849
7850 Ok(())
7851 }
7852 }
7853
7854 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
7855 for DriverStartArgs
7856 {
7857 #[inline(always)]
7858 fn new_empty() -> Self {
7859 Self::default()
7860 }
7861
7862 unsafe fn decode(
7863 &mut self,
7864 decoder: &mut fidl::encoding::Decoder<
7865 '_,
7866 fidl::encoding::DefaultFuchsiaResourceDialect,
7867 >,
7868 offset: usize,
7869 mut depth: fidl::encoding::Depth,
7870 ) -> fidl::Result<()> {
7871 decoder.debug_check_bounds::<Self>(offset);
7872 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7873 None => return Err(fidl::Error::NotNullable),
7874 Some(len) => len,
7875 };
7876 if len == 0 {
7878 return Ok(());
7879 };
7880 depth.increment()?;
7881 let envelope_size = 8;
7882 let bytes_len = len * envelope_size;
7883 let offset = decoder.out_of_line_offset(bytes_len)?;
7884 let mut _next_ordinal_to_read = 0;
7886 let mut next_offset = offset;
7887 let end_offset = offset + bytes_len;
7888 _next_ordinal_to_read += 1;
7889 if next_offset >= end_offset {
7890 return Ok(());
7891 }
7892
7893 while _next_ordinal_to_read < 1 {
7895 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7896 _next_ordinal_to_read += 1;
7897 next_offset += envelope_size;
7898 }
7899
7900 let next_out_of_line = decoder.next_out_of_line();
7901 let handles_before = decoder.remaining_handles();
7902 if let Some((inlined, num_bytes, num_handles)) =
7903 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7904 {
7905 let member_inline_size = <fidl::encoding::Endpoint<
7906 fidl::endpoints::ClientEnd<NodeMarker>,
7907 > as fidl::encoding::TypeMarker>::inline_size(
7908 decoder.context
7909 );
7910 if inlined != (member_inline_size <= 4) {
7911 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7912 }
7913 let inner_offset;
7914 let mut inner_depth = depth.clone();
7915 if inlined {
7916 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7917 inner_offset = next_offset;
7918 } else {
7919 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7920 inner_depth.increment()?;
7921 }
7922 let val_ref = self.node.get_or_insert_with(|| {
7923 fidl::new_empty!(
7924 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>>,
7925 fidl::encoding::DefaultFuchsiaResourceDialect
7926 )
7927 });
7928 fidl::decode!(
7929 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>>,
7930 fidl::encoding::DefaultFuchsiaResourceDialect,
7931 val_ref,
7932 decoder,
7933 inner_offset,
7934 inner_depth
7935 )?;
7936 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7937 {
7938 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7939 }
7940 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7941 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7942 }
7943 }
7944
7945 next_offset += envelope_size;
7946 _next_ordinal_to_read += 1;
7947 if next_offset >= end_offset {
7948 return Ok(());
7949 }
7950
7951 while _next_ordinal_to_read < 2 {
7953 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7954 _next_ordinal_to_read += 1;
7955 next_offset += envelope_size;
7956 }
7957
7958 let next_out_of_line = decoder.next_out_of_line();
7959 let handles_before = decoder.remaining_handles();
7960 if let Some((inlined, num_bytes, num_handles)) =
7961 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7962 {
7963 let member_inline_size = <fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7964 if inlined != (member_inline_size <= 4) {
7965 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7966 }
7967 let inner_offset;
7968 let mut inner_depth = depth.clone();
7969 if inlined {
7970 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7971 inner_offset = next_offset;
7972 } else {
7973 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7974 inner_depth.increment()?;
7975 }
7976 let val_ref =
7977 self.symbols.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
7978 fidl::decode!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
7979 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7980 {
7981 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7982 }
7983 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7984 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7985 }
7986 }
7987
7988 next_offset += envelope_size;
7989 _next_ordinal_to_read += 1;
7990 if next_offset >= end_offset {
7991 return Ok(());
7992 }
7993
7994 while _next_ordinal_to_read < 3 {
7996 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7997 _next_ordinal_to_read += 1;
7998 next_offset += envelope_size;
7999 }
8000
8001 let next_out_of_line = decoder.next_out_of_line();
8002 let handles_before = decoder.remaining_handles();
8003 if let Some((inlined, num_bytes, num_handles)) =
8004 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8005 {
8006 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8007 if inlined != (member_inline_size <= 4) {
8008 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8009 }
8010 let inner_offset;
8011 let mut inner_depth = depth.clone();
8012 if inlined {
8013 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8014 inner_offset = next_offset;
8015 } else {
8016 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8017 inner_depth.increment()?;
8018 }
8019 let val_ref = self.url.get_or_insert_with(|| {
8020 fidl::new_empty!(
8021 fidl::encoding::BoundedString<4096>,
8022 fidl::encoding::DefaultFuchsiaResourceDialect
8023 )
8024 });
8025 fidl::decode!(
8026 fidl::encoding::BoundedString<4096>,
8027 fidl::encoding::DefaultFuchsiaResourceDialect,
8028 val_ref,
8029 decoder,
8030 inner_offset,
8031 inner_depth
8032 )?;
8033 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8034 {
8035 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8036 }
8037 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8038 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8039 }
8040 }
8041
8042 next_offset += envelope_size;
8043 _next_ordinal_to_read += 1;
8044 if next_offset >= end_offset {
8045 return Ok(());
8046 }
8047
8048 while _next_ordinal_to_read < 4 {
8050 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8051 _next_ordinal_to_read += 1;
8052 next_offset += envelope_size;
8053 }
8054
8055 let next_out_of_line = decoder.next_out_of_line();
8056 let handles_before = decoder.remaining_handles();
8057 if let Some((inlined, num_bytes, num_handles)) =
8058 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8059 {
8060 let member_inline_size =
8061 <fidl_fuchsia_data::Dictionary as fidl::encoding::TypeMarker>::inline_size(
8062 decoder.context,
8063 );
8064 if inlined != (member_inline_size <= 4) {
8065 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8066 }
8067 let inner_offset;
8068 let mut inner_depth = depth.clone();
8069 if inlined {
8070 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8071 inner_offset = next_offset;
8072 } else {
8073 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8074 inner_depth.increment()?;
8075 }
8076 let val_ref = self.program.get_or_insert_with(|| {
8077 fidl::new_empty!(
8078 fidl_fuchsia_data::Dictionary,
8079 fidl::encoding::DefaultFuchsiaResourceDialect
8080 )
8081 });
8082 fidl::decode!(
8083 fidl_fuchsia_data::Dictionary,
8084 fidl::encoding::DefaultFuchsiaResourceDialect,
8085 val_ref,
8086 decoder,
8087 inner_offset,
8088 inner_depth
8089 )?;
8090 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8091 {
8092 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8093 }
8094 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8095 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8096 }
8097 }
8098
8099 next_offset += envelope_size;
8100 _next_ordinal_to_read += 1;
8101 if next_offset >= end_offset {
8102 return Ok(());
8103 }
8104
8105 while _next_ordinal_to_read < 5 {
8107 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8108 _next_ordinal_to_read += 1;
8109 next_offset += envelope_size;
8110 }
8111
8112 let next_out_of_line = decoder.next_out_of_line();
8113 let handles_before = decoder.remaining_handles();
8114 if let Some((inlined, num_bytes, num_handles)) =
8115 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8116 {
8117 let member_inline_size = <fidl::encoding::Vector<
8118 fidl_fuchsia_component_runner::ComponentNamespaceEntry,
8119 32,
8120 > as fidl::encoding::TypeMarker>::inline_size(
8121 decoder.context
8122 );
8123 if inlined != (member_inline_size <= 4) {
8124 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8125 }
8126 let inner_offset;
8127 let mut inner_depth = depth.clone();
8128 if inlined {
8129 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8130 inner_offset = next_offset;
8131 } else {
8132 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8133 inner_depth.increment()?;
8134 }
8135 let val_ref =
8136 self.incoming.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_component_runner::ComponentNamespaceEntry, 32>, fidl::encoding::DefaultFuchsiaResourceDialect));
8137 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_component_runner::ComponentNamespaceEntry, 32>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
8138 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8139 {
8140 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8141 }
8142 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8143 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8144 }
8145 }
8146
8147 next_offset += envelope_size;
8148 _next_ordinal_to_read += 1;
8149 if next_offset >= end_offset {
8150 return Ok(());
8151 }
8152
8153 while _next_ordinal_to_read < 6 {
8155 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8156 _next_ordinal_to_read += 1;
8157 next_offset += envelope_size;
8158 }
8159
8160 let next_out_of_line = decoder.next_out_of_line();
8161 let handles_before = decoder.remaining_handles();
8162 if let Some((inlined, num_bytes, num_handles)) =
8163 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8164 {
8165 let member_inline_size = <fidl::encoding::Endpoint<
8166 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
8167 > as fidl::encoding::TypeMarker>::inline_size(
8168 decoder.context
8169 );
8170 if inlined != (member_inline_size <= 4) {
8171 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8172 }
8173 let inner_offset;
8174 let mut inner_depth = depth.clone();
8175 if inlined {
8176 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8177 inner_offset = next_offset;
8178 } else {
8179 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8180 inner_depth.increment()?;
8181 }
8182 let val_ref = self.outgoing_dir.get_or_insert_with(|| {
8183 fidl::new_empty!(
8184 fidl::encoding::Endpoint<
8185 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
8186 >,
8187 fidl::encoding::DefaultFuchsiaResourceDialect
8188 )
8189 });
8190 fidl::decode!(
8191 fidl::encoding::Endpoint<
8192 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
8193 >,
8194 fidl::encoding::DefaultFuchsiaResourceDialect,
8195 val_ref,
8196 decoder,
8197 inner_offset,
8198 inner_depth
8199 )?;
8200 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8201 {
8202 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8203 }
8204 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8205 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8206 }
8207 }
8208
8209 next_offset += envelope_size;
8210 _next_ordinal_to_read += 1;
8211 if next_offset >= end_offset {
8212 return Ok(());
8213 }
8214
8215 while _next_ordinal_to_read < 7 {
8217 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8218 _next_ordinal_to_read += 1;
8219 next_offset += envelope_size;
8220 }
8221
8222 let next_out_of_line = decoder.next_out_of_line();
8223 let handles_before = decoder.remaining_handles();
8224 if let Some((inlined, num_bytes, num_handles)) =
8225 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8226 {
8227 let member_inline_size = <fidl::encoding::HandleType<
8228 fidl::Vmo,
8229 { fidl::ObjectType::VMO.into_raw() },
8230 2147483648,
8231 > as fidl::encoding::TypeMarker>::inline_size(
8232 decoder.context
8233 );
8234 if inlined != (member_inline_size <= 4) {
8235 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8236 }
8237 let inner_offset;
8238 let mut inner_depth = depth.clone();
8239 if inlined {
8240 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8241 inner_offset = next_offset;
8242 } else {
8243 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8244 inner_depth.increment()?;
8245 }
8246 let val_ref =
8247 self.config.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
8248 fidl::decode!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
8249 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8250 {
8251 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8252 }
8253 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8254 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8255 }
8256 }
8257
8258 next_offset += envelope_size;
8259 _next_ordinal_to_read += 1;
8260 if next_offset >= end_offset {
8261 return Ok(());
8262 }
8263
8264 while _next_ordinal_to_read < 8 {
8266 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8267 _next_ordinal_to_read += 1;
8268 next_offset += envelope_size;
8269 }
8270
8271 let next_out_of_line = decoder.next_out_of_line();
8272 let handles_before = decoder.remaining_handles();
8273 if let Some((inlined, num_bytes, num_handles)) =
8274 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8275 {
8276 let member_inline_size =
8277 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
8278 decoder.context,
8279 );
8280 if inlined != (member_inline_size <= 4) {
8281 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8282 }
8283 let inner_offset;
8284 let mut inner_depth = depth.clone();
8285 if inlined {
8286 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8287 inner_offset = next_offset;
8288 } else {
8289 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8290 inner_depth.increment()?;
8291 }
8292 let val_ref = self.node_name.get_or_insert_with(|| {
8293 fidl::new_empty!(
8294 fidl::encoding::UnboundedString,
8295 fidl::encoding::DefaultFuchsiaResourceDialect
8296 )
8297 });
8298 fidl::decode!(
8299 fidl::encoding::UnboundedString,
8300 fidl::encoding::DefaultFuchsiaResourceDialect,
8301 val_ref,
8302 decoder,
8303 inner_offset,
8304 inner_depth
8305 )?;
8306 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8307 {
8308 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8309 }
8310 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8311 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8312 }
8313 }
8314
8315 next_offset += envelope_size;
8316 _next_ordinal_to_read += 1;
8317 if next_offset >= end_offset {
8318 return Ok(());
8319 }
8320
8321 while _next_ordinal_to_read < 9 {
8323 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8324 _next_ordinal_to_read += 1;
8325 next_offset += envelope_size;
8326 }
8327
8328 let next_out_of_line = decoder.next_out_of_line();
8329 let handles_before = decoder.remaining_handles();
8330 if let Some((inlined, num_bytes, num_handles)) =
8331 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8332 {
8333 let member_inline_size = <fidl::encoding::UnboundedVector<NodePropertyEntry> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8334 if inlined != (member_inline_size <= 4) {
8335 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8336 }
8337 let inner_offset;
8338 let mut inner_depth = depth.clone();
8339 if inlined {
8340 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8341 inner_offset = next_offset;
8342 } else {
8343 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8344 inner_depth.increment()?;
8345 }
8346 let val_ref = self.node_properties.get_or_insert_with(|| {
8347 fidl::new_empty!(
8348 fidl::encoding::UnboundedVector<NodePropertyEntry>,
8349 fidl::encoding::DefaultFuchsiaResourceDialect
8350 )
8351 });
8352 fidl::decode!(
8353 fidl::encoding::UnboundedVector<NodePropertyEntry>,
8354 fidl::encoding::DefaultFuchsiaResourceDialect,
8355 val_ref,
8356 decoder,
8357 inner_offset,
8358 inner_depth
8359 )?;
8360 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8361 {
8362 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8363 }
8364 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8365 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8366 }
8367 }
8368
8369 next_offset += envelope_size;
8370 _next_ordinal_to_read += 1;
8371 if next_offset >= end_offset {
8372 return Ok(());
8373 }
8374
8375 while _next_ordinal_to_read < 10 {
8377 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8378 _next_ordinal_to_read += 1;
8379 next_offset += envelope_size;
8380 }
8381
8382 let next_out_of_line = decoder.next_out_of_line();
8383 let handles_before = decoder.remaining_handles();
8384 if let Some((inlined, num_bytes, num_handles)) =
8385 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8386 {
8387 let member_inline_size =
8388 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::TypeMarker>::inline_size(
8389 decoder.context,
8390 );
8391 if inlined != (member_inline_size <= 4) {
8392 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8393 }
8394 let inner_offset;
8395 let mut inner_depth = depth.clone();
8396 if inlined {
8397 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8398 inner_offset = next_offset;
8399 } else {
8400 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8401 inner_depth.increment()?;
8402 }
8403 let val_ref =
8404 self.node_offers.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect));
8405 fidl::decode!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
8406 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8407 {
8408 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8409 }
8410 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8411 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8412 }
8413 }
8414
8415 next_offset += envelope_size;
8416 _next_ordinal_to_read += 1;
8417 if next_offset >= end_offset {
8418 return Ok(());
8419 }
8420
8421 while _next_ordinal_to_read < 11 {
8423 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8424 _next_ordinal_to_read += 1;
8425 next_offset += envelope_size;
8426 }
8427
8428 let next_out_of_line = decoder.next_out_of_line();
8429 let handles_before = decoder.remaining_handles();
8430 if let Some((inlined, num_bytes, num_handles)) =
8431 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8432 {
8433 let member_inline_size = <fidl::encoding::HandleType<
8434 fidl::Event,
8435 { fidl::ObjectType::EVENT.into_raw() },
8436 2147483648,
8437 > as fidl::encoding::TypeMarker>::inline_size(
8438 decoder.context
8439 );
8440 if inlined != (member_inline_size <= 4) {
8441 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8442 }
8443 let inner_offset;
8444 let mut inner_depth = depth.clone();
8445 if inlined {
8446 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8447 inner_offset = next_offset;
8448 } else {
8449 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8450 inner_depth.increment()?;
8451 }
8452 let val_ref =
8453 self.node_token.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
8454 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
8455 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8456 {
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 }
8463
8464 next_offset += envelope_size;
8465 _next_ordinal_to_read += 1;
8466 if next_offset >= end_offset {
8467 return Ok(());
8468 }
8469
8470 while _next_ordinal_to_read < 12 {
8472 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8473 _next_ordinal_to_read += 1;
8474 next_offset += envelope_size;
8475 }
8476
8477 let next_out_of_line = decoder.next_out_of_line();
8478 let handles_before = decoder.remaining_handles();
8479 if let Some((inlined, num_bytes, num_handles)) =
8480 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8481 {
8482 let member_inline_size = <fidl::encoding::UnboundedVector<NodePropertyEntry2> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8483 if inlined != (member_inline_size <= 4) {
8484 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8485 }
8486 let inner_offset;
8487 let mut inner_depth = depth.clone();
8488 if inlined {
8489 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8490 inner_offset = next_offset;
8491 } else {
8492 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8493 inner_depth.increment()?;
8494 }
8495 let val_ref = self.node_properties_2.get_or_insert_with(|| {
8496 fidl::new_empty!(
8497 fidl::encoding::UnboundedVector<NodePropertyEntry2>,
8498 fidl::encoding::DefaultFuchsiaResourceDialect
8499 )
8500 });
8501 fidl::decode!(
8502 fidl::encoding::UnboundedVector<NodePropertyEntry2>,
8503 fidl::encoding::DefaultFuchsiaResourceDialect,
8504 val_ref,
8505 decoder,
8506 inner_offset,
8507 inner_depth
8508 )?;
8509 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8510 {
8511 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8512 }
8513 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8514 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8515 }
8516 }
8517
8518 next_offset += envelope_size;
8519
8520 while next_offset < end_offset {
8522 _next_ordinal_to_read += 1;
8523 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8524 next_offset += envelope_size;
8525 }
8526
8527 Ok(())
8528 }
8529 }
8530
8531 impl NodeAddArgs {
8532 #[inline(always)]
8533 fn max_ordinal_present(&self) -> u64 {
8534 if let Some(_) = self.properties2 {
8535 return 8;
8536 }
8537 if let Some(_) = self.bus_info {
8538 return 7;
8539 }
8540 if let Some(_) = self.offers2 {
8541 return 6;
8542 }
8543 if let Some(_) = self.devfs_args {
8544 return 5;
8545 }
8546 if let Some(_) = self.properties {
8547 return 4;
8548 }
8549 if let Some(_) = self.symbols {
8550 return 3;
8551 }
8552 if let Some(_) = self.offers {
8553 return 2;
8554 }
8555 if let Some(_) = self.name {
8556 return 1;
8557 }
8558 0
8559 }
8560 }
8561
8562 impl fidl::encoding::ResourceTypeMarker for NodeAddArgs {
8563 type Borrowed<'a> = &'a mut Self;
8564 fn take_or_borrow<'a>(
8565 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
8566 ) -> Self::Borrowed<'a> {
8567 value
8568 }
8569 }
8570
8571 unsafe impl fidl::encoding::TypeMarker for NodeAddArgs {
8572 type Owned = Self;
8573
8574 #[inline(always)]
8575 fn inline_align(_context: fidl::encoding::Context) -> usize {
8576 8
8577 }
8578
8579 #[inline(always)]
8580 fn inline_size(_context: fidl::encoding::Context) -> usize {
8581 16
8582 }
8583 }
8584
8585 unsafe impl fidl::encoding::Encode<NodeAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
8586 for &mut NodeAddArgs
8587 {
8588 unsafe fn encode(
8589 self,
8590 encoder: &mut fidl::encoding::Encoder<
8591 '_,
8592 fidl::encoding::DefaultFuchsiaResourceDialect,
8593 >,
8594 offset: usize,
8595 mut depth: fidl::encoding::Depth,
8596 ) -> fidl::Result<()> {
8597 encoder.debug_check_bounds::<NodeAddArgs>(offset);
8598 let max_ordinal: u64 = self.max_ordinal_present();
8600 encoder.write_num(max_ordinal, offset);
8601 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8602 if max_ordinal == 0 {
8604 return Ok(());
8605 }
8606 depth.increment()?;
8607 let envelope_size = 8;
8608 let bytes_len = max_ordinal as usize * envelope_size;
8609 #[allow(unused_variables)]
8610 let offset = encoder.out_of_line_offset(bytes_len);
8611 let mut _prev_end_offset: usize = 0;
8612 if 1 > max_ordinal {
8613 return Ok(());
8614 }
8615
8616 let cur_offset: usize = (1 - 1) * envelope_size;
8619
8620 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8622
8623 fidl::encoding::encode_in_envelope_optional::<
8628 fidl::encoding::BoundedString<128>,
8629 fidl::encoding::DefaultFuchsiaResourceDialect,
8630 >(
8631 self.name.as_ref().map(
8632 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
8633 ),
8634 encoder,
8635 offset + cur_offset,
8636 depth,
8637 )?;
8638
8639 _prev_end_offset = cur_offset + envelope_size;
8640 if 2 > max_ordinal {
8641 return Ok(());
8642 }
8643
8644 let cur_offset: usize = (2 - 1) * envelope_size;
8647
8648 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8650
8651 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_component_decl::Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect>(
8656 self.offers.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_component_decl::Offer, 128> as fidl::encoding::ValueTypeMarker>::borrow),
8657 encoder, offset + cur_offset, depth
8658 )?;
8659
8660 _prev_end_offset = cur_offset + envelope_size;
8661 if 3 > max_ordinal {
8662 return Ok(());
8663 }
8664
8665 let cur_offset: usize = (3 - 1) * envelope_size;
8668
8669 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8671
8672 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
8677 self.symbols.as_ref().map(<fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::ValueTypeMarker>::borrow),
8678 encoder, offset + cur_offset, depth
8679 )?;
8680
8681 _prev_end_offset = cur_offset + envelope_size;
8682 if 4 > max_ordinal {
8683 return Ok(());
8684 }
8685
8686 let cur_offset: usize = (4 - 1) * envelope_size;
8689
8690 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8692
8693 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeProperty, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
8698 self.properties.as_ref().map(<fidl::encoding::Vector<NodeProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
8699 encoder, offset + cur_offset, depth
8700 )?;
8701
8702 _prev_end_offset = cur_offset + envelope_size;
8703 if 5 > max_ordinal {
8704 return Ok(());
8705 }
8706
8707 let cur_offset: usize = (5 - 1) * envelope_size;
8710
8711 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8713
8714 fidl::encoding::encode_in_envelope_optional::<
8719 DevfsAddArgs,
8720 fidl::encoding::DefaultFuchsiaResourceDialect,
8721 >(
8722 self.devfs_args
8723 .as_mut()
8724 .map(<DevfsAddArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
8725 encoder,
8726 offset + cur_offset,
8727 depth,
8728 )?;
8729
8730 _prev_end_offset = cur_offset + envelope_size;
8731 if 6 > max_ordinal {
8732 return Ok(());
8733 }
8734
8735 let cur_offset: usize = (6 - 1) * envelope_size;
8738
8739 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8741
8742 fidl::encoding::encode_in_envelope_optional::<
8747 fidl::encoding::Vector<Offer, 128>,
8748 fidl::encoding::DefaultFuchsiaResourceDialect,
8749 >(
8750 self.offers2.as_ref().map(
8751 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::ValueTypeMarker>::borrow,
8752 ),
8753 encoder,
8754 offset + cur_offset,
8755 depth,
8756 )?;
8757
8758 _prev_end_offset = cur_offset + envelope_size;
8759 if 7 > max_ordinal {
8760 return Ok(());
8761 }
8762
8763 let cur_offset: usize = (7 - 1) * envelope_size;
8766
8767 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8769
8770 fidl::encoding::encode_in_envelope_optional::<
8775 BusInfo,
8776 fidl::encoding::DefaultFuchsiaResourceDialect,
8777 >(
8778 self.bus_info.as_ref().map(<BusInfo as fidl::encoding::ValueTypeMarker>::borrow),
8779 encoder,
8780 offset + cur_offset,
8781 depth,
8782 )?;
8783
8784 _prev_end_offset = cur_offset + envelope_size;
8785 if 8 > max_ordinal {
8786 return Ok(());
8787 }
8788
8789 let cur_offset: usize = (8 - 1) * envelope_size;
8792
8793 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8795
8796 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeProperty2, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
8801 self.properties2.as_ref().map(<fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::ValueTypeMarker>::borrow),
8802 encoder, offset + cur_offset, depth
8803 )?;
8804
8805 _prev_end_offset = cur_offset + envelope_size;
8806
8807 Ok(())
8808 }
8809 }
8810
8811 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for NodeAddArgs {
8812 #[inline(always)]
8813 fn new_empty() -> Self {
8814 Self::default()
8815 }
8816
8817 unsafe fn decode(
8818 &mut self,
8819 decoder: &mut fidl::encoding::Decoder<
8820 '_,
8821 fidl::encoding::DefaultFuchsiaResourceDialect,
8822 >,
8823 offset: usize,
8824 mut depth: fidl::encoding::Depth,
8825 ) -> fidl::Result<()> {
8826 decoder.debug_check_bounds::<Self>(offset);
8827 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8828 None => return Err(fidl::Error::NotNullable),
8829 Some(len) => len,
8830 };
8831 if len == 0 {
8833 return Ok(());
8834 };
8835 depth.increment()?;
8836 let envelope_size = 8;
8837 let bytes_len = len * envelope_size;
8838 let offset = decoder.out_of_line_offset(bytes_len)?;
8839 let mut _next_ordinal_to_read = 0;
8841 let mut next_offset = offset;
8842 let end_offset = offset + bytes_len;
8843 _next_ordinal_to_read += 1;
8844 if next_offset >= end_offset {
8845 return Ok(());
8846 }
8847
8848 while _next_ordinal_to_read < 1 {
8850 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8851 _next_ordinal_to_read += 1;
8852 next_offset += envelope_size;
8853 }
8854
8855 let next_out_of_line = decoder.next_out_of_line();
8856 let handles_before = decoder.remaining_handles();
8857 if let Some((inlined, num_bytes, num_handles)) =
8858 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8859 {
8860 let member_inline_size =
8861 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
8862 decoder.context,
8863 );
8864 if inlined != (member_inline_size <= 4) {
8865 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8866 }
8867 let inner_offset;
8868 let mut inner_depth = depth.clone();
8869 if inlined {
8870 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8871 inner_offset = next_offset;
8872 } else {
8873 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8874 inner_depth.increment()?;
8875 }
8876 let val_ref = self.name.get_or_insert_with(|| {
8877 fidl::new_empty!(
8878 fidl::encoding::BoundedString<128>,
8879 fidl::encoding::DefaultFuchsiaResourceDialect
8880 )
8881 });
8882 fidl::decode!(
8883 fidl::encoding::BoundedString<128>,
8884 fidl::encoding::DefaultFuchsiaResourceDialect,
8885 val_ref,
8886 decoder,
8887 inner_offset,
8888 inner_depth
8889 )?;
8890 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8891 {
8892 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8893 }
8894 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8895 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8896 }
8897 }
8898
8899 next_offset += envelope_size;
8900 _next_ordinal_to_read += 1;
8901 if next_offset >= end_offset {
8902 return Ok(());
8903 }
8904
8905 while _next_ordinal_to_read < 2 {
8907 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8908 _next_ordinal_to_read += 1;
8909 next_offset += envelope_size;
8910 }
8911
8912 let next_out_of_line = decoder.next_out_of_line();
8913 let handles_before = decoder.remaining_handles();
8914 if let Some((inlined, num_bytes, num_handles)) =
8915 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8916 {
8917 let member_inline_size = <fidl::encoding::Vector<
8918 fidl_fuchsia_component_decl::Offer,
8919 128,
8920 > as fidl::encoding::TypeMarker>::inline_size(
8921 decoder.context
8922 );
8923 if inlined != (member_inline_size <= 4) {
8924 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8925 }
8926 let inner_offset;
8927 let mut inner_depth = depth.clone();
8928 if inlined {
8929 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8930 inner_offset = next_offset;
8931 } else {
8932 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8933 inner_depth.increment()?;
8934 }
8935 let val_ref =
8936 self.offers.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_component_decl::Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect));
8937 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_component_decl::Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
8938 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8939 {
8940 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8941 }
8942 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8943 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8944 }
8945 }
8946
8947 next_offset += envelope_size;
8948 _next_ordinal_to_read += 1;
8949 if next_offset >= end_offset {
8950 return Ok(());
8951 }
8952
8953 while _next_ordinal_to_read < 3 {
8955 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8956 _next_ordinal_to_read += 1;
8957 next_offset += envelope_size;
8958 }
8959
8960 let next_out_of_line = decoder.next_out_of_line();
8961 let handles_before = decoder.remaining_handles();
8962 if let Some((inlined, num_bytes, num_handles)) =
8963 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8964 {
8965 let member_inline_size = <fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8966 if inlined != (member_inline_size <= 4) {
8967 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8968 }
8969 let inner_offset;
8970 let mut inner_depth = depth.clone();
8971 if inlined {
8972 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8973 inner_offset = next_offset;
8974 } else {
8975 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8976 inner_depth.increment()?;
8977 }
8978 let val_ref =
8979 self.symbols.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
8980 fidl::decode!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
8981 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8982 {
8983 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8984 }
8985 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8986 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8987 }
8988 }
8989
8990 next_offset += envelope_size;
8991 _next_ordinal_to_read += 1;
8992 if next_offset >= end_offset {
8993 return Ok(());
8994 }
8995
8996 while _next_ordinal_to_read < 4 {
8998 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8999 _next_ordinal_to_read += 1;
9000 next_offset += envelope_size;
9001 }
9002
9003 let next_out_of_line = decoder.next_out_of_line();
9004 let handles_before = decoder.remaining_handles();
9005 if let Some((inlined, num_bytes, num_handles)) =
9006 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9007 {
9008 let member_inline_size = <fidl::encoding::Vector<NodeProperty, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9009 if inlined != (member_inline_size <= 4) {
9010 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9011 }
9012 let inner_offset;
9013 let mut inner_depth = depth.clone();
9014 if inlined {
9015 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9016 inner_offset = next_offset;
9017 } else {
9018 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9019 inner_depth.increment()?;
9020 }
9021 let val_ref =
9022 self.properties.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeProperty, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
9023 fidl::decode!(fidl::encoding::Vector<NodeProperty, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
9024 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9025 {
9026 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9027 }
9028 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9029 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9030 }
9031 }
9032
9033 next_offset += envelope_size;
9034 _next_ordinal_to_read += 1;
9035 if next_offset >= end_offset {
9036 return Ok(());
9037 }
9038
9039 while _next_ordinal_to_read < 5 {
9041 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9042 _next_ordinal_to_read += 1;
9043 next_offset += envelope_size;
9044 }
9045
9046 let next_out_of_line = decoder.next_out_of_line();
9047 let handles_before = decoder.remaining_handles();
9048 if let Some((inlined, num_bytes, num_handles)) =
9049 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9050 {
9051 let member_inline_size =
9052 <DevfsAddArgs as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9053 if inlined != (member_inline_size <= 4) {
9054 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9055 }
9056 let inner_offset;
9057 let mut inner_depth = depth.clone();
9058 if inlined {
9059 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9060 inner_offset = next_offset;
9061 } else {
9062 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9063 inner_depth.increment()?;
9064 }
9065 let val_ref = self.devfs_args.get_or_insert_with(|| {
9066 fidl::new_empty!(DevfsAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect)
9067 });
9068 fidl::decode!(
9069 DevfsAddArgs,
9070 fidl::encoding::DefaultFuchsiaResourceDialect,
9071 val_ref,
9072 decoder,
9073 inner_offset,
9074 inner_depth
9075 )?;
9076 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9077 {
9078 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9079 }
9080 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9081 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9082 }
9083 }
9084
9085 next_offset += envelope_size;
9086 _next_ordinal_to_read += 1;
9087 if next_offset >= end_offset {
9088 return Ok(());
9089 }
9090
9091 while _next_ordinal_to_read < 6 {
9093 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9094 _next_ordinal_to_read += 1;
9095 next_offset += envelope_size;
9096 }
9097
9098 let next_out_of_line = decoder.next_out_of_line();
9099 let handles_before = decoder.remaining_handles();
9100 if let Some((inlined, num_bytes, num_handles)) =
9101 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9102 {
9103 let member_inline_size =
9104 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::TypeMarker>::inline_size(
9105 decoder.context,
9106 );
9107 if inlined != (member_inline_size <= 4) {
9108 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9109 }
9110 let inner_offset;
9111 let mut inner_depth = depth.clone();
9112 if inlined {
9113 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9114 inner_offset = next_offset;
9115 } else {
9116 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9117 inner_depth.increment()?;
9118 }
9119 let val_ref =
9120 self.offers2.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect));
9121 fidl::decode!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
9122 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9123 {
9124 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9125 }
9126 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9127 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9128 }
9129 }
9130
9131 next_offset += envelope_size;
9132 _next_ordinal_to_read += 1;
9133 if next_offset >= end_offset {
9134 return Ok(());
9135 }
9136
9137 while _next_ordinal_to_read < 7 {
9139 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9140 _next_ordinal_to_read += 1;
9141 next_offset += envelope_size;
9142 }
9143
9144 let next_out_of_line = decoder.next_out_of_line();
9145 let handles_before = decoder.remaining_handles();
9146 if let Some((inlined, num_bytes, num_handles)) =
9147 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9148 {
9149 let member_inline_size =
9150 <BusInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9151 if inlined != (member_inline_size <= 4) {
9152 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9153 }
9154 let inner_offset;
9155 let mut inner_depth = depth.clone();
9156 if inlined {
9157 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9158 inner_offset = next_offset;
9159 } else {
9160 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9161 inner_depth.increment()?;
9162 }
9163 let val_ref = self.bus_info.get_or_insert_with(|| {
9164 fidl::new_empty!(BusInfo, fidl::encoding::DefaultFuchsiaResourceDialect)
9165 });
9166 fidl::decode!(
9167 BusInfo,
9168 fidl::encoding::DefaultFuchsiaResourceDialect,
9169 val_ref,
9170 decoder,
9171 inner_offset,
9172 inner_depth
9173 )?;
9174 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9175 {
9176 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9177 }
9178 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9179 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9180 }
9181 }
9182
9183 next_offset += envelope_size;
9184 _next_ordinal_to_read += 1;
9185 if next_offset >= end_offset {
9186 return Ok(());
9187 }
9188
9189 while _next_ordinal_to_read < 8 {
9191 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9192 _next_ordinal_to_read += 1;
9193 next_offset += envelope_size;
9194 }
9195
9196 let next_out_of_line = decoder.next_out_of_line();
9197 let handles_before = decoder.remaining_handles();
9198 if let Some((inlined, num_bytes, num_handles)) =
9199 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9200 {
9201 let member_inline_size = <fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9202 if inlined != (member_inline_size <= 4) {
9203 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9204 }
9205 let inner_offset;
9206 let mut inner_depth = depth.clone();
9207 if inlined {
9208 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9209 inner_offset = next_offset;
9210 } else {
9211 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9212 inner_depth.increment()?;
9213 }
9214 let val_ref =
9215 self.properties2.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeProperty2, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
9216 fidl::decode!(fidl::encoding::Vector<NodeProperty2, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
9217 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9218 {
9219 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9220 }
9221 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9222 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9223 }
9224 }
9225
9226 next_offset += envelope_size;
9227
9228 while next_offset < end_offset {
9230 _next_ordinal_to_read += 1;
9231 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9232 next_offset += envelope_size;
9233 }
9234
9235 Ok(())
9236 }
9237 }
9238
9239 impl NodeControllerRequestBindRequest {
9240 #[inline(always)]
9241 fn max_ordinal_present(&self) -> u64 {
9242 if let Some(_) = self.driver_url_suffix {
9243 return 2;
9244 }
9245 if let Some(_) = self.force_rebind {
9246 return 1;
9247 }
9248 0
9249 }
9250 }
9251
9252 impl fidl::encoding::ValueTypeMarker for NodeControllerRequestBindRequest {
9253 type Borrowed<'a> = &'a Self;
9254 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9255 value
9256 }
9257 }
9258
9259 unsafe impl fidl::encoding::TypeMarker for NodeControllerRequestBindRequest {
9260 type Owned = Self;
9261
9262 #[inline(always)]
9263 fn inline_align(_context: fidl::encoding::Context) -> usize {
9264 8
9265 }
9266
9267 #[inline(always)]
9268 fn inline_size(_context: fidl::encoding::Context) -> usize {
9269 16
9270 }
9271 }
9272
9273 unsafe impl<D: fidl::encoding::ResourceDialect>
9274 fidl::encoding::Encode<NodeControllerRequestBindRequest, D>
9275 for &NodeControllerRequestBindRequest
9276 {
9277 unsafe fn encode(
9278 self,
9279 encoder: &mut fidl::encoding::Encoder<'_, D>,
9280 offset: usize,
9281 mut depth: fidl::encoding::Depth,
9282 ) -> fidl::Result<()> {
9283 encoder.debug_check_bounds::<NodeControllerRequestBindRequest>(offset);
9284 let max_ordinal: u64 = self.max_ordinal_present();
9286 encoder.write_num(max_ordinal, offset);
9287 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9288 if max_ordinal == 0 {
9290 return Ok(());
9291 }
9292 depth.increment()?;
9293 let envelope_size = 8;
9294 let bytes_len = max_ordinal as usize * envelope_size;
9295 #[allow(unused_variables)]
9296 let offset = encoder.out_of_line_offset(bytes_len);
9297 let mut _prev_end_offset: usize = 0;
9298 if 1 > max_ordinal {
9299 return Ok(());
9300 }
9301
9302 let cur_offset: usize = (1 - 1) * envelope_size;
9305
9306 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9308
9309 fidl::encoding::encode_in_envelope_optional::<bool, D>(
9314 self.force_rebind.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9315 encoder,
9316 offset + cur_offset,
9317 depth,
9318 )?;
9319
9320 _prev_end_offset = cur_offset + envelope_size;
9321 if 2 > max_ordinal {
9322 return Ok(());
9323 }
9324
9325 let cur_offset: usize = (2 - 1) * envelope_size;
9328
9329 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9331
9332 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
9337 self.driver_url_suffix.as_ref().map(
9338 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
9339 ),
9340 encoder,
9341 offset + cur_offset,
9342 depth,
9343 )?;
9344
9345 _prev_end_offset = cur_offset + envelope_size;
9346
9347 Ok(())
9348 }
9349 }
9350
9351 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9352 for NodeControllerRequestBindRequest
9353 {
9354 #[inline(always)]
9355 fn new_empty() -> Self {
9356 Self::default()
9357 }
9358
9359 unsafe fn decode(
9360 &mut self,
9361 decoder: &mut fidl::encoding::Decoder<'_, D>,
9362 offset: usize,
9363 mut depth: fidl::encoding::Depth,
9364 ) -> fidl::Result<()> {
9365 decoder.debug_check_bounds::<Self>(offset);
9366 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9367 None => return Err(fidl::Error::NotNullable),
9368 Some(len) => len,
9369 };
9370 if len == 0 {
9372 return Ok(());
9373 };
9374 depth.increment()?;
9375 let envelope_size = 8;
9376 let bytes_len = len * envelope_size;
9377 let offset = decoder.out_of_line_offset(bytes_len)?;
9378 let mut _next_ordinal_to_read = 0;
9380 let mut next_offset = offset;
9381 let end_offset = offset + bytes_len;
9382 _next_ordinal_to_read += 1;
9383 if next_offset >= end_offset {
9384 return Ok(());
9385 }
9386
9387 while _next_ordinal_to_read < 1 {
9389 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9390 _next_ordinal_to_read += 1;
9391 next_offset += envelope_size;
9392 }
9393
9394 let next_out_of_line = decoder.next_out_of_line();
9395 let handles_before = decoder.remaining_handles();
9396 if let Some((inlined, num_bytes, num_handles)) =
9397 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9398 {
9399 let member_inline_size =
9400 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9401 if inlined != (member_inline_size <= 4) {
9402 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9403 }
9404 let inner_offset;
9405 let mut inner_depth = depth.clone();
9406 if inlined {
9407 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9408 inner_offset = next_offset;
9409 } else {
9410 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9411 inner_depth.increment()?;
9412 }
9413 let val_ref = self.force_rebind.get_or_insert_with(|| fidl::new_empty!(bool, D));
9414 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9415 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9416 {
9417 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9418 }
9419 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9420 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9421 }
9422 }
9423
9424 next_offset += envelope_size;
9425 _next_ordinal_to_read += 1;
9426 if next_offset >= end_offset {
9427 return Ok(());
9428 }
9429
9430 while _next_ordinal_to_read < 2 {
9432 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9433 _next_ordinal_to_read += 1;
9434 next_offset += envelope_size;
9435 }
9436
9437 let next_out_of_line = decoder.next_out_of_line();
9438 let handles_before = decoder.remaining_handles();
9439 if let Some((inlined, num_bytes, num_handles)) =
9440 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9441 {
9442 let member_inline_size =
9443 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
9444 decoder.context,
9445 );
9446 if inlined != (member_inline_size <= 4) {
9447 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9448 }
9449 let inner_offset;
9450 let mut inner_depth = depth.clone();
9451 if inlined {
9452 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9453 inner_offset = next_offset;
9454 } else {
9455 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9456 inner_depth.increment()?;
9457 }
9458 let val_ref = self
9459 .driver_url_suffix
9460 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
9461 fidl::decode!(
9462 fidl::encoding::UnboundedString,
9463 D,
9464 val_ref,
9465 decoder,
9466 inner_offset,
9467 inner_depth
9468 )?;
9469 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9470 {
9471 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9472 }
9473 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9474 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9475 }
9476 }
9477
9478 next_offset += envelope_size;
9479
9480 while next_offset < end_offset {
9482 _next_ordinal_to_read += 1;
9483 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9484 next_offset += envelope_size;
9485 }
9486
9487 Ok(())
9488 }
9489 }
9490
9491 impl NodeSymbol {
9492 #[inline(always)]
9493 fn max_ordinal_present(&self) -> u64 {
9494 if let Some(_) = self.module_name {
9495 return 3;
9496 }
9497 if let Some(_) = self.address {
9498 return 2;
9499 }
9500 if let Some(_) = self.name {
9501 return 1;
9502 }
9503 0
9504 }
9505 }
9506
9507 impl fidl::encoding::ValueTypeMarker for NodeSymbol {
9508 type Borrowed<'a> = &'a Self;
9509 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9510 value
9511 }
9512 }
9513
9514 unsafe impl fidl::encoding::TypeMarker for NodeSymbol {
9515 type Owned = Self;
9516
9517 #[inline(always)]
9518 fn inline_align(_context: fidl::encoding::Context) -> usize {
9519 8
9520 }
9521
9522 #[inline(always)]
9523 fn inline_size(_context: fidl::encoding::Context) -> usize {
9524 16
9525 }
9526 }
9527
9528 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeSymbol, D>
9529 for &NodeSymbol
9530 {
9531 unsafe fn encode(
9532 self,
9533 encoder: &mut fidl::encoding::Encoder<'_, D>,
9534 offset: usize,
9535 mut depth: fidl::encoding::Depth,
9536 ) -> fidl::Result<()> {
9537 encoder.debug_check_bounds::<NodeSymbol>(offset);
9538 let max_ordinal: u64 = self.max_ordinal_present();
9540 encoder.write_num(max_ordinal, offset);
9541 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9542 if max_ordinal == 0 {
9544 return Ok(());
9545 }
9546 depth.increment()?;
9547 let envelope_size = 8;
9548 let bytes_len = max_ordinal as usize * envelope_size;
9549 #[allow(unused_variables)]
9550 let offset = encoder.out_of_line_offset(bytes_len);
9551 let mut _prev_end_offset: usize = 0;
9552 if 1 > max_ordinal {
9553 return Ok(());
9554 }
9555
9556 let cur_offset: usize = (1 - 1) * envelope_size;
9559
9560 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9562
9563 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
9568 self.name.as_ref().map(
9569 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
9570 ),
9571 encoder,
9572 offset + cur_offset,
9573 depth,
9574 )?;
9575
9576 _prev_end_offset = cur_offset + envelope_size;
9577 if 2 > max_ordinal {
9578 return Ok(());
9579 }
9580
9581 let cur_offset: usize = (2 - 1) * envelope_size;
9584
9585 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9587
9588 fidl::encoding::encode_in_envelope_optional::<u64, D>(
9593 self.address.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9594 encoder,
9595 offset + cur_offset,
9596 depth,
9597 )?;
9598
9599 _prev_end_offset = cur_offset + envelope_size;
9600 if 3 > max_ordinal {
9601 return Ok(());
9602 }
9603
9604 let cur_offset: usize = (3 - 1) * envelope_size;
9607
9608 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9610
9611 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
9616 self.module_name.as_ref().map(
9617 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
9618 ),
9619 encoder,
9620 offset + cur_offset,
9621 depth,
9622 )?;
9623
9624 _prev_end_offset = cur_offset + envelope_size;
9625
9626 Ok(())
9627 }
9628 }
9629
9630 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeSymbol {
9631 #[inline(always)]
9632 fn new_empty() -> Self {
9633 Self::default()
9634 }
9635
9636 unsafe fn decode(
9637 &mut self,
9638 decoder: &mut fidl::encoding::Decoder<'_, D>,
9639 offset: usize,
9640 mut depth: fidl::encoding::Depth,
9641 ) -> fidl::Result<()> {
9642 decoder.debug_check_bounds::<Self>(offset);
9643 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9644 None => return Err(fidl::Error::NotNullable),
9645 Some(len) => len,
9646 };
9647 if len == 0 {
9649 return Ok(());
9650 };
9651 depth.increment()?;
9652 let envelope_size = 8;
9653 let bytes_len = len * envelope_size;
9654 let offset = decoder.out_of_line_offset(bytes_len)?;
9655 let mut _next_ordinal_to_read = 0;
9657 let mut next_offset = offset;
9658 let end_offset = offset + bytes_len;
9659 _next_ordinal_to_read += 1;
9660 if next_offset >= end_offset {
9661 return Ok(());
9662 }
9663
9664 while _next_ordinal_to_read < 1 {
9666 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9667 _next_ordinal_to_read += 1;
9668 next_offset += envelope_size;
9669 }
9670
9671 let next_out_of_line = decoder.next_out_of_line();
9672 let handles_before = decoder.remaining_handles();
9673 if let Some((inlined, num_bytes, num_handles)) =
9674 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9675 {
9676 let member_inline_size =
9677 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
9678 decoder.context,
9679 );
9680 if inlined != (member_inline_size <= 4) {
9681 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9682 }
9683 let inner_offset;
9684 let mut inner_depth = depth.clone();
9685 if inlined {
9686 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9687 inner_offset = next_offset;
9688 } else {
9689 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9690 inner_depth.increment()?;
9691 }
9692 let val_ref = self
9693 .name
9694 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
9695 fidl::decode!(
9696 fidl::encoding::BoundedString<128>,
9697 D,
9698 val_ref,
9699 decoder,
9700 inner_offset,
9701 inner_depth
9702 )?;
9703 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9704 {
9705 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9706 }
9707 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9708 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9709 }
9710 }
9711
9712 next_offset += envelope_size;
9713 _next_ordinal_to_read += 1;
9714 if next_offset >= end_offset {
9715 return Ok(());
9716 }
9717
9718 while _next_ordinal_to_read < 2 {
9720 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9721 _next_ordinal_to_read += 1;
9722 next_offset += envelope_size;
9723 }
9724
9725 let next_out_of_line = decoder.next_out_of_line();
9726 let handles_before = decoder.remaining_handles();
9727 if let Some((inlined, num_bytes, num_handles)) =
9728 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9729 {
9730 let member_inline_size =
9731 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9732 if inlined != (member_inline_size <= 4) {
9733 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9734 }
9735 let inner_offset;
9736 let mut inner_depth = depth.clone();
9737 if inlined {
9738 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9739 inner_offset = next_offset;
9740 } else {
9741 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9742 inner_depth.increment()?;
9743 }
9744 let val_ref = self.address.get_or_insert_with(|| fidl::new_empty!(u64, D));
9745 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9746 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9747 {
9748 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9749 }
9750 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9751 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9752 }
9753 }
9754
9755 next_offset += envelope_size;
9756 _next_ordinal_to_read += 1;
9757 if next_offset >= end_offset {
9758 return Ok(());
9759 }
9760
9761 while _next_ordinal_to_read < 3 {
9763 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9764 _next_ordinal_to_read += 1;
9765 next_offset += envelope_size;
9766 }
9767
9768 let next_out_of_line = decoder.next_out_of_line();
9769 let handles_before = decoder.remaining_handles();
9770 if let Some((inlined, num_bytes, num_handles)) =
9771 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9772 {
9773 let member_inline_size =
9774 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
9775 decoder.context,
9776 );
9777 if inlined != (member_inline_size <= 4) {
9778 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9779 }
9780 let inner_offset;
9781 let mut inner_depth = depth.clone();
9782 if inlined {
9783 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9784 inner_offset = next_offset;
9785 } else {
9786 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9787 inner_depth.increment()?;
9788 }
9789 let val_ref = self
9790 .module_name
9791 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
9792 fidl::decode!(
9793 fidl::encoding::BoundedString<128>,
9794 D,
9795 val_ref,
9796 decoder,
9797 inner_offset,
9798 inner_depth
9799 )?;
9800 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9801 {
9802 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9803 }
9804 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9805 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9806 }
9807 }
9808
9809 next_offset += envelope_size;
9810
9811 while next_offset < end_offset {
9813 _next_ordinal_to_read += 1;
9814 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9815 next_offset += envelope_size;
9816 }
9817
9818 Ok(())
9819 }
9820 }
9821
9822 impl fidl::encoding::ValueTypeMarker for DeviceAddress {
9823 type Borrowed<'a> = &'a Self;
9824 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9825 value
9826 }
9827 }
9828
9829 unsafe impl fidl::encoding::TypeMarker for DeviceAddress {
9830 type Owned = Self;
9831
9832 #[inline(always)]
9833 fn inline_align(_context: fidl::encoding::Context) -> usize {
9834 8
9835 }
9836
9837 #[inline(always)]
9838 fn inline_size(_context: fidl::encoding::Context) -> usize {
9839 16
9840 }
9841 }
9842
9843 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceAddress, D>
9844 for &DeviceAddress
9845 {
9846 #[inline]
9847 unsafe fn encode(
9848 self,
9849 encoder: &mut fidl::encoding::Encoder<'_, D>,
9850 offset: usize,
9851 _depth: fidl::encoding::Depth,
9852 ) -> fidl::Result<()> {
9853 encoder.debug_check_bounds::<DeviceAddress>(offset);
9854 encoder.write_num::<u64>(self.ordinal(), offset);
9855 match self {
9856 DeviceAddress::IntValue(ref val) => {
9857 fidl::encoding::encode_in_envelope::<u8, D>(
9858 <u8 as fidl::encoding::ValueTypeMarker>::borrow(val),
9859 encoder, offset + 8, _depth
9860 )
9861 }
9862 DeviceAddress::ArrayIntValue(ref val) => {
9863 fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<u8, 10>, D>(
9864 <fidl::encoding::Vector<u8, 10> as fidl::encoding::ValueTypeMarker>::borrow(val),
9865 encoder, offset + 8, _depth
9866 )
9867 }
9868 DeviceAddress::CharIntValue(ref val) => {
9869 fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<4>, D>(
9870 <fidl::encoding::BoundedString<4> as fidl::encoding::ValueTypeMarker>::borrow(val),
9871 encoder, offset + 8, _depth
9872 )
9873 }
9874 DeviceAddress::ArrayCharIntValue(ref val) => {
9875 fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10>, D>(
9876 <fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10> as fidl::encoding::ValueTypeMarker>::borrow(val),
9877 encoder, offset + 8, _depth
9878 )
9879 }
9880 DeviceAddress::StringValue(ref val) => {
9881 fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<32>, D>(
9882 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow(val),
9883 encoder, offset + 8, _depth
9884 )
9885 }
9886 DeviceAddress::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
9887 }
9888 }
9889 }
9890
9891 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceAddress {
9892 #[inline(always)]
9893 fn new_empty() -> Self {
9894 Self::__SourceBreaking { unknown_ordinal: 0 }
9895 }
9896
9897 #[inline]
9898 unsafe fn decode(
9899 &mut self,
9900 decoder: &mut fidl::encoding::Decoder<'_, D>,
9901 offset: usize,
9902 mut depth: fidl::encoding::Depth,
9903 ) -> fidl::Result<()> {
9904 decoder.debug_check_bounds::<Self>(offset);
9905 #[allow(unused_variables)]
9906 let next_out_of_line = decoder.next_out_of_line();
9907 let handles_before = decoder.remaining_handles();
9908 let (ordinal, inlined, num_bytes, num_handles) =
9909 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
9910
9911 let member_inline_size = match ordinal {
9912 1 => <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
9913 2 => <fidl::encoding::Vector<u8, 10> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
9914 3 => <fidl::encoding::BoundedString<4> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
9915 4 => <fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
9916 5 => <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
9917 0 => return Err(fidl::Error::UnknownUnionTag),
9918 _ => num_bytes as usize,
9919 };
9920
9921 if inlined != (member_inline_size <= 4) {
9922 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9923 }
9924 let _inner_offset;
9925 if inlined {
9926 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
9927 _inner_offset = offset + 8;
9928 } else {
9929 depth.increment()?;
9930 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9931 }
9932 match ordinal {
9933 1 => {
9934 #[allow(irrefutable_let_patterns)]
9935 if let DeviceAddress::IntValue(_) = self {
9936 } else {
9938 *self = DeviceAddress::IntValue(fidl::new_empty!(u8, D));
9940 }
9941 #[allow(irrefutable_let_patterns)]
9942 if let DeviceAddress::IntValue(ref mut val) = self {
9943 fidl::decode!(u8, D, val, decoder, _inner_offset, depth)?;
9944 } else {
9945 unreachable!()
9946 }
9947 }
9948 2 => {
9949 #[allow(irrefutable_let_patterns)]
9950 if let DeviceAddress::ArrayIntValue(_) = self {
9951 } else {
9953 *self = DeviceAddress::ArrayIntValue(
9955 fidl::new_empty!(fidl::encoding::Vector<u8, 10>, D),
9956 );
9957 }
9958 #[allow(irrefutable_let_patterns)]
9959 if let DeviceAddress::ArrayIntValue(ref mut val) = self {
9960 fidl::decode!(fidl::encoding::Vector<u8, 10>, D, val, decoder, _inner_offset, depth)?;
9961 } else {
9962 unreachable!()
9963 }
9964 }
9965 3 => {
9966 #[allow(irrefutable_let_patterns)]
9967 if let DeviceAddress::CharIntValue(_) = self {
9968 } else {
9970 *self = DeviceAddress::CharIntValue(fidl::new_empty!(
9972 fidl::encoding::BoundedString<4>,
9973 D
9974 ));
9975 }
9976 #[allow(irrefutable_let_patterns)]
9977 if let DeviceAddress::CharIntValue(ref mut val) = self {
9978 fidl::decode!(
9979 fidl::encoding::BoundedString<4>,
9980 D,
9981 val,
9982 decoder,
9983 _inner_offset,
9984 depth
9985 )?;
9986 } else {
9987 unreachable!()
9988 }
9989 }
9990 4 => {
9991 #[allow(irrefutable_let_patterns)]
9992 if let DeviceAddress::ArrayCharIntValue(_) = self {
9993 } else {
9995 *self = DeviceAddress::ArrayCharIntValue(fidl::new_empty!(
9997 fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10>,
9998 D
9999 ));
10000 }
10001 #[allow(irrefutable_let_patterns)]
10002 if let DeviceAddress::ArrayCharIntValue(ref mut val) = self {
10003 fidl::decode!(
10004 fidl::encoding::Vector<fidl::encoding::BoundedString<4>, 10>,
10005 D,
10006 val,
10007 decoder,
10008 _inner_offset,
10009 depth
10010 )?;
10011 } else {
10012 unreachable!()
10013 }
10014 }
10015 5 => {
10016 #[allow(irrefutable_let_patterns)]
10017 if let DeviceAddress::StringValue(_) = self {
10018 } else {
10020 *self = DeviceAddress::StringValue(fidl::new_empty!(
10022 fidl::encoding::BoundedString<32>,
10023 D
10024 ));
10025 }
10026 #[allow(irrefutable_let_patterns)]
10027 if let DeviceAddress::StringValue(ref mut val) = self {
10028 fidl::decode!(
10029 fidl::encoding::BoundedString<32>,
10030 D,
10031 val,
10032 decoder,
10033 _inner_offset,
10034 depth
10035 )?;
10036 } else {
10037 unreachable!()
10038 }
10039 }
10040 #[allow(deprecated)]
10041 ordinal => {
10042 for _ in 0..num_handles {
10043 decoder.drop_next_handle()?;
10044 }
10045 *self = DeviceAddress::__SourceBreaking { unknown_ordinal: ordinal };
10046 }
10047 }
10048 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
10049 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10050 }
10051 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10052 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10053 }
10054 Ok(())
10055 }
10056 }
10057
10058 impl fidl::encoding::ValueTypeMarker for NodePropertyKey {
10059 type Borrowed<'a> = &'a Self;
10060 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10061 value
10062 }
10063 }
10064
10065 unsafe impl fidl::encoding::TypeMarker for NodePropertyKey {
10066 type Owned = Self;
10067
10068 #[inline(always)]
10069 fn inline_align(_context: fidl::encoding::Context) -> usize {
10070 8
10071 }
10072
10073 #[inline(always)]
10074 fn inline_size(_context: fidl::encoding::Context) -> usize {
10075 16
10076 }
10077 }
10078
10079 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodePropertyKey, D>
10080 for &NodePropertyKey
10081 {
10082 #[inline]
10083 unsafe fn encode(
10084 self,
10085 encoder: &mut fidl::encoding::Encoder<'_, D>,
10086 offset: usize,
10087 _depth: fidl::encoding::Depth,
10088 ) -> fidl::Result<()> {
10089 encoder.debug_check_bounds::<NodePropertyKey>(offset);
10090 encoder.write_num::<u64>(self.ordinal(), offset);
10091 match self {
10092 NodePropertyKey::IntValue(ref val) => fidl::encoding::encode_in_envelope::<u32, D>(
10093 <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
10094 encoder,
10095 offset + 8,
10096 _depth,
10097 ),
10098 NodePropertyKey::StringValue(ref val) => fidl::encoding::encode_in_envelope::<
10099 fidl::encoding::BoundedString<256>,
10100 D,
10101 >(
10102 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
10103 val,
10104 ),
10105 encoder,
10106 offset + 8,
10107 _depth,
10108 ),
10109 }
10110 }
10111 }
10112
10113 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodePropertyKey {
10114 #[inline(always)]
10115 fn new_empty() -> Self {
10116 Self::IntValue(fidl::new_empty!(u32, D))
10117 }
10118
10119 #[inline]
10120 unsafe fn decode(
10121 &mut self,
10122 decoder: &mut fidl::encoding::Decoder<'_, D>,
10123 offset: usize,
10124 mut depth: fidl::encoding::Depth,
10125 ) -> fidl::Result<()> {
10126 decoder.debug_check_bounds::<Self>(offset);
10127 #[allow(unused_variables)]
10128 let next_out_of_line = decoder.next_out_of_line();
10129 let handles_before = decoder.remaining_handles();
10130 let (ordinal, inlined, num_bytes, num_handles) =
10131 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
10132
10133 let member_inline_size = match ordinal {
10134 1 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
10135 2 => {
10136 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
10137 decoder.context,
10138 )
10139 }
10140 _ => return Err(fidl::Error::UnknownUnionTag),
10141 };
10142
10143 if inlined != (member_inline_size <= 4) {
10144 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10145 }
10146 let _inner_offset;
10147 if inlined {
10148 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
10149 _inner_offset = offset + 8;
10150 } else {
10151 depth.increment()?;
10152 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10153 }
10154 match ordinal {
10155 1 => {
10156 #[allow(irrefutable_let_patterns)]
10157 if let NodePropertyKey::IntValue(_) = self {
10158 } else {
10160 *self = NodePropertyKey::IntValue(fidl::new_empty!(u32, D));
10162 }
10163 #[allow(irrefutable_let_patterns)]
10164 if let NodePropertyKey::IntValue(ref mut val) = self {
10165 fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
10166 } else {
10167 unreachable!()
10168 }
10169 }
10170 2 => {
10171 #[allow(irrefutable_let_patterns)]
10172 if let NodePropertyKey::StringValue(_) = self {
10173 } else {
10175 *self = NodePropertyKey::StringValue(fidl::new_empty!(
10177 fidl::encoding::BoundedString<256>,
10178 D
10179 ));
10180 }
10181 #[allow(irrefutable_let_patterns)]
10182 if let NodePropertyKey::StringValue(ref mut val) = self {
10183 fidl::decode!(
10184 fidl::encoding::BoundedString<256>,
10185 D,
10186 val,
10187 decoder,
10188 _inner_offset,
10189 depth
10190 )?;
10191 } else {
10192 unreachable!()
10193 }
10194 }
10195 ordinal => panic!("unexpected ordinal {:?}", ordinal),
10196 }
10197 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
10198 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10199 }
10200 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10201 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10202 }
10203 Ok(())
10204 }
10205 }
10206
10207 impl fidl::encoding::ValueTypeMarker for NodePropertyValue {
10208 type Borrowed<'a> = &'a Self;
10209 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10210 value
10211 }
10212 }
10213
10214 unsafe impl fidl::encoding::TypeMarker for NodePropertyValue {
10215 type Owned = Self;
10216
10217 #[inline(always)]
10218 fn inline_align(_context: fidl::encoding::Context) -> usize {
10219 8
10220 }
10221
10222 #[inline(always)]
10223 fn inline_size(_context: fidl::encoding::Context) -> usize {
10224 16
10225 }
10226 }
10227
10228 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodePropertyValue, D>
10229 for &NodePropertyValue
10230 {
10231 #[inline]
10232 unsafe fn encode(
10233 self,
10234 encoder: &mut fidl::encoding::Encoder<'_, D>,
10235 offset: usize,
10236 _depth: fidl::encoding::Depth,
10237 ) -> fidl::Result<()> {
10238 encoder.debug_check_bounds::<NodePropertyValue>(offset);
10239 encoder.write_num::<u64>(self.ordinal(), offset);
10240 match self {
10241 NodePropertyValue::IntValue(ref val) => {
10242 fidl::encoding::encode_in_envelope::<u32, D>(
10243 <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
10244 encoder,
10245 offset + 8,
10246 _depth,
10247 )
10248 }
10249 NodePropertyValue::StringValue(ref val) => fidl::encoding::encode_in_envelope::<
10250 fidl::encoding::BoundedString<256>,
10251 D,
10252 >(
10253 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
10254 val,
10255 ),
10256 encoder,
10257 offset + 8,
10258 _depth,
10259 ),
10260 NodePropertyValue::BoolValue(ref val) => {
10261 fidl::encoding::encode_in_envelope::<bool, D>(
10262 <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
10263 encoder,
10264 offset + 8,
10265 _depth,
10266 )
10267 }
10268 NodePropertyValue::EnumValue(ref val) => fidl::encoding::encode_in_envelope::<
10269 fidl::encoding::BoundedString<256>,
10270 D,
10271 >(
10272 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
10273 val,
10274 ),
10275 encoder,
10276 offset + 8,
10277 _depth,
10278 ),
10279 NodePropertyValue::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
10280 }
10281 }
10282 }
10283
10284 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodePropertyValue {
10285 #[inline(always)]
10286 fn new_empty() -> Self {
10287 Self::__SourceBreaking { unknown_ordinal: 0 }
10288 }
10289
10290 #[inline]
10291 unsafe fn decode(
10292 &mut self,
10293 decoder: &mut fidl::encoding::Decoder<'_, D>,
10294 offset: usize,
10295 mut depth: fidl::encoding::Depth,
10296 ) -> fidl::Result<()> {
10297 decoder.debug_check_bounds::<Self>(offset);
10298 #[allow(unused_variables)]
10299 let next_out_of_line = decoder.next_out_of_line();
10300 let handles_before = decoder.remaining_handles();
10301 let (ordinal, inlined, num_bytes, num_handles) =
10302 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
10303
10304 let member_inline_size = match ordinal {
10305 1 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
10306 2 => {
10307 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
10308 decoder.context,
10309 )
10310 }
10311 3 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
10312 4 => {
10313 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
10314 decoder.context,
10315 )
10316 }
10317 0 => return Err(fidl::Error::UnknownUnionTag),
10318 _ => num_bytes as usize,
10319 };
10320
10321 if inlined != (member_inline_size <= 4) {
10322 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10323 }
10324 let _inner_offset;
10325 if inlined {
10326 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
10327 _inner_offset = offset + 8;
10328 } else {
10329 depth.increment()?;
10330 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10331 }
10332 match ordinal {
10333 1 => {
10334 #[allow(irrefutable_let_patterns)]
10335 if let NodePropertyValue::IntValue(_) = self {
10336 } else {
10338 *self = NodePropertyValue::IntValue(fidl::new_empty!(u32, D));
10340 }
10341 #[allow(irrefutable_let_patterns)]
10342 if let NodePropertyValue::IntValue(ref mut val) = self {
10343 fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
10344 } else {
10345 unreachable!()
10346 }
10347 }
10348 2 => {
10349 #[allow(irrefutable_let_patterns)]
10350 if let NodePropertyValue::StringValue(_) = self {
10351 } else {
10353 *self = NodePropertyValue::StringValue(fidl::new_empty!(
10355 fidl::encoding::BoundedString<256>,
10356 D
10357 ));
10358 }
10359 #[allow(irrefutable_let_patterns)]
10360 if let NodePropertyValue::StringValue(ref mut val) = self {
10361 fidl::decode!(
10362 fidl::encoding::BoundedString<256>,
10363 D,
10364 val,
10365 decoder,
10366 _inner_offset,
10367 depth
10368 )?;
10369 } else {
10370 unreachable!()
10371 }
10372 }
10373 3 => {
10374 #[allow(irrefutable_let_patterns)]
10375 if let NodePropertyValue::BoolValue(_) = self {
10376 } else {
10378 *self = NodePropertyValue::BoolValue(fidl::new_empty!(bool, D));
10380 }
10381 #[allow(irrefutable_let_patterns)]
10382 if let NodePropertyValue::BoolValue(ref mut val) = self {
10383 fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
10384 } else {
10385 unreachable!()
10386 }
10387 }
10388 4 => {
10389 #[allow(irrefutable_let_patterns)]
10390 if let NodePropertyValue::EnumValue(_) = self {
10391 } else {
10393 *self = NodePropertyValue::EnumValue(fidl::new_empty!(
10395 fidl::encoding::BoundedString<256>,
10396 D
10397 ));
10398 }
10399 #[allow(irrefutable_let_patterns)]
10400 if let NodePropertyValue::EnumValue(ref mut val) = self {
10401 fidl::decode!(
10402 fidl::encoding::BoundedString<256>,
10403 D,
10404 val,
10405 decoder,
10406 _inner_offset,
10407 depth
10408 )?;
10409 } else {
10410 unreachable!()
10411 }
10412 }
10413 #[allow(deprecated)]
10414 ordinal => {
10415 for _ in 0..num_handles {
10416 decoder.drop_next_handle()?;
10417 }
10418 *self = NodePropertyValue::__SourceBreaking { unknown_ordinal: ordinal };
10419 }
10420 }
10421 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
10422 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10423 }
10424 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10425 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10426 }
10427 Ok(())
10428 }
10429 }
10430
10431 impl fidl::encoding::ValueTypeMarker for Offer {
10432 type Borrowed<'a> = &'a Self;
10433 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10434 value
10435 }
10436 }
10437
10438 unsafe impl fidl::encoding::TypeMarker for Offer {
10439 type Owned = Self;
10440
10441 #[inline(always)]
10442 fn inline_align(_context: fidl::encoding::Context) -> usize {
10443 8
10444 }
10445
10446 #[inline(always)]
10447 fn inline_size(_context: fidl::encoding::Context) -> usize {
10448 16
10449 }
10450 }
10451
10452 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Offer, D> for &Offer {
10453 #[inline]
10454 unsafe fn encode(
10455 self,
10456 encoder: &mut fidl::encoding::Encoder<'_, D>,
10457 offset: usize,
10458 _depth: fidl::encoding::Depth,
10459 ) -> fidl::Result<()> {
10460 encoder.debug_check_bounds::<Offer>(offset);
10461 encoder.write_num::<u64>(self.ordinal(), offset);
10462 match self {
10463 Offer::ZirconTransport(ref val) => fidl::encoding::encode_in_envelope::<
10464 fidl_fuchsia_component_decl::Offer,
10465 D,
10466 >(
10467 <fidl_fuchsia_component_decl::Offer as fidl::encoding::ValueTypeMarker>::borrow(
10468 val,
10469 ),
10470 encoder,
10471 offset + 8,
10472 _depth,
10473 ),
10474 Offer::DriverTransport(ref val) => fidl::encoding::encode_in_envelope::<
10475 fidl_fuchsia_component_decl::Offer,
10476 D,
10477 >(
10478 <fidl_fuchsia_component_decl::Offer as fidl::encoding::ValueTypeMarker>::borrow(
10479 val,
10480 ),
10481 encoder,
10482 offset + 8,
10483 _depth,
10484 ),
10485 Offer::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
10486 }
10487 }
10488 }
10489
10490 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Offer {
10491 #[inline(always)]
10492 fn new_empty() -> Self {
10493 Self::__SourceBreaking { unknown_ordinal: 0 }
10494 }
10495
10496 #[inline]
10497 unsafe fn decode(
10498 &mut self,
10499 decoder: &mut fidl::encoding::Decoder<'_, D>,
10500 offset: usize,
10501 mut depth: fidl::encoding::Depth,
10502 ) -> fidl::Result<()> {
10503 decoder.debug_check_bounds::<Self>(offset);
10504 #[allow(unused_variables)]
10505 let next_out_of_line = decoder.next_out_of_line();
10506 let handles_before = decoder.remaining_handles();
10507 let (ordinal, inlined, num_bytes, num_handles) =
10508 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
10509
10510 let member_inline_size = match ordinal {
10511 1 => {
10512 <fidl_fuchsia_component_decl::Offer as fidl::encoding::TypeMarker>::inline_size(
10513 decoder.context,
10514 )
10515 }
10516 2 => {
10517 <fidl_fuchsia_component_decl::Offer as fidl::encoding::TypeMarker>::inline_size(
10518 decoder.context,
10519 )
10520 }
10521 0 => return Err(fidl::Error::UnknownUnionTag),
10522 _ => num_bytes as usize,
10523 };
10524
10525 if inlined != (member_inline_size <= 4) {
10526 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10527 }
10528 let _inner_offset;
10529 if inlined {
10530 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
10531 _inner_offset = offset + 8;
10532 } else {
10533 depth.increment()?;
10534 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10535 }
10536 match ordinal {
10537 1 => {
10538 #[allow(irrefutable_let_patterns)]
10539 if let Offer::ZirconTransport(_) = self {
10540 } else {
10542 *self = Offer::ZirconTransport(fidl::new_empty!(
10544 fidl_fuchsia_component_decl::Offer,
10545 D
10546 ));
10547 }
10548 #[allow(irrefutable_let_patterns)]
10549 if let Offer::ZirconTransport(ref mut val) = self {
10550 fidl::decode!(
10551 fidl_fuchsia_component_decl::Offer,
10552 D,
10553 val,
10554 decoder,
10555 _inner_offset,
10556 depth
10557 )?;
10558 } else {
10559 unreachable!()
10560 }
10561 }
10562 2 => {
10563 #[allow(irrefutable_let_patterns)]
10564 if let Offer::DriverTransport(_) = self {
10565 } else {
10567 *self = Offer::DriverTransport(fidl::new_empty!(
10569 fidl_fuchsia_component_decl::Offer,
10570 D
10571 ));
10572 }
10573 #[allow(irrefutable_let_patterns)]
10574 if let Offer::DriverTransport(ref mut val) = self {
10575 fidl::decode!(
10576 fidl_fuchsia_component_decl::Offer,
10577 D,
10578 val,
10579 decoder,
10580 _inner_offset,
10581 depth
10582 )?;
10583 } else {
10584 unreachable!()
10585 }
10586 }
10587 #[allow(deprecated)]
10588 ordinal => {
10589 for _ in 0..num_handles {
10590 decoder.drop_next_handle()?;
10591 }
10592 *self = Offer::__SourceBreaking { unknown_ordinal: ordinal };
10593 }
10594 }
10595 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
10596 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10597 }
10598 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10599 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10600 }
10601 Ok(())
10602 }
10603 }
10604}