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(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
12#[repr(u32)]
13pub enum ConfigurationError {
14 InvalidArguments = 1,
15 RejectedByNetstack = 2,
16 Internal = 4294967295,
17}
18
19impl ConfigurationError {
20 #[inline]
21 pub fn from_primitive(prim: u32) -> Option<Self> {
22 match prim {
23 1 => Some(Self::InvalidArguments),
24 2 => Some(Self::RejectedByNetstack),
25 4294967295 => Some(Self::Internal),
26 _ => None,
27 }
28 }
29
30 #[inline]
31 pub const fn into_primitive(self) -> u32 {
32 self as u32
33 }
34}
35
36#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
37#[repr(u8)]
38pub enum StorageVariant {
39 Data = 0,
41 Cache = 1,
43 Tmp = 2,
45 CustomArtifacts = 3,
61}
62
63impl StorageVariant {
64 #[inline]
65 pub fn from_primitive(prim: u8) -> Option<Self> {
66 match prim {
67 0 => Some(Self::Data),
68 1 => Some(Self::Cache),
69 2 => Some(Self::Tmp),
70 3 => Some(Self::CustomArtifacts),
71 _ => None,
72 }
73 }
74
75 #[inline]
76 pub const fn into_primitive(self) -> u8 {
77 self as u8
78 }
79}
80
81#[derive(Clone, Debug, PartialEq)]
82pub struct ChildConfigValue {
83 pub key: String,
85 pub value: fidl_fuchsia_component_decl__common::ConfigValue,
88}
89
90impl fidl::Persistable for ChildConfigValue {}
91
92#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
93pub struct CrashListenerNextResponse {
94 pub crashed_monikers: Vec<String>,
95}
96
97impl fidl::Persistable for CrashListenerNextResponse {}
98
99#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
100pub struct Empty;
101
102impl fidl::Persistable for Empty {}
103
104#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
105pub struct ManagedRealmGetMonikerResponse {
106 pub moniker: String,
107}
108
109impl fidl::Persistable for ManagedRealmGetMonikerResponse {}
110
111#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
112pub struct ManagedRealmRemoveDeviceRequest {
113 pub path: String,
114}
115
116impl fidl::Persistable for ManagedRealmRemoveDeviceRequest {}
117
118#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
119pub struct ManagedRealmStartChildComponentRequest {
120 pub child_name: String,
121}
122
123impl fidl::Persistable for ManagedRealmStartChildComponentRequest {}
124
125#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
126pub struct ManagedRealmStopChildComponentRequest {
127 pub child_name: String,
128}
129
130impl fidl::Persistable for ManagedRealmStopChildComponentRequest {}
131
132#[derive(Clone, Debug, Default, PartialEq)]
133pub struct ChildDep {
134 pub name: Option<String>,
139 pub capability: Option<ExposedCapability>,
143 pub is_weak: Option<bool>,
149 pub dynamically_offer_from_void: Option<bool>,
152 #[doc(hidden)]
153 pub __source_breaking: fidl::marker::SourceBreaking,
154}
155
156impl fidl::Persistable for ChildDep {}
157
158#[derive(Clone, Debug, Default, PartialEq)]
159pub struct DevfsDep {
160 pub name: Option<String>,
164 pub subdir: Option<String>,
170 #[doc(hidden)]
171 pub __source_breaking: fidl::marker::SourceBreaking,
172}
173
174impl fidl::Persistable for DevfsDep {}
175
176#[derive(Clone, Debug, Default, PartialEq)]
177pub struct StorageDep {
178 pub variant: Option<StorageVariant>,
182 pub path: Option<String>,
187 #[doc(hidden)]
188 pub __source_breaking: fidl::marker::SourceBreaking,
189}
190
191impl fidl::Persistable for StorageDep {}
192
193#[derive(Clone, Debug, PartialEq)]
194pub enum Capability {
195 NetemulDevfs(DevfsDep),
198 NetemulNetworkContext(Empty),
201 LogSink(Empty),
206 ChildDep(ChildDep),
209 StorageDep(StorageDep),
212 TracingProvider(Empty),
215}
216
217impl Capability {
218 #[inline]
219 pub fn ordinal(&self) -> u64 {
220 match *self {
221 Self::NetemulDevfs(_) => 1,
222 Self::NetemulNetworkContext(_) => 3,
223 Self::LogSink(_) => 4,
224 Self::ChildDep(_) => 5,
225 Self::StorageDep(_) => 6,
226 Self::TracingProvider(_) => 7,
227 }
228 }
229}
230
231impl fidl::Persistable for Capability {}
232
233#[derive(Clone, Debug, PartialEq)]
234pub enum ChildUses {
235 Capabilities(Vec<Capability>),
240}
241
242impl ChildUses {
243 #[inline]
244 pub fn ordinal(&self) -> u64 {
245 match *self {
246 Self::Capabilities(_) => 1,
247 }
248 }
249}
250
251impl fidl::Persistable for ChildUses {}
252
253#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
254pub enum ExposedCapability {
255 Protocol(String),
257 Configuration(String),
259 Service(String),
261}
262
263impl ExposedCapability {
264 #[inline]
265 pub fn ordinal(&self) -> u64 {
266 match *self {
267 Self::Protocol(_) => 1,
268 Self::Configuration(_) => 2,
269 Self::Service(_) => 3,
270 }
271 }
272}
273
274impl fidl::Persistable for ExposedCapability {}
275
276pub mod configurable_netstack_ordinals {
277 pub const CONFIGURE_INTERFACE: u64 = 0x64db8deb981ee49;
278}
279
280pub mod crash_listener_ordinals {
281 pub const NEXT: u64 = 0x4ad26b66c3a90dfb;
282}
283
284pub mod managed_realm_ordinals {
285 pub const GET_MONIKER: u64 = 0xec8f2bf894ddc5f;
286 pub const CONNECT_TO_PROTOCOL: u64 = 0x20865b728239813d;
287 pub const ADD_DEVICE: u64 = 0x789925e6f5d47c07;
288 pub const REMOVE_DEVICE: u64 = 0x6cffbba70ac757cc;
289 pub const GET_DEVFS: u64 = 0x707e2b17f65fcadc;
290 pub const START_CHILD_COMPONENT: u64 = 0x20dfa243752906a1;
291 pub const STOP_CHILD_COMPONENT: u64 = 0x5ecfe48430aeeca7;
292 pub const SHUTDOWN: u64 = 0x4750920f723fba9d;
293 pub const OPEN_DIAGNOSTICS_DIRECTORY: u64 = 0x7c5312484aa41c99;
294 pub const ON_SHUTDOWN: u64 = 0x1dff0b58a5b546be;
295 pub const GET_CRASH_LISTENER: u64 = 0x407bab14357e8913;
296}
297
298pub mod sandbox_ordinals {
299 pub const CREATE_REALM: u64 = 0x25d0bc5f1006a0c9;
300 pub const GET_NETWORK_CONTEXT: u64 = 0x140cb104c2605970;
301}
302
303mod internal {
304 use super::*;
305 unsafe impl fidl::encoding::TypeMarker for ConfigurationError {
306 type Owned = Self;
307
308 #[inline(always)]
309 fn inline_align(_context: fidl::encoding::Context) -> usize {
310 std::mem::align_of::<u32>()
311 }
312
313 #[inline(always)]
314 fn inline_size(_context: fidl::encoding::Context) -> usize {
315 std::mem::size_of::<u32>()
316 }
317
318 #[inline(always)]
319 fn encode_is_copy() -> bool {
320 true
321 }
322
323 #[inline(always)]
324 fn decode_is_copy() -> bool {
325 false
326 }
327 }
328
329 impl fidl::encoding::ValueTypeMarker for ConfigurationError {
330 type Borrowed<'a> = Self;
331 #[inline(always)]
332 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
333 *value
334 }
335 }
336
337 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
338 for ConfigurationError
339 {
340 #[inline]
341 unsafe fn encode(
342 self,
343 encoder: &mut fidl::encoding::Encoder<'_, D>,
344 offset: usize,
345 _depth: fidl::encoding::Depth,
346 ) -> fidl::Result<()> {
347 encoder.debug_check_bounds::<Self>(offset);
348 encoder.write_num(self.into_primitive(), offset);
349 Ok(())
350 }
351 }
352
353 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConfigurationError {
354 #[inline(always)]
355 fn new_empty() -> Self {
356 Self::InvalidArguments
357 }
358
359 #[inline]
360 unsafe fn decode(
361 &mut self,
362 decoder: &mut fidl::encoding::Decoder<'_, D>,
363 offset: usize,
364 _depth: fidl::encoding::Depth,
365 ) -> fidl::Result<()> {
366 decoder.debug_check_bounds::<Self>(offset);
367 let prim = decoder.read_num::<u32>(offset);
368
369 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
370 Ok(())
371 }
372 }
373 unsafe impl fidl::encoding::TypeMarker for StorageVariant {
374 type Owned = Self;
375
376 #[inline(always)]
377 fn inline_align(_context: fidl::encoding::Context) -> usize {
378 std::mem::align_of::<u8>()
379 }
380
381 #[inline(always)]
382 fn inline_size(_context: fidl::encoding::Context) -> usize {
383 std::mem::size_of::<u8>()
384 }
385
386 #[inline(always)]
387 fn encode_is_copy() -> bool {
388 true
389 }
390
391 #[inline(always)]
392 fn decode_is_copy() -> bool {
393 false
394 }
395 }
396
397 impl fidl::encoding::ValueTypeMarker for StorageVariant {
398 type Borrowed<'a> = Self;
399 #[inline(always)]
400 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
401 *value
402 }
403 }
404
405 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StorageVariant {
406 #[inline]
407 unsafe fn encode(
408 self,
409 encoder: &mut fidl::encoding::Encoder<'_, D>,
410 offset: usize,
411 _depth: fidl::encoding::Depth,
412 ) -> fidl::Result<()> {
413 encoder.debug_check_bounds::<Self>(offset);
414 encoder.write_num(self.into_primitive(), offset);
415 Ok(())
416 }
417 }
418
419 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StorageVariant {
420 #[inline(always)]
421 fn new_empty() -> Self {
422 Self::Data
423 }
424
425 #[inline]
426 unsafe fn decode(
427 &mut self,
428 decoder: &mut fidl::encoding::Decoder<'_, D>,
429 offset: usize,
430 _depth: fidl::encoding::Depth,
431 ) -> fidl::Result<()> {
432 decoder.debug_check_bounds::<Self>(offset);
433 let prim = decoder.read_num::<u8>(offset);
434
435 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
436 Ok(())
437 }
438 }
439
440 impl fidl::encoding::ValueTypeMarker for ChildConfigValue {
441 type Borrowed<'a> = &'a Self;
442 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
443 value
444 }
445 }
446
447 unsafe impl fidl::encoding::TypeMarker for ChildConfigValue {
448 type Owned = Self;
449
450 #[inline(always)]
451 fn inline_align(_context: fidl::encoding::Context) -> usize {
452 8
453 }
454
455 #[inline(always)]
456 fn inline_size(_context: fidl::encoding::Context) -> usize {
457 32
458 }
459 }
460
461 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChildConfigValue, D>
462 for &ChildConfigValue
463 {
464 #[inline]
465 unsafe fn encode(
466 self,
467 encoder: &mut fidl::encoding::Encoder<'_, D>,
468 offset: usize,
469 _depth: fidl::encoding::Depth,
470 ) -> fidl::Result<()> {
471 encoder.debug_check_bounds::<ChildConfigValue>(offset);
472 fidl::encoding::Encode::<ChildConfigValue, D>::encode(
474 (
475 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
476 <fidl_fuchsia_component_decl__common::ConfigValue as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
477 ),
478 encoder, offset, _depth
479 )
480 }
481 }
482 unsafe impl<
483 D: fidl::encoding::ResourceDialect,
484 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<64>, D>,
485 T1: fidl::encoding::Encode<fidl_fuchsia_component_decl__common::ConfigValue, D>,
486 > fidl::encoding::Encode<ChildConfigValue, D> for (T0, T1)
487 {
488 #[inline]
489 unsafe fn encode(
490 self,
491 encoder: &mut fidl::encoding::Encoder<'_, D>,
492 offset: usize,
493 depth: fidl::encoding::Depth,
494 ) -> fidl::Result<()> {
495 encoder.debug_check_bounds::<ChildConfigValue>(offset);
496 self.0.encode(encoder, offset + 0, depth)?;
500 self.1.encode(encoder, offset + 16, depth)?;
501 Ok(())
502 }
503 }
504
505 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChildConfigValue {
506 #[inline(always)]
507 fn new_empty() -> Self {
508 Self {
509 key: fidl::new_empty!(fidl::encoding::BoundedString<64>, D),
510 value: fidl::new_empty!(fidl_fuchsia_component_decl__common::ConfigValue, D),
511 }
512 }
513
514 #[inline]
515 unsafe fn decode(
516 &mut self,
517 decoder: &mut fidl::encoding::Decoder<'_, D>,
518 offset: usize,
519 _depth: fidl::encoding::Depth,
520 ) -> fidl::Result<()> {
521 decoder.debug_check_bounds::<Self>(offset);
522 fidl::decode!(
524 fidl::encoding::BoundedString<64>,
525 D,
526 &mut self.key,
527 decoder,
528 offset + 0,
529 _depth
530 )?;
531 fidl::decode!(
532 fidl_fuchsia_component_decl__common::ConfigValue,
533 D,
534 &mut self.value,
535 decoder,
536 offset + 16,
537 _depth
538 )?;
539 Ok(())
540 }
541 }
542
543 impl fidl::encoding::ValueTypeMarker for CrashListenerNextResponse {
544 type Borrowed<'a> = &'a Self;
545 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
546 value
547 }
548 }
549
550 unsafe impl fidl::encoding::TypeMarker for CrashListenerNextResponse {
551 type Owned = Self;
552
553 #[inline(always)]
554 fn inline_align(_context: fidl::encoding::Context) -> usize {
555 8
556 }
557
558 #[inline(always)]
559 fn inline_size(_context: fidl::encoding::Context) -> usize {
560 16
561 }
562 }
563
564 unsafe impl<D: fidl::encoding::ResourceDialect>
565 fidl::encoding::Encode<CrashListenerNextResponse, D> for &CrashListenerNextResponse
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::<CrashListenerNextResponse>(offset);
575 fidl::encoding::Encode::<CrashListenerNextResponse, D>::encode(
577 (
578 <fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>> as fidl::encoding::ValueTypeMarker>::borrow(&self.crashed_monikers),
579 ),
580 encoder, offset, _depth
581 )
582 }
583 }
584 unsafe impl<
585 D: fidl::encoding::ResourceDialect,
586 T0: fidl::encoding::Encode<
587 fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>>,
588 D,
589 >,
590 > fidl::encoding::Encode<CrashListenerNextResponse, D> for (T0,)
591 {
592 #[inline]
593 unsafe fn encode(
594 self,
595 encoder: &mut fidl::encoding::Encoder<'_, D>,
596 offset: usize,
597 depth: fidl::encoding::Depth,
598 ) -> fidl::Result<()> {
599 encoder.debug_check_bounds::<CrashListenerNextResponse>(offset);
600 self.0.encode(encoder, offset + 0, depth)?;
604 Ok(())
605 }
606 }
607
608 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
609 for CrashListenerNextResponse
610 {
611 #[inline(always)]
612 fn new_empty() -> Self {
613 Self {
614 crashed_monikers: fidl::new_empty!(
615 fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>>,
616 D
617 ),
618 }
619 }
620
621 #[inline]
622 unsafe fn decode(
623 &mut self,
624 decoder: &mut fidl::encoding::Decoder<'_, D>,
625 offset: usize,
626 _depth: fidl::encoding::Depth,
627 ) -> fidl::Result<()> {
628 decoder.debug_check_bounds::<Self>(offset);
629 fidl::decode!(
631 fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<4096>>,
632 D,
633 &mut self.crashed_monikers,
634 decoder,
635 offset + 0,
636 _depth
637 )?;
638 Ok(())
639 }
640 }
641
642 impl fidl::encoding::ValueTypeMarker for Empty {
643 type Borrowed<'a> = &'a Self;
644 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
645 value
646 }
647 }
648
649 unsafe impl fidl::encoding::TypeMarker for Empty {
650 type Owned = Self;
651
652 #[inline(always)]
653 fn inline_align(_context: fidl::encoding::Context) -> usize {
654 1
655 }
656
657 #[inline(always)]
658 fn inline_size(_context: fidl::encoding::Context) -> usize {
659 1
660 }
661 }
662
663 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Empty, D> for &Empty {
664 #[inline]
665 unsafe fn encode(
666 self,
667 encoder: &mut fidl::encoding::Encoder<'_, D>,
668 offset: usize,
669 _depth: fidl::encoding::Depth,
670 ) -> fidl::Result<()> {
671 encoder.debug_check_bounds::<Empty>(offset);
672 encoder.write_num(0u8, offset);
673 Ok(())
674 }
675 }
676
677 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Empty {
678 #[inline(always)]
679 fn new_empty() -> Self {
680 Self
681 }
682
683 #[inline]
684 unsafe fn decode(
685 &mut self,
686 decoder: &mut fidl::encoding::Decoder<'_, D>,
687 offset: usize,
688 _depth: fidl::encoding::Depth,
689 ) -> fidl::Result<()> {
690 decoder.debug_check_bounds::<Self>(offset);
691 match decoder.read_num::<u8>(offset) {
692 0 => Ok(()),
693 _ => Err(fidl::Error::Invalid),
694 }
695 }
696 }
697
698 impl fidl::encoding::ValueTypeMarker for ManagedRealmGetMonikerResponse {
699 type Borrowed<'a> = &'a Self;
700 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
701 value
702 }
703 }
704
705 unsafe impl fidl::encoding::TypeMarker for ManagedRealmGetMonikerResponse {
706 type Owned = Self;
707
708 #[inline(always)]
709 fn inline_align(_context: fidl::encoding::Context) -> usize {
710 8
711 }
712
713 #[inline(always)]
714 fn inline_size(_context: fidl::encoding::Context) -> usize {
715 16
716 }
717 }
718
719 unsafe impl<D: fidl::encoding::ResourceDialect>
720 fidl::encoding::Encode<ManagedRealmGetMonikerResponse, D>
721 for &ManagedRealmGetMonikerResponse
722 {
723 #[inline]
724 unsafe fn encode(
725 self,
726 encoder: &mut fidl::encoding::Encoder<'_, D>,
727 offset: usize,
728 _depth: fidl::encoding::Depth,
729 ) -> fidl::Result<()> {
730 encoder.debug_check_bounds::<ManagedRealmGetMonikerResponse>(offset);
731 fidl::encoding::Encode::<ManagedRealmGetMonikerResponse, D>::encode(
733 (<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(
734 &self.moniker,
735 ),),
736 encoder,
737 offset,
738 _depth,
739 )
740 }
741 }
742 unsafe impl<
743 D: fidl::encoding::ResourceDialect,
744 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
745 > fidl::encoding::Encode<ManagedRealmGetMonikerResponse, D> for (T0,)
746 {
747 #[inline]
748 unsafe fn encode(
749 self,
750 encoder: &mut fidl::encoding::Encoder<'_, D>,
751 offset: usize,
752 depth: fidl::encoding::Depth,
753 ) -> fidl::Result<()> {
754 encoder.debug_check_bounds::<ManagedRealmGetMonikerResponse>(offset);
755 self.0.encode(encoder, offset + 0, depth)?;
759 Ok(())
760 }
761 }
762
763 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
764 for ManagedRealmGetMonikerResponse
765 {
766 #[inline(always)]
767 fn new_empty() -> Self {
768 Self { moniker: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D) }
769 }
770
771 #[inline]
772 unsafe fn decode(
773 &mut self,
774 decoder: &mut fidl::encoding::Decoder<'_, D>,
775 offset: usize,
776 _depth: fidl::encoding::Depth,
777 ) -> fidl::Result<()> {
778 decoder.debug_check_bounds::<Self>(offset);
779 fidl::decode!(
781 fidl::encoding::BoundedString<4096>,
782 D,
783 &mut self.moniker,
784 decoder,
785 offset + 0,
786 _depth
787 )?;
788 Ok(())
789 }
790 }
791
792 impl fidl::encoding::ValueTypeMarker for ManagedRealmRemoveDeviceRequest {
793 type Borrowed<'a> = &'a Self;
794 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
795 value
796 }
797 }
798
799 unsafe impl fidl::encoding::TypeMarker for ManagedRealmRemoveDeviceRequest {
800 type Owned = Self;
801
802 #[inline(always)]
803 fn inline_align(_context: fidl::encoding::Context) -> usize {
804 8
805 }
806
807 #[inline(always)]
808 fn inline_size(_context: fidl::encoding::Context) -> usize {
809 16
810 }
811 }
812
813 unsafe impl<D: fidl::encoding::ResourceDialect>
814 fidl::encoding::Encode<ManagedRealmRemoveDeviceRequest, D>
815 for &ManagedRealmRemoveDeviceRequest
816 {
817 #[inline]
818 unsafe fn encode(
819 self,
820 encoder: &mut fidl::encoding::Encoder<'_, D>,
821 offset: usize,
822 _depth: fidl::encoding::Depth,
823 ) -> fidl::Result<()> {
824 encoder.debug_check_bounds::<ManagedRealmRemoveDeviceRequest>(offset);
825 fidl::encoding::Encode::<ManagedRealmRemoveDeviceRequest, D>::encode(
827 (<fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
828 &self.path,
829 ),),
830 encoder,
831 offset,
832 _depth,
833 )
834 }
835 }
836 unsafe impl<
837 D: fidl::encoding::ResourceDialect,
838 T0: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
839 > fidl::encoding::Encode<ManagedRealmRemoveDeviceRequest, D> for (T0,)
840 {
841 #[inline]
842 unsafe fn encode(
843 self,
844 encoder: &mut fidl::encoding::Encoder<'_, D>,
845 offset: usize,
846 depth: fidl::encoding::Depth,
847 ) -> fidl::Result<()> {
848 encoder.debug_check_bounds::<ManagedRealmRemoveDeviceRequest>(offset);
849 self.0.encode(encoder, offset + 0, depth)?;
853 Ok(())
854 }
855 }
856
857 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
858 for ManagedRealmRemoveDeviceRequest
859 {
860 #[inline(always)]
861 fn new_empty() -> Self {
862 Self { path: fidl::new_empty!(fidl::encoding::UnboundedString, D) }
863 }
864
865 #[inline]
866 unsafe fn decode(
867 &mut self,
868 decoder: &mut fidl::encoding::Decoder<'_, D>,
869 offset: usize,
870 _depth: fidl::encoding::Depth,
871 ) -> fidl::Result<()> {
872 decoder.debug_check_bounds::<Self>(offset);
873 fidl::decode!(
875 fidl::encoding::UnboundedString,
876 D,
877 &mut self.path,
878 decoder,
879 offset + 0,
880 _depth
881 )?;
882 Ok(())
883 }
884 }
885
886 impl fidl::encoding::ValueTypeMarker for ManagedRealmStartChildComponentRequest {
887 type Borrowed<'a> = &'a Self;
888 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
889 value
890 }
891 }
892
893 unsafe impl fidl::encoding::TypeMarker for ManagedRealmStartChildComponentRequest {
894 type Owned = Self;
895
896 #[inline(always)]
897 fn inline_align(_context: fidl::encoding::Context) -> usize {
898 8
899 }
900
901 #[inline(always)]
902 fn inline_size(_context: fidl::encoding::Context) -> usize {
903 16
904 }
905 }
906
907 unsafe impl<D: fidl::encoding::ResourceDialect>
908 fidl::encoding::Encode<ManagedRealmStartChildComponentRequest, D>
909 for &ManagedRealmStartChildComponentRequest
910 {
911 #[inline]
912 unsafe fn encode(
913 self,
914 encoder: &mut fidl::encoding::Encoder<'_, D>,
915 offset: usize,
916 _depth: fidl::encoding::Depth,
917 ) -> fidl::Result<()> {
918 encoder.debug_check_bounds::<ManagedRealmStartChildComponentRequest>(offset);
919 fidl::encoding::Encode::<ManagedRealmStartChildComponentRequest, D>::encode(
921 (<fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(
922 &self.child_name,
923 ),),
924 encoder,
925 offset,
926 _depth,
927 )
928 }
929 }
930 unsafe impl<
931 D: fidl::encoding::ResourceDialect,
932 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<255>, D>,
933 > fidl::encoding::Encode<ManagedRealmStartChildComponentRequest, D> for (T0,)
934 {
935 #[inline]
936 unsafe fn encode(
937 self,
938 encoder: &mut fidl::encoding::Encoder<'_, D>,
939 offset: usize,
940 depth: fidl::encoding::Depth,
941 ) -> fidl::Result<()> {
942 encoder.debug_check_bounds::<ManagedRealmStartChildComponentRequest>(offset);
943 self.0.encode(encoder, offset + 0, depth)?;
947 Ok(())
948 }
949 }
950
951 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
952 for ManagedRealmStartChildComponentRequest
953 {
954 #[inline(always)]
955 fn new_empty() -> Self {
956 Self { child_name: fidl::new_empty!(fidl::encoding::BoundedString<255>, D) }
957 }
958
959 #[inline]
960 unsafe fn decode(
961 &mut self,
962 decoder: &mut fidl::encoding::Decoder<'_, D>,
963 offset: usize,
964 _depth: fidl::encoding::Depth,
965 ) -> fidl::Result<()> {
966 decoder.debug_check_bounds::<Self>(offset);
967 fidl::decode!(
969 fidl::encoding::BoundedString<255>,
970 D,
971 &mut self.child_name,
972 decoder,
973 offset + 0,
974 _depth
975 )?;
976 Ok(())
977 }
978 }
979
980 impl fidl::encoding::ValueTypeMarker for ManagedRealmStopChildComponentRequest {
981 type Borrowed<'a> = &'a Self;
982 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
983 value
984 }
985 }
986
987 unsafe impl fidl::encoding::TypeMarker for ManagedRealmStopChildComponentRequest {
988 type Owned = Self;
989
990 #[inline(always)]
991 fn inline_align(_context: fidl::encoding::Context) -> usize {
992 8
993 }
994
995 #[inline(always)]
996 fn inline_size(_context: fidl::encoding::Context) -> usize {
997 16
998 }
999 }
1000
1001 unsafe impl<D: fidl::encoding::ResourceDialect>
1002 fidl::encoding::Encode<ManagedRealmStopChildComponentRequest, D>
1003 for &ManagedRealmStopChildComponentRequest
1004 {
1005 #[inline]
1006 unsafe fn encode(
1007 self,
1008 encoder: &mut fidl::encoding::Encoder<'_, D>,
1009 offset: usize,
1010 _depth: fidl::encoding::Depth,
1011 ) -> fidl::Result<()> {
1012 encoder.debug_check_bounds::<ManagedRealmStopChildComponentRequest>(offset);
1013 fidl::encoding::Encode::<ManagedRealmStopChildComponentRequest, D>::encode(
1015 (<fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(
1016 &self.child_name,
1017 ),),
1018 encoder,
1019 offset,
1020 _depth,
1021 )
1022 }
1023 }
1024 unsafe impl<
1025 D: fidl::encoding::ResourceDialect,
1026 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<255>, D>,
1027 > fidl::encoding::Encode<ManagedRealmStopChildComponentRequest, D> for (T0,)
1028 {
1029 #[inline]
1030 unsafe fn encode(
1031 self,
1032 encoder: &mut fidl::encoding::Encoder<'_, D>,
1033 offset: usize,
1034 depth: fidl::encoding::Depth,
1035 ) -> fidl::Result<()> {
1036 encoder.debug_check_bounds::<ManagedRealmStopChildComponentRequest>(offset);
1037 self.0.encode(encoder, offset + 0, depth)?;
1041 Ok(())
1042 }
1043 }
1044
1045 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1046 for ManagedRealmStopChildComponentRequest
1047 {
1048 #[inline(always)]
1049 fn new_empty() -> Self {
1050 Self { child_name: fidl::new_empty!(fidl::encoding::BoundedString<255>, D) }
1051 }
1052
1053 #[inline]
1054 unsafe fn decode(
1055 &mut self,
1056 decoder: &mut fidl::encoding::Decoder<'_, D>,
1057 offset: usize,
1058 _depth: fidl::encoding::Depth,
1059 ) -> fidl::Result<()> {
1060 decoder.debug_check_bounds::<Self>(offset);
1061 fidl::decode!(
1063 fidl::encoding::BoundedString<255>,
1064 D,
1065 &mut self.child_name,
1066 decoder,
1067 offset + 0,
1068 _depth
1069 )?;
1070 Ok(())
1071 }
1072 }
1073
1074 impl ChildDep {
1075 #[inline(always)]
1076 fn max_ordinal_present(&self) -> u64 {
1077 if let Some(_) = self.dynamically_offer_from_void {
1078 return 4;
1079 }
1080 if let Some(_) = self.is_weak {
1081 return 3;
1082 }
1083 if let Some(_) = self.capability {
1084 return 2;
1085 }
1086 if let Some(_) = self.name {
1087 return 1;
1088 }
1089 0
1090 }
1091 }
1092
1093 impl fidl::encoding::ValueTypeMarker for ChildDep {
1094 type Borrowed<'a> = &'a Self;
1095 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1096 value
1097 }
1098 }
1099
1100 unsafe impl fidl::encoding::TypeMarker for ChildDep {
1101 type Owned = Self;
1102
1103 #[inline(always)]
1104 fn inline_align(_context: fidl::encoding::Context) -> usize {
1105 8
1106 }
1107
1108 #[inline(always)]
1109 fn inline_size(_context: fidl::encoding::Context) -> usize {
1110 16
1111 }
1112 }
1113
1114 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChildDep, D> for &ChildDep {
1115 unsafe fn encode(
1116 self,
1117 encoder: &mut fidl::encoding::Encoder<'_, D>,
1118 offset: usize,
1119 mut depth: fidl::encoding::Depth,
1120 ) -> fidl::Result<()> {
1121 encoder.debug_check_bounds::<ChildDep>(offset);
1122 let max_ordinal: u64 = self.max_ordinal_present();
1124 encoder.write_num(max_ordinal, offset);
1125 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1126 if max_ordinal == 0 {
1128 return Ok(());
1129 }
1130 depth.increment()?;
1131 let envelope_size = 8;
1132 let bytes_len = max_ordinal as usize * envelope_size;
1133 #[allow(unused_variables)]
1134 let offset = encoder.out_of_line_offset(bytes_len);
1135 let mut _prev_end_offset: usize = 0;
1136 if 1 > max_ordinal {
1137 return Ok(());
1138 }
1139
1140 let cur_offset: usize = (1 - 1) * envelope_size;
1143
1144 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1146
1147 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
1152 self.name.as_ref().map(
1153 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
1154 ),
1155 encoder,
1156 offset + cur_offset,
1157 depth,
1158 )?;
1159
1160 _prev_end_offset = cur_offset + envelope_size;
1161 if 2 > max_ordinal {
1162 return Ok(());
1163 }
1164
1165 let cur_offset: usize = (2 - 1) * envelope_size;
1168
1169 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1171
1172 fidl::encoding::encode_in_envelope_optional::<ExposedCapability, D>(
1177 self.capability
1178 .as_ref()
1179 .map(<ExposedCapability as fidl::encoding::ValueTypeMarker>::borrow),
1180 encoder,
1181 offset + cur_offset,
1182 depth,
1183 )?;
1184
1185 _prev_end_offset = cur_offset + envelope_size;
1186 if 3 > max_ordinal {
1187 return Ok(());
1188 }
1189
1190 let cur_offset: usize = (3 - 1) * envelope_size;
1193
1194 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1196
1197 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1202 self.is_weak.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1203 encoder,
1204 offset + cur_offset,
1205 depth,
1206 )?;
1207
1208 _prev_end_offset = cur_offset + envelope_size;
1209 if 4 > max_ordinal {
1210 return Ok(());
1211 }
1212
1213 let cur_offset: usize = (4 - 1) * envelope_size;
1216
1217 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1219
1220 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1225 self.dynamically_offer_from_void
1226 .as_ref()
1227 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1228 encoder,
1229 offset + cur_offset,
1230 depth,
1231 )?;
1232
1233 _prev_end_offset = cur_offset + envelope_size;
1234
1235 Ok(())
1236 }
1237 }
1238
1239 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChildDep {
1240 #[inline(always)]
1241 fn new_empty() -> Self {
1242 Self::default()
1243 }
1244
1245 unsafe fn decode(
1246 &mut self,
1247 decoder: &mut fidl::encoding::Decoder<'_, D>,
1248 offset: usize,
1249 mut depth: fidl::encoding::Depth,
1250 ) -> fidl::Result<()> {
1251 decoder.debug_check_bounds::<Self>(offset);
1252 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1253 None => return Err(fidl::Error::NotNullable),
1254 Some(len) => len,
1255 };
1256 if len == 0 {
1258 return Ok(());
1259 };
1260 depth.increment()?;
1261 let envelope_size = 8;
1262 let bytes_len = len * envelope_size;
1263 let offset = decoder.out_of_line_offset(bytes_len)?;
1264 let mut _next_ordinal_to_read = 0;
1266 let mut next_offset = offset;
1267 let end_offset = offset + bytes_len;
1268 _next_ordinal_to_read += 1;
1269 if next_offset >= end_offset {
1270 return Ok(());
1271 }
1272
1273 while _next_ordinal_to_read < 1 {
1275 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1276 _next_ordinal_to_read += 1;
1277 next_offset += envelope_size;
1278 }
1279
1280 let next_out_of_line = decoder.next_out_of_line();
1281 let handles_before = decoder.remaining_handles();
1282 if let Some((inlined, num_bytes, num_handles)) =
1283 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1284 {
1285 let member_inline_size =
1286 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
1287 decoder.context,
1288 );
1289 if inlined != (member_inline_size <= 4) {
1290 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1291 }
1292 let inner_offset;
1293 let mut inner_depth = depth.clone();
1294 if inlined {
1295 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1296 inner_offset = next_offset;
1297 } else {
1298 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1299 inner_depth.increment()?;
1300 }
1301 let val_ref = self
1302 .name
1303 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
1304 fidl::decode!(
1305 fidl::encoding::BoundedString<255>,
1306 D,
1307 val_ref,
1308 decoder,
1309 inner_offset,
1310 inner_depth
1311 )?;
1312 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1313 {
1314 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1315 }
1316 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1317 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1318 }
1319 }
1320
1321 next_offset += envelope_size;
1322 _next_ordinal_to_read += 1;
1323 if next_offset >= end_offset {
1324 return Ok(());
1325 }
1326
1327 while _next_ordinal_to_read < 2 {
1329 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1330 _next_ordinal_to_read += 1;
1331 next_offset += envelope_size;
1332 }
1333
1334 let next_out_of_line = decoder.next_out_of_line();
1335 let handles_before = decoder.remaining_handles();
1336 if let Some((inlined, num_bytes, num_handles)) =
1337 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1338 {
1339 let member_inline_size =
1340 <ExposedCapability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1341 if inlined != (member_inline_size <= 4) {
1342 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1343 }
1344 let inner_offset;
1345 let mut inner_depth = depth.clone();
1346 if inlined {
1347 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1348 inner_offset = next_offset;
1349 } else {
1350 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1351 inner_depth.increment()?;
1352 }
1353 let val_ref =
1354 self.capability.get_or_insert_with(|| fidl::new_empty!(ExposedCapability, D));
1355 fidl::decode!(ExposedCapability, D, val_ref, decoder, inner_offset, inner_depth)?;
1356 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1357 {
1358 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1359 }
1360 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1361 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1362 }
1363 }
1364
1365 next_offset += envelope_size;
1366 _next_ordinal_to_read += 1;
1367 if next_offset >= end_offset {
1368 return Ok(());
1369 }
1370
1371 while _next_ordinal_to_read < 3 {
1373 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1374 _next_ordinal_to_read += 1;
1375 next_offset += envelope_size;
1376 }
1377
1378 let next_out_of_line = decoder.next_out_of_line();
1379 let handles_before = decoder.remaining_handles();
1380 if let Some((inlined, num_bytes, num_handles)) =
1381 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1382 {
1383 let member_inline_size =
1384 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1385 if inlined != (member_inline_size <= 4) {
1386 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1387 }
1388 let inner_offset;
1389 let mut inner_depth = depth.clone();
1390 if inlined {
1391 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1392 inner_offset = next_offset;
1393 } else {
1394 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1395 inner_depth.increment()?;
1396 }
1397 let val_ref = self.is_weak.get_or_insert_with(|| fidl::new_empty!(bool, D));
1398 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1399 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1400 {
1401 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1402 }
1403 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1404 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1405 }
1406 }
1407
1408 next_offset += envelope_size;
1409 _next_ordinal_to_read += 1;
1410 if next_offset >= end_offset {
1411 return Ok(());
1412 }
1413
1414 while _next_ordinal_to_read < 4 {
1416 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1417 _next_ordinal_to_read += 1;
1418 next_offset += envelope_size;
1419 }
1420
1421 let next_out_of_line = decoder.next_out_of_line();
1422 let handles_before = decoder.remaining_handles();
1423 if let Some((inlined, num_bytes, num_handles)) =
1424 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1425 {
1426 let member_inline_size =
1427 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1428 if inlined != (member_inline_size <= 4) {
1429 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1430 }
1431 let inner_offset;
1432 let mut inner_depth = depth.clone();
1433 if inlined {
1434 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1435 inner_offset = next_offset;
1436 } else {
1437 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1438 inner_depth.increment()?;
1439 }
1440 let val_ref = self
1441 .dynamically_offer_from_void
1442 .get_or_insert_with(|| fidl::new_empty!(bool, D));
1443 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1444 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1445 {
1446 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1447 }
1448 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1449 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1450 }
1451 }
1452
1453 next_offset += envelope_size;
1454
1455 while next_offset < end_offset {
1457 _next_ordinal_to_read += 1;
1458 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1459 next_offset += envelope_size;
1460 }
1461
1462 Ok(())
1463 }
1464 }
1465
1466 impl DevfsDep {
1467 #[inline(always)]
1468 fn max_ordinal_present(&self) -> u64 {
1469 if let Some(_) = self.subdir {
1470 return 2;
1471 }
1472 if let Some(_) = self.name {
1473 return 1;
1474 }
1475 0
1476 }
1477 }
1478
1479 impl fidl::encoding::ValueTypeMarker for DevfsDep {
1480 type Borrowed<'a> = &'a Self;
1481 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1482 value
1483 }
1484 }
1485
1486 unsafe impl fidl::encoding::TypeMarker for DevfsDep {
1487 type Owned = Self;
1488
1489 #[inline(always)]
1490 fn inline_align(_context: fidl::encoding::Context) -> usize {
1491 8
1492 }
1493
1494 #[inline(always)]
1495 fn inline_size(_context: fidl::encoding::Context) -> usize {
1496 16
1497 }
1498 }
1499
1500 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DevfsDep, D> for &DevfsDep {
1501 unsafe fn encode(
1502 self,
1503 encoder: &mut fidl::encoding::Encoder<'_, D>,
1504 offset: usize,
1505 mut depth: fidl::encoding::Depth,
1506 ) -> fidl::Result<()> {
1507 encoder.debug_check_bounds::<DevfsDep>(offset);
1508 let max_ordinal: u64 = self.max_ordinal_present();
1510 encoder.write_num(max_ordinal, offset);
1511 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1512 if max_ordinal == 0 {
1514 return Ok(());
1515 }
1516 depth.increment()?;
1517 let envelope_size = 8;
1518 let bytes_len = max_ordinal as usize * envelope_size;
1519 #[allow(unused_variables)]
1520 let offset = encoder.out_of_line_offset(bytes_len);
1521 let mut _prev_end_offset: usize = 0;
1522 if 1 > max_ordinal {
1523 return Ok(());
1524 }
1525
1526 let cur_offset: usize = (1 - 1) * envelope_size;
1529
1530 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1532
1533 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
1538 self.name.as_ref().map(
1539 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
1540 ),
1541 encoder,
1542 offset + cur_offset,
1543 depth,
1544 )?;
1545
1546 _prev_end_offset = cur_offset + envelope_size;
1547 if 2 > max_ordinal {
1548 return Ok(());
1549 }
1550
1551 let cur_offset: usize = (2 - 1) * envelope_size;
1554
1555 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1557
1558 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4095>, D>(
1563 self.subdir.as_ref().map(<fidl::encoding::BoundedString<4095> as fidl::encoding::ValueTypeMarker>::borrow),
1564 encoder, offset + cur_offset, depth
1565 )?;
1566
1567 _prev_end_offset = cur_offset + envelope_size;
1568
1569 Ok(())
1570 }
1571 }
1572
1573 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DevfsDep {
1574 #[inline(always)]
1575 fn new_empty() -> Self {
1576 Self::default()
1577 }
1578
1579 unsafe fn decode(
1580 &mut self,
1581 decoder: &mut fidl::encoding::Decoder<'_, D>,
1582 offset: usize,
1583 mut depth: fidl::encoding::Depth,
1584 ) -> fidl::Result<()> {
1585 decoder.debug_check_bounds::<Self>(offset);
1586 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1587 None => return Err(fidl::Error::NotNullable),
1588 Some(len) => len,
1589 };
1590 if len == 0 {
1592 return Ok(());
1593 };
1594 depth.increment()?;
1595 let envelope_size = 8;
1596 let bytes_len = len * envelope_size;
1597 let offset = decoder.out_of_line_offset(bytes_len)?;
1598 let mut _next_ordinal_to_read = 0;
1600 let mut next_offset = offset;
1601 let end_offset = offset + bytes_len;
1602 _next_ordinal_to_read += 1;
1603 if next_offset >= end_offset {
1604 return Ok(());
1605 }
1606
1607 while _next_ordinal_to_read < 1 {
1609 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1610 _next_ordinal_to_read += 1;
1611 next_offset += envelope_size;
1612 }
1613
1614 let next_out_of_line = decoder.next_out_of_line();
1615 let handles_before = decoder.remaining_handles();
1616 if let Some((inlined, num_bytes, num_handles)) =
1617 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1618 {
1619 let member_inline_size =
1620 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
1621 decoder.context,
1622 );
1623 if inlined != (member_inline_size <= 4) {
1624 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1625 }
1626 let inner_offset;
1627 let mut inner_depth = depth.clone();
1628 if inlined {
1629 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1630 inner_offset = next_offset;
1631 } else {
1632 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1633 inner_depth.increment()?;
1634 }
1635 let val_ref = self
1636 .name
1637 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
1638 fidl::decode!(
1639 fidl::encoding::BoundedString<255>,
1640 D,
1641 val_ref,
1642 decoder,
1643 inner_offset,
1644 inner_depth
1645 )?;
1646 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1647 {
1648 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1649 }
1650 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1651 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1652 }
1653 }
1654
1655 next_offset += envelope_size;
1656 _next_ordinal_to_read += 1;
1657 if next_offset >= end_offset {
1658 return Ok(());
1659 }
1660
1661 while _next_ordinal_to_read < 2 {
1663 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1664 _next_ordinal_to_read += 1;
1665 next_offset += envelope_size;
1666 }
1667
1668 let next_out_of_line = decoder.next_out_of_line();
1669 let handles_before = decoder.remaining_handles();
1670 if let Some((inlined, num_bytes, num_handles)) =
1671 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1672 {
1673 let member_inline_size = <fidl::encoding::BoundedString<4095> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1674 if inlined != (member_inline_size <= 4) {
1675 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1676 }
1677 let inner_offset;
1678 let mut inner_depth = depth.clone();
1679 if inlined {
1680 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1681 inner_offset = next_offset;
1682 } else {
1683 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1684 inner_depth.increment()?;
1685 }
1686 let val_ref = self.subdir.get_or_insert_with(|| {
1687 fidl::new_empty!(fidl::encoding::BoundedString<4095>, D)
1688 });
1689 fidl::decode!(
1690 fidl::encoding::BoundedString<4095>,
1691 D,
1692 val_ref,
1693 decoder,
1694 inner_offset,
1695 inner_depth
1696 )?;
1697 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1698 {
1699 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1700 }
1701 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1702 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1703 }
1704 }
1705
1706 next_offset += envelope_size;
1707
1708 while next_offset < end_offset {
1710 _next_ordinal_to_read += 1;
1711 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1712 next_offset += envelope_size;
1713 }
1714
1715 Ok(())
1716 }
1717 }
1718
1719 impl StorageDep {
1720 #[inline(always)]
1721 fn max_ordinal_present(&self) -> u64 {
1722 if let Some(_) = self.path {
1723 return 2;
1724 }
1725 if let Some(_) = self.variant {
1726 return 1;
1727 }
1728 0
1729 }
1730 }
1731
1732 impl fidl::encoding::ValueTypeMarker for StorageDep {
1733 type Borrowed<'a> = &'a Self;
1734 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1735 value
1736 }
1737 }
1738
1739 unsafe impl fidl::encoding::TypeMarker for StorageDep {
1740 type Owned = Self;
1741
1742 #[inline(always)]
1743 fn inline_align(_context: fidl::encoding::Context) -> usize {
1744 8
1745 }
1746
1747 #[inline(always)]
1748 fn inline_size(_context: fidl::encoding::Context) -> usize {
1749 16
1750 }
1751 }
1752
1753 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StorageDep, D>
1754 for &StorageDep
1755 {
1756 unsafe fn encode(
1757 self,
1758 encoder: &mut fidl::encoding::Encoder<'_, D>,
1759 offset: usize,
1760 mut depth: fidl::encoding::Depth,
1761 ) -> fidl::Result<()> {
1762 encoder.debug_check_bounds::<StorageDep>(offset);
1763 let max_ordinal: u64 = self.max_ordinal_present();
1765 encoder.write_num(max_ordinal, offset);
1766 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1767 if max_ordinal == 0 {
1769 return Ok(());
1770 }
1771 depth.increment()?;
1772 let envelope_size = 8;
1773 let bytes_len = max_ordinal as usize * envelope_size;
1774 #[allow(unused_variables)]
1775 let offset = encoder.out_of_line_offset(bytes_len);
1776 let mut _prev_end_offset: usize = 0;
1777 if 1 > max_ordinal {
1778 return Ok(());
1779 }
1780
1781 let cur_offset: usize = (1 - 1) * envelope_size;
1784
1785 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1787
1788 fidl::encoding::encode_in_envelope_optional::<StorageVariant, D>(
1793 self.variant
1794 .as_ref()
1795 .map(<StorageVariant as fidl::encoding::ValueTypeMarker>::borrow),
1796 encoder,
1797 offset + cur_offset,
1798 depth,
1799 )?;
1800
1801 _prev_end_offset = cur_offset + envelope_size;
1802 if 2 > max_ordinal {
1803 return Ok(());
1804 }
1805
1806 let cur_offset: usize = (2 - 1) * envelope_size;
1809
1810 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1812
1813 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4095>, D>(
1818 self.path.as_ref().map(<fidl::encoding::BoundedString<4095> as fidl::encoding::ValueTypeMarker>::borrow),
1819 encoder, offset + cur_offset, depth
1820 )?;
1821
1822 _prev_end_offset = cur_offset + envelope_size;
1823
1824 Ok(())
1825 }
1826 }
1827
1828 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StorageDep {
1829 #[inline(always)]
1830 fn new_empty() -> Self {
1831 Self::default()
1832 }
1833
1834 unsafe fn decode(
1835 &mut self,
1836 decoder: &mut fidl::encoding::Decoder<'_, D>,
1837 offset: usize,
1838 mut depth: fidl::encoding::Depth,
1839 ) -> fidl::Result<()> {
1840 decoder.debug_check_bounds::<Self>(offset);
1841 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1842 None => return Err(fidl::Error::NotNullable),
1843 Some(len) => len,
1844 };
1845 if len == 0 {
1847 return Ok(());
1848 };
1849 depth.increment()?;
1850 let envelope_size = 8;
1851 let bytes_len = len * envelope_size;
1852 let offset = decoder.out_of_line_offset(bytes_len)?;
1853 let mut _next_ordinal_to_read = 0;
1855 let mut next_offset = offset;
1856 let end_offset = offset + bytes_len;
1857 _next_ordinal_to_read += 1;
1858 if next_offset >= end_offset {
1859 return Ok(());
1860 }
1861
1862 while _next_ordinal_to_read < 1 {
1864 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1865 _next_ordinal_to_read += 1;
1866 next_offset += envelope_size;
1867 }
1868
1869 let next_out_of_line = decoder.next_out_of_line();
1870 let handles_before = decoder.remaining_handles();
1871 if let Some((inlined, num_bytes, num_handles)) =
1872 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1873 {
1874 let member_inline_size =
1875 <StorageVariant as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1876 if inlined != (member_inline_size <= 4) {
1877 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1878 }
1879 let inner_offset;
1880 let mut inner_depth = depth.clone();
1881 if inlined {
1882 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1883 inner_offset = next_offset;
1884 } else {
1885 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1886 inner_depth.increment()?;
1887 }
1888 let val_ref =
1889 self.variant.get_or_insert_with(|| fidl::new_empty!(StorageVariant, D));
1890 fidl::decode!(StorageVariant, D, val_ref, decoder, inner_offset, inner_depth)?;
1891 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1892 {
1893 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1894 }
1895 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1896 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1897 }
1898 }
1899
1900 next_offset += envelope_size;
1901 _next_ordinal_to_read += 1;
1902 if next_offset >= end_offset {
1903 return Ok(());
1904 }
1905
1906 while _next_ordinal_to_read < 2 {
1908 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1909 _next_ordinal_to_read += 1;
1910 next_offset += envelope_size;
1911 }
1912
1913 let next_out_of_line = decoder.next_out_of_line();
1914 let handles_before = decoder.remaining_handles();
1915 if let Some((inlined, num_bytes, num_handles)) =
1916 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1917 {
1918 let member_inline_size = <fidl::encoding::BoundedString<4095> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1919 if inlined != (member_inline_size <= 4) {
1920 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1921 }
1922 let inner_offset;
1923 let mut inner_depth = depth.clone();
1924 if inlined {
1925 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1926 inner_offset = next_offset;
1927 } else {
1928 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1929 inner_depth.increment()?;
1930 }
1931 let val_ref = self.path.get_or_insert_with(|| {
1932 fidl::new_empty!(fidl::encoding::BoundedString<4095>, D)
1933 });
1934 fidl::decode!(
1935 fidl::encoding::BoundedString<4095>,
1936 D,
1937 val_ref,
1938 decoder,
1939 inner_offset,
1940 inner_depth
1941 )?;
1942 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1943 {
1944 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1945 }
1946 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1947 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1948 }
1949 }
1950
1951 next_offset += envelope_size;
1952
1953 while next_offset < end_offset {
1955 _next_ordinal_to_read += 1;
1956 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1957 next_offset += envelope_size;
1958 }
1959
1960 Ok(())
1961 }
1962 }
1963
1964 impl fidl::encoding::ValueTypeMarker for Capability {
1965 type Borrowed<'a> = &'a Self;
1966 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1967 value
1968 }
1969 }
1970
1971 unsafe impl fidl::encoding::TypeMarker for Capability {
1972 type Owned = Self;
1973
1974 #[inline(always)]
1975 fn inline_align(_context: fidl::encoding::Context) -> usize {
1976 8
1977 }
1978
1979 #[inline(always)]
1980 fn inline_size(_context: fidl::encoding::Context) -> usize {
1981 16
1982 }
1983 }
1984
1985 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Capability, D>
1986 for &Capability
1987 {
1988 #[inline]
1989 unsafe fn encode(
1990 self,
1991 encoder: &mut fidl::encoding::Encoder<'_, D>,
1992 offset: usize,
1993 _depth: fidl::encoding::Depth,
1994 ) -> fidl::Result<()> {
1995 encoder.debug_check_bounds::<Capability>(offset);
1996 encoder.write_num::<u64>(self.ordinal(), offset);
1997 match self {
1998 Capability::NetemulDevfs(ref val) => {
1999 fidl::encoding::encode_in_envelope::<DevfsDep, D>(
2000 <DevfsDep as fidl::encoding::ValueTypeMarker>::borrow(val),
2001 encoder,
2002 offset + 8,
2003 _depth,
2004 )
2005 }
2006 Capability::NetemulNetworkContext(ref val) => {
2007 fidl::encoding::encode_in_envelope::<Empty, D>(
2008 <Empty as fidl::encoding::ValueTypeMarker>::borrow(val),
2009 encoder,
2010 offset + 8,
2011 _depth,
2012 )
2013 }
2014 Capability::LogSink(ref val) => fidl::encoding::encode_in_envelope::<Empty, D>(
2015 <Empty as fidl::encoding::ValueTypeMarker>::borrow(val),
2016 encoder,
2017 offset + 8,
2018 _depth,
2019 ),
2020 Capability::ChildDep(ref val) => fidl::encoding::encode_in_envelope::<ChildDep, D>(
2021 <ChildDep as fidl::encoding::ValueTypeMarker>::borrow(val),
2022 encoder,
2023 offset + 8,
2024 _depth,
2025 ),
2026 Capability::StorageDep(ref val) => {
2027 fidl::encoding::encode_in_envelope::<StorageDep, D>(
2028 <StorageDep as fidl::encoding::ValueTypeMarker>::borrow(val),
2029 encoder,
2030 offset + 8,
2031 _depth,
2032 )
2033 }
2034 Capability::TracingProvider(ref val) => {
2035 fidl::encoding::encode_in_envelope::<Empty, D>(
2036 <Empty as fidl::encoding::ValueTypeMarker>::borrow(val),
2037 encoder,
2038 offset + 8,
2039 _depth,
2040 )
2041 }
2042 }
2043 }
2044 }
2045
2046 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Capability {
2047 #[inline(always)]
2048 fn new_empty() -> Self {
2049 Self::NetemulDevfs(fidl::new_empty!(DevfsDep, D))
2050 }
2051
2052 #[inline]
2053 unsafe fn decode(
2054 &mut self,
2055 decoder: &mut fidl::encoding::Decoder<'_, D>,
2056 offset: usize,
2057 mut depth: fidl::encoding::Depth,
2058 ) -> fidl::Result<()> {
2059 decoder.debug_check_bounds::<Self>(offset);
2060 #[allow(unused_variables)]
2061 let next_out_of_line = decoder.next_out_of_line();
2062 let handles_before = decoder.remaining_handles();
2063 let (ordinal, inlined, num_bytes, num_handles) =
2064 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
2065
2066 let member_inline_size = match ordinal {
2067 1 => <DevfsDep as fidl::encoding::TypeMarker>::inline_size(decoder.context),
2068 3 => <Empty as fidl::encoding::TypeMarker>::inline_size(decoder.context),
2069 4 => <Empty as fidl::encoding::TypeMarker>::inline_size(decoder.context),
2070 5 => <ChildDep as fidl::encoding::TypeMarker>::inline_size(decoder.context),
2071 6 => <StorageDep as fidl::encoding::TypeMarker>::inline_size(decoder.context),
2072 7 => <Empty as fidl::encoding::TypeMarker>::inline_size(decoder.context),
2073 _ => return Err(fidl::Error::UnknownUnionTag),
2074 };
2075
2076 if inlined != (member_inline_size <= 4) {
2077 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2078 }
2079 let _inner_offset;
2080 if inlined {
2081 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
2082 _inner_offset = offset + 8;
2083 } else {
2084 depth.increment()?;
2085 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2086 }
2087 match ordinal {
2088 1 => {
2089 #[allow(irrefutable_let_patterns)]
2090 if let Capability::NetemulDevfs(_) = self {
2091 } else {
2093 *self = Capability::NetemulDevfs(fidl::new_empty!(DevfsDep, D));
2095 }
2096 #[allow(irrefutable_let_patterns)]
2097 if let Capability::NetemulDevfs(ref mut val) = self {
2098 fidl::decode!(DevfsDep, D, val, decoder, _inner_offset, depth)?;
2099 } else {
2100 unreachable!()
2101 }
2102 }
2103 3 => {
2104 #[allow(irrefutable_let_patterns)]
2105 if let Capability::NetemulNetworkContext(_) = self {
2106 } else {
2108 *self = Capability::NetemulNetworkContext(fidl::new_empty!(Empty, D));
2110 }
2111 #[allow(irrefutable_let_patterns)]
2112 if let Capability::NetemulNetworkContext(ref mut val) = self {
2113 fidl::decode!(Empty, D, val, decoder, _inner_offset, depth)?;
2114 } else {
2115 unreachable!()
2116 }
2117 }
2118 4 => {
2119 #[allow(irrefutable_let_patterns)]
2120 if let Capability::LogSink(_) = self {
2121 } else {
2123 *self = Capability::LogSink(fidl::new_empty!(Empty, D));
2125 }
2126 #[allow(irrefutable_let_patterns)]
2127 if let Capability::LogSink(ref mut val) = self {
2128 fidl::decode!(Empty, D, val, decoder, _inner_offset, depth)?;
2129 } else {
2130 unreachable!()
2131 }
2132 }
2133 5 => {
2134 #[allow(irrefutable_let_patterns)]
2135 if let Capability::ChildDep(_) = self {
2136 } else {
2138 *self = Capability::ChildDep(fidl::new_empty!(ChildDep, D));
2140 }
2141 #[allow(irrefutable_let_patterns)]
2142 if let Capability::ChildDep(ref mut val) = self {
2143 fidl::decode!(ChildDep, D, val, decoder, _inner_offset, depth)?;
2144 } else {
2145 unreachable!()
2146 }
2147 }
2148 6 => {
2149 #[allow(irrefutable_let_patterns)]
2150 if let Capability::StorageDep(_) = self {
2151 } else {
2153 *self = Capability::StorageDep(fidl::new_empty!(StorageDep, D));
2155 }
2156 #[allow(irrefutable_let_patterns)]
2157 if let Capability::StorageDep(ref mut val) = self {
2158 fidl::decode!(StorageDep, D, val, decoder, _inner_offset, depth)?;
2159 } else {
2160 unreachable!()
2161 }
2162 }
2163 7 => {
2164 #[allow(irrefutable_let_patterns)]
2165 if let Capability::TracingProvider(_) = self {
2166 } else {
2168 *self = Capability::TracingProvider(fidl::new_empty!(Empty, D));
2170 }
2171 #[allow(irrefutable_let_patterns)]
2172 if let Capability::TracingProvider(ref mut val) = self {
2173 fidl::decode!(Empty, D, val, decoder, _inner_offset, depth)?;
2174 } else {
2175 unreachable!()
2176 }
2177 }
2178 ordinal => panic!("unexpected ordinal {:?}", ordinal),
2179 }
2180 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
2181 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2182 }
2183 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2184 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2185 }
2186 Ok(())
2187 }
2188 }
2189
2190 impl fidl::encoding::ValueTypeMarker for ChildUses {
2191 type Borrowed<'a> = &'a Self;
2192 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2193 value
2194 }
2195 }
2196
2197 unsafe impl fidl::encoding::TypeMarker for ChildUses {
2198 type Owned = Self;
2199
2200 #[inline(always)]
2201 fn inline_align(_context: fidl::encoding::Context) -> usize {
2202 8
2203 }
2204
2205 #[inline(always)]
2206 fn inline_size(_context: fidl::encoding::Context) -> usize {
2207 16
2208 }
2209 }
2210
2211 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChildUses, D>
2212 for &ChildUses
2213 {
2214 #[inline]
2215 unsafe fn encode(
2216 self,
2217 encoder: &mut fidl::encoding::Encoder<'_, D>,
2218 offset: usize,
2219 _depth: fidl::encoding::Depth,
2220 ) -> fidl::Result<()> {
2221 encoder.debug_check_bounds::<ChildUses>(offset);
2222 encoder.write_num::<u64>(self.ordinal(), offset);
2223 match self {
2224 ChildUses::Capabilities(ref val) => {
2225 fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<Capability>, D>(
2226 <fidl::encoding::UnboundedVector<Capability> as fidl::encoding::ValueTypeMarker>::borrow(val),
2227 encoder, offset + 8, _depth
2228 )
2229 }
2230 }
2231 }
2232 }
2233
2234 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChildUses {
2235 #[inline(always)]
2236 fn new_empty() -> Self {
2237 Self::Capabilities(fidl::new_empty!(fidl::encoding::UnboundedVector<Capability>, D))
2238 }
2239
2240 #[inline]
2241 unsafe fn decode(
2242 &mut self,
2243 decoder: &mut fidl::encoding::Decoder<'_, D>,
2244 offset: usize,
2245 mut depth: fidl::encoding::Depth,
2246 ) -> fidl::Result<()> {
2247 decoder.debug_check_bounds::<Self>(offset);
2248 #[allow(unused_variables)]
2249 let next_out_of_line = decoder.next_out_of_line();
2250 let handles_before = decoder.remaining_handles();
2251 let (ordinal, inlined, num_bytes, num_handles) =
2252 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
2253
2254 let member_inline_size = match ordinal {
2255 1 => <fidl::encoding::UnboundedVector<Capability> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
2256 _ => return Err(fidl::Error::UnknownUnionTag),
2257 };
2258
2259 if inlined != (member_inline_size <= 4) {
2260 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2261 }
2262 let _inner_offset;
2263 if inlined {
2264 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
2265 _inner_offset = offset + 8;
2266 } else {
2267 depth.increment()?;
2268 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2269 }
2270 match ordinal {
2271 1 => {
2272 #[allow(irrefutable_let_patterns)]
2273 if let ChildUses::Capabilities(_) = self {
2274 } else {
2276 *self = ChildUses::Capabilities(fidl::new_empty!(
2278 fidl::encoding::UnboundedVector<Capability>,
2279 D
2280 ));
2281 }
2282 #[allow(irrefutable_let_patterns)]
2283 if let ChildUses::Capabilities(ref mut val) = self {
2284 fidl::decode!(
2285 fidl::encoding::UnboundedVector<Capability>,
2286 D,
2287 val,
2288 decoder,
2289 _inner_offset,
2290 depth
2291 )?;
2292 } else {
2293 unreachable!()
2294 }
2295 }
2296 ordinal => panic!("unexpected ordinal {:?}", ordinal),
2297 }
2298 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
2299 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2300 }
2301 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2302 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2303 }
2304 Ok(())
2305 }
2306 }
2307
2308 impl fidl::encoding::ValueTypeMarker for ExposedCapability {
2309 type Borrowed<'a> = &'a Self;
2310 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2311 value
2312 }
2313 }
2314
2315 unsafe impl fidl::encoding::TypeMarker for ExposedCapability {
2316 type Owned = Self;
2317
2318 #[inline(always)]
2319 fn inline_align(_context: fidl::encoding::Context) -> usize {
2320 8
2321 }
2322
2323 #[inline(always)]
2324 fn inline_size(_context: fidl::encoding::Context) -> usize {
2325 16
2326 }
2327 }
2328
2329 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExposedCapability, D>
2330 for &ExposedCapability
2331 {
2332 #[inline]
2333 unsafe fn encode(
2334 self,
2335 encoder: &mut fidl::encoding::Encoder<'_, D>,
2336 offset: usize,
2337 _depth: fidl::encoding::Depth,
2338 ) -> fidl::Result<()> {
2339 encoder.debug_check_bounds::<ExposedCapability>(offset);
2340 encoder.write_num::<u64>(self.ordinal(), offset);
2341 match self {
2342 ExposedCapability::Protocol(ref val) => fidl::encoding::encode_in_envelope::<
2343 fidl::encoding::BoundedString<255>,
2344 D,
2345 >(
2346 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(
2347 val,
2348 ),
2349 encoder,
2350 offset + 8,
2351 _depth,
2352 ),
2353 ExposedCapability::Configuration(ref val) => fidl::encoding::encode_in_envelope::<
2354 fidl::encoding::BoundedString<255>,
2355 D,
2356 >(
2357 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(
2358 val,
2359 ),
2360 encoder,
2361 offset + 8,
2362 _depth,
2363 ),
2364 ExposedCapability::Service(ref val) => fidl::encoding::encode_in_envelope::<
2365 fidl::encoding::BoundedString<255>,
2366 D,
2367 >(
2368 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow(
2369 val,
2370 ),
2371 encoder,
2372 offset + 8,
2373 _depth,
2374 ),
2375 }
2376 }
2377 }
2378
2379 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExposedCapability {
2380 #[inline(always)]
2381 fn new_empty() -> Self {
2382 Self::Protocol(fidl::new_empty!(fidl::encoding::BoundedString<255>, D))
2383 }
2384
2385 #[inline]
2386 unsafe fn decode(
2387 &mut self,
2388 decoder: &mut fidl::encoding::Decoder<'_, D>,
2389 offset: usize,
2390 mut depth: fidl::encoding::Depth,
2391 ) -> fidl::Result<()> {
2392 decoder.debug_check_bounds::<Self>(offset);
2393 #[allow(unused_variables)]
2394 let next_out_of_line = decoder.next_out_of_line();
2395 let handles_before = decoder.remaining_handles();
2396 let (ordinal, inlined, num_bytes, num_handles) =
2397 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
2398
2399 let member_inline_size = match ordinal {
2400 1 => {
2401 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
2402 decoder.context,
2403 )
2404 }
2405 2 => {
2406 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
2407 decoder.context,
2408 )
2409 }
2410 3 => {
2411 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
2412 decoder.context,
2413 )
2414 }
2415 _ => return Err(fidl::Error::UnknownUnionTag),
2416 };
2417
2418 if inlined != (member_inline_size <= 4) {
2419 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2420 }
2421 let _inner_offset;
2422 if inlined {
2423 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
2424 _inner_offset = offset + 8;
2425 } else {
2426 depth.increment()?;
2427 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2428 }
2429 match ordinal {
2430 1 => {
2431 #[allow(irrefutable_let_patterns)]
2432 if let ExposedCapability::Protocol(_) = self {
2433 } else {
2435 *self = ExposedCapability::Protocol(fidl::new_empty!(
2437 fidl::encoding::BoundedString<255>,
2438 D
2439 ));
2440 }
2441 #[allow(irrefutable_let_patterns)]
2442 if let ExposedCapability::Protocol(ref mut val) = self {
2443 fidl::decode!(
2444 fidl::encoding::BoundedString<255>,
2445 D,
2446 val,
2447 decoder,
2448 _inner_offset,
2449 depth
2450 )?;
2451 } else {
2452 unreachable!()
2453 }
2454 }
2455 2 => {
2456 #[allow(irrefutable_let_patterns)]
2457 if let ExposedCapability::Configuration(_) = self {
2458 } else {
2460 *self = ExposedCapability::Configuration(fidl::new_empty!(
2462 fidl::encoding::BoundedString<255>,
2463 D
2464 ));
2465 }
2466 #[allow(irrefutable_let_patterns)]
2467 if let ExposedCapability::Configuration(ref mut val) = self {
2468 fidl::decode!(
2469 fidl::encoding::BoundedString<255>,
2470 D,
2471 val,
2472 decoder,
2473 _inner_offset,
2474 depth
2475 )?;
2476 } else {
2477 unreachable!()
2478 }
2479 }
2480 3 => {
2481 #[allow(irrefutable_let_patterns)]
2482 if let ExposedCapability::Service(_) = self {
2483 } else {
2485 *self = ExposedCapability::Service(fidl::new_empty!(
2487 fidl::encoding::BoundedString<255>,
2488 D
2489 ));
2490 }
2491 #[allow(irrefutable_let_patterns)]
2492 if let ExposedCapability::Service(ref mut val) = self {
2493 fidl::decode!(
2494 fidl::encoding::BoundedString<255>,
2495 D,
2496 val,
2497 decoder,
2498 _inner_offset,
2499 depth
2500 )?;
2501 } else {
2502 unreachable!()
2503 }
2504 }
2505 ordinal => panic!("unexpected ordinal {:?}", ordinal),
2506 }
2507 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
2508 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2509 }
2510 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2511 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2512 }
2513 Ok(())
2514 }
2515 }
2516}