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
11bitflags! {
12 #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
14 pub struct NetworkCapability: u32 {
15 const UNMETERED = 1;
16 const UNCONGESTED = 2;
17 const NOT_BANDWIDTH_CONSTRAINED = 4;
18 }
19}
20
21impl NetworkCapability {
22 #[inline(always)]
23 pub fn from_bits_allow_unknown(bits: u32) -> Self {
24 Self::from_bits_retain(bits)
25 }
26
27 #[inline(always)]
28 pub fn has_unknown_bits(&self) -> bool {
29 self.get_unknown_bits() != 0
30 }
31
32 #[inline(always)]
33 pub fn get_unknown_bits(&self) -> u32 {
34 self.bits() & !Self::all().bits()
35 }
36}
37
38bitflags! {
39 #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
42 pub struct ProtoProperties: u8 {
43 const V4 = 1;
44 const V6 = 2;
45 }
46}
47
48impl ProtoProperties {}
49
50#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
52pub enum ConnectivityState {
53 NoConnectivity,
56 LocalConnectivity,
59 PartialConnectivity,
62 FullConnectivity,
65 #[doc(hidden)]
66 __SourceBreaking { unknown_ordinal: u32 },
67}
68
69#[macro_export]
71macro_rules! ConnectivityStateUnknown {
72 () => {
73 _
74 };
75}
76
77impl ConnectivityState {
78 #[inline]
79 pub fn from_primitive(prim: u32) -> Option<Self> {
80 match prim {
81 1 => Some(Self::NoConnectivity),
82 3 => Some(Self::LocalConnectivity),
83 4 => Some(Self::PartialConnectivity),
84 5 => Some(Self::FullConnectivity),
85 _ => None,
86 }
87 }
88
89 #[inline]
90 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
91 match prim {
92 1 => Self::NoConnectivity,
93 3 => Self::LocalConnectivity,
94 4 => Self::PartialConnectivity,
95 5 => Self::FullConnectivity,
96 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
97 }
98 }
99
100 #[inline]
101 pub fn unknown() -> Self {
102 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
103 }
104
105 #[inline]
106 pub const fn into_primitive(self) -> u32 {
107 match self {
108 Self::NoConnectivity => 1,
109 Self::LocalConnectivity => 3,
110 Self::PartialConnectivity => 4,
111 Self::FullConnectivity => 5,
112 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
113 }
114 }
115
116 #[inline]
117 pub fn is_unknown(&self) -> bool {
118 match self {
119 Self::__SourceBreaking { unknown_ordinal: _ } => true,
120 _ => false,
121 }
122 }
123}
124
125#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
126pub enum NetworkRegistryAddError {
127 MissingNetworkId,
129 MissingNetworkInfo,
131 MissingNetworkDnsServers,
133 DuplicateNetworkId,
136 #[doc(hidden)]
137 __SourceBreaking { unknown_ordinal: u32 },
138}
139
140#[macro_export]
142macro_rules! NetworkRegistryAddErrorUnknown {
143 () => {
144 _
145 };
146}
147
148impl NetworkRegistryAddError {
149 #[inline]
150 pub fn from_primitive(prim: u32) -> Option<Self> {
151 match prim {
152 1 => Some(Self::MissingNetworkId),
153 2 => Some(Self::MissingNetworkInfo),
154 3 => Some(Self::MissingNetworkDnsServers),
155 4 => Some(Self::DuplicateNetworkId),
156 _ => None,
157 }
158 }
159
160 #[inline]
161 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
162 match prim {
163 1 => Self::MissingNetworkId,
164 2 => Self::MissingNetworkInfo,
165 3 => Self::MissingNetworkDnsServers,
166 4 => Self::DuplicateNetworkId,
167 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
168 }
169 }
170
171 #[inline]
172 pub fn unknown() -> Self {
173 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
174 }
175
176 #[inline]
177 pub const fn into_primitive(self) -> u32 {
178 match self {
179 Self::MissingNetworkId => 1,
180 Self::MissingNetworkInfo => 2,
181 Self::MissingNetworkDnsServers => 3,
182 Self::DuplicateNetworkId => 4,
183 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
184 }
185 }
186
187 #[inline]
188 pub fn is_unknown(&self) -> bool {
189 match self {
190 Self::__SourceBreaking { unknown_ordinal: _ } => true,
191 _ => false,
192 }
193 }
194}
195
196#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
197pub enum NetworkRegistryRemoveError {
198 NotFound,
200 CannotRemoveDefaultNetwork,
202 #[doc(hidden)]
203 __SourceBreaking { unknown_ordinal: u32 },
204}
205
206#[macro_export]
208macro_rules! NetworkRegistryRemoveErrorUnknown {
209 () => {
210 _
211 };
212}
213
214impl NetworkRegistryRemoveError {
215 #[inline]
216 pub fn from_primitive(prim: u32) -> Option<Self> {
217 match prim {
218 1 => Some(Self::NotFound),
219 2 => Some(Self::CannotRemoveDefaultNetwork),
220 _ => None,
221 }
222 }
223
224 #[inline]
225 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
226 match prim {
227 1 => Self::NotFound,
228 2 => Self::CannotRemoveDefaultNetwork,
229 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
230 }
231 }
232
233 #[inline]
234 pub fn unknown() -> Self {
235 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
236 }
237
238 #[inline]
239 pub const fn into_primitive(self) -> u32 {
240 match self {
241 Self::NotFound => 1,
242 Self::CannotRemoveDefaultNetwork => 2,
243 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
244 }
245 }
246
247 #[inline]
248 pub fn is_unknown(&self) -> bool {
249 match self {
250 Self::__SourceBreaking { unknown_ordinal: _ } => true,
251 _ => false,
252 }
253 }
254}
255
256#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
257pub enum NetworkRegistrySetDefaultError {
258 NotFound,
260 #[doc(hidden)]
261 __SourceBreaking { unknown_ordinal: u32 },
262}
263
264#[macro_export]
266macro_rules! NetworkRegistrySetDefaultErrorUnknown {
267 () => {
268 _
269 };
270}
271
272impl NetworkRegistrySetDefaultError {
273 #[inline]
274 pub fn from_primitive(prim: u32) -> Option<Self> {
275 match prim {
276 1 => Some(Self::NotFound),
277 _ => None,
278 }
279 }
280
281 #[inline]
282 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
283 match prim {
284 1 => Self::NotFound,
285 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
286 }
287 }
288
289 #[inline]
290 pub fn unknown() -> Self {
291 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
292 }
293
294 #[inline]
295 pub const fn into_primitive(self) -> u32 {
296 match self {
297 Self::NotFound => 1,
298 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
299 }
300 }
301
302 #[inline]
303 pub fn is_unknown(&self) -> bool {
304 match self {
305 Self::__SourceBreaking { unknown_ordinal: _ } => true,
306 _ => false,
307 }
308 }
309}
310
311#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
312pub enum NetworkRegistryUpdateError {
313 MissingNetworkId,
315 MissingNetworkInfo,
317 MissingNetworkDnsServers,
319 NotFound,
321 #[doc(hidden)]
322 __SourceBreaking { unknown_ordinal: u32 },
323}
324
325#[macro_export]
327macro_rules! NetworkRegistryUpdateErrorUnknown {
328 () => {
329 _
330 };
331}
332
333impl NetworkRegistryUpdateError {
334 #[inline]
335 pub fn from_primitive(prim: u32) -> Option<Self> {
336 match prim {
337 1 => Some(Self::MissingNetworkId),
338 2 => Some(Self::MissingNetworkInfo),
339 3 => Some(Self::MissingNetworkDnsServers),
340 4 => Some(Self::NotFound),
341 _ => None,
342 }
343 }
344
345 #[inline]
346 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
347 match prim {
348 1 => Self::MissingNetworkId,
349 2 => Self::MissingNetworkInfo,
350 3 => Self::MissingNetworkDnsServers,
351 4 => Self::NotFound,
352 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
353 }
354 }
355
356 #[inline]
357 pub fn unknown() -> Self {
358 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
359 }
360
361 #[inline]
362 pub const fn into_primitive(self) -> u32 {
363 match self {
364 Self::MissingNetworkId => 1,
365 Self::MissingNetworkInfo => 2,
366 Self::MissingNetworkDnsServers => 3,
367 Self::NotFound => 4,
368 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
369 }
370 }
371
372 #[inline]
373 pub fn is_unknown(&self) -> bool {
374 match self {
375 Self::__SourceBreaking { unknown_ordinal: _ } => true,
376 _ => false,
377 }
378 }
379}
380
381#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
383pub enum NetworkType {
384 Unknown,
385 Ethernet,
386 Wifi,
387 Bluetooth,
388 Cellular,
389 #[doc(hidden)]
390 __SourceBreaking {
391 unknown_ordinal: u32,
392 },
393}
394
395#[macro_export]
397macro_rules! NetworkTypeUnknown {
398 () => {
399 _
400 };
401}
402
403impl NetworkType {
404 #[inline]
405 pub fn from_primitive(prim: u32) -> Option<Self> {
406 match prim {
407 1 => Some(Self::Unknown),
408 2 => Some(Self::Ethernet),
409 3 => Some(Self::Wifi),
410 4 => Some(Self::Bluetooth),
411 5 => Some(Self::Cellular),
412 _ => None,
413 }
414 }
415
416 #[inline]
417 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
418 match prim {
419 1 => Self::Unknown,
420 2 => Self::Ethernet,
421 3 => Self::Wifi,
422 4 => Self::Bluetooth,
423 5 => Self::Cellular,
424 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
425 }
426 }
427
428 #[inline]
429 pub fn unknown() -> Self {
430 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
431 }
432
433 #[inline]
434 pub const fn into_primitive(self) -> u32 {
435 match self {
436 Self::Unknown => 1,
437 Self::Ethernet => 2,
438 Self::Wifi => 3,
439 Self::Bluetooth => 4,
440 Self::Cellular => 5,
441 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
442 }
443 }
444
445 #[inline]
446 pub fn is_unknown(&self) -> bool {
447 match self {
448 Self::__SourceBreaking { unknown_ordinal: _ } => true,
449 _ => false,
450 }
451 }
452}
453
454#[derive(Clone, Debug, PartialEq)]
455pub struct NetworkRegistryAddRequest {
456 pub network: Network,
457}
458
459impl fidl::Persistable for NetworkRegistryAddRequest {}
460
461#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
462#[repr(C)]
463pub struct NetworkRegistryRemoveRequest {
464 pub network_id: u32,
465}
466
467impl fidl::Persistable for NetworkRegistryRemoveRequest {}
468
469#[derive(Clone, Debug, PartialEq)]
470pub struct NetworkRegistrySetDefaultRequest {
471 pub network_id: fidl_fuchsia_posix_socket_common::OptionalUint32,
472}
473
474impl fidl::Persistable for NetworkRegistrySetDefaultRequest {}
475
476#[derive(Clone, Debug, PartialEq)]
477pub struct NetworkRegistryUpdateRequest {
478 pub network: Network,
479}
480
481impl fidl::Persistable for NetworkRegistryUpdateRequest {}
482
483#[derive(Clone, Debug, Default, PartialEq)]
484pub struct FuchsiaNetworkInfo {
485 #[doc(hidden)]
486 pub __source_breaking: fidl::marker::SourceBreaking,
487}
488
489impl fidl::Persistable for FuchsiaNetworkInfo {}
490
491#[derive(Clone, Debug, Default, PartialEq)]
493pub struct Network {
494 pub network_id: Option<u32>,
498 pub info: Option<NetworkInfo>,
502 pub dns_servers: Option<NetworkDnsServers>,
504 pub network_type: Option<NetworkType>,
509 pub capabilities: Option<Vec<NetworkCapability>>,
514 pub connectivity: Option<ConnectivityState>,
519 pub name: Option<String>,
524 pub has_address: Option<ProtoProperties>,
529 pub has_default_route: Option<ProtoProperties>,
534 #[doc(hidden)]
535 pub __source_breaking: fidl::marker::SourceBreaking,
536}
537
538impl fidl::Persistable for Network {}
539
540#[derive(Clone, Debug, Default, PartialEq)]
541pub struct NetworkDnsServers {
542 pub v4: Option<Vec<fidl_fuchsia_net_common::Ipv4Address>>,
543 pub v6: Option<Vec<fidl_fuchsia_net_common::Ipv6Address>>,
544 #[doc(hidden)]
545 pub __source_breaking: fidl::marker::SourceBreaking,
546}
547
548impl fidl::Persistable for NetworkDnsServers {}
549
550#[derive(Clone, Debug, Default, PartialEq)]
551pub struct StarnixNetworkInfo {
552 pub mark: Option<u32>,
553 pub handle: Option<u64>,
554 #[doc(hidden)]
555 pub __source_breaking: fidl::marker::SourceBreaking,
556}
557
558impl fidl::Persistable for StarnixNetworkInfo {}
559
560#[derive(Clone, Debug)]
561pub enum NetworkInfo {
562 Starnix(StarnixNetworkInfo),
564 Fuchsia(FuchsiaNetworkInfo),
566 #[doc(hidden)]
567 __SourceBreaking { unknown_ordinal: u64 },
568}
569
570#[macro_export]
572macro_rules! NetworkInfoUnknown {
573 () => {
574 _
575 };
576}
577
578impl PartialEq for NetworkInfo {
580 fn eq(&self, other: &Self) -> bool {
581 match (self, other) {
582 (Self::Starnix(x), Self::Starnix(y)) => *x == *y,
583 (Self::Fuchsia(x), Self::Fuchsia(y)) => *x == *y,
584 _ => false,
585 }
586 }
587}
588
589impl NetworkInfo {
590 #[inline]
591 pub fn ordinal(&self) -> u64 {
592 match *self {
593 Self::Starnix(_) => 1,
594 Self::Fuchsia(_) => 2,
595 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
596 }
597 }
598
599 #[inline]
600 pub fn unknown_variant_for_testing() -> Self {
601 Self::__SourceBreaking { unknown_ordinal: 0 }
602 }
603
604 #[inline]
605 pub fn is_unknown(&self) -> bool {
606 match self {
607 Self::__SourceBreaking { .. } => true,
608 _ => false,
609 }
610 }
611}
612
613impl fidl::Persistable for NetworkInfo {}
614
615pub mod network_registry_ordinals {
616 pub const SET_DEFAULT: u64 = 0x787930c67b8cf82c;
617 pub const ADD: u64 = 0x197e70a1cbeab3ad;
618 pub const UPDATE: u64 = 0x3bc790ae5418ff0e;
619 pub const REMOVE: u64 = 0x1302df41dca6379e;
620}
621
622mod internal {
623 use super::*;
624 unsafe impl fidl::encoding::TypeMarker for NetworkCapability {
625 type Owned = Self;
626
627 #[inline(always)]
628 fn inline_align(_context: fidl::encoding::Context) -> usize {
629 4
630 }
631
632 #[inline(always)]
633 fn inline_size(_context: fidl::encoding::Context) -> usize {
634 4
635 }
636 }
637
638 impl fidl::encoding::ValueTypeMarker for NetworkCapability {
639 type Borrowed<'a> = Self;
640 #[inline(always)]
641 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
642 *value
643 }
644 }
645
646 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
647 for NetworkCapability
648 {
649 #[inline]
650 unsafe fn encode(
651 self,
652 encoder: &mut fidl::encoding::Encoder<'_, D>,
653 offset: usize,
654 _depth: fidl::encoding::Depth,
655 ) -> fidl::Result<()> {
656 encoder.debug_check_bounds::<Self>(offset);
657 encoder.write_num(self.bits(), offset);
658 Ok(())
659 }
660 }
661
662 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkCapability {
663 #[inline(always)]
664 fn new_empty() -> Self {
665 Self::empty()
666 }
667
668 #[inline]
669 unsafe fn decode(
670 &mut self,
671 decoder: &mut fidl::encoding::Decoder<'_, D>,
672 offset: usize,
673 _depth: fidl::encoding::Depth,
674 ) -> fidl::Result<()> {
675 decoder.debug_check_bounds::<Self>(offset);
676 let prim = decoder.read_num::<u32>(offset);
677 *self = Self::from_bits_allow_unknown(prim);
678 Ok(())
679 }
680 }
681 unsafe impl fidl::encoding::TypeMarker for ProtoProperties {
682 type Owned = Self;
683
684 #[inline(always)]
685 fn inline_align(_context: fidl::encoding::Context) -> usize {
686 1
687 }
688
689 #[inline(always)]
690 fn inline_size(_context: fidl::encoding::Context) -> usize {
691 1
692 }
693 }
694
695 impl fidl::encoding::ValueTypeMarker for ProtoProperties {
696 type Borrowed<'a> = Self;
697 #[inline(always)]
698 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
699 *value
700 }
701 }
702
703 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
704 for ProtoProperties
705 {
706 #[inline]
707 unsafe fn encode(
708 self,
709 encoder: &mut fidl::encoding::Encoder<'_, D>,
710 offset: usize,
711 _depth: fidl::encoding::Depth,
712 ) -> fidl::Result<()> {
713 encoder.debug_check_bounds::<Self>(offset);
714 if self.bits() & Self::all().bits() != self.bits() {
715 return Err(fidl::Error::InvalidBitsValue);
716 }
717 encoder.write_num(self.bits(), offset);
718 Ok(())
719 }
720 }
721
722 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProtoProperties {
723 #[inline(always)]
724 fn new_empty() -> Self {
725 Self::empty()
726 }
727
728 #[inline]
729 unsafe fn decode(
730 &mut self,
731 decoder: &mut fidl::encoding::Decoder<'_, D>,
732 offset: usize,
733 _depth: fidl::encoding::Depth,
734 ) -> fidl::Result<()> {
735 decoder.debug_check_bounds::<Self>(offset);
736 let prim = decoder.read_num::<u8>(offset);
737 *self = Self::from_bits(prim).ok_or(fidl::Error::InvalidBitsValue)?;
738 Ok(())
739 }
740 }
741 unsafe impl fidl::encoding::TypeMarker for ConnectivityState {
742 type Owned = Self;
743
744 #[inline(always)]
745 fn inline_align(_context: fidl::encoding::Context) -> usize {
746 std::mem::align_of::<u32>()
747 }
748
749 #[inline(always)]
750 fn inline_size(_context: fidl::encoding::Context) -> usize {
751 std::mem::size_of::<u32>()
752 }
753
754 #[inline(always)]
755 fn encode_is_copy() -> bool {
756 false
757 }
758
759 #[inline(always)]
760 fn decode_is_copy() -> bool {
761 false
762 }
763 }
764
765 impl fidl::encoding::ValueTypeMarker for ConnectivityState {
766 type Borrowed<'a> = Self;
767 #[inline(always)]
768 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
769 *value
770 }
771 }
772
773 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
774 for ConnectivityState
775 {
776 #[inline]
777 unsafe fn encode(
778 self,
779 encoder: &mut fidl::encoding::Encoder<'_, D>,
780 offset: usize,
781 _depth: fidl::encoding::Depth,
782 ) -> fidl::Result<()> {
783 encoder.debug_check_bounds::<Self>(offset);
784 encoder.write_num(self.into_primitive(), offset);
785 Ok(())
786 }
787 }
788
789 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectivityState {
790 #[inline(always)]
791 fn new_empty() -> Self {
792 Self::unknown()
793 }
794
795 #[inline]
796 unsafe fn decode(
797 &mut self,
798 decoder: &mut fidl::encoding::Decoder<'_, D>,
799 offset: usize,
800 _depth: fidl::encoding::Depth,
801 ) -> fidl::Result<()> {
802 decoder.debug_check_bounds::<Self>(offset);
803 let prim = decoder.read_num::<u32>(offset);
804
805 *self = Self::from_primitive_allow_unknown(prim);
806 Ok(())
807 }
808 }
809 unsafe impl fidl::encoding::TypeMarker for NetworkRegistryAddError {
810 type Owned = Self;
811
812 #[inline(always)]
813 fn inline_align(_context: fidl::encoding::Context) -> usize {
814 std::mem::align_of::<u32>()
815 }
816
817 #[inline(always)]
818 fn inline_size(_context: fidl::encoding::Context) -> usize {
819 std::mem::size_of::<u32>()
820 }
821
822 #[inline(always)]
823 fn encode_is_copy() -> bool {
824 false
825 }
826
827 #[inline(always)]
828 fn decode_is_copy() -> bool {
829 false
830 }
831 }
832
833 impl fidl::encoding::ValueTypeMarker for NetworkRegistryAddError {
834 type Borrowed<'a> = Self;
835 #[inline(always)]
836 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
837 *value
838 }
839 }
840
841 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
842 for NetworkRegistryAddError
843 {
844 #[inline]
845 unsafe fn encode(
846 self,
847 encoder: &mut fidl::encoding::Encoder<'_, D>,
848 offset: usize,
849 _depth: fidl::encoding::Depth,
850 ) -> fidl::Result<()> {
851 encoder.debug_check_bounds::<Self>(offset);
852 encoder.write_num(self.into_primitive(), offset);
853 Ok(())
854 }
855 }
856
857 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
858 for NetworkRegistryAddError
859 {
860 #[inline(always)]
861 fn new_empty() -> Self {
862 Self::unknown()
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 let prim = decoder.read_num::<u32>(offset);
874
875 *self = Self::from_primitive_allow_unknown(prim);
876 Ok(())
877 }
878 }
879 unsafe impl fidl::encoding::TypeMarker for NetworkRegistryRemoveError {
880 type Owned = Self;
881
882 #[inline(always)]
883 fn inline_align(_context: fidl::encoding::Context) -> usize {
884 std::mem::align_of::<u32>()
885 }
886
887 #[inline(always)]
888 fn inline_size(_context: fidl::encoding::Context) -> usize {
889 std::mem::size_of::<u32>()
890 }
891
892 #[inline(always)]
893 fn encode_is_copy() -> bool {
894 false
895 }
896
897 #[inline(always)]
898 fn decode_is_copy() -> bool {
899 false
900 }
901 }
902
903 impl fidl::encoding::ValueTypeMarker for NetworkRegistryRemoveError {
904 type Borrowed<'a> = Self;
905 #[inline(always)]
906 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
907 *value
908 }
909 }
910
911 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
912 for NetworkRegistryRemoveError
913 {
914 #[inline]
915 unsafe fn encode(
916 self,
917 encoder: &mut fidl::encoding::Encoder<'_, D>,
918 offset: usize,
919 _depth: fidl::encoding::Depth,
920 ) -> fidl::Result<()> {
921 encoder.debug_check_bounds::<Self>(offset);
922 encoder.write_num(self.into_primitive(), offset);
923 Ok(())
924 }
925 }
926
927 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
928 for NetworkRegistryRemoveError
929 {
930 #[inline(always)]
931 fn new_empty() -> Self {
932 Self::unknown()
933 }
934
935 #[inline]
936 unsafe fn decode(
937 &mut self,
938 decoder: &mut fidl::encoding::Decoder<'_, D>,
939 offset: usize,
940 _depth: fidl::encoding::Depth,
941 ) -> fidl::Result<()> {
942 decoder.debug_check_bounds::<Self>(offset);
943 let prim = decoder.read_num::<u32>(offset);
944
945 *self = Self::from_primitive_allow_unknown(prim);
946 Ok(())
947 }
948 }
949 unsafe impl fidl::encoding::TypeMarker for NetworkRegistrySetDefaultError {
950 type Owned = Self;
951
952 #[inline(always)]
953 fn inline_align(_context: fidl::encoding::Context) -> usize {
954 std::mem::align_of::<u32>()
955 }
956
957 #[inline(always)]
958 fn inline_size(_context: fidl::encoding::Context) -> usize {
959 std::mem::size_of::<u32>()
960 }
961
962 #[inline(always)]
963 fn encode_is_copy() -> bool {
964 false
965 }
966
967 #[inline(always)]
968 fn decode_is_copy() -> bool {
969 false
970 }
971 }
972
973 impl fidl::encoding::ValueTypeMarker for NetworkRegistrySetDefaultError {
974 type Borrowed<'a> = Self;
975 #[inline(always)]
976 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
977 *value
978 }
979 }
980
981 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
982 for NetworkRegistrySetDefaultError
983 {
984 #[inline]
985 unsafe fn encode(
986 self,
987 encoder: &mut fidl::encoding::Encoder<'_, D>,
988 offset: usize,
989 _depth: fidl::encoding::Depth,
990 ) -> fidl::Result<()> {
991 encoder.debug_check_bounds::<Self>(offset);
992 encoder.write_num(self.into_primitive(), offset);
993 Ok(())
994 }
995 }
996
997 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
998 for NetworkRegistrySetDefaultError
999 {
1000 #[inline(always)]
1001 fn new_empty() -> Self {
1002 Self::unknown()
1003 }
1004
1005 #[inline]
1006 unsafe fn decode(
1007 &mut self,
1008 decoder: &mut fidl::encoding::Decoder<'_, D>,
1009 offset: usize,
1010 _depth: fidl::encoding::Depth,
1011 ) -> fidl::Result<()> {
1012 decoder.debug_check_bounds::<Self>(offset);
1013 let prim = decoder.read_num::<u32>(offset);
1014
1015 *self = Self::from_primitive_allow_unknown(prim);
1016 Ok(())
1017 }
1018 }
1019 unsafe impl fidl::encoding::TypeMarker for NetworkRegistryUpdateError {
1020 type Owned = Self;
1021
1022 #[inline(always)]
1023 fn inline_align(_context: fidl::encoding::Context) -> usize {
1024 std::mem::align_of::<u32>()
1025 }
1026
1027 #[inline(always)]
1028 fn inline_size(_context: fidl::encoding::Context) -> usize {
1029 std::mem::size_of::<u32>()
1030 }
1031
1032 #[inline(always)]
1033 fn encode_is_copy() -> bool {
1034 false
1035 }
1036
1037 #[inline(always)]
1038 fn decode_is_copy() -> bool {
1039 false
1040 }
1041 }
1042
1043 impl fidl::encoding::ValueTypeMarker for NetworkRegistryUpdateError {
1044 type Borrowed<'a> = Self;
1045 #[inline(always)]
1046 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1047 *value
1048 }
1049 }
1050
1051 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1052 for NetworkRegistryUpdateError
1053 {
1054 #[inline]
1055 unsafe fn encode(
1056 self,
1057 encoder: &mut fidl::encoding::Encoder<'_, D>,
1058 offset: usize,
1059 _depth: fidl::encoding::Depth,
1060 ) -> fidl::Result<()> {
1061 encoder.debug_check_bounds::<Self>(offset);
1062 encoder.write_num(self.into_primitive(), offset);
1063 Ok(())
1064 }
1065 }
1066
1067 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1068 for NetworkRegistryUpdateError
1069 {
1070 #[inline(always)]
1071 fn new_empty() -> Self {
1072 Self::unknown()
1073 }
1074
1075 #[inline]
1076 unsafe fn decode(
1077 &mut self,
1078 decoder: &mut fidl::encoding::Decoder<'_, D>,
1079 offset: usize,
1080 _depth: fidl::encoding::Depth,
1081 ) -> fidl::Result<()> {
1082 decoder.debug_check_bounds::<Self>(offset);
1083 let prim = decoder.read_num::<u32>(offset);
1084
1085 *self = Self::from_primitive_allow_unknown(prim);
1086 Ok(())
1087 }
1088 }
1089 unsafe impl fidl::encoding::TypeMarker for NetworkType {
1090 type Owned = Self;
1091
1092 #[inline(always)]
1093 fn inline_align(_context: fidl::encoding::Context) -> usize {
1094 std::mem::align_of::<u32>()
1095 }
1096
1097 #[inline(always)]
1098 fn inline_size(_context: fidl::encoding::Context) -> usize {
1099 std::mem::size_of::<u32>()
1100 }
1101
1102 #[inline(always)]
1103 fn encode_is_copy() -> bool {
1104 false
1105 }
1106
1107 #[inline(always)]
1108 fn decode_is_copy() -> bool {
1109 false
1110 }
1111 }
1112
1113 impl fidl::encoding::ValueTypeMarker for NetworkType {
1114 type Borrowed<'a> = Self;
1115 #[inline(always)]
1116 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1117 *value
1118 }
1119 }
1120
1121 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for NetworkType {
1122 #[inline]
1123 unsafe fn encode(
1124 self,
1125 encoder: &mut fidl::encoding::Encoder<'_, D>,
1126 offset: usize,
1127 _depth: fidl::encoding::Depth,
1128 ) -> fidl::Result<()> {
1129 encoder.debug_check_bounds::<Self>(offset);
1130 encoder.write_num(self.into_primitive(), offset);
1131 Ok(())
1132 }
1133 }
1134
1135 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkType {
1136 #[inline(always)]
1137 fn new_empty() -> Self {
1138 Self::unknown()
1139 }
1140
1141 #[inline]
1142 unsafe fn decode(
1143 &mut self,
1144 decoder: &mut fidl::encoding::Decoder<'_, D>,
1145 offset: usize,
1146 _depth: fidl::encoding::Depth,
1147 ) -> fidl::Result<()> {
1148 decoder.debug_check_bounds::<Self>(offset);
1149 let prim = decoder.read_num::<u32>(offset);
1150
1151 *self = Self::from_primitive_allow_unknown(prim);
1152 Ok(())
1153 }
1154 }
1155
1156 impl fidl::encoding::ValueTypeMarker for NetworkRegistryAddRequest {
1157 type Borrowed<'a> = &'a Self;
1158 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1159 value
1160 }
1161 }
1162
1163 unsafe impl fidl::encoding::TypeMarker for NetworkRegistryAddRequest {
1164 type Owned = Self;
1165
1166 #[inline(always)]
1167 fn inline_align(_context: fidl::encoding::Context) -> usize {
1168 8
1169 }
1170
1171 #[inline(always)]
1172 fn inline_size(_context: fidl::encoding::Context) -> usize {
1173 16
1174 }
1175 }
1176
1177 unsafe impl<D: fidl::encoding::ResourceDialect>
1178 fidl::encoding::Encode<NetworkRegistryAddRequest, D> for &NetworkRegistryAddRequest
1179 {
1180 #[inline]
1181 unsafe fn encode(
1182 self,
1183 encoder: &mut fidl::encoding::Encoder<'_, D>,
1184 offset: usize,
1185 _depth: fidl::encoding::Depth,
1186 ) -> fidl::Result<()> {
1187 encoder.debug_check_bounds::<NetworkRegistryAddRequest>(offset);
1188 fidl::encoding::Encode::<NetworkRegistryAddRequest, D>::encode(
1190 (<Network as fidl::encoding::ValueTypeMarker>::borrow(&self.network),),
1191 encoder,
1192 offset,
1193 _depth,
1194 )
1195 }
1196 }
1197 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Network, D>>
1198 fidl::encoding::Encode<NetworkRegistryAddRequest, D> for (T0,)
1199 {
1200 #[inline]
1201 unsafe fn encode(
1202 self,
1203 encoder: &mut fidl::encoding::Encoder<'_, D>,
1204 offset: usize,
1205 depth: fidl::encoding::Depth,
1206 ) -> fidl::Result<()> {
1207 encoder.debug_check_bounds::<NetworkRegistryAddRequest>(offset);
1208 self.0.encode(encoder, offset + 0, depth)?;
1212 Ok(())
1213 }
1214 }
1215
1216 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1217 for NetworkRegistryAddRequest
1218 {
1219 #[inline(always)]
1220 fn new_empty() -> Self {
1221 Self { network: fidl::new_empty!(Network, D) }
1222 }
1223
1224 #[inline]
1225 unsafe fn decode(
1226 &mut self,
1227 decoder: &mut fidl::encoding::Decoder<'_, D>,
1228 offset: usize,
1229 _depth: fidl::encoding::Depth,
1230 ) -> fidl::Result<()> {
1231 decoder.debug_check_bounds::<Self>(offset);
1232 fidl::decode!(Network, D, &mut self.network, decoder, offset + 0, _depth)?;
1234 Ok(())
1235 }
1236 }
1237
1238 impl fidl::encoding::ValueTypeMarker for NetworkRegistryRemoveRequest {
1239 type Borrowed<'a> = &'a Self;
1240 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1241 value
1242 }
1243 }
1244
1245 unsafe impl fidl::encoding::TypeMarker for NetworkRegistryRemoveRequest {
1246 type Owned = Self;
1247
1248 #[inline(always)]
1249 fn inline_align(_context: fidl::encoding::Context) -> usize {
1250 4
1251 }
1252
1253 #[inline(always)]
1254 fn inline_size(_context: fidl::encoding::Context) -> usize {
1255 4
1256 }
1257 #[inline(always)]
1258 fn encode_is_copy() -> bool {
1259 true
1260 }
1261
1262 #[inline(always)]
1263 fn decode_is_copy() -> bool {
1264 true
1265 }
1266 }
1267
1268 unsafe impl<D: fidl::encoding::ResourceDialect>
1269 fidl::encoding::Encode<NetworkRegistryRemoveRequest, D> for &NetworkRegistryRemoveRequest
1270 {
1271 #[inline]
1272 unsafe fn encode(
1273 self,
1274 encoder: &mut fidl::encoding::Encoder<'_, D>,
1275 offset: usize,
1276 _depth: fidl::encoding::Depth,
1277 ) -> fidl::Result<()> {
1278 encoder.debug_check_bounds::<NetworkRegistryRemoveRequest>(offset);
1279 unsafe {
1280 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1282 (buf_ptr as *mut NetworkRegistryRemoveRequest)
1283 .write_unaligned((self as *const NetworkRegistryRemoveRequest).read());
1284 }
1287 Ok(())
1288 }
1289 }
1290 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
1291 fidl::encoding::Encode<NetworkRegistryRemoveRequest, D> for (T0,)
1292 {
1293 #[inline]
1294 unsafe fn encode(
1295 self,
1296 encoder: &mut fidl::encoding::Encoder<'_, D>,
1297 offset: usize,
1298 depth: fidl::encoding::Depth,
1299 ) -> fidl::Result<()> {
1300 encoder.debug_check_bounds::<NetworkRegistryRemoveRequest>(offset);
1301 self.0.encode(encoder, offset + 0, depth)?;
1305 Ok(())
1306 }
1307 }
1308
1309 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1310 for NetworkRegistryRemoveRequest
1311 {
1312 #[inline(always)]
1313 fn new_empty() -> Self {
1314 Self { network_id: fidl::new_empty!(u32, D) }
1315 }
1316
1317 #[inline]
1318 unsafe fn decode(
1319 &mut self,
1320 decoder: &mut fidl::encoding::Decoder<'_, D>,
1321 offset: usize,
1322 _depth: fidl::encoding::Depth,
1323 ) -> fidl::Result<()> {
1324 decoder.debug_check_bounds::<Self>(offset);
1325 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1326 unsafe {
1329 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1330 }
1331 Ok(())
1332 }
1333 }
1334
1335 impl fidl::encoding::ValueTypeMarker for NetworkRegistrySetDefaultRequest {
1336 type Borrowed<'a> = &'a Self;
1337 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1338 value
1339 }
1340 }
1341
1342 unsafe impl fidl::encoding::TypeMarker for NetworkRegistrySetDefaultRequest {
1343 type Owned = Self;
1344
1345 #[inline(always)]
1346 fn inline_align(_context: fidl::encoding::Context) -> usize {
1347 8
1348 }
1349
1350 #[inline(always)]
1351 fn inline_size(_context: fidl::encoding::Context) -> usize {
1352 16
1353 }
1354 }
1355
1356 unsafe impl<D: fidl::encoding::ResourceDialect>
1357 fidl::encoding::Encode<NetworkRegistrySetDefaultRequest, D>
1358 for &NetworkRegistrySetDefaultRequest
1359 {
1360 #[inline]
1361 unsafe fn encode(
1362 self,
1363 encoder: &mut fidl::encoding::Encoder<'_, D>,
1364 offset: usize,
1365 _depth: fidl::encoding::Depth,
1366 ) -> fidl::Result<()> {
1367 encoder.debug_check_bounds::<NetworkRegistrySetDefaultRequest>(offset);
1368 fidl::encoding::Encode::<NetworkRegistrySetDefaultRequest, D>::encode(
1370 (
1371 <fidl_fuchsia_posix_socket_common::OptionalUint32 as fidl::encoding::ValueTypeMarker>::borrow(&self.network_id),
1372 ),
1373 encoder, offset, _depth
1374 )
1375 }
1376 }
1377 unsafe impl<
1378 D: fidl::encoding::ResourceDialect,
1379 T0: fidl::encoding::Encode<fidl_fuchsia_posix_socket_common::OptionalUint32, D>,
1380 > fidl::encoding::Encode<NetworkRegistrySetDefaultRequest, D> for (T0,)
1381 {
1382 #[inline]
1383 unsafe fn encode(
1384 self,
1385 encoder: &mut fidl::encoding::Encoder<'_, D>,
1386 offset: usize,
1387 depth: fidl::encoding::Depth,
1388 ) -> fidl::Result<()> {
1389 encoder.debug_check_bounds::<NetworkRegistrySetDefaultRequest>(offset);
1390 self.0.encode(encoder, offset + 0, depth)?;
1394 Ok(())
1395 }
1396 }
1397
1398 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1399 for NetworkRegistrySetDefaultRequest
1400 {
1401 #[inline(always)]
1402 fn new_empty() -> Self {
1403 Self {
1404 network_id: fidl::new_empty!(fidl_fuchsia_posix_socket_common::OptionalUint32, D),
1405 }
1406 }
1407
1408 #[inline]
1409 unsafe fn decode(
1410 &mut self,
1411 decoder: &mut fidl::encoding::Decoder<'_, D>,
1412 offset: usize,
1413 _depth: fidl::encoding::Depth,
1414 ) -> fidl::Result<()> {
1415 decoder.debug_check_bounds::<Self>(offset);
1416 fidl::decode!(
1418 fidl_fuchsia_posix_socket_common::OptionalUint32,
1419 D,
1420 &mut self.network_id,
1421 decoder,
1422 offset + 0,
1423 _depth
1424 )?;
1425 Ok(())
1426 }
1427 }
1428
1429 impl fidl::encoding::ValueTypeMarker for NetworkRegistryUpdateRequest {
1430 type Borrowed<'a> = &'a Self;
1431 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1432 value
1433 }
1434 }
1435
1436 unsafe impl fidl::encoding::TypeMarker for NetworkRegistryUpdateRequest {
1437 type Owned = Self;
1438
1439 #[inline(always)]
1440 fn inline_align(_context: fidl::encoding::Context) -> usize {
1441 8
1442 }
1443
1444 #[inline(always)]
1445 fn inline_size(_context: fidl::encoding::Context) -> usize {
1446 16
1447 }
1448 }
1449
1450 unsafe impl<D: fidl::encoding::ResourceDialect>
1451 fidl::encoding::Encode<NetworkRegistryUpdateRequest, D> for &NetworkRegistryUpdateRequest
1452 {
1453 #[inline]
1454 unsafe fn encode(
1455 self,
1456 encoder: &mut fidl::encoding::Encoder<'_, D>,
1457 offset: usize,
1458 _depth: fidl::encoding::Depth,
1459 ) -> fidl::Result<()> {
1460 encoder.debug_check_bounds::<NetworkRegistryUpdateRequest>(offset);
1461 fidl::encoding::Encode::<NetworkRegistryUpdateRequest, D>::encode(
1463 (<Network as fidl::encoding::ValueTypeMarker>::borrow(&self.network),),
1464 encoder,
1465 offset,
1466 _depth,
1467 )
1468 }
1469 }
1470 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Network, D>>
1471 fidl::encoding::Encode<NetworkRegistryUpdateRequest, D> for (T0,)
1472 {
1473 #[inline]
1474 unsafe fn encode(
1475 self,
1476 encoder: &mut fidl::encoding::Encoder<'_, D>,
1477 offset: usize,
1478 depth: fidl::encoding::Depth,
1479 ) -> fidl::Result<()> {
1480 encoder.debug_check_bounds::<NetworkRegistryUpdateRequest>(offset);
1481 self.0.encode(encoder, offset + 0, depth)?;
1485 Ok(())
1486 }
1487 }
1488
1489 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1490 for NetworkRegistryUpdateRequest
1491 {
1492 #[inline(always)]
1493 fn new_empty() -> Self {
1494 Self { network: fidl::new_empty!(Network, D) }
1495 }
1496
1497 #[inline]
1498 unsafe fn decode(
1499 &mut self,
1500 decoder: &mut fidl::encoding::Decoder<'_, D>,
1501 offset: usize,
1502 _depth: fidl::encoding::Depth,
1503 ) -> fidl::Result<()> {
1504 decoder.debug_check_bounds::<Self>(offset);
1505 fidl::decode!(Network, D, &mut self.network, decoder, offset + 0, _depth)?;
1507 Ok(())
1508 }
1509 }
1510
1511 impl FuchsiaNetworkInfo {
1512 #[inline(always)]
1513 fn max_ordinal_present(&self) -> u64 {
1514 0
1515 }
1516 }
1517
1518 impl fidl::encoding::ValueTypeMarker for FuchsiaNetworkInfo {
1519 type Borrowed<'a> = &'a Self;
1520 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1521 value
1522 }
1523 }
1524
1525 unsafe impl fidl::encoding::TypeMarker for FuchsiaNetworkInfo {
1526 type Owned = Self;
1527
1528 #[inline(always)]
1529 fn inline_align(_context: fidl::encoding::Context) -> usize {
1530 8
1531 }
1532
1533 #[inline(always)]
1534 fn inline_size(_context: fidl::encoding::Context) -> usize {
1535 16
1536 }
1537 }
1538
1539 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FuchsiaNetworkInfo, D>
1540 for &FuchsiaNetworkInfo
1541 {
1542 unsafe fn encode(
1543 self,
1544 encoder: &mut fidl::encoding::Encoder<'_, D>,
1545 offset: usize,
1546 mut depth: fidl::encoding::Depth,
1547 ) -> fidl::Result<()> {
1548 encoder.debug_check_bounds::<FuchsiaNetworkInfo>(offset);
1549 let max_ordinal: u64 = self.max_ordinal_present();
1551 encoder.write_num(max_ordinal, offset);
1552 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1553 if max_ordinal == 0 {
1555 return Ok(());
1556 }
1557 depth.increment()?;
1558 let envelope_size = 8;
1559 let bytes_len = max_ordinal as usize * envelope_size;
1560 #[allow(unused_variables)]
1561 let offset = encoder.out_of_line_offset(bytes_len);
1562 let mut _prev_end_offset: usize = 0;
1563
1564 Ok(())
1565 }
1566 }
1567
1568 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FuchsiaNetworkInfo {
1569 #[inline(always)]
1570 fn new_empty() -> Self {
1571 Self::default()
1572 }
1573
1574 unsafe fn decode(
1575 &mut self,
1576 decoder: &mut fidl::encoding::Decoder<'_, D>,
1577 offset: usize,
1578 mut depth: fidl::encoding::Depth,
1579 ) -> fidl::Result<()> {
1580 decoder.debug_check_bounds::<Self>(offset);
1581 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1582 None => return Err(fidl::Error::NotNullable),
1583 Some(len) => len,
1584 };
1585 if len == 0 {
1587 return Ok(());
1588 };
1589 depth.increment()?;
1590 let envelope_size = 8;
1591 let bytes_len = len * envelope_size;
1592 let offset = decoder.out_of_line_offset(bytes_len)?;
1593 let mut _next_ordinal_to_read = 0;
1595 let mut next_offset = offset;
1596 let end_offset = offset + bytes_len;
1597
1598 while next_offset < end_offset {
1600 _next_ordinal_to_read += 1;
1601 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1602 next_offset += envelope_size;
1603 }
1604
1605 Ok(())
1606 }
1607 }
1608
1609 impl Network {
1610 #[inline(always)]
1611 fn max_ordinal_present(&self) -> u64 {
1612 if let Some(_) = self.has_default_route {
1613 return 9;
1614 }
1615 if let Some(_) = self.has_address {
1616 return 8;
1617 }
1618 if let Some(_) = self.name {
1619 return 7;
1620 }
1621 if let Some(_) = self.connectivity {
1622 return 6;
1623 }
1624 if let Some(_) = self.capabilities {
1625 return 5;
1626 }
1627 if let Some(_) = self.network_type {
1628 return 4;
1629 }
1630 if let Some(_) = self.dns_servers {
1631 return 3;
1632 }
1633 if let Some(_) = self.info {
1634 return 2;
1635 }
1636 if let Some(_) = self.network_id {
1637 return 1;
1638 }
1639 0
1640 }
1641 }
1642
1643 impl fidl::encoding::ValueTypeMarker for Network {
1644 type Borrowed<'a> = &'a Self;
1645 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1646 value
1647 }
1648 }
1649
1650 unsafe impl fidl::encoding::TypeMarker for Network {
1651 type Owned = Self;
1652
1653 #[inline(always)]
1654 fn inline_align(_context: fidl::encoding::Context) -> usize {
1655 8
1656 }
1657
1658 #[inline(always)]
1659 fn inline_size(_context: fidl::encoding::Context) -> usize {
1660 16
1661 }
1662 }
1663
1664 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Network, D> for &Network {
1665 unsafe fn encode(
1666 self,
1667 encoder: &mut fidl::encoding::Encoder<'_, D>,
1668 offset: usize,
1669 mut depth: fidl::encoding::Depth,
1670 ) -> fidl::Result<()> {
1671 encoder.debug_check_bounds::<Network>(offset);
1672 let max_ordinal: u64 = self.max_ordinal_present();
1674 encoder.write_num(max_ordinal, offset);
1675 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1676 if max_ordinal == 0 {
1678 return Ok(());
1679 }
1680 depth.increment()?;
1681 let envelope_size = 8;
1682 let bytes_len = max_ordinal as usize * envelope_size;
1683 #[allow(unused_variables)]
1684 let offset = encoder.out_of_line_offset(bytes_len);
1685 let mut _prev_end_offset: usize = 0;
1686 if 1 > max_ordinal {
1687 return Ok(());
1688 }
1689
1690 let cur_offset: usize = (1 - 1) * envelope_size;
1693
1694 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1696
1697 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1702 self.network_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1703 encoder,
1704 offset + cur_offset,
1705 depth,
1706 )?;
1707
1708 _prev_end_offset = cur_offset + envelope_size;
1709 if 2 > max_ordinal {
1710 return Ok(());
1711 }
1712
1713 let cur_offset: usize = (2 - 1) * envelope_size;
1716
1717 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1719
1720 fidl::encoding::encode_in_envelope_optional::<NetworkInfo, D>(
1725 self.info.as_ref().map(<NetworkInfo as fidl::encoding::ValueTypeMarker>::borrow),
1726 encoder,
1727 offset + cur_offset,
1728 depth,
1729 )?;
1730
1731 _prev_end_offset = cur_offset + envelope_size;
1732 if 3 > max_ordinal {
1733 return Ok(());
1734 }
1735
1736 let cur_offset: usize = (3 - 1) * envelope_size;
1739
1740 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1742
1743 fidl::encoding::encode_in_envelope_optional::<NetworkDnsServers, D>(
1748 self.dns_servers
1749 .as_ref()
1750 .map(<NetworkDnsServers as fidl::encoding::ValueTypeMarker>::borrow),
1751 encoder,
1752 offset + cur_offset,
1753 depth,
1754 )?;
1755
1756 _prev_end_offset = cur_offset + envelope_size;
1757 if 4 > max_ordinal {
1758 return Ok(());
1759 }
1760
1761 let cur_offset: usize = (4 - 1) * envelope_size;
1764
1765 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1767
1768 fidl::encoding::encode_in_envelope_optional::<NetworkType, D>(
1773 self.network_type
1774 .as_ref()
1775 .map(<NetworkType as fidl::encoding::ValueTypeMarker>::borrow),
1776 encoder,
1777 offset + cur_offset,
1778 depth,
1779 )?;
1780
1781 _prev_end_offset = cur_offset + envelope_size;
1782 if 5 > max_ordinal {
1783 return Ok(());
1784 }
1785
1786 let cur_offset: usize = (5 - 1) * envelope_size;
1789
1790 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1792
1793 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<NetworkCapability>, D>(
1798 self.capabilities.as_ref().map(<fidl::encoding::UnboundedVector<NetworkCapability> as fidl::encoding::ValueTypeMarker>::borrow),
1799 encoder, offset + cur_offset, depth
1800 )?;
1801
1802 _prev_end_offset = cur_offset + envelope_size;
1803 if 6 > max_ordinal {
1804 return Ok(());
1805 }
1806
1807 let cur_offset: usize = (6 - 1) * envelope_size;
1810
1811 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1813
1814 fidl::encoding::encode_in_envelope_optional::<ConnectivityState, D>(
1819 self.connectivity
1820 .as_ref()
1821 .map(<ConnectivityState as fidl::encoding::ValueTypeMarker>::borrow),
1822 encoder,
1823 offset + cur_offset,
1824 depth,
1825 )?;
1826
1827 _prev_end_offset = cur_offset + envelope_size;
1828 if 7 > max_ordinal {
1829 return Ok(());
1830 }
1831
1832 let cur_offset: usize = (7 - 1) * envelope_size;
1835
1836 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1838
1839 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<15>, D>(
1844 self.name.as_ref().map(
1845 <fidl::encoding::BoundedString<15> as fidl::encoding::ValueTypeMarker>::borrow,
1846 ),
1847 encoder,
1848 offset + cur_offset,
1849 depth,
1850 )?;
1851
1852 _prev_end_offset = cur_offset + envelope_size;
1853 if 8 > max_ordinal {
1854 return Ok(());
1855 }
1856
1857 let cur_offset: usize = (8 - 1) * envelope_size;
1860
1861 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1863
1864 fidl::encoding::encode_in_envelope_optional::<ProtoProperties, D>(
1869 self.has_address
1870 .as_ref()
1871 .map(<ProtoProperties as fidl::encoding::ValueTypeMarker>::borrow),
1872 encoder,
1873 offset + cur_offset,
1874 depth,
1875 )?;
1876
1877 _prev_end_offset = cur_offset + envelope_size;
1878 if 9 > max_ordinal {
1879 return Ok(());
1880 }
1881
1882 let cur_offset: usize = (9 - 1) * envelope_size;
1885
1886 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1888
1889 fidl::encoding::encode_in_envelope_optional::<ProtoProperties, D>(
1894 self.has_default_route
1895 .as_ref()
1896 .map(<ProtoProperties as fidl::encoding::ValueTypeMarker>::borrow),
1897 encoder,
1898 offset + cur_offset,
1899 depth,
1900 )?;
1901
1902 _prev_end_offset = cur_offset + envelope_size;
1903
1904 Ok(())
1905 }
1906 }
1907
1908 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Network {
1909 #[inline(always)]
1910 fn new_empty() -> Self {
1911 Self::default()
1912 }
1913
1914 unsafe fn decode(
1915 &mut self,
1916 decoder: &mut fidl::encoding::Decoder<'_, D>,
1917 offset: usize,
1918 mut depth: fidl::encoding::Depth,
1919 ) -> fidl::Result<()> {
1920 decoder.debug_check_bounds::<Self>(offset);
1921 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1922 None => return Err(fidl::Error::NotNullable),
1923 Some(len) => len,
1924 };
1925 if len == 0 {
1927 return Ok(());
1928 };
1929 depth.increment()?;
1930 let envelope_size = 8;
1931 let bytes_len = len * envelope_size;
1932 let offset = decoder.out_of_line_offset(bytes_len)?;
1933 let mut _next_ordinal_to_read = 0;
1935 let mut next_offset = offset;
1936 let end_offset = offset + bytes_len;
1937 _next_ordinal_to_read += 1;
1938 if next_offset >= end_offset {
1939 return Ok(());
1940 }
1941
1942 while _next_ordinal_to_read < 1 {
1944 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1945 _next_ordinal_to_read += 1;
1946 next_offset += envelope_size;
1947 }
1948
1949 let next_out_of_line = decoder.next_out_of_line();
1950 let handles_before = decoder.remaining_handles();
1951 if let Some((inlined, num_bytes, num_handles)) =
1952 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1953 {
1954 let member_inline_size =
1955 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1956 if inlined != (member_inline_size <= 4) {
1957 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1958 }
1959 let inner_offset;
1960 let mut inner_depth = depth.clone();
1961 if inlined {
1962 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1963 inner_offset = next_offset;
1964 } else {
1965 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1966 inner_depth.increment()?;
1967 }
1968 let val_ref = self.network_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1969 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1970 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1971 {
1972 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1973 }
1974 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1975 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1976 }
1977 }
1978
1979 next_offset += envelope_size;
1980 _next_ordinal_to_read += 1;
1981 if next_offset >= end_offset {
1982 return Ok(());
1983 }
1984
1985 while _next_ordinal_to_read < 2 {
1987 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1988 _next_ordinal_to_read += 1;
1989 next_offset += envelope_size;
1990 }
1991
1992 let next_out_of_line = decoder.next_out_of_line();
1993 let handles_before = decoder.remaining_handles();
1994 if let Some((inlined, num_bytes, num_handles)) =
1995 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1996 {
1997 let member_inline_size =
1998 <NetworkInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1999 if inlined != (member_inline_size <= 4) {
2000 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2001 }
2002 let inner_offset;
2003 let mut inner_depth = depth.clone();
2004 if inlined {
2005 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2006 inner_offset = next_offset;
2007 } else {
2008 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2009 inner_depth.increment()?;
2010 }
2011 let val_ref = self.info.get_or_insert_with(|| fidl::new_empty!(NetworkInfo, D));
2012 fidl::decode!(NetworkInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
2013 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2014 {
2015 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2016 }
2017 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2018 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2019 }
2020 }
2021
2022 next_offset += envelope_size;
2023 _next_ordinal_to_read += 1;
2024 if next_offset >= end_offset {
2025 return Ok(());
2026 }
2027
2028 while _next_ordinal_to_read < 3 {
2030 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2031 _next_ordinal_to_read += 1;
2032 next_offset += envelope_size;
2033 }
2034
2035 let next_out_of_line = decoder.next_out_of_line();
2036 let handles_before = decoder.remaining_handles();
2037 if let Some((inlined, num_bytes, num_handles)) =
2038 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2039 {
2040 let member_inline_size =
2041 <NetworkDnsServers as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2042 if inlined != (member_inline_size <= 4) {
2043 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2044 }
2045 let inner_offset;
2046 let mut inner_depth = depth.clone();
2047 if inlined {
2048 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2049 inner_offset = next_offset;
2050 } else {
2051 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2052 inner_depth.increment()?;
2053 }
2054 let val_ref =
2055 self.dns_servers.get_or_insert_with(|| fidl::new_empty!(NetworkDnsServers, D));
2056 fidl::decode!(NetworkDnsServers, D, val_ref, decoder, inner_offset, inner_depth)?;
2057 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2058 {
2059 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2060 }
2061 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2062 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2063 }
2064 }
2065
2066 next_offset += envelope_size;
2067 _next_ordinal_to_read += 1;
2068 if next_offset >= end_offset {
2069 return Ok(());
2070 }
2071
2072 while _next_ordinal_to_read < 4 {
2074 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2075 _next_ordinal_to_read += 1;
2076 next_offset += envelope_size;
2077 }
2078
2079 let next_out_of_line = decoder.next_out_of_line();
2080 let handles_before = decoder.remaining_handles();
2081 if let Some((inlined, num_bytes, num_handles)) =
2082 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2083 {
2084 let member_inline_size =
2085 <NetworkType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2086 if inlined != (member_inline_size <= 4) {
2087 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2088 }
2089 let inner_offset;
2090 let mut inner_depth = depth.clone();
2091 if inlined {
2092 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2093 inner_offset = next_offset;
2094 } else {
2095 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2096 inner_depth.increment()?;
2097 }
2098 let val_ref =
2099 self.network_type.get_or_insert_with(|| fidl::new_empty!(NetworkType, D));
2100 fidl::decode!(NetworkType, D, val_ref, decoder, inner_offset, inner_depth)?;
2101 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2102 {
2103 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2104 }
2105 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2106 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2107 }
2108 }
2109
2110 next_offset += envelope_size;
2111 _next_ordinal_to_read += 1;
2112 if next_offset >= end_offset {
2113 return Ok(());
2114 }
2115
2116 while _next_ordinal_to_read < 5 {
2118 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2119 _next_ordinal_to_read += 1;
2120 next_offset += envelope_size;
2121 }
2122
2123 let next_out_of_line = decoder.next_out_of_line();
2124 let handles_before = decoder.remaining_handles();
2125 if let Some((inlined, num_bytes, num_handles)) =
2126 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2127 {
2128 let member_inline_size = <fidl::encoding::UnboundedVector<NetworkCapability> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2129 if inlined != (member_inline_size <= 4) {
2130 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2131 }
2132 let inner_offset;
2133 let mut inner_depth = depth.clone();
2134 if inlined {
2135 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2136 inner_offset = next_offset;
2137 } else {
2138 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2139 inner_depth.increment()?;
2140 }
2141 let val_ref = self.capabilities.get_or_insert_with(|| {
2142 fidl::new_empty!(fidl::encoding::UnboundedVector<NetworkCapability>, D)
2143 });
2144 fidl::decode!(
2145 fidl::encoding::UnboundedVector<NetworkCapability>,
2146 D,
2147 val_ref,
2148 decoder,
2149 inner_offset,
2150 inner_depth
2151 )?;
2152 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2153 {
2154 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2155 }
2156 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2157 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2158 }
2159 }
2160
2161 next_offset += envelope_size;
2162 _next_ordinal_to_read += 1;
2163 if next_offset >= end_offset {
2164 return Ok(());
2165 }
2166
2167 while _next_ordinal_to_read < 6 {
2169 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2170 _next_ordinal_to_read += 1;
2171 next_offset += envelope_size;
2172 }
2173
2174 let next_out_of_line = decoder.next_out_of_line();
2175 let handles_before = decoder.remaining_handles();
2176 if let Some((inlined, num_bytes, num_handles)) =
2177 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2178 {
2179 let member_inline_size =
2180 <ConnectivityState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2181 if inlined != (member_inline_size <= 4) {
2182 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2183 }
2184 let inner_offset;
2185 let mut inner_depth = depth.clone();
2186 if inlined {
2187 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2188 inner_offset = next_offset;
2189 } else {
2190 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2191 inner_depth.increment()?;
2192 }
2193 let val_ref =
2194 self.connectivity.get_or_insert_with(|| fidl::new_empty!(ConnectivityState, D));
2195 fidl::decode!(ConnectivityState, D, val_ref, decoder, inner_offset, inner_depth)?;
2196 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2197 {
2198 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2199 }
2200 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2201 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2202 }
2203 }
2204
2205 next_offset += envelope_size;
2206 _next_ordinal_to_read += 1;
2207 if next_offset >= end_offset {
2208 return Ok(());
2209 }
2210
2211 while _next_ordinal_to_read < 7 {
2213 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2214 _next_ordinal_to_read += 1;
2215 next_offset += envelope_size;
2216 }
2217
2218 let next_out_of_line = decoder.next_out_of_line();
2219 let handles_before = decoder.remaining_handles();
2220 if let Some((inlined, num_bytes, num_handles)) =
2221 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2222 {
2223 let member_inline_size =
2224 <fidl::encoding::BoundedString<15> as fidl::encoding::TypeMarker>::inline_size(
2225 decoder.context,
2226 );
2227 if inlined != (member_inline_size <= 4) {
2228 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2229 }
2230 let inner_offset;
2231 let mut inner_depth = depth.clone();
2232 if inlined {
2233 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2234 inner_offset = next_offset;
2235 } else {
2236 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2237 inner_depth.increment()?;
2238 }
2239 let val_ref = self
2240 .name
2241 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<15>, D));
2242 fidl::decode!(
2243 fidl::encoding::BoundedString<15>,
2244 D,
2245 val_ref,
2246 decoder,
2247 inner_offset,
2248 inner_depth
2249 )?;
2250 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2251 {
2252 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2253 }
2254 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2255 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2256 }
2257 }
2258
2259 next_offset += envelope_size;
2260 _next_ordinal_to_read += 1;
2261 if next_offset >= end_offset {
2262 return Ok(());
2263 }
2264
2265 while _next_ordinal_to_read < 8 {
2267 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2268 _next_ordinal_to_read += 1;
2269 next_offset += envelope_size;
2270 }
2271
2272 let next_out_of_line = decoder.next_out_of_line();
2273 let handles_before = decoder.remaining_handles();
2274 if let Some((inlined, num_bytes, num_handles)) =
2275 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2276 {
2277 let member_inline_size =
2278 <ProtoProperties as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2279 if inlined != (member_inline_size <= 4) {
2280 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2281 }
2282 let inner_offset;
2283 let mut inner_depth = depth.clone();
2284 if inlined {
2285 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2286 inner_offset = next_offset;
2287 } else {
2288 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2289 inner_depth.increment()?;
2290 }
2291 let val_ref =
2292 self.has_address.get_or_insert_with(|| fidl::new_empty!(ProtoProperties, D));
2293 fidl::decode!(ProtoProperties, D, val_ref, decoder, inner_offset, inner_depth)?;
2294 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2295 {
2296 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2297 }
2298 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2299 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2300 }
2301 }
2302
2303 next_offset += envelope_size;
2304 _next_ordinal_to_read += 1;
2305 if next_offset >= end_offset {
2306 return Ok(());
2307 }
2308
2309 while _next_ordinal_to_read < 9 {
2311 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2312 _next_ordinal_to_read += 1;
2313 next_offset += envelope_size;
2314 }
2315
2316 let next_out_of_line = decoder.next_out_of_line();
2317 let handles_before = decoder.remaining_handles();
2318 if let Some((inlined, num_bytes, num_handles)) =
2319 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2320 {
2321 let member_inline_size =
2322 <ProtoProperties as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2323 if inlined != (member_inline_size <= 4) {
2324 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2325 }
2326 let inner_offset;
2327 let mut inner_depth = depth.clone();
2328 if inlined {
2329 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2330 inner_offset = next_offset;
2331 } else {
2332 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2333 inner_depth.increment()?;
2334 }
2335 let val_ref = self
2336 .has_default_route
2337 .get_or_insert_with(|| fidl::new_empty!(ProtoProperties, D));
2338 fidl::decode!(ProtoProperties, D, val_ref, decoder, inner_offset, inner_depth)?;
2339 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2340 {
2341 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2342 }
2343 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2344 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2345 }
2346 }
2347
2348 next_offset += envelope_size;
2349
2350 while next_offset < end_offset {
2352 _next_ordinal_to_read += 1;
2353 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2354 next_offset += envelope_size;
2355 }
2356
2357 Ok(())
2358 }
2359 }
2360
2361 impl NetworkDnsServers {
2362 #[inline(always)]
2363 fn max_ordinal_present(&self) -> u64 {
2364 if let Some(_) = self.v6 {
2365 return 2;
2366 }
2367 if let Some(_) = self.v4 {
2368 return 1;
2369 }
2370 0
2371 }
2372 }
2373
2374 impl fidl::encoding::ValueTypeMarker for NetworkDnsServers {
2375 type Borrowed<'a> = &'a Self;
2376 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2377 value
2378 }
2379 }
2380
2381 unsafe impl fidl::encoding::TypeMarker for NetworkDnsServers {
2382 type Owned = Self;
2383
2384 #[inline(always)]
2385 fn inline_align(_context: fidl::encoding::Context) -> usize {
2386 8
2387 }
2388
2389 #[inline(always)]
2390 fn inline_size(_context: fidl::encoding::Context) -> usize {
2391 16
2392 }
2393 }
2394
2395 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetworkDnsServers, D>
2396 for &NetworkDnsServers
2397 {
2398 unsafe fn encode(
2399 self,
2400 encoder: &mut fidl::encoding::Encoder<'_, D>,
2401 offset: usize,
2402 mut depth: fidl::encoding::Depth,
2403 ) -> fidl::Result<()> {
2404 encoder.debug_check_bounds::<NetworkDnsServers>(offset);
2405 let max_ordinal: u64 = self.max_ordinal_present();
2407 encoder.write_num(max_ordinal, offset);
2408 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2409 if max_ordinal == 0 {
2411 return Ok(());
2412 }
2413 depth.increment()?;
2414 let envelope_size = 8;
2415 let bytes_len = max_ordinal as usize * envelope_size;
2416 #[allow(unused_variables)]
2417 let offset = encoder.out_of_line_offset(bytes_len);
2418 let mut _prev_end_offset: usize = 0;
2419 if 1 > max_ordinal {
2420 return Ok(());
2421 }
2422
2423 let cur_offset: usize = (1 - 1) * envelope_size;
2426
2427 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2429
2430 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_net_common::Ipv4Address>, D>(
2435 self.v4.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_net_common::Ipv4Address> as fidl::encoding::ValueTypeMarker>::borrow),
2436 encoder, offset + cur_offset, depth
2437 )?;
2438
2439 _prev_end_offset = cur_offset + envelope_size;
2440 if 2 > max_ordinal {
2441 return Ok(());
2442 }
2443
2444 let cur_offset: usize = (2 - 1) * envelope_size;
2447
2448 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2450
2451 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_net_common::Ipv6Address>, D>(
2456 self.v6.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_net_common::Ipv6Address> as fidl::encoding::ValueTypeMarker>::borrow),
2457 encoder, offset + cur_offset, depth
2458 )?;
2459
2460 _prev_end_offset = cur_offset + envelope_size;
2461
2462 Ok(())
2463 }
2464 }
2465
2466 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkDnsServers {
2467 #[inline(always)]
2468 fn new_empty() -> Self {
2469 Self::default()
2470 }
2471
2472 unsafe fn decode(
2473 &mut self,
2474 decoder: &mut fidl::encoding::Decoder<'_, D>,
2475 offset: usize,
2476 mut depth: fidl::encoding::Depth,
2477 ) -> fidl::Result<()> {
2478 decoder.debug_check_bounds::<Self>(offset);
2479 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2480 None => return Err(fidl::Error::NotNullable),
2481 Some(len) => len,
2482 };
2483 if len == 0 {
2485 return Ok(());
2486 };
2487 depth.increment()?;
2488 let envelope_size = 8;
2489 let bytes_len = len * envelope_size;
2490 let offset = decoder.out_of_line_offset(bytes_len)?;
2491 let mut _next_ordinal_to_read = 0;
2493 let mut next_offset = offset;
2494 let end_offset = offset + bytes_len;
2495 _next_ordinal_to_read += 1;
2496 if next_offset >= end_offset {
2497 return Ok(());
2498 }
2499
2500 while _next_ordinal_to_read < 1 {
2502 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2503 _next_ordinal_to_read += 1;
2504 next_offset += envelope_size;
2505 }
2506
2507 let next_out_of_line = decoder.next_out_of_line();
2508 let handles_before = decoder.remaining_handles();
2509 if let Some((inlined, num_bytes, num_handles)) =
2510 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2511 {
2512 let member_inline_size = <fidl::encoding::UnboundedVector<
2513 fidl_fuchsia_net_common::Ipv4Address,
2514 > as fidl::encoding::TypeMarker>::inline_size(
2515 decoder.context
2516 );
2517 if inlined != (member_inline_size <= 4) {
2518 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2519 }
2520 let inner_offset;
2521 let mut inner_depth = depth.clone();
2522 if inlined {
2523 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2524 inner_offset = next_offset;
2525 } else {
2526 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2527 inner_depth.increment()?;
2528 }
2529 let val_ref = self.v4.get_or_insert_with(|| {
2530 fidl::new_empty!(
2531 fidl::encoding::UnboundedVector<fidl_fuchsia_net_common::Ipv4Address>,
2532 D
2533 )
2534 });
2535 fidl::decode!(
2536 fidl::encoding::UnboundedVector<fidl_fuchsia_net_common::Ipv4Address>,
2537 D,
2538 val_ref,
2539 decoder,
2540 inner_offset,
2541 inner_depth
2542 )?;
2543 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2544 {
2545 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2546 }
2547 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2548 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2549 }
2550 }
2551
2552 next_offset += envelope_size;
2553 _next_ordinal_to_read += 1;
2554 if next_offset >= end_offset {
2555 return Ok(());
2556 }
2557
2558 while _next_ordinal_to_read < 2 {
2560 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2561 _next_ordinal_to_read += 1;
2562 next_offset += envelope_size;
2563 }
2564
2565 let next_out_of_line = decoder.next_out_of_line();
2566 let handles_before = decoder.remaining_handles();
2567 if let Some((inlined, num_bytes, num_handles)) =
2568 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2569 {
2570 let member_inline_size = <fidl::encoding::UnboundedVector<
2571 fidl_fuchsia_net_common::Ipv6Address,
2572 > as fidl::encoding::TypeMarker>::inline_size(
2573 decoder.context
2574 );
2575 if inlined != (member_inline_size <= 4) {
2576 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2577 }
2578 let inner_offset;
2579 let mut inner_depth = depth.clone();
2580 if inlined {
2581 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2582 inner_offset = next_offset;
2583 } else {
2584 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2585 inner_depth.increment()?;
2586 }
2587 let val_ref = self.v6.get_or_insert_with(|| {
2588 fidl::new_empty!(
2589 fidl::encoding::UnboundedVector<fidl_fuchsia_net_common::Ipv6Address>,
2590 D
2591 )
2592 });
2593 fidl::decode!(
2594 fidl::encoding::UnboundedVector<fidl_fuchsia_net_common::Ipv6Address>,
2595 D,
2596 val_ref,
2597 decoder,
2598 inner_offset,
2599 inner_depth
2600 )?;
2601 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2602 {
2603 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2604 }
2605 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2606 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2607 }
2608 }
2609
2610 next_offset += envelope_size;
2611
2612 while next_offset < end_offset {
2614 _next_ordinal_to_read += 1;
2615 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2616 next_offset += envelope_size;
2617 }
2618
2619 Ok(())
2620 }
2621 }
2622
2623 impl StarnixNetworkInfo {
2624 #[inline(always)]
2625 fn max_ordinal_present(&self) -> u64 {
2626 if let Some(_) = self.handle {
2627 return 2;
2628 }
2629 if let Some(_) = self.mark {
2630 return 1;
2631 }
2632 0
2633 }
2634 }
2635
2636 impl fidl::encoding::ValueTypeMarker for StarnixNetworkInfo {
2637 type Borrowed<'a> = &'a Self;
2638 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2639 value
2640 }
2641 }
2642
2643 unsafe impl fidl::encoding::TypeMarker for StarnixNetworkInfo {
2644 type Owned = Self;
2645
2646 #[inline(always)]
2647 fn inline_align(_context: fidl::encoding::Context) -> usize {
2648 8
2649 }
2650
2651 #[inline(always)]
2652 fn inline_size(_context: fidl::encoding::Context) -> usize {
2653 16
2654 }
2655 }
2656
2657 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StarnixNetworkInfo, D>
2658 for &StarnixNetworkInfo
2659 {
2660 unsafe fn encode(
2661 self,
2662 encoder: &mut fidl::encoding::Encoder<'_, D>,
2663 offset: usize,
2664 mut depth: fidl::encoding::Depth,
2665 ) -> fidl::Result<()> {
2666 encoder.debug_check_bounds::<StarnixNetworkInfo>(offset);
2667 let max_ordinal: u64 = self.max_ordinal_present();
2669 encoder.write_num(max_ordinal, offset);
2670 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2671 if max_ordinal == 0 {
2673 return Ok(());
2674 }
2675 depth.increment()?;
2676 let envelope_size = 8;
2677 let bytes_len = max_ordinal as usize * envelope_size;
2678 #[allow(unused_variables)]
2679 let offset = encoder.out_of_line_offset(bytes_len);
2680 let mut _prev_end_offset: usize = 0;
2681 if 1 > max_ordinal {
2682 return Ok(());
2683 }
2684
2685 let cur_offset: usize = (1 - 1) * envelope_size;
2688
2689 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2691
2692 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2697 self.mark.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2698 encoder,
2699 offset + cur_offset,
2700 depth,
2701 )?;
2702
2703 _prev_end_offset = cur_offset + envelope_size;
2704 if 2 > max_ordinal {
2705 return Ok(());
2706 }
2707
2708 let cur_offset: usize = (2 - 1) * envelope_size;
2711
2712 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2714
2715 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2720 self.handle.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2721 encoder,
2722 offset + cur_offset,
2723 depth,
2724 )?;
2725
2726 _prev_end_offset = cur_offset + envelope_size;
2727
2728 Ok(())
2729 }
2730 }
2731
2732 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StarnixNetworkInfo {
2733 #[inline(always)]
2734 fn new_empty() -> Self {
2735 Self::default()
2736 }
2737
2738 unsafe fn decode(
2739 &mut self,
2740 decoder: &mut fidl::encoding::Decoder<'_, D>,
2741 offset: usize,
2742 mut depth: fidl::encoding::Depth,
2743 ) -> fidl::Result<()> {
2744 decoder.debug_check_bounds::<Self>(offset);
2745 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2746 None => return Err(fidl::Error::NotNullable),
2747 Some(len) => len,
2748 };
2749 if len == 0 {
2751 return Ok(());
2752 };
2753 depth.increment()?;
2754 let envelope_size = 8;
2755 let bytes_len = len * envelope_size;
2756 let offset = decoder.out_of_line_offset(bytes_len)?;
2757 let mut _next_ordinal_to_read = 0;
2759 let mut next_offset = offset;
2760 let end_offset = offset + bytes_len;
2761 _next_ordinal_to_read += 1;
2762 if next_offset >= end_offset {
2763 return Ok(());
2764 }
2765
2766 while _next_ordinal_to_read < 1 {
2768 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2769 _next_ordinal_to_read += 1;
2770 next_offset += envelope_size;
2771 }
2772
2773 let next_out_of_line = decoder.next_out_of_line();
2774 let handles_before = decoder.remaining_handles();
2775 if let Some((inlined, num_bytes, num_handles)) =
2776 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2777 {
2778 let member_inline_size =
2779 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2780 if inlined != (member_inline_size <= 4) {
2781 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2782 }
2783 let inner_offset;
2784 let mut inner_depth = depth.clone();
2785 if inlined {
2786 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2787 inner_offset = next_offset;
2788 } else {
2789 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2790 inner_depth.increment()?;
2791 }
2792 let val_ref = self.mark.get_or_insert_with(|| fidl::new_empty!(u32, D));
2793 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2794 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2795 {
2796 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2797 }
2798 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2799 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2800 }
2801 }
2802
2803 next_offset += envelope_size;
2804 _next_ordinal_to_read += 1;
2805 if next_offset >= end_offset {
2806 return Ok(());
2807 }
2808
2809 while _next_ordinal_to_read < 2 {
2811 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2812 _next_ordinal_to_read += 1;
2813 next_offset += envelope_size;
2814 }
2815
2816 let next_out_of_line = decoder.next_out_of_line();
2817 let handles_before = decoder.remaining_handles();
2818 if let Some((inlined, num_bytes, num_handles)) =
2819 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2820 {
2821 let member_inline_size =
2822 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2823 if inlined != (member_inline_size <= 4) {
2824 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2825 }
2826 let inner_offset;
2827 let mut inner_depth = depth.clone();
2828 if inlined {
2829 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2830 inner_offset = next_offset;
2831 } else {
2832 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2833 inner_depth.increment()?;
2834 }
2835 let val_ref = self.handle.get_or_insert_with(|| fidl::new_empty!(u64, D));
2836 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2837 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2838 {
2839 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2840 }
2841 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2842 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2843 }
2844 }
2845
2846 next_offset += envelope_size;
2847
2848 while next_offset < end_offset {
2850 _next_ordinal_to_read += 1;
2851 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2852 next_offset += envelope_size;
2853 }
2854
2855 Ok(())
2856 }
2857 }
2858
2859 impl fidl::encoding::ValueTypeMarker for NetworkInfo {
2860 type Borrowed<'a> = &'a Self;
2861 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2862 value
2863 }
2864 }
2865
2866 unsafe impl fidl::encoding::TypeMarker for NetworkInfo {
2867 type Owned = Self;
2868
2869 #[inline(always)]
2870 fn inline_align(_context: fidl::encoding::Context) -> usize {
2871 8
2872 }
2873
2874 #[inline(always)]
2875 fn inline_size(_context: fidl::encoding::Context) -> usize {
2876 16
2877 }
2878 }
2879
2880 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetworkInfo, D>
2881 for &NetworkInfo
2882 {
2883 #[inline]
2884 unsafe fn encode(
2885 self,
2886 encoder: &mut fidl::encoding::Encoder<'_, D>,
2887 offset: usize,
2888 _depth: fidl::encoding::Depth,
2889 ) -> fidl::Result<()> {
2890 encoder.debug_check_bounds::<NetworkInfo>(offset);
2891 encoder.write_num::<u64>(self.ordinal(), offset);
2892 match self {
2893 NetworkInfo::Starnix(ref val) => {
2894 fidl::encoding::encode_in_envelope::<StarnixNetworkInfo, D>(
2895 <StarnixNetworkInfo as fidl::encoding::ValueTypeMarker>::borrow(val),
2896 encoder,
2897 offset + 8,
2898 _depth,
2899 )
2900 }
2901 NetworkInfo::Fuchsia(ref val) => {
2902 fidl::encoding::encode_in_envelope::<FuchsiaNetworkInfo, D>(
2903 <FuchsiaNetworkInfo as fidl::encoding::ValueTypeMarker>::borrow(val),
2904 encoder,
2905 offset + 8,
2906 _depth,
2907 )
2908 }
2909 NetworkInfo::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
2910 }
2911 }
2912 }
2913
2914 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkInfo {
2915 #[inline(always)]
2916 fn new_empty() -> Self {
2917 Self::__SourceBreaking { unknown_ordinal: 0 }
2918 }
2919
2920 #[inline]
2921 unsafe fn decode(
2922 &mut self,
2923 decoder: &mut fidl::encoding::Decoder<'_, D>,
2924 offset: usize,
2925 mut depth: fidl::encoding::Depth,
2926 ) -> fidl::Result<()> {
2927 decoder.debug_check_bounds::<Self>(offset);
2928 #[allow(unused_variables)]
2929 let next_out_of_line = decoder.next_out_of_line();
2930 let handles_before = decoder.remaining_handles();
2931 let (ordinal, inlined, num_bytes, num_handles) =
2932 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
2933
2934 let member_inline_size = match ordinal {
2935 1 => {
2936 <StarnixNetworkInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context)
2937 }
2938 2 => {
2939 <FuchsiaNetworkInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context)
2940 }
2941 0 => return Err(fidl::Error::UnknownUnionTag),
2942 _ => num_bytes as usize,
2943 };
2944
2945 if inlined != (member_inline_size <= 4) {
2946 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2947 }
2948 let _inner_offset;
2949 if inlined {
2950 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
2951 _inner_offset = offset + 8;
2952 } else {
2953 depth.increment()?;
2954 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2955 }
2956 match ordinal {
2957 1 => {
2958 #[allow(irrefutable_let_patterns)]
2959 if let NetworkInfo::Starnix(_) = self {
2960 } else {
2962 *self = NetworkInfo::Starnix(fidl::new_empty!(StarnixNetworkInfo, D));
2964 }
2965 #[allow(irrefutable_let_patterns)]
2966 if let NetworkInfo::Starnix(ref mut val) = self {
2967 fidl::decode!(StarnixNetworkInfo, D, val, decoder, _inner_offset, depth)?;
2968 } else {
2969 unreachable!()
2970 }
2971 }
2972 2 => {
2973 #[allow(irrefutable_let_patterns)]
2974 if let NetworkInfo::Fuchsia(_) = self {
2975 } else {
2977 *self = NetworkInfo::Fuchsia(fidl::new_empty!(FuchsiaNetworkInfo, D));
2979 }
2980 #[allow(irrefutable_let_patterns)]
2981 if let NetworkInfo::Fuchsia(ref mut val) = self {
2982 fidl::decode!(FuchsiaNetworkInfo, D, val, decoder, _inner_offset, depth)?;
2983 } else {
2984 unreachable!()
2985 }
2986 }
2987 #[allow(deprecated)]
2988 ordinal => {
2989 for _ in 0..num_handles {
2990 decoder.drop_next_handle()?;
2991 }
2992 *self = NetworkInfo::__SourceBreaking { unknown_ordinal: ordinal };
2993 }
2994 }
2995 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
2996 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2997 }
2998 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2999 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3000 }
3001 Ok(())
3002 }
3003 }
3004}