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
11#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
12pub struct DevelopmentManagerDisableDriverRequest {
13 pub driver_url: String,
14 pub package_hash: Option<String>,
15}
16
17impl fidl::Persistable for DevelopmentManagerDisableDriverRequest {}
18
19#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
20pub struct DevelopmentManagerEnableDriverRequest {
21 pub driver_url: String,
22 pub package_hash: Option<String>,
23}
24
25impl fidl::Persistable for DevelopmentManagerEnableDriverRequest {}
26
27#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
28pub struct DevelopmentManagerRebindCompositesWithDriverRequest {
29 pub driver_url: String,
30}
31
32impl fidl::Persistable for DevelopmentManagerRebindCompositesWithDriverRequest {}
33
34#[derive(Clone, Debug, PartialEq)]
35pub struct DriverIndexMatchDriverRequest {
36 pub args: MatchDriverArgs,
37}
38
39impl fidl::Persistable for DriverIndexMatchDriverRequest {}
40
41#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
42pub struct DriverIndexRebindCompositeNodeSpecRequest {
43 pub spec: String,
44 pub driver_url_suffix: Option<String>,
45}
46
47impl fidl::Persistable for DriverIndexRebindCompositeNodeSpecRequest {}
48
49#[derive(Clone, Debug, Default, PartialEq)]
50pub struct MatchDriverArgs {
51 pub properties: Option<Vec<fidl_fuchsia_driver_framework__common::NodeProperty2>>,
53 pub name: Option<String>,
55 pub driver_url_suffix: Option<String>,
56 #[doc(hidden)]
57 pub __source_breaking: fidl::marker::SourceBreaking,
58}
59
60impl fidl::Persistable for MatchDriverArgs {}
61
62#[derive(Clone, Debug)]
64pub enum MatchDriverResult {
65 Driver(fidl_fuchsia_driver_framework__common::DriverInfo),
67 CompositeParents(Vec<fidl_fuchsia_driver_framework__common::CompositeParent>),
69 #[doc(hidden)]
70 __SourceBreaking { unknown_ordinal: u64 },
71}
72
73#[macro_export]
75macro_rules! MatchDriverResultUnknown {
76 () => {
77 _
78 };
79}
80
81impl PartialEq for MatchDriverResult {
83 fn eq(&self, other: &Self) -> bool {
84 match (self, other) {
85 (Self::Driver(x), Self::Driver(y)) => *x == *y,
86 (Self::CompositeParents(x), Self::CompositeParents(y)) => *x == *y,
87 _ => false,
88 }
89 }
90}
91
92impl MatchDriverResult {
93 #[inline]
94 pub fn ordinal(&self) -> u64 {
95 match *self {
96 Self::Driver(_) => 1,
97 Self::CompositeParents(_) => 2,
98 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
99 }
100 }
101
102 #[inline]
103 pub fn unknown_variant_for_testing() -> Self {
104 Self::__SourceBreaking { unknown_ordinal: 0 }
105 }
106
107 #[inline]
108 pub fn is_unknown(&self) -> bool {
109 match self {
110 Self::__SourceBreaking { .. } => true,
111 _ => false,
112 }
113 }
114}
115
116impl fidl::Persistable for MatchDriverResult {}
117
118mod internal {
119 use super::*;
120
121 impl fidl::encoding::ValueTypeMarker for DevelopmentManagerDisableDriverRequest {
122 type Borrowed<'a> = &'a Self;
123 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
124 value
125 }
126 }
127
128 unsafe impl fidl::encoding::TypeMarker for DevelopmentManagerDisableDriverRequest {
129 type Owned = Self;
130
131 #[inline(always)]
132 fn inline_align(_context: fidl::encoding::Context) -> usize {
133 8
134 }
135
136 #[inline(always)]
137 fn inline_size(_context: fidl::encoding::Context) -> usize {
138 32
139 }
140 }
141
142 unsafe impl<D: fidl::encoding::ResourceDialect>
143 fidl::encoding::Encode<DevelopmentManagerDisableDriverRequest, D>
144 for &DevelopmentManagerDisableDriverRequest
145 {
146 #[inline]
147 unsafe fn encode(
148 self,
149 encoder: &mut fidl::encoding::Encoder<'_, D>,
150 offset: usize,
151 _depth: fidl::encoding::Depth,
152 ) -> fidl::Result<()> {
153 encoder.debug_check_bounds::<DevelopmentManagerDisableDriverRequest>(offset);
154 fidl::encoding::Encode::<DevelopmentManagerDisableDriverRequest, D>::encode(
156 (
157 <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_url),
158 <fidl::encoding::Optional<fidl::encoding::BoundedString<64>> as fidl::encoding::ValueTypeMarker>::borrow(&self.package_hash),
159 ),
160 encoder, offset, _depth
161 )
162 }
163 }
164 unsafe impl<
165 D: fidl::encoding::ResourceDialect,
166 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
167 T1: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<64>>, D>,
168 > fidl::encoding::Encode<DevelopmentManagerDisableDriverRequest, D> for (T0, T1)
169 {
170 #[inline]
171 unsafe fn encode(
172 self,
173 encoder: &mut fidl::encoding::Encoder<'_, D>,
174 offset: usize,
175 depth: fidl::encoding::Depth,
176 ) -> fidl::Result<()> {
177 encoder.debug_check_bounds::<DevelopmentManagerDisableDriverRequest>(offset);
178 self.0.encode(encoder, offset + 0, depth)?;
182 self.1.encode(encoder, offset + 16, depth)?;
183 Ok(())
184 }
185 }
186
187 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
188 for DevelopmentManagerDisableDriverRequest
189 {
190 #[inline(always)]
191 fn new_empty() -> Self {
192 Self {
193 driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D),
194 package_hash: fidl::new_empty!(
195 fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
196 D
197 ),
198 }
199 }
200
201 #[inline]
202 unsafe fn decode(
203 &mut self,
204 decoder: &mut fidl::encoding::Decoder<'_, D>,
205 offset: usize,
206 _depth: fidl::encoding::Depth,
207 ) -> fidl::Result<()> {
208 decoder.debug_check_bounds::<Self>(offset);
209 fidl::decode!(
211 fidl::encoding::BoundedString<4096>,
212 D,
213 &mut self.driver_url,
214 decoder,
215 offset + 0,
216 _depth
217 )?;
218 fidl::decode!(
219 fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
220 D,
221 &mut self.package_hash,
222 decoder,
223 offset + 16,
224 _depth
225 )?;
226 Ok(())
227 }
228 }
229
230 impl fidl::encoding::ValueTypeMarker for DevelopmentManagerEnableDriverRequest {
231 type Borrowed<'a> = &'a Self;
232 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
233 value
234 }
235 }
236
237 unsafe impl fidl::encoding::TypeMarker for DevelopmentManagerEnableDriverRequest {
238 type Owned = Self;
239
240 #[inline(always)]
241 fn inline_align(_context: fidl::encoding::Context) -> usize {
242 8
243 }
244
245 #[inline(always)]
246 fn inline_size(_context: fidl::encoding::Context) -> usize {
247 32
248 }
249 }
250
251 unsafe impl<D: fidl::encoding::ResourceDialect>
252 fidl::encoding::Encode<DevelopmentManagerEnableDriverRequest, D>
253 for &DevelopmentManagerEnableDriverRequest
254 {
255 #[inline]
256 unsafe fn encode(
257 self,
258 encoder: &mut fidl::encoding::Encoder<'_, D>,
259 offset: usize,
260 _depth: fidl::encoding::Depth,
261 ) -> fidl::Result<()> {
262 encoder.debug_check_bounds::<DevelopmentManagerEnableDriverRequest>(offset);
263 fidl::encoding::Encode::<DevelopmentManagerEnableDriverRequest, D>::encode(
265 (
266 <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_url),
267 <fidl::encoding::Optional<fidl::encoding::BoundedString<64>> as fidl::encoding::ValueTypeMarker>::borrow(&self.package_hash),
268 ),
269 encoder, offset, _depth
270 )
271 }
272 }
273 unsafe impl<
274 D: fidl::encoding::ResourceDialect,
275 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
276 T1: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<64>>, D>,
277 > fidl::encoding::Encode<DevelopmentManagerEnableDriverRequest, D> for (T0, T1)
278 {
279 #[inline]
280 unsafe fn encode(
281 self,
282 encoder: &mut fidl::encoding::Encoder<'_, D>,
283 offset: usize,
284 depth: fidl::encoding::Depth,
285 ) -> fidl::Result<()> {
286 encoder.debug_check_bounds::<DevelopmentManagerEnableDriverRequest>(offset);
287 self.0.encode(encoder, offset + 0, depth)?;
291 self.1.encode(encoder, offset + 16, depth)?;
292 Ok(())
293 }
294 }
295
296 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
297 for DevelopmentManagerEnableDriverRequest
298 {
299 #[inline(always)]
300 fn new_empty() -> Self {
301 Self {
302 driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D),
303 package_hash: fidl::new_empty!(
304 fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
305 D
306 ),
307 }
308 }
309
310 #[inline]
311 unsafe fn decode(
312 &mut self,
313 decoder: &mut fidl::encoding::Decoder<'_, D>,
314 offset: usize,
315 _depth: fidl::encoding::Depth,
316 ) -> fidl::Result<()> {
317 decoder.debug_check_bounds::<Self>(offset);
318 fidl::decode!(
320 fidl::encoding::BoundedString<4096>,
321 D,
322 &mut self.driver_url,
323 decoder,
324 offset + 0,
325 _depth
326 )?;
327 fidl::decode!(
328 fidl::encoding::Optional<fidl::encoding::BoundedString<64>>,
329 D,
330 &mut self.package_hash,
331 decoder,
332 offset + 16,
333 _depth
334 )?;
335 Ok(())
336 }
337 }
338
339 impl fidl::encoding::ValueTypeMarker for DevelopmentManagerRebindCompositesWithDriverRequest {
340 type Borrowed<'a> = &'a Self;
341 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
342 value
343 }
344 }
345
346 unsafe impl fidl::encoding::TypeMarker for DevelopmentManagerRebindCompositesWithDriverRequest {
347 type Owned = Self;
348
349 #[inline(always)]
350 fn inline_align(_context: fidl::encoding::Context) -> usize {
351 8
352 }
353
354 #[inline(always)]
355 fn inline_size(_context: fidl::encoding::Context) -> usize {
356 16
357 }
358 }
359
360 unsafe impl<D: fidl::encoding::ResourceDialect>
361 fidl::encoding::Encode<DevelopmentManagerRebindCompositesWithDriverRequest, D>
362 for &DevelopmentManagerRebindCompositesWithDriverRequest
363 {
364 #[inline]
365 unsafe fn encode(
366 self,
367 encoder: &mut fidl::encoding::Encoder<'_, D>,
368 offset: usize,
369 _depth: fidl::encoding::Depth,
370 ) -> fidl::Result<()> {
371 encoder
372 .debug_check_bounds::<DevelopmentManagerRebindCompositesWithDriverRequest>(offset);
373 fidl::encoding::Encode::<DevelopmentManagerRebindCompositesWithDriverRequest, D>::encode(
375 (<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(
376 &self.driver_url,
377 ),),
378 encoder,
379 offset,
380 _depth,
381 )
382 }
383 }
384 unsafe impl<
385 D: fidl::encoding::ResourceDialect,
386 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
387 > fidl::encoding::Encode<DevelopmentManagerRebindCompositesWithDriverRequest, D> for (T0,)
388 {
389 #[inline]
390 unsafe fn encode(
391 self,
392 encoder: &mut fidl::encoding::Encoder<'_, D>,
393 offset: usize,
394 depth: fidl::encoding::Depth,
395 ) -> fidl::Result<()> {
396 encoder
397 .debug_check_bounds::<DevelopmentManagerRebindCompositesWithDriverRequest>(offset);
398 self.0.encode(encoder, offset + 0, depth)?;
402 Ok(())
403 }
404 }
405
406 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
407 for DevelopmentManagerRebindCompositesWithDriverRequest
408 {
409 #[inline(always)]
410 fn new_empty() -> Self {
411 Self { driver_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D) }
412 }
413
414 #[inline]
415 unsafe fn decode(
416 &mut self,
417 decoder: &mut fidl::encoding::Decoder<'_, D>,
418 offset: usize,
419 _depth: fidl::encoding::Depth,
420 ) -> fidl::Result<()> {
421 decoder.debug_check_bounds::<Self>(offset);
422 fidl::decode!(
424 fidl::encoding::BoundedString<4096>,
425 D,
426 &mut self.driver_url,
427 decoder,
428 offset + 0,
429 _depth
430 )?;
431 Ok(())
432 }
433 }
434
435 impl fidl::encoding::ValueTypeMarker for DriverIndexMatchDriverRequest {
436 type Borrowed<'a> = &'a Self;
437 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
438 value
439 }
440 }
441
442 unsafe impl fidl::encoding::TypeMarker for DriverIndexMatchDriverRequest {
443 type Owned = Self;
444
445 #[inline(always)]
446 fn inline_align(_context: fidl::encoding::Context) -> usize {
447 8
448 }
449
450 #[inline(always)]
451 fn inline_size(_context: fidl::encoding::Context) -> usize {
452 16
453 }
454 }
455
456 unsafe impl<D: fidl::encoding::ResourceDialect>
457 fidl::encoding::Encode<DriverIndexMatchDriverRequest, D>
458 for &DriverIndexMatchDriverRequest
459 {
460 #[inline]
461 unsafe fn encode(
462 self,
463 encoder: &mut fidl::encoding::Encoder<'_, D>,
464 offset: usize,
465 _depth: fidl::encoding::Depth,
466 ) -> fidl::Result<()> {
467 encoder.debug_check_bounds::<DriverIndexMatchDriverRequest>(offset);
468 fidl::encoding::Encode::<DriverIndexMatchDriverRequest, D>::encode(
470 (<MatchDriverArgs as fidl::encoding::ValueTypeMarker>::borrow(&self.args),),
471 encoder,
472 offset,
473 _depth,
474 )
475 }
476 }
477 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<MatchDriverArgs, D>>
478 fidl::encoding::Encode<DriverIndexMatchDriverRequest, D> for (T0,)
479 {
480 #[inline]
481 unsafe fn encode(
482 self,
483 encoder: &mut fidl::encoding::Encoder<'_, D>,
484 offset: usize,
485 depth: fidl::encoding::Depth,
486 ) -> fidl::Result<()> {
487 encoder.debug_check_bounds::<DriverIndexMatchDriverRequest>(offset);
488 self.0.encode(encoder, offset + 0, depth)?;
492 Ok(())
493 }
494 }
495
496 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
497 for DriverIndexMatchDriverRequest
498 {
499 #[inline(always)]
500 fn new_empty() -> Self {
501 Self { args: fidl::new_empty!(MatchDriverArgs, D) }
502 }
503
504 #[inline]
505 unsafe fn decode(
506 &mut self,
507 decoder: &mut fidl::encoding::Decoder<'_, D>,
508 offset: usize,
509 _depth: fidl::encoding::Depth,
510 ) -> fidl::Result<()> {
511 decoder.debug_check_bounds::<Self>(offset);
512 fidl::decode!(MatchDriverArgs, D, &mut self.args, decoder, offset + 0, _depth)?;
514 Ok(())
515 }
516 }
517
518 impl fidl::encoding::ValueTypeMarker for DriverIndexRebindCompositeNodeSpecRequest {
519 type Borrowed<'a> = &'a Self;
520 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
521 value
522 }
523 }
524
525 unsafe impl fidl::encoding::TypeMarker for DriverIndexRebindCompositeNodeSpecRequest {
526 type Owned = Self;
527
528 #[inline(always)]
529 fn inline_align(_context: fidl::encoding::Context) -> usize {
530 8
531 }
532
533 #[inline(always)]
534 fn inline_size(_context: fidl::encoding::Context) -> usize {
535 32
536 }
537 }
538
539 unsafe impl<D: fidl::encoding::ResourceDialect>
540 fidl::encoding::Encode<DriverIndexRebindCompositeNodeSpecRequest, D>
541 for &DriverIndexRebindCompositeNodeSpecRequest
542 {
543 #[inline]
544 unsafe fn encode(
545 self,
546 encoder: &mut fidl::encoding::Encoder<'_, D>,
547 offset: usize,
548 _depth: fidl::encoding::Depth,
549 ) -> fidl::Result<()> {
550 encoder.debug_check_bounds::<DriverIndexRebindCompositeNodeSpecRequest>(offset);
551 fidl::encoding::Encode::<DriverIndexRebindCompositeNodeSpecRequest, D>::encode(
553 (
554 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(&self.spec),
555 <fidl::encoding::Optional<fidl::encoding::UnboundedString> as fidl::encoding::ValueTypeMarker>::borrow(&self.driver_url_suffix),
556 ),
557 encoder, offset, _depth
558 )
559 }
560 }
561 unsafe impl<
562 D: fidl::encoding::ResourceDialect,
563 T0: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
564 T1: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::UnboundedString>, D>,
565 > fidl::encoding::Encode<DriverIndexRebindCompositeNodeSpecRequest, D> for (T0, T1)
566 {
567 #[inline]
568 unsafe fn encode(
569 self,
570 encoder: &mut fidl::encoding::Encoder<'_, D>,
571 offset: usize,
572 depth: fidl::encoding::Depth,
573 ) -> fidl::Result<()> {
574 encoder.debug_check_bounds::<DriverIndexRebindCompositeNodeSpecRequest>(offset);
575 self.0.encode(encoder, offset + 0, depth)?;
579 self.1.encode(encoder, offset + 16, depth)?;
580 Ok(())
581 }
582 }
583
584 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
585 for DriverIndexRebindCompositeNodeSpecRequest
586 {
587 #[inline(always)]
588 fn new_empty() -> Self {
589 Self {
590 spec: fidl::new_empty!(fidl::encoding::UnboundedString, D),
591 driver_url_suffix: fidl::new_empty!(
592 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
593 D
594 ),
595 }
596 }
597
598 #[inline]
599 unsafe fn decode(
600 &mut self,
601 decoder: &mut fidl::encoding::Decoder<'_, D>,
602 offset: usize,
603 _depth: fidl::encoding::Depth,
604 ) -> fidl::Result<()> {
605 decoder.debug_check_bounds::<Self>(offset);
606 fidl::decode!(
608 fidl::encoding::UnboundedString,
609 D,
610 &mut self.spec,
611 decoder,
612 offset + 0,
613 _depth
614 )?;
615 fidl::decode!(
616 fidl::encoding::Optional<fidl::encoding::UnboundedString>,
617 D,
618 &mut self.driver_url_suffix,
619 decoder,
620 offset + 16,
621 _depth
622 )?;
623 Ok(())
624 }
625 }
626
627 impl MatchDriverArgs {
628 #[inline(always)]
629 fn max_ordinal_present(&self) -> u64 {
630 if let Some(_) = self.driver_url_suffix {
631 return 3;
632 }
633 if let Some(_) = self.name {
634 return 2;
635 }
636 if let Some(_) = self.properties {
637 return 1;
638 }
639 0
640 }
641 }
642
643 impl fidl::encoding::ValueTypeMarker for MatchDriverArgs {
644 type Borrowed<'a> = &'a Self;
645 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
646 value
647 }
648 }
649
650 unsafe impl fidl::encoding::TypeMarker for MatchDriverArgs {
651 type Owned = Self;
652
653 #[inline(always)]
654 fn inline_align(_context: fidl::encoding::Context) -> usize {
655 8
656 }
657
658 #[inline(always)]
659 fn inline_size(_context: fidl::encoding::Context) -> usize {
660 16
661 }
662 }
663
664 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MatchDriverArgs, D>
665 for &MatchDriverArgs
666 {
667 unsafe fn encode(
668 self,
669 encoder: &mut fidl::encoding::Encoder<'_, D>,
670 offset: usize,
671 mut depth: fidl::encoding::Depth,
672 ) -> fidl::Result<()> {
673 encoder.debug_check_bounds::<MatchDriverArgs>(offset);
674 let max_ordinal: u64 = self.max_ordinal_present();
676 encoder.write_num(max_ordinal, offset);
677 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
678 if max_ordinal == 0 {
680 return Ok(());
681 }
682 depth.increment()?;
683 let envelope_size = 8;
684 let bytes_len = max_ordinal as usize * envelope_size;
685 #[allow(unused_variables)]
686 let offset = encoder.out_of_line_offset(bytes_len);
687 let mut _prev_end_offset: usize = 0;
688 if 1 > max_ordinal {
689 return Ok(());
690 }
691
692 let cur_offset: usize = (1 - 1) * envelope_size;
695
696 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
698
699 fidl::encoding::encode_in_envelope_optional::<
704 fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::NodeProperty2, 64>,
705 D,
706 >(
707 self.properties.as_ref().map(
708 <fidl::encoding::Vector<
709 fidl_fuchsia_driver_framework__common::NodeProperty2,
710 64,
711 > as fidl::encoding::ValueTypeMarker>::borrow,
712 ),
713 encoder,
714 offset + cur_offset,
715 depth,
716 )?;
717
718 _prev_end_offset = cur_offset + envelope_size;
719 if 2 > max_ordinal {
720 return Ok(());
721 }
722
723 let cur_offset: usize = (2 - 1) * envelope_size;
726
727 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
729
730 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
735 self.name.as_ref().map(
736 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
737 ),
738 encoder,
739 offset + cur_offset,
740 depth,
741 )?;
742
743 _prev_end_offset = cur_offset + envelope_size;
744 if 3 > max_ordinal {
745 return Ok(());
746 }
747
748 let cur_offset: usize = (3 - 1) * envelope_size;
751
752 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
754
755 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
760 self.driver_url_suffix.as_ref().map(
761 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
762 ),
763 encoder,
764 offset + cur_offset,
765 depth,
766 )?;
767
768 _prev_end_offset = cur_offset + envelope_size;
769
770 Ok(())
771 }
772 }
773
774 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MatchDriverArgs {
775 #[inline(always)]
776 fn new_empty() -> Self {
777 Self::default()
778 }
779
780 unsafe fn decode(
781 &mut self,
782 decoder: &mut fidl::encoding::Decoder<'_, D>,
783 offset: usize,
784 mut depth: fidl::encoding::Depth,
785 ) -> fidl::Result<()> {
786 decoder.debug_check_bounds::<Self>(offset);
787 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
788 None => return Err(fidl::Error::NotNullable),
789 Some(len) => len,
790 };
791 if len == 0 {
793 return Ok(());
794 };
795 depth.increment()?;
796 let envelope_size = 8;
797 let bytes_len = len * envelope_size;
798 let offset = decoder.out_of_line_offset(bytes_len)?;
799 let mut _next_ordinal_to_read = 0;
801 let mut next_offset = offset;
802 let end_offset = offset + bytes_len;
803 _next_ordinal_to_read += 1;
804 if next_offset >= end_offset {
805 return Ok(());
806 }
807
808 while _next_ordinal_to_read < 1 {
810 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
811 _next_ordinal_to_read += 1;
812 next_offset += envelope_size;
813 }
814
815 let next_out_of_line = decoder.next_out_of_line();
816 let handles_before = decoder.remaining_handles();
817 if let Some((inlined, num_bytes, num_handles)) =
818 fidl::encoding::decode_envelope_header(decoder, next_offset)?
819 {
820 let member_inline_size = <fidl::encoding::Vector<
821 fidl_fuchsia_driver_framework__common::NodeProperty2,
822 64,
823 > as fidl::encoding::TypeMarker>::inline_size(
824 decoder.context
825 );
826 if inlined != (member_inline_size <= 4) {
827 return Err(fidl::Error::InvalidInlineBitInEnvelope);
828 }
829 let inner_offset;
830 let mut inner_depth = depth.clone();
831 if inlined {
832 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
833 inner_offset = next_offset;
834 } else {
835 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
836 inner_depth.increment()?;
837 }
838 let val_ref =
839 self.properties.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::NodeProperty2, 64>, D));
840 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_driver_framework__common::NodeProperty2, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
841 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
842 {
843 return Err(fidl::Error::InvalidNumBytesInEnvelope);
844 }
845 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
846 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
847 }
848 }
849
850 next_offset += envelope_size;
851 _next_ordinal_to_read += 1;
852 if next_offset >= end_offset {
853 return Ok(());
854 }
855
856 while _next_ordinal_to_read < 2 {
858 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
859 _next_ordinal_to_read += 1;
860 next_offset += envelope_size;
861 }
862
863 let next_out_of_line = decoder.next_out_of_line();
864 let handles_before = decoder.remaining_handles();
865 if let Some((inlined, num_bytes, num_handles)) =
866 fidl::encoding::decode_envelope_header(decoder, next_offset)?
867 {
868 let member_inline_size =
869 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
870 decoder.context,
871 );
872 if inlined != (member_inline_size <= 4) {
873 return Err(fidl::Error::InvalidInlineBitInEnvelope);
874 }
875 let inner_offset;
876 let mut inner_depth = depth.clone();
877 if inlined {
878 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
879 inner_offset = next_offset;
880 } else {
881 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
882 inner_depth.increment()?;
883 }
884 let val_ref = self
885 .name
886 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
887 fidl::decode!(
888 fidl::encoding::BoundedString<128>,
889 D,
890 val_ref,
891 decoder,
892 inner_offset,
893 inner_depth
894 )?;
895 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
896 {
897 return Err(fidl::Error::InvalidNumBytesInEnvelope);
898 }
899 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
900 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
901 }
902 }
903
904 next_offset += envelope_size;
905 _next_ordinal_to_read += 1;
906 if next_offset >= end_offset {
907 return Ok(());
908 }
909
910 while _next_ordinal_to_read < 3 {
912 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
913 _next_ordinal_to_read += 1;
914 next_offset += envelope_size;
915 }
916
917 let next_out_of_line = decoder.next_out_of_line();
918 let handles_before = decoder.remaining_handles();
919 if let Some((inlined, num_bytes, num_handles)) =
920 fidl::encoding::decode_envelope_header(decoder, next_offset)?
921 {
922 let member_inline_size =
923 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
924 decoder.context,
925 );
926 if inlined != (member_inline_size <= 4) {
927 return Err(fidl::Error::InvalidInlineBitInEnvelope);
928 }
929 let inner_offset;
930 let mut inner_depth = depth.clone();
931 if inlined {
932 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
933 inner_offset = next_offset;
934 } else {
935 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
936 inner_depth.increment()?;
937 }
938 let val_ref = self
939 .driver_url_suffix
940 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
941 fidl::decode!(
942 fidl::encoding::UnboundedString,
943 D,
944 val_ref,
945 decoder,
946 inner_offset,
947 inner_depth
948 )?;
949 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
950 {
951 return Err(fidl::Error::InvalidNumBytesInEnvelope);
952 }
953 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
954 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
955 }
956 }
957
958 next_offset += envelope_size;
959
960 while next_offset < end_offset {
962 _next_ordinal_to_read += 1;
963 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
964 next_offset += envelope_size;
965 }
966
967 Ok(())
968 }
969 }
970
971 impl fidl::encoding::ValueTypeMarker for MatchDriverResult {
972 type Borrowed<'a> = &'a Self;
973 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
974 value
975 }
976 }
977
978 unsafe impl fidl::encoding::TypeMarker for MatchDriverResult {
979 type Owned = Self;
980
981 #[inline(always)]
982 fn inline_align(_context: fidl::encoding::Context) -> usize {
983 8
984 }
985
986 #[inline(always)]
987 fn inline_size(_context: fidl::encoding::Context) -> usize {
988 16
989 }
990 }
991
992 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MatchDriverResult, D>
993 for &MatchDriverResult
994 {
995 #[inline]
996 unsafe fn encode(
997 self,
998 encoder: &mut fidl::encoding::Encoder<'_, D>,
999 offset: usize,
1000 _depth: fidl::encoding::Depth,
1001 ) -> fidl::Result<()> {
1002 encoder.debug_check_bounds::<MatchDriverResult>(offset);
1003 encoder.write_num::<u64>(self.ordinal(), offset);
1004 match self {
1005 MatchDriverResult::Driver(ref val) => {
1006 fidl::encoding::encode_in_envelope::<fidl_fuchsia_driver_framework__common::DriverInfo, D>(
1007 <fidl_fuchsia_driver_framework__common::DriverInfo as fidl::encoding::ValueTypeMarker>::borrow(val),
1008 encoder, offset + 8, _depth
1009 )
1010 }
1011 MatchDriverResult::CompositeParents(ref val) => {
1012 fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<fidl_fuchsia_driver_framework__common::CompositeParent>, D>(
1013 <fidl::encoding::UnboundedVector<fidl_fuchsia_driver_framework__common::CompositeParent> as fidl::encoding::ValueTypeMarker>::borrow(val),
1014 encoder, offset + 8, _depth
1015 )
1016 }
1017 MatchDriverResult::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
1018 }
1019 }
1020 }
1021
1022 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MatchDriverResult {
1023 #[inline(always)]
1024 fn new_empty() -> Self {
1025 Self::__SourceBreaking { unknown_ordinal: 0 }
1026 }
1027
1028 #[inline]
1029 unsafe fn decode(
1030 &mut self,
1031 decoder: &mut fidl::encoding::Decoder<'_, D>,
1032 offset: usize,
1033 mut depth: fidl::encoding::Depth,
1034 ) -> fidl::Result<()> {
1035 decoder.debug_check_bounds::<Self>(offset);
1036 #[allow(unused_variables)]
1037 let next_out_of_line = decoder.next_out_of_line();
1038 let handles_before = decoder.remaining_handles();
1039 let (ordinal, inlined, num_bytes, num_handles) =
1040 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
1041
1042 let member_inline_size = match ordinal {
1043 1 => <fidl_fuchsia_driver_framework__common::DriverInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context),
1044 2 => <fidl::encoding::UnboundedVector<fidl_fuchsia_driver_framework__common::CompositeParent> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
1045 0 => return Err(fidl::Error::UnknownUnionTag),
1046 _ => num_bytes as usize,
1047 };
1048
1049 if inlined != (member_inline_size <= 4) {
1050 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1051 }
1052 let _inner_offset;
1053 if inlined {
1054 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
1055 _inner_offset = offset + 8;
1056 } else {
1057 depth.increment()?;
1058 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1059 }
1060 match ordinal {
1061 1 => {
1062 #[allow(irrefutable_let_patterns)]
1063 if let MatchDriverResult::Driver(_) = self {
1064 } else {
1066 *self = MatchDriverResult::Driver(fidl::new_empty!(
1068 fidl_fuchsia_driver_framework__common::DriverInfo,
1069 D
1070 ));
1071 }
1072 #[allow(irrefutable_let_patterns)]
1073 if let MatchDriverResult::Driver(ref mut val) = self {
1074 fidl::decode!(
1075 fidl_fuchsia_driver_framework__common::DriverInfo,
1076 D,
1077 val,
1078 decoder,
1079 _inner_offset,
1080 depth
1081 )?;
1082 } else {
1083 unreachable!()
1084 }
1085 }
1086 2 => {
1087 #[allow(irrefutable_let_patterns)]
1088 if let MatchDriverResult::CompositeParents(_) = self {
1089 } else {
1091 *self = MatchDriverResult::CompositeParents(fidl::new_empty!(
1093 fidl::encoding::UnboundedVector<
1094 fidl_fuchsia_driver_framework__common::CompositeParent,
1095 >,
1096 D
1097 ));
1098 }
1099 #[allow(irrefutable_let_patterns)]
1100 if let MatchDriverResult::CompositeParents(ref mut val) = self {
1101 fidl::decode!(
1102 fidl::encoding::UnboundedVector<
1103 fidl_fuchsia_driver_framework__common::CompositeParent,
1104 >,
1105 D,
1106 val,
1107 decoder,
1108 _inner_offset,
1109 depth
1110 )?;
1111 } else {
1112 unreachable!()
1113 }
1114 }
1115 #[allow(deprecated)]
1116 ordinal => {
1117 for _ in 0..num_handles {
1118 decoder.drop_next_handle()?;
1119 }
1120 *self = MatchDriverResult::__SourceBreaking { unknown_ordinal: ordinal };
1121 }
1122 }
1123 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
1124 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1125 }
1126 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1127 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1128 }
1129 Ok(())
1130 }
1131 }
1132}