1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11pub const BINDING_RESULT_MAX: u8 = 10;
12
13pub const BINDING_RESULT_MAX_2: u32 = 256;
14
15pub const HASH_LENGTH: u8 = 64;
16
17pub const MAX_SEGMENTS: u32 = 20;
18
19pub const NODE_MONIKER_MAX: u32 = 1024;
20
21pub const POWER_TOKEN_OVERRIDES_MAX: u8 = 16;
22
23bitflags! {
24 #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
28 pub struct RestartRematchFlags: u32 {
29 const REQUESTED = 1;
32 const NON_REQUESTED = 2;
36 const COMPOSITE_SPEC = 8;
38 }
39}
40
41impl RestartRematchFlags {
42 #[inline(always)]
43 pub fn from_bits_allow_unknown(bits: u32) -> Self {
44 Self::from_bits_retain(bits)
45 }
46
47 #[inline(always)]
48 pub fn has_unknown_bits(&self) -> bool {
49 self.get_unknown_bits() != 0
50 }
51
52 #[inline(always)]
53 pub fn get_unknown_bits(&self) -> u32 {
54 self.bits() & !Self::all().bits()
55 }
56}
57
58#[derive(Clone, Debug, PartialEq)]
59pub struct CompositeInfoIteratorGetNextResponse {
60 pub composites: Vec<CompositeNodeInfo>,
61}
62
63impl fidl::Persistable for CompositeInfoIteratorGetNextResponse {}
64
65#[derive(Clone, Debug, PartialEq)]
66pub struct CompositeNodeSpecIteratorGetNextResponse {
67 pub specs: Vec<fidl_fuchsia_driver_framework_common::CompositeInfo>,
68}
69
70impl fidl::Persistable for CompositeNodeSpecIteratorGetNextResponse {}
71
72#[derive(Clone, Debug, PartialEq)]
73pub struct DriverHostInfoIteratorGetNextResponse {
74 pub driver_hosts: Vec<DriverHostInfo>,
75}
76
77impl fidl::Persistable for DriverHostInfoIteratorGetNextResponse {}
78
79#[derive(Clone, Debug, PartialEq)]
80pub struct DriverInfoIteratorGetNextResponse {
81 pub drivers: Vec<fidl_fuchsia_driver_framework_common::DriverInfo>,
82}
83
84impl fidl::Persistable for DriverInfoIteratorGetNextResponse {}
85
86#[derive(Clone, Debug, PartialEq)]
87pub struct ManagerAddTestNodeRequest {
88 pub args: TestNodeAddArgs,
89}
90
91impl fidl::Persistable for ManagerAddTestNodeRequest {}
92
93#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
94pub struct ManagerDisableDriverRequest {
95 pub driver_url: String,
96 pub package_hash: Option<String>,
97}
98
99impl fidl::Persistable for ManagerDisableDriverRequest {}
100
101#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
102pub struct ManagerEnableDriverRequest {
103 pub driver_url: String,
104 pub package_hash: Option<String>,
105}
106
107impl fidl::Persistable for ManagerEnableDriverRequest {}
108
109#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
110pub struct ManagerRebindCompositesWithDriverRequest {
111 pub driver_url: String,
112}
113
114impl fidl::Persistable for ManagerRebindCompositesWithDriverRequest {}
115
116#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
117pub struct ManagerRemoveTestNodeRequest {
118 pub name: String,
119}
120
121impl fidl::Persistable for ManagerRemoveTestNodeRequest {}
122
123#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
124pub struct ManagerRestartDriverHostsRequest {
125 pub driver_url: String,
126 pub rematch_flags: RestartRematchFlags,
127}
128
129impl fidl::Persistable for ManagerRestartDriverHostsRequest {}
130
131#[derive(Clone, Debug, PartialEq)]
132pub struct ManagerBindAllUnboundNodes2Response {
133 pub binding_result: Vec<NodeBindingInfo>,
135}
136
137impl fidl::Persistable for ManagerBindAllUnboundNodes2Response {}
138
139#[derive(Clone, Debug, PartialEq)]
140pub struct ManagerBindAllUnboundNodesResponse {
141 pub binding_result: Vec<NodeBindingInfo>,
143}
144
145impl fidl::Persistable for ManagerBindAllUnboundNodesResponse {}
146
147#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
148#[repr(C)]
149pub struct ManagerRebindCompositesWithDriverResponse {
150 pub count: u32,
151}
152
153impl fidl::Persistable for ManagerRebindCompositesWithDriverResponse {}
154
155#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
156#[repr(C)]
157pub struct ManagerRestartDriverHostsResponse {
158 pub count: u32,
159}
160
161impl fidl::Persistable for ManagerRestartDriverHostsResponse {}
162
163#[derive(Clone, Debug, PartialEq)]
164pub struct NodeInfoIteratorGetNextResponse {
165 pub nodes: Vec<NodeInfo>,
166}
167
168impl fidl::Persistable for NodeInfoIteratorGetNextResponse {}
169
170#[derive(Clone, Debug, Default, PartialEq)]
172pub struct CompositeNodeInfo {
173 pub parent_topological_paths: Option<Vec<Option<String>>>,
175 pub topological_path: Option<String>,
177 pub composite: Option<CompositeInfo>,
178 pub parent_monikers: Option<Vec<Option<String>>>,
180 pub moniker: Option<String>,
182 #[doc(hidden)]
183 pub __source_breaking: fidl::marker::SourceBreaking,
184}
185
186impl fidl::Persistable for CompositeNodeInfo {}
187
188#[derive(Clone, Debug, Default, PartialEq)]
190pub struct DispatcherInfo {
191 pub driver: Option<String>,
193 pub name: Option<String>,
195 pub options: Option<u32>,
197 pub scheduler_role: Option<String>,
199 #[doc(hidden)]
200 pub __source_breaking: fidl::marker::SourceBreaking,
201}
202
203impl fidl::Persistable for DispatcherInfo {}
204
205#[derive(Clone, Debug, Default, PartialEq)]
207pub struct DriverHostInfo {
208 pub process_koid: Option<u64>,
210 pub threads: Option<Vec<ThreadInfo>>,
212 pub drivers: Option<Vec<String>>,
214 pub dispatchers: Option<Vec<DispatcherInfo>>,
216 pub name: Option<String>,
218 #[doc(hidden)]
219 pub __source_breaking: fidl::marker::SourceBreaking,
220}
221
222impl fidl::Persistable for DriverHostInfo {}
223
224#[derive(Clone, Debug, Default, PartialEq)]
226pub struct NodeBindingInfo {
227 pub node_name: Option<String>,
229 pub driver_url: Option<String>,
232 pub composite_parents: Option<Vec<fidl_fuchsia_driver_framework_common::CompositeParent>>,
235 #[doc(hidden)]
236 pub __source_breaking: fidl::marker::SourceBreaking,
237}
238
239impl fidl::Persistable for NodeBindingInfo {}
240
241#[derive(Clone, Debug, Default, PartialEq)]
242pub struct NodeInfo {
243 pub id: Option<u64>,
245 pub parent_ids: Option<Vec<u64>>,
247 pub child_ids: Option<Vec<u64>>,
249 pub driver_host_koid: Option<u64>,
251 pub bound_driver_url: Option<String>,
253 pub moniker: Option<String>,
255 pub node_property_list: Option<Vec<fidl_fuchsia_driver_framework_common::NodeProperty>>,
257 pub offer_list: Option<Vec<fidl_fuchsia_component_decl_common::Offer>>,
259 pub quarantined: Option<bool>,
262 pub bus_topology: Option<Vec<fidl_fuchsia_driver_framework_common::BusInfo>>,
264 pub topological_path: Option<String>,
266 #[doc(hidden)]
267 pub __source_breaking: fidl::marker::SourceBreaking,
268}
269
270impl fidl::Persistable for NodeInfo {}
271
272#[derive(Clone, Debug, Default, PartialEq)]
273pub struct TestNodeAddArgs {
274 pub name: Option<String>,
276 pub properties: Option<Vec<fidl_fuchsia_driver_framework_common::NodeProperty>>,
278 #[doc(hidden)]
279 pub __source_breaking: fidl::marker::SourceBreaking,
280}
281
282impl fidl::Persistable for TestNodeAddArgs {}
283
284#[derive(Clone, Debug, Default, PartialEq)]
286pub struct ThreadInfo {
287 pub koid: Option<u64>,
289 pub name: Option<String>,
291 pub scheduler_role: Option<String>,
293 #[doc(hidden)]
294 pub __source_breaking: fidl::marker::SourceBreaking,
295}
296
297impl fidl::Persistable for ThreadInfo {}
298
299#[derive(Clone, Debug, PartialEq)]
301pub enum CompositeInfo {
302 Composite(fidl_fuchsia_driver_framework_common::CompositeInfo),
303}
304
305impl CompositeInfo {
306 #[inline]
307 pub fn ordinal(&self) -> u64 {
308 match *self {
309 Self::Composite(_) => 2,
310 }
311 }
312}
313
314impl fidl::Persistable for CompositeInfo {}
315
316pub mod composite_info_iterator_ordinals {
317 pub const GET_NEXT: u64 = 0x50af808a6e34bb96;
318}
319
320pub mod composite_node_spec_iterator_ordinals {
321 pub const GET_NEXT: u64 = 0x32fd110355479f71;
322}
323
324pub mod driver_host_info_iterator_ordinals {
325 pub const GET_NEXT: u64 = 0xbf58e5cd863a86;
326}
327
328pub mod driver_info_iterator_ordinals {
329 pub const GET_NEXT: u64 = 0x2c394711c6784952;
330}
331
332pub mod manager_ordinals {
333 pub const GET_DRIVER_INFO: u64 = 0x34b1541e24e5d587;
334 pub const GET_COMPOSITE_NODE_SPECS: u64 = 0x258540c7ff37328f;
335 pub const GET_NODE_INFO: u64 = 0x7c272c6b7bcb4f9e;
336 pub const GET_COMPOSITE_INFO: u64 = 0x4456da4372a49a36;
337 pub const GET_DRIVER_HOST_INFO: u64 = 0x366b2c4429d44155;
338 pub const RESTART_DRIVER_HOSTS: u64 = 0x64fb09a17a4dd8c7;
339 pub const DISABLE_DRIVER: u64 = 0x3cabde92ba1ac967;
340 pub const ENABLE_DRIVER: u64 = 0x76a7518712965faf;
341 pub const BIND_ALL_UNBOUND_NODES: u64 = 0x2b4343fe1cfb9f21;
342 pub const BIND_ALL_UNBOUND_NODES2: u64 = 0x3e82ce2d6fc998d7;
343 pub const ADD_TEST_NODE: u64 = 0x774836bbb7fbc5b9;
344 pub const REMOVE_TEST_NODE: u64 = 0x1618ec4e5fc4010e;
345 pub const WAIT_FOR_BOOTUP: u64 = 0x52077de068225cdc;
346 pub const RESTART_WITH_DICTIONARY: u64 = 0x5eb620a85359a10e;
347 pub const RESTART_WITH_DICTIONARY_AND_POWER_DEPENDENCIES: u64 = 0x42914549590210;
348 pub const REBIND_COMPOSITES_WITH_DRIVER: u64 = 0x175d492045f61f28;
349}
350
351pub mod node_info_iterator_ordinals {
352 pub const GET_NEXT: u64 = 0x33c7c070412f889f;
353}
354
355mod internal {
356 use super::*;
357 unsafe impl fidl::encoding::TypeMarker for RestartRematchFlags {
358 type Owned = Self;
359
360 #[inline(always)]
361 fn inline_align(_context: fidl::encoding::Context) -> usize {
362 4
363 }
364
365 #[inline(always)]
366 fn inline_size(_context: fidl::encoding::Context) -> usize {
367 4
368 }
369 }
370
371 impl fidl::encoding::ValueTypeMarker for RestartRematchFlags {
372 type Borrowed<'a> = Self;
373 #[inline(always)]
374 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
375 *value
376 }
377 }
378
379 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
380 for RestartRematchFlags
381 {
382 #[inline]
383 unsafe fn encode(
384 self,
385 encoder: &mut fidl::encoding::Encoder<'_, D>,
386 offset: usize,
387 _depth: fidl::encoding::Depth,
388 ) -> fidl::Result<()> {
389 encoder.debug_check_bounds::<Self>(offset);
390 encoder.write_num(self.bits(), offset);
391 Ok(())
392 }
393 }
394
395 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RestartRematchFlags {
396 #[inline(always)]
397 fn new_empty() -> Self {
398 Self::empty()
399 }
400
401 #[inline]
402 unsafe fn decode(
403 &mut self,
404 decoder: &mut fidl::encoding::Decoder<'_, D>,
405 offset: usize,
406 _depth: fidl::encoding::Depth,
407 ) -> fidl::Result<()> {
408 decoder.debug_check_bounds::<Self>(offset);
409 let prim = decoder.read_num::<u32>(offset);
410 *self = Self::from_bits_allow_unknown(prim);
411 Ok(())
412 }
413 }
414
415 impl fidl::encoding::ValueTypeMarker for CompositeInfoIteratorGetNextResponse {
416 type Borrowed<'a> = &'a Self;
417 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
418 value
419 }
420 }
421
422 unsafe impl fidl::encoding::TypeMarker for CompositeInfoIteratorGetNextResponse {
423 type Owned = Self;
424
425 #[inline(always)]
426 fn inline_align(_context: fidl::encoding::Context) -> usize {
427 8
428 }
429
430 #[inline(always)]
431 fn inline_size(_context: fidl::encoding::Context) -> usize {
432 16
433 }
434 }
435
436 unsafe impl<D: fidl::encoding::ResourceDialect>
437 fidl::encoding::Encode<CompositeInfoIteratorGetNextResponse, D>
438 for &CompositeInfoIteratorGetNextResponse
439 {
440 #[inline]
441 unsafe fn encode(
442 self,
443 encoder: &mut fidl::encoding::Encoder<'_, D>,
444 offset: usize,
445 _depth: fidl::encoding::Depth,
446 ) -> fidl::Result<()> {
447 encoder.debug_check_bounds::<CompositeInfoIteratorGetNextResponse>(offset);
448 fidl::encoding::Encode::<CompositeInfoIteratorGetNextResponse, D>::encode(
450 (
451 <fidl::encoding::UnboundedVector<CompositeNodeInfo> as fidl::encoding::ValueTypeMarker>::borrow(&self.composites),
452 ),
453 encoder, offset, _depth
454 )
455 }
456 }
457 unsafe impl<
458 D: fidl::encoding::ResourceDialect,
459 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<CompositeNodeInfo>, D>,
460 > fidl::encoding::Encode<CompositeInfoIteratorGetNextResponse, D> for (T0,)
461 {
462 #[inline]
463 unsafe fn encode(
464 self,
465 encoder: &mut fidl::encoding::Encoder<'_, D>,
466 offset: usize,
467 depth: fidl::encoding::Depth,
468 ) -> fidl::Result<()> {
469 encoder.debug_check_bounds::<CompositeInfoIteratorGetNextResponse>(offset);
470 self.0.encode(encoder, offset + 0, depth)?;
474 Ok(())
475 }
476 }
477
478 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
479 for CompositeInfoIteratorGetNextResponse
480 {
481 #[inline(always)]
482 fn new_empty() -> Self {
483 Self {
484 composites: fidl::new_empty!(fidl::encoding::UnboundedVector<CompositeNodeInfo>, D),
485 }
486 }
487
488 #[inline]
489 unsafe fn decode(
490 &mut self,
491 decoder: &mut fidl::encoding::Decoder<'_, D>,
492 offset: usize,
493 _depth: fidl::encoding::Depth,
494 ) -> fidl::Result<()> {
495 decoder.debug_check_bounds::<Self>(offset);
496 fidl::decode!(
498 fidl::encoding::UnboundedVector<CompositeNodeInfo>,
499 D,
500 &mut self.composites,
501 decoder,
502 offset + 0,
503 _depth
504 )?;
505 Ok(())
506 }
507 }
508
509 impl fidl::encoding::ValueTypeMarker for CompositeNodeSpecIteratorGetNextResponse {
510 type Borrowed<'a> = &'a Self;
511 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
512 value
513 }
514 }
515
516 unsafe impl fidl::encoding::TypeMarker for CompositeNodeSpecIteratorGetNextResponse {
517 type Owned = Self;
518
519 #[inline(always)]
520 fn inline_align(_context: fidl::encoding::Context) -> usize {
521 8
522 }
523
524 #[inline(always)]
525 fn inline_size(_context: fidl::encoding::Context) -> usize {
526 16
527 }
528 }
529
530 unsafe impl<D: fidl::encoding::ResourceDialect>
531 fidl::encoding::Encode<CompositeNodeSpecIteratorGetNextResponse, D>
532 for &CompositeNodeSpecIteratorGetNextResponse
533 {
534 #[inline]
535 unsafe fn encode(
536 self,
537 encoder: &mut fidl::encoding::Encoder<'_, D>,
538 offset: usize,
539 _depth: fidl::encoding::Depth,
540 ) -> fidl::Result<()> {
541 encoder.debug_check_bounds::<CompositeNodeSpecIteratorGetNextResponse>(offset);
542 fidl::encoding::Encode::<CompositeNodeSpecIteratorGetNextResponse, D>::encode(
544 (<fidl::encoding::UnboundedVector<
545 fidl_fuchsia_driver_framework_common::CompositeInfo,
546 > as fidl::encoding::ValueTypeMarker>::borrow(&self.specs),),
547 encoder,
548 offset,
549 _depth,
550 )
551 }
552 }
553 unsafe impl<
554 D: fidl::encoding::ResourceDialect,
555 T0: fidl::encoding::Encode<
556 fidl::encoding::UnboundedVector<
557 fidl_fuchsia_driver_framework_common::CompositeInfo,
558 >,
559 D,
560 >,
561 > fidl::encoding::Encode<CompositeNodeSpecIteratorGetNextResponse, D> for (T0,)
562 {
563 #[inline]
564 unsafe fn encode(
565 self,
566 encoder: &mut fidl::encoding::Encoder<'_, D>,
567 offset: usize,
568 depth: fidl::encoding::Depth,
569 ) -> fidl::Result<()> {
570 encoder.debug_check_bounds::<CompositeNodeSpecIteratorGetNextResponse>(offset);
571 self.0.encode(encoder, offset + 0, depth)?;
575 Ok(())
576 }
577 }
578
579 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
580 for CompositeNodeSpecIteratorGetNextResponse
581 {
582 #[inline(always)]
583 fn new_empty() -> Self {
584 Self {
585 specs: fidl::new_empty!(
586 fidl::encoding::UnboundedVector<
587 fidl_fuchsia_driver_framework_common::CompositeInfo,
588 >,
589 D
590 ),
591 }
592 }
593
594 #[inline]
595 unsafe fn decode(
596 &mut self,
597 decoder: &mut fidl::encoding::Decoder<'_, D>,
598 offset: usize,
599 _depth: fidl::encoding::Depth,
600 ) -> fidl::Result<()> {
601 decoder.debug_check_bounds::<Self>(offset);
602 fidl::decode!(
604 fidl::encoding::UnboundedVector<
605 fidl_fuchsia_driver_framework_common::CompositeInfo,
606 >,
607 D,
608 &mut self.specs,
609 decoder,
610 offset + 0,
611 _depth
612 )?;
613 Ok(())
614 }
615 }
616
617 impl fidl::encoding::ValueTypeMarker for DriverHostInfoIteratorGetNextResponse {
618 type Borrowed<'a> = &'a Self;
619 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
620 value
621 }
622 }
623
624 unsafe impl fidl::encoding::TypeMarker for DriverHostInfoIteratorGetNextResponse {
625 type Owned = Self;
626
627 #[inline(always)]
628 fn inline_align(_context: fidl::encoding::Context) -> usize {
629 8
630 }
631
632 #[inline(always)]
633 fn inline_size(_context: fidl::encoding::Context) -> usize {
634 16
635 }
636 }
637
638 unsafe impl<D: fidl::encoding::ResourceDialect>
639 fidl::encoding::Encode<DriverHostInfoIteratorGetNextResponse, D>
640 for &DriverHostInfoIteratorGetNextResponse
641 {
642 #[inline]
643 unsafe fn encode(
644 self,
645 encoder: &mut fidl::encoding::Encoder<'_, D>,
646 offset: usize,
647 _depth: fidl::encoding::Depth,
648 ) -> fidl::Result<()> {
649 encoder.debug_check_bounds::<DriverHostInfoIteratorGetNextResponse>(offset);
650 fidl::encoding::Encode::<DriverHostInfoIteratorGetNextResponse, D>::encode(
652 (
653 <fidl::encoding::UnboundedVector<DriverHostInfo> as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_hosts),
654 ),
655 encoder, offset, _depth
656 )
657 }
658 }
659 unsafe impl<
660 D: fidl::encoding::ResourceDialect,
661 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<DriverHostInfo>, D>,
662 > fidl::encoding::Encode<DriverHostInfoIteratorGetNextResponse, D> for (T0,)
663 {
664 #[inline]
665 unsafe fn encode(
666 self,
667 encoder: &mut fidl::encoding::Encoder<'_, D>,
668 offset: usize,
669 depth: fidl::encoding::Depth,
670 ) -> fidl::Result<()> {
671 encoder.debug_check_bounds::<DriverHostInfoIteratorGetNextResponse>(offset);
672 self.0.encode(encoder, offset + 0, depth)?;
676 Ok(())
677 }
678 }
679
680 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
681 for DriverHostInfoIteratorGetNextResponse
682 {
683 #[inline(always)]
684 fn new_empty() -> Self {
685 Self {
686 driver_hosts: fidl::new_empty!(fidl::encoding::UnboundedVector<DriverHostInfo>, D),
687 }
688 }
689
690 #[inline]
691 unsafe fn decode(
692 &mut self,
693 decoder: &mut fidl::encoding::Decoder<'_, D>,
694 offset: usize,
695 _depth: fidl::encoding::Depth,
696 ) -> fidl::Result<()> {
697 decoder.debug_check_bounds::<Self>(offset);
698 fidl::decode!(
700 fidl::encoding::UnboundedVector<DriverHostInfo>,
701 D,
702 &mut self.driver_hosts,
703 decoder,
704 offset + 0,
705 _depth
706 )?;
707 Ok(())
708 }
709 }
710
711 impl fidl::encoding::ValueTypeMarker for DriverInfoIteratorGetNextResponse {
712 type Borrowed<'a> = &'a Self;
713 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
714 value
715 }
716 }
717
718 unsafe impl fidl::encoding::TypeMarker for DriverInfoIteratorGetNextResponse {
719 type Owned = Self;
720
721 #[inline(always)]
722 fn inline_align(_context: fidl::encoding::Context) -> usize {
723 8
724 }
725
726 #[inline(always)]
727 fn inline_size(_context: fidl::encoding::Context) -> usize {
728 16
729 }
730 }
731
732 unsafe impl<D: fidl::encoding::ResourceDialect>
733 fidl::encoding::Encode<DriverInfoIteratorGetNextResponse, D>
734 for &DriverInfoIteratorGetNextResponse
735 {
736 #[inline]
737 unsafe fn encode(
738 self,
739 encoder: &mut fidl::encoding::Encoder<'_, D>,
740 offset: usize,
741 _depth: fidl::encoding::Depth,
742 ) -> fidl::Result<()> {
743 encoder.debug_check_bounds::<DriverInfoIteratorGetNextResponse>(offset);
744 fidl::encoding::Encode::<DriverInfoIteratorGetNextResponse, D>::encode(
746 (
747 <fidl::encoding::UnboundedVector<
748 fidl_fuchsia_driver_framework_common::DriverInfo,
749 > as fidl::encoding::ValueTypeMarker>::borrow(&self.drivers),
750 ),
751 encoder,
752 offset,
753 _depth,
754 )
755 }
756 }
757 unsafe impl<
758 D: fidl::encoding::ResourceDialect,
759 T0: fidl::encoding::Encode<
760 fidl::encoding::UnboundedVector<fidl_fuchsia_driver_framework_common::DriverInfo>,
761 D,
762 >,
763 > fidl::encoding::Encode<DriverInfoIteratorGetNextResponse, D> for (T0,)
764 {
765 #[inline]
766 unsafe fn encode(
767 self,
768 encoder: &mut fidl::encoding::Encoder<'_, D>,
769 offset: usize,
770 depth: fidl::encoding::Depth,
771 ) -> fidl::Result<()> {
772 encoder.debug_check_bounds::<DriverInfoIteratorGetNextResponse>(offset);
773 self.0.encode(encoder, offset + 0, depth)?;
777 Ok(())
778 }
779 }
780
781 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
782 for DriverInfoIteratorGetNextResponse
783 {
784 #[inline(always)]
785 fn new_empty() -> Self {
786 Self {
787 drivers: fidl::new_empty!(
788 fidl::encoding::UnboundedVector<
789 fidl_fuchsia_driver_framework_common::DriverInfo,
790 >,
791 D
792 ),
793 }
794 }
795
796 #[inline]
797 unsafe fn decode(
798 &mut self,
799 decoder: &mut fidl::encoding::Decoder<'_, D>,
800 offset: usize,
801 _depth: fidl::encoding::Depth,
802 ) -> fidl::Result<()> {
803 decoder.debug_check_bounds::<Self>(offset);
804 fidl::decode!(
806 fidl::encoding::UnboundedVector<fidl_fuchsia_driver_framework_common::DriverInfo>,
807 D,
808 &mut self.drivers,
809 decoder,
810 offset + 0,
811 _depth
812 )?;
813 Ok(())
814 }
815 }
816
817 impl fidl::encoding::ValueTypeMarker for ManagerAddTestNodeRequest {
818 type Borrowed<'a> = &'a Self;
819 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
820 value
821 }
822 }
823
824 unsafe impl fidl::encoding::TypeMarker for ManagerAddTestNodeRequest {
825 type Owned = Self;
826
827 #[inline(always)]
828 fn inline_align(_context: fidl::encoding::Context) -> usize {
829 8
830 }
831
832 #[inline(always)]
833 fn inline_size(_context: fidl::encoding::Context) -> usize {
834 16
835 }
836 }
837
838 unsafe impl<D: fidl::encoding::ResourceDialect>
839 fidl::encoding::Encode<ManagerAddTestNodeRequest, D> for &ManagerAddTestNodeRequest
840 {
841 #[inline]
842 unsafe fn encode(
843 self,
844 encoder: &mut fidl::encoding::Encoder<'_, D>,
845 offset: usize,
846 _depth: fidl::encoding::Depth,
847 ) -> fidl::Result<()> {
848 encoder.debug_check_bounds::<ManagerAddTestNodeRequest>(offset);
849 fidl::encoding::Encode::<ManagerAddTestNodeRequest, D>::encode(
851 (<TestNodeAddArgs as fidl::encoding::ValueTypeMarker>::borrow(&self.args),),
852 encoder,
853 offset,
854 _depth,
855 )
856 }
857 }
858 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<TestNodeAddArgs, D>>
859 fidl::encoding::Encode<ManagerAddTestNodeRequest, D> for (T0,)
860 {
861 #[inline]
862 unsafe fn encode(
863 self,
864 encoder: &mut fidl::encoding::Encoder<'_, D>,
865 offset: usize,
866 depth: fidl::encoding::Depth,
867 ) -> fidl::Result<()> {
868 encoder.debug_check_bounds::<ManagerAddTestNodeRequest>(offset);
869 self.0.encode(encoder, offset + 0, depth)?;
873 Ok(())
874 }
875 }
876
877 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
878 for ManagerAddTestNodeRequest
879 {
880 #[inline(always)]
881 fn new_empty() -> Self {
882 Self { args: fidl::new_empty!(TestNodeAddArgs, D) }
883 }
884
885 #[inline]
886 unsafe fn decode(
887 &mut self,
888 decoder: &mut fidl::encoding::Decoder<'_, D>,
889 offset: usize,
890 _depth: fidl::encoding::Depth,
891 ) -> fidl::Result<()> {
892 decoder.debug_check_bounds::<Self>(offset);
893 fidl::decode!(TestNodeAddArgs, D, &mut self.args, decoder, offset + 0, _depth)?;
895 Ok(())
896 }
897 }
898
899 impl fidl::encoding::ValueTypeMarker for ManagerDisableDriverRequest {
900 type Borrowed<'a> = &'a Self;
901 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
902 value
903 }
904 }
905
906 unsafe impl fidl::encoding::TypeMarker for ManagerDisableDriverRequest {
907 type Owned = Self;
908
909 #[inline(always)]
910 fn inline_align(_context: fidl::encoding::Context) -> usize {
911 8
912 }
913
914 #[inline(always)]
915 fn inline_size(_context: fidl::encoding::Context) -> usize {
916 32
917 }
918 }
919
920 unsafe impl<D: fidl::encoding::ResourceDialect>
921 fidl::encoding::Encode<ManagerDisableDriverRequest, D> for &ManagerDisableDriverRequest
922 {
923 #[inline]
924 unsafe fn encode(
925 self,
926 encoder: &mut fidl::encoding::Encoder<'_, D>,
927 offset: usize,
928 _depth: fidl::encoding::Depth,
929 ) -> fidl::Result<()> {
930 encoder.debug_check_bounds::<ManagerDisableDriverRequest>(offset);
931 fidl::encoding::Encode::<ManagerDisableDriverRequest, D>::encode(
933 (
934 <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_url),
935 <fidl::encoding::Optional<fidl::encoding::BoundedString<64>> as fidl::encoding::ValueTypeMarker>::borrow(&self.package_hash),
936 ),
937 encoder, offset, _depth
938 )
939 }
940 }
941 unsafe impl<
942 D: fidl::encoding::ResourceDialect,
943 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
944 T1: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<64>>, D>,
945 > fidl::encoding::Encode<ManagerDisableDriverRequest, D> for (T0, T1)
946 {
947 #[inline]
948 unsafe fn encode(
949 self,
950 encoder: &mut fidl::encoding::Encoder<'_, D>,
951 offset: usize,
952 depth: fidl::encoding::Depth,
953 ) -> fidl::Result<()> {
954 encoder.debug_check_bounds::<ManagerDisableDriverRequest>(offset);
955 self.0.encode(encoder, offset + 0, depth)?;
959 self.1.encode(encoder, offset + 16, depth)?;
960 Ok(())
961 }
962 }
963
964 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
965 for ManagerDisableDriverRequest
966 {
967 #[inline(always)]
968 fn new_empty() -> Self {
969 Self {
970 driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D),
971 package_hash: fidl::new_empty!(
972 fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
973 D
974 ),
975 }
976 }
977
978 #[inline]
979 unsafe fn decode(
980 &mut self,
981 decoder: &mut fidl::encoding::Decoder<'_, D>,
982 offset: usize,
983 _depth: fidl::encoding::Depth,
984 ) -> fidl::Result<()> {
985 decoder.debug_check_bounds::<Self>(offset);
986 fidl::decode!(
988 fidl::encoding::BoundedString<4096>,
989 D,
990 &mut self.driver_url,
991 decoder,
992 offset + 0,
993 _depth
994 )?;
995 fidl::decode!(
996 fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
997 D,
998 &mut self.package_hash,
999 decoder,
1000 offset + 16,
1001 _depth
1002 )?;
1003 Ok(())
1004 }
1005 }
1006
1007 impl fidl::encoding::ValueTypeMarker for ManagerEnableDriverRequest {
1008 type Borrowed<'a> = &'a Self;
1009 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1010 value
1011 }
1012 }
1013
1014 unsafe impl fidl::encoding::TypeMarker for ManagerEnableDriverRequest {
1015 type Owned = Self;
1016
1017 #[inline(always)]
1018 fn inline_align(_context: fidl::encoding::Context) -> usize {
1019 8
1020 }
1021
1022 #[inline(always)]
1023 fn inline_size(_context: fidl::encoding::Context) -> usize {
1024 32
1025 }
1026 }
1027
1028 unsafe impl<D: fidl::encoding::ResourceDialect>
1029 fidl::encoding::Encode<ManagerEnableDriverRequest, D> for &ManagerEnableDriverRequest
1030 {
1031 #[inline]
1032 unsafe fn encode(
1033 self,
1034 encoder: &mut fidl::encoding::Encoder<'_, D>,
1035 offset: usize,
1036 _depth: fidl::encoding::Depth,
1037 ) -> fidl::Result<()> {
1038 encoder.debug_check_bounds::<ManagerEnableDriverRequest>(offset);
1039 fidl::encoding::Encode::<ManagerEnableDriverRequest, D>::encode(
1041 (
1042 <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_url),
1043 <fidl::encoding::Optional<fidl::encoding::BoundedString<64>> as fidl::encoding::ValueTypeMarker>::borrow(&self.package_hash),
1044 ),
1045 encoder, offset, _depth
1046 )
1047 }
1048 }
1049 unsafe impl<
1050 D: fidl::encoding::ResourceDialect,
1051 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
1052 T1: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<64>>, D>,
1053 > fidl::encoding::Encode<ManagerEnableDriverRequest, D> for (T0, T1)
1054 {
1055 #[inline]
1056 unsafe fn encode(
1057 self,
1058 encoder: &mut fidl::encoding::Encoder<'_, D>,
1059 offset: usize,
1060 depth: fidl::encoding::Depth,
1061 ) -> fidl::Result<()> {
1062 encoder.debug_check_bounds::<ManagerEnableDriverRequest>(offset);
1063 self.0.encode(encoder, offset + 0, depth)?;
1067 self.1.encode(encoder, offset + 16, depth)?;
1068 Ok(())
1069 }
1070 }
1071
1072 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1073 for ManagerEnableDriverRequest
1074 {
1075 #[inline(always)]
1076 fn new_empty() -> Self {
1077 Self {
1078 driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D),
1079 package_hash: fidl::new_empty!(
1080 fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
1081 D
1082 ),
1083 }
1084 }
1085
1086 #[inline]
1087 unsafe fn decode(
1088 &mut self,
1089 decoder: &mut fidl::encoding::Decoder<'_, D>,
1090 offset: usize,
1091 _depth: fidl::encoding::Depth,
1092 ) -> fidl::Result<()> {
1093 decoder.debug_check_bounds::<Self>(offset);
1094 fidl::decode!(
1096 fidl::encoding::BoundedString<4096>,
1097 D,
1098 &mut self.driver_url,
1099 decoder,
1100 offset + 0,
1101 _depth
1102 )?;
1103 fidl::decode!(
1104 fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
1105 D,
1106 &mut self.package_hash,
1107 decoder,
1108 offset + 16,
1109 _depth
1110 )?;
1111 Ok(())
1112 }
1113 }
1114
1115 impl fidl::encoding::ValueTypeMarker for ManagerRebindCompositesWithDriverRequest {
1116 type Borrowed<'a> = &'a Self;
1117 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1118 value
1119 }
1120 }
1121
1122 unsafe impl fidl::encoding::TypeMarker for ManagerRebindCompositesWithDriverRequest {
1123 type Owned = Self;
1124
1125 #[inline(always)]
1126 fn inline_align(_context: fidl::encoding::Context) -> usize {
1127 8
1128 }
1129
1130 #[inline(always)]
1131 fn inline_size(_context: fidl::encoding::Context) -> usize {
1132 16
1133 }
1134 }
1135
1136 unsafe impl<D: fidl::encoding::ResourceDialect>
1137 fidl::encoding::Encode<ManagerRebindCompositesWithDriverRequest, D>
1138 for &ManagerRebindCompositesWithDriverRequest
1139 {
1140 #[inline]
1141 unsafe fn encode(
1142 self,
1143 encoder: &mut fidl::encoding::Encoder<'_, D>,
1144 offset: usize,
1145 _depth: fidl::encoding::Depth,
1146 ) -> fidl::Result<()> {
1147 encoder.debug_check_bounds::<ManagerRebindCompositesWithDriverRequest>(offset);
1148 fidl::encoding::Encode::<ManagerRebindCompositesWithDriverRequest, D>::encode(
1150 (<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(
1151 &self.driver_url,
1152 ),),
1153 encoder,
1154 offset,
1155 _depth,
1156 )
1157 }
1158 }
1159 unsafe impl<
1160 D: fidl::encoding::ResourceDialect,
1161 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
1162 > fidl::encoding::Encode<ManagerRebindCompositesWithDriverRequest, D> for (T0,)
1163 {
1164 #[inline]
1165 unsafe fn encode(
1166 self,
1167 encoder: &mut fidl::encoding::Encoder<'_, D>,
1168 offset: usize,
1169 depth: fidl::encoding::Depth,
1170 ) -> fidl::Result<()> {
1171 encoder.debug_check_bounds::<ManagerRebindCompositesWithDriverRequest>(offset);
1172 self.0.encode(encoder, offset + 0, depth)?;
1176 Ok(())
1177 }
1178 }
1179
1180 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1181 for ManagerRebindCompositesWithDriverRequest
1182 {
1183 #[inline(always)]
1184 fn new_empty() -> Self {
1185 Self { driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D) }
1186 }
1187
1188 #[inline]
1189 unsafe fn decode(
1190 &mut self,
1191 decoder: &mut fidl::encoding::Decoder<'_, D>,
1192 offset: usize,
1193 _depth: fidl::encoding::Depth,
1194 ) -> fidl::Result<()> {
1195 decoder.debug_check_bounds::<Self>(offset);
1196 fidl::decode!(
1198 fidl::encoding::BoundedString<4096>,
1199 D,
1200 &mut self.driver_url,
1201 decoder,
1202 offset + 0,
1203 _depth
1204 )?;
1205 Ok(())
1206 }
1207 }
1208
1209 impl fidl::encoding::ValueTypeMarker for ManagerRemoveTestNodeRequest {
1210 type Borrowed<'a> = &'a Self;
1211 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1212 value
1213 }
1214 }
1215
1216 unsafe impl fidl::encoding::TypeMarker for ManagerRemoveTestNodeRequest {
1217 type Owned = Self;
1218
1219 #[inline(always)]
1220 fn inline_align(_context: fidl::encoding::Context) -> usize {
1221 8
1222 }
1223
1224 #[inline(always)]
1225 fn inline_size(_context: fidl::encoding::Context) -> usize {
1226 16
1227 }
1228 }
1229
1230 unsafe impl<D: fidl::encoding::ResourceDialect>
1231 fidl::encoding::Encode<ManagerRemoveTestNodeRequest, D> for &ManagerRemoveTestNodeRequest
1232 {
1233 #[inline]
1234 unsafe fn encode(
1235 self,
1236 encoder: &mut fidl::encoding::Encoder<'_, D>,
1237 offset: usize,
1238 _depth: fidl::encoding::Depth,
1239 ) -> fidl::Result<()> {
1240 encoder.debug_check_bounds::<ManagerRemoveTestNodeRequest>(offset);
1241 fidl::encoding::Encode::<ManagerRemoveTestNodeRequest, D>::encode(
1243 (<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow(
1244 &self.name,
1245 ),),
1246 encoder,
1247 offset,
1248 _depth,
1249 )
1250 }
1251 }
1252 unsafe impl<
1253 D: fidl::encoding::ResourceDialect,
1254 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<1024>, D>,
1255 > fidl::encoding::Encode<ManagerRemoveTestNodeRequest, D> for (T0,)
1256 {
1257 #[inline]
1258 unsafe fn encode(
1259 self,
1260 encoder: &mut fidl::encoding::Encoder<'_, D>,
1261 offset: usize,
1262 depth: fidl::encoding::Depth,
1263 ) -> fidl::Result<()> {
1264 encoder.debug_check_bounds::<ManagerRemoveTestNodeRequest>(offset);
1265 self.0.encode(encoder, offset + 0, depth)?;
1269 Ok(())
1270 }
1271 }
1272
1273 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1274 for ManagerRemoveTestNodeRequest
1275 {
1276 #[inline(always)]
1277 fn new_empty() -> Self {
1278 Self { name: fidl::new_empty!(fidl::encoding::BoundedString<1024>, D) }
1279 }
1280
1281 #[inline]
1282 unsafe fn decode(
1283 &mut self,
1284 decoder: &mut fidl::encoding::Decoder<'_, D>,
1285 offset: usize,
1286 _depth: fidl::encoding::Depth,
1287 ) -> fidl::Result<()> {
1288 decoder.debug_check_bounds::<Self>(offset);
1289 fidl::decode!(
1291 fidl::encoding::BoundedString<1024>,
1292 D,
1293 &mut self.name,
1294 decoder,
1295 offset + 0,
1296 _depth
1297 )?;
1298 Ok(())
1299 }
1300 }
1301
1302 impl fidl::encoding::ValueTypeMarker for ManagerRestartDriverHostsRequest {
1303 type Borrowed<'a> = &'a Self;
1304 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1305 value
1306 }
1307 }
1308
1309 unsafe impl fidl::encoding::TypeMarker for ManagerRestartDriverHostsRequest {
1310 type Owned = Self;
1311
1312 #[inline(always)]
1313 fn inline_align(_context: fidl::encoding::Context) -> usize {
1314 8
1315 }
1316
1317 #[inline(always)]
1318 fn inline_size(_context: fidl::encoding::Context) -> usize {
1319 24
1320 }
1321 }
1322
1323 unsafe impl<D: fidl::encoding::ResourceDialect>
1324 fidl::encoding::Encode<ManagerRestartDriverHostsRequest, D>
1325 for &ManagerRestartDriverHostsRequest
1326 {
1327 #[inline]
1328 unsafe fn encode(
1329 self,
1330 encoder: &mut fidl::encoding::Encoder<'_, D>,
1331 offset: usize,
1332 _depth: fidl::encoding::Depth,
1333 ) -> fidl::Result<()> {
1334 encoder.debug_check_bounds::<ManagerRestartDriverHostsRequest>(offset);
1335 fidl::encoding::Encode::<ManagerRestartDriverHostsRequest, D>::encode(
1337 (
1338 <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_url),
1339 <RestartRematchFlags as fidl::encoding::ValueTypeMarker>::borrow(&self.rematch_flags),
1340 ),
1341 encoder, offset, _depth
1342 )
1343 }
1344 }
1345 unsafe impl<
1346 D: fidl::encoding::ResourceDialect,
1347 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
1348 T1: fidl::encoding::Encode<RestartRematchFlags, D>,
1349 > fidl::encoding::Encode<ManagerRestartDriverHostsRequest, D> for (T0, T1)
1350 {
1351 #[inline]
1352 unsafe fn encode(
1353 self,
1354 encoder: &mut fidl::encoding::Encoder<'_, D>,
1355 offset: usize,
1356 depth: fidl::encoding::Depth,
1357 ) -> fidl::Result<()> {
1358 encoder.debug_check_bounds::<ManagerRestartDriverHostsRequest>(offset);
1359 unsafe {
1362 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
1363 (ptr as *mut u64).write_unaligned(0);
1364 }
1365 self.0.encode(encoder, offset + 0, depth)?;
1367 self.1.encode(encoder, offset + 16, depth)?;
1368 Ok(())
1369 }
1370 }
1371
1372 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1373 for ManagerRestartDriverHostsRequest
1374 {
1375 #[inline(always)]
1376 fn new_empty() -> Self {
1377 Self {
1378 driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D),
1379 rematch_flags: fidl::new_empty!(RestartRematchFlags, D),
1380 }
1381 }
1382
1383 #[inline]
1384 unsafe fn decode(
1385 &mut self,
1386 decoder: &mut fidl::encoding::Decoder<'_, D>,
1387 offset: usize,
1388 _depth: fidl::encoding::Depth,
1389 ) -> fidl::Result<()> {
1390 decoder.debug_check_bounds::<Self>(offset);
1391 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
1393 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1394 let mask = 0xffffffff00000000u64;
1395 let maskedval = padval & mask;
1396 if maskedval != 0 {
1397 return Err(fidl::Error::NonZeroPadding {
1398 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
1399 });
1400 }
1401 fidl::decode!(
1402 fidl::encoding::BoundedString<4096>,
1403 D,
1404 &mut self.driver_url,
1405 decoder,
1406 offset + 0,
1407 _depth
1408 )?;
1409 fidl::decode!(
1410 RestartRematchFlags,
1411 D,
1412 &mut self.rematch_flags,
1413 decoder,
1414 offset + 16,
1415 _depth
1416 )?;
1417 Ok(())
1418 }
1419 }
1420
1421 impl fidl::encoding::ValueTypeMarker for ManagerBindAllUnboundNodes2Response {
1422 type Borrowed<'a> = &'a Self;
1423 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1424 value
1425 }
1426 }
1427
1428 unsafe impl fidl::encoding::TypeMarker for ManagerBindAllUnboundNodes2Response {
1429 type Owned = Self;
1430
1431 #[inline(always)]
1432 fn inline_align(_context: fidl::encoding::Context) -> usize {
1433 8
1434 }
1435
1436 #[inline(always)]
1437 fn inline_size(_context: fidl::encoding::Context) -> usize {
1438 16
1439 }
1440 }
1441
1442 unsafe impl<D: fidl::encoding::ResourceDialect>
1443 fidl::encoding::Encode<ManagerBindAllUnboundNodes2Response, D>
1444 for &ManagerBindAllUnboundNodes2Response
1445 {
1446 #[inline]
1447 unsafe fn encode(
1448 self,
1449 encoder: &mut fidl::encoding::Encoder<'_, D>,
1450 offset: usize,
1451 _depth: fidl::encoding::Depth,
1452 ) -> fidl::Result<()> {
1453 encoder.debug_check_bounds::<ManagerBindAllUnboundNodes2Response>(offset);
1454 fidl::encoding::Encode::<ManagerBindAllUnboundNodes2Response, D>::encode(
1456 (
1457 <fidl::encoding::Vector<NodeBindingInfo, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.binding_result),
1458 ),
1459 encoder, offset, _depth
1460 )
1461 }
1462 }
1463 unsafe impl<
1464 D: fidl::encoding::ResourceDialect,
1465 T0: fidl::encoding::Encode<fidl::encoding::Vector<NodeBindingInfo, 256>, D>,
1466 > fidl::encoding::Encode<ManagerBindAllUnboundNodes2Response, D> for (T0,)
1467 {
1468 #[inline]
1469 unsafe fn encode(
1470 self,
1471 encoder: &mut fidl::encoding::Encoder<'_, D>,
1472 offset: usize,
1473 depth: fidl::encoding::Depth,
1474 ) -> fidl::Result<()> {
1475 encoder.debug_check_bounds::<ManagerBindAllUnboundNodes2Response>(offset);
1476 self.0.encode(encoder, offset + 0, depth)?;
1480 Ok(())
1481 }
1482 }
1483
1484 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1485 for ManagerBindAllUnboundNodes2Response
1486 {
1487 #[inline(always)]
1488 fn new_empty() -> Self {
1489 Self {
1490 binding_result: fidl::new_empty!(fidl::encoding::Vector<NodeBindingInfo, 256>, D),
1491 }
1492 }
1493
1494 #[inline]
1495 unsafe fn decode(
1496 &mut self,
1497 decoder: &mut fidl::encoding::Decoder<'_, D>,
1498 offset: usize,
1499 _depth: fidl::encoding::Depth,
1500 ) -> fidl::Result<()> {
1501 decoder.debug_check_bounds::<Self>(offset);
1502 fidl::decode!(fidl::encoding::Vector<NodeBindingInfo, 256>, D, &mut self.binding_result, decoder, offset + 0, _depth)?;
1504 Ok(())
1505 }
1506 }
1507
1508 impl fidl::encoding::ValueTypeMarker for ManagerBindAllUnboundNodesResponse {
1509 type Borrowed<'a> = &'a Self;
1510 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1511 value
1512 }
1513 }
1514
1515 unsafe impl fidl::encoding::TypeMarker for ManagerBindAllUnboundNodesResponse {
1516 type Owned = Self;
1517
1518 #[inline(always)]
1519 fn inline_align(_context: fidl::encoding::Context) -> usize {
1520 8
1521 }
1522
1523 #[inline(always)]
1524 fn inline_size(_context: fidl::encoding::Context) -> usize {
1525 16
1526 }
1527 }
1528
1529 unsafe impl<D: fidl::encoding::ResourceDialect>
1530 fidl::encoding::Encode<ManagerBindAllUnboundNodesResponse, D>
1531 for &ManagerBindAllUnboundNodesResponse
1532 {
1533 #[inline]
1534 unsafe fn encode(
1535 self,
1536 encoder: &mut fidl::encoding::Encoder<'_, D>,
1537 offset: usize,
1538 _depth: fidl::encoding::Depth,
1539 ) -> fidl::Result<()> {
1540 encoder.debug_check_bounds::<ManagerBindAllUnboundNodesResponse>(offset);
1541 fidl::encoding::Encode::<ManagerBindAllUnboundNodesResponse, D>::encode(
1543 (
1544 <fidl::encoding::Vector<NodeBindingInfo, 10> as fidl::encoding::ValueTypeMarker>::borrow(&self.binding_result),
1545 ),
1546 encoder, offset, _depth
1547 )
1548 }
1549 }
1550 unsafe impl<
1551 D: fidl::encoding::ResourceDialect,
1552 T0: fidl::encoding::Encode<fidl::encoding::Vector<NodeBindingInfo, 10>, D>,
1553 > fidl::encoding::Encode<ManagerBindAllUnboundNodesResponse, D> for (T0,)
1554 {
1555 #[inline]
1556 unsafe fn encode(
1557 self,
1558 encoder: &mut fidl::encoding::Encoder<'_, D>,
1559 offset: usize,
1560 depth: fidl::encoding::Depth,
1561 ) -> fidl::Result<()> {
1562 encoder.debug_check_bounds::<ManagerBindAllUnboundNodesResponse>(offset);
1563 self.0.encode(encoder, offset + 0, depth)?;
1567 Ok(())
1568 }
1569 }
1570
1571 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1572 for ManagerBindAllUnboundNodesResponse
1573 {
1574 #[inline(always)]
1575 fn new_empty() -> Self {
1576 Self {
1577 binding_result: fidl::new_empty!(fidl::encoding::Vector<NodeBindingInfo, 10>, D),
1578 }
1579 }
1580
1581 #[inline]
1582 unsafe fn decode(
1583 &mut self,
1584 decoder: &mut fidl::encoding::Decoder<'_, D>,
1585 offset: usize,
1586 _depth: fidl::encoding::Depth,
1587 ) -> fidl::Result<()> {
1588 decoder.debug_check_bounds::<Self>(offset);
1589 fidl::decode!(fidl::encoding::Vector<NodeBindingInfo, 10>, D, &mut self.binding_result, decoder, offset + 0, _depth)?;
1591 Ok(())
1592 }
1593 }
1594
1595 impl fidl::encoding::ValueTypeMarker for ManagerRebindCompositesWithDriverResponse {
1596 type Borrowed<'a> = &'a Self;
1597 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1598 value
1599 }
1600 }
1601
1602 unsafe impl fidl::encoding::TypeMarker for ManagerRebindCompositesWithDriverResponse {
1603 type Owned = Self;
1604
1605 #[inline(always)]
1606 fn inline_align(_context: fidl::encoding::Context) -> usize {
1607 4
1608 }
1609
1610 #[inline(always)]
1611 fn inline_size(_context: fidl::encoding::Context) -> usize {
1612 4
1613 }
1614 #[inline(always)]
1615 fn encode_is_copy() -> bool {
1616 true
1617 }
1618
1619 #[inline(always)]
1620 fn decode_is_copy() -> bool {
1621 true
1622 }
1623 }
1624
1625 unsafe impl<D: fidl::encoding::ResourceDialect>
1626 fidl::encoding::Encode<ManagerRebindCompositesWithDriverResponse, D>
1627 for &ManagerRebindCompositesWithDriverResponse
1628 {
1629 #[inline]
1630 unsafe fn encode(
1631 self,
1632 encoder: &mut fidl::encoding::Encoder<'_, D>,
1633 offset: usize,
1634 _depth: fidl::encoding::Depth,
1635 ) -> fidl::Result<()> {
1636 encoder.debug_check_bounds::<ManagerRebindCompositesWithDriverResponse>(offset);
1637 unsafe {
1638 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1640 (buf_ptr as *mut ManagerRebindCompositesWithDriverResponse).write_unaligned(
1641 (self as *const ManagerRebindCompositesWithDriverResponse).read(),
1642 );
1643 }
1646 Ok(())
1647 }
1648 }
1649 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
1650 fidl::encoding::Encode<ManagerRebindCompositesWithDriverResponse, D> for (T0,)
1651 {
1652 #[inline]
1653 unsafe fn encode(
1654 self,
1655 encoder: &mut fidl::encoding::Encoder<'_, D>,
1656 offset: usize,
1657 depth: fidl::encoding::Depth,
1658 ) -> fidl::Result<()> {
1659 encoder.debug_check_bounds::<ManagerRebindCompositesWithDriverResponse>(offset);
1660 self.0.encode(encoder, offset + 0, depth)?;
1664 Ok(())
1665 }
1666 }
1667
1668 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1669 for ManagerRebindCompositesWithDriverResponse
1670 {
1671 #[inline(always)]
1672 fn new_empty() -> Self {
1673 Self { count: fidl::new_empty!(u32, D) }
1674 }
1675
1676 #[inline]
1677 unsafe fn decode(
1678 &mut self,
1679 decoder: &mut fidl::encoding::Decoder<'_, D>,
1680 offset: usize,
1681 _depth: fidl::encoding::Depth,
1682 ) -> fidl::Result<()> {
1683 decoder.debug_check_bounds::<Self>(offset);
1684 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1685 unsafe {
1688 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1689 }
1690 Ok(())
1691 }
1692 }
1693
1694 impl fidl::encoding::ValueTypeMarker for ManagerRestartDriverHostsResponse {
1695 type Borrowed<'a> = &'a Self;
1696 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1697 value
1698 }
1699 }
1700
1701 unsafe impl fidl::encoding::TypeMarker for ManagerRestartDriverHostsResponse {
1702 type Owned = Self;
1703
1704 #[inline(always)]
1705 fn inline_align(_context: fidl::encoding::Context) -> usize {
1706 4
1707 }
1708
1709 #[inline(always)]
1710 fn inline_size(_context: fidl::encoding::Context) -> usize {
1711 4
1712 }
1713 #[inline(always)]
1714 fn encode_is_copy() -> bool {
1715 true
1716 }
1717
1718 #[inline(always)]
1719 fn decode_is_copy() -> bool {
1720 true
1721 }
1722 }
1723
1724 unsafe impl<D: fidl::encoding::ResourceDialect>
1725 fidl::encoding::Encode<ManagerRestartDriverHostsResponse, D>
1726 for &ManagerRestartDriverHostsResponse
1727 {
1728 #[inline]
1729 unsafe fn encode(
1730 self,
1731 encoder: &mut fidl::encoding::Encoder<'_, D>,
1732 offset: usize,
1733 _depth: fidl::encoding::Depth,
1734 ) -> fidl::Result<()> {
1735 encoder.debug_check_bounds::<ManagerRestartDriverHostsResponse>(offset);
1736 unsafe {
1737 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1739 (buf_ptr as *mut ManagerRestartDriverHostsResponse)
1740 .write_unaligned((self as *const ManagerRestartDriverHostsResponse).read());
1741 }
1744 Ok(())
1745 }
1746 }
1747 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
1748 fidl::encoding::Encode<ManagerRestartDriverHostsResponse, D> for (T0,)
1749 {
1750 #[inline]
1751 unsafe fn encode(
1752 self,
1753 encoder: &mut fidl::encoding::Encoder<'_, D>,
1754 offset: usize,
1755 depth: fidl::encoding::Depth,
1756 ) -> fidl::Result<()> {
1757 encoder.debug_check_bounds::<ManagerRestartDriverHostsResponse>(offset);
1758 self.0.encode(encoder, offset + 0, depth)?;
1762 Ok(())
1763 }
1764 }
1765
1766 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1767 for ManagerRestartDriverHostsResponse
1768 {
1769 #[inline(always)]
1770 fn new_empty() -> Self {
1771 Self { count: fidl::new_empty!(u32, D) }
1772 }
1773
1774 #[inline]
1775 unsafe fn decode(
1776 &mut self,
1777 decoder: &mut fidl::encoding::Decoder<'_, D>,
1778 offset: usize,
1779 _depth: fidl::encoding::Depth,
1780 ) -> fidl::Result<()> {
1781 decoder.debug_check_bounds::<Self>(offset);
1782 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1783 unsafe {
1786 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1787 }
1788 Ok(())
1789 }
1790 }
1791
1792 impl fidl::encoding::ValueTypeMarker for NodeInfoIteratorGetNextResponse {
1793 type Borrowed<'a> = &'a Self;
1794 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1795 value
1796 }
1797 }
1798
1799 unsafe impl fidl::encoding::TypeMarker for NodeInfoIteratorGetNextResponse {
1800 type Owned = Self;
1801
1802 #[inline(always)]
1803 fn inline_align(_context: fidl::encoding::Context) -> usize {
1804 8
1805 }
1806
1807 #[inline(always)]
1808 fn inline_size(_context: fidl::encoding::Context) -> usize {
1809 16
1810 }
1811 }
1812
1813 unsafe impl<D: fidl::encoding::ResourceDialect>
1814 fidl::encoding::Encode<NodeInfoIteratorGetNextResponse, D>
1815 for &NodeInfoIteratorGetNextResponse
1816 {
1817 #[inline]
1818 unsafe fn encode(
1819 self,
1820 encoder: &mut fidl::encoding::Encoder<'_, D>,
1821 offset: usize,
1822 _depth: fidl::encoding::Depth,
1823 ) -> fidl::Result<()> {
1824 encoder.debug_check_bounds::<NodeInfoIteratorGetNextResponse>(offset);
1825 fidl::encoding::Encode::<NodeInfoIteratorGetNextResponse, D>::encode(
1827 (
1828 <fidl::encoding::UnboundedVector<NodeInfo> as fidl::encoding::ValueTypeMarker>::borrow(&self.nodes),
1829 ),
1830 encoder, offset, _depth
1831 )
1832 }
1833 }
1834 unsafe impl<
1835 D: fidl::encoding::ResourceDialect,
1836 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<NodeInfo>, D>,
1837 > fidl::encoding::Encode<NodeInfoIteratorGetNextResponse, D> for (T0,)
1838 {
1839 #[inline]
1840 unsafe fn encode(
1841 self,
1842 encoder: &mut fidl::encoding::Encoder<'_, D>,
1843 offset: usize,
1844 depth: fidl::encoding::Depth,
1845 ) -> fidl::Result<()> {
1846 encoder.debug_check_bounds::<NodeInfoIteratorGetNextResponse>(offset);
1847 self.0.encode(encoder, offset + 0, depth)?;
1851 Ok(())
1852 }
1853 }
1854
1855 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1856 for NodeInfoIteratorGetNextResponse
1857 {
1858 #[inline(always)]
1859 fn new_empty() -> Self {
1860 Self { nodes: fidl::new_empty!(fidl::encoding::UnboundedVector<NodeInfo>, D) }
1861 }
1862
1863 #[inline]
1864 unsafe fn decode(
1865 &mut self,
1866 decoder: &mut fidl::encoding::Decoder<'_, D>,
1867 offset: usize,
1868 _depth: fidl::encoding::Depth,
1869 ) -> fidl::Result<()> {
1870 decoder.debug_check_bounds::<Self>(offset);
1871 fidl::decode!(
1873 fidl::encoding::UnboundedVector<NodeInfo>,
1874 D,
1875 &mut self.nodes,
1876 decoder,
1877 offset + 0,
1878 _depth
1879 )?;
1880 Ok(())
1881 }
1882 }
1883
1884 impl CompositeNodeInfo {
1885 #[inline(always)]
1886 fn max_ordinal_present(&self) -> u64 {
1887 if let Some(_) = self.moniker {
1888 return 5;
1889 }
1890 if let Some(_) = self.parent_monikers {
1891 return 4;
1892 }
1893 if let Some(_) = self.composite {
1894 return 3;
1895 }
1896 if let Some(_) = self.topological_path {
1897 return 2;
1898 }
1899 if let Some(_) = self.parent_topological_paths {
1900 return 1;
1901 }
1902 0
1903 }
1904 }
1905
1906 impl fidl::encoding::ValueTypeMarker for CompositeNodeInfo {
1907 type Borrowed<'a> = &'a Self;
1908 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1909 value
1910 }
1911 }
1912
1913 unsafe impl fidl::encoding::TypeMarker for CompositeNodeInfo {
1914 type Owned = Self;
1915
1916 #[inline(always)]
1917 fn inline_align(_context: fidl::encoding::Context) -> usize {
1918 8
1919 }
1920
1921 #[inline(always)]
1922 fn inline_size(_context: fidl::encoding::Context) -> usize {
1923 16
1924 }
1925 }
1926
1927 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeNodeInfo, D>
1928 for &CompositeNodeInfo
1929 {
1930 unsafe fn encode(
1931 self,
1932 encoder: &mut fidl::encoding::Encoder<'_, D>,
1933 offset: usize,
1934 mut depth: fidl::encoding::Depth,
1935 ) -> fidl::Result<()> {
1936 encoder.debug_check_bounds::<CompositeNodeInfo>(offset);
1937 let max_ordinal: u64 = self.max_ordinal_present();
1939 encoder.write_num(max_ordinal, offset);
1940 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1941 if max_ordinal == 0 {
1943 return Ok(());
1944 }
1945 depth.increment()?;
1946 let envelope_size = 8;
1947 let bytes_len = max_ordinal as usize * envelope_size;
1948 #[allow(unused_variables)]
1949 let offset = encoder.out_of_line_offset(bytes_len);
1950 let mut _prev_end_offset: usize = 0;
1951 if 1 > max_ordinal {
1952 return Ok(());
1953 }
1954
1955 let cur_offset: usize = (1 - 1) * envelope_size;
1958
1959 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1961
1962 fidl::encoding::encode_in_envelope_optional::<
1967 fidl::encoding::UnboundedVector<
1968 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
1969 >,
1970 D,
1971 >(
1972 self.parent_topological_paths.as_ref().map(
1973 <fidl::encoding::UnboundedVector<
1974 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
1975 > as fidl::encoding::ValueTypeMarker>::borrow,
1976 ),
1977 encoder,
1978 offset + cur_offset,
1979 depth,
1980 )?;
1981
1982 _prev_end_offset = cur_offset + envelope_size;
1983 if 2 > max_ordinal {
1984 return Ok(());
1985 }
1986
1987 let cur_offset: usize = (2 - 1) * envelope_size;
1990
1991 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1993
1994 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
1999 self.topological_path.as_ref().map(
2000 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
2001 ),
2002 encoder,
2003 offset + cur_offset,
2004 depth,
2005 )?;
2006
2007 _prev_end_offset = cur_offset + envelope_size;
2008 if 3 > max_ordinal {
2009 return Ok(());
2010 }
2011
2012 let cur_offset: usize = (3 - 1) * envelope_size;
2015
2016 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2018
2019 fidl::encoding::encode_in_envelope_optional::<CompositeInfo, D>(
2024 self.composite
2025 .as_ref()
2026 .map(<CompositeInfo as fidl::encoding::ValueTypeMarker>::borrow),
2027 encoder,
2028 offset + cur_offset,
2029 depth,
2030 )?;
2031
2032 _prev_end_offset = cur_offset + envelope_size;
2033 if 4 > max_ordinal {
2034 return Ok(());
2035 }
2036
2037 let cur_offset: usize = (4 - 1) * envelope_size;
2040
2041 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2043
2044 fidl::encoding::encode_in_envelope_optional::<
2049 fidl::encoding::UnboundedVector<
2050 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2051 >,
2052 D,
2053 >(
2054 self.parent_monikers.as_ref().map(
2055 <fidl::encoding::UnboundedVector<
2056 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2057 > as fidl::encoding::ValueTypeMarker>::borrow,
2058 ),
2059 encoder,
2060 offset + cur_offset,
2061 depth,
2062 )?;
2063
2064 _prev_end_offset = cur_offset + envelope_size;
2065 if 5 > max_ordinal {
2066 return Ok(());
2067 }
2068
2069 let cur_offset: usize = (5 - 1) * envelope_size;
2072
2073 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2075
2076 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
2081 self.moniker.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
2082 encoder, offset + cur_offset, depth
2083 )?;
2084
2085 _prev_end_offset = cur_offset + envelope_size;
2086
2087 Ok(())
2088 }
2089 }
2090
2091 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeNodeInfo {
2092 #[inline(always)]
2093 fn new_empty() -> Self {
2094 Self::default()
2095 }
2096
2097 unsafe fn decode(
2098 &mut self,
2099 decoder: &mut fidl::encoding::Decoder<'_, D>,
2100 offset: usize,
2101 mut depth: fidl::encoding::Depth,
2102 ) -> fidl::Result<()> {
2103 decoder.debug_check_bounds::<Self>(offset);
2104 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2105 None => return Err(fidl::Error::NotNullable),
2106 Some(len) => len,
2107 };
2108 if len == 0 {
2110 return Ok(());
2111 };
2112 depth.increment()?;
2113 let envelope_size = 8;
2114 let bytes_len = len * envelope_size;
2115 let offset = decoder.out_of_line_offset(bytes_len)?;
2116 let mut _next_ordinal_to_read = 0;
2118 let mut next_offset = offset;
2119 let end_offset = offset + bytes_len;
2120 _next_ordinal_to_read += 1;
2121 if next_offset >= end_offset {
2122 return Ok(());
2123 }
2124
2125 while _next_ordinal_to_read < 1 {
2127 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2128 _next_ordinal_to_read += 1;
2129 next_offset += envelope_size;
2130 }
2131
2132 let next_out_of_line = decoder.next_out_of_line();
2133 let handles_before = decoder.remaining_handles();
2134 if let Some((inlined, num_bytes, num_handles)) =
2135 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2136 {
2137 let member_inline_size = <fidl::encoding::UnboundedVector<
2138 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2139 > as fidl::encoding::TypeMarker>::inline_size(
2140 decoder.context
2141 );
2142 if inlined != (member_inline_size <= 4) {
2143 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2144 }
2145 let inner_offset;
2146 let mut inner_depth = depth.clone();
2147 if inlined {
2148 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2149 inner_offset = next_offset;
2150 } else {
2151 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2152 inner_depth.increment()?;
2153 }
2154 let val_ref = self.parent_topological_paths.get_or_insert_with(|| {
2155 fidl::new_empty!(
2156 fidl::encoding::UnboundedVector<
2157 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2158 >,
2159 D
2160 )
2161 });
2162 fidl::decode!(
2163 fidl::encoding::UnboundedVector<
2164 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2165 >,
2166 D,
2167 val_ref,
2168 decoder,
2169 inner_offset,
2170 inner_depth
2171 )?;
2172 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2173 {
2174 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2175 }
2176 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2177 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2178 }
2179 }
2180
2181 next_offset += envelope_size;
2182 _next_ordinal_to_read += 1;
2183 if next_offset >= end_offset {
2184 return Ok(());
2185 }
2186
2187 while _next_ordinal_to_read < 2 {
2189 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2190 _next_ordinal_to_read += 1;
2191 next_offset += envelope_size;
2192 }
2193
2194 let next_out_of_line = decoder.next_out_of_line();
2195 let handles_before = decoder.remaining_handles();
2196 if let Some((inlined, num_bytes, num_handles)) =
2197 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2198 {
2199 let member_inline_size =
2200 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
2201 decoder.context,
2202 );
2203 if inlined != (member_inline_size <= 4) {
2204 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2205 }
2206 let inner_offset;
2207 let mut inner_depth = depth.clone();
2208 if inlined {
2209 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2210 inner_offset = next_offset;
2211 } else {
2212 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2213 inner_depth.increment()?;
2214 }
2215 let val_ref = self
2216 .topological_path
2217 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
2218 fidl::decode!(
2219 fidl::encoding::UnboundedString,
2220 D,
2221 val_ref,
2222 decoder,
2223 inner_offset,
2224 inner_depth
2225 )?;
2226 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2227 {
2228 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2229 }
2230 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2231 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2232 }
2233 }
2234
2235 next_offset += envelope_size;
2236 _next_ordinal_to_read += 1;
2237 if next_offset >= end_offset {
2238 return Ok(());
2239 }
2240
2241 while _next_ordinal_to_read < 3 {
2243 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2244 _next_ordinal_to_read += 1;
2245 next_offset += envelope_size;
2246 }
2247
2248 let next_out_of_line = decoder.next_out_of_line();
2249 let handles_before = decoder.remaining_handles();
2250 if let Some((inlined, num_bytes, num_handles)) =
2251 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2252 {
2253 let member_inline_size =
2254 <CompositeInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2255 if inlined != (member_inline_size <= 4) {
2256 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2257 }
2258 let inner_offset;
2259 let mut inner_depth = depth.clone();
2260 if inlined {
2261 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2262 inner_offset = next_offset;
2263 } else {
2264 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2265 inner_depth.increment()?;
2266 }
2267 let val_ref =
2268 self.composite.get_or_insert_with(|| fidl::new_empty!(CompositeInfo, D));
2269 fidl::decode!(CompositeInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
2270 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2271 {
2272 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2273 }
2274 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2275 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2276 }
2277 }
2278
2279 next_offset += envelope_size;
2280 _next_ordinal_to_read += 1;
2281 if next_offset >= end_offset {
2282 return Ok(());
2283 }
2284
2285 while _next_ordinal_to_read < 4 {
2287 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2288 _next_ordinal_to_read += 1;
2289 next_offset += envelope_size;
2290 }
2291
2292 let next_out_of_line = decoder.next_out_of_line();
2293 let handles_before = decoder.remaining_handles();
2294 if let Some((inlined, num_bytes, num_handles)) =
2295 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2296 {
2297 let member_inline_size = <fidl::encoding::UnboundedVector<
2298 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2299 > as fidl::encoding::TypeMarker>::inline_size(
2300 decoder.context
2301 );
2302 if inlined != (member_inline_size <= 4) {
2303 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2304 }
2305 let inner_offset;
2306 let mut inner_depth = depth.clone();
2307 if inlined {
2308 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2309 inner_offset = next_offset;
2310 } else {
2311 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2312 inner_depth.increment()?;
2313 }
2314 let val_ref = self.parent_monikers.get_or_insert_with(|| {
2315 fidl::new_empty!(
2316 fidl::encoding::UnboundedVector<
2317 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2318 >,
2319 D
2320 )
2321 });
2322 fidl::decode!(
2323 fidl::encoding::UnboundedVector<
2324 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2325 >,
2326 D,
2327 val_ref,
2328 decoder,
2329 inner_offset,
2330 inner_depth
2331 )?;
2332 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2333 {
2334 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2335 }
2336 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2337 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2338 }
2339 }
2340
2341 next_offset += envelope_size;
2342 _next_ordinal_to_read += 1;
2343 if next_offset >= end_offset {
2344 return Ok(());
2345 }
2346
2347 while _next_ordinal_to_read < 5 {
2349 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2350 _next_ordinal_to_read += 1;
2351 next_offset += envelope_size;
2352 }
2353
2354 let next_out_of_line = decoder.next_out_of_line();
2355 let handles_before = decoder.remaining_handles();
2356 if let Some((inlined, num_bytes, num_handles)) =
2357 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2358 {
2359 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2360 if inlined != (member_inline_size <= 4) {
2361 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2362 }
2363 let inner_offset;
2364 let mut inner_depth = depth.clone();
2365 if inlined {
2366 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2367 inner_offset = next_offset;
2368 } else {
2369 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2370 inner_depth.increment()?;
2371 }
2372 let val_ref = self.moniker.get_or_insert_with(|| {
2373 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
2374 });
2375 fidl::decode!(
2376 fidl::encoding::BoundedString<1024>,
2377 D,
2378 val_ref,
2379 decoder,
2380 inner_offset,
2381 inner_depth
2382 )?;
2383 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2384 {
2385 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2386 }
2387 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2388 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2389 }
2390 }
2391
2392 next_offset += envelope_size;
2393
2394 while next_offset < end_offset {
2396 _next_ordinal_to_read += 1;
2397 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2398 next_offset += envelope_size;
2399 }
2400
2401 Ok(())
2402 }
2403 }
2404
2405 impl DispatcherInfo {
2406 #[inline(always)]
2407 fn max_ordinal_present(&self) -> u64 {
2408 if let Some(_) = self.scheduler_role {
2409 return 4;
2410 }
2411 if let Some(_) = self.options {
2412 return 3;
2413 }
2414 if let Some(_) = self.name {
2415 return 2;
2416 }
2417 if let Some(_) = self.driver {
2418 return 1;
2419 }
2420 0
2421 }
2422 }
2423
2424 impl fidl::encoding::ValueTypeMarker for DispatcherInfo {
2425 type Borrowed<'a> = &'a Self;
2426 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2427 value
2428 }
2429 }
2430
2431 unsafe impl fidl::encoding::TypeMarker for DispatcherInfo {
2432 type Owned = Self;
2433
2434 #[inline(always)]
2435 fn inline_align(_context: fidl::encoding::Context) -> usize {
2436 8
2437 }
2438
2439 #[inline(always)]
2440 fn inline_size(_context: fidl::encoding::Context) -> usize {
2441 16
2442 }
2443 }
2444
2445 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DispatcherInfo, D>
2446 for &DispatcherInfo
2447 {
2448 unsafe fn encode(
2449 self,
2450 encoder: &mut fidl::encoding::Encoder<'_, D>,
2451 offset: usize,
2452 mut depth: fidl::encoding::Depth,
2453 ) -> fidl::Result<()> {
2454 encoder.debug_check_bounds::<DispatcherInfo>(offset);
2455 let max_ordinal: u64 = self.max_ordinal_present();
2457 encoder.write_num(max_ordinal, offset);
2458 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2459 if max_ordinal == 0 {
2461 return Ok(());
2462 }
2463 depth.increment()?;
2464 let envelope_size = 8;
2465 let bytes_len = max_ordinal as usize * envelope_size;
2466 #[allow(unused_variables)]
2467 let offset = encoder.out_of_line_offset(bytes_len);
2468 let mut _prev_end_offset: usize = 0;
2469 if 1 > max_ordinal {
2470 return Ok(());
2471 }
2472
2473 let cur_offset: usize = (1 - 1) * envelope_size;
2476
2477 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2479
2480 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
2485 self.driver.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
2486 encoder, offset + cur_offset, depth
2487 )?;
2488
2489 _prev_end_offset = cur_offset + envelope_size;
2490 if 2 > max_ordinal {
2491 return Ok(());
2492 }
2493
2494 let cur_offset: usize = (2 - 1) * envelope_size;
2497
2498 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2500
2501 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
2506 self.name.as_ref().map(
2507 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
2508 ),
2509 encoder,
2510 offset + cur_offset,
2511 depth,
2512 )?;
2513
2514 _prev_end_offset = cur_offset + envelope_size;
2515 if 3 > max_ordinal {
2516 return Ok(());
2517 }
2518
2519 let cur_offset: usize = (3 - 1) * envelope_size;
2522
2523 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2525
2526 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2531 self.options.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2532 encoder,
2533 offset + cur_offset,
2534 depth,
2535 )?;
2536
2537 _prev_end_offset = cur_offset + envelope_size;
2538 if 4 > max_ordinal {
2539 return Ok(());
2540 }
2541
2542 let cur_offset: usize = (4 - 1) * envelope_size;
2545
2546 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2548
2549 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
2554 self.scheduler_role.as_ref().map(
2555 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
2556 ),
2557 encoder,
2558 offset + cur_offset,
2559 depth,
2560 )?;
2561
2562 _prev_end_offset = cur_offset + envelope_size;
2563
2564 Ok(())
2565 }
2566 }
2567
2568 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DispatcherInfo {
2569 #[inline(always)]
2570 fn new_empty() -> Self {
2571 Self::default()
2572 }
2573
2574 unsafe fn decode(
2575 &mut self,
2576 decoder: &mut fidl::encoding::Decoder<'_, D>,
2577 offset: usize,
2578 mut depth: fidl::encoding::Depth,
2579 ) -> fidl::Result<()> {
2580 decoder.debug_check_bounds::<Self>(offset);
2581 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2582 None => return Err(fidl::Error::NotNullable),
2583 Some(len) => len,
2584 };
2585 if len == 0 {
2587 return Ok(());
2588 };
2589 depth.increment()?;
2590 let envelope_size = 8;
2591 let bytes_len = len * envelope_size;
2592 let offset = decoder.out_of_line_offset(bytes_len)?;
2593 let mut _next_ordinal_to_read = 0;
2595 let mut next_offset = offset;
2596 let end_offset = offset + bytes_len;
2597 _next_ordinal_to_read += 1;
2598 if next_offset >= end_offset {
2599 return Ok(());
2600 }
2601
2602 while _next_ordinal_to_read < 1 {
2604 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2605 _next_ordinal_to_read += 1;
2606 next_offset += envelope_size;
2607 }
2608
2609 let next_out_of_line = decoder.next_out_of_line();
2610 let handles_before = decoder.remaining_handles();
2611 if let Some((inlined, num_bytes, num_handles)) =
2612 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2613 {
2614 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2615 if inlined != (member_inline_size <= 4) {
2616 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2617 }
2618 let inner_offset;
2619 let mut inner_depth = depth.clone();
2620 if inlined {
2621 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2622 inner_offset = next_offset;
2623 } else {
2624 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2625 inner_depth.increment()?;
2626 }
2627 let val_ref = self.driver.get_or_insert_with(|| {
2628 fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
2629 });
2630 fidl::decode!(
2631 fidl::encoding::BoundedString<4096>,
2632 D,
2633 val_ref,
2634 decoder,
2635 inner_offset,
2636 inner_depth
2637 )?;
2638 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2639 {
2640 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2641 }
2642 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2643 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2644 }
2645 }
2646
2647 next_offset += envelope_size;
2648 _next_ordinal_to_read += 1;
2649 if next_offset >= end_offset {
2650 return Ok(());
2651 }
2652
2653 while _next_ordinal_to_read < 2 {
2655 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2656 _next_ordinal_to_read += 1;
2657 next_offset += envelope_size;
2658 }
2659
2660 let next_out_of_line = decoder.next_out_of_line();
2661 let handles_before = decoder.remaining_handles();
2662 if let Some((inlined, num_bytes, num_handles)) =
2663 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2664 {
2665 let member_inline_size =
2666 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
2667 decoder.context,
2668 );
2669 if inlined != (member_inline_size <= 4) {
2670 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2671 }
2672 let inner_offset;
2673 let mut inner_depth = depth.clone();
2674 if inlined {
2675 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2676 inner_offset = next_offset;
2677 } else {
2678 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2679 inner_depth.increment()?;
2680 }
2681 let val_ref = self
2682 .name
2683 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
2684 fidl::decode!(
2685 fidl::encoding::UnboundedString,
2686 D,
2687 val_ref,
2688 decoder,
2689 inner_offset,
2690 inner_depth
2691 )?;
2692 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2693 {
2694 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2695 }
2696 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2697 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2698 }
2699 }
2700
2701 next_offset += envelope_size;
2702 _next_ordinal_to_read += 1;
2703 if next_offset >= end_offset {
2704 return Ok(());
2705 }
2706
2707 while _next_ordinal_to_read < 3 {
2709 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2710 _next_ordinal_to_read += 1;
2711 next_offset += envelope_size;
2712 }
2713
2714 let next_out_of_line = decoder.next_out_of_line();
2715 let handles_before = decoder.remaining_handles();
2716 if let Some((inlined, num_bytes, num_handles)) =
2717 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2718 {
2719 let member_inline_size =
2720 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2721 if inlined != (member_inline_size <= 4) {
2722 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2723 }
2724 let inner_offset;
2725 let mut inner_depth = depth.clone();
2726 if inlined {
2727 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2728 inner_offset = next_offset;
2729 } else {
2730 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2731 inner_depth.increment()?;
2732 }
2733 let val_ref = self.options.get_or_insert_with(|| fidl::new_empty!(u32, D));
2734 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2735 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2736 {
2737 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2738 }
2739 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2740 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2741 }
2742 }
2743
2744 next_offset += envelope_size;
2745 _next_ordinal_to_read += 1;
2746 if next_offset >= end_offset {
2747 return Ok(());
2748 }
2749
2750 while _next_ordinal_to_read < 4 {
2752 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2753 _next_ordinal_to_read += 1;
2754 next_offset += envelope_size;
2755 }
2756
2757 let next_out_of_line = decoder.next_out_of_line();
2758 let handles_before = decoder.remaining_handles();
2759 if let Some((inlined, num_bytes, num_handles)) =
2760 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2761 {
2762 let member_inline_size =
2763 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
2764 decoder.context,
2765 );
2766 if inlined != (member_inline_size <= 4) {
2767 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2768 }
2769 let inner_offset;
2770 let mut inner_depth = depth.clone();
2771 if inlined {
2772 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2773 inner_offset = next_offset;
2774 } else {
2775 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2776 inner_depth.increment()?;
2777 }
2778 let val_ref = self
2779 .scheduler_role
2780 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
2781 fidl::decode!(
2782 fidl::encoding::UnboundedString,
2783 D,
2784 val_ref,
2785 decoder,
2786 inner_offset,
2787 inner_depth
2788 )?;
2789 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2790 {
2791 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2792 }
2793 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2794 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2795 }
2796 }
2797
2798 next_offset += envelope_size;
2799
2800 while next_offset < end_offset {
2802 _next_ordinal_to_read += 1;
2803 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2804 next_offset += envelope_size;
2805 }
2806
2807 Ok(())
2808 }
2809 }
2810
2811 impl DriverHostInfo {
2812 #[inline(always)]
2813 fn max_ordinal_present(&self) -> u64 {
2814 if let Some(_) = self.name {
2815 return 5;
2816 }
2817 if let Some(_) = self.dispatchers {
2818 return 4;
2819 }
2820 if let Some(_) = self.drivers {
2821 return 3;
2822 }
2823 if let Some(_) = self.threads {
2824 return 2;
2825 }
2826 if let Some(_) = self.process_koid {
2827 return 1;
2828 }
2829 0
2830 }
2831 }
2832
2833 impl fidl::encoding::ValueTypeMarker for DriverHostInfo {
2834 type Borrowed<'a> = &'a Self;
2835 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2836 value
2837 }
2838 }
2839
2840 unsafe impl fidl::encoding::TypeMarker for DriverHostInfo {
2841 type Owned = Self;
2842
2843 #[inline(always)]
2844 fn inline_align(_context: fidl::encoding::Context) -> usize {
2845 8
2846 }
2847
2848 #[inline(always)]
2849 fn inline_size(_context: fidl::encoding::Context) -> usize {
2850 16
2851 }
2852 }
2853
2854 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DriverHostInfo, D>
2855 for &DriverHostInfo
2856 {
2857 unsafe fn encode(
2858 self,
2859 encoder: &mut fidl::encoding::Encoder<'_, D>,
2860 offset: usize,
2861 mut depth: fidl::encoding::Depth,
2862 ) -> fidl::Result<()> {
2863 encoder.debug_check_bounds::<DriverHostInfo>(offset);
2864 let max_ordinal: u64 = self.max_ordinal_present();
2866 encoder.write_num(max_ordinal, offset);
2867 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2868 if max_ordinal == 0 {
2870 return Ok(());
2871 }
2872 depth.increment()?;
2873 let envelope_size = 8;
2874 let bytes_len = max_ordinal as usize * envelope_size;
2875 #[allow(unused_variables)]
2876 let offset = encoder.out_of_line_offset(bytes_len);
2877 let mut _prev_end_offset: usize = 0;
2878 if 1 > max_ordinal {
2879 return Ok(());
2880 }
2881
2882 let cur_offset: usize = (1 - 1) * envelope_size;
2885
2886 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2888
2889 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2894 self.process_koid.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2895 encoder,
2896 offset + cur_offset,
2897 depth,
2898 )?;
2899
2900 _prev_end_offset = cur_offset + envelope_size;
2901 if 2 > max_ordinal {
2902 return Ok(());
2903 }
2904
2905 let cur_offset: usize = (2 - 1) * envelope_size;
2908
2909 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2911
2912 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ThreadInfo>, D>(
2917 self.threads.as_ref().map(<fidl::encoding::UnboundedVector<ThreadInfo> as fidl::encoding::ValueTypeMarker>::borrow),
2918 encoder, offset + cur_offset, depth
2919 )?;
2920
2921 _prev_end_offset = cur_offset + envelope_size;
2922 if 3 > max_ordinal {
2923 return Ok(());
2924 }
2925
2926 let cur_offset: usize = (3 - 1) * envelope_size;
2929
2930 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2932
2933 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>>, D>(
2938 self.drivers.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>> as fidl::encoding::ValueTypeMarker>::borrow),
2939 encoder, offset + cur_offset, depth
2940 )?;
2941
2942 _prev_end_offset = cur_offset + envelope_size;
2943 if 4 > max_ordinal {
2944 return Ok(());
2945 }
2946
2947 let cur_offset: usize = (4 - 1) * envelope_size;
2950
2951 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2953
2954 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<DispatcherInfo>, D>(
2959 self.dispatchers.as_ref().map(<fidl::encoding::UnboundedVector<DispatcherInfo> as fidl::encoding::ValueTypeMarker>::borrow),
2960 encoder, offset + cur_offset, depth
2961 )?;
2962
2963 _prev_end_offset = cur_offset + envelope_size;
2964 if 5 > max_ordinal {
2965 return Ok(());
2966 }
2967
2968 let cur_offset: usize = (5 - 1) * envelope_size;
2971
2972 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2974
2975 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
2980 self.name.as_ref().map(
2981 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
2982 ),
2983 encoder,
2984 offset + cur_offset,
2985 depth,
2986 )?;
2987
2988 _prev_end_offset = cur_offset + envelope_size;
2989
2990 Ok(())
2991 }
2992 }
2993
2994 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DriverHostInfo {
2995 #[inline(always)]
2996 fn new_empty() -> Self {
2997 Self::default()
2998 }
2999
3000 unsafe fn decode(
3001 &mut self,
3002 decoder: &mut fidl::encoding::Decoder<'_, D>,
3003 offset: usize,
3004 mut depth: fidl::encoding::Depth,
3005 ) -> fidl::Result<()> {
3006 decoder.debug_check_bounds::<Self>(offset);
3007 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3008 None => return Err(fidl::Error::NotNullable),
3009 Some(len) => len,
3010 };
3011 if len == 0 {
3013 return Ok(());
3014 };
3015 depth.increment()?;
3016 let envelope_size = 8;
3017 let bytes_len = len * envelope_size;
3018 let offset = decoder.out_of_line_offset(bytes_len)?;
3019 let mut _next_ordinal_to_read = 0;
3021 let mut next_offset = offset;
3022 let end_offset = offset + bytes_len;
3023 _next_ordinal_to_read += 1;
3024 if next_offset >= end_offset {
3025 return Ok(());
3026 }
3027
3028 while _next_ordinal_to_read < 1 {
3030 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3031 _next_ordinal_to_read += 1;
3032 next_offset += envelope_size;
3033 }
3034
3035 let next_out_of_line = decoder.next_out_of_line();
3036 let handles_before = decoder.remaining_handles();
3037 if let Some((inlined, num_bytes, num_handles)) =
3038 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3039 {
3040 let member_inline_size =
3041 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3042 if inlined != (member_inline_size <= 4) {
3043 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3044 }
3045 let inner_offset;
3046 let mut inner_depth = depth.clone();
3047 if inlined {
3048 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3049 inner_offset = next_offset;
3050 } else {
3051 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3052 inner_depth.increment()?;
3053 }
3054 let val_ref = self.process_koid.get_or_insert_with(|| fidl::new_empty!(u64, D));
3055 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3056 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3057 {
3058 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3059 }
3060 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3061 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3062 }
3063 }
3064
3065 next_offset += envelope_size;
3066 _next_ordinal_to_read += 1;
3067 if next_offset >= end_offset {
3068 return Ok(());
3069 }
3070
3071 while _next_ordinal_to_read < 2 {
3073 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3074 _next_ordinal_to_read += 1;
3075 next_offset += envelope_size;
3076 }
3077
3078 let next_out_of_line = decoder.next_out_of_line();
3079 let handles_before = decoder.remaining_handles();
3080 if let Some((inlined, num_bytes, num_handles)) =
3081 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3082 {
3083 let member_inline_size = <fidl::encoding::UnboundedVector<ThreadInfo> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3084 if inlined != (member_inline_size <= 4) {
3085 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3086 }
3087 let inner_offset;
3088 let mut inner_depth = depth.clone();
3089 if inlined {
3090 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3091 inner_offset = next_offset;
3092 } else {
3093 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3094 inner_depth.increment()?;
3095 }
3096 let val_ref = self.threads.get_or_insert_with(|| {
3097 fidl::new_empty!(fidl::encoding::UnboundedVector<ThreadInfo>, D)
3098 });
3099 fidl::decode!(
3100 fidl::encoding::UnboundedVector<ThreadInfo>,
3101 D,
3102 val_ref,
3103 decoder,
3104 inner_offset,
3105 inner_depth
3106 )?;
3107 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3108 {
3109 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3110 }
3111 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3112 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3113 }
3114 }
3115
3116 next_offset += envelope_size;
3117 _next_ordinal_to_read += 1;
3118 if next_offset >= end_offset {
3119 return Ok(());
3120 }
3121
3122 while _next_ordinal_to_read < 3 {
3124 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3125 _next_ordinal_to_read += 1;
3126 next_offset += envelope_size;
3127 }
3128
3129 let next_out_of_line = decoder.next_out_of_line();
3130 let handles_before = decoder.remaining_handles();
3131 if let Some((inlined, num_bytes, num_handles)) =
3132 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3133 {
3134 let member_inline_size = <fidl::encoding::UnboundedVector<
3135 fidl::encoding::BoundedString<4096>,
3136 > as fidl::encoding::TypeMarker>::inline_size(
3137 decoder.context
3138 );
3139 if inlined != (member_inline_size <= 4) {
3140 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3141 }
3142 let inner_offset;
3143 let mut inner_depth = depth.clone();
3144 if inlined {
3145 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3146 inner_offset = next_offset;
3147 } else {
3148 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3149 inner_depth.increment()?;
3150 }
3151 let val_ref = self.drivers.get_or_insert_with(|| {
3152 fidl::new_empty!(
3153 fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>>,
3154 D
3155 )
3156 });
3157 fidl::decode!(
3158 fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>>,
3159 D,
3160 val_ref,
3161 decoder,
3162 inner_offset,
3163 inner_depth
3164 )?;
3165 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3166 {
3167 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3168 }
3169 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3170 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3171 }
3172 }
3173
3174 next_offset += envelope_size;
3175 _next_ordinal_to_read += 1;
3176 if next_offset >= end_offset {
3177 return Ok(());
3178 }
3179
3180 while _next_ordinal_to_read < 4 {
3182 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3183 _next_ordinal_to_read += 1;
3184 next_offset += envelope_size;
3185 }
3186
3187 let next_out_of_line = decoder.next_out_of_line();
3188 let handles_before = decoder.remaining_handles();
3189 if let Some((inlined, num_bytes, num_handles)) =
3190 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3191 {
3192 let member_inline_size = <fidl::encoding::UnboundedVector<DispatcherInfo> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3193 if inlined != (member_inline_size <= 4) {
3194 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3195 }
3196 let inner_offset;
3197 let mut inner_depth = depth.clone();
3198 if inlined {
3199 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3200 inner_offset = next_offset;
3201 } else {
3202 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3203 inner_depth.increment()?;
3204 }
3205 let val_ref = self.dispatchers.get_or_insert_with(|| {
3206 fidl::new_empty!(fidl::encoding::UnboundedVector<DispatcherInfo>, D)
3207 });
3208 fidl::decode!(
3209 fidl::encoding::UnboundedVector<DispatcherInfo>,
3210 D,
3211 val_ref,
3212 decoder,
3213 inner_offset,
3214 inner_depth
3215 )?;
3216 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3217 {
3218 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3219 }
3220 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3221 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3222 }
3223 }
3224
3225 next_offset += envelope_size;
3226 _next_ordinal_to_read += 1;
3227 if next_offset >= end_offset {
3228 return Ok(());
3229 }
3230
3231 while _next_ordinal_to_read < 5 {
3233 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3234 _next_ordinal_to_read += 1;
3235 next_offset += envelope_size;
3236 }
3237
3238 let next_out_of_line = decoder.next_out_of_line();
3239 let handles_before = decoder.remaining_handles();
3240 if let Some((inlined, num_bytes, num_handles)) =
3241 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3242 {
3243 let member_inline_size =
3244 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
3245 decoder.context,
3246 );
3247 if inlined != (member_inline_size <= 4) {
3248 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3249 }
3250 let inner_offset;
3251 let mut inner_depth = depth.clone();
3252 if inlined {
3253 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3254 inner_offset = next_offset;
3255 } else {
3256 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3257 inner_depth.increment()?;
3258 }
3259 let val_ref = self
3260 .name
3261 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
3262 fidl::decode!(
3263 fidl::encoding::UnboundedString,
3264 D,
3265 val_ref,
3266 decoder,
3267 inner_offset,
3268 inner_depth
3269 )?;
3270 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3271 {
3272 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3273 }
3274 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3275 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3276 }
3277 }
3278
3279 next_offset += envelope_size;
3280
3281 while next_offset < end_offset {
3283 _next_ordinal_to_read += 1;
3284 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3285 next_offset += envelope_size;
3286 }
3287
3288 Ok(())
3289 }
3290 }
3291
3292 impl NodeBindingInfo {
3293 #[inline(always)]
3294 fn max_ordinal_present(&self) -> u64 {
3295 if let Some(_) = self.composite_parents {
3296 return 3;
3297 }
3298 if let Some(_) = self.driver_url {
3299 return 2;
3300 }
3301 if let Some(_) = self.node_name {
3302 return 1;
3303 }
3304 0
3305 }
3306 }
3307
3308 impl fidl::encoding::ValueTypeMarker for NodeBindingInfo {
3309 type Borrowed<'a> = &'a Self;
3310 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3311 value
3312 }
3313 }
3314
3315 unsafe impl fidl::encoding::TypeMarker for NodeBindingInfo {
3316 type Owned = Self;
3317
3318 #[inline(always)]
3319 fn inline_align(_context: fidl::encoding::Context) -> usize {
3320 8
3321 }
3322
3323 #[inline(always)]
3324 fn inline_size(_context: fidl::encoding::Context) -> usize {
3325 16
3326 }
3327 }
3328
3329 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeBindingInfo, D>
3330 for &NodeBindingInfo
3331 {
3332 unsafe fn encode(
3333 self,
3334 encoder: &mut fidl::encoding::Encoder<'_, D>,
3335 offset: usize,
3336 mut depth: fidl::encoding::Depth,
3337 ) -> fidl::Result<()> {
3338 encoder.debug_check_bounds::<NodeBindingInfo>(offset);
3339 let max_ordinal: u64 = self.max_ordinal_present();
3341 encoder.write_num(max_ordinal, offset);
3342 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3343 if max_ordinal == 0 {
3345 return Ok(());
3346 }
3347 depth.increment()?;
3348 let envelope_size = 8;
3349 let bytes_len = max_ordinal as usize * envelope_size;
3350 #[allow(unused_variables)]
3351 let offset = encoder.out_of_line_offset(bytes_len);
3352 let mut _prev_end_offset: usize = 0;
3353 if 1 > max_ordinal {
3354 return Ok(());
3355 }
3356
3357 let cur_offset: usize = (1 - 1) * envelope_size;
3360
3361 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3363
3364 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
3369 self.node_name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
3370 encoder, offset + cur_offset, depth
3371 )?;
3372
3373 _prev_end_offset = cur_offset + envelope_size;
3374 if 2 > max_ordinal {
3375 return Ok(());
3376 }
3377
3378 let cur_offset: usize = (2 - 1) * envelope_size;
3381
3382 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3384
3385 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
3390 self.driver_url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
3391 encoder, offset + cur_offset, depth
3392 )?;
3393
3394 _prev_end_offset = cur_offset + envelope_size;
3395 if 3 > max_ordinal {
3396 return Ok(());
3397 }
3398
3399 let cur_offset: usize = (3 - 1) * envelope_size;
3402
3403 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3405
3406 fidl::encoding::encode_in_envelope_optional::<
3411 fidl::encoding::UnboundedVector<
3412 fidl_fuchsia_driver_framework_common::CompositeParent,
3413 >,
3414 D,
3415 >(
3416 self.composite_parents.as_ref().map(
3417 <fidl::encoding::UnboundedVector<
3418 fidl_fuchsia_driver_framework_common::CompositeParent,
3419 > as fidl::encoding::ValueTypeMarker>::borrow,
3420 ),
3421 encoder,
3422 offset + cur_offset,
3423 depth,
3424 )?;
3425
3426 _prev_end_offset = cur_offset + envelope_size;
3427
3428 Ok(())
3429 }
3430 }
3431
3432 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeBindingInfo {
3433 #[inline(always)]
3434 fn new_empty() -> Self {
3435 Self::default()
3436 }
3437
3438 unsafe fn decode(
3439 &mut self,
3440 decoder: &mut fidl::encoding::Decoder<'_, D>,
3441 offset: usize,
3442 mut depth: fidl::encoding::Depth,
3443 ) -> fidl::Result<()> {
3444 decoder.debug_check_bounds::<Self>(offset);
3445 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3446 None => return Err(fidl::Error::NotNullable),
3447 Some(len) => len,
3448 };
3449 if len == 0 {
3451 return Ok(());
3452 };
3453 depth.increment()?;
3454 let envelope_size = 8;
3455 let bytes_len = len * envelope_size;
3456 let offset = decoder.out_of_line_offset(bytes_len)?;
3457 let mut _next_ordinal_to_read = 0;
3459 let mut next_offset = offset;
3460 let end_offset = offset + bytes_len;
3461 _next_ordinal_to_read += 1;
3462 if next_offset >= end_offset {
3463 return Ok(());
3464 }
3465
3466 while _next_ordinal_to_read < 1 {
3468 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3469 _next_ordinal_to_read += 1;
3470 next_offset += envelope_size;
3471 }
3472
3473 let next_out_of_line = decoder.next_out_of_line();
3474 let handles_before = decoder.remaining_handles();
3475 if let Some((inlined, num_bytes, num_handles)) =
3476 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3477 {
3478 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3479 if inlined != (member_inline_size <= 4) {
3480 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3481 }
3482 let inner_offset;
3483 let mut inner_depth = depth.clone();
3484 if inlined {
3485 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3486 inner_offset = next_offset;
3487 } else {
3488 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3489 inner_depth.increment()?;
3490 }
3491 let val_ref = self.node_name.get_or_insert_with(|| {
3492 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
3493 });
3494 fidl::decode!(
3495 fidl::encoding::BoundedString<1024>,
3496 D,
3497 val_ref,
3498 decoder,
3499 inner_offset,
3500 inner_depth
3501 )?;
3502 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3503 {
3504 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3505 }
3506 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3507 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3508 }
3509 }
3510
3511 next_offset += envelope_size;
3512 _next_ordinal_to_read += 1;
3513 if next_offset >= end_offset {
3514 return Ok(());
3515 }
3516
3517 while _next_ordinal_to_read < 2 {
3519 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3520 _next_ordinal_to_read += 1;
3521 next_offset += envelope_size;
3522 }
3523
3524 let next_out_of_line = decoder.next_out_of_line();
3525 let handles_before = decoder.remaining_handles();
3526 if let Some((inlined, num_bytes, num_handles)) =
3527 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3528 {
3529 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3530 if inlined != (member_inline_size <= 4) {
3531 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3532 }
3533 let inner_offset;
3534 let mut inner_depth = depth.clone();
3535 if inlined {
3536 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3537 inner_offset = next_offset;
3538 } else {
3539 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3540 inner_depth.increment()?;
3541 }
3542 let val_ref = self.driver_url.get_or_insert_with(|| {
3543 fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
3544 });
3545 fidl::decode!(
3546 fidl::encoding::BoundedString<4096>,
3547 D,
3548 val_ref,
3549 decoder,
3550 inner_offset,
3551 inner_depth
3552 )?;
3553 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3554 {
3555 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3556 }
3557 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3558 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3559 }
3560 }
3561
3562 next_offset += envelope_size;
3563 _next_ordinal_to_read += 1;
3564 if next_offset >= end_offset {
3565 return Ok(());
3566 }
3567
3568 while _next_ordinal_to_read < 3 {
3570 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3571 _next_ordinal_to_read += 1;
3572 next_offset += envelope_size;
3573 }
3574
3575 let next_out_of_line = decoder.next_out_of_line();
3576 let handles_before = decoder.remaining_handles();
3577 if let Some((inlined, num_bytes, num_handles)) =
3578 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3579 {
3580 let member_inline_size = <fidl::encoding::UnboundedVector<
3581 fidl_fuchsia_driver_framework_common::CompositeParent,
3582 > as fidl::encoding::TypeMarker>::inline_size(
3583 decoder.context
3584 );
3585 if inlined != (member_inline_size <= 4) {
3586 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3587 }
3588 let inner_offset;
3589 let mut inner_depth = depth.clone();
3590 if inlined {
3591 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3592 inner_offset = next_offset;
3593 } else {
3594 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3595 inner_depth.increment()?;
3596 }
3597 let val_ref = self.composite_parents.get_or_insert_with(|| {
3598 fidl::new_empty!(
3599 fidl::encoding::UnboundedVector<
3600 fidl_fuchsia_driver_framework_common::CompositeParent,
3601 >,
3602 D
3603 )
3604 });
3605 fidl::decode!(
3606 fidl::encoding::UnboundedVector<
3607 fidl_fuchsia_driver_framework_common::CompositeParent,
3608 >,
3609 D,
3610 val_ref,
3611 decoder,
3612 inner_offset,
3613 inner_depth
3614 )?;
3615 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3616 {
3617 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3618 }
3619 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3620 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3621 }
3622 }
3623
3624 next_offset += envelope_size;
3625
3626 while next_offset < end_offset {
3628 _next_ordinal_to_read += 1;
3629 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3630 next_offset += envelope_size;
3631 }
3632
3633 Ok(())
3634 }
3635 }
3636
3637 impl NodeInfo {
3638 #[inline(always)]
3639 fn max_ordinal_present(&self) -> u64 {
3640 if let Some(_) = self.topological_path {
3641 return 12;
3642 }
3643 if let Some(_) = self.bus_topology {
3644 return 11;
3645 }
3646 if let Some(_) = self.quarantined {
3647 return 10;
3648 }
3649 if let Some(_) = self.offer_list {
3650 return 9;
3651 }
3652 if let Some(_) = self.node_property_list {
3653 return 8;
3654 }
3655 if let Some(_) = self.moniker {
3656 return 7;
3657 }
3658 if let Some(_) = self.bound_driver_url {
3659 return 5;
3660 }
3661 if let Some(_) = self.driver_host_koid {
3662 return 4;
3663 }
3664 if let Some(_) = self.child_ids {
3665 return 3;
3666 }
3667 if let Some(_) = self.parent_ids {
3668 return 2;
3669 }
3670 if let Some(_) = self.id {
3671 return 1;
3672 }
3673 0
3674 }
3675 }
3676
3677 impl fidl::encoding::ValueTypeMarker for NodeInfo {
3678 type Borrowed<'a> = &'a Self;
3679 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3680 value
3681 }
3682 }
3683
3684 unsafe impl fidl::encoding::TypeMarker for NodeInfo {
3685 type Owned = Self;
3686
3687 #[inline(always)]
3688 fn inline_align(_context: fidl::encoding::Context) -> usize {
3689 8
3690 }
3691
3692 #[inline(always)]
3693 fn inline_size(_context: fidl::encoding::Context) -> usize {
3694 16
3695 }
3696 }
3697
3698 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeInfo, D> for &NodeInfo {
3699 unsafe fn encode(
3700 self,
3701 encoder: &mut fidl::encoding::Encoder<'_, D>,
3702 offset: usize,
3703 mut depth: fidl::encoding::Depth,
3704 ) -> fidl::Result<()> {
3705 encoder.debug_check_bounds::<NodeInfo>(offset);
3706 let max_ordinal: u64 = self.max_ordinal_present();
3708 encoder.write_num(max_ordinal, offset);
3709 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3710 if max_ordinal == 0 {
3712 return Ok(());
3713 }
3714 depth.increment()?;
3715 let envelope_size = 8;
3716 let bytes_len = max_ordinal as usize * envelope_size;
3717 #[allow(unused_variables)]
3718 let offset = encoder.out_of_line_offset(bytes_len);
3719 let mut _prev_end_offset: usize = 0;
3720 if 1 > max_ordinal {
3721 return Ok(());
3722 }
3723
3724 let cur_offset: usize = (1 - 1) * envelope_size;
3727
3728 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3730
3731 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3736 self.id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3737 encoder,
3738 offset + cur_offset,
3739 depth,
3740 )?;
3741
3742 _prev_end_offset = cur_offset + envelope_size;
3743 if 2 > max_ordinal {
3744 return Ok(());
3745 }
3746
3747 let cur_offset: usize = (2 - 1) * envelope_size;
3750
3751 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3753
3754 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u64>, D>(
3759 self.parent_ids.as_ref().map(<fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow),
3760 encoder, offset + cur_offset, depth
3761 )?;
3762
3763 _prev_end_offset = cur_offset + envelope_size;
3764 if 3 > max_ordinal {
3765 return Ok(());
3766 }
3767
3768 let cur_offset: usize = (3 - 1) * envelope_size;
3771
3772 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3774
3775 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u64>, D>(
3780 self.child_ids.as_ref().map(<fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow),
3781 encoder, offset + cur_offset, depth
3782 )?;
3783
3784 _prev_end_offset = cur_offset + envelope_size;
3785 if 4 > max_ordinal {
3786 return Ok(());
3787 }
3788
3789 let cur_offset: usize = (4 - 1) * envelope_size;
3792
3793 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3795
3796 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3801 self.driver_host_koid
3802 .as_ref()
3803 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3804 encoder,
3805 offset + cur_offset,
3806 depth,
3807 )?;
3808
3809 _prev_end_offset = cur_offset + envelope_size;
3810 if 5 > max_ordinal {
3811 return Ok(());
3812 }
3813
3814 let cur_offset: usize = (5 - 1) * envelope_size;
3817
3818 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3820
3821 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
3826 self.bound_driver_url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
3827 encoder, offset + cur_offset, depth
3828 )?;
3829
3830 _prev_end_offset = cur_offset + envelope_size;
3831 if 7 > max_ordinal {
3832 return Ok(());
3833 }
3834
3835 let cur_offset: usize = (7 - 1) * envelope_size;
3838
3839 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3841
3842 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
3847 self.moniker.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
3848 encoder, offset + cur_offset, depth
3849 )?;
3850
3851 _prev_end_offset = cur_offset + envelope_size;
3852 if 8 > max_ordinal {
3853 return Ok(());
3854 }
3855
3856 let cur_offset: usize = (8 - 1) * envelope_size;
3859
3860 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3862
3863 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty, 64>, D>(
3868 self.node_property_list.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
3869 encoder, offset + cur_offset, depth
3870 )?;
3871
3872 _prev_end_offset = cur_offset + envelope_size;
3873 if 9 > max_ordinal {
3874 return Ok(());
3875 }
3876
3877 let cur_offset: usize = (9 - 1) * envelope_size;
3880
3881 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3883
3884 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl_common::Offer>, D>(
3889 self.offer_list.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl_common::Offer> as fidl::encoding::ValueTypeMarker>::borrow),
3890 encoder, offset + cur_offset, depth
3891 )?;
3892
3893 _prev_end_offset = cur_offset + envelope_size;
3894 if 10 > max_ordinal {
3895 return Ok(());
3896 }
3897
3898 let cur_offset: usize = (10 - 1) * envelope_size;
3901
3902 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3904
3905 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3910 self.quarantined.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3911 encoder,
3912 offset + cur_offset,
3913 depth,
3914 )?;
3915
3916 _prev_end_offset = cur_offset + envelope_size;
3917 if 11 > max_ordinal {
3918 return Ok(());
3919 }
3920
3921 let cur_offset: usize = (11 - 1) * envelope_size;
3924
3925 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3927
3928 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::BusInfo, 20>, D>(
3933 self.bus_topology.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::BusInfo, 20> as fidl::encoding::ValueTypeMarker>::borrow),
3934 encoder, offset + cur_offset, depth
3935 )?;
3936
3937 _prev_end_offset = cur_offset + envelope_size;
3938 if 12 > max_ordinal {
3939 return Ok(());
3940 }
3941
3942 let cur_offset: usize = (12 - 1) * envelope_size;
3945
3946 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3948
3949 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
3954 self.topological_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
3955 encoder, offset + cur_offset, depth
3956 )?;
3957
3958 _prev_end_offset = cur_offset + envelope_size;
3959
3960 Ok(())
3961 }
3962 }
3963
3964 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeInfo {
3965 #[inline(always)]
3966 fn new_empty() -> Self {
3967 Self::default()
3968 }
3969
3970 unsafe fn decode(
3971 &mut self,
3972 decoder: &mut fidl::encoding::Decoder<'_, D>,
3973 offset: usize,
3974 mut depth: fidl::encoding::Depth,
3975 ) -> fidl::Result<()> {
3976 decoder.debug_check_bounds::<Self>(offset);
3977 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3978 None => return Err(fidl::Error::NotNullable),
3979 Some(len) => len,
3980 };
3981 if len == 0 {
3983 return Ok(());
3984 };
3985 depth.increment()?;
3986 let envelope_size = 8;
3987 let bytes_len = len * envelope_size;
3988 let offset = decoder.out_of_line_offset(bytes_len)?;
3989 let mut _next_ordinal_to_read = 0;
3991 let mut next_offset = offset;
3992 let end_offset = offset + bytes_len;
3993 _next_ordinal_to_read += 1;
3994 if next_offset >= end_offset {
3995 return Ok(());
3996 }
3997
3998 while _next_ordinal_to_read < 1 {
4000 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4001 _next_ordinal_to_read += 1;
4002 next_offset += envelope_size;
4003 }
4004
4005 let next_out_of_line = decoder.next_out_of_line();
4006 let handles_before = decoder.remaining_handles();
4007 if let Some((inlined, num_bytes, num_handles)) =
4008 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4009 {
4010 let member_inline_size =
4011 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4012 if inlined != (member_inline_size <= 4) {
4013 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4014 }
4015 let inner_offset;
4016 let mut inner_depth = depth.clone();
4017 if inlined {
4018 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4019 inner_offset = next_offset;
4020 } else {
4021 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4022 inner_depth.increment()?;
4023 }
4024 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u64, D));
4025 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4026 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4027 {
4028 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4029 }
4030 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4031 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4032 }
4033 }
4034
4035 next_offset += envelope_size;
4036 _next_ordinal_to_read += 1;
4037 if next_offset >= end_offset {
4038 return Ok(());
4039 }
4040
4041 while _next_ordinal_to_read < 2 {
4043 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4044 _next_ordinal_to_read += 1;
4045 next_offset += envelope_size;
4046 }
4047
4048 let next_out_of_line = decoder.next_out_of_line();
4049 let handles_before = decoder.remaining_handles();
4050 if let Some((inlined, num_bytes, num_handles)) =
4051 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4052 {
4053 let member_inline_size = <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4054 if inlined != (member_inline_size <= 4) {
4055 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4056 }
4057 let inner_offset;
4058 let mut inner_depth = depth.clone();
4059 if inlined {
4060 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4061 inner_offset = next_offset;
4062 } else {
4063 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4064 inner_depth.increment()?;
4065 }
4066 let val_ref = self.parent_ids.get_or_insert_with(|| {
4067 fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D)
4068 });
4069 fidl::decode!(
4070 fidl::encoding::UnboundedVector<u64>,
4071 D,
4072 val_ref,
4073 decoder,
4074 inner_offset,
4075 inner_depth
4076 )?;
4077 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4078 {
4079 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4080 }
4081 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4082 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4083 }
4084 }
4085
4086 next_offset += envelope_size;
4087 _next_ordinal_to_read += 1;
4088 if next_offset >= end_offset {
4089 return Ok(());
4090 }
4091
4092 while _next_ordinal_to_read < 3 {
4094 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4095 _next_ordinal_to_read += 1;
4096 next_offset += envelope_size;
4097 }
4098
4099 let next_out_of_line = decoder.next_out_of_line();
4100 let handles_before = decoder.remaining_handles();
4101 if let Some((inlined, num_bytes, num_handles)) =
4102 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4103 {
4104 let member_inline_size = <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4105 if inlined != (member_inline_size <= 4) {
4106 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4107 }
4108 let inner_offset;
4109 let mut inner_depth = depth.clone();
4110 if inlined {
4111 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4112 inner_offset = next_offset;
4113 } else {
4114 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4115 inner_depth.increment()?;
4116 }
4117 let val_ref = self.child_ids.get_or_insert_with(|| {
4118 fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D)
4119 });
4120 fidl::decode!(
4121 fidl::encoding::UnboundedVector<u64>,
4122 D,
4123 val_ref,
4124 decoder,
4125 inner_offset,
4126 inner_depth
4127 )?;
4128 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4129 {
4130 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4131 }
4132 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4133 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4134 }
4135 }
4136
4137 next_offset += envelope_size;
4138 _next_ordinal_to_read += 1;
4139 if next_offset >= end_offset {
4140 return Ok(());
4141 }
4142
4143 while _next_ordinal_to_read < 4 {
4145 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4146 _next_ordinal_to_read += 1;
4147 next_offset += envelope_size;
4148 }
4149
4150 let next_out_of_line = decoder.next_out_of_line();
4151 let handles_before = decoder.remaining_handles();
4152 if let Some((inlined, num_bytes, num_handles)) =
4153 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4154 {
4155 let member_inline_size =
4156 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4157 if inlined != (member_inline_size <= 4) {
4158 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4159 }
4160 let inner_offset;
4161 let mut inner_depth = depth.clone();
4162 if inlined {
4163 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4164 inner_offset = next_offset;
4165 } else {
4166 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4167 inner_depth.increment()?;
4168 }
4169 let val_ref = self.driver_host_koid.get_or_insert_with(|| fidl::new_empty!(u64, D));
4170 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4171 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4172 {
4173 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4174 }
4175 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4176 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4177 }
4178 }
4179
4180 next_offset += envelope_size;
4181 _next_ordinal_to_read += 1;
4182 if next_offset >= end_offset {
4183 return Ok(());
4184 }
4185
4186 while _next_ordinal_to_read < 5 {
4188 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4189 _next_ordinal_to_read += 1;
4190 next_offset += envelope_size;
4191 }
4192
4193 let next_out_of_line = decoder.next_out_of_line();
4194 let handles_before = decoder.remaining_handles();
4195 if let Some((inlined, num_bytes, num_handles)) =
4196 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4197 {
4198 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4199 if inlined != (member_inline_size <= 4) {
4200 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4201 }
4202 let inner_offset;
4203 let mut inner_depth = depth.clone();
4204 if inlined {
4205 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4206 inner_offset = next_offset;
4207 } else {
4208 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4209 inner_depth.increment()?;
4210 }
4211 let val_ref = self.bound_driver_url.get_or_insert_with(|| {
4212 fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
4213 });
4214 fidl::decode!(
4215 fidl::encoding::BoundedString<4096>,
4216 D,
4217 val_ref,
4218 decoder,
4219 inner_offset,
4220 inner_depth
4221 )?;
4222 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4223 {
4224 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4225 }
4226 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4227 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4228 }
4229 }
4230
4231 next_offset += envelope_size;
4232 _next_ordinal_to_read += 1;
4233 if next_offset >= end_offset {
4234 return Ok(());
4235 }
4236
4237 while _next_ordinal_to_read < 7 {
4239 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4240 _next_ordinal_to_read += 1;
4241 next_offset += envelope_size;
4242 }
4243
4244 let next_out_of_line = decoder.next_out_of_line();
4245 let handles_before = decoder.remaining_handles();
4246 if let Some((inlined, num_bytes, num_handles)) =
4247 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4248 {
4249 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4250 if inlined != (member_inline_size <= 4) {
4251 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4252 }
4253 let inner_offset;
4254 let mut inner_depth = depth.clone();
4255 if inlined {
4256 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4257 inner_offset = next_offset;
4258 } else {
4259 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4260 inner_depth.increment()?;
4261 }
4262 let val_ref = self.moniker.get_or_insert_with(|| {
4263 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
4264 });
4265 fidl::decode!(
4266 fidl::encoding::BoundedString<1024>,
4267 D,
4268 val_ref,
4269 decoder,
4270 inner_offset,
4271 inner_depth
4272 )?;
4273 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4274 {
4275 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4276 }
4277 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4278 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4279 }
4280 }
4281
4282 next_offset += envelope_size;
4283 _next_ordinal_to_read += 1;
4284 if next_offset >= end_offset {
4285 return Ok(());
4286 }
4287
4288 while _next_ordinal_to_read < 8 {
4290 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4291 _next_ordinal_to_read += 1;
4292 next_offset += envelope_size;
4293 }
4294
4295 let next_out_of_line = decoder.next_out_of_line();
4296 let handles_before = decoder.remaining_handles();
4297 if let Some((inlined, num_bytes, num_handles)) =
4298 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4299 {
4300 let member_inline_size = <fidl::encoding::Vector<
4301 fidl_fuchsia_driver_framework_common::NodeProperty,
4302 64,
4303 > as fidl::encoding::TypeMarker>::inline_size(
4304 decoder.context
4305 );
4306 if inlined != (member_inline_size <= 4) {
4307 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4308 }
4309 let inner_offset;
4310 let mut inner_depth = depth.clone();
4311 if inlined {
4312 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4313 inner_offset = next_offset;
4314 } else {
4315 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4316 inner_depth.increment()?;
4317 }
4318 let val_ref =
4319 self.node_property_list.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty, 64>, D));
4320 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
4321 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4322 {
4323 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4324 }
4325 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4326 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4327 }
4328 }
4329
4330 next_offset += envelope_size;
4331 _next_ordinal_to_read += 1;
4332 if next_offset >= end_offset {
4333 return Ok(());
4334 }
4335
4336 while _next_ordinal_to_read < 9 {
4338 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4339 _next_ordinal_to_read += 1;
4340 next_offset += envelope_size;
4341 }
4342
4343 let next_out_of_line = decoder.next_out_of_line();
4344 let handles_before = decoder.remaining_handles();
4345 if let Some((inlined, num_bytes, num_handles)) =
4346 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4347 {
4348 let member_inline_size = <fidl::encoding::UnboundedVector<
4349 fidl_fuchsia_component_decl_common::Offer,
4350 > as fidl::encoding::TypeMarker>::inline_size(
4351 decoder.context
4352 );
4353 if inlined != (member_inline_size <= 4) {
4354 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4355 }
4356 let inner_offset;
4357 let mut inner_depth = depth.clone();
4358 if inlined {
4359 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4360 inner_offset = next_offset;
4361 } else {
4362 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4363 inner_depth.increment()?;
4364 }
4365 let val_ref = self.offer_list.get_or_insert_with(|| {
4366 fidl::new_empty!(
4367 fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl_common::Offer>,
4368 D
4369 )
4370 });
4371 fidl::decode!(
4372 fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl_common::Offer>,
4373 D,
4374 val_ref,
4375 decoder,
4376 inner_offset,
4377 inner_depth
4378 )?;
4379 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4380 {
4381 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4382 }
4383 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4384 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4385 }
4386 }
4387
4388 next_offset += envelope_size;
4389 _next_ordinal_to_read += 1;
4390 if next_offset >= end_offset {
4391 return Ok(());
4392 }
4393
4394 while _next_ordinal_to_read < 10 {
4396 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4397 _next_ordinal_to_read += 1;
4398 next_offset += envelope_size;
4399 }
4400
4401 let next_out_of_line = decoder.next_out_of_line();
4402 let handles_before = decoder.remaining_handles();
4403 if let Some((inlined, num_bytes, num_handles)) =
4404 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4405 {
4406 let member_inline_size =
4407 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4408 if inlined != (member_inline_size <= 4) {
4409 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4410 }
4411 let inner_offset;
4412 let mut inner_depth = depth.clone();
4413 if inlined {
4414 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4415 inner_offset = next_offset;
4416 } else {
4417 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4418 inner_depth.increment()?;
4419 }
4420 let val_ref = self.quarantined.get_or_insert_with(|| fidl::new_empty!(bool, D));
4421 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4422 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4423 {
4424 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4425 }
4426 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4427 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4428 }
4429 }
4430
4431 next_offset += envelope_size;
4432 _next_ordinal_to_read += 1;
4433 if next_offset >= end_offset {
4434 return Ok(());
4435 }
4436
4437 while _next_ordinal_to_read < 11 {
4439 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4440 _next_ordinal_to_read += 1;
4441 next_offset += envelope_size;
4442 }
4443
4444 let next_out_of_line = decoder.next_out_of_line();
4445 let handles_before = decoder.remaining_handles();
4446 if let Some((inlined, num_bytes, num_handles)) =
4447 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4448 {
4449 let member_inline_size = <fidl::encoding::Vector<
4450 fidl_fuchsia_driver_framework_common::BusInfo,
4451 20,
4452 > as fidl::encoding::TypeMarker>::inline_size(
4453 decoder.context
4454 );
4455 if inlined != (member_inline_size <= 4) {
4456 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4457 }
4458 let inner_offset;
4459 let mut inner_depth = depth.clone();
4460 if inlined {
4461 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4462 inner_offset = next_offset;
4463 } else {
4464 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4465 inner_depth.increment()?;
4466 }
4467 let val_ref =
4468 self.bus_topology.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::BusInfo, 20>, D));
4469 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::BusInfo, 20>, D, val_ref, decoder, inner_offset, inner_depth)?;
4470 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4471 {
4472 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4473 }
4474 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4475 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4476 }
4477 }
4478
4479 next_offset += envelope_size;
4480 _next_ordinal_to_read += 1;
4481 if next_offset >= end_offset {
4482 return Ok(());
4483 }
4484
4485 while _next_ordinal_to_read < 12 {
4487 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4488 _next_ordinal_to_read += 1;
4489 next_offset += envelope_size;
4490 }
4491
4492 let next_out_of_line = decoder.next_out_of_line();
4493 let handles_before = decoder.remaining_handles();
4494 if let Some((inlined, num_bytes, num_handles)) =
4495 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4496 {
4497 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4498 if inlined != (member_inline_size <= 4) {
4499 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4500 }
4501 let inner_offset;
4502 let mut inner_depth = depth.clone();
4503 if inlined {
4504 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4505 inner_offset = next_offset;
4506 } else {
4507 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4508 inner_depth.increment()?;
4509 }
4510 let val_ref = self.topological_path.get_or_insert_with(|| {
4511 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
4512 });
4513 fidl::decode!(
4514 fidl::encoding::BoundedString<1024>,
4515 D,
4516 val_ref,
4517 decoder,
4518 inner_offset,
4519 inner_depth
4520 )?;
4521 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4522 {
4523 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4524 }
4525 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4526 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4527 }
4528 }
4529
4530 next_offset += envelope_size;
4531
4532 while next_offset < end_offset {
4534 _next_ordinal_to_read += 1;
4535 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4536 next_offset += envelope_size;
4537 }
4538
4539 Ok(())
4540 }
4541 }
4542
4543 impl TestNodeAddArgs {
4544 #[inline(always)]
4545 fn max_ordinal_present(&self) -> u64 {
4546 if let Some(_) = self.properties {
4547 return 2;
4548 }
4549 if let Some(_) = self.name {
4550 return 1;
4551 }
4552 0
4553 }
4554 }
4555
4556 impl fidl::encoding::ValueTypeMarker for TestNodeAddArgs {
4557 type Borrowed<'a> = &'a Self;
4558 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4559 value
4560 }
4561 }
4562
4563 unsafe impl fidl::encoding::TypeMarker for TestNodeAddArgs {
4564 type Owned = Self;
4565
4566 #[inline(always)]
4567 fn inline_align(_context: fidl::encoding::Context) -> usize {
4568 8
4569 }
4570
4571 #[inline(always)]
4572 fn inline_size(_context: fidl::encoding::Context) -> usize {
4573 16
4574 }
4575 }
4576
4577 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TestNodeAddArgs, D>
4578 for &TestNodeAddArgs
4579 {
4580 unsafe fn encode(
4581 self,
4582 encoder: &mut fidl::encoding::Encoder<'_, D>,
4583 offset: usize,
4584 mut depth: fidl::encoding::Depth,
4585 ) -> fidl::Result<()> {
4586 encoder.debug_check_bounds::<TestNodeAddArgs>(offset);
4587 let max_ordinal: u64 = self.max_ordinal_present();
4589 encoder.write_num(max_ordinal, offset);
4590 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4591 if max_ordinal == 0 {
4593 return Ok(());
4594 }
4595 depth.increment()?;
4596 let envelope_size = 8;
4597 let bytes_len = max_ordinal as usize * envelope_size;
4598 #[allow(unused_variables)]
4599 let offset = encoder.out_of_line_offset(bytes_len);
4600 let mut _prev_end_offset: usize = 0;
4601 if 1 > max_ordinal {
4602 return Ok(());
4603 }
4604
4605 let cur_offset: usize = (1 - 1) * envelope_size;
4608
4609 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4611
4612 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
4617 self.name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
4618 encoder, offset + cur_offset, depth
4619 )?;
4620
4621 _prev_end_offset = cur_offset + envelope_size;
4622 if 2 > max_ordinal {
4623 return Ok(());
4624 }
4625
4626 let cur_offset: usize = (2 - 1) * envelope_size;
4629
4630 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4632
4633 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty, 64>, D>(
4638 self.properties.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
4639 encoder, offset + cur_offset, depth
4640 )?;
4641
4642 _prev_end_offset = cur_offset + envelope_size;
4643
4644 Ok(())
4645 }
4646 }
4647
4648 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TestNodeAddArgs {
4649 #[inline(always)]
4650 fn new_empty() -> Self {
4651 Self::default()
4652 }
4653
4654 unsafe fn decode(
4655 &mut self,
4656 decoder: &mut fidl::encoding::Decoder<'_, D>,
4657 offset: usize,
4658 mut depth: fidl::encoding::Depth,
4659 ) -> fidl::Result<()> {
4660 decoder.debug_check_bounds::<Self>(offset);
4661 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4662 None => return Err(fidl::Error::NotNullable),
4663 Some(len) => len,
4664 };
4665 if len == 0 {
4667 return Ok(());
4668 };
4669 depth.increment()?;
4670 let envelope_size = 8;
4671 let bytes_len = len * envelope_size;
4672 let offset = decoder.out_of_line_offset(bytes_len)?;
4673 let mut _next_ordinal_to_read = 0;
4675 let mut next_offset = offset;
4676 let end_offset = offset + bytes_len;
4677 _next_ordinal_to_read += 1;
4678 if next_offset >= end_offset {
4679 return Ok(());
4680 }
4681
4682 while _next_ordinal_to_read < 1 {
4684 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4685 _next_ordinal_to_read += 1;
4686 next_offset += envelope_size;
4687 }
4688
4689 let next_out_of_line = decoder.next_out_of_line();
4690 let handles_before = decoder.remaining_handles();
4691 if let Some((inlined, num_bytes, num_handles)) =
4692 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4693 {
4694 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4695 if inlined != (member_inline_size <= 4) {
4696 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4697 }
4698 let inner_offset;
4699 let mut inner_depth = depth.clone();
4700 if inlined {
4701 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4702 inner_offset = next_offset;
4703 } else {
4704 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4705 inner_depth.increment()?;
4706 }
4707 let val_ref = self.name.get_or_insert_with(|| {
4708 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
4709 });
4710 fidl::decode!(
4711 fidl::encoding::BoundedString<1024>,
4712 D,
4713 val_ref,
4714 decoder,
4715 inner_offset,
4716 inner_depth
4717 )?;
4718 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4719 {
4720 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4721 }
4722 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4723 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4724 }
4725 }
4726
4727 next_offset += envelope_size;
4728 _next_ordinal_to_read += 1;
4729 if next_offset >= end_offset {
4730 return Ok(());
4731 }
4732
4733 while _next_ordinal_to_read < 2 {
4735 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4736 _next_ordinal_to_read += 1;
4737 next_offset += envelope_size;
4738 }
4739
4740 let next_out_of_line = decoder.next_out_of_line();
4741 let handles_before = decoder.remaining_handles();
4742 if let Some((inlined, num_bytes, num_handles)) =
4743 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4744 {
4745 let member_inline_size = <fidl::encoding::Vector<
4746 fidl_fuchsia_driver_framework_common::NodeProperty,
4747 64,
4748 > as fidl::encoding::TypeMarker>::inline_size(
4749 decoder.context
4750 );
4751 if inlined != (member_inline_size <= 4) {
4752 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4753 }
4754 let inner_offset;
4755 let mut inner_depth = depth.clone();
4756 if inlined {
4757 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4758 inner_offset = next_offset;
4759 } else {
4760 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4761 inner_depth.increment()?;
4762 }
4763 let val_ref =
4764 self.properties.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty, 64>, D));
4765 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
4766 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4767 {
4768 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4769 }
4770 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4771 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4772 }
4773 }
4774
4775 next_offset += envelope_size;
4776
4777 while next_offset < end_offset {
4779 _next_ordinal_to_read += 1;
4780 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4781 next_offset += envelope_size;
4782 }
4783
4784 Ok(())
4785 }
4786 }
4787
4788 impl ThreadInfo {
4789 #[inline(always)]
4790 fn max_ordinal_present(&self) -> u64 {
4791 if let Some(_) = self.scheduler_role {
4792 return 3;
4793 }
4794 if let Some(_) = self.name {
4795 return 2;
4796 }
4797 if let Some(_) = self.koid {
4798 return 1;
4799 }
4800 0
4801 }
4802 }
4803
4804 impl fidl::encoding::ValueTypeMarker for ThreadInfo {
4805 type Borrowed<'a> = &'a Self;
4806 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4807 value
4808 }
4809 }
4810
4811 unsafe impl fidl::encoding::TypeMarker for ThreadInfo {
4812 type Owned = Self;
4813
4814 #[inline(always)]
4815 fn inline_align(_context: fidl::encoding::Context) -> usize {
4816 8
4817 }
4818
4819 #[inline(always)]
4820 fn inline_size(_context: fidl::encoding::Context) -> usize {
4821 16
4822 }
4823 }
4824
4825 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ThreadInfo, D>
4826 for &ThreadInfo
4827 {
4828 unsafe fn encode(
4829 self,
4830 encoder: &mut fidl::encoding::Encoder<'_, D>,
4831 offset: usize,
4832 mut depth: fidl::encoding::Depth,
4833 ) -> fidl::Result<()> {
4834 encoder.debug_check_bounds::<ThreadInfo>(offset);
4835 let max_ordinal: u64 = self.max_ordinal_present();
4837 encoder.write_num(max_ordinal, offset);
4838 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4839 if max_ordinal == 0 {
4841 return Ok(());
4842 }
4843 depth.increment()?;
4844 let envelope_size = 8;
4845 let bytes_len = max_ordinal as usize * envelope_size;
4846 #[allow(unused_variables)]
4847 let offset = encoder.out_of_line_offset(bytes_len);
4848 let mut _prev_end_offset: usize = 0;
4849 if 1 > max_ordinal {
4850 return Ok(());
4851 }
4852
4853 let cur_offset: usize = (1 - 1) * envelope_size;
4856
4857 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4859
4860 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4865 self.koid.as_ref().map(<u64 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::UnboundedString, D>(
4888 self.name.as_ref().map(
4889 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4890 ),
4891 encoder,
4892 offset + cur_offset,
4893 depth,
4894 )?;
4895
4896 _prev_end_offset = cur_offset + envelope_size;
4897 if 3 > max_ordinal {
4898 return Ok(());
4899 }
4900
4901 let cur_offset: usize = (3 - 1) * envelope_size;
4904
4905 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4907
4908 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4913 self.scheduler_role.as_ref().map(
4914 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4915 ),
4916 encoder,
4917 offset + cur_offset,
4918 depth,
4919 )?;
4920
4921 _prev_end_offset = cur_offset + envelope_size;
4922
4923 Ok(())
4924 }
4925 }
4926
4927 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ThreadInfo {
4928 #[inline(always)]
4929 fn new_empty() -> Self {
4930 Self::default()
4931 }
4932
4933 unsafe fn decode(
4934 &mut self,
4935 decoder: &mut fidl::encoding::Decoder<'_, D>,
4936 offset: usize,
4937 mut depth: fidl::encoding::Depth,
4938 ) -> fidl::Result<()> {
4939 decoder.debug_check_bounds::<Self>(offset);
4940 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4941 None => return Err(fidl::Error::NotNullable),
4942 Some(len) => len,
4943 };
4944 if len == 0 {
4946 return Ok(());
4947 };
4948 depth.increment()?;
4949 let envelope_size = 8;
4950 let bytes_len = len * envelope_size;
4951 let offset = decoder.out_of_line_offset(bytes_len)?;
4952 let mut _next_ordinal_to_read = 0;
4954 let mut next_offset = offset;
4955 let end_offset = offset + bytes_len;
4956 _next_ordinal_to_read += 1;
4957 if next_offset >= end_offset {
4958 return Ok(());
4959 }
4960
4961 while _next_ordinal_to_read < 1 {
4963 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4964 _next_ordinal_to_read += 1;
4965 next_offset += envelope_size;
4966 }
4967
4968 let next_out_of_line = decoder.next_out_of_line();
4969 let handles_before = decoder.remaining_handles();
4970 if let Some((inlined, num_bytes, num_handles)) =
4971 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4972 {
4973 let member_inline_size =
4974 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4975 if inlined != (member_inline_size <= 4) {
4976 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4977 }
4978 let inner_offset;
4979 let mut inner_depth = depth.clone();
4980 if inlined {
4981 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4982 inner_offset = next_offset;
4983 } else {
4984 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4985 inner_depth.increment()?;
4986 }
4987 let val_ref = self.koid.get_or_insert_with(|| fidl::new_empty!(u64, D));
4988 fidl::decode!(u64, 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 =
5017 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
5018 decoder.context,
5019 );
5020 if inlined != (member_inline_size <= 4) {
5021 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5022 }
5023 let inner_offset;
5024 let mut inner_depth = depth.clone();
5025 if inlined {
5026 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5027 inner_offset = next_offset;
5028 } else {
5029 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5030 inner_depth.increment()?;
5031 }
5032 let val_ref = self
5033 .name
5034 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
5035 fidl::decode!(
5036 fidl::encoding::UnboundedString,
5037 D,
5038 val_ref,
5039 decoder,
5040 inner_offset,
5041 inner_depth
5042 )?;
5043 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5044 {
5045 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5046 }
5047 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5048 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5049 }
5050 }
5051
5052 next_offset += envelope_size;
5053 _next_ordinal_to_read += 1;
5054 if next_offset >= end_offset {
5055 return Ok(());
5056 }
5057
5058 while _next_ordinal_to_read < 3 {
5060 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5061 _next_ordinal_to_read += 1;
5062 next_offset += envelope_size;
5063 }
5064
5065 let next_out_of_line = decoder.next_out_of_line();
5066 let handles_before = decoder.remaining_handles();
5067 if let Some((inlined, num_bytes, num_handles)) =
5068 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5069 {
5070 let member_inline_size =
5071 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
5072 decoder.context,
5073 );
5074 if inlined != (member_inline_size <= 4) {
5075 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5076 }
5077 let inner_offset;
5078 let mut inner_depth = depth.clone();
5079 if inlined {
5080 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5081 inner_offset = next_offset;
5082 } else {
5083 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5084 inner_depth.increment()?;
5085 }
5086 let val_ref = self
5087 .scheduler_role
5088 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
5089 fidl::decode!(
5090 fidl::encoding::UnboundedString,
5091 D,
5092 val_ref,
5093 decoder,
5094 inner_offset,
5095 inner_depth
5096 )?;
5097 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5098 {
5099 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5100 }
5101 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5102 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5103 }
5104 }
5105
5106 next_offset += envelope_size;
5107
5108 while next_offset < end_offset {
5110 _next_ordinal_to_read += 1;
5111 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5112 next_offset += envelope_size;
5113 }
5114
5115 Ok(())
5116 }
5117 }
5118
5119 impl fidl::encoding::ValueTypeMarker for CompositeInfo {
5120 type Borrowed<'a> = &'a Self;
5121 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5122 value
5123 }
5124 }
5125
5126 unsafe impl fidl::encoding::TypeMarker for CompositeInfo {
5127 type Owned = Self;
5128
5129 #[inline(always)]
5130 fn inline_align(_context: fidl::encoding::Context) -> usize {
5131 8
5132 }
5133
5134 #[inline(always)]
5135 fn inline_size(_context: fidl::encoding::Context) -> usize {
5136 16
5137 }
5138 }
5139
5140 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeInfo, D>
5141 for &CompositeInfo
5142 {
5143 #[inline]
5144 unsafe fn encode(
5145 self,
5146 encoder: &mut fidl::encoding::Encoder<'_, D>,
5147 offset: usize,
5148 _depth: fidl::encoding::Depth,
5149 ) -> fidl::Result<()> {
5150 encoder.debug_check_bounds::<CompositeInfo>(offset);
5151 encoder.write_num::<u64>(self.ordinal(), offset);
5152 match self {
5153 CompositeInfo::Composite(ref val) => {
5154 fidl::encoding::encode_in_envelope::<fidl_fuchsia_driver_framework_common::CompositeInfo, D>(
5155 <fidl_fuchsia_driver_framework_common::CompositeInfo as fidl::encoding::ValueTypeMarker>::borrow(val),
5156 encoder, offset + 8, _depth
5157 )
5158 }
5159 }
5160 }
5161 }
5162
5163 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeInfo {
5164 #[inline(always)]
5165 fn new_empty() -> Self {
5166 Self::Composite(fidl::new_empty!(
5167 fidl_fuchsia_driver_framework_common::CompositeInfo,
5168 D
5169 ))
5170 }
5171
5172 #[inline]
5173 unsafe fn decode(
5174 &mut self,
5175 decoder: &mut fidl::encoding::Decoder<'_, D>,
5176 offset: usize,
5177 mut depth: fidl::encoding::Depth,
5178 ) -> fidl::Result<()> {
5179 decoder.debug_check_bounds::<Self>(offset);
5180 #[allow(unused_variables)]
5181 let next_out_of_line = decoder.next_out_of_line();
5182 let handles_before = decoder.remaining_handles();
5183 let (ordinal, inlined, num_bytes, num_handles) =
5184 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
5185
5186 let member_inline_size = match ordinal {
5187 2 => <fidl_fuchsia_driver_framework_common::CompositeInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5188 _ => return Err(fidl::Error::UnknownUnionTag),
5189 };
5190
5191 if inlined != (member_inline_size <= 4) {
5192 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5193 }
5194 let _inner_offset;
5195 if inlined {
5196 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
5197 _inner_offset = offset + 8;
5198 } else {
5199 depth.increment()?;
5200 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5201 }
5202 match ordinal {
5203 2 => {
5204 #[allow(irrefutable_let_patterns)]
5205 if let CompositeInfo::Composite(_) = self {
5206 } else {
5208 *self = CompositeInfo::Composite(fidl::new_empty!(
5210 fidl_fuchsia_driver_framework_common::CompositeInfo,
5211 D
5212 ));
5213 }
5214 #[allow(irrefutable_let_patterns)]
5215 if let CompositeInfo::Composite(ref mut val) = self {
5216 fidl::decode!(
5217 fidl_fuchsia_driver_framework_common::CompositeInfo,
5218 D,
5219 val,
5220 decoder,
5221 _inner_offset,
5222 depth
5223 )?;
5224 } else {
5225 unreachable!()
5226 }
5227 }
5228 ordinal => panic!("unexpected ordinal {:?}", ordinal),
5229 }
5230 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
5231 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5232 }
5233 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5234 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5235 }
5236 Ok(())
5237 }
5238 }
5239}