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 #[doc(hidden)]
177 pub __source_breaking: fidl::marker::SourceBreaking,
178}
179
180impl fidl::Persistable for CompositeNodeInfo {}
181
182#[derive(Clone, Debug, Default, PartialEq)]
184pub struct DispatcherInfo {
185 pub driver: Option<String>,
187 pub name: Option<String>,
189 pub options: Option<u32>,
191 pub scheduler_role: Option<String>,
193 #[doc(hidden)]
194 pub __source_breaking: fidl::marker::SourceBreaking,
195}
196
197impl fidl::Persistable for DispatcherInfo {}
198
199#[derive(Clone, Debug, Default, PartialEq)]
201pub struct DriverHostInfo {
202 pub process_koid: Option<u64>,
204 pub threads: Option<Vec<ThreadInfo>>,
206 pub drivers: Option<Vec<String>>,
208 pub dispatchers: Option<Vec<DispatcherInfo>>,
210 pub name: Option<String>,
212 #[doc(hidden)]
213 pub __source_breaking: fidl::marker::SourceBreaking,
214}
215
216impl fidl::Persistable for DriverHostInfo {}
217
218#[derive(Clone, Debug, Default, PartialEq)]
220pub struct NodeBindingInfo {
221 pub node_name: Option<String>,
223 pub driver_url: Option<String>,
226 pub composite_parents: Option<Vec<fidl_fuchsia_driver_framework__common::CompositeParent>>,
229 #[doc(hidden)]
230 pub __source_breaking: fidl::marker::SourceBreaking,
231}
232
233impl fidl::Persistable for NodeBindingInfo {}
234
235#[derive(Clone, Debug, Default, PartialEq)]
236pub struct NodeInfo {
237 pub id: Option<u64>,
239 pub parent_ids: Option<Vec<u64>>,
241 pub child_ids: Option<Vec<u64>>,
243 pub driver_host_koid: Option<u64>,
245 pub bound_driver_url: Option<String>,
247 pub moniker: Option<String>,
249 pub node_property_list: Option<Vec<fidl_fuchsia_driver_framework__common::NodeProperty>>,
251 pub offer_list: Option<Vec<fidl_fuchsia_component_decl__common::Offer>>,
253 pub quarantined: Option<bool>,
256 pub bus_topology: Option<Vec<fidl_fuchsia_driver_framework__common::BusInfo>>,
258 #[doc(hidden)]
259 pub __source_breaking: fidl::marker::SourceBreaking,
260}
261
262impl fidl::Persistable for NodeInfo {}
263
264#[derive(Clone, Debug, Default, PartialEq)]
265pub struct TestNodeAddArgs {
266 pub name: Option<String>,
268 pub properties: Option<Vec<fidl_fuchsia_driver_framework__common::NodeProperty>>,
270 #[doc(hidden)]
271 pub __source_breaking: fidl::marker::SourceBreaking,
272}
273
274impl fidl::Persistable for TestNodeAddArgs {}
275
276#[derive(Clone, Debug, Default, PartialEq)]
278pub struct ThreadInfo {
279 pub koid: Option<u64>,
281 pub name: Option<String>,
283 pub scheduler_role: Option<String>,
285 #[doc(hidden)]
286 pub __source_breaking: fidl::marker::SourceBreaking,
287}
288
289impl fidl::Persistable for ThreadInfo {}
290
291#[derive(Clone, Debug, PartialEq)]
293pub enum CompositeInfo {
294 Composite(fidl_fuchsia_driver_framework__common::CompositeInfo),
295}
296
297impl CompositeInfo {
298 #[inline]
299 pub fn ordinal(&self) -> u64 {
300 match *self {
301 Self::Composite(_) => 2,
302 }
303 }
304}
305
306impl fidl::Persistable for CompositeInfo {}
307
308pub mod composite_info_iterator_ordinals {
309 pub const GET_NEXT: u64 = 0x50af808a6e34bb96;
310}
311
312pub mod composite_node_spec_iterator_ordinals {
313 pub const GET_NEXT: u64 = 0x32fd110355479f71;
314}
315
316pub mod driver_host_info_iterator_ordinals {
317 pub const GET_NEXT: u64 = 0xbf58e5cd863a86;
318}
319
320pub mod driver_info_iterator_ordinals {
321 pub const GET_NEXT: u64 = 0x2c394711c6784952;
322}
323
324pub mod manager_ordinals {
325 pub const GET_DRIVER_INFO: u64 = 0x34b1541e24e5d587;
326 pub const GET_COMPOSITE_NODE_SPECS: u64 = 0x258540c7ff37328f;
327 pub const GET_NODE_INFO: u64 = 0x7c272c6b7bcb4f9e;
328 pub const GET_COMPOSITE_INFO: u64 = 0x4456da4372a49a36;
329 pub const GET_DRIVER_HOST_INFO: u64 = 0x366b2c4429d44155;
330 pub const RESTART_DRIVER_HOSTS: u64 = 0x64fb09a17a4dd8c7;
331 pub const DISABLE_DRIVER: u64 = 0x3cabde92ba1ac967;
332 pub const ENABLE_DRIVER: u64 = 0x76a7518712965faf;
333 pub const BIND_ALL_UNBOUND_NODES: u64 = 0x2b4343fe1cfb9f21;
334 pub const BIND_ALL_UNBOUND_NODES2: u64 = 0x3e82ce2d6fc998d7;
335 pub const ADD_TEST_NODE: u64 = 0x774836bbb7fbc5b9;
336 pub const REMOVE_TEST_NODE: u64 = 0x1618ec4e5fc4010e;
337 pub const WAIT_FOR_BOOTUP: u64 = 0x52077de068225cdc;
338 pub const RESTART_WITH_DICTIONARY: u64 = 0x5eb620a85359a10e;
339 pub const REBIND_COMPOSITES_WITH_DRIVER: u64 = 0x175d492045f61f28;
340}
341
342pub mod node_info_iterator_ordinals {
343 pub const GET_NEXT: u64 = 0x33c7c070412f889f;
344}
345
346mod internal {
347 use super::*;
348 unsafe impl fidl::encoding::TypeMarker for RestartRematchFlags {
349 type Owned = Self;
350
351 #[inline(always)]
352 fn inline_align(_context: fidl::encoding::Context) -> usize {
353 4
354 }
355
356 #[inline(always)]
357 fn inline_size(_context: fidl::encoding::Context) -> usize {
358 4
359 }
360 }
361
362 impl fidl::encoding::ValueTypeMarker for RestartRematchFlags {
363 type Borrowed<'a> = Self;
364 #[inline(always)]
365 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
366 *value
367 }
368 }
369
370 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
371 for RestartRematchFlags
372 {
373 #[inline]
374 unsafe fn encode(
375 self,
376 encoder: &mut fidl::encoding::Encoder<'_, D>,
377 offset: usize,
378 _depth: fidl::encoding::Depth,
379 ) -> fidl::Result<()> {
380 encoder.debug_check_bounds::<Self>(offset);
381 encoder.write_num(self.bits(), offset);
382 Ok(())
383 }
384 }
385
386 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RestartRematchFlags {
387 #[inline(always)]
388 fn new_empty() -> Self {
389 Self::empty()
390 }
391
392 #[inline]
393 unsafe fn decode(
394 &mut self,
395 decoder: &mut fidl::encoding::Decoder<'_, D>,
396 offset: usize,
397 _depth: fidl::encoding::Depth,
398 ) -> fidl::Result<()> {
399 decoder.debug_check_bounds::<Self>(offset);
400 let prim = decoder.read_num::<u32>(offset);
401 *self = Self::from_bits_allow_unknown(prim);
402 Ok(())
403 }
404 }
405
406 impl fidl::encoding::ValueTypeMarker for CompositeInfoIteratorGetNextResponse {
407 type Borrowed<'a> = &'a Self;
408 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
409 value
410 }
411 }
412
413 unsafe impl fidl::encoding::TypeMarker for CompositeInfoIteratorGetNextResponse {
414 type Owned = Self;
415
416 #[inline(always)]
417 fn inline_align(_context: fidl::encoding::Context) -> usize {
418 8
419 }
420
421 #[inline(always)]
422 fn inline_size(_context: fidl::encoding::Context) -> usize {
423 16
424 }
425 }
426
427 unsafe impl<D: fidl::encoding::ResourceDialect>
428 fidl::encoding::Encode<CompositeInfoIteratorGetNextResponse, D>
429 for &CompositeInfoIteratorGetNextResponse
430 {
431 #[inline]
432 unsafe fn encode(
433 self,
434 encoder: &mut fidl::encoding::Encoder<'_, D>,
435 offset: usize,
436 _depth: fidl::encoding::Depth,
437 ) -> fidl::Result<()> {
438 encoder.debug_check_bounds::<CompositeInfoIteratorGetNextResponse>(offset);
439 fidl::encoding::Encode::<CompositeInfoIteratorGetNextResponse, D>::encode(
441 (
442 <fidl::encoding::UnboundedVector<CompositeNodeInfo> as fidl::encoding::ValueTypeMarker>::borrow(&self.composites),
443 ),
444 encoder, offset, _depth
445 )
446 }
447 }
448 unsafe impl<
449 D: fidl::encoding::ResourceDialect,
450 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<CompositeNodeInfo>, D>,
451 > fidl::encoding::Encode<CompositeInfoIteratorGetNextResponse, D> for (T0,)
452 {
453 #[inline]
454 unsafe fn encode(
455 self,
456 encoder: &mut fidl::encoding::Encoder<'_, D>,
457 offset: usize,
458 depth: fidl::encoding::Depth,
459 ) -> fidl::Result<()> {
460 encoder.debug_check_bounds::<CompositeInfoIteratorGetNextResponse>(offset);
461 self.0.encode(encoder, offset + 0, depth)?;
465 Ok(())
466 }
467 }
468
469 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
470 for CompositeInfoIteratorGetNextResponse
471 {
472 #[inline(always)]
473 fn new_empty() -> Self {
474 Self {
475 composites: fidl::new_empty!(fidl::encoding::UnboundedVector<CompositeNodeInfo>, D),
476 }
477 }
478
479 #[inline]
480 unsafe fn decode(
481 &mut self,
482 decoder: &mut fidl::encoding::Decoder<'_, D>,
483 offset: usize,
484 _depth: fidl::encoding::Depth,
485 ) -> fidl::Result<()> {
486 decoder.debug_check_bounds::<Self>(offset);
487 fidl::decode!(
489 fidl::encoding::UnboundedVector<CompositeNodeInfo>,
490 D,
491 &mut self.composites,
492 decoder,
493 offset + 0,
494 _depth
495 )?;
496 Ok(())
497 }
498 }
499
500 impl fidl::encoding::ValueTypeMarker for CompositeNodeSpecIteratorGetNextResponse {
501 type Borrowed<'a> = &'a Self;
502 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
503 value
504 }
505 }
506
507 unsafe impl fidl::encoding::TypeMarker for CompositeNodeSpecIteratorGetNextResponse {
508 type Owned = Self;
509
510 #[inline(always)]
511 fn inline_align(_context: fidl::encoding::Context) -> usize {
512 8
513 }
514
515 #[inline(always)]
516 fn inline_size(_context: fidl::encoding::Context) -> usize {
517 16
518 }
519 }
520
521 unsafe impl<D: fidl::encoding::ResourceDialect>
522 fidl::encoding::Encode<CompositeNodeSpecIteratorGetNextResponse, D>
523 for &CompositeNodeSpecIteratorGetNextResponse
524 {
525 #[inline]
526 unsafe fn encode(
527 self,
528 encoder: &mut fidl::encoding::Encoder<'_, D>,
529 offset: usize,
530 _depth: fidl::encoding::Depth,
531 ) -> fidl::Result<()> {
532 encoder.debug_check_bounds::<CompositeNodeSpecIteratorGetNextResponse>(offset);
533 fidl::encoding::Encode::<CompositeNodeSpecIteratorGetNextResponse, D>::encode(
535 (<fidl::encoding::UnboundedVector<
536 fidl_fuchsia_driver_framework__common::CompositeInfo,
537 > as fidl::encoding::ValueTypeMarker>::borrow(&self.specs),),
538 encoder,
539 offset,
540 _depth,
541 )
542 }
543 }
544 unsafe impl<
545 D: fidl::encoding::ResourceDialect,
546 T0: fidl::encoding::Encode<
547 fidl::encoding::UnboundedVector<
548 fidl_fuchsia_driver_framework__common::CompositeInfo,
549 >,
550 D,
551 >,
552 > fidl::encoding::Encode<CompositeNodeSpecIteratorGetNextResponse, D> for (T0,)
553 {
554 #[inline]
555 unsafe fn encode(
556 self,
557 encoder: &mut fidl::encoding::Encoder<'_, D>,
558 offset: usize,
559 depth: fidl::encoding::Depth,
560 ) -> fidl::Result<()> {
561 encoder.debug_check_bounds::<CompositeNodeSpecIteratorGetNextResponse>(offset);
562 self.0.encode(encoder, offset + 0, depth)?;
566 Ok(())
567 }
568 }
569
570 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
571 for CompositeNodeSpecIteratorGetNextResponse
572 {
573 #[inline(always)]
574 fn new_empty() -> Self {
575 Self {
576 specs: fidl::new_empty!(
577 fidl::encoding::UnboundedVector<
578 fidl_fuchsia_driver_framework__common::CompositeInfo,
579 >,
580 D
581 ),
582 }
583 }
584
585 #[inline]
586 unsafe fn decode(
587 &mut self,
588 decoder: &mut fidl::encoding::Decoder<'_, D>,
589 offset: usize,
590 _depth: fidl::encoding::Depth,
591 ) -> fidl::Result<()> {
592 decoder.debug_check_bounds::<Self>(offset);
593 fidl::decode!(
595 fidl::encoding::UnboundedVector<
596 fidl_fuchsia_driver_framework__common::CompositeInfo,
597 >,
598 D,
599 &mut self.specs,
600 decoder,
601 offset + 0,
602 _depth
603 )?;
604 Ok(())
605 }
606 }
607
608 impl fidl::encoding::ValueTypeMarker for DriverHostInfoIteratorGetNextResponse {
609 type Borrowed<'a> = &'a Self;
610 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
611 value
612 }
613 }
614
615 unsafe impl fidl::encoding::TypeMarker for DriverHostInfoIteratorGetNextResponse {
616 type Owned = Self;
617
618 #[inline(always)]
619 fn inline_align(_context: fidl::encoding::Context) -> usize {
620 8
621 }
622
623 #[inline(always)]
624 fn inline_size(_context: fidl::encoding::Context) -> usize {
625 16
626 }
627 }
628
629 unsafe impl<D: fidl::encoding::ResourceDialect>
630 fidl::encoding::Encode<DriverHostInfoIteratorGetNextResponse, D>
631 for &DriverHostInfoIteratorGetNextResponse
632 {
633 #[inline]
634 unsafe fn encode(
635 self,
636 encoder: &mut fidl::encoding::Encoder<'_, D>,
637 offset: usize,
638 _depth: fidl::encoding::Depth,
639 ) -> fidl::Result<()> {
640 encoder.debug_check_bounds::<DriverHostInfoIteratorGetNextResponse>(offset);
641 fidl::encoding::Encode::<DriverHostInfoIteratorGetNextResponse, D>::encode(
643 (
644 <fidl::encoding::UnboundedVector<DriverHostInfo> as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_hosts),
645 ),
646 encoder, offset, _depth
647 )
648 }
649 }
650 unsafe impl<
651 D: fidl::encoding::ResourceDialect,
652 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<DriverHostInfo>, D>,
653 > fidl::encoding::Encode<DriverHostInfoIteratorGetNextResponse, D> for (T0,)
654 {
655 #[inline]
656 unsafe fn encode(
657 self,
658 encoder: &mut fidl::encoding::Encoder<'_, D>,
659 offset: usize,
660 depth: fidl::encoding::Depth,
661 ) -> fidl::Result<()> {
662 encoder.debug_check_bounds::<DriverHostInfoIteratorGetNextResponse>(offset);
663 self.0.encode(encoder, offset + 0, depth)?;
667 Ok(())
668 }
669 }
670
671 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
672 for DriverHostInfoIteratorGetNextResponse
673 {
674 #[inline(always)]
675 fn new_empty() -> Self {
676 Self {
677 driver_hosts: fidl::new_empty!(fidl::encoding::UnboundedVector<DriverHostInfo>, D),
678 }
679 }
680
681 #[inline]
682 unsafe fn decode(
683 &mut self,
684 decoder: &mut fidl::encoding::Decoder<'_, D>,
685 offset: usize,
686 _depth: fidl::encoding::Depth,
687 ) -> fidl::Result<()> {
688 decoder.debug_check_bounds::<Self>(offset);
689 fidl::decode!(
691 fidl::encoding::UnboundedVector<DriverHostInfo>,
692 D,
693 &mut self.driver_hosts,
694 decoder,
695 offset + 0,
696 _depth
697 )?;
698 Ok(())
699 }
700 }
701
702 impl fidl::encoding::ValueTypeMarker for DriverInfoIteratorGetNextResponse {
703 type Borrowed<'a> = &'a Self;
704 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
705 value
706 }
707 }
708
709 unsafe impl fidl::encoding::TypeMarker for DriverInfoIteratorGetNextResponse {
710 type Owned = Self;
711
712 #[inline(always)]
713 fn inline_align(_context: fidl::encoding::Context) -> usize {
714 8
715 }
716
717 #[inline(always)]
718 fn inline_size(_context: fidl::encoding::Context) -> usize {
719 16
720 }
721 }
722
723 unsafe impl<D: fidl::encoding::ResourceDialect>
724 fidl::encoding::Encode<DriverInfoIteratorGetNextResponse, D>
725 for &DriverInfoIteratorGetNextResponse
726 {
727 #[inline]
728 unsafe fn encode(
729 self,
730 encoder: &mut fidl::encoding::Encoder<'_, D>,
731 offset: usize,
732 _depth: fidl::encoding::Depth,
733 ) -> fidl::Result<()> {
734 encoder.debug_check_bounds::<DriverInfoIteratorGetNextResponse>(offset);
735 fidl::encoding::Encode::<DriverInfoIteratorGetNextResponse, D>::encode(
737 (<fidl::encoding::UnboundedVector<
738 fidl_fuchsia_driver_framework__common::DriverInfo,
739 > as fidl::encoding::ValueTypeMarker>::borrow(&self.drivers),),
740 encoder,
741 offset,
742 _depth,
743 )
744 }
745 }
746 unsafe impl<
747 D: fidl::encoding::ResourceDialect,
748 T0: fidl::encoding::Encode<
749 fidl::encoding::UnboundedVector<fidl_fuchsia_driver_framework__common::DriverInfo>,
750 D,
751 >,
752 > fidl::encoding::Encode<DriverInfoIteratorGetNextResponse, D> for (T0,)
753 {
754 #[inline]
755 unsafe fn encode(
756 self,
757 encoder: &mut fidl::encoding::Encoder<'_, D>,
758 offset: usize,
759 depth: fidl::encoding::Depth,
760 ) -> fidl::Result<()> {
761 encoder.debug_check_bounds::<DriverInfoIteratorGetNextResponse>(offset);
762 self.0.encode(encoder, offset + 0, depth)?;
766 Ok(())
767 }
768 }
769
770 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
771 for DriverInfoIteratorGetNextResponse
772 {
773 #[inline(always)]
774 fn new_empty() -> Self {
775 Self {
776 drivers: fidl::new_empty!(
777 fidl::encoding::UnboundedVector<
778 fidl_fuchsia_driver_framework__common::DriverInfo,
779 >,
780 D
781 ),
782 }
783 }
784
785 #[inline]
786 unsafe fn decode(
787 &mut self,
788 decoder: &mut fidl::encoding::Decoder<'_, D>,
789 offset: usize,
790 _depth: fidl::encoding::Depth,
791 ) -> fidl::Result<()> {
792 decoder.debug_check_bounds::<Self>(offset);
793 fidl::decode!(
795 fidl::encoding::UnboundedVector<fidl_fuchsia_driver_framework__common::DriverInfo>,
796 D,
797 &mut self.drivers,
798 decoder,
799 offset + 0,
800 _depth
801 )?;
802 Ok(())
803 }
804 }
805
806 impl fidl::encoding::ValueTypeMarker for ManagerAddTestNodeRequest {
807 type Borrowed<'a> = &'a Self;
808 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
809 value
810 }
811 }
812
813 unsafe impl fidl::encoding::TypeMarker for ManagerAddTestNodeRequest {
814 type Owned = Self;
815
816 #[inline(always)]
817 fn inline_align(_context: fidl::encoding::Context) -> usize {
818 8
819 }
820
821 #[inline(always)]
822 fn inline_size(_context: fidl::encoding::Context) -> usize {
823 16
824 }
825 }
826
827 unsafe impl<D: fidl::encoding::ResourceDialect>
828 fidl::encoding::Encode<ManagerAddTestNodeRequest, D> for &ManagerAddTestNodeRequest
829 {
830 #[inline]
831 unsafe fn encode(
832 self,
833 encoder: &mut fidl::encoding::Encoder<'_, D>,
834 offset: usize,
835 _depth: fidl::encoding::Depth,
836 ) -> fidl::Result<()> {
837 encoder.debug_check_bounds::<ManagerAddTestNodeRequest>(offset);
838 fidl::encoding::Encode::<ManagerAddTestNodeRequest, D>::encode(
840 (<TestNodeAddArgs as fidl::encoding::ValueTypeMarker>::borrow(&self.args),),
841 encoder,
842 offset,
843 _depth,
844 )
845 }
846 }
847 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<TestNodeAddArgs, D>>
848 fidl::encoding::Encode<ManagerAddTestNodeRequest, D> for (T0,)
849 {
850 #[inline]
851 unsafe fn encode(
852 self,
853 encoder: &mut fidl::encoding::Encoder<'_, D>,
854 offset: usize,
855 depth: fidl::encoding::Depth,
856 ) -> fidl::Result<()> {
857 encoder.debug_check_bounds::<ManagerAddTestNodeRequest>(offset);
858 self.0.encode(encoder, offset + 0, depth)?;
862 Ok(())
863 }
864 }
865
866 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
867 for ManagerAddTestNodeRequest
868 {
869 #[inline(always)]
870 fn new_empty() -> Self {
871 Self { args: fidl::new_empty!(TestNodeAddArgs, D) }
872 }
873
874 #[inline]
875 unsafe fn decode(
876 &mut self,
877 decoder: &mut fidl::encoding::Decoder<'_, D>,
878 offset: usize,
879 _depth: fidl::encoding::Depth,
880 ) -> fidl::Result<()> {
881 decoder.debug_check_bounds::<Self>(offset);
882 fidl::decode!(TestNodeAddArgs, D, &mut self.args, decoder, offset + 0, _depth)?;
884 Ok(())
885 }
886 }
887
888 impl fidl::encoding::ValueTypeMarker for ManagerDisableDriverRequest {
889 type Borrowed<'a> = &'a Self;
890 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
891 value
892 }
893 }
894
895 unsafe impl fidl::encoding::TypeMarker for ManagerDisableDriverRequest {
896 type Owned = Self;
897
898 #[inline(always)]
899 fn inline_align(_context: fidl::encoding::Context) -> usize {
900 8
901 }
902
903 #[inline(always)]
904 fn inline_size(_context: fidl::encoding::Context) -> usize {
905 32
906 }
907 }
908
909 unsafe impl<D: fidl::encoding::ResourceDialect>
910 fidl::encoding::Encode<ManagerDisableDriverRequest, D> for &ManagerDisableDriverRequest
911 {
912 #[inline]
913 unsafe fn encode(
914 self,
915 encoder: &mut fidl::encoding::Encoder<'_, D>,
916 offset: usize,
917 _depth: fidl::encoding::Depth,
918 ) -> fidl::Result<()> {
919 encoder.debug_check_bounds::<ManagerDisableDriverRequest>(offset);
920 fidl::encoding::Encode::<ManagerDisableDriverRequest, D>::encode(
922 (
923 <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_url),
924 <fidl::encoding::Optional<fidl::encoding::BoundedString<64>> as fidl::encoding::ValueTypeMarker>::borrow(&self.package_hash),
925 ),
926 encoder, offset, _depth
927 )
928 }
929 }
930 unsafe impl<
931 D: fidl::encoding::ResourceDialect,
932 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
933 T1: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<64>>, D>,
934 > fidl::encoding::Encode<ManagerDisableDriverRequest, D> for (T0, T1)
935 {
936 #[inline]
937 unsafe fn encode(
938 self,
939 encoder: &mut fidl::encoding::Encoder<'_, D>,
940 offset: usize,
941 depth: fidl::encoding::Depth,
942 ) -> fidl::Result<()> {
943 encoder.debug_check_bounds::<ManagerDisableDriverRequest>(offset);
944 self.0.encode(encoder, offset + 0, depth)?;
948 self.1.encode(encoder, offset + 16, depth)?;
949 Ok(())
950 }
951 }
952
953 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
954 for ManagerDisableDriverRequest
955 {
956 #[inline(always)]
957 fn new_empty() -> Self {
958 Self {
959 driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D),
960 package_hash: fidl::new_empty!(
961 fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
962 D
963 ),
964 }
965 }
966
967 #[inline]
968 unsafe fn decode(
969 &mut self,
970 decoder: &mut fidl::encoding::Decoder<'_, D>,
971 offset: usize,
972 _depth: fidl::encoding::Depth,
973 ) -> fidl::Result<()> {
974 decoder.debug_check_bounds::<Self>(offset);
975 fidl::decode!(
977 fidl::encoding::BoundedString<4096>,
978 D,
979 &mut self.driver_url,
980 decoder,
981 offset + 0,
982 _depth
983 )?;
984 fidl::decode!(
985 fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
986 D,
987 &mut self.package_hash,
988 decoder,
989 offset + 16,
990 _depth
991 )?;
992 Ok(())
993 }
994 }
995
996 impl fidl::encoding::ValueTypeMarker for ManagerEnableDriverRequest {
997 type Borrowed<'a> = &'a Self;
998 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
999 value
1000 }
1001 }
1002
1003 unsafe impl fidl::encoding::TypeMarker for ManagerEnableDriverRequest {
1004 type Owned = Self;
1005
1006 #[inline(always)]
1007 fn inline_align(_context: fidl::encoding::Context) -> usize {
1008 8
1009 }
1010
1011 #[inline(always)]
1012 fn inline_size(_context: fidl::encoding::Context) -> usize {
1013 32
1014 }
1015 }
1016
1017 unsafe impl<D: fidl::encoding::ResourceDialect>
1018 fidl::encoding::Encode<ManagerEnableDriverRequest, D> for &ManagerEnableDriverRequest
1019 {
1020 #[inline]
1021 unsafe fn encode(
1022 self,
1023 encoder: &mut fidl::encoding::Encoder<'_, D>,
1024 offset: usize,
1025 _depth: fidl::encoding::Depth,
1026 ) -> fidl::Result<()> {
1027 encoder.debug_check_bounds::<ManagerEnableDriverRequest>(offset);
1028 fidl::encoding::Encode::<ManagerEnableDriverRequest, D>::encode(
1030 (
1031 <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_url),
1032 <fidl::encoding::Optional<fidl::encoding::BoundedString<64>> as fidl::encoding::ValueTypeMarker>::borrow(&self.package_hash),
1033 ),
1034 encoder, offset, _depth
1035 )
1036 }
1037 }
1038 unsafe impl<
1039 D: fidl::encoding::ResourceDialect,
1040 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
1041 T1: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<64>>, D>,
1042 > fidl::encoding::Encode<ManagerEnableDriverRequest, D> for (T0, T1)
1043 {
1044 #[inline]
1045 unsafe fn encode(
1046 self,
1047 encoder: &mut fidl::encoding::Encoder<'_, D>,
1048 offset: usize,
1049 depth: fidl::encoding::Depth,
1050 ) -> fidl::Result<()> {
1051 encoder.debug_check_bounds::<ManagerEnableDriverRequest>(offset);
1052 self.0.encode(encoder, offset + 0, depth)?;
1056 self.1.encode(encoder, offset + 16, depth)?;
1057 Ok(())
1058 }
1059 }
1060
1061 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1062 for ManagerEnableDriverRequest
1063 {
1064 #[inline(always)]
1065 fn new_empty() -> Self {
1066 Self {
1067 driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D),
1068 package_hash: fidl::new_empty!(
1069 fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
1070 D
1071 ),
1072 }
1073 }
1074
1075 #[inline]
1076 unsafe fn decode(
1077 &mut self,
1078 decoder: &mut fidl::encoding::Decoder<'_, D>,
1079 offset: usize,
1080 _depth: fidl::encoding::Depth,
1081 ) -> fidl::Result<()> {
1082 decoder.debug_check_bounds::<Self>(offset);
1083 fidl::decode!(
1085 fidl::encoding::BoundedString<4096>,
1086 D,
1087 &mut self.driver_url,
1088 decoder,
1089 offset + 0,
1090 _depth
1091 )?;
1092 fidl::decode!(
1093 fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
1094 D,
1095 &mut self.package_hash,
1096 decoder,
1097 offset + 16,
1098 _depth
1099 )?;
1100 Ok(())
1101 }
1102 }
1103
1104 impl fidl::encoding::ValueTypeMarker for ManagerRebindCompositesWithDriverRequest {
1105 type Borrowed<'a> = &'a Self;
1106 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1107 value
1108 }
1109 }
1110
1111 unsafe impl fidl::encoding::TypeMarker for ManagerRebindCompositesWithDriverRequest {
1112 type Owned = Self;
1113
1114 #[inline(always)]
1115 fn inline_align(_context: fidl::encoding::Context) -> usize {
1116 8
1117 }
1118
1119 #[inline(always)]
1120 fn inline_size(_context: fidl::encoding::Context) -> usize {
1121 16
1122 }
1123 }
1124
1125 unsafe impl<D: fidl::encoding::ResourceDialect>
1126 fidl::encoding::Encode<ManagerRebindCompositesWithDriverRequest, D>
1127 for &ManagerRebindCompositesWithDriverRequest
1128 {
1129 #[inline]
1130 unsafe fn encode(
1131 self,
1132 encoder: &mut fidl::encoding::Encoder<'_, D>,
1133 offset: usize,
1134 _depth: fidl::encoding::Depth,
1135 ) -> fidl::Result<()> {
1136 encoder.debug_check_bounds::<ManagerRebindCompositesWithDriverRequest>(offset);
1137 fidl::encoding::Encode::<ManagerRebindCompositesWithDriverRequest, D>::encode(
1139 (<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(
1140 &self.driver_url,
1141 ),),
1142 encoder,
1143 offset,
1144 _depth,
1145 )
1146 }
1147 }
1148 unsafe impl<
1149 D: fidl::encoding::ResourceDialect,
1150 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
1151 > fidl::encoding::Encode<ManagerRebindCompositesWithDriverRequest, D> for (T0,)
1152 {
1153 #[inline]
1154 unsafe fn encode(
1155 self,
1156 encoder: &mut fidl::encoding::Encoder<'_, D>,
1157 offset: usize,
1158 depth: fidl::encoding::Depth,
1159 ) -> fidl::Result<()> {
1160 encoder.debug_check_bounds::<ManagerRebindCompositesWithDriverRequest>(offset);
1161 self.0.encode(encoder, offset + 0, depth)?;
1165 Ok(())
1166 }
1167 }
1168
1169 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1170 for ManagerRebindCompositesWithDriverRequest
1171 {
1172 #[inline(always)]
1173 fn new_empty() -> Self {
1174 Self { driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D) }
1175 }
1176
1177 #[inline]
1178 unsafe fn decode(
1179 &mut self,
1180 decoder: &mut fidl::encoding::Decoder<'_, D>,
1181 offset: usize,
1182 _depth: fidl::encoding::Depth,
1183 ) -> fidl::Result<()> {
1184 decoder.debug_check_bounds::<Self>(offset);
1185 fidl::decode!(
1187 fidl::encoding::BoundedString<4096>,
1188 D,
1189 &mut self.driver_url,
1190 decoder,
1191 offset + 0,
1192 _depth
1193 )?;
1194 Ok(())
1195 }
1196 }
1197
1198 impl fidl::encoding::ValueTypeMarker for ManagerRemoveTestNodeRequest {
1199 type Borrowed<'a> = &'a Self;
1200 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1201 value
1202 }
1203 }
1204
1205 unsafe impl fidl::encoding::TypeMarker for ManagerRemoveTestNodeRequest {
1206 type Owned = Self;
1207
1208 #[inline(always)]
1209 fn inline_align(_context: fidl::encoding::Context) -> usize {
1210 8
1211 }
1212
1213 #[inline(always)]
1214 fn inline_size(_context: fidl::encoding::Context) -> usize {
1215 16
1216 }
1217 }
1218
1219 unsafe impl<D: fidl::encoding::ResourceDialect>
1220 fidl::encoding::Encode<ManagerRemoveTestNodeRequest, D> for &ManagerRemoveTestNodeRequest
1221 {
1222 #[inline]
1223 unsafe fn encode(
1224 self,
1225 encoder: &mut fidl::encoding::Encoder<'_, D>,
1226 offset: usize,
1227 _depth: fidl::encoding::Depth,
1228 ) -> fidl::Result<()> {
1229 encoder.debug_check_bounds::<ManagerRemoveTestNodeRequest>(offset);
1230 fidl::encoding::Encode::<ManagerRemoveTestNodeRequest, D>::encode(
1232 (<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow(
1233 &self.name,
1234 ),),
1235 encoder,
1236 offset,
1237 _depth,
1238 )
1239 }
1240 }
1241 unsafe impl<
1242 D: fidl::encoding::ResourceDialect,
1243 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<1024>, D>,
1244 > fidl::encoding::Encode<ManagerRemoveTestNodeRequest, D> for (T0,)
1245 {
1246 #[inline]
1247 unsafe fn encode(
1248 self,
1249 encoder: &mut fidl::encoding::Encoder<'_, D>,
1250 offset: usize,
1251 depth: fidl::encoding::Depth,
1252 ) -> fidl::Result<()> {
1253 encoder.debug_check_bounds::<ManagerRemoveTestNodeRequest>(offset);
1254 self.0.encode(encoder, offset + 0, depth)?;
1258 Ok(())
1259 }
1260 }
1261
1262 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1263 for ManagerRemoveTestNodeRequest
1264 {
1265 #[inline(always)]
1266 fn new_empty() -> Self {
1267 Self { name: fidl::new_empty!(fidl::encoding::BoundedString<1024>, D) }
1268 }
1269
1270 #[inline]
1271 unsafe fn decode(
1272 &mut self,
1273 decoder: &mut fidl::encoding::Decoder<'_, D>,
1274 offset: usize,
1275 _depth: fidl::encoding::Depth,
1276 ) -> fidl::Result<()> {
1277 decoder.debug_check_bounds::<Self>(offset);
1278 fidl::decode!(
1280 fidl::encoding::BoundedString<1024>,
1281 D,
1282 &mut self.name,
1283 decoder,
1284 offset + 0,
1285 _depth
1286 )?;
1287 Ok(())
1288 }
1289 }
1290
1291 impl fidl::encoding::ValueTypeMarker for ManagerRestartDriverHostsRequest {
1292 type Borrowed<'a> = &'a Self;
1293 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1294 value
1295 }
1296 }
1297
1298 unsafe impl fidl::encoding::TypeMarker for ManagerRestartDriverHostsRequest {
1299 type Owned = Self;
1300
1301 #[inline(always)]
1302 fn inline_align(_context: fidl::encoding::Context) -> usize {
1303 8
1304 }
1305
1306 #[inline(always)]
1307 fn inline_size(_context: fidl::encoding::Context) -> usize {
1308 24
1309 }
1310 }
1311
1312 unsafe impl<D: fidl::encoding::ResourceDialect>
1313 fidl::encoding::Encode<ManagerRestartDriverHostsRequest, D>
1314 for &ManagerRestartDriverHostsRequest
1315 {
1316 #[inline]
1317 unsafe fn encode(
1318 self,
1319 encoder: &mut fidl::encoding::Encoder<'_, D>,
1320 offset: usize,
1321 _depth: fidl::encoding::Depth,
1322 ) -> fidl::Result<()> {
1323 encoder.debug_check_bounds::<ManagerRestartDriverHostsRequest>(offset);
1324 fidl::encoding::Encode::<ManagerRestartDriverHostsRequest, D>::encode(
1326 (
1327 <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_url),
1328 <RestartRematchFlags as fidl::encoding::ValueTypeMarker>::borrow(&self.rematch_flags),
1329 ),
1330 encoder, offset, _depth
1331 )
1332 }
1333 }
1334 unsafe impl<
1335 D: fidl::encoding::ResourceDialect,
1336 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
1337 T1: fidl::encoding::Encode<RestartRematchFlags, D>,
1338 > fidl::encoding::Encode<ManagerRestartDriverHostsRequest, D> for (T0, T1)
1339 {
1340 #[inline]
1341 unsafe fn encode(
1342 self,
1343 encoder: &mut fidl::encoding::Encoder<'_, D>,
1344 offset: usize,
1345 depth: fidl::encoding::Depth,
1346 ) -> fidl::Result<()> {
1347 encoder.debug_check_bounds::<ManagerRestartDriverHostsRequest>(offset);
1348 unsafe {
1351 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
1352 (ptr as *mut u64).write_unaligned(0);
1353 }
1354 self.0.encode(encoder, offset + 0, depth)?;
1356 self.1.encode(encoder, offset + 16, depth)?;
1357 Ok(())
1358 }
1359 }
1360
1361 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1362 for ManagerRestartDriverHostsRequest
1363 {
1364 #[inline(always)]
1365 fn new_empty() -> Self {
1366 Self {
1367 driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D),
1368 rematch_flags: fidl::new_empty!(RestartRematchFlags, D),
1369 }
1370 }
1371
1372 #[inline]
1373 unsafe fn decode(
1374 &mut self,
1375 decoder: &mut fidl::encoding::Decoder<'_, D>,
1376 offset: usize,
1377 _depth: fidl::encoding::Depth,
1378 ) -> fidl::Result<()> {
1379 decoder.debug_check_bounds::<Self>(offset);
1380 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
1382 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1383 let mask = 0xffffffff00000000u64;
1384 let maskedval = padval & mask;
1385 if maskedval != 0 {
1386 return Err(fidl::Error::NonZeroPadding {
1387 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
1388 });
1389 }
1390 fidl::decode!(
1391 fidl::encoding::BoundedString<4096>,
1392 D,
1393 &mut self.driver_url,
1394 decoder,
1395 offset + 0,
1396 _depth
1397 )?;
1398 fidl::decode!(
1399 RestartRematchFlags,
1400 D,
1401 &mut self.rematch_flags,
1402 decoder,
1403 offset + 16,
1404 _depth
1405 )?;
1406 Ok(())
1407 }
1408 }
1409
1410 impl fidl::encoding::ValueTypeMarker for ManagerBindAllUnboundNodes2Response {
1411 type Borrowed<'a> = &'a Self;
1412 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1413 value
1414 }
1415 }
1416
1417 unsafe impl fidl::encoding::TypeMarker for ManagerBindAllUnboundNodes2Response {
1418 type Owned = Self;
1419
1420 #[inline(always)]
1421 fn inline_align(_context: fidl::encoding::Context) -> usize {
1422 8
1423 }
1424
1425 #[inline(always)]
1426 fn inline_size(_context: fidl::encoding::Context) -> usize {
1427 16
1428 }
1429 }
1430
1431 unsafe impl<D: fidl::encoding::ResourceDialect>
1432 fidl::encoding::Encode<ManagerBindAllUnboundNodes2Response, D>
1433 for &ManagerBindAllUnboundNodes2Response
1434 {
1435 #[inline]
1436 unsafe fn encode(
1437 self,
1438 encoder: &mut fidl::encoding::Encoder<'_, D>,
1439 offset: usize,
1440 _depth: fidl::encoding::Depth,
1441 ) -> fidl::Result<()> {
1442 encoder.debug_check_bounds::<ManagerBindAllUnboundNodes2Response>(offset);
1443 fidl::encoding::Encode::<ManagerBindAllUnboundNodes2Response, D>::encode(
1445 (
1446 <fidl::encoding::Vector<NodeBindingInfo, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.binding_result),
1447 ),
1448 encoder, offset, _depth
1449 )
1450 }
1451 }
1452 unsafe impl<
1453 D: fidl::encoding::ResourceDialect,
1454 T0: fidl::encoding::Encode<fidl::encoding::Vector<NodeBindingInfo, 256>, D>,
1455 > fidl::encoding::Encode<ManagerBindAllUnboundNodes2Response, D> for (T0,)
1456 {
1457 #[inline]
1458 unsafe fn encode(
1459 self,
1460 encoder: &mut fidl::encoding::Encoder<'_, D>,
1461 offset: usize,
1462 depth: fidl::encoding::Depth,
1463 ) -> fidl::Result<()> {
1464 encoder.debug_check_bounds::<ManagerBindAllUnboundNodes2Response>(offset);
1465 self.0.encode(encoder, offset + 0, depth)?;
1469 Ok(())
1470 }
1471 }
1472
1473 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1474 for ManagerBindAllUnboundNodes2Response
1475 {
1476 #[inline(always)]
1477 fn new_empty() -> Self {
1478 Self {
1479 binding_result: fidl::new_empty!(fidl::encoding::Vector<NodeBindingInfo, 256>, D),
1480 }
1481 }
1482
1483 #[inline]
1484 unsafe fn decode(
1485 &mut self,
1486 decoder: &mut fidl::encoding::Decoder<'_, D>,
1487 offset: usize,
1488 _depth: fidl::encoding::Depth,
1489 ) -> fidl::Result<()> {
1490 decoder.debug_check_bounds::<Self>(offset);
1491 fidl::decode!(fidl::encoding::Vector<NodeBindingInfo, 256>, D, &mut self.binding_result, decoder, offset + 0, _depth)?;
1493 Ok(())
1494 }
1495 }
1496
1497 impl fidl::encoding::ValueTypeMarker for ManagerBindAllUnboundNodesResponse {
1498 type Borrowed<'a> = &'a Self;
1499 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1500 value
1501 }
1502 }
1503
1504 unsafe impl fidl::encoding::TypeMarker for ManagerBindAllUnboundNodesResponse {
1505 type Owned = Self;
1506
1507 #[inline(always)]
1508 fn inline_align(_context: fidl::encoding::Context) -> usize {
1509 8
1510 }
1511
1512 #[inline(always)]
1513 fn inline_size(_context: fidl::encoding::Context) -> usize {
1514 16
1515 }
1516 }
1517
1518 unsafe impl<D: fidl::encoding::ResourceDialect>
1519 fidl::encoding::Encode<ManagerBindAllUnboundNodesResponse, D>
1520 for &ManagerBindAllUnboundNodesResponse
1521 {
1522 #[inline]
1523 unsafe fn encode(
1524 self,
1525 encoder: &mut fidl::encoding::Encoder<'_, D>,
1526 offset: usize,
1527 _depth: fidl::encoding::Depth,
1528 ) -> fidl::Result<()> {
1529 encoder.debug_check_bounds::<ManagerBindAllUnboundNodesResponse>(offset);
1530 fidl::encoding::Encode::<ManagerBindAllUnboundNodesResponse, D>::encode(
1532 (
1533 <fidl::encoding::Vector<NodeBindingInfo, 10> as fidl::encoding::ValueTypeMarker>::borrow(&self.binding_result),
1534 ),
1535 encoder, offset, _depth
1536 )
1537 }
1538 }
1539 unsafe impl<
1540 D: fidl::encoding::ResourceDialect,
1541 T0: fidl::encoding::Encode<fidl::encoding::Vector<NodeBindingInfo, 10>, D>,
1542 > fidl::encoding::Encode<ManagerBindAllUnboundNodesResponse, D> for (T0,)
1543 {
1544 #[inline]
1545 unsafe fn encode(
1546 self,
1547 encoder: &mut fidl::encoding::Encoder<'_, D>,
1548 offset: usize,
1549 depth: fidl::encoding::Depth,
1550 ) -> fidl::Result<()> {
1551 encoder.debug_check_bounds::<ManagerBindAllUnboundNodesResponse>(offset);
1552 self.0.encode(encoder, offset + 0, depth)?;
1556 Ok(())
1557 }
1558 }
1559
1560 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1561 for ManagerBindAllUnboundNodesResponse
1562 {
1563 #[inline(always)]
1564 fn new_empty() -> Self {
1565 Self {
1566 binding_result: fidl::new_empty!(fidl::encoding::Vector<NodeBindingInfo, 10>, D),
1567 }
1568 }
1569
1570 #[inline]
1571 unsafe fn decode(
1572 &mut self,
1573 decoder: &mut fidl::encoding::Decoder<'_, D>,
1574 offset: usize,
1575 _depth: fidl::encoding::Depth,
1576 ) -> fidl::Result<()> {
1577 decoder.debug_check_bounds::<Self>(offset);
1578 fidl::decode!(fidl::encoding::Vector<NodeBindingInfo, 10>, D, &mut self.binding_result, decoder, offset + 0, _depth)?;
1580 Ok(())
1581 }
1582 }
1583
1584 impl fidl::encoding::ValueTypeMarker for ManagerRebindCompositesWithDriverResponse {
1585 type Borrowed<'a> = &'a Self;
1586 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1587 value
1588 }
1589 }
1590
1591 unsafe impl fidl::encoding::TypeMarker for ManagerRebindCompositesWithDriverResponse {
1592 type Owned = Self;
1593
1594 #[inline(always)]
1595 fn inline_align(_context: fidl::encoding::Context) -> usize {
1596 4
1597 }
1598
1599 #[inline(always)]
1600 fn inline_size(_context: fidl::encoding::Context) -> usize {
1601 4
1602 }
1603 #[inline(always)]
1604 fn encode_is_copy() -> bool {
1605 true
1606 }
1607
1608 #[inline(always)]
1609 fn decode_is_copy() -> bool {
1610 true
1611 }
1612 }
1613
1614 unsafe impl<D: fidl::encoding::ResourceDialect>
1615 fidl::encoding::Encode<ManagerRebindCompositesWithDriverResponse, D>
1616 for &ManagerRebindCompositesWithDriverResponse
1617 {
1618 #[inline]
1619 unsafe fn encode(
1620 self,
1621 encoder: &mut fidl::encoding::Encoder<'_, D>,
1622 offset: usize,
1623 _depth: fidl::encoding::Depth,
1624 ) -> fidl::Result<()> {
1625 encoder.debug_check_bounds::<ManagerRebindCompositesWithDriverResponse>(offset);
1626 unsafe {
1627 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1629 (buf_ptr as *mut ManagerRebindCompositesWithDriverResponse).write_unaligned(
1630 (self as *const ManagerRebindCompositesWithDriverResponse).read(),
1631 );
1632 }
1635 Ok(())
1636 }
1637 }
1638 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
1639 fidl::encoding::Encode<ManagerRebindCompositesWithDriverResponse, D> for (T0,)
1640 {
1641 #[inline]
1642 unsafe fn encode(
1643 self,
1644 encoder: &mut fidl::encoding::Encoder<'_, D>,
1645 offset: usize,
1646 depth: fidl::encoding::Depth,
1647 ) -> fidl::Result<()> {
1648 encoder.debug_check_bounds::<ManagerRebindCompositesWithDriverResponse>(offset);
1649 self.0.encode(encoder, offset + 0, depth)?;
1653 Ok(())
1654 }
1655 }
1656
1657 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1658 for ManagerRebindCompositesWithDriverResponse
1659 {
1660 #[inline(always)]
1661 fn new_empty() -> Self {
1662 Self { count: fidl::new_empty!(u32, D) }
1663 }
1664
1665 #[inline]
1666 unsafe fn decode(
1667 &mut self,
1668 decoder: &mut fidl::encoding::Decoder<'_, D>,
1669 offset: usize,
1670 _depth: fidl::encoding::Depth,
1671 ) -> fidl::Result<()> {
1672 decoder.debug_check_bounds::<Self>(offset);
1673 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1674 unsafe {
1677 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1678 }
1679 Ok(())
1680 }
1681 }
1682
1683 impl fidl::encoding::ValueTypeMarker for ManagerRestartDriverHostsResponse {
1684 type Borrowed<'a> = &'a Self;
1685 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1686 value
1687 }
1688 }
1689
1690 unsafe impl fidl::encoding::TypeMarker for ManagerRestartDriverHostsResponse {
1691 type Owned = Self;
1692
1693 #[inline(always)]
1694 fn inline_align(_context: fidl::encoding::Context) -> usize {
1695 4
1696 }
1697
1698 #[inline(always)]
1699 fn inline_size(_context: fidl::encoding::Context) -> usize {
1700 4
1701 }
1702 #[inline(always)]
1703 fn encode_is_copy() -> bool {
1704 true
1705 }
1706
1707 #[inline(always)]
1708 fn decode_is_copy() -> bool {
1709 true
1710 }
1711 }
1712
1713 unsafe impl<D: fidl::encoding::ResourceDialect>
1714 fidl::encoding::Encode<ManagerRestartDriverHostsResponse, D>
1715 for &ManagerRestartDriverHostsResponse
1716 {
1717 #[inline]
1718 unsafe fn encode(
1719 self,
1720 encoder: &mut fidl::encoding::Encoder<'_, D>,
1721 offset: usize,
1722 _depth: fidl::encoding::Depth,
1723 ) -> fidl::Result<()> {
1724 encoder.debug_check_bounds::<ManagerRestartDriverHostsResponse>(offset);
1725 unsafe {
1726 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1728 (buf_ptr as *mut ManagerRestartDriverHostsResponse)
1729 .write_unaligned((self as *const ManagerRestartDriverHostsResponse).read());
1730 }
1733 Ok(())
1734 }
1735 }
1736 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
1737 fidl::encoding::Encode<ManagerRestartDriverHostsResponse, D> for (T0,)
1738 {
1739 #[inline]
1740 unsafe fn encode(
1741 self,
1742 encoder: &mut fidl::encoding::Encoder<'_, D>,
1743 offset: usize,
1744 depth: fidl::encoding::Depth,
1745 ) -> fidl::Result<()> {
1746 encoder.debug_check_bounds::<ManagerRestartDriverHostsResponse>(offset);
1747 self.0.encode(encoder, offset + 0, depth)?;
1751 Ok(())
1752 }
1753 }
1754
1755 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1756 for ManagerRestartDriverHostsResponse
1757 {
1758 #[inline(always)]
1759 fn new_empty() -> Self {
1760 Self { count: fidl::new_empty!(u32, D) }
1761 }
1762
1763 #[inline]
1764 unsafe fn decode(
1765 &mut self,
1766 decoder: &mut fidl::encoding::Decoder<'_, D>,
1767 offset: usize,
1768 _depth: fidl::encoding::Depth,
1769 ) -> fidl::Result<()> {
1770 decoder.debug_check_bounds::<Self>(offset);
1771 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1772 unsafe {
1775 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1776 }
1777 Ok(())
1778 }
1779 }
1780
1781 impl fidl::encoding::ValueTypeMarker for NodeInfoIteratorGetNextResponse {
1782 type Borrowed<'a> = &'a Self;
1783 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1784 value
1785 }
1786 }
1787
1788 unsafe impl fidl::encoding::TypeMarker for NodeInfoIteratorGetNextResponse {
1789 type Owned = Self;
1790
1791 #[inline(always)]
1792 fn inline_align(_context: fidl::encoding::Context) -> usize {
1793 8
1794 }
1795
1796 #[inline(always)]
1797 fn inline_size(_context: fidl::encoding::Context) -> usize {
1798 16
1799 }
1800 }
1801
1802 unsafe impl<D: fidl::encoding::ResourceDialect>
1803 fidl::encoding::Encode<NodeInfoIteratorGetNextResponse, D>
1804 for &NodeInfoIteratorGetNextResponse
1805 {
1806 #[inline]
1807 unsafe fn encode(
1808 self,
1809 encoder: &mut fidl::encoding::Encoder<'_, D>,
1810 offset: usize,
1811 _depth: fidl::encoding::Depth,
1812 ) -> fidl::Result<()> {
1813 encoder.debug_check_bounds::<NodeInfoIteratorGetNextResponse>(offset);
1814 fidl::encoding::Encode::<NodeInfoIteratorGetNextResponse, D>::encode(
1816 (
1817 <fidl::encoding::UnboundedVector<NodeInfo> as fidl::encoding::ValueTypeMarker>::borrow(&self.nodes),
1818 ),
1819 encoder, offset, _depth
1820 )
1821 }
1822 }
1823 unsafe impl<
1824 D: fidl::encoding::ResourceDialect,
1825 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<NodeInfo>, D>,
1826 > fidl::encoding::Encode<NodeInfoIteratorGetNextResponse, D> for (T0,)
1827 {
1828 #[inline]
1829 unsafe fn encode(
1830 self,
1831 encoder: &mut fidl::encoding::Encoder<'_, D>,
1832 offset: usize,
1833 depth: fidl::encoding::Depth,
1834 ) -> fidl::Result<()> {
1835 encoder.debug_check_bounds::<NodeInfoIteratorGetNextResponse>(offset);
1836 self.0.encode(encoder, offset + 0, depth)?;
1840 Ok(())
1841 }
1842 }
1843
1844 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1845 for NodeInfoIteratorGetNextResponse
1846 {
1847 #[inline(always)]
1848 fn new_empty() -> Self {
1849 Self { nodes: fidl::new_empty!(fidl::encoding::UnboundedVector<NodeInfo>, D) }
1850 }
1851
1852 #[inline]
1853 unsafe fn decode(
1854 &mut self,
1855 decoder: &mut fidl::encoding::Decoder<'_, D>,
1856 offset: usize,
1857 _depth: fidl::encoding::Depth,
1858 ) -> fidl::Result<()> {
1859 decoder.debug_check_bounds::<Self>(offset);
1860 fidl::decode!(
1862 fidl::encoding::UnboundedVector<NodeInfo>,
1863 D,
1864 &mut self.nodes,
1865 decoder,
1866 offset + 0,
1867 _depth
1868 )?;
1869 Ok(())
1870 }
1871 }
1872
1873 impl CompositeNodeInfo {
1874 #[inline(always)]
1875 fn max_ordinal_present(&self) -> u64 {
1876 if let Some(_) = self.composite {
1877 return 3;
1878 }
1879 if let Some(_) = self.topological_path {
1880 return 2;
1881 }
1882 if let Some(_) = self.parent_topological_paths {
1883 return 1;
1884 }
1885 0
1886 }
1887 }
1888
1889 impl fidl::encoding::ValueTypeMarker for CompositeNodeInfo {
1890 type Borrowed<'a> = &'a Self;
1891 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1892 value
1893 }
1894 }
1895
1896 unsafe impl fidl::encoding::TypeMarker for CompositeNodeInfo {
1897 type Owned = Self;
1898
1899 #[inline(always)]
1900 fn inline_align(_context: fidl::encoding::Context) -> usize {
1901 8
1902 }
1903
1904 #[inline(always)]
1905 fn inline_size(_context: fidl::encoding::Context) -> usize {
1906 16
1907 }
1908 }
1909
1910 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeNodeInfo, D>
1911 for &CompositeNodeInfo
1912 {
1913 unsafe fn encode(
1914 self,
1915 encoder: &mut fidl::encoding::Encoder<'_, D>,
1916 offset: usize,
1917 mut depth: fidl::encoding::Depth,
1918 ) -> fidl::Result<()> {
1919 encoder.debug_check_bounds::<CompositeNodeInfo>(offset);
1920 let max_ordinal: u64 = self.max_ordinal_present();
1922 encoder.write_num(max_ordinal, offset);
1923 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1924 if max_ordinal == 0 {
1926 return Ok(());
1927 }
1928 depth.increment()?;
1929 let envelope_size = 8;
1930 let bytes_len = max_ordinal as usize * envelope_size;
1931 #[allow(unused_variables)]
1932 let offset = encoder.out_of_line_offset(bytes_len);
1933 let mut _prev_end_offset: usize = 0;
1934 if 1 > max_ordinal {
1935 return Ok(());
1936 }
1937
1938 let cur_offset: usize = (1 - 1) * envelope_size;
1941
1942 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1944
1945 fidl::encoding::encode_in_envelope_optional::<
1950 fidl::encoding::UnboundedVector<
1951 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
1952 >,
1953 D,
1954 >(
1955 self.parent_topological_paths.as_ref().map(
1956 <fidl::encoding::UnboundedVector<
1957 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
1958 > as fidl::encoding::ValueTypeMarker>::borrow,
1959 ),
1960 encoder,
1961 offset + cur_offset,
1962 depth,
1963 )?;
1964
1965 _prev_end_offset = cur_offset + envelope_size;
1966 if 2 > max_ordinal {
1967 return Ok(());
1968 }
1969
1970 let cur_offset: usize = (2 - 1) * envelope_size;
1973
1974 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1976
1977 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
1982 self.topological_path.as_ref().map(
1983 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
1984 ),
1985 encoder,
1986 offset + cur_offset,
1987 depth,
1988 )?;
1989
1990 _prev_end_offset = cur_offset + envelope_size;
1991 if 3 > max_ordinal {
1992 return Ok(());
1993 }
1994
1995 let cur_offset: usize = (3 - 1) * envelope_size;
1998
1999 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2001
2002 fidl::encoding::encode_in_envelope_optional::<CompositeInfo, D>(
2007 self.composite
2008 .as_ref()
2009 .map(<CompositeInfo as fidl::encoding::ValueTypeMarker>::borrow),
2010 encoder,
2011 offset + cur_offset,
2012 depth,
2013 )?;
2014
2015 _prev_end_offset = cur_offset + envelope_size;
2016
2017 Ok(())
2018 }
2019 }
2020
2021 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeNodeInfo {
2022 #[inline(always)]
2023 fn new_empty() -> Self {
2024 Self::default()
2025 }
2026
2027 unsafe fn decode(
2028 &mut self,
2029 decoder: &mut fidl::encoding::Decoder<'_, D>,
2030 offset: usize,
2031 mut depth: fidl::encoding::Depth,
2032 ) -> fidl::Result<()> {
2033 decoder.debug_check_bounds::<Self>(offset);
2034 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2035 None => return Err(fidl::Error::NotNullable),
2036 Some(len) => len,
2037 };
2038 if len == 0 {
2040 return Ok(());
2041 };
2042 depth.increment()?;
2043 let envelope_size = 8;
2044 let bytes_len = len * envelope_size;
2045 let offset = decoder.out_of_line_offset(bytes_len)?;
2046 let mut _next_ordinal_to_read = 0;
2048 let mut next_offset = offset;
2049 let end_offset = offset + bytes_len;
2050 _next_ordinal_to_read += 1;
2051 if next_offset >= end_offset {
2052 return Ok(());
2053 }
2054
2055 while _next_ordinal_to_read < 1 {
2057 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2058 _next_ordinal_to_read += 1;
2059 next_offset += envelope_size;
2060 }
2061
2062 let next_out_of_line = decoder.next_out_of_line();
2063 let handles_before = decoder.remaining_handles();
2064 if let Some((inlined, num_bytes, num_handles)) =
2065 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2066 {
2067 let member_inline_size = <fidl::encoding::UnboundedVector<
2068 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2069 > as fidl::encoding::TypeMarker>::inline_size(
2070 decoder.context
2071 );
2072 if inlined != (member_inline_size <= 4) {
2073 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2074 }
2075 let inner_offset;
2076 let mut inner_depth = depth.clone();
2077 if inlined {
2078 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2079 inner_offset = next_offset;
2080 } else {
2081 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2082 inner_depth.increment()?;
2083 }
2084 let val_ref = self.parent_topological_paths.get_or_insert_with(|| {
2085 fidl::new_empty!(
2086 fidl::encoding::UnboundedVector<
2087 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2088 >,
2089 D
2090 )
2091 });
2092 fidl::decode!(
2093 fidl::encoding::UnboundedVector<
2094 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
2095 >,
2096 D,
2097 val_ref,
2098 decoder,
2099 inner_offset,
2100 inner_depth
2101 )?;
2102 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2103 {
2104 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2105 }
2106 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2107 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2108 }
2109 }
2110
2111 next_offset += envelope_size;
2112 _next_ordinal_to_read += 1;
2113 if next_offset >= end_offset {
2114 return Ok(());
2115 }
2116
2117 while _next_ordinal_to_read < 2 {
2119 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2120 _next_ordinal_to_read += 1;
2121 next_offset += envelope_size;
2122 }
2123
2124 let next_out_of_line = decoder.next_out_of_line();
2125 let handles_before = decoder.remaining_handles();
2126 if let Some((inlined, num_bytes, num_handles)) =
2127 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2128 {
2129 let member_inline_size =
2130 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
2131 decoder.context,
2132 );
2133 if inlined != (member_inline_size <= 4) {
2134 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2135 }
2136 let inner_offset;
2137 let mut inner_depth = depth.clone();
2138 if inlined {
2139 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2140 inner_offset = next_offset;
2141 } else {
2142 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2143 inner_depth.increment()?;
2144 }
2145 let val_ref = self
2146 .topological_path
2147 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
2148 fidl::decode!(
2149 fidl::encoding::UnboundedString,
2150 D,
2151 val_ref,
2152 decoder,
2153 inner_offset,
2154 inner_depth
2155 )?;
2156 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2157 {
2158 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2159 }
2160 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2161 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2162 }
2163 }
2164
2165 next_offset += envelope_size;
2166 _next_ordinal_to_read += 1;
2167 if next_offset >= end_offset {
2168 return Ok(());
2169 }
2170
2171 while _next_ordinal_to_read < 3 {
2173 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2174 _next_ordinal_to_read += 1;
2175 next_offset += envelope_size;
2176 }
2177
2178 let next_out_of_line = decoder.next_out_of_line();
2179 let handles_before = decoder.remaining_handles();
2180 if let Some((inlined, num_bytes, num_handles)) =
2181 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2182 {
2183 let member_inline_size =
2184 <CompositeInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2185 if inlined != (member_inline_size <= 4) {
2186 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2187 }
2188 let inner_offset;
2189 let mut inner_depth = depth.clone();
2190 if inlined {
2191 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2192 inner_offset = next_offset;
2193 } else {
2194 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2195 inner_depth.increment()?;
2196 }
2197 let val_ref =
2198 self.composite.get_or_insert_with(|| fidl::new_empty!(CompositeInfo, D));
2199 fidl::decode!(CompositeInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
2200 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2201 {
2202 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2203 }
2204 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2205 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2206 }
2207 }
2208
2209 next_offset += envelope_size;
2210
2211 while next_offset < end_offset {
2213 _next_ordinal_to_read += 1;
2214 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2215 next_offset += envelope_size;
2216 }
2217
2218 Ok(())
2219 }
2220 }
2221
2222 impl DispatcherInfo {
2223 #[inline(always)]
2224 fn max_ordinal_present(&self) -> u64 {
2225 if let Some(_) = self.scheduler_role {
2226 return 4;
2227 }
2228 if let Some(_) = self.options {
2229 return 3;
2230 }
2231 if let Some(_) = self.name {
2232 return 2;
2233 }
2234 if let Some(_) = self.driver {
2235 return 1;
2236 }
2237 0
2238 }
2239 }
2240
2241 impl fidl::encoding::ValueTypeMarker for DispatcherInfo {
2242 type Borrowed<'a> = &'a Self;
2243 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2244 value
2245 }
2246 }
2247
2248 unsafe impl fidl::encoding::TypeMarker for DispatcherInfo {
2249 type Owned = Self;
2250
2251 #[inline(always)]
2252 fn inline_align(_context: fidl::encoding::Context) -> usize {
2253 8
2254 }
2255
2256 #[inline(always)]
2257 fn inline_size(_context: fidl::encoding::Context) -> usize {
2258 16
2259 }
2260 }
2261
2262 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DispatcherInfo, D>
2263 for &DispatcherInfo
2264 {
2265 unsafe fn encode(
2266 self,
2267 encoder: &mut fidl::encoding::Encoder<'_, D>,
2268 offset: usize,
2269 mut depth: fidl::encoding::Depth,
2270 ) -> fidl::Result<()> {
2271 encoder.debug_check_bounds::<DispatcherInfo>(offset);
2272 let max_ordinal: u64 = self.max_ordinal_present();
2274 encoder.write_num(max_ordinal, offset);
2275 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2276 if max_ordinal == 0 {
2278 return Ok(());
2279 }
2280 depth.increment()?;
2281 let envelope_size = 8;
2282 let bytes_len = max_ordinal as usize * envelope_size;
2283 #[allow(unused_variables)]
2284 let offset = encoder.out_of_line_offset(bytes_len);
2285 let mut _prev_end_offset: usize = 0;
2286 if 1 > max_ordinal {
2287 return Ok(());
2288 }
2289
2290 let cur_offset: usize = (1 - 1) * envelope_size;
2293
2294 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2296
2297 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
2302 self.driver.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
2303 encoder, offset + cur_offset, depth
2304 )?;
2305
2306 _prev_end_offset = cur_offset + envelope_size;
2307 if 2 > max_ordinal {
2308 return Ok(());
2309 }
2310
2311 let cur_offset: usize = (2 - 1) * envelope_size;
2314
2315 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2317
2318 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
2323 self.name.as_ref().map(
2324 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
2325 ),
2326 encoder,
2327 offset + cur_offset,
2328 depth,
2329 )?;
2330
2331 _prev_end_offset = cur_offset + envelope_size;
2332 if 3 > max_ordinal {
2333 return Ok(());
2334 }
2335
2336 let cur_offset: usize = (3 - 1) * envelope_size;
2339
2340 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2342
2343 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2348 self.options.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2349 encoder,
2350 offset + cur_offset,
2351 depth,
2352 )?;
2353
2354 _prev_end_offset = cur_offset + envelope_size;
2355 if 4 > max_ordinal {
2356 return Ok(());
2357 }
2358
2359 let cur_offset: usize = (4 - 1) * envelope_size;
2362
2363 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2365
2366 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
2371 self.scheduler_role.as_ref().map(
2372 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
2373 ),
2374 encoder,
2375 offset + cur_offset,
2376 depth,
2377 )?;
2378
2379 _prev_end_offset = cur_offset + envelope_size;
2380
2381 Ok(())
2382 }
2383 }
2384
2385 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DispatcherInfo {
2386 #[inline(always)]
2387 fn new_empty() -> Self {
2388 Self::default()
2389 }
2390
2391 unsafe fn decode(
2392 &mut self,
2393 decoder: &mut fidl::encoding::Decoder<'_, D>,
2394 offset: usize,
2395 mut depth: fidl::encoding::Depth,
2396 ) -> fidl::Result<()> {
2397 decoder.debug_check_bounds::<Self>(offset);
2398 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2399 None => return Err(fidl::Error::NotNullable),
2400 Some(len) => len,
2401 };
2402 if len == 0 {
2404 return Ok(());
2405 };
2406 depth.increment()?;
2407 let envelope_size = 8;
2408 let bytes_len = len * envelope_size;
2409 let offset = decoder.out_of_line_offset(bytes_len)?;
2410 let mut _next_ordinal_to_read = 0;
2412 let mut next_offset = offset;
2413 let end_offset = offset + bytes_len;
2414 _next_ordinal_to_read += 1;
2415 if next_offset >= end_offset {
2416 return Ok(());
2417 }
2418
2419 while _next_ordinal_to_read < 1 {
2421 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2422 _next_ordinal_to_read += 1;
2423 next_offset += envelope_size;
2424 }
2425
2426 let next_out_of_line = decoder.next_out_of_line();
2427 let handles_before = decoder.remaining_handles();
2428 if let Some((inlined, num_bytes, num_handles)) =
2429 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2430 {
2431 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2432 if inlined != (member_inline_size <= 4) {
2433 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2434 }
2435 let inner_offset;
2436 let mut inner_depth = depth.clone();
2437 if inlined {
2438 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2439 inner_offset = next_offset;
2440 } else {
2441 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2442 inner_depth.increment()?;
2443 }
2444 let val_ref = self.driver.get_or_insert_with(|| {
2445 fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
2446 });
2447 fidl::decode!(
2448 fidl::encoding::BoundedString<4096>,
2449 D,
2450 val_ref,
2451 decoder,
2452 inner_offset,
2453 inner_depth
2454 )?;
2455 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2456 {
2457 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2458 }
2459 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2460 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2461 }
2462 }
2463
2464 next_offset += envelope_size;
2465 _next_ordinal_to_read += 1;
2466 if next_offset >= end_offset {
2467 return Ok(());
2468 }
2469
2470 while _next_ordinal_to_read < 2 {
2472 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2473 _next_ordinal_to_read += 1;
2474 next_offset += envelope_size;
2475 }
2476
2477 let next_out_of_line = decoder.next_out_of_line();
2478 let handles_before = decoder.remaining_handles();
2479 if let Some((inlined, num_bytes, num_handles)) =
2480 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2481 {
2482 let member_inline_size =
2483 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
2484 decoder.context,
2485 );
2486 if inlined != (member_inline_size <= 4) {
2487 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2488 }
2489 let inner_offset;
2490 let mut inner_depth = depth.clone();
2491 if inlined {
2492 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2493 inner_offset = next_offset;
2494 } else {
2495 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2496 inner_depth.increment()?;
2497 }
2498 let val_ref = self
2499 .name
2500 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
2501 fidl::decode!(
2502 fidl::encoding::UnboundedString,
2503 D,
2504 val_ref,
2505 decoder,
2506 inner_offset,
2507 inner_depth
2508 )?;
2509 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2510 {
2511 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2512 }
2513 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2514 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2515 }
2516 }
2517
2518 next_offset += envelope_size;
2519 _next_ordinal_to_read += 1;
2520 if next_offset >= end_offset {
2521 return Ok(());
2522 }
2523
2524 while _next_ordinal_to_read < 3 {
2526 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2527 _next_ordinal_to_read += 1;
2528 next_offset += envelope_size;
2529 }
2530
2531 let next_out_of_line = decoder.next_out_of_line();
2532 let handles_before = decoder.remaining_handles();
2533 if let Some((inlined, num_bytes, num_handles)) =
2534 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2535 {
2536 let member_inline_size =
2537 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2538 if inlined != (member_inline_size <= 4) {
2539 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2540 }
2541 let inner_offset;
2542 let mut inner_depth = depth.clone();
2543 if inlined {
2544 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2545 inner_offset = next_offset;
2546 } else {
2547 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2548 inner_depth.increment()?;
2549 }
2550 let val_ref = self.options.get_or_insert_with(|| fidl::new_empty!(u32, D));
2551 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2552 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2553 {
2554 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2555 }
2556 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2557 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2558 }
2559 }
2560
2561 next_offset += envelope_size;
2562 _next_ordinal_to_read += 1;
2563 if next_offset >= end_offset {
2564 return Ok(());
2565 }
2566
2567 while _next_ordinal_to_read < 4 {
2569 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2570 _next_ordinal_to_read += 1;
2571 next_offset += envelope_size;
2572 }
2573
2574 let next_out_of_line = decoder.next_out_of_line();
2575 let handles_before = decoder.remaining_handles();
2576 if let Some((inlined, num_bytes, num_handles)) =
2577 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2578 {
2579 let member_inline_size =
2580 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
2581 decoder.context,
2582 );
2583 if inlined != (member_inline_size <= 4) {
2584 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2585 }
2586 let inner_offset;
2587 let mut inner_depth = depth.clone();
2588 if inlined {
2589 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2590 inner_offset = next_offset;
2591 } else {
2592 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2593 inner_depth.increment()?;
2594 }
2595 let val_ref = self
2596 .scheduler_role
2597 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
2598 fidl::decode!(
2599 fidl::encoding::UnboundedString,
2600 D,
2601 val_ref,
2602 decoder,
2603 inner_offset,
2604 inner_depth
2605 )?;
2606 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2607 {
2608 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2609 }
2610 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2611 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2612 }
2613 }
2614
2615 next_offset += envelope_size;
2616
2617 while next_offset < end_offset {
2619 _next_ordinal_to_read += 1;
2620 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2621 next_offset += envelope_size;
2622 }
2623
2624 Ok(())
2625 }
2626 }
2627
2628 impl DriverHostInfo {
2629 #[inline(always)]
2630 fn max_ordinal_present(&self) -> u64 {
2631 if let Some(_) = self.name {
2632 return 5;
2633 }
2634 if let Some(_) = self.dispatchers {
2635 return 4;
2636 }
2637 if let Some(_) = self.drivers {
2638 return 3;
2639 }
2640 if let Some(_) = self.threads {
2641 return 2;
2642 }
2643 if let Some(_) = self.process_koid {
2644 return 1;
2645 }
2646 0
2647 }
2648 }
2649
2650 impl fidl::encoding::ValueTypeMarker for DriverHostInfo {
2651 type Borrowed<'a> = &'a Self;
2652 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2653 value
2654 }
2655 }
2656
2657 unsafe impl fidl::encoding::TypeMarker for DriverHostInfo {
2658 type Owned = Self;
2659
2660 #[inline(always)]
2661 fn inline_align(_context: fidl::encoding::Context) -> usize {
2662 8
2663 }
2664
2665 #[inline(always)]
2666 fn inline_size(_context: fidl::encoding::Context) -> usize {
2667 16
2668 }
2669 }
2670
2671 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DriverHostInfo, D>
2672 for &DriverHostInfo
2673 {
2674 unsafe fn encode(
2675 self,
2676 encoder: &mut fidl::encoding::Encoder<'_, D>,
2677 offset: usize,
2678 mut depth: fidl::encoding::Depth,
2679 ) -> fidl::Result<()> {
2680 encoder.debug_check_bounds::<DriverHostInfo>(offset);
2681 let max_ordinal: u64 = self.max_ordinal_present();
2683 encoder.write_num(max_ordinal, offset);
2684 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2685 if max_ordinal == 0 {
2687 return Ok(());
2688 }
2689 depth.increment()?;
2690 let envelope_size = 8;
2691 let bytes_len = max_ordinal as usize * envelope_size;
2692 #[allow(unused_variables)]
2693 let offset = encoder.out_of_line_offset(bytes_len);
2694 let mut _prev_end_offset: usize = 0;
2695 if 1 > max_ordinal {
2696 return Ok(());
2697 }
2698
2699 let cur_offset: usize = (1 - 1) * envelope_size;
2702
2703 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2705
2706 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2711 self.process_koid.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2712 encoder,
2713 offset + cur_offset,
2714 depth,
2715 )?;
2716
2717 _prev_end_offset = cur_offset + envelope_size;
2718 if 2 > max_ordinal {
2719 return Ok(());
2720 }
2721
2722 let cur_offset: usize = (2 - 1) * envelope_size;
2725
2726 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2728
2729 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ThreadInfo>, D>(
2734 self.threads.as_ref().map(<fidl::encoding::UnboundedVector<ThreadInfo> as fidl::encoding::ValueTypeMarker>::borrow),
2735 encoder, offset + cur_offset, depth
2736 )?;
2737
2738 _prev_end_offset = cur_offset + envelope_size;
2739 if 3 > max_ordinal {
2740 return Ok(());
2741 }
2742
2743 let cur_offset: usize = (3 - 1) * envelope_size;
2746
2747 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2749
2750 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>>, D>(
2755 self.drivers.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>> as fidl::encoding::ValueTypeMarker>::borrow),
2756 encoder, offset + cur_offset, depth
2757 )?;
2758
2759 _prev_end_offset = cur_offset + envelope_size;
2760 if 4 > max_ordinal {
2761 return Ok(());
2762 }
2763
2764 let cur_offset: usize = (4 - 1) * envelope_size;
2767
2768 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2770
2771 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<DispatcherInfo>, D>(
2776 self.dispatchers.as_ref().map(<fidl::encoding::UnboundedVector<DispatcherInfo> as fidl::encoding::ValueTypeMarker>::borrow),
2777 encoder, offset + cur_offset, depth
2778 )?;
2779
2780 _prev_end_offset = cur_offset + envelope_size;
2781 if 5 > max_ordinal {
2782 return Ok(());
2783 }
2784
2785 let cur_offset: usize = (5 - 1) * envelope_size;
2788
2789 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2791
2792 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
2797 self.name.as_ref().map(
2798 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
2799 ),
2800 encoder,
2801 offset + cur_offset,
2802 depth,
2803 )?;
2804
2805 _prev_end_offset = cur_offset + envelope_size;
2806
2807 Ok(())
2808 }
2809 }
2810
2811 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DriverHostInfo {
2812 #[inline(always)]
2813 fn new_empty() -> Self {
2814 Self::default()
2815 }
2816
2817 unsafe fn decode(
2818 &mut self,
2819 decoder: &mut fidl::encoding::Decoder<'_, D>,
2820 offset: usize,
2821 mut depth: fidl::encoding::Depth,
2822 ) -> fidl::Result<()> {
2823 decoder.debug_check_bounds::<Self>(offset);
2824 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2825 None => return Err(fidl::Error::NotNullable),
2826 Some(len) => len,
2827 };
2828 if len == 0 {
2830 return Ok(());
2831 };
2832 depth.increment()?;
2833 let envelope_size = 8;
2834 let bytes_len = len * envelope_size;
2835 let offset = decoder.out_of_line_offset(bytes_len)?;
2836 let mut _next_ordinal_to_read = 0;
2838 let mut next_offset = offset;
2839 let end_offset = offset + bytes_len;
2840 _next_ordinal_to_read += 1;
2841 if next_offset >= end_offset {
2842 return Ok(());
2843 }
2844
2845 while _next_ordinal_to_read < 1 {
2847 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2848 _next_ordinal_to_read += 1;
2849 next_offset += envelope_size;
2850 }
2851
2852 let next_out_of_line = decoder.next_out_of_line();
2853 let handles_before = decoder.remaining_handles();
2854 if let Some((inlined, num_bytes, num_handles)) =
2855 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2856 {
2857 let member_inline_size =
2858 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2859 if inlined != (member_inline_size <= 4) {
2860 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2861 }
2862 let inner_offset;
2863 let mut inner_depth = depth.clone();
2864 if inlined {
2865 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2866 inner_offset = next_offset;
2867 } else {
2868 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2869 inner_depth.increment()?;
2870 }
2871 let val_ref = self.process_koid.get_or_insert_with(|| fidl::new_empty!(u64, D));
2872 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2873 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2874 {
2875 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2876 }
2877 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2878 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2879 }
2880 }
2881
2882 next_offset += envelope_size;
2883 _next_ordinal_to_read += 1;
2884 if next_offset >= end_offset {
2885 return Ok(());
2886 }
2887
2888 while _next_ordinal_to_read < 2 {
2890 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2891 _next_ordinal_to_read += 1;
2892 next_offset += envelope_size;
2893 }
2894
2895 let next_out_of_line = decoder.next_out_of_line();
2896 let handles_before = decoder.remaining_handles();
2897 if let Some((inlined, num_bytes, num_handles)) =
2898 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2899 {
2900 let member_inline_size = <fidl::encoding::UnboundedVector<ThreadInfo> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2901 if inlined != (member_inline_size <= 4) {
2902 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2903 }
2904 let inner_offset;
2905 let mut inner_depth = depth.clone();
2906 if inlined {
2907 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2908 inner_offset = next_offset;
2909 } else {
2910 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2911 inner_depth.increment()?;
2912 }
2913 let val_ref = self.threads.get_or_insert_with(|| {
2914 fidl::new_empty!(fidl::encoding::UnboundedVector<ThreadInfo>, D)
2915 });
2916 fidl::decode!(
2917 fidl::encoding::UnboundedVector<ThreadInfo>,
2918 D,
2919 val_ref,
2920 decoder,
2921 inner_offset,
2922 inner_depth
2923 )?;
2924 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2925 {
2926 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2927 }
2928 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2929 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2930 }
2931 }
2932
2933 next_offset += envelope_size;
2934 _next_ordinal_to_read += 1;
2935 if next_offset >= end_offset {
2936 return Ok(());
2937 }
2938
2939 while _next_ordinal_to_read < 3 {
2941 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2942 _next_ordinal_to_read += 1;
2943 next_offset += envelope_size;
2944 }
2945
2946 let next_out_of_line = decoder.next_out_of_line();
2947 let handles_before = decoder.remaining_handles();
2948 if let Some((inlined, num_bytes, num_handles)) =
2949 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2950 {
2951 let member_inline_size = <fidl::encoding::UnboundedVector<
2952 fidl::encoding::BoundedString<4096>,
2953 > as fidl::encoding::TypeMarker>::inline_size(
2954 decoder.context
2955 );
2956 if inlined != (member_inline_size <= 4) {
2957 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2958 }
2959 let inner_offset;
2960 let mut inner_depth = depth.clone();
2961 if inlined {
2962 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2963 inner_offset = next_offset;
2964 } else {
2965 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2966 inner_depth.increment()?;
2967 }
2968 let val_ref = self.drivers.get_or_insert_with(|| {
2969 fidl::new_empty!(
2970 fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>>,
2971 D
2972 )
2973 });
2974 fidl::decode!(
2975 fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>>,
2976 D,
2977 val_ref,
2978 decoder,
2979 inner_offset,
2980 inner_depth
2981 )?;
2982 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2983 {
2984 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2985 }
2986 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2987 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2988 }
2989 }
2990
2991 next_offset += envelope_size;
2992 _next_ordinal_to_read += 1;
2993 if next_offset >= end_offset {
2994 return Ok(());
2995 }
2996
2997 while _next_ordinal_to_read < 4 {
2999 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3000 _next_ordinal_to_read += 1;
3001 next_offset += envelope_size;
3002 }
3003
3004 let next_out_of_line = decoder.next_out_of_line();
3005 let handles_before = decoder.remaining_handles();
3006 if let Some((inlined, num_bytes, num_handles)) =
3007 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3008 {
3009 let member_inline_size = <fidl::encoding::UnboundedVector<DispatcherInfo> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3010 if inlined != (member_inline_size <= 4) {
3011 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3012 }
3013 let inner_offset;
3014 let mut inner_depth = depth.clone();
3015 if inlined {
3016 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3017 inner_offset = next_offset;
3018 } else {
3019 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3020 inner_depth.increment()?;
3021 }
3022 let val_ref = self.dispatchers.get_or_insert_with(|| {
3023 fidl::new_empty!(fidl::encoding::UnboundedVector<DispatcherInfo>, D)
3024 });
3025 fidl::decode!(
3026 fidl::encoding::UnboundedVector<DispatcherInfo>,
3027 D,
3028 val_ref,
3029 decoder,
3030 inner_offset,
3031 inner_depth
3032 )?;
3033 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3034 {
3035 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3036 }
3037 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3038 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3039 }
3040 }
3041
3042 next_offset += envelope_size;
3043 _next_ordinal_to_read += 1;
3044 if next_offset >= end_offset {
3045 return Ok(());
3046 }
3047
3048 while _next_ordinal_to_read < 5 {
3050 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3051 _next_ordinal_to_read += 1;
3052 next_offset += envelope_size;
3053 }
3054
3055 let next_out_of_line = decoder.next_out_of_line();
3056 let handles_before = decoder.remaining_handles();
3057 if let Some((inlined, num_bytes, num_handles)) =
3058 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3059 {
3060 let member_inline_size =
3061 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
3062 decoder.context,
3063 );
3064 if inlined != (member_inline_size <= 4) {
3065 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3066 }
3067 let inner_offset;
3068 let mut inner_depth = depth.clone();
3069 if inlined {
3070 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3071 inner_offset = next_offset;
3072 } else {
3073 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3074 inner_depth.increment()?;
3075 }
3076 let val_ref = self
3077 .name
3078 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
3079 fidl::decode!(
3080 fidl::encoding::UnboundedString,
3081 D,
3082 val_ref,
3083 decoder,
3084 inner_offset,
3085 inner_depth
3086 )?;
3087 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3088 {
3089 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3090 }
3091 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3092 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3093 }
3094 }
3095
3096 next_offset += envelope_size;
3097
3098 while next_offset < end_offset {
3100 _next_ordinal_to_read += 1;
3101 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3102 next_offset += envelope_size;
3103 }
3104
3105 Ok(())
3106 }
3107 }
3108
3109 impl NodeBindingInfo {
3110 #[inline(always)]
3111 fn max_ordinal_present(&self) -> u64 {
3112 if let Some(_) = self.composite_parents {
3113 return 3;
3114 }
3115 if let Some(_) = self.driver_url {
3116 return 2;
3117 }
3118 if let Some(_) = self.node_name {
3119 return 1;
3120 }
3121 0
3122 }
3123 }
3124
3125 impl fidl::encoding::ValueTypeMarker for NodeBindingInfo {
3126 type Borrowed<'a> = &'a Self;
3127 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3128 value
3129 }
3130 }
3131
3132 unsafe impl fidl::encoding::TypeMarker for NodeBindingInfo {
3133 type Owned = Self;
3134
3135 #[inline(always)]
3136 fn inline_align(_context: fidl::encoding::Context) -> usize {
3137 8
3138 }
3139
3140 #[inline(always)]
3141 fn inline_size(_context: fidl::encoding::Context) -> usize {
3142 16
3143 }
3144 }
3145
3146 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeBindingInfo, D>
3147 for &NodeBindingInfo
3148 {
3149 unsafe fn encode(
3150 self,
3151 encoder: &mut fidl::encoding::Encoder<'_, D>,
3152 offset: usize,
3153 mut depth: fidl::encoding::Depth,
3154 ) -> fidl::Result<()> {
3155 encoder.debug_check_bounds::<NodeBindingInfo>(offset);
3156 let max_ordinal: u64 = self.max_ordinal_present();
3158 encoder.write_num(max_ordinal, offset);
3159 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3160 if max_ordinal == 0 {
3162 return Ok(());
3163 }
3164 depth.increment()?;
3165 let envelope_size = 8;
3166 let bytes_len = max_ordinal as usize * envelope_size;
3167 #[allow(unused_variables)]
3168 let offset = encoder.out_of_line_offset(bytes_len);
3169 let mut _prev_end_offset: usize = 0;
3170 if 1 > max_ordinal {
3171 return Ok(());
3172 }
3173
3174 let cur_offset: usize = (1 - 1) * envelope_size;
3177
3178 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3180
3181 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
3186 self.node_name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
3187 encoder, offset + cur_offset, depth
3188 )?;
3189
3190 _prev_end_offset = cur_offset + envelope_size;
3191 if 2 > max_ordinal {
3192 return Ok(());
3193 }
3194
3195 let cur_offset: usize = (2 - 1) * envelope_size;
3198
3199 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3201
3202 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
3207 self.driver_url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
3208 encoder, offset + cur_offset, depth
3209 )?;
3210
3211 _prev_end_offset = cur_offset + envelope_size;
3212 if 3 > max_ordinal {
3213 return Ok(());
3214 }
3215
3216 let cur_offset: usize = (3 - 1) * envelope_size;
3219
3220 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3222
3223 fidl::encoding::encode_in_envelope_optional::<
3228 fidl::encoding::UnboundedVector<
3229 fidl_fuchsia_driver_framework__common::CompositeParent,
3230 >,
3231 D,
3232 >(
3233 self.composite_parents.as_ref().map(
3234 <fidl::encoding::UnboundedVector<
3235 fidl_fuchsia_driver_framework__common::CompositeParent,
3236 > as fidl::encoding::ValueTypeMarker>::borrow,
3237 ),
3238 encoder,
3239 offset + cur_offset,
3240 depth,
3241 )?;
3242
3243 _prev_end_offset = cur_offset + envelope_size;
3244
3245 Ok(())
3246 }
3247 }
3248
3249 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeBindingInfo {
3250 #[inline(always)]
3251 fn new_empty() -> Self {
3252 Self::default()
3253 }
3254
3255 unsafe fn decode(
3256 &mut self,
3257 decoder: &mut fidl::encoding::Decoder<'_, D>,
3258 offset: usize,
3259 mut depth: fidl::encoding::Depth,
3260 ) -> fidl::Result<()> {
3261 decoder.debug_check_bounds::<Self>(offset);
3262 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3263 None => return Err(fidl::Error::NotNullable),
3264 Some(len) => len,
3265 };
3266 if len == 0 {
3268 return Ok(());
3269 };
3270 depth.increment()?;
3271 let envelope_size = 8;
3272 let bytes_len = len * envelope_size;
3273 let offset = decoder.out_of_line_offset(bytes_len)?;
3274 let mut _next_ordinal_to_read = 0;
3276 let mut next_offset = offset;
3277 let end_offset = offset + bytes_len;
3278 _next_ordinal_to_read += 1;
3279 if next_offset >= end_offset {
3280 return Ok(());
3281 }
3282
3283 while _next_ordinal_to_read < 1 {
3285 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3286 _next_ordinal_to_read += 1;
3287 next_offset += envelope_size;
3288 }
3289
3290 let next_out_of_line = decoder.next_out_of_line();
3291 let handles_before = decoder.remaining_handles();
3292 if let Some((inlined, num_bytes, num_handles)) =
3293 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3294 {
3295 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3296 if inlined != (member_inline_size <= 4) {
3297 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3298 }
3299 let inner_offset;
3300 let mut inner_depth = depth.clone();
3301 if inlined {
3302 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3303 inner_offset = next_offset;
3304 } else {
3305 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3306 inner_depth.increment()?;
3307 }
3308 let val_ref = self.node_name.get_or_insert_with(|| {
3309 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
3310 });
3311 fidl::decode!(
3312 fidl::encoding::BoundedString<1024>,
3313 D,
3314 val_ref,
3315 decoder,
3316 inner_offset,
3317 inner_depth
3318 )?;
3319 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3320 {
3321 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3322 }
3323 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3324 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3325 }
3326 }
3327
3328 next_offset += envelope_size;
3329 _next_ordinal_to_read += 1;
3330 if next_offset >= end_offset {
3331 return Ok(());
3332 }
3333
3334 while _next_ordinal_to_read < 2 {
3336 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3337 _next_ordinal_to_read += 1;
3338 next_offset += envelope_size;
3339 }
3340
3341 let next_out_of_line = decoder.next_out_of_line();
3342 let handles_before = decoder.remaining_handles();
3343 if let Some((inlined, num_bytes, num_handles)) =
3344 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3345 {
3346 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3347 if inlined != (member_inline_size <= 4) {
3348 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3349 }
3350 let inner_offset;
3351 let mut inner_depth = depth.clone();
3352 if inlined {
3353 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3354 inner_offset = next_offset;
3355 } else {
3356 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3357 inner_depth.increment()?;
3358 }
3359 let val_ref = self.driver_url.get_or_insert_with(|| {
3360 fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
3361 });
3362 fidl::decode!(
3363 fidl::encoding::BoundedString<4096>,
3364 D,
3365 val_ref,
3366 decoder,
3367 inner_offset,
3368 inner_depth
3369 )?;
3370 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3371 {
3372 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3373 }
3374 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3375 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3376 }
3377 }
3378
3379 next_offset += envelope_size;
3380 _next_ordinal_to_read += 1;
3381 if next_offset >= end_offset {
3382 return Ok(());
3383 }
3384
3385 while _next_ordinal_to_read < 3 {
3387 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3388 _next_ordinal_to_read += 1;
3389 next_offset += envelope_size;
3390 }
3391
3392 let next_out_of_line = decoder.next_out_of_line();
3393 let handles_before = decoder.remaining_handles();
3394 if let Some((inlined, num_bytes, num_handles)) =
3395 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3396 {
3397 let member_inline_size = <fidl::encoding::UnboundedVector<
3398 fidl_fuchsia_driver_framework__common::CompositeParent,
3399 > as fidl::encoding::TypeMarker>::inline_size(
3400 decoder.context
3401 );
3402 if inlined != (member_inline_size <= 4) {
3403 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3404 }
3405 let inner_offset;
3406 let mut inner_depth = depth.clone();
3407 if inlined {
3408 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3409 inner_offset = next_offset;
3410 } else {
3411 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3412 inner_depth.increment()?;
3413 }
3414 let val_ref = self.composite_parents.get_or_insert_with(|| {
3415 fidl::new_empty!(
3416 fidl::encoding::UnboundedVector<
3417 fidl_fuchsia_driver_framework__common::CompositeParent,
3418 >,
3419 D
3420 )
3421 });
3422 fidl::decode!(
3423 fidl::encoding::UnboundedVector<
3424 fidl_fuchsia_driver_framework__common::CompositeParent,
3425 >,
3426 D,
3427 val_ref,
3428 decoder,
3429 inner_offset,
3430 inner_depth
3431 )?;
3432 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3433 {
3434 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3435 }
3436 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3437 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3438 }
3439 }
3440
3441 next_offset += envelope_size;
3442
3443 while next_offset < end_offset {
3445 _next_ordinal_to_read += 1;
3446 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3447 next_offset += envelope_size;
3448 }
3449
3450 Ok(())
3451 }
3452 }
3453
3454 impl NodeInfo {
3455 #[inline(always)]
3456 fn max_ordinal_present(&self) -> u64 {
3457 if let Some(_) = self.bus_topology {
3458 return 11;
3459 }
3460 if let Some(_) = self.quarantined {
3461 return 10;
3462 }
3463 if let Some(_) = self.offer_list {
3464 return 9;
3465 }
3466 if let Some(_) = self.node_property_list {
3467 return 8;
3468 }
3469 if let Some(_) = self.moniker {
3470 return 7;
3471 }
3472 if let Some(_) = self.bound_driver_url {
3473 return 5;
3474 }
3475 if let Some(_) = self.driver_host_koid {
3476 return 4;
3477 }
3478 if let Some(_) = self.child_ids {
3479 return 3;
3480 }
3481 if let Some(_) = self.parent_ids {
3482 return 2;
3483 }
3484 if let Some(_) = self.id {
3485 return 1;
3486 }
3487 0
3488 }
3489 }
3490
3491 impl fidl::encoding::ValueTypeMarker for NodeInfo {
3492 type Borrowed<'a> = &'a Self;
3493 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3494 value
3495 }
3496 }
3497
3498 unsafe impl fidl::encoding::TypeMarker for NodeInfo {
3499 type Owned = Self;
3500
3501 #[inline(always)]
3502 fn inline_align(_context: fidl::encoding::Context) -> usize {
3503 8
3504 }
3505
3506 #[inline(always)]
3507 fn inline_size(_context: fidl::encoding::Context) -> usize {
3508 16
3509 }
3510 }
3511
3512 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NodeInfo, D> for &NodeInfo {
3513 unsafe fn encode(
3514 self,
3515 encoder: &mut fidl::encoding::Encoder<'_, D>,
3516 offset: usize,
3517 mut depth: fidl::encoding::Depth,
3518 ) -> fidl::Result<()> {
3519 encoder.debug_check_bounds::<NodeInfo>(offset);
3520 let max_ordinal: u64 = self.max_ordinal_present();
3522 encoder.write_num(max_ordinal, offset);
3523 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3524 if max_ordinal == 0 {
3526 return Ok(());
3527 }
3528 depth.increment()?;
3529 let envelope_size = 8;
3530 let bytes_len = max_ordinal as usize * envelope_size;
3531 #[allow(unused_variables)]
3532 let offset = encoder.out_of_line_offset(bytes_len);
3533 let mut _prev_end_offset: usize = 0;
3534 if 1 > max_ordinal {
3535 return Ok(());
3536 }
3537
3538 let cur_offset: usize = (1 - 1) * envelope_size;
3541
3542 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3544
3545 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3550 self.id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3551 encoder,
3552 offset + cur_offset,
3553 depth,
3554 )?;
3555
3556 _prev_end_offset = cur_offset + envelope_size;
3557 if 2 > max_ordinal {
3558 return Ok(());
3559 }
3560
3561 let cur_offset: usize = (2 - 1) * envelope_size;
3564
3565 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3567
3568 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u64>, D>(
3573 self.parent_ids.as_ref().map(<fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow),
3574 encoder, offset + cur_offset, depth
3575 )?;
3576
3577 _prev_end_offset = cur_offset + envelope_size;
3578 if 3 > max_ordinal {
3579 return Ok(());
3580 }
3581
3582 let cur_offset: usize = (3 - 1) * envelope_size;
3585
3586 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3588
3589 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u64>, D>(
3594 self.child_ids.as_ref().map(<fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow),
3595 encoder, offset + cur_offset, depth
3596 )?;
3597
3598 _prev_end_offset = cur_offset + envelope_size;
3599 if 4 > max_ordinal {
3600 return Ok(());
3601 }
3602
3603 let cur_offset: usize = (4 - 1) * envelope_size;
3606
3607 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3609
3610 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3615 self.driver_host_koid
3616 .as_ref()
3617 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3618 encoder,
3619 offset + cur_offset,
3620 depth,
3621 )?;
3622
3623 _prev_end_offset = cur_offset + envelope_size;
3624 if 5 > max_ordinal {
3625 return Ok(());
3626 }
3627
3628 let cur_offset: usize = (5 - 1) * envelope_size;
3631
3632 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3634
3635 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, D>(
3640 self.bound_driver_url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
3641 encoder, offset + cur_offset, depth
3642 )?;
3643
3644 _prev_end_offset = cur_offset + envelope_size;
3645 if 7 > max_ordinal {
3646 return Ok(());
3647 }
3648
3649 let cur_offset: usize = (7 - 1) * envelope_size;
3652
3653 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3655
3656 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
3661 self.moniker.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
3662 encoder, offset + cur_offset, depth
3663 )?;
3664
3665 _prev_end_offset = cur_offset + envelope_size;
3666 if 8 > max_ordinal {
3667 return Ok(());
3668 }
3669
3670 let cur_offset: usize = (8 - 1) * envelope_size;
3673
3674 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3676
3677 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::NodeProperty, 64>, D>(
3682 self.node_property_list.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::NodeProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
3683 encoder, offset + cur_offset, depth
3684 )?;
3685
3686 _prev_end_offset = cur_offset + envelope_size;
3687 if 9 > max_ordinal {
3688 return Ok(());
3689 }
3690
3691 let cur_offset: usize = (9 - 1) * envelope_size;
3694
3695 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3697
3698 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Offer>, D>(
3703 self.offer_list.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Offer> as fidl::encoding::ValueTypeMarker>::borrow),
3704 encoder, offset + cur_offset, depth
3705 )?;
3706
3707 _prev_end_offset = cur_offset + envelope_size;
3708 if 10 > max_ordinal {
3709 return Ok(());
3710 }
3711
3712 let cur_offset: usize = (10 - 1) * envelope_size;
3715
3716 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3718
3719 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3724 self.quarantined.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3725 encoder,
3726 offset + cur_offset,
3727 depth,
3728 )?;
3729
3730 _prev_end_offset = cur_offset + envelope_size;
3731 if 11 > max_ordinal {
3732 return Ok(());
3733 }
3734
3735 let cur_offset: usize = (11 - 1) * envelope_size;
3738
3739 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3741
3742 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::BusInfo, 20>, D>(
3747 self.bus_topology.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::BusInfo, 20> as fidl::encoding::ValueTypeMarker>::borrow),
3748 encoder, offset + cur_offset, depth
3749 )?;
3750
3751 _prev_end_offset = cur_offset + envelope_size;
3752
3753 Ok(())
3754 }
3755 }
3756
3757 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NodeInfo {
3758 #[inline(always)]
3759 fn new_empty() -> Self {
3760 Self::default()
3761 }
3762
3763 unsafe fn decode(
3764 &mut self,
3765 decoder: &mut fidl::encoding::Decoder<'_, D>,
3766 offset: usize,
3767 mut depth: fidl::encoding::Depth,
3768 ) -> fidl::Result<()> {
3769 decoder.debug_check_bounds::<Self>(offset);
3770 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3771 None => return Err(fidl::Error::NotNullable),
3772 Some(len) => len,
3773 };
3774 if len == 0 {
3776 return Ok(());
3777 };
3778 depth.increment()?;
3779 let envelope_size = 8;
3780 let bytes_len = len * envelope_size;
3781 let offset = decoder.out_of_line_offset(bytes_len)?;
3782 let mut _next_ordinal_to_read = 0;
3784 let mut next_offset = offset;
3785 let end_offset = offset + bytes_len;
3786 _next_ordinal_to_read += 1;
3787 if next_offset >= end_offset {
3788 return Ok(());
3789 }
3790
3791 while _next_ordinal_to_read < 1 {
3793 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3794 _next_ordinal_to_read += 1;
3795 next_offset += envelope_size;
3796 }
3797
3798 let next_out_of_line = decoder.next_out_of_line();
3799 let handles_before = decoder.remaining_handles();
3800 if let Some((inlined, num_bytes, num_handles)) =
3801 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3802 {
3803 let member_inline_size =
3804 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3805 if inlined != (member_inline_size <= 4) {
3806 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3807 }
3808 let inner_offset;
3809 let mut inner_depth = depth.clone();
3810 if inlined {
3811 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3812 inner_offset = next_offset;
3813 } else {
3814 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3815 inner_depth.increment()?;
3816 }
3817 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u64, D));
3818 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3819 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3820 {
3821 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3822 }
3823 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3824 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3825 }
3826 }
3827
3828 next_offset += envelope_size;
3829 _next_ordinal_to_read += 1;
3830 if next_offset >= end_offset {
3831 return Ok(());
3832 }
3833
3834 while _next_ordinal_to_read < 2 {
3836 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3837 _next_ordinal_to_read += 1;
3838 next_offset += envelope_size;
3839 }
3840
3841 let next_out_of_line = decoder.next_out_of_line();
3842 let handles_before = decoder.remaining_handles();
3843 if let Some((inlined, num_bytes, num_handles)) =
3844 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3845 {
3846 let member_inline_size = <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3847 if inlined != (member_inline_size <= 4) {
3848 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3849 }
3850 let inner_offset;
3851 let mut inner_depth = depth.clone();
3852 if inlined {
3853 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3854 inner_offset = next_offset;
3855 } else {
3856 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3857 inner_depth.increment()?;
3858 }
3859 let val_ref = self.parent_ids.get_or_insert_with(|| {
3860 fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D)
3861 });
3862 fidl::decode!(
3863 fidl::encoding::UnboundedVector<u64>,
3864 D,
3865 val_ref,
3866 decoder,
3867 inner_offset,
3868 inner_depth
3869 )?;
3870 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3871 {
3872 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3873 }
3874 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3875 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3876 }
3877 }
3878
3879 next_offset += envelope_size;
3880 _next_ordinal_to_read += 1;
3881 if next_offset >= end_offset {
3882 return Ok(());
3883 }
3884
3885 while _next_ordinal_to_read < 3 {
3887 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3888 _next_ordinal_to_read += 1;
3889 next_offset += envelope_size;
3890 }
3891
3892 let next_out_of_line = decoder.next_out_of_line();
3893 let handles_before = decoder.remaining_handles();
3894 if let Some((inlined, num_bytes, num_handles)) =
3895 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3896 {
3897 let member_inline_size = <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3898 if inlined != (member_inline_size <= 4) {
3899 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3900 }
3901 let inner_offset;
3902 let mut inner_depth = depth.clone();
3903 if inlined {
3904 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3905 inner_offset = next_offset;
3906 } else {
3907 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3908 inner_depth.increment()?;
3909 }
3910 let val_ref = self.child_ids.get_or_insert_with(|| {
3911 fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D)
3912 });
3913 fidl::decode!(
3914 fidl::encoding::UnboundedVector<u64>,
3915 D,
3916 val_ref,
3917 decoder,
3918 inner_offset,
3919 inner_depth
3920 )?;
3921 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3922 {
3923 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3924 }
3925 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3926 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3927 }
3928 }
3929
3930 next_offset += envelope_size;
3931 _next_ordinal_to_read += 1;
3932 if next_offset >= end_offset {
3933 return Ok(());
3934 }
3935
3936 while _next_ordinal_to_read < 4 {
3938 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3939 _next_ordinal_to_read += 1;
3940 next_offset += envelope_size;
3941 }
3942
3943 let next_out_of_line = decoder.next_out_of_line();
3944 let handles_before = decoder.remaining_handles();
3945 if let Some((inlined, num_bytes, num_handles)) =
3946 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3947 {
3948 let member_inline_size =
3949 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3950 if inlined != (member_inline_size <= 4) {
3951 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3952 }
3953 let inner_offset;
3954 let mut inner_depth = depth.clone();
3955 if inlined {
3956 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3957 inner_offset = next_offset;
3958 } else {
3959 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3960 inner_depth.increment()?;
3961 }
3962 let val_ref = self.driver_host_koid.get_or_insert_with(|| fidl::new_empty!(u64, D));
3963 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3964 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3965 {
3966 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3967 }
3968 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3969 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3970 }
3971 }
3972
3973 next_offset += envelope_size;
3974 _next_ordinal_to_read += 1;
3975 if next_offset >= end_offset {
3976 return Ok(());
3977 }
3978
3979 while _next_ordinal_to_read < 5 {
3981 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3982 _next_ordinal_to_read += 1;
3983 next_offset += envelope_size;
3984 }
3985
3986 let next_out_of_line = decoder.next_out_of_line();
3987 let handles_before = decoder.remaining_handles();
3988 if let Some((inlined, num_bytes, num_handles)) =
3989 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3990 {
3991 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3992 if inlined != (member_inline_size <= 4) {
3993 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3994 }
3995 let inner_offset;
3996 let mut inner_depth = depth.clone();
3997 if inlined {
3998 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3999 inner_offset = next_offset;
4000 } else {
4001 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4002 inner_depth.increment()?;
4003 }
4004 let val_ref = self.bound_driver_url.get_or_insert_with(|| {
4005 fidl::new_empty!(fidl::encoding::BoundedString<4096>, D)
4006 });
4007 fidl::decode!(
4008 fidl::encoding::BoundedString<4096>,
4009 D,
4010 val_ref,
4011 decoder,
4012 inner_offset,
4013 inner_depth
4014 )?;
4015 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4016 {
4017 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4018 }
4019 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4020 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4021 }
4022 }
4023
4024 next_offset += envelope_size;
4025 _next_ordinal_to_read += 1;
4026 if next_offset >= end_offset {
4027 return Ok(());
4028 }
4029
4030 while _next_ordinal_to_read < 7 {
4032 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4033 _next_ordinal_to_read += 1;
4034 next_offset += envelope_size;
4035 }
4036
4037 let next_out_of_line = decoder.next_out_of_line();
4038 let handles_before = decoder.remaining_handles();
4039 if let Some((inlined, num_bytes, num_handles)) =
4040 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4041 {
4042 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4043 if inlined != (member_inline_size <= 4) {
4044 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4045 }
4046 let inner_offset;
4047 let mut inner_depth = depth.clone();
4048 if inlined {
4049 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4050 inner_offset = next_offset;
4051 } else {
4052 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4053 inner_depth.increment()?;
4054 }
4055 let val_ref = self.moniker.get_or_insert_with(|| {
4056 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
4057 });
4058 fidl::decode!(
4059 fidl::encoding::BoundedString<1024>,
4060 D,
4061 val_ref,
4062 decoder,
4063 inner_offset,
4064 inner_depth
4065 )?;
4066 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4067 {
4068 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4069 }
4070 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4071 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4072 }
4073 }
4074
4075 next_offset += envelope_size;
4076 _next_ordinal_to_read += 1;
4077 if next_offset >= end_offset {
4078 return Ok(());
4079 }
4080
4081 while _next_ordinal_to_read < 8 {
4083 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4084 _next_ordinal_to_read += 1;
4085 next_offset += envelope_size;
4086 }
4087
4088 let next_out_of_line = decoder.next_out_of_line();
4089 let handles_before = decoder.remaining_handles();
4090 if let Some((inlined, num_bytes, num_handles)) =
4091 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4092 {
4093 let member_inline_size = <fidl::encoding::Vector<
4094 fidl_fuchsia_driver_framework__common::NodeProperty,
4095 64,
4096 > as fidl::encoding::TypeMarker>::inline_size(
4097 decoder.context
4098 );
4099 if inlined != (member_inline_size <= 4) {
4100 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4101 }
4102 let inner_offset;
4103 let mut inner_depth = depth.clone();
4104 if inlined {
4105 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4106 inner_offset = next_offset;
4107 } else {
4108 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4109 inner_depth.increment()?;
4110 }
4111 let val_ref =
4112 self.node_property_list.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::NodeProperty, 64>, D));
4113 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::NodeProperty, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
4114 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4115 {
4116 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4117 }
4118 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4119 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4120 }
4121 }
4122
4123 next_offset += envelope_size;
4124 _next_ordinal_to_read += 1;
4125 if next_offset >= end_offset {
4126 return Ok(());
4127 }
4128
4129 while _next_ordinal_to_read < 9 {
4131 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4132 _next_ordinal_to_read += 1;
4133 next_offset += envelope_size;
4134 }
4135
4136 let next_out_of_line = decoder.next_out_of_line();
4137 let handles_before = decoder.remaining_handles();
4138 if let Some((inlined, num_bytes, num_handles)) =
4139 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4140 {
4141 let member_inline_size = <fidl::encoding::UnboundedVector<
4142 fidl_fuchsia_component_decl__common::Offer,
4143 > as fidl::encoding::TypeMarker>::inline_size(
4144 decoder.context
4145 );
4146 if inlined != (member_inline_size <= 4) {
4147 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4148 }
4149 let inner_offset;
4150 let mut inner_depth = depth.clone();
4151 if inlined {
4152 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4153 inner_offset = next_offset;
4154 } else {
4155 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4156 inner_depth.increment()?;
4157 }
4158 let val_ref = self.offer_list.get_or_insert_with(|| {
4159 fidl::new_empty!(
4160 fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Offer>,
4161 D
4162 )
4163 });
4164 fidl::decode!(
4165 fidl::encoding::UnboundedVector<fidl_fuchsia_component_decl__common::Offer>,
4166 D,
4167 val_ref,
4168 decoder,
4169 inner_offset,
4170 inner_depth
4171 )?;
4172 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4173 {
4174 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4175 }
4176 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4177 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4178 }
4179 }
4180
4181 next_offset += envelope_size;
4182 _next_ordinal_to_read += 1;
4183 if next_offset >= end_offset {
4184 return Ok(());
4185 }
4186
4187 while _next_ordinal_to_read < 10 {
4189 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4190 _next_ordinal_to_read += 1;
4191 next_offset += envelope_size;
4192 }
4193
4194 let next_out_of_line = decoder.next_out_of_line();
4195 let handles_before = decoder.remaining_handles();
4196 if let Some((inlined, num_bytes, num_handles)) =
4197 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4198 {
4199 let member_inline_size =
4200 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4201 if inlined != (member_inline_size <= 4) {
4202 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4203 }
4204 let inner_offset;
4205 let mut inner_depth = depth.clone();
4206 if inlined {
4207 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4208 inner_offset = next_offset;
4209 } else {
4210 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4211 inner_depth.increment()?;
4212 }
4213 let val_ref = self.quarantined.get_or_insert_with(|| fidl::new_empty!(bool, D));
4214 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4215 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4216 {
4217 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4218 }
4219 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4220 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4221 }
4222 }
4223
4224 next_offset += envelope_size;
4225 _next_ordinal_to_read += 1;
4226 if next_offset >= end_offset {
4227 return Ok(());
4228 }
4229
4230 while _next_ordinal_to_read < 11 {
4232 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4233 _next_ordinal_to_read += 1;
4234 next_offset += envelope_size;
4235 }
4236
4237 let next_out_of_line = decoder.next_out_of_line();
4238 let handles_before = decoder.remaining_handles();
4239 if let Some((inlined, num_bytes, num_handles)) =
4240 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4241 {
4242 let member_inline_size = <fidl::encoding::Vector<
4243 fidl_fuchsia_driver_framework__common::BusInfo,
4244 20,
4245 > as fidl::encoding::TypeMarker>::inline_size(
4246 decoder.context
4247 );
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 =
4261 self.bus_topology.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::BusInfo, 20>, D));
4262 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::BusInfo, 20>, D, val_ref, decoder, inner_offset, inner_depth)?;
4263 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4264 {
4265 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4266 }
4267 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4268 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4269 }
4270 }
4271
4272 next_offset += envelope_size;
4273
4274 while next_offset < end_offset {
4276 _next_ordinal_to_read += 1;
4277 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4278 next_offset += envelope_size;
4279 }
4280
4281 Ok(())
4282 }
4283 }
4284
4285 impl TestNodeAddArgs {
4286 #[inline(always)]
4287 fn max_ordinal_present(&self) -> u64 {
4288 if let Some(_) = self.properties {
4289 return 2;
4290 }
4291 if let Some(_) = self.name {
4292 return 1;
4293 }
4294 0
4295 }
4296 }
4297
4298 impl fidl::encoding::ValueTypeMarker for TestNodeAddArgs {
4299 type Borrowed<'a> = &'a Self;
4300 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4301 value
4302 }
4303 }
4304
4305 unsafe impl fidl::encoding::TypeMarker for TestNodeAddArgs {
4306 type Owned = Self;
4307
4308 #[inline(always)]
4309 fn inline_align(_context: fidl::encoding::Context) -> usize {
4310 8
4311 }
4312
4313 #[inline(always)]
4314 fn inline_size(_context: fidl::encoding::Context) -> usize {
4315 16
4316 }
4317 }
4318
4319 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TestNodeAddArgs, D>
4320 for &TestNodeAddArgs
4321 {
4322 unsafe fn encode(
4323 self,
4324 encoder: &mut fidl::encoding::Encoder<'_, D>,
4325 offset: usize,
4326 mut depth: fidl::encoding::Depth,
4327 ) -> fidl::Result<()> {
4328 encoder.debug_check_bounds::<TestNodeAddArgs>(offset);
4329 let max_ordinal: u64 = self.max_ordinal_present();
4331 encoder.write_num(max_ordinal, offset);
4332 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4333 if max_ordinal == 0 {
4335 return Ok(());
4336 }
4337 depth.increment()?;
4338 let envelope_size = 8;
4339 let bytes_len = max_ordinal as usize * envelope_size;
4340 #[allow(unused_variables)]
4341 let offset = encoder.out_of_line_offset(bytes_len);
4342 let mut _prev_end_offset: usize = 0;
4343 if 1 > max_ordinal {
4344 return Ok(());
4345 }
4346
4347 let cur_offset: usize = (1 - 1) * envelope_size;
4350
4351 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4353
4354 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
4359 self.name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
4360 encoder, offset + cur_offset, depth
4361 )?;
4362
4363 _prev_end_offset = cur_offset + envelope_size;
4364 if 2 > max_ordinal {
4365 return Ok(());
4366 }
4367
4368 let cur_offset: usize = (2 - 1) * envelope_size;
4371
4372 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4374
4375 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::NodeProperty, 64>, D>(
4380 self.properties.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::NodeProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
4381 encoder, offset + cur_offset, depth
4382 )?;
4383
4384 _prev_end_offset = cur_offset + envelope_size;
4385
4386 Ok(())
4387 }
4388 }
4389
4390 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TestNodeAddArgs {
4391 #[inline(always)]
4392 fn new_empty() -> Self {
4393 Self::default()
4394 }
4395
4396 unsafe fn decode(
4397 &mut self,
4398 decoder: &mut fidl::encoding::Decoder<'_, D>,
4399 offset: usize,
4400 mut depth: fidl::encoding::Depth,
4401 ) -> fidl::Result<()> {
4402 decoder.debug_check_bounds::<Self>(offset);
4403 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4404 None => return Err(fidl::Error::NotNullable),
4405 Some(len) => len,
4406 };
4407 if len == 0 {
4409 return Ok(());
4410 };
4411 depth.increment()?;
4412 let envelope_size = 8;
4413 let bytes_len = len * envelope_size;
4414 let offset = decoder.out_of_line_offset(bytes_len)?;
4415 let mut _next_ordinal_to_read = 0;
4417 let mut next_offset = offset;
4418 let end_offset = offset + bytes_len;
4419 _next_ordinal_to_read += 1;
4420 if next_offset >= end_offset {
4421 return Ok(());
4422 }
4423
4424 while _next_ordinal_to_read < 1 {
4426 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4427 _next_ordinal_to_read += 1;
4428 next_offset += envelope_size;
4429 }
4430
4431 let next_out_of_line = decoder.next_out_of_line();
4432 let handles_before = decoder.remaining_handles();
4433 if let Some((inlined, num_bytes, num_handles)) =
4434 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4435 {
4436 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4437 if inlined != (member_inline_size <= 4) {
4438 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4439 }
4440 let inner_offset;
4441 let mut inner_depth = depth.clone();
4442 if inlined {
4443 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4444 inner_offset = next_offset;
4445 } else {
4446 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4447 inner_depth.increment()?;
4448 }
4449 let val_ref = self.name.get_or_insert_with(|| {
4450 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
4451 });
4452 fidl::decode!(
4453 fidl::encoding::BoundedString<1024>,
4454 D,
4455 val_ref,
4456 decoder,
4457 inner_offset,
4458 inner_depth
4459 )?;
4460 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4461 {
4462 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4463 }
4464 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4465 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4466 }
4467 }
4468
4469 next_offset += envelope_size;
4470 _next_ordinal_to_read += 1;
4471 if next_offset >= end_offset {
4472 return Ok(());
4473 }
4474
4475 while _next_ordinal_to_read < 2 {
4477 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4478 _next_ordinal_to_read += 1;
4479 next_offset += envelope_size;
4480 }
4481
4482 let next_out_of_line = decoder.next_out_of_line();
4483 let handles_before = decoder.remaining_handles();
4484 if let Some((inlined, num_bytes, num_handles)) =
4485 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4486 {
4487 let member_inline_size = <fidl::encoding::Vector<
4488 fidl_fuchsia_driver_framework__common::NodeProperty,
4489 64,
4490 > as fidl::encoding::TypeMarker>::inline_size(
4491 decoder.context
4492 );
4493 if inlined != (member_inline_size <= 4) {
4494 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4495 }
4496 let inner_offset;
4497 let mut inner_depth = depth.clone();
4498 if inlined {
4499 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4500 inner_offset = next_offset;
4501 } else {
4502 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4503 inner_depth.increment()?;
4504 }
4505 let val_ref =
4506 self.properties.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::NodeProperty, 64>, D));
4507 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::NodeProperty, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
4508 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4509 {
4510 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4511 }
4512 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4513 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4514 }
4515 }
4516
4517 next_offset += envelope_size;
4518
4519 while next_offset < end_offset {
4521 _next_ordinal_to_read += 1;
4522 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4523 next_offset += envelope_size;
4524 }
4525
4526 Ok(())
4527 }
4528 }
4529
4530 impl ThreadInfo {
4531 #[inline(always)]
4532 fn max_ordinal_present(&self) -> u64 {
4533 if let Some(_) = self.scheduler_role {
4534 return 3;
4535 }
4536 if let Some(_) = self.name {
4537 return 2;
4538 }
4539 if let Some(_) = self.koid {
4540 return 1;
4541 }
4542 0
4543 }
4544 }
4545
4546 impl fidl::encoding::ValueTypeMarker for ThreadInfo {
4547 type Borrowed<'a> = &'a Self;
4548 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4549 value
4550 }
4551 }
4552
4553 unsafe impl fidl::encoding::TypeMarker for ThreadInfo {
4554 type Owned = Self;
4555
4556 #[inline(always)]
4557 fn inline_align(_context: fidl::encoding::Context) -> usize {
4558 8
4559 }
4560
4561 #[inline(always)]
4562 fn inline_size(_context: fidl::encoding::Context) -> usize {
4563 16
4564 }
4565 }
4566
4567 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ThreadInfo, D>
4568 for &ThreadInfo
4569 {
4570 unsafe fn encode(
4571 self,
4572 encoder: &mut fidl::encoding::Encoder<'_, D>,
4573 offset: usize,
4574 mut depth: fidl::encoding::Depth,
4575 ) -> fidl::Result<()> {
4576 encoder.debug_check_bounds::<ThreadInfo>(offset);
4577 let max_ordinal: u64 = self.max_ordinal_present();
4579 encoder.write_num(max_ordinal, offset);
4580 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4581 if max_ordinal == 0 {
4583 return Ok(());
4584 }
4585 depth.increment()?;
4586 let envelope_size = 8;
4587 let bytes_len = max_ordinal as usize * envelope_size;
4588 #[allow(unused_variables)]
4589 let offset = encoder.out_of_line_offset(bytes_len);
4590 let mut _prev_end_offset: usize = 0;
4591 if 1 > max_ordinal {
4592 return Ok(());
4593 }
4594
4595 let cur_offset: usize = (1 - 1) * envelope_size;
4598
4599 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4601
4602 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4607 self.koid.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4608 encoder,
4609 offset + cur_offset,
4610 depth,
4611 )?;
4612
4613 _prev_end_offset = cur_offset + envelope_size;
4614 if 2 > max_ordinal {
4615 return Ok(());
4616 }
4617
4618 let cur_offset: usize = (2 - 1) * envelope_size;
4621
4622 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4624
4625 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4630 self.name.as_ref().map(
4631 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4632 ),
4633 encoder,
4634 offset + cur_offset,
4635 depth,
4636 )?;
4637
4638 _prev_end_offset = cur_offset + envelope_size;
4639 if 3 > max_ordinal {
4640 return Ok(());
4641 }
4642
4643 let cur_offset: usize = (3 - 1) * envelope_size;
4646
4647 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4649
4650 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
4655 self.scheduler_role.as_ref().map(
4656 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4657 ),
4658 encoder,
4659 offset + cur_offset,
4660 depth,
4661 )?;
4662
4663 _prev_end_offset = cur_offset + envelope_size;
4664
4665 Ok(())
4666 }
4667 }
4668
4669 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ThreadInfo {
4670 #[inline(always)]
4671 fn new_empty() -> Self {
4672 Self::default()
4673 }
4674
4675 unsafe fn decode(
4676 &mut self,
4677 decoder: &mut fidl::encoding::Decoder<'_, D>,
4678 offset: usize,
4679 mut depth: fidl::encoding::Depth,
4680 ) -> fidl::Result<()> {
4681 decoder.debug_check_bounds::<Self>(offset);
4682 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4683 None => return Err(fidl::Error::NotNullable),
4684 Some(len) => len,
4685 };
4686 if len == 0 {
4688 return Ok(());
4689 };
4690 depth.increment()?;
4691 let envelope_size = 8;
4692 let bytes_len = len * envelope_size;
4693 let offset = decoder.out_of_line_offset(bytes_len)?;
4694 let mut _next_ordinal_to_read = 0;
4696 let mut next_offset = offset;
4697 let end_offset = offset + bytes_len;
4698 _next_ordinal_to_read += 1;
4699 if next_offset >= end_offset {
4700 return Ok(());
4701 }
4702
4703 while _next_ordinal_to_read < 1 {
4705 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4706 _next_ordinal_to_read += 1;
4707 next_offset += envelope_size;
4708 }
4709
4710 let next_out_of_line = decoder.next_out_of_line();
4711 let handles_before = decoder.remaining_handles();
4712 if let Some((inlined, num_bytes, num_handles)) =
4713 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4714 {
4715 let member_inline_size =
4716 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4717 if inlined != (member_inline_size <= 4) {
4718 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4719 }
4720 let inner_offset;
4721 let mut inner_depth = depth.clone();
4722 if inlined {
4723 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4724 inner_offset = next_offset;
4725 } else {
4726 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4727 inner_depth.increment()?;
4728 }
4729 let val_ref = self.koid.get_or_insert_with(|| fidl::new_empty!(u64, D));
4730 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4731 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4732 {
4733 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4734 }
4735 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4736 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4737 }
4738 }
4739
4740 next_offset += envelope_size;
4741 _next_ordinal_to_read += 1;
4742 if next_offset >= end_offset {
4743 return Ok(());
4744 }
4745
4746 while _next_ordinal_to_read < 2 {
4748 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4749 _next_ordinal_to_read += 1;
4750 next_offset += envelope_size;
4751 }
4752
4753 let next_out_of_line = decoder.next_out_of_line();
4754 let handles_before = decoder.remaining_handles();
4755 if let Some((inlined, num_bytes, num_handles)) =
4756 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4757 {
4758 let member_inline_size =
4759 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4760 decoder.context,
4761 );
4762 if inlined != (member_inline_size <= 4) {
4763 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4764 }
4765 let inner_offset;
4766 let mut inner_depth = depth.clone();
4767 if inlined {
4768 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4769 inner_offset = next_offset;
4770 } else {
4771 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4772 inner_depth.increment()?;
4773 }
4774 let val_ref = self
4775 .name
4776 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
4777 fidl::decode!(
4778 fidl::encoding::UnboundedString,
4779 D,
4780 val_ref,
4781 decoder,
4782 inner_offset,
4783 inner_depth
4784 )?;
4785 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4786 {
4787 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4788 }
4789 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4790 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4791 }
4792 }
4793
4794 next_offset += envelope_size;
4795 _next_ordinal_to_read += 1;
4796 if next_offset >= end_offset {
4797 return Ok(());
4798 }
4799
4800 while _next_ordinal_to_read < 3 {
4802 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4803 _next_ordinal_to_read += 1;
4804 next_offset += envelope_size;
4805 }
4806
4807 let next_out_of_line = decoder.next_out_of_line();
4808 let handles_before = decoder.remaining_handles();
4809 if let Some((inlined, num_bytes, num_handles)) =
4810 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4811 {
4812 let member_inline_size =
4813 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4814 decoder.context,
4815 );
4816 if inlined != (member_inline_size <= 4) {
4817 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4818 }
4819 let inner_offset;
4820 let mut inner_depth = depth.clone();
4821 if inlined {
4822 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4823 inner_offset = next_offset;
4824 } else {
4825 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4826 inner_depth.increment()?;
4827 }
4828 let val_ref = self
4829 .scheduler_role
4830 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
4831 fidl::decode!(
4832 fidl::encoding::UnboundedString,
4833 D,
4834 val_ref,
4835 decoder,
4836 inner_offset,
4837 inner_depth
4838 )?;
4839 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4840 {
4841 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4842 }
4843 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4844 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4845 }
4846 }
4847
4848 next_offset += envelope_size;
4849
4850 while next_offset < end_offset {
4852 _next_ordinal_to_read += 1;
4853 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4854 next_offset += envelope_size;
4855 }
4856
4857 Ok(())
4858 }
4859 }
4860
4861 impl fidl::encoding::ValueTypeMarker for CompositeInfo {
4862 type Borrowed<'a> = &'a Self;
4863 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4864 value
4865 }
4866 }
4867
4868 unsafe impl fidl::encoding::TypeMarker for CompositeInfo {
4869 type Owned = Self;
4870
4871 #[inline(always)]
4872 fn inline_align(_context: fidl::encoding::Context) -> usize {
4873 8
4874 }
4875
4876 #[inline(always)]
4877 fn inline_size(_context: fidl::encoding::Context) -> usize {
4878 16
4879 }
4880 }
4881
4882 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeInfo, D>
4883 for &CompositeInfo
4884 {
4885 #[inline]
4886 unsafe fn encode(
4887 self,
4888 encoder: &mut fidl::encoding::Encoder<'_, D>,
4889 offset: usize,
4890 _depth: fidl::encoding::Depth,
4891 ) -> fidl::Result<()> {
4892 encoder.debug_check_bounds::<CompositeInfo>(offset);
4893 encoder.write_num::<u64>(self.ordinal(), offset);
4894 match self {
4895 CompositeInfo::Composite(ref val) => {
4896 fidl::encoding::encode_in_envelope::<fidl_fuchsia_driver_framework__common::CompositeInfo, D>(
4897 <fidl_fuchsia_driver_framework__common::CompositeInfo as fidl::encoding::ValueTypeMarker>::borrow(val),
4898 encoder, offset + 8, _depth
4899 )
4900 }
4901 }
4902 }
4903 }
4904
4905 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeInfo {
4906 #[inline(always)]
4907 fn new_empty() -> Self {
4908 Self::Composite(fidl::new_empty!(
4909 fidl_fuchsia_driver_framework__common::CompositeInfo,
4910 D
4911 ))
4912 }
4913
4914 #[inline]
4915 unsafe fn decode(
4916 &mut self,
4917 decoder: &mut fidl::encoding::Decoder<'_, D>,
4918 offset: usize,
4919 mut depth: fidl::encoding::Depth,
4920 ) -> fidl::Result<()> {
4921 decoder.debug_check_bounds::<Self>(offset);
4922 #[allow(unused_variables)]
4923 let next_out_of_line = decoder.next_out_of_line();
4924 let handles_before = decoder.remaining_handles();
4925 let (ordinal, inlined, num_bytes, num_handles) =
4926 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
4927
4928 let member_inline_size = match ordinal {
4929 2 => <fidl_fuchsia_driver_framework__common::CompositeInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context),
4930 _ => return Err(fidl::Error::UnknownUnionTag),
4931 };
4932
4933 if inlined != (member_inline_size <= 4) {
4934 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4935 }
4936 let _inner_offset;
4937 if inlined {
4938 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
4939 _inner_offset = offset + 8;
4940 } else {
4941 depth.increment()?;
4942 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4943 }
4944 match ordinal {
4945 2 => {
4946 #[allow(irrefutable_let_patterns)]
4947 if let CompositeInfo::Composite(_) = self {
4948 } else {
4950 *self = CompositeInfo::Composite(fidl::new_empty!(
4952 fidl_fuchsia_driver_framework__common::CompositeInfo,
4953 D
4954 ));
4955 }
4956 #[allow(irrefutable_let_patterns)]
4957 if let CompositeInfo::Composite(ref mut val) = self {
4958 fidl::decode!(
4959 fidl_fuchsia_driver_framework__common::CompositeInfo,
4960 D,
4961 val,
4962 decoder,
4963 _inner_offset,
4964 depth
4965 )?;
4966 } else {
4967 unreachable!()
4968 }
4969 }
4970 ordinal => panic!("unexpected ordinal {:?}", ordinal),
4971 }
4972 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
4973 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4974 }
4975 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4976 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4977 }
4978 Ok(())
4979 }
4980 }
4981}