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