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 (
745 <fidl::encoding::UnboundedVector<
746 fidl_fuchsia_driver_framework_common::DriverInfo,
747 > as fidl::encoding::ValueTypeMarker>::borrow(&self.drivers),
748 ),
749 encoder,
750 offset,
751 _depth,
752 )
753 }
754 }
755 unsafe impl<
756 D: fidl::encoding::ResourceDialect,
757 T0: fidl::encoding::Encode<
758 fidl::encoding::UnboundedVector<fidl_fuchsia_driver_framework_common::DriverInfo>,
759 D,
760 >,
761 > fidl::encoding::Encode<DriverInfoIteratorGetNextResponse, D> for (T0,)
762 {
763 #[inline]
764 unsafe fn encode(
765 self,
766 encoder: &mut fidl::encoding::Encoder<'_, D>,
767 offset: usize,
768 depth: fidl::encoding::Depth,
769 ) -> fidl::Result<()> {
770 encoder.debug_check_bounds::<DriverInfoIteratorGetNextResponse>(offset);
771 self.0.encode(encoder, offset + 0, depth)?;
775 Ok(())
776 }
777 }
778
779 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
780 for DriverInfoIteratorGetNextResponse
781 {
782 #[inline(always)]
783 fn new_empty() -> Self {
784 Self {
785 drivers: fidl::new_empty!(
786 fidl::encoding::UnboundedVector<
787 fidl_fuchsia_driver_framework_common::DriverInfo,
788 >,
789 D
790 ),
791 }
792 }
793
794 #[inline]
795 unsafe fn decode(
796 &mut self,
797 decoder: &mut fidl::encoding::Decoder<'_, D>,
798 offset: usize,
799 _depth: fidl::encoding::Depth,
800 ) -> fidl::Result<()> {
801 decoder.debug_check_bounds::<Self>(offset);
802 fidl::decode!(
804 fidl::encoding::UnboundedVector<fidl_fuchsia_driver_framework_common::DriverInfo>,
805 D,
806 &mut self.drivers,
807 decoder,
808 offset + 0,
809 _depth
810 )?;
811 Ok(())
812 }
813 }
814
815 impl fidl::encoding::ValueTypeMarker for ManagerAddTestNodeRequest {
816 type Borrowed<'a> = &'a Self;
817 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
818 value
819 }
820 }
821
822 unsafe impl fidl::encoding::TypeMarker for ManagerAddTestNodeRequest {
823 type Owned = Self;
824
825 #[inline(always)]
826 fn inline_align(_context: fidl::encoding::Context) -> usize {
827 8
828 }
829
830 #[inline(always)]
831 fn inline_size(_context: fidl::encoding::Context) -> usize {
832 16
833 }
834 }
835
836 unsafe impl<D: fidl::encoding::ResourceDialect>
837 fidl::encoding::Encode<ManagerAddTestNodeRequest, D> for &ManagerAddTestNodeRequest
838 {
839 #[inline]
840 unsafe fn encode(
841 self,
842 encoder: &mut fidl::encoding::Encoder<'_, D>,
843 offset: usize,
844 _depth: fidl::encoding::Depth,
845 ) -> fidl::Result<()> {
846 encoder.debug_check_bounds::<ManagerAddTestNodeRequest>(offset);
847 fidl::encoding::Encode::<ManagerAddTestNodeRequest, D>::encode(
849 (<TestNodeAddArgs as fidl::encoding::ValueTypeMarker>::borrow(&self.args),),
850 encoder,
851 offset,
852 _depth,
853 )
854 }
855 }
856 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<TestNodeAddArgs, D>>
857 fidl::encoding::Encode<ManagerAddTestNodeRequest, D> for (T0,)
858 {
859 #[inline]
860 unsafe fn encode(
861 self,
862 encoder: &mut fidl::encoding::Encoder<'_, D>,
863 offset: usize,
864 depth: fidl::encoding::Depth,
865 ) -> fidl::Result<()> {
866 encoder.debug_check_bounds::<ManagerAddTestNodeRequest>(offset);
867 self.0.encode(encoder, offset + 0, depth)?;
871 Ok(())
872 }
873 }
874
875 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
876 for ManagerAddTestNodeRequest
877 {
878 #[inline(always)]
879 fn new_empty() -> Self {
880 Self { args: fidl::new_empty!(TestNodeAddArgs, D) }
881 }
882
883 #[inline]
884 unsafe fn decode(
885 &mut self,
886 decoder: &mut fidl::encoding::Decoder<'_, D>,
887 offset: usize,
888 _depth: fidl::encoding::Depth,
889 ) -> fidl::Result<()> {
890 decoder.debug_check_bounds::<Self>(offset);
891 fidl::decode!(TestNodeAddArgs, D, &mut self.args, decoder, offset + 0, _depth)?;
893 Ok(())
894 }
895 }
896
897 impl fidl::encoding::ValueTypeMarker for ManagerDisableDriverRequest {
898 type Borrowed<'a> = &'a Self;
899 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
900 value
901 }
902 }
903
904 unsafe impl fidl::encoding::TypeMarker for ManagerDisableDriverRequest {
905 type Owned = Self;
906
907 #[inline(always)]
908 fn inline_align(_context: fidl::encoding::Context) -> usize {
909 8
910 }
911
912 #[inline(always)]
913 fn inline_size(_context: fidl::encoding::Context) -> usize {
914 32
915 }
916 }
917
918 unsafe impl<D: fidl::encoding::ResourceDialect>
919 fidl::encoding::Encode<ManagerDisableDriverRequest, D> for &ManagerDisableDriverRequest
920 {
921 #[inline]
922 unsafe fn encode(
923 self,
924 encoder: &mut fidl::encoding::Encoder<'_, D>,
925 offset: usize,
926 _depth: fidl::encoding::Depth,
927 ) -> fidl::Result<()> {
928 encoder.debug_check_bounds::<ManagerDisableDriverRequest>(offset);
929 fidl::encoding::Encode::<ManagerDisableDriverRequest, D>::encode(
931 (
932 <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_url),
933 <fidl::encoding::Optional<fidl::encoding::BoundedString<64>> as fidl::encoding::ValueTypeMarker>::borrow(&self.package_hash),
934 ),
935 encoder, offset, _depth
936 )
937 }
938 }
939 unsafe impl<
940 D: fidl::encoding::ResourceDialect,
941 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
942 T1: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<64>>, D>,
943 > fidl::encoding::Encode<ManagerDisableDriverRequest, D> for (T0, T1)
944 {
945 #[inline]
946 unsafe fn encode(
947 self,
948 encoder: &mut fidl::encoding::Encoder<'_, D>,
949 offset: usize,
950 depth: fidl::encoding::Depth,
951 ) -> fidl::Result<()> {
952 encoder.debug_check_bounds::<ManagerDisableDriverRequest>(offset);
953 self.0.encode(encoder, offset + 0, depth)?;
957 self.1.encode(encoder, offset + 16, depth)?;
958 Ok(())
959 }
960 }
961
962 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
963 for ManagerDisableDriverRequest
964 {
965 #[inline(always)]
966 fn new_empty() -> Self {
967 Self {
968 driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D),
969 package_hash: fidl::new_empty!(
970 fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
971 D
972 ),
973 }
974 }
975
976 #[inline]
977 unsafe fn decode(
978 &mut self,
979 decoder: &mut fidl::encoding::Decoder<'_, D>,
980 offset: usize,
981 _depth: fidl::encoding::Depth,
982 ) -> fidl::Result<()> {
983 decoder.debug_check_bounds::<Self>(offset);
984 fidl::decode!(
986 fidl::encoding::BoundedString<4096>,
987 D,
988 &mut self.driver_url,
989 decoder,
990 offset + 0,
991 _depth
992 )?;
993 fidl::decode!(
994 fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
995 D,
996 &mut self.package_hash,
997 decoder,
998 offset + 16,
999 _depth
1000 )?;
1001 Ok(())
1002 }
1003 }
1004
1005 impl fidl::encoding::ValueTypeMarker for ManagerEnableDriverRequest {
1006 type Borrowed<'a> = &'a Self;
1007 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1008 value
1009 }
1010 }
1011
1012 unsafe impl fidl::encoding::TypeMarker for ManagerEnableDriverRequest {
1013 type Owned = Self;
1014
1015 #[inline(always)]
1016 fn inline_align(_context: fidl::encoding::Context) -> usize {
1017 8
1018 }
1019
1020 #[inline(always)]
1021 fn inline_size(_context: fidl::encoding::Context) -> usize {
1022 32
1023 }
1024 }
1025
1026 unsafe impl<D: fidl::encoding::ResourceDialect>
1027 fidl::encoding::Encode<ManagerEnableDriverRequest, D> for &ManagerEnableDriverRequest
1028 {
1029 #[inline]
1030 unsafe fn encode(
1031 self,
1032 encoder: &mut fidl::encoding::Encoder<'_, D>,
1033 offset: usize,
1034 _depth: fidl::encoding::Depth,
1035 ) -> fidl::Result<()> {
1036 encoder.debug_check_bounds::<ManagerEnableDriverRequest>(offset);
1037 fidl::encoding::Encode::<ManagerEnableDriverRequest, D>::encode(
1039 (
1040 <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_url),
1041 <fidl::encoding::Optional<fidl::encoding::BoundedString<64>> as fidl::encoding::ValueTypeMarker>::borrow(&self.package_hash),
1042 ),
1043 encoder, offset, _depth
1044 )
1045 }
1046 }
1047 unsafe impl<
1048 D: fidl::encoding::ResourceDialect,
1049 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
1050 T1: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<64>>, D>,
1051 > fidl::encoding::Encode<ManagerEnableDriverRequest, D> for (T0, T1)
1052 {
1053 #[inline]
1054 unsafe fn encode(
1055 self,
1056 encoder: &mut fidl::encoding::Encoder<'_, D>,
1057 offset: usize,
1058 depth: fidl::encoding::Depth,
1059 ) -> fidl::Result<()> {
1060 encoder.debug_check_bounds::<ManagerEnableDriverRequest>(offset);
1061 self.0.encode(encoder, offset + 0, depth)?;
1065 self.1.encode(encoder, offset + 16, depth)?;
1066 Ok(())
1067 }
1068 }
1069
1070 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1071 for ManagerEnableDriverRequest
1072 {
1073 #[inline(always)]
1074 fn new_empty() -> Self {
1075 Self {
1076 driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D),
1077 package_hash: fidl::new_empty!(
1078 fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
1079 D
1080 ),
1081 }
1082 }
1083
1084 #[inline]
1085 unsafe fn decode(
1086 &mut self,
1087 decoder: &mut fidl::encoding::Decoder<'_, D>,
1088 offset: usize,
1089 _depth: fidl::encoding::Depth,
1090 ) -> fidl::Result<()> {
1091 decoder.debug_check_bounds::<Self>(offset);
1092 fidl::decode!(
1094 fidl::encoding::BoundedString<4096>,
1095 D,
1096 &mut self.driver_url,
1097 decoder,
1098 offset + 0,
1099 _depth
1100 )?;
1101 fidl::decode!(
1102 fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
1103 D,
1104 &mut self.package_hash,
1105 decoder,
1106 offset + 16,
1107 _depth
1108 )?;
1109 Ok(())
1110 }
1111 }
1112
1113 impl fidl::encoding::ValueTypeMarker for ManagerRebindCompositesWithDriverRequest {
1114 type Borrowed<'a> = &'a Self;
1115 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1116 value
1117 }
1118 }
1119
1120 unsafe impl fidl::encoding::TypeMarker for ManagerRebindCompositesWithDriverRequest {
1121 type Owned = Self;
1122
1123 #[inline(always)]
1124 fn inline_align(_context: fidl::encoding::Context) -> usize {
1125 8
1126 }
1127
1128 #[inline(always)]
1129 fn inline_size(_context: fidl::encoding::Context) -> usize {
1130 16
1131 }
1132 }
1133
1134 unsafe impl<D: fidl::encoding::ResourceDialect>
1135 fidl::encoding::Encode<ManagerRebindCompositesWithDriverRequest, D>
1136 for &ManagerRebindCompositesWithDriverRequest
1137 {
1138 #[inline]
1139 unsafe fn encode(
1140 self,
1141 encoder: &mut fidl::encoding::Encoder<'_, D>,
1142 offset: usize,
1143 _depth: fidl::encoding::Depth,
1144 ) -> fidl::Result<()> {
1145 encoder.debug_check_bounds::<ManagerRebindCompositesWithDriverRequest>(offset);
1146 fidl::encoding::Encode::<ManagerRebindCompositesWithDriverRequest, D>::encode(
1148 (<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(
1149 &self.driver_url,
1150 ),),
1151 encoder,
1152 offset,
1153 _depth,
1154 )
1155 }
1156 }
1157 unsafe impl<
1158 D: fidl::encoding::ResourceDialect,
1159 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
1160 > fidl::encoding::Encode<ManagerRebindCompositesWithDriverRequest, D> for (T0,)
1161 {
1162 #[inline]
1163 unsafe fn encode(
1164 self,
1165 encoder: &mut fidl::encoding::Encoder<'_, D>,
1166 offset: usize,
1167 depth: fidl::encoding::Depth,
1168 ) -> fidl::Result<()> {
1169 encoder.debug_check_bounds::<ManagerRebindCompositesWithDriverRequest>(offset);
1170 self.0.encode(encoder, offset + 0, depth)?;
1174 Ok(())
1175 }
1176 }
1177
1178 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1179 for ManagerRebindCompositesWithDriverRequest
1180 {
1181 #[inline(always)]
1182 fn new_empty() -> Self {
1183 Self { driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D) }
1184 }
1185
1186 #[inline]
1187 unsafe fn decode(
1188 &mut self,
1189 decoder: &mut fidl::encoding::Decoder<'_, D>,
1190 offset: usize,
1191 _depth: fidl::encoding::Depth,
1192 ) -> fidl::Result<()> {
1193 decoder.debug_check_bounds::<Self>(offset);
1194 fidl::decode!(
1196 fidl::encoding::BoundedString<4096>,
1197 D,
1198 &mut self.driver_url,
1199 decoder,
1200 offset + 0,
1201 _depth
1202 )?;
1203 Ok(())
1204 }
1205 }
1206
1207 impl fidl::encoding::ValueTypeMarker for ManagerRemoveTestNodeRequest {
1208 type Borrowed<'a> = &'a Self;
1209 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1210 value
1211 }
1212 }
1213
1214 unsafe impl fidl::encoding::TypeMarker for ManagerRemoveTestNodeRequest {
1215 type Owned = Self;
1216
1217 #[inline(always)]
1218 fn inline_align(_context: fidl::encoding::Context) -> usize {
1219 8
1220 }
1221
1222 #[inline(always)]
1223 fn inline_size(_context: fidl::encoding::Context) -> usize {
1224 16
1225 }
1226 }
1227
1228 unsafe impl<D: fidl::encoding::ResourceDialect>
1229 fidl::encoding::Encode<ManagerRemoveTestNodeRequest, D> for &ManagerRemoveTestNodeRequest
1230 {
1231 #[inline]
1232 unsafe fn encode(
1233 self,
1234 encoder: &mut fidl::encoding::Encoder<'_, D>,
1235 offset: usize,
1236 _depth: fidl::encoding::Depth,
1237 ) -> fidl::Result<()> {
1238 encoder.debug_check_bounds::<ManagerRemoveTestNodeRequest>(offset);
1239 fidl::encoding::Encode::<ManagerRemoveTestNodeRequest, D>::encode(
1241 (<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow(
1242 &self.name,
1243 ),),
1244 encoder,
1245 offset,
1246 _depth,
1247 )
1248 }
1249 }
1250 unsafe impl<
1251 D: fidl::encoding::ResourceDialect,
1252 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<1024>, D>,
1253 > fidl::encoding::Encode<ManagerRemoveTestNodeRequest, D> for (T0,)
1254 {
1255 #[inline]
1256 unsafe fn encode(
1257 self,
1258 encoder: &mut fidl::encoding::Encoder<'_, D>,
1259 offset: usize,
1260 depth: fidl::encoding::Depth,
1261 ) -> fidl::Result<()> {
1262 encoder.debug_check_bounds::<ManagerRemoveTestNodeRequest>(offset);
1263 self.0.encode(encoder, offset + 0, depth)?;
1267 Ok(())
1268 }
1269 }
1270
1271 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1272 for ManagerRemoveTestNodeRequest
1273 {
1274 #[inline(always)]
1275 fn new_empty() -> Self {
1276 Self { name: fidl::new_empty!(fidl::encoding::BoundedString<1024>, D) }
1277 }
1278
1279 #[inline]
1280 unsafe fn decode(
1281 &mut self,
1282 decoder: &mut fidl::encoding::Decoder<'_, D>,
1283 offset: usize,
1284 _depth: fidl::encoding::Depth,
1285 ) -> fidl::Result<()> {
1286 decoder.debug_check_bounds::<Self>(offset);
1287 fidl::decode!(
1289 fidl::encoding::BoundedString<1024>,
1290 D,
1291 &mut self.name,
1292 decoder,
1293 offset + 0,
1294 _depth
1295 )?;
1296 Ok(())
1297 }
1298 }
1299
1300 impl fidl::encoding::ValueTypeMarker for ManagerRestartDriverHostsRequest {
1301 type Borrowed<'a> = &'a Self;
1302 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1303 value
1304 }
1305 }
1306
1307 unsafe impl fidl::encoding::TypeMarker for ManagerRestartDriverHostsRequest {
1308 type Owned = Self;
1309
1310 #[inline(always)]
1311 fn inline_align(_context: fidl::encoding::Context) -> usize {
1312 8
1313 }
1314
1315 #[inline(always)]
1316 fn inline_size(_context: fidl::encoding::Context) -> usize {
1317 24
1318 }
1319 }
1320
1321 unsafe impl<D: fidl::encoding::ResourceDialect>
1322 fidl::encoding::Encode<ManagerRestartDriverHostsRequest, D>
1323 for &ManagerRestartDriverHostsRequest
1324 {
1325 #[inline]
1326 unsafe fn encode(
1327 self,
1328 encoder: &mut fidl::encoding::Encoder<'_, D>,
1329 offset: usize,
1330 _depth: fidl::encoding::Depth,
1331 ) -> fidl::Result<()> {
1332 encoder.debug_check_bounds::<ManagerRestartDriverHostsRequest>(offset);
1333 fidl::encoding::Encode::<ManagerRestartDriverHostsRequest, D>::encode(
1335 (
1336 <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_url),
1337 <RestartRematchFlags as fidl::encoding::ValueTypeMarker>::borrow(&self.rematch_flags),
1338 ),
1339 encoder, offset, _depth
1340 )
1341 }
1342 }
1343 unsafe impl<
1344 D: fidl::encoding::ResourceDialect,
1345 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
1346 T1: fidl::encoding::Encode<RestartRematchFlags, D>,
1347 > fidl::encoding::Encode<ManagerRestartDriverHostsRequest, D> for (T0, T1)
1348 {
1349 #[inline]
1350 unsafe fn encode(
1351 self,
1352 encoder: &mut fidl::encoding::Encoder<'_, D>,
1353 offset: usize,
1354 depth: fidl::encoding::Depth,
1355 ) -> fidl::Result<()> {
1356 encoder.debug_check_bounds::<ManagerRestartDriverHostsRequest>(offset);
1357 unsafe {
1360 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
1361 (ptr as *mut u64).write_unaligned(0);
1362 }
1363 self.0.encode(encoder, offset + 0, depth)?;
1365 self.1.encode(encoder, offset + 16, depth)?;
1366 Ok(())
1367 }
1368 }
1369
1370 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1371 for ManagerRestartDriverHostsRequest
1372 {
1373 #[inline(always)]
1374 fn new_empty() -> Self {
1375 Self {
1376 driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D),
1377 rematch_flags: fidl::new_empty!(RestartRematchFlags, D),
1378 }
1379 }
1380
1381 #[inline]
1382 unsafe fn decode(
1383 &mut self,
1384 decoder: &mut fidl::encoding::Decoder<'_, D>,
1385 offset: usize,
1386 _depth: fidl::encoding::Depth,
1387 ) -> fidl::Result<()> {
1388 decoder.debug_check_bounds::<Self>(offset);
1389 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
1391 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1392 let mask = 0xffffffff00000000u64;
1393 let maskedval = padval & mask;
1394 if maskedval != 0 {
1395 return Err(fidl::Error::NonZeroPadding {
1396 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
1397 });
1398 }
1399 fidl::decode!(
1400 fidl::encoding::BoundedString<4096>,
1401 D,
1402 &mut self.driver_url,
1403 decoder,
1404 offset + 0,
1405 _depth
1406 )?;
1407 fidl::decode!(
1408 RestartRematchFlags,
1409 D,
1410 &mut self.rematch_flags,
1411 decoder,
1412 offset + 16,
1413 _depth
1414 )?;
1415 Ok(())
1416 }
1417 }
1418
1419 impl fidl::encoding::ValueTypeMarker for ManagerBindAllUnboundNodes2Response {
1420 type Borrowed<'a> = &'a Self;
1421 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1422 value
1423 }
1424 }
1425
1426 unsafe impl fidl::encoding::TypeMarker for ManagerBindAllUnboundNodes2Response {
1427 type Owned = Self;
1428
1429 #[inline(always)]
1430 fn inline_align(_context: fidl::encoding::Context) -> usize {
1431 8
1432 }
1433
1434 #[inline(always)]
1435 fn inline_size(_context: fidl::encoding::Context) -> usize {
1436 16
1437 }
1438 }
1439
1440 unsafe impl<D: fidl::encoding::ResourceDialect>
1441 fidl::encoding::Encode<ManagerBindAllUnboundNodes2Response, D>
1442 for &ManagerBindAllUnboundNodes2Response
1443 {
1444 #[inline]
1445 unsafe fn encode(
1446 self,
1447 encoder: &mut fidl::encoding::Encoder<'_, D>,
1448 offset: usize,
1449 _depth: fidl::encoding::Depth,
1450 ) -> fidl::Result<()> {
1451 encoder.debug_check_bounds::<ManagerBindAllUnboundNodes2Response>(offset);
1452 fidl::encoding::Encode::<ManagerBindAllUnboundNodes2Response, D>::encode(
1454 (
1455 <fidl::encoding::Vector<NodeBindingInfo, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.binding_result),
1456 ),
1457 encoder, offset, _depth
1458 )
1459 }
1460 }
1461 unsafe impl<
1462 D: fidl::encoding::ResourceDialect,
1463 T0: fidl::encoding::Encode<fidl::encoding::Vector<NodeBindingInfo, 256>, D>,
1464 > fidl::encoding::Encode<ManagerBindAllUnboundNodes2Response, D> for (T0,)
1465 {
1466 #[inline]
1467 unsafe fn encode(
1468 self,
1469 encoder: &mut fidl::encoding::Encoder<'_, D>,
1470 offset: usize,
1471 depth: fidl::encoding::Depth,
1472 ) -> fidl::Result<()> {
1473 encoder.debug_check_bounds::<ManagerBindAllUnboundNodes2Response>(offset);
1474 self.0.encode(encoder, offset + 0, depth)?;
1478 Ok(())
1479 }
1480 }
1481
1482 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1483 for ManagerBindAllUnboundNodes2Response
1484 {
1485 #[inline(always)]
1486 fn new_empty() -> Self {
1487 Self {
1488 binding_result: fidl::new_empty!(fidl::encoding::Vector<NodeBindingInfo, 256>, D),
1489 }
1490 }
1491
1492 #[inline]
1493 unsafe fn decode(
1494 &mut self,
1495 decoder: &mut fidl::encoding::Decoder<'_, D>,
1496 offset: usize,
1497 _depth: fidl::encoding::Depth,
1498 ) -> fidl::Result<()> {
1499 decoder.debug_check_bounds::<Self>(offset);
1500 fidl::decode!(fidl::encoding::Vector<NodeBindingInfo, 256>, D, &mut self.binding_result, decoder, offset + 0, _depth)?;
1502 Ok(())
1503 }
1504 }
1505
1506 impl fidl::encoding::ValueTypeMarker for ManagerBindAllUnboundNodesResponse {
1507 type Borrowed<'a> = &'a Self;
1508 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1509 value
1510 }
1511 }
1512
1513 unsafe impl fidl::encoding::TypeMarker for ManagerBindAllUnboundNodesResponse {
1514 type Owned = Self;
1515
1516 #[inline(always)]
1517 fn inline_align(_context: fidl::encoding::Context) -> usize {
1518 8
1519 }
1520
1521 #[inline(always)]
1522 fn inline_size(_context: fidl::encoding::Context) -> usize {
1523 16
1524 }
1525 }
1526
1527 unsafe impl<D: fidl::encoding::ResourceDialect>
1528 fidl::encoding::Encode<ManagerBindAllUnboundNodesResponse, D>
1529 for &ManagerBindAllUnboundNodesResponse
1530 {
1531 #[inline]
1532 unsafe fn encode(
1533 self,
1534 encoder: &mut fidl::encoding::Encoder<'_, D>,
1535 offset: usize,
1536 _depth: fidl::encoding::Depth,
1537 ) -> fidl::Result<()> {
1538 encoder.debug_check_bounds::<ManagerBindAllUnboundNodesResponse>(offset);
1539 fidl::encoding::Encode::<ManagerBindAllUnboundNodesResponse, D>::encode(
1541 (
1542 <fidl::encoding::Vector<NodeBindingInfo, 10> as fidl::encoding::ValueTypeMarker>::borrow(&self.binding_result),
1543 ),
1544 encoder, offset, _depth
1545 )
1546 }
1547 }
1548 unsafe impl<
1549 D: fidl::encoding::ResourceDialect,
1550 T0: fidl::encoding::Encode<fidl::encoding::Vector<NodeBindingInfo, 10>, D>,
1551 > fidl::encoding::Encode<ManagerBindAllUnboundNodesResponse, D> for (T0,)
1552 {
1553 #[inline]
1554 unsafe fn encode(
1555 self,
1556 encoder: &mut fidl::encoding::Encoder<'_, D>,
1557 offset: usize,
1558 depth: fidl::encoding::Depth,
1559 ) -> fidl::Result<()> {
1560 encoder.debug_check_bounds::<ManagerBindAllUnboundNodesResponse>(offset);
1561 self.0.encode(encoder, offset + 0, depth)?;
1565 Ok(())
1566 }
1567 }
1568
1569 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1570 for ManagerBindAllUnboundNodesResponse
1571 {
1572 #[inline(always)]
1573 fn new_empty() -> Self {
1574 Self {
1575 binding_result: fidl::new_empty!(fidl::encoding::Vector<NodeBindingInfo, 10>, D),
1576 }
1577 }
1578
1579 #[inline]
1580 unsafe fn decode(
1581 &mut self,
1582 decoder: &mut fidl::encoding::Decoder<'_, D>,
1583 offset: usize,
1584 _depth: fidl::encoding::Depth,
1585 ) -> fidl::Result<()> {
1586 decoder.debug_check_bounds::<Self>(offset);
1587 fidl::decode!(fidl::encoding::Vector<NodeBindingInfo, 10>, D, &mut self.binding_result, decoder, offset + 0, _depth)?;
1589 Ok(())
1590 }
1591 }
1592
1593 impl fidl::encoding::ValueTypeMarker for ManagerRebindCompositesWithDriverResponse {
1594 type Borrowed<'a> = &'a Self;
1595 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1596 value
1597 }
1598 }
1599
1600 unsafe impl fidl::encoding::TypeMarker for ManagerRebindCompositesWithDriverResponse {
1601 type Owned = Self;
1602
1603 #[inline(always)]
1604 fn inline_align(_context: fidl::encoding::Context) -> usize {
1605 4
1606 }
1607
1608 #[inline(always)]
1609 fn inline_size(_context: fidl::encoding::Context) -> usize {
1610 4
1611 }
1612 #[inline(always)]
1613 fn encode_is_copy() -> bool {
1614 true
1615 }
1616
1617 #[inline(always)]
1618 fn decode_is_copy() -> bool {
1619 true
1620 }
1621 }
1622
1623 unsafe impl<D: fidl::encoding::ResourceDialect>
1624 fidl::encoding::Encode<ManagerRebindCompositesWithDriverResponse, D>
1625 for &ManagerRebindCompositesWithDriverResponse
1626 {
1627 #[inline]
1628 unsafe fn encode(
1629 self,
1630 encoder: &mut fidl::encoding::Encoder<'_, D>,
1631 offset: usize,
1632 _depth: fidl::encoding::Depth,
1633 ) -> fidl::Result<()> {
1634 encoder.debug_check_bounds::<ManagerRebindCompositesWithDriverResponse>(offset);
1635 unsafe {
1636 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1638 (buf_ptr as *mut ManagerRebindCompositesWithDriverResponse).write_unaligned(
1639 (self as *const ManagerRebindCompositesWithDriverResponse).read(),
1640 );
1641 }
1644 Ok(())
1645 }
1646 }
1647 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
1648 fidl::encoding::Encode<ManagerRebindCompositesWithDriverResponse, D> for (T0,)
1649 {
1650 #[inline]
1651 unsafe fn encode(
1652 self,
1653 encoder: &mut fidl::encoding::Encoder<'_, D>,
1654 offset: usize,
1655 depth: fidl::encoding::Depth,
1656 ) -> fidl::Result<()> {
1657 encoder.debug_check_bounds::<ManagerRebindCompositesWithDriverResponse>(offset);
1658 self.0.encode(encoder, offset + 0, depth)?;
1662 Ok(())
1663 }
1664 }
1665
1666 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1667 for ManagerRebindCompositesWithDriverResponse
1668 {
1669 #[inline(always)]
1670 fn new_empty() -> Self {
1671 Self { count: fidl::new_empty!(u32, D) }
1672 }
1673
1674 #[inline]
1675 unsafe fn decode(
1676 &mut self,
1677 decoder: &mut fidl::encoding::Decoder<'_, D>,
1678 offset: usize,
1679 _depth: fidl::encoding::Depth,
1680 ) -> fidl::Result<()> {
1681 decoder.debug_check_bounds::<Self>(offset);
1682 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1683 unsafe {
1686 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1687 }
1688 Ok(())
1689 }
1690 }
1691
1692 impl fidl::encoding::ValueTypeMarker for ManagerRestartDriverHostsResponse {
1693 type Borrowed<'a> = &'a Self;
1694 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1695 value
1696 }
1697 }
1698
1699 unsafe impl fidl::encoding::TypeMarker for ManagerRestartDriverHostsResponse {
1700 type Owned = Self;
1701
1702 #[inline(always)]
1703 fn inline_align(_context: fidl::encoding::Context) -> usize {
1704 4
1705 }
1706
1707 #[inline(always)]
1708 fn inline_size(_context: fidl::encoding::Context) -> usize {
1709 4
1710 }
1711 #[inline(always)]
1712 fn encode_is_copy() -> bool {
1713 true
1714 }
1715
1716 #[inline(always)]
1717 fn decode_is_copy() -> bool {
1718 true
1719 }
1720 }
1721
1722 unsafe impl<D: fidl::encoding::ResourceDialect>
1723 fidl::encoding::Encode<ManagerRestartDriverHostsResponse, D>
1724 for &ManagerRestartDriverHostsResponse
1725 {
1726 #[inline]
1727 unsafe fn encode(
1728 self,
1729 encoder: &mut fidl::encoding::Encoder<'_, D>,
1730 offset: usize,
1731 _depth: fidl::encoding::Depth,
1732 ) -> fidl::Result<()> {
1733 encoder.debug_check_bounds::<ManagerRestartDriverHostsResponse>(offset);
1734 unsafe {
1735 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1737 (buf_ptr as *mut ManagerRestartDriverHostsResponse)
1738 .write_unaligned((self as *const ManagerRestartDriverHostsResponse).read());
1739 }
1742 Ok(())
1743 }
1744 }
1745 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
1746 fidl::encoding::Encode<ManagerRestartDriverHostsResponse, D> for (T0,)
1747 {
1748 #[inline]
1749 unsafe fn encode(
1750 self,
1751 encoder: &mut fidl::encoding::Encoder<'_, D>,
1752 offset: usize,
1753 depth: fidl::encoding::Depth,
1754 ) -> fidl::Result<()> {
1755 encoder.debug_check_bounds::<ManagerRestartDriverHostsResponse>(offset);
1756 self.0.encode(encoder, offset + 0, depth)?;
1760 Ok(())
1761 }
1762 }
1763
1764 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1765 for ManagerRestartDriverHostsResponse
1766 {
1767 #[inline(always)]
1768 fn new_empty() -> Self {
1769 Self { count: fidl::new_empty!(u32, D) }
1770 }
1771
1772 #[inline]
1773 unsafe fn decode(
1774 &mut self,
1775 decoder: &mut fidl::encoding::Decoder<'_, D>,
1776 offset: usize,
1777 _depth: fidl::encoding::Depth,
1778 ) -> fidl::Result<()> {
1779 decoder.debug_check_bounds::<Self>(offset);
1780 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1781 unsafe {
1784 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1785 }
1786 Ok(())
1787 }
1788 }
1789
1790 impl fidl::encoding::ValueTypeMarker for NodeInfoIteratorGetNextResponse {
1791 type Borrowed<'a> = &'a Self;
1792 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1793 value
1794 }
1795 }
1796
1797 unsafe impl fidl::encoding::TypeMarker for NodeInfoIteratorGetNextResponse {
1798 type Owned = Self;
1799
1800 #[inline(always)]
1801 fn inline_align(_context: fidl::encoding::Context) -> usize {
1802 8
1803 }
1804
1805 #[inline(always)]
1806 fn inline_size(_context: fidl::encoding::Context) -> usize {
1807 16
1808 }
1809 }
1810
1811 unsafe impl<D: fidl::encoding::ResourceDialect>
1812 fidl::encoding::Encode<NodeInfoIteratorGetNextResponse, D>
1813 for &NodeInfoIteratorGetNextResponse
1814 {
1815 #[inline]
1816 unsafe fn encode(
1817 self,
1818 encoder: &mut fidl::encoding::Encoder<'_, D>,
1819 offset: usize,
1820 _depth: fidl::encoding::Depth,
1821 ) -> fidl::Result<()> {
1822 encoder.debug_check_bounds::<NodeInfoIteratorGetNextResponse>(offset);
1823 fidl::encoding::Encode::<NodeInfoIteratorGetNextResponse, D>::encode(
1825 (
1826 <fidl::encoding::UnboundedVector<NodeInfo> as fidl::encoding::ValueTypeMarker>::borrow(&self.nodes),
1827 ),
1828 encoder, offset, _depth
1829 )
1830 }
1831 }
1832 unsafe impl<
1833 D: fidl::encoding::ResourceDialect,
1834 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<NodeInfo>, D>,
1835 > fidl::encoding::Encode<NodeInfoIteratorGetNextResponse, D> for (T0,)
1836 {
1837 #[inline]
1838 unsafe fn encode(
1839 self,
1840 encoder: &mut fidl::encoding::Encoder<'_, D>,
1841 offset: usize,
1842 depth: fidl::encoding::Depth,
1843 ) -> fidl::Result<()> {
1844 encoder.debug_check_bounds::<NodeInfoIteratorGetNextResponse>(offset);
1845 self.0.encode(encoder, offset + 0, depth)?;
1849 Ok(())
1850 }
1851 }
1852
1853 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1854 for NodeInfoIteratorGetNextResponse
1855 {
1856 #[inline(always)]
1857 fn new_empty() -> Self {
1858 Self { nodes: fidl::new_empty!(fidl::encoding::UnboundedVector<NodeInfo>, D) }
1859 }
1860
1861 #[inline]
1862 unsafe fn decode(
1863 &mut self,
1864 decoder: &mut fidl::encoding::Decoder<'_, D>,
1865 offset: usize,
1866 _depth: fidl::encoding::Depth,
1867 ) -> fidl::Result<()> {
1868 decoder.debug_check_bounds::<Self>(offset);
1869 fidl::decode!(
1871 fidl::encoding::UnboundedVector<NodeInfo>,
1872 D,
1873 &mut self.nodes,
1874 decoder,
1875 offset + 0,
1876 _depth
1877 )?;
1878 Ok(())
1879 }
1880 }
1881
1882 impl CompositeNodeInfo {
1883 #[inline(always)]
1884 fn max_ordinal_present(&self) -> u64 {
1885 if let Some(_) = self.moniker {
1886 return 5;
1887 }
1888 if let Some(_) = self.parent_monikers {
1889 return 4;
1890 }
1891 if let Some(_) = self.composite {
1892 return 3;
1893 }
1894 if let Some(_) = self.topological_path {
1895 return 2;
1896 }
1897 if let Some(_) = self.parent_topological_paths {
1898 return 1;
1899 }
1900 0
1901 }
1902 }
1903
1904 impl fidl::encoding::ValueTypeMarker for CompositeNodeInfo {
1905 type Borrowed<'a> = &'a Self;
1906 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1907 value
1908 }
1909 }
1910
1911 unsafe impl fidl::encoding::TypeMarker for CompositeNodeInfo {
1912 type Owned = Self;
1913
1914 #[inline(always)]
1915 fn inline_align(_context: fidl::encoding::Context) -> usize {
1916 8
1917 }
1918
1919 #[inline(always)]
1920 fn inline_size(_context: fidl::encoding::Context) -> usize {
1921 16
1922 }
1923 }
1924
1925 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeNodeInfo, D>
1926 for &CompositeNodeInfo
1927 {
1928 unsafe fn encode(
1929 self,
1930 encoder: &mut fidl::encoding::Encoder<'_, D>,
1931 offset: usize,
1932 mut depth: fidl::encoding::Depth,
1933 ) -> fidl::Result<()> {
1934 encoder.debug_check_bounds::<CompositeNodeInfo>(offset);
1935 let max_ordinal: u64 = self.max_ordinal_present();
1937 encoder.write_num(max_ordinal, offset);
1938 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1939 if max_ordinal == 0 {
1941 return Ok(());
1942 }
1943 depth.increment()?;
1944 let envelope_size = 8;
1945 let bytes_len = max_ordinal as usize * envelope_size;
1946 #[allow(unused_variables)]
1947 let offset = encoder.out_of_line_offset(bytes_len);
1948 let mut _prev_end_offset: usize = 0;
1949 if 1 > max_ordinal {
1950 return Ok(());
1951 }
1952
1953 let cur_offset: usize = (1 - 1) * envelope_size;
1956
1957 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1959
1960 fidl::encoding::encode_in_envelope_optional::<
1965 fidl::encoding::UnboundedVector<
1966 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
1967 >,
1968 D,
1969 >(
1970 self.parent_topological_paths.as_ref().map(
1971 <fidl::encoding::UnboundedVector<
1972 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
1973 > as fidl::encoding::ValueTypeMarker>::borrow,
1974 ),
1975 encoder,
1976 offset + cur_offset,
1977 depth,
1978 )?;
1979
1980 _prev_end_offset = cur_offset + envelope_size;
1981 if 2 > max_ordinal {
1982 return Ok(());
1983 }
1984
1985 let cur_offset: usize = (2 - 1) * envelope_size;
1988
1989 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1991
1992 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
1997 self.topological_path.as_ref().map(
1998 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
1999 ),
2000 encoder,
2001 offset + cur_offset,
2002 depth,
2003 )?;
2004
2005 _prev_end_offset = cur_offset + envelope_size;
2006 if 3 > max_ordinal {
2007 return Ok(());
2008 }
2009
2010 let cur_offset: usize = (3 - 1) * envelope_size;
2013
2014 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2016
2017 fidl::encoding::encode_in_envelope_optional::<CompositeInfo, D>(
2022 self.composite
2023 .as_ref()
2024 .map(<CompositeInfo as fidl::encoding::ValueTypeMarker>::borrow),
2025 encoder,
2026 offset + cur_offset,
2027 depth,
2028 )?;
2029
2030 _prev_end_offset = cur_offset + envelope_size;
2031 if 4 > max_ordinal {
2032 return Ok(());
2033 }
2034
2035 let cur_offset: usize = (4 - 1) * envelope_size;
2038
2039 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2041
2042 fidl::encoding::encode_in_envelope_optional::<
2047 fidl::encoding::UnboundedVector<
2048 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2049 >,
2050 D,
2051 >(
2052 self.parent_monikers.as_ref().map(
2053 <fidl::encoding::UnboundedVector<
2054 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2055 > as fidl::encoding::ValueTypeMarker>::borrow,
2056 ),
2057 encoder,
2058 offset + cur_offset,
2059 depth,
2060 )?;
2061
2062 _prev_end_offset = cur_offset + envelope_size;
2063 if 5 > max_ordinal {
2064 return Ok(());
2065 }
2066
2067 let cur_offset: usize = (5 - 1) * envelope_size;
2070
2071 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2073
2074 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
2079 self.moniker.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
2080 encoder, offset + cur_offset, depth
2081 )?;
2082
2083 _prev_end_offset = cur_offset + envelope_size;
2084
2085 Ok(())
2086 }
2087 }
2088
2089 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeNodeInfo {
2090 #[inline(always)]
2091 fn new_empty() -> Self {
2092 Self::default()
2093 }
2094
2095 unsafe fn decode(
2096 &mut self,
2097 decoder: &mut fidl::encoding::Decoder<'_, D>,
2098 offset: usize,
2099 mut depth: fidl::encoding::Depth,
2100 ) -> fidl::Result<()> {
2101 decoder.debug_check_bounds::<Self>(offset);
2102 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2103 None => return Err(fidl::Error::NotNullable),
2104 Some(len) => len,
2105 };
2106 if len == 0 {
2108 return Ok(());
2109 };
2110 depth.increment()?;
2111 let envelope_size = 8;
2112 let bytes_len = len * envelope_size;
2113 let offset = decoder.out_of_line_offset(bytes_len)?;
2114 let mut _next_ordinal_to_read = 0;
2116 let mut next_offset = offset;
2117 let end_offset = offset + bytes_len;
2118 _next_ordinal_to_read += 1;
2119 if next_offset >= end_offset {
2120 return Ok(());
2121 }
2122
2123 while _next_ordinal_to_read < 1 {
2125 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2126 _next_ordinal_to_read += 1;
2127 next_offset += envelope_size;
2128 }
2129
2130 let next_out_of_line = decoder.next_out_of_line();
2131 let handles_before = decoder.remaining_handles();
2132 if let Some((inlined, num_bytes, num_handles)) =
2133 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2134 {
2135 let member_inline_size = <fidl::encoding::UnboundedVector<
2136 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2137 > as fidl::encoding::TypeMarker>::inline_size(
2138 decoder.context
2139 );
2140 if inlined != (member_inline_size <= 4) {
2141 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2142 }
2143 let inner_offset;
2144 let mut inner_depth = depth.clone();
2145 if inlined {
2146 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2147 inner_offset = next_offset;
2148 } else {
2149 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2150 inner_depth.increment()?;
2151 }
2152 let val_ref = self.parent_topological_paths.get_or_insert_with(|| {
2153 fidl::new_empty!(
2154 fidl::encoding::UnboundedVector<
2155 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2156 >,
2157 D
2158 )
2159 });
2160 fidl::decode!(
2161 fidl::encoding::UnboundedVector<
2162 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2163 >,
2164 D,
2165 val_ref,
2166 decoder,
2167 inner_offset,
2168 inner_depth
2169 )?;
2170 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2171 {
2172 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2173 }
2174 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2175 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2176 }
2177 }
2178
2179 next_offset += envelope_size;
2180 _next_ordinal_to_read += 1;
2181 if next_offset >= end_offset {
2182 return Ok(());
2183 }
2184
2185 while _next_ordinal_to_read < 2 {
2187 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2188 _next_ordinal_to_read += 1;
2189 next_offset += envelope_size;
2190 }
2191
2192 let next_out_of_line = decoder.next_out_of_line();
2193 let handles_before = decoder.remaining_handles();
2194 if let Some((inlined, num_bytes, num_handles)) =
2195 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2196 {
2197 let member_inline_size =
2198 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
2199 decoder.context,
2200 );
2201 if inlined != (member_inline_size <= 4) {
2202 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2203 }
2204 let inner_offset;
2205 let mut inner_depth = depth.clone();
2206 if inlined {
2207 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2208 inner_offset = next_offset;
2209 } else {
2210 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2211 inner_depth.increment()?;
2212 }
2213 let val_ref = self
2214 .topological_path
2215 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
2216 fidl::decode!(
2217 fidl::encoding::UnboundedString,
2218 D,
2219 val_ref,
2220 decoder,
2221 inner_offset,
2222 inner_depth
2223 )?;
2224 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2225 {
2226 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2227 }
2228 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2229 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2230 }
2231 }
2232
2233 next_offset += envelope_size;
2234 _next_ordinal_to_read += 1;
2235 if next_offset >= end_offset {
2236 return Ok(());
2237 }
2238
2239 while _next_ordinal_to_read < 3 {
2241 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2242 _next_ordinal_to_read += 1;
2243 next_offset += envelope_size;
2244 }
2245
2246 let next_out_of_line = decoder.next_out_of_line();
2247 let handles_before = decoder.remaining_handles();
2248 if let Some((inlined, num_bytes, num_handles)) =
2249 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2250 {
2251 let member_inline_size =
2252 <CompositeInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2253 if inlined != (member_inline_size <= 4) {
2254 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2255 }
2256 let inner_offset;
2257 let mut inner_depth = depth.clone();
2258 if inlined {
2259 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2260 inner_offset = next_offset;
2261 } else {
2262 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2263 inner_depth.increment()?;
2264 }
2265 let val_ref =
2266 self.composite.get_or_insert_with(|| fidl::new_empty!(CompositeInfo, D));
2267 fidl::decode!(CompositeInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
2268 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2269 {
2270 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2271 }
2272 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2273 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2274 }
2275 }
2276
2277 next_offset += envelope_size;
2278 _next_ordinal_to_read += 1;
2279 if next_offset >= end_offset {
2280 return Ok(());
2281 }
2282
2283 while _next_ordinal_to_read < 4 {
2285 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2286 _next_ordinal_to_read += 1;
2287 next_offset += envelope_size;
2288 }
2289
2290 let next_out_of_line = decoder.next_out_of_line();
2291 let handles_before = decoder.remaining_handles();
2292 if let Some((inlined, num_bytes, num_handles)) =
2293 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2294 {
2295 let member_inline_size = <fidl::encoding::UnboundedVector<
2296 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2297 > as fidl::encoding::TypeMarker>::inline_size(
2298 decoder.context
2299 );
2300 if inlined != (member_inline_size <= 4) {
2301 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2302 }
2303 let inner_offset;
2304 let mut inner_depth = depth.clone();
2305 if inlined {
2306 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2307 inner_offset = next_offset;
2308 } else {
2309 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2310 inner_depth.increment()?;
2311 }
2312 let val_ref = self.parent_monikers.get_or_insert_with(|| {
2313 fidl::new_empty!(
2314 fidl::encoding::UnboundedVector<
2315 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2316 >,
2317 D
2318 )
2319 });
2320 fidl::decode!(
2321 fidl::encoding::UnboundedVector<
2322 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2323 >,
2324 D,
2325 val_ref,
2326 decoder,
2327 inner_offset,
2328 inner_depth
2329 )?;
2330 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2331 {
2332 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2333 }
2334 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2335 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2336 }
2337 }
2338
2339 next_offset += envelope_size;
2340 _next_ordinal_to_read += 1;
2341 if next_offset >= end_offset {
2342 return Ok(());
2343 }
2344
2345 while _next_ordinal_to_read < 5 {
2347 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2348 _next_ordinal_to_read += 1;
2349 next_offset += envelope_size;
2350 }
2351
2352 let next_out_of_line = decoder.next_out_of_line();
2353 let handles_before = decoder.remaining_handles();
2354 if let Some((inlined, num_bytes, num_handles)) =
2355 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2356 {
2357 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2358 if inlined != (member_inline_size <= 4) {
2359 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2360 }
2361 let inner_offset;
2362 let mut inner_depth = depth.clone();
2363 if inlined {
2364 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2365 inner_offset = next_offset;
2366 } else {
2367 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2368 inner_depth.increment()?;
2369 }
2370 let val_ref = self.moniker.get_or_insert_with(|| {
2371 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
2372 });
2373 fidl::decode!(
2374 fidl::encoding::BoundedString<1024>,
2375 D,
2376 val_ref,
2377 decoder,
2378 inner_offset,
2379 inner_depth
2380 )?;
2381 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2382 {
2383 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2384 }
2385 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2386 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2387 }
2388 }
2389
2390 next_offset += envelope_size;
2391
2392 while next_offset < end_offset {
2394 _next_ordinal_to_read += 1;
2395 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2396 next_offset += envelope_size;
2397 }
2398
2399 Ok(())
2400 }
2401 }
2402
2403 impl DispatcherInfo {
2404 #[inline(always)]
2405 fn max_ordinal_present(&self) -> u64 {
2406 if let Some(_) = self.scheduler_role {
2407 return 4;
2408 }
2409 if let Some(_) = self.options {
2410 return 3;
2411 }
2412 if let Some(_) = self.name {
2413 return 2;
2414 }
2415 if let Some(_) = self.driver {
2416 return 1;
2417 }
2418 0
2419 }
2420 }
2421
2422 impl fidl::encoding::ValueTypeMarker for DispatcherInfo {
2423 type Borrowed<'a> = &'a Self;
2424 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2425 value
2426 }
2427 }
2428
2429 unsafe impl fidl::encoding::TypeMarker for DispatcherInfo {
2430 type Owned = Self;
2431
2432 #[inline(always)]
2433 fn inline_align(_context: fidl::encoding::Context) -> usize {
2434 8
2435 }
2436
2437 #[inline(always)]
2438 fn inline_size(_context: fidl::encoding::Context) -> usize {
2439 16
2440 }
2441 }
2442
2443 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DispatcherInfo, D>
2444 for &DispatcherInfo
2445 {
2446 unsafe fn encode(
2447 self,
2448 encoder: &mut fidl::encoding::Encoder<'_, D>,
2449 offset: usize,
2450 mut depth: fidl::encoding::Depth,
2451 ) -> fidl::Result<()> {
2452 encoder.debug_check_bounds::<DispatcherInfo>(offset);
2453 let max_ordinal: u64 = self.max_ordinal_present();
2455 encoder.write_num(max_ordinal, offset);
2456 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2457 if max_ordinal == 0 {
2459 return Ok(());
2460 }
2461 depth.increment()?;
2462 let envelope_size = 8;
2463 let bytes_len = max_ordinal as usize * envelope_size;
2464 #[allow(unused_variables)]
2465 let offset = encoder.out_of_line_offset(bytes_len);
2466 let mut _prev_end_offset: usize = 0;
2467 if 1 > max_ordinal {
2468 return Ok(());
2469 }
2470
2471 let cur_offset: usize = (1 - 1) * envelope_size;
2474
2475 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2477
2478 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
2483 self.driver.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
2484 encoder, offset + cur_offset, depth
2485 )?;
2486
2487 _prev_end_offset = cur_offset + envelope_size;
2488 if 2 > max_ordinal {
2489 return Ok(());
2490 }
2491
2492 let cur_offset: usize = (2 - 1) * envelope_size;
2495
2496 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2498
2499 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
2504 self.name.as_ref().map(
2505 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
2506 ),
2507 encoder,
2508 offset + cur_offset,
2509 depth,
2510 )?;
2511
2512 _prev_end_offset = cur_offset + envelope_size;
2513 if 3 > max_ordinal {
2514 return Ok(());
2515 }
2516
2517 let cur_offset: usize = (3 - 1) * envelope_size;
2520
2521 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2523
2524 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2529 self.options.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2530 encoder,
2531 offset + cur_offset,
2532 depth,
2533 )?;
2534
2535 _prev_end_offset = cur_offset + envelope_size;
2536 if 4 > max_ordinal {
2537 return Ok(());
2538 }
2539
2540 let cur_offset: usize = (4 - 1) * envelope_size;
2543
2544 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2546
2547 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
2552 self.scheduler_role.as_ref().map(
2553 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
2554 ),
2555 encoder,
2556 offset + cur_offset,
2557 depth,
2558 )?;
2559
2560 _prev_end_offset = cur_offset + envelope_size;
2561
2562 Ok(())
2563 }
2564 }
2565
2566 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DispatcherInfo {
2567 #[inline(always)]
2568 fn new_empty() -> Self {
2569 Self::default()
2570 }
2571
2572 unsafe fn decode(
2573 &mut self,
2574 decoder: &mut fidl::encoding::Decoder<'_, D>,
2575 offset: usize,
2576 mut depth: fidl::encoding::Depth,
2577 ) -> fidl::Result<()> {
2578 decoder.debug_check_bounds::<Self>(offset);
2579 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2580 None => return Err(fidl::Error::NotNullable),
2581 Some(len) => len,
2582 };
2583 if len == 0 {
2585 return Ok(());
2586 };
2587 depth.increment()?;
2588 let envelope_size = 8;
2589 let bytes_len = len * envelope_size;
2590 let offset = decoder.out_of_line_offset(bytes_len)?;
2591 let mut _next_ordinal_to_read = 0;
2593 let mut next_offset = offset;
2594 let end_offset = offset + bytes_len;
2595 _next_ordinal_to_read += 1;
2596 if next_offset >= end_offset {
2597 return Ok(());
2598 }
2599
2600 while _next_ordinal_to_read < 1 {
2602 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2603 _next_ordinal_to_read += 1;
2604 next_offset += envelope_size;
2605 }
2606
2607 let next_out_of_line = decoder.next_out_of_line();
2608 let handles_before = decoder.remaining_handles();
2609 if let Some((inlined, num_bytes, num_handles)) =
2610 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2611 {
2612 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2613 if inlined != (member_inline_size <= 4) {
2614 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2615 }
2616 let inner_offset;
2617 let mut inner_depth = depth.clone();
2618 if inlined {
2619 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2620 inner_offset = next_offset;
2621 } else {
2622 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2623 inner_depth.increment()?;
2624 }
2625 let val_ref = self.driver.get_or_insert_with(|| {
2626 fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
2627 });
2628 fidl::decode!(
2629 fidl::encoding::BoundedString<4096>,
2630 D,
2631 val_ref,
2632 decoder,
2633 inner_offset,
2634 inner_depth
2635 )?;
2636 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2637 {
2638 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2639 }
2640 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2641 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2642 }
2643 }
2644
2645 next_offset += envelope_size;
2646 _next_ordinal_to_read += 1;
2647 if next_offset >= end_offset {
2648 return Ok(());
2649 }
2650
2651 while _next_ordinal_to_read < 2 {
2653 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2654 _next_ordinal_to_read += 1;
2655 next_offset += envelope_size;
2656 }
2657
2658 let next_out_of_line = decoder.next_out_of_line();
2659 let handles_before = decoder.remaining_handles();
2660 if let Some((inlined, num_bytes, num_handles)) =
2661 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2662 {
2663 let member_inline_size =
2664 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
2665 decoder.context,
2666 );
2667 if inlined != (member_inline_size <= 4) {
2668 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2669 }
2670 let inner_offset;
2671 let mut inner_depth = depth.clone();
2672 if inlined {
2673 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2674 inner_offset = next_offset;
2675 } else {
2676 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2677 inner_depth.increment()?;
2678 }
2679 let val_ref = self
2680 .name
2681 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
2682 fidl::decode!(
2683 fidl::encoding::UnboundedString,
2684 D,
2685 val_ref,
2686 decoder,
2687 inner_offset,
2688 inner_depth
2689 )?;
2690 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2691 {
2692 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2693 }
2694 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2695 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2696 }
2697 }
2698
2699 next_offset += envelope_size;
2700 _next_ordinal_to_read += 1;
2701 if next_offset >= end_offset {
2702 return Ok(());
2703 }
2704
2705 while _next_ordinal_to_read < 3 {
2707 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2708 _next_ordinal_to_read += 1;
2709 next_offset += envelope_size;
2710 }
2711
2712 let next_out_of_line = decoder.next_out_of_line();
2713 let handles_before = decoder.remaining_handles();
2714 if let Some((inlined, num_bytes, num_handles)) =
2715 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2716 {
2717 let member_inline_size =
2718 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2719 if inlined != (member_inline_size <= 4) {
2720 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2721 }
2722 let inner_offset;
2723 let mut inner_depth = depth.clone();
2724 if inlined {
2725 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2726 inner_offset = next_offset;
2727 } else {
2728 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2729 inner_depth.increment()?;
2730 }
2731 let val_ref = self.options.get_or_insert_with(|| fidl::new_empty!(u32, D));
2732 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2733 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2734 {
2735 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2736 }
2737 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2738 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2739 }
2740 }
2741
2742 next_offset += envelope_size;
2743 _next_ordinal_to_read += 1;
2744 if next_offset >= end_offset {
2745 return Ok(());
2746 }
2747
2748 while _next_ordinal_to_read < 4 {
2750 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2751 _next_ordinal_to_read += 1;
2752 next_offset += envelope_size;
2753 }
2754
2755 let next_out_of_line = decoder.next_out_of_line();
2756 let handles_before = decoder.remaining_handles();
2757 if let Some((inlined, num_bytes, num_handles)) =
2758 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2759 {
2760 let member_inline_size =
2761 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
2762 decoder.context,
2763 );
2764 if inlined != (member_inline_size <= 4) {
2765 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2766 }
2767 let inner_offset;
2768 let mut inner_depth = depth.clone();
2769 if inlined {
2770 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2771 inner_offset = next_offset;
2772 } else {
2773 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2774 inner_depth.increment()?;
2775 }
2776 let val_ref = self
2777 .scheduler_role
2778 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
2779 fidl::decode!(
2780 fidl::encoding::UnboundedString,
2781 D,
2782 val_ref,
2783 decoder,
2784 inner_offset,
2785 inner_depth
2786 )?;
2787 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2788 {
2789 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2790 }
2791 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2792 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2793 }
2794 }
2795
2796 next_offset += envelope_size;
2797
2798 while next_offset < end_offset {
2800 _next_ordinal_to_read += 1;
2801 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2802 next_offset += envelope_size;
2803 }
2804
2805 Ok(())
2806 }
2807 }
2808
2809 impl DriverHostInfo {
2810 #[inline(always)]
2811 fn max_ordinal_present(&self) -> u64 {
2812 if let Some(_) = self.name {
2813 return 5;
2814 }
2815 if let Some(_) = self.dispatchers {
2816 return 4;
2817 }
2818 if let Some(_) = self.drivers {
2819 return 3;
2820 }
2821 if let Some(_) = self.threads {
2822 return 2;
2823 }
2824 if let Some(_) = self.process_koid {
2825 return 1;
2826 }
2827 0
2828 }
2829 }
2830
2831 impl fidl::encoding::ValueTypeMarker for DriverHostInfo {
2832 type Borrowed<'a> = &'a Self;
2833 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2834 value
2835 }
2836 }
2837
2838 unsafe impl fidl::encoding::TypeMarker for DriverHostInfo {
2839 type Owned = Self;
2840
2841 #[inline(always)]
2842 fn inline_align(_context: fidl::encoding::Context) -> usize {
2843 8
2844 }
2845
2846 #[inline(always)]
2847 fn inline_size(_context: fidl::encoding::Context) -> usize {
2848 16
2849 }
2850 }
2851
2852 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DriverHostInfo, D>
2853 for &DriverHostInfo
2854 {
2855 unsafe fn encode(
2856 self,
2857 encoder: &mut fidl::encoding::Encoder<'_, D>,
2858 offset: usize,
2859 mut depth: fidl::encoding::Depth,
2860 ) -> fidl::Result<()> {
2861 encoder.debug_check_bounds::<DriverHostInfo>(offset);
2862 let max_ordinal: u64 = self.max_ordinal_present();
2864 encoder.write_num(max_ordinal, offset);
2865 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2866 if max_ordinal == 0 {
2868 return Ok(());
2869 }
2870 depth.increment()?;
2871 let envelope_size = 8;
2872 let bytes_len = max_ordinal as usize * envelope_size;
2873 #[allow(unused_variables)]
2874 let offset = encoder.out_of_line_offset(bytes_len);
2875 let mut _prev_end_offset: usize = 0;
2876 if 1 > max_ordinal {
2877 return Ok(());
2878 }
2879
2880 let cur_offset: usize = (1 - 1) * envelope_size;
2883
2884 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2886
2887 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2892 self.process_koid.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2893 encoder,
2894 offset + cur_offset,
2895 depth,
2896 )?;
2897
2898 _prev_end_offset = cur_offset + envelope_size;
2899 if 2 > max_ordinal {
2900 return Ok(());
2901 }
2902
2903 let cur_offset: usize = (2 - 1) * envelope_size;
2906
2907 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2909
2910 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ThreadInfo>, D>(
2915 self.threads.as_ref().map(<fidl::encoding::UnboundedVector<ThreadInfo> as fidl::encoding::ValueTypeMarker>::borrow),
2916 encoder, offset + cur_offset, depth
2917 )?;
2918
2919 _prev_end_offset = cur_offset + envelope_size;
2920 if 3 > max_ordinal {
2921 return Ok(());
2922 }
2923
2924 let cur_offset: usize = (3 - 1) * envelope_size;
2927
2928 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2930
2931 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>>, D>(
2936 self.drivers.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>> as fidl::encoding::ValueTypeMarker>::borrow),
2937 encoder, offset + cur_offset, depth
2938 )?;
2939
2940 _prev_end_offset = cur_offset + envelope_size;
2941 if 4 > max_ordinal {
2942 return Ok(());
2943 }
2944
2945 let cur_offset: usize = (4 - 1) * envelope_size;
2948
2949 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2951
2952 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<DispatcherInfo>, D>(
2957 self.dispatchers.as_ref().map(<fidl::encoding::UnboundedVector<DispatcherInfo> as fidl::encoding::ValueTypeMarker>::borrow),
2958 encoder, offset + cur_offset, depth
2959 )?;
2960
2961 _prev_end_offset = cur_offset + envelope_size;
2962 if 5 > max_ordinal {
2963 return Ok(());
2964 }
2965
2966 let cur_offset: usize = (5 - 1) * envelope_size;
2969
2970 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2972
2973 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
2978 self.name.as_ref().map(
2979 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
2980 ),
2981 encoder,
2982 offset + cur_offset,
2983 depth,
2984 )?;
2985
2986 _prev_end_offset = cur_offset + envelope_size;
2987
2988 Ok(())
2989 }
2990 }
2991
2992 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DriverHostInfo {
2993 #[inline(always)]
2994 fn new_empty() -> Self {
2995 Self::default()
2996 }
2997
2998 unsafe fn decode(
2999 &mut self,
3000 decoder: &mut fidl::encoding::Decoder<'_, D>,
3001 offset: usize,
3002 mut depth: fidl::encoding::Depth,
3003 ) -> fidl::Result<()> {
3004 decoder.debug_check_bounds::<Self>(offset);
3005 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3006 None => return Err(fidl::Error::NotNullable),
3007 Some(len) => len,
3008 };
3009 if len == 0 {
3011 return Ok(());
3012 };
3013 depth.increment()?;
3014 let envelope_size = 8;
3015 let bytes_len = len * envelope_size;
3016 let offset = decoder.out_of_line_offset(bytes_len)?;
3017 let mut _next_ordinal_to_read = 0;
3019 let mut next_offset = offset;
3020 let end_offset = offset + bytes_len;
3021 _next_ordinal_to_read += 1;
3022 if next_offset >= end_offset {
3023 return Ok(());
3024 }
3025
3026 while _next_ordinal_to_read < 1 {
3028 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3029 _next_ordinal_to_read += 1;
3030 next_offset += envelope_size;
3031 }
3032
3033 let next_out_of_line = decoder.next_out_of_line();
3034 let handles_before = decoder.remaining_handles();
3035 if let Some((inlined, num_bytes, num_handles)) =
3036 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3037 {
3038 let member_inline_size =
3039 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3040 if inlined != (member_inline_size <= 4) {
3041 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3042 }
3043 let inner_offset;
3044 let mut inner_depth = depth.clone();
3045 if inlined {
3046 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3047 inner_offset = next_offset;
3048 } else {
3049 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3050 inner_depth.increment()?;
3051 }
3052 let val_ref = self.process_koid.get_or_insert_with(|| fidl::new_empty!(u64, D));
3053 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3054 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3055 {
3056 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3057 }
3058 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3059 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3060 }
3061 }
3062
3063 next_offset += envelope_size;
3064 _next_ordinal_to_read += 1;
3065 if next_offset >= end_offset {
3066 return Ok(());
3067 }
3068
3069 while _next_ordinal_to_read < 2 {
3071 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3072 _next_ordinal_to_read += 1;
3073 next_offset += envelope_size;
3074 }
3075
3076 let next_out_of_line = decoder.next_out_of_line();
3077 let handles_before = decoder.remaining_handles();
3078 if let Some((inlined, num_bytes, num_handles)) =
3079 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3080 {
3081 let member_inline_size = <fidl::encoding::UnboundedVector<ThreadInfo> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3082 if inlined != (member_inline_size <= 4) {
3083 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3084 }
3085 let inner_offset;
3086 let mut inner_depth = depth.clone();
3087 if inlined {
3088 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3089 inner_offset = next_offset;
3090 } else {
3091 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3092 inner_depth.increment()?;
3093 }
3094 let val_ref = self.threads.get_or_insert_with(|| {
3095 fidl::new_empty!(fidl::encoding::UnboundedVector<ThreadInfo>, D)
3096 });
3097 fidl::decode!(
3098 fidl::encoding::UnboundedVector<ThreadInfo>,
3099 D,
3100 val_ref,
3101 decoder,
3102 inner_offset,
3103 inner_depth
3104 )?;
3105 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3106 {
3107 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3108 }
3109 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3110 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3111 }
3112 }
3113
3114 next_offset += envelope_size;
3115 _next_ordinal_to_read += 1;
3116 if next_offset >= end_offset {
3117 return Ok(());
3118 }
3119
3120 while _next_ordinal_to_read < 3 {
3122 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3123 _next_ordinal_to_read += 1;
3124 next_offset += envelope_size;
3125 }
3126
3127 let next_out_of_line = decoder.next_out_of_line();
3128 let handles_before = decoder.remaining_handles();
3129 if let Some((inlined, num_bytes, num_handles)) =
3130 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3131 {
3132 let member_inline_size = <fidl::encoding::UnboundedVector<
3133 fidl::encoding::BoundedString<4096>,
3134 > as fidl::encoding::TypeMarker>::inline_size(
3135 decoder.context
3136 );
3137 if inlined != (member_inline_size <= 4) {
3138 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3139 }
3140 let inner_offset;
3141 let mut inner_depth = depth.clone();
3142 if inlined {
3143 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3144 inner_offset = next_offset;
3145 } else {
3146 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3147 inner_depth.increment()?;
3148 }
3149 let val_ref = self.drivers.get_or_insert_with(|| {
3150 fidl::new_empty!(
3151 fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>>,
3152 D
3153 )
3154 });
3155 fidl::decode!(
3156 fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>>,
3157 D,
3158 val_ref,
3159 decoder,
3160 inner_offset,
3161 inner_depth
3162 )?;
3163 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3164 {
3165 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3166 }
3167 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3168 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3169 }
3170 }
3171
3172 next_offset += envelope_size;
3173 _next_ordinal_to_read += 1;
3174 if next_offset >= end_offset {
3175 return Ok(());
3176 }
3177
3178 while _next_ordinal_to_read < 4 {
3180 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3181 _next_ordinal_to_read += 1;
3182 next_offset += envelope_size;
3183 }
3184
3185 let next_out_of_line = decoder.next_out_of_line();
3186 let handles_before = decoder.remaining_handles();
3187 if let Some((inlined, num_bytes, num_handles)) =
3188 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3189 {
3190 let member_inline_size = <fidl::encoding::UnboundedVector<DispatcherInfo> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3191 if inlined != (member_inline_size <= 4) {
3192 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3193 }
3194 let inner_offset;
3195 let mut inner_depth = depth.clone();
3196 if inlined {
3197 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3198 inner_offset = next_offset;
3199 } else {
3200 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3201 inner_depth.increment()?;
3202 }
3203 let val_ref = self.dispatchers.get_or_insert_with(|| {
3204 fidl::new_empty!(fidl::encoding::UnboundedVector<DispatcherInfo>, D)
3205 });
3206 fidl::decode!(
3207 fidl::encoding::UnboundedVector<DispatcherInfo>,
3208 D,
3209 val_ref,
3210 decoder,
3211 inner_offset,
3212 inner_depth
3213 )?;
3214 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3215 {
3216 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3217 }
3218 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3219 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3220 }
3221 }
3222
3223 next_offset += envelope_size;
3224 _next_ordinal_to_read += 1;
3225 if next_offset >= end_offset {
3226 return Ok(());
3227 }
3228
3229 while _next_ordinal_to_read < 5 {
3231 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3232 _next_ordinal_to_read += 1;
3233 next_offset += envelope_size;
3234 }
3235
3236 let next_out_of_line = decoder.next_out_of_line();
3237 let handles_before = decoder.remaining_handles();
3238 if let Some((inlined, num_bytes, num_handles)) =
3239 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3240 {
3241 let member_inline_size =
3242 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
3243 decoder.context,
3244 );
3245 if inlined != (member_inline_size <= 4) {
3246 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3247 }
3248 let inner_offset;
3249 let mut inner_depth = depth.clone();
3250 if inlined {
3251 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3252 inner_offset = next_offset;
3253 } else {
3254 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3255 inner_depth.increment()?;
3256 }
3257 let val_ref = self
3258 .name
3259 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
3260 fidl::decode!(
3261 fidl::encoding::UnboundedString,
3262 D,
3263 val_ref,
3264 decoder,
3265 inner_offset,
3266 inner_depth
3267 )?;
3268 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3269 {
3270 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3271 }
3272 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3273 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3274 }
3275 }
3276
3277 next_offset += envelope_size;
3278
3279 while next_offset < end_offset {
3281 _next_ordinal_to_read += 1;
3282 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3283 next_offset += envelope_size;
3284 }
3285
3286 Ok(())
3287 }
3288 }
3289
3290 impl NodeBindingInfo {
3291 #[inline(always)]
3292 fn max_ordinal_present(&self) -> u64 {
3293 if let Some(_) = self.composite_parents {
3294 return 3;
3295 }
3296 if let Some(_) = self.driver_url {
3297 return 2;
3298 }
3299 if let Some(_) = self.node_name {
3300 return 1;
3301 }
3302 0
3303 }
3304 }
3305
3306 impl fidl::encoding::ValueTypeMarker for NodeBindingInfo {
3307 type Borrowed<'a> = &'a Self;
3308 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3309 value
3310 }
3311 }
3312
3313 unsafe impl fidl::encoding::TypeMarker for NodeBindingInfo {
3314 type Owned = Self;
3315
3316 #[inline(always)]
3317 fn inline_align(_context: fidl::encoding::Context) -> usize {
3318 8
3319 }
3320
3321 #[inline(always)]
3322 fn inline_size(_context: fidl::encoding::Context) -> usize {
3323 16
3324 }
3325 }
3326
3327 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeBindingInfo, D>
3328 for &NodeBindingInfo
3329 {
3330 unsafe fn encode(
3331 self,
3332 encoder: &mut fidl::encoding::Encoder<'_, D>,
3333 offset: usize,
3334 mut depth: fidl::encoding::Depth,
3335 ) -> fidl::Result<()> {
3336 encoder.debug_check_bounds::<NodeBindingInfo>(offset);
3337 let max_ordinal: u64 = self.max_ordinal_present();
3339 encoder.write_num(max_ordinal, offset);
3340 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3341 if max_ordinal == 0 {
3343 return Ok(());
3344 }
3345 depth.increment()?;
3346 let envelope_size = 8;
3347 let bytes_len = max_ordinal as usize * envelope_size;
3348 #[allow(unused_variables)]
3349 let offset = encoder.out_of_line_offset(bytes_len);
3350 let mut _prev_end_offset: usize = 0;
3351 if 1 > max_ordinal {
3352 return Ok(());
3353 }
3354
3355 let cur_offset: usize = (1 - 1) * envelope_size;
3358
3359 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3361
3362 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
3367 self.node_name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
3368 encoder, offset + cur_offset, depth
3369 )?;
3370
3371 _prev_end_offset = cur_offset + envelope_size;
3372 if 2 > max_ordinal {
3373 return Ok(());
3374 }
3375
3376 let cur_offset: usize = (2 - 1) * envelope_size;
3379
3380 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3382
3383 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
3388 self.driver_url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
3389 encoder, offset + cur_offset, depth
3390 )?;
3391
3392 _prev_end_offset = cur_offset + envelope_size;
3393 if 3 > max_ordinal {
3394 return Ok(());
3395 }
3396
3397 let cur_offset: usize = (3 - 1) * envelope_size;
3400
3401 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3403
3404 fidl::encoding::encode_in_envelope_optional::<
3409 fidl::encoding::UnboundedVector<
3410 fidl_fuchsia_driver_framework_common::CompositeParent,
3411 >,
3412 D,
3413 >(
3414 self.composite_parents.as_ref().map(
3415 <fidl::encoding::UnboundedVector<
3416 fidl_fuchsia_driver_framework_common::CompositeParent,
3417 > as fidl::encoding::ValueTypeMarker>::borrow,
3418 ),
3419 encoder,
3420 offset + cur_offset,
3421 depth,
3422 )?;
3423
3424 _prev_end_offset = cur_offset + envelope_size;
3425
3426 Ok(())
3427 }
3428 }
3429
3430 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeBindingInfo {
3431 #[inline(always)]
3432 fn new_empty() -> Self {
3433 Self::default()
3434 }
3435
3436 unsafe fn decode(
3437 &mut self,
3438 decoder: &mut fidl::encoding::Decoder<'_, D>,
3439 offset: usize,
3440 mut depth: fidl::encoding::Depth,
3441 ) -> fidl::Result<()> {
3442 decoder.debug_check_bounds::<Self>(offset);
3443 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3444 None => return Err(fidl::Error::NotNullable),
3445 Some(len) => len,
3446 };
3447 if len == 0 {
3449 return Ok(());
3450 };
3451 depth.increment()?;
3452 let envelope_size = 8;
3453 let bytes_len = len * envelope_size;
3454 let offset = decoder.out_of_line_offset(bytes_len)?;
3455 let mut _next_ordinal_to_read = 0;
3457 let mut next_offset = offset;
3458 let end_offset = offset + bytes_len;
3459 _next_ordinal_to_read += 1;
3460 if next_offset >= end_offset {
3461 return Ok(());
3462 }
3463
3464 while _next_ordinal_to_read < 1 {
3466 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3467 _next_ordinal_to_read += 1;
3468 next_offset += envelope_size;
3469 }
3470
3471 let next_out_of_line = decoder.next_out_of_line();
3472 let handles_before = decoder.remaining_handles();
3473 if let Some((inlined, num_bytes, num_handles)) =
3474 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3475 {
3476 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3477 if inlined != (member_inline_size <= 4) {
3478 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3479 }
3480 let inner_offset;
3481 let mut inner_depth = depth.clone();
3482 if inlined {
3483 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3484 inner_offset = next_offset;
3485 } else {
3486 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3487 inner_depth.increment()?;
3488 }
3489 let val_ref = self.node_name.get_or_insert_with(|| {
3490 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
3491 });
3492 fidl::decode!(
3493 fidl::encoding::BoundedString<1024>,
3494 D,
3495 val_ref,
3496 decoder,
3497 inner_offset,
3498 inner_depth
3499 )?;
3500 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3501 {
3502 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3503 }
3504 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3505 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3506 }
3507 }
3508
3509 next_offset += envelope_size;
3510 _next_ordinal_to_read += 1;
3511 if next_offset >= end_offset {
3512 return Ok(());
3513 }
3514
3515 while _next_ordinal_to_read < 2 {
3517 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3518 _next_ordinal_to_read += 1;
3519 next_offset += envelope_size;
3520 }
3521
3522 let next_out_of_line = decoder.next_out_of_line();
3523 let handles_before = decoder.remaining_handles();
3524 if let Some((inlined, num_bytes, num_handles)) =
3525 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3526 {
3527 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3528 if inlined != (member_inline_size <= 4) {
3529 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3530 }
3531 let inner_offset;
3532 let mut inner_depth = depth.clone();
3533 if inlined {
3534 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3535 inner_offset = next_offset;
3536 } else {
3537 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3538 inner_depth.increment()?;
3539 }
3540 let val_ref = self.driver_url.get_or_insert_with(|| {
3541 fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
3542 });
3543 fidl::decode!(
3544 fidl::encoding::BoundedString<4096>,
3545 D,
3546 val_ref,
3547 decoder,
3548 inner_offset,
3549 inner_depth
3550 )?;
3551 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3552 {
3553 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3554 }
3555 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3556 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3557 }
3558 }
3559
3560 next_offset += envelope_size;
3561 _next_ordinal_to_read += 1;
3562 if next_offset >= end_offset {
3563 return Ok(());
3564 }
3565
3566 while _next_ordinal_to_read < 3 {
3568 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3569 _next_ordinal_to_read += 1;
3570 next_offset += envelope_size;
3571 }
3572
3573 let next_out_of_line = decoder.next_out_of_line();
3574 let handles_before = decoder.remaining_handles();
3575 if let Some((inlined, num_bytes, num_handles)) =
3576 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3577 {
3578 let member_inline_size = <fidl::encoding::UnboundedVector<
3579 fidl_fuchsia_driver_framework_common::CompositeParent,
3580 > as fidl::encoding::TypeMarker>::inline_size(
3581 decoder.context
3582 );
3583 if inlined != (member_inline_size <= 4) {
3584 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3585 }
3586 let inner_offset;
3587 let mut inner_depth = depth.clone();
3588 if inlined {
3589 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3590 inner_offset = next_offset;
3591 } else {
3592 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3593 inner_depth.increment()?;
3594 }
3595 let val_ref = self.composite_parents.get_or_insert_with(|| {
3596 fidl::new_empty!(
3597 fidl::encoding::UnboundedVector<
3598 fidl_fuchsia_driver_framework_common::CompositeParent,
3599 >,
3600 D
3601 )
3602 });
3603 fidl::decode!(
3604 fidl::encoding::UnboundedVector<
3605 fidl_fuchsia_driver_framework_common::CompositeParent,
3606 >,
3607 D,
3608 val_ref,
3609 decoder,
3610 inner_offset,
3611 inner_depth
3612 )?;
3613 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3614 {
3615 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3616 }
3617 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3618 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3619 }
3620 }
3621
3622 next_offset += envelope_size;
3623
3624 while next_offset < end_offset {
3626 _next_ordinal_to_read += 1;
3627 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3628 next_offset += envelope_size;
3629 }
3630
3631 Ok(())
3632 }
3633 }
3634
3635 impl NodeInfo {
3636 #[inline(always)]
3637 fn max_ordinal_present(&self) -> u64 {
3638 if let Some(_) = self.topological_path {
3639 return 12;
3640 }
3641 if let Some(_) = self.bus_topology {
3642 return 11;
3643 }
3644 if let Some(_) = self.quarantined {
3645 return 10;
3646 }
3647 if let Some(_) = self.offer_list {
3648 return 9;
3649 }
3650 if let Some(_) = self.node_property_list {
3651 return 8;
3652 }
3653 if let Some(_) = self.moniker {
3654 return 7;
3655 }
3656 if let Some(_) = self.bound_driver_url {
3657 return 5;
3658 }
3659 if let Some(_) = self.driver_host_koid {
3660 return 4;
3661 }
3662 if let Some(_) = self.child_ids {
3663 return 3;
3664 }
3665 if let Some(_) = self.parent_ids {
3666 return 2;
3667 }
3668 if let Some(_) = self.id {
3669 return 1;
3670 }
3671 0
3672 }
3673 }
3674
3675 impl fidl::encoding::ValueTypeMarker for NodeInfo {
3676 type Borrowed<'a> = &'a Self;
3677 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3678 value
3679 }
3680 }
3681
3682 unsafe impl fidl::encoding::TypeMarker for NodeInfo {
3683 type Owned = Self;
3684
3685 #[inline(always)]
3686 fn inline_align(_context: fidl::encoding::Context) -> usize {
3687 8
3688 }
3689
3690 #[inline(always)]
3691 fn inline_size(_context: fidl::encoding::Context) -> usize {
3692 16
3693 }
3694 }
3695
3696 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeInfo, D> for &NodeInfo {
3697 unsafe fn encode(
3698 self,
3699 encoder: &mut fidl::encoding::Encoder<'_, D>,
3700 offset: usize,
3701 mut depth: fidl::encoding::Depth,
3702 ) -> fidl::Result<()> {
3703 encoder.debug_check_bounds::<NodeInfo>(offset);
3704 let max_ordinal: u64 = self.max_ordinal_present();
3706 encoder.write_num(max_ordinal, offset);
3707 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3708 if max_ordinal == 0 {
3710 return Ok(());
3711 }
3712 depth.increment()?;
3713 let envelope_size = 8;
3714 let bytes_len = max_ordinal as usize * envelope_size;
3715 #[allow(unused_variables)]
3716 let offset = encoder.out_of_line_offset(bytes_len);
3717 let mut _prev_end_offset: usize = 0;
3718 if 1 > max_ordinal {
3719 return Ok(());
3720 }
3721
3722 let cur_offset: usize = (1 - 1) * envelope_size;
3725
3726 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3728
3729 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3734 self.id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3735 encoder,
3736 offset + cur_offset,
3737 depth,
3738 )?;
3739
3740 _prev_end_offset = cur_offset + envelope_size;
3741 if 2 > max_ordinal {
3742 return Ok(());
3743 }
3744
3745 let cur_offset: usize = (2 - 1) * envelope_size;
3748
3749 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3751
3752 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u64>, D>(
3757 self.parent_ids.as_ref().map(<fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow),
3758 encoder, offset + cur_offset, depth
3759 )?;
3760
3761 _prev_end_offset = cur_offset + envelope_size;
3762 if 3 > max_ordinal {
3763 return Ok(());
3764 }
3765
3766 let cur_offset: usize = (3 - 1) * envelope_size;
3769
3770 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3772
3773 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u64>, D>(
3778 self.child_ids.as_ref().map(<fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow),
3779 encoder, offset + cur_offset, depth
3780 )?;
3781
3782 _prev_end_offset = cur_offset + envelope_size;
3783 if 4 > max_ordinal {
3784 return Ok(());
3785 }
3786
3787 let cur_offset: usize = (4 - 1) * envelope_size;
3790
3791 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3793
3794 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3799 self.driver_host_koid
3800 .as_ref()
3801 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3802 encoder,
3803 offset + cur_offset,
3804 depth,
3805 )?;
3806
3807 _prev_end_offset = cur_offset + envelope_size;
3808 if 5 > max_ordinal {
3809 return Ok(());
3810 }
3811
3812 let cur_offset: usize = (5 - 1) * envelope_size;
3815
3816 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3818
3819 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
3824 self.bound_driver_url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
3825 encoder, offset + cur_offset, depth
3826 )?;
3827
3828 _prev_end_offset = cur_offset + envelope_size;
3829 if 7 > max_ordinal {
3830 return Ok(());
3831 }
3832
3833 let cur_offset: usize = (7 - 1) * envelope_size;
3836
3837 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3839
3840 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
3845 self.moniker.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
3846 encoder, offset + cur_offset, depth
3847 )?;
3848
3849 _prev_end_offset = cur_offset + envelope_size;
3850 if 8 > max_ordinal {
3851 return Ok(());
3852 }
3853
3854 let cur_offset: usize = (8 - 1) * envelope_size;
3857
3858 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3860
3861 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty, 64>, D>(
3866 self.node_property_list.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
3867 encoder, offset + cur_offset, depth
3868 )?;
3869
3870 _prev_end_offset = cur_offset + envelope_size;
3871 if 9 > max_ordinal {
3872 return Ok(());
3873 }
3874
3875 let cur_offset: usize = (9 - 1) * envelope_size;
3878
3879 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3881
3882 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl_common::Offer>, D>(
3887 self.offer_list.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl_common::Offer> as fidl::encoding::ValueTypeMarker>::borrow),
3888 encoder, offset + cur_offset, depth
3889 )?;
3890
3891 _prev_end_offset = cur_offset + envelope_size;
3892 if 10 > max_ordinal {
3893 return Ok(());
3894 }
3895
3896 let cur_offset: usize = (10 - 1) * envelope_size;
3899
3900 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3902
3903 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3908 self.quarantined.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3909 encoder,
3910 offset + cur_offset,
3911 depth,
3912 )?;
3913
3914 _prev_end_offset = cur_offset + envelope_size;
3915 if 11 > max_ordinal {
3916 return Ok(());
3917 }
3918
3919 let cur_offset: usize = (11 - 1) * envelope_size;
3922
3923 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3925
3926 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::BusInfo, 20>, D>(
3931 self.bus_topology.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::BusInfo, 20> as fidl::encoding::ValueTypeMarker>::borrow),
3932 encoder, offset + cur_offset, depth
3933 )?;
3934
3935 _prev_end_offset = cur_offset + envelope_size;
3936 if 12 > max_ordinal {
3937 return Ok(());
3938 }
3939
3940 let cur_offset: usize = (12 - 1) * envelope_size;
3943
3944 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3946
3947 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
3952 self.topological_path.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
3953 encoder, offset + cur_offset, depth
3954 )?;
3955
3956 _prev_end_offset = cur_offset + envelope_size;
3957
3958 Ok(())
3959 }
3960 }
3961
3962 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeInfo {
3963 #[inline(always)]
3964 fn new_empty() -> Self {
3965 Self::default()
3966 }
3967
3968 unsafe fn decode(
3969 &mut self,
3970 decoder: &mut fidl::encoding::Decoder<'_, D>,
3971 offset: usize,
3972 mut depth: fidl::encoding::Depth,
3973 ) -> fidl::Result<()> {
3974 decoder.debug_check_bounds::<Self>(offset);
3975 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3976 None => return Err(fidl::Error::NotNullable),
3977 Some(len) => len,
3978 };
3979 if len == 0 {
3981 return Ok(());
3982 };
3983 depth.increment()?;
3984 let envelope_size = 8;
3985 let bytes_len = len * envelope_size;
3986 let offset = decoder.out_of_line_offset(bytes_len)?;
3987 let mut _next_ordinal_to_read = 0;
3989 let mut next_offset = offset;
3990 let end_offset = offset + bytes_len;
3991 _next_ordinal_to_read += 1;
3992 if next_offset >= end_offset {
3993 return Ok(());
3994 }
3995
3996 while _next_ordinal_to_read < 1 {
3998 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3999 _next_ordinal_to_read += 1;
4000 next_offset += envelope_size;
4001 }
4002
4003 let next_out_of_line = decoder.next_out_of_line();
4004 let handles_before = decoder.remaining_handles();
4005 if let Some((inlined, num_bytes, num_handles)) =
4006 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4007 {
4008 let member_inline_size =
4009 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4010 if inlined != (member_inline_size <= 4) {
4011 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4012 }
4013 let inner_offset;
4014 let mut inner_depth = depth.clone();
4015 if inlined {
4016 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4017 inner_offset = next_offset;
4018 } else {
4019 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4020 inner_depth.increment()?;
4021 }
4022 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u64, D));
4023 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4024 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4025 {
4026 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4027 }
4028 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4029 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4030 }
4031 }
4032
4033 next_offset += envelope_size;
4034 _next_ordinal_to_read += 1;
4035 if next_offset >= end_offset {
4036 return Ok(());
4037 }
4038
4039 while _next_ordinal_to_read < 2 {
4041 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4042 _next_ordinal_to_read += 1;
4043 next_offset += envelope_size;
4044 }
4045
4046 let next_out_of_line = decoder.next_out_of_line();
4047 let handles_before = decoder.remaining_handles();
4048 if let Some((inlined, num_bytes, num_handles)) =
4049 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4050 {
4051 let member_inline_size = <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4052 if inlined != (member_inline_size <= 4) {
4053 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4054 }
4055 let inner_offset;
4056 let mut inner_depth = depth.clone();
4057 if inlined {
4058 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4059 inner_offset = next_offset;
4060 } else {
4061 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4062 inner_depth.increment()?;
4063 }
4064 let val_ref = self.parent_ids.get_or_insert_with(|| {
4065 fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D)
4066 });
4067 fidl::decode!(
4068 fidl::encoding::UnboundedVector<u64>,
4069 D,
4070 val_ref,
4071 decoder,
4072 inner_offset,
4073 inner_depth
4074 )?;
4075 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4076 {
4077 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4078 }
4079 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4080 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4081 }
4082 }
4083
4084 next_offset += envelope_size;
4085 _next_ordinal_to_read += 1;
4086 if next_offset >= end_offset {
4087 return Ok(());
4088 }
4089
4090 while _next_ordinal_to_read < 3 {
4092 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4093 _next_ordinal_to_read += 1;
4094 next_offset += envelope_size;
4095 }
4096
4097 let next_out_of_line = decoder.next_out_of_line();
4098 let handles_before = decoder.remaining_handles();
4099 if let Some((inlined, num_bytes, num_handles)) =
4100 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4101 {
4102 let member_inline_size = <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4103 if inlined != (member_inline_size <= 4) {
4104 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4105 }
4106 let inner_offset;
4107 let mut inner_depth = depth.clone();
4108 if inlined {
4109 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4110 inner_offset = next_offset;
4111 } else {
4112 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4113 inner_depth.increment()?;
4114 }
4115 let val_ref = self.child_ids.get_or_insert_with(|| {
4116 fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D)
4117 });
4118 fidl::decode!(
4119 fidl::encoding::UnboundedVector<u64>,
4120 D,
4121 val_ref,
4122 decoder,
4123 inner_offset,
4124 inner_depth
4125 )?;
4126 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4127 {
4128 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4129 }
4130 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4131 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4132 }
4133 }
4134
4135 next_offset += envelope_size;
4136 _next_ordinal_to_read += 1;
4137 if next_offset >= end_offset {
4138 return Ok(());
4139 }
4140
4141 while _next_ordinal_to_read < 4 {
4143 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4144 _next_ordinal_to_read += 1;
4145 next_offset += envelope_size;
4146 }
4147
4148 let next_out_of_line = decoder.next_out_of_line();
4149 let handles_before = decoder.remaining_handles();
4150 if let Some((inlined, num_bytes, num_handles)) =
4151 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4152 {
4153 let member_inline_size =
4154 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4155 if inlined != (member_inline_size <= 4) {
4156 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4157 }
4158 let inner_offset;
4159 let mut inner_depth = depth.clone();
4160 if inlined {
4161 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4162 inner_offset = next_offset;
4163 } else {
4164 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4165 inner_depth.increment()?;
4166 }
4167 let val_ref = self.driver_host_koid.get_or_insert_with(|| fidl::new_empty!(u64, D));
4168 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4169 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4170 {
4171 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4172 }
4173 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4174 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4175 }
4176 }
4177
4178 next_offset += envelope_size;
4179 _next_ordinal_to_read += 1;
4180 if next_offset >= end_offset {
4181 return Ok(());
4182 }
4183
4184 while _next_ordinal_to_read < 5 {
4186 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4187 _next_ordinal_to_read += 1;
4188 next_offset += envelope_size;
4189 }
4190
4191 let next_out_of_line = decoder.next_out_of_line();
4192 let handles_before = decoder.remaining_handles();
4193 if let Some((inlined, num_bytes, num_handles)) =
4194 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4195 {
4196 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4197 if inlined != (member_inline_size <= 4) {
4198 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4199 }
4200 let inner_offset;
4201 let mut inner_depth = depth.clone();
4202 if inlined {
4203 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4204 inner_offset = next_offset;
4205 } else {
4206 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4207 inner_depth.increment()?;
4208 }
4209 let val_ref = self.bound_driver_url.get_or_insert_with(|| {
4210 fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
4211 });
4212 fidl::decode!(
4213 fidl::encoding::BoundedString<4096>,
4214 D,
4215 val_ref,
4216 decoder,
4217 inner_offset,
4218 inner_depth
4219 )?;
4220 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4221 {
4222 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4223 }
4224 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4225 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4226 }
4227 }
4228
4229 next_offset += envelope_size;
4230 _next_ordinal_to_read += 1;
4231 if next_offset >= end_offset {
4232 return Ok(());
4233 }
4234
4235 while _next_ordinal_to_read < 7 {
4237 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4238 _next_ordinal_to_read += 1;
4239 next_offset += envelope_size;
4240 }
4241
4242 let next_out_of_line = decoder.next_out_of_line();
4243 let handles_before = decoder.remaining_handles();
4244 if let Some((inlined, num_bytes, num_handles)) =
4245 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4246 {
4247 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4248 if inlined != (member_inline_size <= 4) {
4249 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4250 }
4251 let inner_offset;
4252 let mut inner_depth = depth.clone();
4253 if inlined {
4254 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4255 inner_offset = next_offset;
4256 } else {
4257 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4258 inner_depth.increment()?;
4259 }
4260 let val_ref = self.moniker.get_or_insert_with(|| {
4261 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
4262 });
4263 fidl::decode!(
4264 fidl::encoding::BoundedString<1024>,
4265 D,
4266 val_ref,
4267 decoder,
4268 inner_offset,
4269 inner_depth
4270 )?;
4271 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4272 {
4273 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4274 }
4275 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4276 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4277 }
4278 }
4279
4280 next_offset += envelope_size;
4281 _next_ordinal_to_read += 1;
4282 if next_offset >= end_offset {
4283 return Ok(());
4284 }
4285
4286 while _next_ordinal_to_read < 8 {
4288 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4289 _next_ordinal_to_read += 1;
4290 next_offset += envelope_size;
4291 }
4292
4293 let next_out_of_line = decoder.next_out_of_line();
4294 let handles_before = decoder.remaining_handles();
4295 if let Some((inlined, num_bytes, num_handles)) =
4296 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4297 {
4298 let member_inline_size = <fidl::encoding::Vector<
4299 fidl_fuchsia_driver_framework_common::NodeProperty,
4300 64,
4301 > as fidl::encoding::TypeMarker>::inline_size(
4302 decoder.context
4303 );
4304 if inlined != (member_inline_size <= 4) {
4305 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4306 }
4307 let inner_offset;
4308 let mut inner_depth = depth.clone();
4309 if inlined {
4310 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4311 inner_offset = next_offset;
4312 } else {
4313 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4314 inner_depth.increment()?;
4315 }
4316 let val_ref =
4317 self.node_property_list.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty, 64>, D));
4318 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
4319 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4320 {
4321 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4322 }
4323 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4324 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4325 }
4326 }
4327
4328 next_offset += envelope_size;
4329 _next_ordinal_to_read += 1;
4330 if next_offset >= end_offset {
4331 return Ok(());
4332 }
4333
4334 while _next_ordinal_to_read < 9 {
4336 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4337 _next_ordinal_to_read += 1;
4338 next_offset += envelope_size;
4339 }
4340
4341 let next_out_of_line = decoder.next_out_of_line();
4342 let handles_before = decoder.remaining_handles();
4343 if let Some((inlined, num_bytes, num_handles)) =
4344 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4345 {
4346 let member_inline_size = <fidl::encoding::UnboundedVector<
4347 fidl_fuchsia_component_decl_common::Offer,
4348 > as fidl::encoding::TypeMarker>::inline_size(
4349 decoder.context
4350 );
4351 if inlined != (member_inline_size <= 4) {
4352 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4353 }
4354 let inner_offset;
4355 let mut inner_depth = depth.clone();
4356 if inlined {
4357 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4358 inner_offset = next_offset;
4359 } else {
4360 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4361 inner_depth.increment()?;
4362 }
4363 let val_ref = self.offer_list.get_or_insert_with(|| {
4364 fidl::new_empty!(
4365 fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl_common::Offer>,
4366 D
4367 )
4368 });
4369 fidl::decode!(
4370 fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl_common::Offer>,
4371 D,
4372 val_ref,
4373 decoder,
4374 inner_offset,
4375 inner_depth
4376 )?;
4377 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4378 {
4379 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4380 }
4381 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4382 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4383 }
4384 }
4385
4386 next_offset += envelope_size;
4387 _next_ordinal_to_read += 1;
4388 if next_offset >= end_offset {
4389 return Ok(());
4390 }
4391
4392 while _next_ordinal_to_read < 10 {
4394 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4395 _next_ordinal_to_read += 1;
4396 next_offset += envelope_size;
4397 }
4398
4399 let next_out_of_line = decoder.next_out_of_line();
4400 let handles_before = decoder.remaining_handles();
4401 if let Some((inlined, num_bytes, num_handles)) =
4402 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4403 {
4404 let member_inline_size =
4405 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4406 if inlined != (member_inline_size <= 4) {
4407 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4408 }
4409 let inner_offset;
4410 let mut inner_depth = depth.clone();
4411 if inlined {
4412 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4413 inner_offset = next_offset;
4414 } else {
4415 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4416 inner_depth.increment()?;
4417 }
4418 let val_ref = self.quarantined.get_or_insert_with(|| fidl::new_empty!(bool, D));
4419 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4420 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4421 {
4422 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4423 }
4424 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4425 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4426 }
4427 }
4428
4429 next_offset += envelope_size;
4430 _next_ordinal_to_read += 1;
4431 if next_offset >= end_offset {
4432 return Ok(());
4433 }
4434
4435 while _next_ordinal_to_read < 11 {
4437 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4438 _next_ordinal_to_read += 1;
4439 next_offset += envelope_size;
4440 }
4441
4442 let next_out_of_line = decoder.next_out_of_line();
4443 let handles_before = decoder.remaining_handles();
4444 if let Some((inlined, num_bytes, num_handles)) =
4445 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4446 {
4447 let member_inline_size = <fidl::encoding::Vector<
4448 fidl_fuchsia_driver_framework_common::BusInfo,
4449 20,
4450 > as fidl::encoding::TypeMarker>::inline_size(
4451 decoder.context
4452 );
4453 if inlined != (member_inline_size <= 4) {
4454 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4455 }
4456 let inner_offset;
4457 let mut inner_depth = depth.clone();
4458 if inlined {
4459 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4460 inner_offset = next_offset;
4461 } else {
4462 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4463 inner_depth.increment()?;
4464 }
4465 let val_ref =
4466 self.bus_topology.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::BusInfo, 20>, D));
4467 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::BusInfo, 20>, D, val_ref, decoder, inner_offset, inner_depth)?;
4468 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4469 {
4470 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4471 }
4472 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4473 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4474 }
4475 }
4476
4477 next_offset += envelope_size;
4478 _next_ordinal_to_read += 1;
4479 if next_offset >= end_offset {
4480 return Ok(());
4481 }
4482
4483 while _next_ordinal_to_read < 12 {
4485 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4486 _next_ordinal_to_read += 1;
4487 next_offset += envelope_size;
4488 }
4489
4490 let next_out_of_line = decoder.next_out_of_line();
4491 let handles_before = decoder.remaining_handles();
4492 if let Some((inlined, num_bytes, num_handles)) =
4493 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4494 {
4495 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4496 if inlined != (member_inline_size <= 4) {
4497 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4498 }
4499 let inner_offset;
4500 let mut inner_depth = depth.clone();
4501 if inlined {
4502 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4503 inner_offset = next_offset;
4504 } else {
4505 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4506 inner_depth.increment()?;
4507 }
4508 let val_ref = self.topological_path.get_or_insert_with(|| {
4509 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
4510 });
4511 fidl::decode!(
4512 fidl::encoding::BoundedString<1024>,
4513 D,
4514 val_ref,
4515 decoder,
4516 inner_offset,
4517 inner_depth
4518 )?;
4519 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4520 {
4521 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4522 }
4523 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4524 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4525 }
4526 }
4527
4528 next_offset += envelope_size;
4529
4530 while next_offset < end_offset {
4532 _next_ordinal_to_read += 1;
4533 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4534 next_offset += envelope_size;
4535 }
4536
4537 Ok(())
4538 }
4539 }
4540
4541 impl TestNodeAddArgs {
4542 #[inline(always)]
4543 fn max_ordinal_present(&self) -> u64 {
4544 if let Some(_) = self.properties {
4545 return 2;
4546 }
4547 if let Some(_) = self.name {
4548 return 1;
4549 }
4550 0
4551 }
4552 }
4553
4554 impl fidl::encoding::ValueTypeMarker for TestNodeAddArgs {
4555 type Borrowed<'a> = &'a Self;
4556 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4557 value
4558 }
4559 }
4560
4561 unsafe impl fidl::encoding::TypeMarker for TestNodeAddArgs {
4562 type Owned = Self;
4563
4564 #[inline(always)]
4565 fn inline_align(_context: fidl::encoding::Context) -> usize {
4566 8
4567 }
4568
4569 #[inline(always)]
4570 fn inline_size(_context: fidl::encoding::Context) -> usize {
4571 16
4572 }
4573 }
4574
4575 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TestNodeAddArgs, D>
4576 for &TestNodeAddArgs
4577 {
4578 unsafe fn encode(
4579 self,
4580 encoder: &mut fidl::encoding::Encoder<'_, D>,
4581 offset: usize,
4582 mut depth: fidl::encoding::Depth,
4583 ) -> fidl::Result<()> {
4584 encoder.debug_check_bounds::<TestNodeAddArgs>(offset);
4585 let max_ordinal: u64 = self.max_ordinal_present();
4587 encoder.write_num(max_ordinal, offset);
4588 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4589 if max_ordinal == 0 {
4591 return Ok(());
4592 }
4593 depth.increment()?;
4594 let envelope_size = 8;
4595 let bytes_len = max_ordinal as usize * envelope_size;
4596 #[allow(unused_variables)]
4597 let offset = encoder.out_of_line_offset(bytes_len);
4598 let mut _prev_end_offset: usize = 0;
4599 if 1 > max_ordinal {
4600 return Ok(());
4601 }
4602
4603 let cur_offset: usize = (1 - 1) * envelope_size;
4606
4607 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4609
4610 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
4615 self.name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
4616 encoder, offset + cur_offset, depth
4617 )?;
4618
4619 _prev_end_offset = cur_offset + envelope_size;
4620 if 2 > max_ordinal {
4621 return Ok(());
4622 }
4623
4624 let cur_offset: usize = (2 - 1) * envelope_size;
4627
4628 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4630
4631 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty, 64>, D>(
4636 self.properties.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
4637 encoder, offset + cur_offset, depth
4638 )?;
4639
4640 _prev_end_offset = cur_offset + envelope_size;
4641
4642 Ok(())
4643 }
4644 }
4645
4646 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TestNodeAddArgs {
4647 #[inline(always)]
4648 fn new_empty() -> Self {
4649 Self::default()
4650 }
4651
4652 unsafe fn decode(
4653 &mut self,
4654 decoder: &mut fidl::encoding::Decoder<'_, D>,
4655 offset: usize,
4656 mut depth: fidl::encoding::Depth,
4657 ) -> fidl::Result<()> {
4658 decoder.debug_check_bounds::<Self>(offset);
4659 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4660 None => return Err(fidl::Error::NotNullable),
4661 Some(len) => len,
4662 };
4663 if len == 0 {
4665 return Ok(());
4666 };
4667 depth.increment()?;
4668 let envelope_size = 8;
4669 let bytes_len = len * envelope_size;
4670 let offset = decoder.out_of_line_offset(bytes_len)?;
4671 let mut _next_ordinal_to_read = 0;
4673 let mut next_offset = offset;
4674 let end_offset = offset + bytes_len;
4675 _next_ordinal_to_read += 1;
4676 if next_offset >= end_offset {
4677 return Ok(());
4678 }
4679
4680 while _next_ordinal_to_read < 1 {
4682 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4683 _next_ordinal_to_read += 1;
4684 next_offset += envelope_size;
4685 }
4686
4687 let next_out_of_line = decoder.next_out_of_line();
4688 let handles_before = decoder.remaining_handles();
4689 if let Some((inlined, num_bytes, num_handles)) =
4690 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4691 {
4692 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4693 if inlined != (member_inline_size <= 4) {
4694 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4695 }
4696 let inner_offset;
4697 let mut inner_depth = depth.clone();
4698 if inlined {
4699 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4700 inner_offset = next_offset;
4701 } else {
4702 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4703 inner_depth.increment()?;
4704 }
4705 let val_ref = self.name.get_or_insert_with(|| {
4706 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
4707 });
4708 fidl::decode!(
4709 fidl::encoding::BoundedString<1024>,
4710 D,
4711 val_ref,
4712 decoder,
4713 inner_offset,
4714 inner_depth
4715 )?;
4716 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4717 {
4718 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4719 }
4720 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4721 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4722 }
4723 }
4724
4725 next_offset += envelope_size;
4726 _next_ordinal_to_read += 1;
4727 if next_offset >= end_offset {
4728 return Ok(());
4729 }
4730
4731 while _next_ordinal_to_read < 2 {
4733 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4734 _next_ordinal_to_read += 1;
4735 next_offset += envelope_size;
4736 }
4737
4738 let next_out_of_line = decoder.next_out_of_line();
4739 let handles_before = decoder.remaining_handles();
4740 if let Some((inlined, num_bytes, num_handles)) =
4741 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4742 {
4743 let member_inline_size = <fidl::encoding::Vector<
4744 fidl_fuchsia_driver_framework_common::NodeProperty,
4745 64,
4746 > as fidl::encoding::TypeMarker>::inline_size(
4747 decoder.context
4748 );
4749 if inlined != (member_inline_size <= 4) {
4750 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4751 }
4752 let inner_offset;
4753 let mut inner_depth = depth.clone();
4754 if inlined {
4755 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4756 inner_offset = next_offset;
4757 } else {
4758 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4759 inner_depth.increment()?;
4760 }
4761 let val_ref =
4762 self.properties.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty, 64>, D));
4763 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_driver_framework_common::NodeProperty, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
4764 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4765 {
4766 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4767 }
4768 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4769 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4770 }
4771 }
4772
4773 next_offset += envelope_size;
4774
4775 while next_offset < end_offset {
4777 _next_ordinal_to_read += 1;
4778 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4779 next_offset += envelope_size;
4780 }
4781
4782 Ok(())
4783 }
4784 }
4785
4786 impl ThreadInfo {
4787 #[inline(always)]
4788 fn max_ordinal_present(&self) -> u64 {
4789 if let Some(_) = self.scheduler_role {
4790 return 3;
4791 }
4792 if let Some(_) = self.name {
4793 return 2;
4794 }
4795 if let Some(_) = self.koid {
4796 return 1;
4797 }
4798 0
4799 }
4800 }
4801
4802 impl fidl::encoding::ValueTypeMarker for ThreadInfo {
4803 type Borrowed<'a> = &'a Self;
4804 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4805 value
4806 }
4807 }
4808
4809 unsafe impl fidl::encoding::TypeMarker for ThreadInfo {
4810 type Owned = Self;
4811
4812 #[inline(always)]
4813 fn inline_align(_context: fidl::encoding::Context) -> usize {
4814 8
4815 }
4816
4817 #[inline(always)]
4818 fn inline_size(_context: fidl::encoding::Context) -> usize {
4819 16
4820 }
4821 }
4822
4823 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ThreadInfo, D>
4824 for &ThreadInfo
4825 {
4826 unsafe fn encode(
4827 self,
4828 encoder: &mut fidl::encoding::Encoder<'_, D>,
4829 offset: usize,
4830 mut depth: fidl::encoding::Depth,
4831 ) -> fidl::Result<()> {
4832 encoder.debug_check_bounds::<ThreadInfo>(offset);
4833 let max_ordinal: u64 = self.max_ordinal_present();
4835 encoder.write_num(max_ordinal, offset);
4836 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4837 if max_ordinal == 0 {
4839 return Ok(());
4840 }
4841 depth.increment()?;
4842 let envelope_size = 8;
4843 let bytes_len = max_ordinal as usize * envelope_size;
4844 #[allow(unused_variables)]
4845 let offset = encoder.out_of_line_offset(bytes_len);
4846 let mut _prev_end_offset: usize = 0;
4847 if 1 > max_ordinal {
4848 return Ok(());
4849 }
4850
4851 let cur_offset: usize = (1 - 1) * envelope_size;
4854
4855 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4857
4858 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4863 self.koid.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4864 encoder,
4865 offset + cur_offset,
4866 depth,
4867 )?;
4868
4869 _prev_end_offset = cur_offset + envelope_size;
4870 if 2 > max_ordinal {
4871 return Ok(());
4872 }
4873
4874 let cur_offset: usize = (2 - 1) * envelope_size;
4877
4878 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4880
4881 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4886 self.name.as_ref().map(
4887 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4888 ),
4889 encoder,
4890 offset + cur_offset,
4891 depth,
4892 )?;
4893
4894 _prev_end_offset = cur_offset + envelope_size;
4895 if 3 > max_ordinal {
4896 return Ok(());
4897 }
4898
4899 let cur_offset: usize = (3 - 1) * envelope_size;
4902
4903 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4905
4906 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4911 self.scheduler_role.as_ref().map(
4912 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4913 ),
4914 encoder,
4915 offset + cur_offset,
4916 depth,
4917 )?;
4918
4919 _prev_end_offset = cur_offset + envelope_size;
4920
4921 Ok(())
4922 }
4923 }
4924
4925 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ThreadInfo {
4926 #[inline(always)]
4927 fn new_empty() -> Self {
4928 Self::default()
4929 }
4930
4931 unsafe fn decode(
4932 &mut self,
4933 decoder: &mut fidl::encoding::Decoder<'_, D>,
4934 offset: usize,
4935 mut depth: fidl::encoding::Depth,
4936 ) -> fidl::Result<()> {
4937 decoder.debug_check_bounds::<Self>(offset);
4938 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4939 None => return Err(fidl::Error::NotNullable),
4940 Some(len) => len,
4941 };
4942 if len == 0 {
4944 return Ok(());
4945 };
4946 depth.increment()?;
4947 let envelope_size = 8;
4948 let bytes_len = len * envelope_size;
4949 let offset = decoder.out_of_line_offset(bytes_len)?;
4950 let mut _next_ordinal_to_read = 0;
4952 let mut next_offset = offset;
4953 let end_offset = offset + bytes_len;
4954 _next_ordinal_to_read += 1;
4955 if next_offset >= end_offset {
4956 return Ok(());
4957 }
4958
4959 while _next_ordinal_to_read < 1 {
4961 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4962 _next_ordinal_to_read += 1;
4963 next_offset += envelope_size;
4964 }
4965
4966 let next_out_of_line = decoder.next_out_of_line();
4967 let handles_before = decoder.remaining_handles();
4968 if let Some((inlined, num_bytes, num_handles)) =
4969 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4970 {
4971 let member_inline_size =
4972 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4973 if inlined != (member_inline_size <= 4) {
4974 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4975 }
4976 let inner_offset;
4977 let mut inner_depth = depth.clone();
4978 if inlined {
4979 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4980 inner_offset = next_offset;
4981 } else {
4982 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4983 inner_depth.increment()?;
4984 }
4985 let val_ref = self.koid.get_or_insert_with(|| fidl::new_empty!(u64, D));
4986 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4987 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4988 {
4989 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4990 }
4991 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4992 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4993 }
4994 }
4995
4996 next_offset += envelope_size;
4997 _next_ordinal_to_read += 1;
4998 if next_offset >= end_offset {
4999 return Ok(());
5000 }
5001
5002 while _next_ordinal_to_read < 2 {
5004 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5005 _next_ordinal_to_read += 1;
5006 next_offset += envelope_size;
5007 }
5008
5009 let next_out_of_line = decoder.next_out_of_line();
5010 let handles_before = decoder.remaining_handles();
5011 if let Some((inlined, num_bytes, num_handles)) =
5012 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5013 {
5014 let member_inline_size =
5015 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
5016 decoder.context,
5017 );
5018 if inlined != (member_inline_size <= 4) {
5019 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5020 }
5021 let inner_offset;
5022 let mut inner_depth = depth.clone();
5023 if inlined {
5024 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5025 inner_offset = next_offset;
5026 } else {
5027 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5028 inner_depth.increment()?;
5029 }
5030 let val_ref = self
5031 .name
5032 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
5033 fidl::decode!(
5034 fidl::encoding::UnboundedString,
5035 D,
5036 val_ref,
5037 decoder,
5038 inner_offset,
5039 inner_depth
5040 )?;
5041 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5042 {
5043 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5044 }
5045 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5046 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5047 }
5048 }
5049
5050 next_offset += envelope_size;
5051 _next_ordinal_to_read += 1;
5052 if next_offset >= end_offset {
5053 return Ok(());
5054 }
5055
5056 while _next_ordinal_to_read < 3 {
5058 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5059 _next_ordinal_to_read += 1;
5060 next_offset += envelope_size;
5061 }
5062
5063 let next_out_of_line = decoder.next_out_of_line();
5064 let handles_before = decoder.remaining_handles();
5065 if let Some((inlined, num_bytes, num_handles)) =
5066 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5067 {
5068 let member_inline_size =
5069 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
5070 decoder.context,
5071 );
5072 if inlined != (member_inline_size <= 4) {
5073 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5074 }
5075 let inner_offset;
5076 let mut inner_depth = depth.clone();
5077 if inlined {
5078 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5079 inner_offset = next_offset;
5080 } else {
5081 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5082 inner_depth.increment()?;
5083 }
5084 let val_ref = self
5085 .scheduler_role
5086 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
5087 fidl::decode!(
5088 fidl::encoding::UnboundedString,
5089 D,
5090 val_ref,
5091 decoder,
5092 inner_offset,
5093 inner_depth
5094 )?;
5095 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5096 {
5097 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5098 }
5099 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5100 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5101 }
5102 }
5103
5104 next_offset += envelope_size;
5105
5106 while next_offset < end_offset {
5108 _next_ordinal_to_read += 1;
5109 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5110 next_offset += envelope_size;
5111 }
5112
5113 Ok(())
5114 }
5115 }
5116
5117 impl fidl::encoding::ValueTypeMarker for CompositeInfo {
5118 type Borrowed<'a> = &'a Self;
5119 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5120 value
5121 }
5122 }
5123
5124 unsafe impl fidl::encoding::TypeMarker for CompositeInfo {
5125 type Owned = Self;
5126
5127 #[inline(always)]
5128 fn inline_align(_context: fidl::encoding::Context) -> usize {
5129 8
5130 }
5131
5132 #[inline(always)]
5133 fn inline_size(_context: fidl::encoding::Context) -> usize {
5134 16
5135 }
5136 }
5137
5138 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeInfo, D>
5139 for &CompositeInfo
5140 {
5141 #[inline]
5142 unsafe fn encode(
5143 self,
5144 encoder: &mut fidl::encoding::Encoder<'_, D>,
5145 offset: usize,
5146 _depth: fidl::encoding::Depth,
5147 ) -> fidl::Result<()> {
5148 encoder.debug_check_bounds::<CompositeInfo>(offset);
5149 encoder.write_num::<u64>(self.ordinal(), offset);
5150 match self {
5151 CompositeInfo::Composite(ref val) => {
5152 fidl::encoding::encode_in_envelope::<fidl_fuchsia_driver_framework_common::CompositeInfo, D>(
5153 <fidl_fuchsia_driver_framework_common::CompositeInfo as fidl::encoding::ValueTypeMarker>::borrow(val),
5154 encoder, offset + 8, _depth
5155 )
5156 }
5157 }
5158 }
5159 }
5160
5161 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeInfo {
5162 #[inline(always)]
5163 fn new_empty() -> Self {
5164 Self::Composite(fidl::new_empty!(
5165 fidl_fuchsia_driver_framework_common::CompositeInfo,
5166 D
5167 ))
5168 }
5169
5170 #[inline]
5171 unsafe fn decode(
5172 &mut self,
5173 decoder: &mut fidl::encoding::Decoder<'_, D>,
5174 offset: usize,
5175 mut depth: fidl::encoding::Depth,
5176 ) -> fidl::Result<()> {
5177 decoder.debug_check_bounds::<Self>(offset);
5178 #[allow(unused_variables)]
5179 let next_out_of_line = decoder.next_out_of_line();
5180 let handles_before = decoder.remaining_handles();
5181 let (ordinal, inlined, num_bytes, num_handles) =
5182 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
5183
5184 let member_inline_size = match ordinal {
5185 2 => <fidl_fuchsia_driver_framework_common::CompositeInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5186 _ => return Err(fidl::Error::UnknownUnionTag),
5187 };
5188
5189 if inlined != (member_inline_size <= 4) {
5190 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5191 }
5192 let _inner_offset;
5193 if inlined {
5194 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
5195 _inner_offset = offset + 8;
5196 } else {
5197 depth.increment()?;
5198 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5199 }
5200 match ordinal {
5201 2 => {
5202 #[allow(irrefutable_let_patterns)]
5203 if let CompositeInfo::Composite(_) = self {
5204 } else {
5206 *self = CompositeInfo::Composite(fidl::new_empty!(
5208 fidl_fuchsia_driver_framework_common::CompositeInfo,
5209 D
5210 ));
5211 }
5212 #[allow(irrefutable_let_patterns)]
5213 if let CompositeInfo::Composite(ref mut val) = self {
5214 fidl::decode!(
5215 fidl_fuchsia_driver_framework_common::CompositeInfo,
5216 D,
5217 val,
5218 decoder,
5219 _inner_offset,
5220 depth
5221 )?;
5222 } else {
5223 unreachable!()
5224 }
5225 }
5226 ordinal => panic!("unexpected ordinal {:?}", ordinal),
5227 }
5228 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
5229 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5230 }
5231 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5232 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5233 }
5234 Ok(())
5235 }
5236 }
5237}