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 fuchsia_networks_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
622pub mod network_registry_ordinals {
623 pub const SET_DEFAULT: u64 = 0x787930c67b8cf82c;
624 pub const ADD: u64 = 0x197e70a1cbeab3ad;
625 pub const UPDATE: u64 = 0x3bc790ae5418ff0e;
626 pub const REMOVE: u64 = 0x1302df41dca6379e;
627}
628
629pub mod starnix_networks_ordinals {
630 pub const SET_DEFAULT: u64 = 0x787930c67b8cf82c;
631 pub const ADD: u64 = 0x197e70a1cbeab3ad;
632 pub const UPDATE: u64 = 0x3bc790ae5418ff0e;
633 pub const REMOVE: u64 = 0x1302df41dca6379e;
634}
635
636mod internal {
637 use super::*;
638 unsafe impl fidl::encoding::TypeMarker for NetworkCapability {
639 type Owned = Self;
640
641 #[inline(always)]
642 fn inline_align(_context: fidl::encoding::Context) -> usize {
643 4
644 }
645
646 #[inline(always)]
647 fn inline_size(_context: fidl::encoding::Context) -> usize {
648 4
649 }
650 }
651
652 impl fidl::encoding::ValueTypeMarker for NetworkCapability {
653 type Borrowed<'a> = Self;
654 #[inline(always)]
655 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
656 *value
657 }
658 }
659
660 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
661 for NetworkCapability
662 {
663 #[inline]
664 unsafe fn encode(
665 self,
666 encoder: &mut fidl::encoding::Encoder<'_, D>,
667 offset: usize,
668 _depth: fidl::encoding::Depth,
669 ) -> fidl::Result<()> {
670 encoder.debug_check_bounds::<Self>(offset);
671 encoder.write_num(self.bits(), offset);
672 Ok(())
673 }
674 }
675
676 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkCapability {
677 #[inline(always)]
678 fn new_empty() -> Self {
679 Self::empty()
680 }
681
682 #[inline]
683 unsafe fn decode(
684 &mut self,
685 decoder: &mut fidl::encoding::Decoder<'_, D>,
686 offset: usize,
687 _depth: fidl::encoding::Depth,
688 ) -> fidl::Result<()> {
689 decoder.debug_check_bounds::<Self>(offset);
690 let prim = decoder.read_num::<u32>(offset);
691 *self = Self::from_bits_allow_unknown(prim);
692 Ok(())
693 }
694 }
695 unsafe impl fidl::encoding::TypeMarker for ProtoProperties {
696 type Owned = Self;
697
698 #[inline(always)]
699 fn inline_align(_context: fidl::encoding::Context) -> usize {
700 1
701 }
702
703 #[inline(always)]
704 fn inline_size(_context: fidl::encoding::Context) -> usize {
705 1
706 }
707 }
708
709 impl fidl::encoding::ValueTypeMarker for ProtoProperties {
710 type Borrowed<'a> = Self;
711 #[inline(always)]
712 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
713 *value
714 }
715 }
716
717 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
718 for ProtoProperties
719 {
720 #[inline]
721 unsafe fn encode(
722 self,
723 encoder: &mut fidl::encoding::Encoder<'_, D>,
724 offset: usize,
725 _depth: fidl::encoding::Depth,
726 ) -> fidl::Result<()> {
727 encoder.debug_check_bounds::<Self>(offset);
728 if self.bits() & Self::all().bits() != self.bits() {
729 return Err(fidl::Error::InvalidBitsValue);
730 }
731 encoder.write_num(self.bits(), offset);
732 Ok(())
733 }
734 }
735
736 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProtoProperties {
737 #[inline(always)]
738 fn new_empty() -> Self {
739 Self::empty()
740 }
741
742 #[inline]
743 unsafe fn decode(
744 &mut self,
745 decoder: &mut fidl::encoding::Decoder<'_, D>,
746 offset: usize,
747 _depth: fidl::encoding::Depth,
748 ) -> fidl::Result<()> {
749 decoder.debug_check_bounds::<Self>(offset);
750 let prim = decoder.read_num::<u8>(offset);
751 *self = Self::from_bits(prim).ok_or(fidl::Error::InvalidBitsValue)?;
752 Ok(())
753 }
754 }
755 unsafe impl fidl::encoding::TypeMarker for ConnectivityState {
756 type Owned = Self;
757
758 #[inline(always)]
759 fn inline_align(_context: fidl::encoding::Context) -> usize {
760 std::mem::align_of::<u32>()
761 }
762
763 #[inline(always)]
764 fn inline_size(_context: fidl::encoding::Context) -> usize {
765 std::mem::size_of::<u32>()
766 }
767
768 #[inline(always)]
769 fn encode_is_copy() -> bool {
770 false
771 }
772
773 #[inline(always)]
774 fn decode_is_copy() -> bool {
775 false
776 }
777 }
778
779 impl fidl::encoding::ValueTypeMarker for ConnectivityState {
780 type Borrowed<'a> = Self;
781 #[inline(always)]
782 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
783 *value
784 }
785 }
786
787 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
788 for ConnectivityState
789 {
790 #[inline]
791 unsafe fn encode(
792 self,
793 encoder: &mut fidl::encoding::Encoder<'_, D>,
794 offset: usize,
795 _depth: fidl::encoding::Depth,
796 ) -> fidl::Result<()> {
797 encoder.debug_check_bounds::<Self>(offset);
798 encoder.write_num(self.into_primitive(), offset);
799 Ok(())
800 }
801 }
802
803 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectivityState {
804 #[inline(always)]
805 fn new_empty() -> Self {
806 Self::unknown()
807 }
808
809 #[inline]
810 unsafe fn decode(
811 &mut self,
812 decoder: &mut fidl::encoding::Decoder<'_, D>,
813 offset: usize,
814 _depth: fidl::encoding::Depth,
815 ) -> fidl::Result<()> {
816 decoder.debug_check_bounds::<Self>(offset);
817 let prim = decoder.read_num::<u32>(offset);
818
819 *self = Self::from_primitive_allow_unknown(prim);
820 Ok(())
821 }
822 }
823 unsafe impl fidl::encoding::TypeMarker for NetworkRegistryAddError {
824 type Owned = Self;
825
826 #[inline(always)]
827 fn inline_align(_context: fidl::encoding::Context) -> usize {
828 std::mem::align_of::<u32>()
829 }
830
831 #[inline(always)]
832 fn inline_size(_context: fidl::encoding::Context) -> usize {
833 std::mem::size_of::<u32>()
834 }
835
836 #[inline(always)]
837 fn encode_is_copy() -> bool {
838 false
839 }
840
841 #[inline(always)]
842 fn decode_is_copy() -> bool {
843 false
844 }
845 }
846
847 impl fidl::encoding::ValueTypeMarker for NetworkRegistryAddError {
848 type Borrowed<'a> = Self;
849 #[inline(always)]
850 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
851 *value
852 }
853 }
854
855 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
856 for NetworkRegistryAddError
857 {
858 #[inline]
859 unsafe fn encode(
860 self,
861 encoder: &mut fidl::encoding::Encoder<'_, D>,
862 offset: usize,
863 _depth: fidl::encoding::Depth,
864 ) -> fidl::Result<()> {
865 encoder.debug_check_bounds::<Self>(offset);
866 encoder.write_num(self.into_primitive(), offset);
867 Ok(())
868 }
869 }
870
871 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
872 for NetworkRegistryAddError
873 {
874 #[inline(always)]
875 fn new_empty() -> Self {
876 Self::unknown()
877 }
878
879 #[inline]
880 unsafe fn decode(
881 &mut self,
882 decoder: &mut fidl::encoding::Decoder<'_, D>,
883 offset: usize,
884 _depth: fidl::encoding::Depth,
885 ) -> fidl::Result<()> {
886 decoder.debug_check_bounds::<Self>(offset);
887 let prim = decoder.read_num::<u32>(offset);
888
889 *self = Self::from_primitive_allow_unknown(prim);
890 Ok(())
891 }
892 }
893 unsafe impl fidl::encoding::TypeMarker for NetworkRegistryRemoveError {
894 type Owned = Self;
895
896 #[inline(always)]
897 fn inline_align(_context: fidl::encoding::Context) -> usize {
898 std::mem::align_of::<u32>()
899 }
900
901 #[inline(always)]
902 fn inline_size(_context: fidl::encoding::Context) -> usize {
903 std::mem::size_of::<u32>()
904 }
905
906 #[inline(always)]
907 fn encode_is_copy() -> bool {
908 false
909 }
910
911 #[inline(always)]
912 fn decode_is_copy() -> bool {
913 false
914 }
915 }
916
917 impl fidl::encoding::ValueTypeMarker for NetworkRegistryRemoveError {
918 type Borrowed<'a> = Self;
919 #[inline(always)]
920 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
921 *value
922 }
923 }
924
925 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
926 for NetworkRegistryRemoveError
927 {
928 #[inline]
929 unsafe fn encode(
930 self,
931 encoder: &mut fidl::encoding::Encoder<'_, D>,
932 offset: usize,
933 _depth: fidl::encoding::Depth,
934 ) -> fidl::Result<()> {
935 encoder.debug_check_bounds::<Self>(offset);
936 encoder.write_num(self.into_primitive(), offset);
937 Ok(())
938 }
939 }
940
941 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
942 for NetworkRegistryRemoveError
943 {
944 #[inline(always)]
945 fn new_empty() -> Self {
946 Self::unknown()
947 }
948
949 #[inline]
950 unsafe fn decode(
951 &mut self,
952 decoder: &mut fidl::encoding::Decoder<'_, D>,
953 offset: usize,
954 _depth: fidl::encoding::Depth,
955 ) -> fidl::Result<()> {
956 decoder.debug_check_bounds::<Self>(offset);
957 let prim = decoder.read_num::<u32>(offset);
958
959 *self = Self::from_primitive_allow_unknown(prim);
960 Ok(())
961 }
962 }
963 unsafe impl fidl::encoding::TypeMarker for NetworkRegistrySetDefaultError {
964 type Owned = Self;
965
966 #[inline(always)]
967 fn inline_align(_context: fidl::encoding::Context) -> usize {
968 std::mem::align_of::<u32>()
969 }
970
971 #[inline(always)]
972 fn inline_size(_context: fidl::encoding::Context) -> usize {
973 std::mem::size_of::<u32>()
974 }
975
976 #[inline(always)]
977 fn encode_is_copy() -> bool {
978 false
979 }
980
981 #[inline(always)]
982 fn decode_is_copy() -> bool {
983 false
984 }
985 }
986
987 impl fidl::encoding::ValueTypeMarker for NetworkRegistrySetDefaultError {
988 type Borrowed<'a> = Self;
989 #[inline(always)]
990 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
991 *value
992 }
993 }
994
995 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
996 for NetworkRegistrySetDefaultError
997 {
998 #[inline]
999 unsafe fn encode(
1000 self,
1001 encoder: &mut fidl::encoding::Encoder<'_, D>,
1002 offset: usize,
1003 _depth: fidl::encoding::Depth,
1004 ) -> fidl::Result<()> {
1005 encoder.debug_check_bounds::<Self>(offset);
1006 encoder.write_num(self.into_primitive(), offset);
1007 Ok(())
1008 }
1009 }
1010
1011 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1012 for NetworkRegistrySetDefaultError
1013 {
1014 #[inline(always)]
1015 fn new_empty() -> Self {
1016 Self::unknown()
1017 }
1018
1019 #[inline]
1020 unsafe fn decode(
1021 &mut self,
1022 decoder: &mut fidl::encoding::Decoder<'_, D>,
1023 offset: usize,
1024 _depth: fidl::encoding::Depth,
1025 ) -> fidl::Result<()> {
1026 decoder.debug_check_bounds::<Self>(offset);
1027 let prim = decoder.read_num::<u32>(offset);
1028
1029 *self = Self::from_primitive_allow_unknown(prim);
1030 Ok(())
1031 }
1032 }
1033 unsafe impl fidl::encoding::TypeMarker for NetworkRegistryUpdateError {
1034 type Owned = Self;
1035
1036 #[inline(always)]
1037 fn inline_align(_context: fidl::encoding::Context) -> usize {
1038 std::mem::align_of::<u32>()
1039 }
1040
1041 #[inline(always)]
1042 fn inline_size(_context: fidl::encoding::Context) -> usize {
1043 std::mem::size_of::<u32>()
1044 }
1045
1046 #[inline(always)]
1047 fn encode_is_copy() -> bool {
1048 false
1049 }
1050
1051 #[inline(always)]
1052 fn decode_is_copy() -> bool {
1053 false
1054 }
1055 }
1056
1057 impl fidl::encoding::ValueTypeMarker for NetworkRegistryUpdateError {
1058 type Borrowed<'a> = Self;
1059 #[inline(always)]
1060 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1061 *value
1062 }
1063 }
1064
1065 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1066 for NetworkRegistryUpdateError
1067 {
1068 #[inline]
1069 unsafe fn encode(
1070 self,
1071 encoder: &mut fidl::encoding::Encoder<'_, D>,
1072 offset: usize,
1073 _depth: fidl::encoding::Depth,
1074 ) -> fidl::Result<()> {
1075 encoder.debug_check_bounds::<Self>(offset);
1076 encoder.write_num(self.into_primitive(), offset);
1077 Ok(())
1078 }
1079 }
1080
1081 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1082 for NetworkRegistryUpdateError
1083 {
1084 #[inline(always)]
1085 fn new_empty() -> Self {
1086 Self::unknown()
1087 }
1088
1089 #[inline]
1090 unsafe fn decode(
1091 &mut self,
1092 decoder: &mut fidl::encoding::Decoder<'_, D>,
1093 offset: usize,
1094 _depth: fidl::encoding::Depth,
1095 ) -> fidl::Result<()> {
1096 decoder.debug_check_bounds::<Self>(offset);
1097 let prim = decoder.read_num::<u32>(offset);
1098
1099 *self = Self::from_primitive_allow_unknown(prim);
1100 Ok(())
1101 }
1102 }
1103 unsafe impl fidl::encoding::TypeMarker for NetworkType {
1104 type Owned = Self;
1105
1106 #[inline(always)]
1107 fn inline_align(_context: fidl::encoding::Context) -> usize {
1108 std::mem::align_of::<u32>()
1109 }
1110
1111 #[inline(always)]
1112 fn inline_size(_context: fidl::encoding::Context) -> usize {
1113 std::mem::size_of::<u32>()
1114 }
1115
1116 #[inline(always)]
1117 fn encode_is_copy() -> bool {
1118 false
1119 }
1120
1121 #[inline(always)]
1122 fn decode_is_copy() -> bool {
1123 false
1124 }
1125 }
1126
1127 impl fidl::encoding::ValueTypeMarker for NetworkType {
1128 type Borrowed<'a> = Self;
1129 #[inline(always)]
1130 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1131 *value
1132 }
1133 }
1134
1135 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for NetworkType {
1136 #[inline]
1137 unsafe fn encode(
1138 self,
1139 encoder: &mut fidl::encoding::Encoder<'_, D>,
1140 offset: usize,
1141 _depth: fidl::encoding::Depth,
1142 ) -> fidl::Result<()> {
1143 encoder.debug_check_bounds::<Self>(offset);
1144 encoder.write_num(self.into_primitive(), offset);
1145 Ok(())
1146 }
1147 }
1148
1149 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkType {
1150 #[inline(always)]
1151 fn new_empty() -> Self {
1152 Self::unknown()
1153 }
1154
1155 #[inline]
1156 unsafe fn decode(
1157 &mut self,
1158 decoder: &mut fidl::encoding::Decoder<'_, D>,
1159 offset: usize,
1160 _depth: fidl::encoding::Depth,
1161 ) -> fidl::Result<()> {
1162 decoder.debug_check_bounds::<Self>(offset);
1163 let prim = decoder.read_num::<u32>(offset);
1164
1165 *self = Self::from_primitive_allow_unknown(prim);
1166 Ok(())
1167 }
1168 }
1169
1170 impl fidl::encoding::ValueTypeMarker for NetworkRegistryAddRequest {
1171 type Borrowed<'a> = &'a Self;
1172 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1173 value
1174 }
1175 }
1176
1177 unsafe impl fidl::encoding::TypeMarker for NetworkRegistryAddRequest {
1178 type Owned = Self;
1179
1180 #[inline(always)]
1181 fn inline_align(_context: fidl::encoding::Context) -> usize {
1182 8
1183 }
1184
1185 #[inline(always)]
1186 fn inline_size(_context: fidl::encoding::Context) -> usize {
1187 16
1188 }
1189 }
1190
1191 unsafe impl<D: fidl::encoding::ResourceDialect>
1192 fidl::encoding::Encode<NetworkRegistryAddRequest, D> for &NetworkRegistryAddRequest
1193 {
1194 #[inline]
1195 unsafe fn encode(
1196 self,
1197 encoder: &mut fidl::encoding::Encoder<'_, D>,
1198 offset: usize,
1199 _depth: fidl::encoding::Depth,
1200 ) -> fidl::Result<()> {
1201 encoder.debug_check_bounds::<NetworkRegistryAddRequest>(offset);
1202 fidl::encoding::Encode::<NetworkRegistryAddRequest, D>::encode(
1204 (<Network as fidl::encoding::ValueTypeMarker>::borrow(&self.network),),
1205 encoder,
1206 offset,
1207 _depth,
1208 )
1209 }
1210 }
1211 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Network, D>>
1212 fidl::encoding::Encode<NetworkRegistryAddRequest, D> for (T0,)
1213 {
1214 #[inline]
1215 unsafe fn encode(
1216 self,
1217 encoder: &mut fidl::encoding::Encoder<'_, D>,
1218 offset: usize,
1219 depth: fidl::encoding::Depth,
1220 ) -> fidl::Result<()> {
1221 encoder.debug_check_bounds::<NetworkRegistryAddRequest>(offset);
1222 self.0.encode(encoder, offset + 0, depth)?;
1226 Ok(())
1227 }
1228 }
1229
1230 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1231 for NetworkRegistryAddRequest
1232 {
1233 #[inline(always)]
1234 fn new_empty() -> Self {
1235 Self { network: fidl::new_empty!(Network, D) }
1236 }
1237
1238 #[inline]
1239 unsafe fn decode(
1240 &mut self,
1241 decoder: &mut fidl::encoding::Decoder<'_, D>,
1242 offset: usize,
1243 _depth: fidl::encoding::Depth,
1244 ) -> fidl::Result<()> {
1245 decoder.debug_check_bounds::<Self>(offset);
1246 fidl::decode!(Network, D, &mut self.network, decoder, offset + 0, _depth)?;
1248 Ok(())
1249 }
1250 }
1251
1252 impl fidl::encoding::ValueTypeMarker for NetworkRegistryRemoveRequest {
1253 type Borrowed<'a> = &'a Self;
1254 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1255 value
1256 }
1257 }
1258
1259 unsafe impl fidl::encoding::TypeMarker for NetworkRegistryRemoveRequest {
1260 type Owned = Self;
1261
1262 #[inline(always)]
1263 fn inline_align(_context: fidl::encoding::Context) -> usize {
1264 4
1265 }
1266
1267 #[inline(always)]
1268 fn inline_size(_context: fidl::encoding::Context) -> usize {
1269 4
1270 }
1271 #[inline(always)]
1272 fn encode_is_copy() -> bool {
1273 true
1274 }
1275
1276 #[inline(always)]
1277 fn decode_is_copy() -> bool {
1278 true
1279 }
1280 }
1281
1282 unsafe impl<D: fidl::encoding::ResourceDialect>
1283 fidl::encoding::Encode<NetworkRegistryRemoveRequest, D> for &NetworkRegistryRemoveRequest
1284 {
1285 #[inline]
1286 unsafe fn encode(
1287 self,
1288 encoder: &mut fidl::encoding::Encoder<'_, D>,
1289 offset: usize,
1290 _depth: fidl::encoding::Depth,
1291 ) -> fidl::Result<()> {
1292 encoder.debug_check_bounds::<NetworkRegistryRemoveRequest>(offset);
1293 unsafe {
1294 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1296 (buf_ptr as *mut NetworkRegistryRemoveRequest)
1297 .write_unaligned((self as *const NetworkRegistryRemoveRequest).read());
1298 }
1301 Ok(())
1302 }
1303 }
1304 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
1305 fidl::encoding::Encode<NetworkRegistryRemoveRequest, D> for (T0,)
1306 {
1307 #[inline]
1308 unsafe fn encode(
1309 self,
1310 encoder: &mut fidl::encoding::Encoder<'_, D>,
1311 offset: usize,
1312 depth: fidl::encoding::Depth,
1313 ) -> fidl::Result<()> {
1314 encoder.debug_check_bounds::<NetworkRegistryRemoveRequest>(offset);
1315 self.0.encode(encoder, offset + 0, depth)?;
1319 Ok(())
1320 }
1321 }
1322
1323 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1324 for NetworkRegistryRemoveRequest
1325 {
1326 #[inline(always)]
1327 fn new_empty() -> Self {
1328 Self { network_id: fidl::new_empty!(u32, D) }
1329 }
1330
1331 #[inline]
1332 unsafe fn decode(
1333 &mut self,
1334 decoder: &mut fidl::encoding::Decoder<'_, D>,
1335 offset: usize,
1336 _depth: fidl::encoding::Depth,
1337 ) -> fidl::Result<()> {
1338 decoder.debug_check_bounds::<Self>(offset);
1339 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1340 unsafe {
1343 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1344 }
1345 Ok(())
1346 }
1347 }
1348
1349 impl fidl::encoding::ValueTypeMarker for NetworkRegistrySetDefaultRequest {
1350 type Borrowed<'a> = &'a Self;
1351 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1352 value
1353 }
1354 }
1355
1356 unsafe impl fidl::encoding::TypeMarker for NetworkRegistrySetDefaultRequest {
1357 type Owned = Self;
1358
1359 #[inline(always)]
1360 fn inline_align(_context: fidl::encoding::Context) -> usize {
1361 8
1362 }
1363
1364 #[inline(always)]
1365 fn inline_size(_context: fidl::encoding::Context) -> usize {
1366 16
1367 }
1368 }
1369
1370 unsafe impl<D: fidl::encoding::ResourceDialect>
1371 fidl::encoding::Encode<NetworkRegistrySetDefaultRequest, D>
1372 for &NetworkRegistrySetDefaultRequest
1373 {
1374 #[inline]
1375 unsafe fn encode(
1376 self,
1377 encoder: &mut fidl::encoding::Encoder<'_, D>,
1378 offset: usize,
1379 _depth: fidl::encoding::Depth,
1380 ) -> fidl::Result<()> {
1381 encoder.debug_check_bounds::<NetworkRegistrySetDefaultRequest>(offset);
1382 fidl::encoding::Encode::<NetworkRegistrySetDefaultRequest, D>::encode(
1384 (
1385 <fidl_fuchsia_posix_socket_common::OptionalUint32 as fidl::encoding::ValueTypeMarker>::borrow(&self.network_id),
1386 ),
1387 encoder, offset, _depth
1388 )
1389 }
1390 }
1391 unsafe impl<
1392 D: fidl::encoding::ResourceDialect,
1393 T0: fidl::encoding::Encode<fidl_fuchsia_posix_socket_common::OptionalUint32, D>,
1394 > fidl::encoding::Encode<NetworkRegistrySetDefaultRequest, D> for (T0,)
1395 {
1396 #[inline]
1397 unsafe fn encode(
1398 self,
1399 encoder: &mut fidl::encoding::Encoder<'_, D>,
1400 offset: usize,
1401 depth: fidl::encoding::Depth,
1402 ) -> fidl::Result<()> {
1403 encoder.debug_check_bounds::<NetworkRegistrySetDefaultRequest>(offset);
1404 self.0.encode(encoder, offset + 0, depth)?;
1408 Ok(())
1409 }
1410 }
1411
1412 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1413 for NetworkRegistrySetDefaultRequest
1414 {
1415 #[inline(always)]
1416 fn new_empty() -> Self {
1417 Self {
1418 network_id: fidl::new_empty!(fidl_fuchsia_posix_socket_common::OptionalUint32, D),
1419 }
1420 }
1421
1422 #[inline]
1423 unsafe fn decode(
1424 &mut self,
1425 decoder: &mut fidl::encoding::Decoder<'_, D>,
1426 offset: usize,
1427 _depth: fidl::encoding::Depth,
1428 ) -> fidl::Result<()> {
1429 decoder.debug_check_bounds::<Self>(offset);
1430 fidl::decode!(
1432 fidl_fuchsia_posix_socket_common::OptionalUint32,
1433 D,
1434 &mut self.network_id,
1435 decoder,
1436 offset + 0,
1437 _depth
1438 )?;
1439 Ok(())
1440 }
1441 }
1442
1443 impl fidl::encoding::ValueTypeMarker for NetworkRegistryUpdateRequest {
1444 type Borrowed<'a> = &'a Self;
1445 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1446 value
1447 }
1448 }
1449
1450 unsafe impl fidl::encoding::TypeMarker for NetworkRegistryUpdateRequest {
1451 type Owned = Self;
1452
1453 #[inline(always)]
1454 fn inline_align(_context: fidl::encoding::Context) -> usize {
1455 8
1456 }
1457
1458 #[inline(always)]
1459 fn inline_size(_context: fidl::encoding::Context) -> usize {
1460 16
1461 }
1462 }
1463
1464 unsafe impl<D: fidl::encoding::ResourceDialect>
1465 fidl::encoding::Encode<NetworkRegistryUpdateRequest, D> for &NetworkRegistryUpdateRequest
1466 {
1467 #[inline]
1468 unsafe fn encode(
1469 self,
1470 encoder: &mut fidl::encoding::Encoder<'_, D>,
1471 offset: usize,
1472 _depth: fidl::encoding::Depth,
1473 ) -> fidl::Result<()> {
1474 encoder.debug_check_bounds::<NetworkRegistryUpdateRequest>(offset);
1475 fidl::encoding::Encode::<NetworkRegistryUpdateRequest, D>::encode(
1477 (<Network as fidl::encoding::ValueTypeMarker>::borrow(&self.network),),
1478 encoder,
1479 offset,
1480 _depth,
1481 )
1482 }
1483 }
1484 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Network, D>>
1485 fidl::encoding::Encode<NetworkRegistryUpdateRequest, D> for (T0,)
1486 {
1487 #[inline]
1488 unsafe fn encode(
1489 self,
1490 encoder: &mut fidl::encoding::Encoder<'_, D>,
1491 offset: usize,
1492 depth: fidl::encoding::Depth,
1493 ) -> fidl::Result<()> {
1494 encoder.debug_check_bounds::<NetworkRegistryUpdateRequest>(offset);
1495 self.0.encode(encoder, offset + 0, depth)?;
1499 Ok(())
1500 }
1501 }
1502
1503 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1504 for NetworkRegistryUpdateRequest
1505 {
1506 #[inline(always)]
1507 fn new_empty() -> Self {
1508 Self { network: fidl::new_empty!(Network, D) }
1509 }
1510
1511 #[inline]
1512 unsafe fn decode(
1513 &mut self,
1514 decoder: &mut fidl::encoding::Decoder<'_, D>,
1515 offset: usize,
1516 _depth: fidl::encoding::Depth,
1517 ) -> fidl::Result<()> {
1518 decoder.debug_check_bounds::<Self>(offset);
1519 fidl::decode!(Network, D, &mut self.network, decoder, offset + 0, _depth)?;
1521 Ok(())
1522 }
1523 }
1524
1525 impl FuchsiaNetworkInfo {
1526 #[inline(always)]
1527 fn max_ordinal_present(&self) -> u64 {
1528 0
1529 }
1530 }
1531
1532 impl fidl::encoding::ValueTypeMarker for FuchsiaNetworkInfo {
1533 type Borrowed<'a> = &'a Self;
1534 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1535 value
1536 }
1537 }
1538
1539 unsafe impl fidl::encoding::TypeMarker for FuchsiaNetworkInfo {
1540 type Owned = Self;
1541
1542 #[inline(always)]
1543 fn inline_align(_context: fidl::encoding::Context) -> usize {
1544 8
1545 }
1546
1547 #[inline(always)]
1548 fn inline_size(_context: fidl::encoding::Context) -> usize {
1549 16
1550 }
1551 }
1552
1553 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FuchsiaNetworkInfo, D>
1554 for &FuchsiaNetworkInfo
1555 {
1556 unsafe fn encode(
1557 self,
1558 encoder: &mut fidl::encoding::Encoder<'_, D>,
1559 offset: usize,
1560 mut depth: fidl::encoding::Depth,
1561 ) -> fidl::Result<()> {
1562 encoder.debug_check_bounds::<FuchsiaNetworkInfo>(offset);
1563 let max_ordinal: u64 = self.max_ordinal_present();
1565 encoder.write_num(max_ordinal, offset);
1566 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1567 if max_ordinal == 0 {
1569 return Ok(());
1570 }
1571 depth.increment()?;
1572 let envelope_size = 8;
1573 let bytes_len = max_ordinal as usize * envelope_size;
1574 #[allow(unused_variables)]
1575 let offset = encoder.out_of_line_offset(bytes_len);
1576 let mut _prev_end_offset: usize = 0;
1577
1578 Ok(())
1579 }
1580 }
1581
1582 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FuchsiaNetworkInfo {
1583 #[inline(always)]
1584 fn new_empty() -> Self {
1585 Self::default()
1586 }
1587
1588 unsafe fn decode(
1589 &mut self,
1590 decoder: &mut fidl::encoding::Decoder<'_, D>,
1591 offset: usize,
1592 mut depth: fidl::encoding::Depth,
1593 ) -> fidl::Result<()> {
1594 decoder.debug_check_bounds::<Self>(offset);
1595 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1596 None => return Err(fidl::Error::NotNullable),
1597 Some(len) => len,
1598 };
1599 if len == 0 {
1601 return Ok(());
1602 };
1603 depth.increment()?;
1604 let envelope_size = 8;
1605 let bytes_len = len * envelope_size;
1606 let offset = decoder.out_of_line_offset(bytes_len)?;
1607 let mut _next_ordinal_to_read = 0;
1609 let mut next_offset = offset;
1610 let end_offset = offset + bytes_len;
1611
1612 while next_offset < end_offset {
1614 _next_ordinal_to_read += 1;
1615 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1616 next_offset += envelope_size;
1617 }
1618
1619 Ok(())
1620 }
1621 }
1622
1623 impl Network {
1624 #[inline(always)]
1625 fn max_ordinal_present(&self) -> u64 {
1626 if let Some(_) = self.has_default_route {
1627 return 9;
1628 }
1629 if let Some(_) = self.has_address {
1630 return 8;
1631 }
1632 if let Some(_) = self.name {
1633 return 7;
1634 }
1635 if let Some(_) = self.connectivity {
1636 return 6;
1637 }
1638 if let Some(_) = self.capabilities {
1639 return 5;
1640 }
1641 if let Some(_) = self.network_type {
1642 return 4;
1643 }
1644 if let Some(_) = self.dns_servers {
1645 return 3;
1646 }
1647 if let Some(_) = self.info {
1648 return 2;
1649 }
1650 if let Some(_) = self.network_id {
1651 return 1;
1652 }
1653 0
1654 }
1655 }
1656
1657 impl fidl::encoding::ValueTypeMarker for Network {
1658 type Borrowed<'a> = &'a Self;
1659 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1660 value
1661 }
1662 }
1663
1664 unsafe impl fidl::encoding::TypeMarker for Network {
1665 type Owned = Self;
1666
1667 #[inline(always)]
1668 fn inline_align(_context: fidl::encoding::Context) -> usize {
1669 8
1670 }
1671
1672 #[inline(always)]
1673 fn inline_size(_context: fidl::encoding::Context) -> usize {
1674 16
1675 }
1676 }
1677
1678 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Network, D> for &Network {
1679 unsafe fn encode(
1680 self,
1681 encoder: &mut fidl::encoding::Encoder<'_, D>,
1682 offset: usize,
1683 mut depth: fidl::encoding::Depth,
1684 ) -> fidl::Result<()> {
1685 encoder.debug_check_bounds::<Network>(offset);
1686 let max_ordinal: u64 = self.max_ordinal_present();
1688 encoder.write_num(max_ordinal, offset);
1689 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1690 if max_ordinal == 0 {
1692 return Ok(());
1693 }
1694 depth.increment()?;
1695 let envelope_size = 8;
1696 let bytes_len = max_ordinal as usize * envelope_size;
1697 #[allow(unused_variables)]
1698 let offset = encoder.out_of_line_offset(bytes_len);
1699 let mut _prev_end_offset: usize = 0;
1700 if 1 > max_ordinal {
1701 return Ok(());
1702 }
1703
1704 let cur_offset: usize = (1 - 1) * envelope_size;
1707
1708 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1710
1711 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1716 self.network_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1717 encoder,
1718 offset + cur_offset,
1719 depth,
1720 )?;
1721
1722 _prev_end_offset = cur_offset + envelope_size;
1723 if 2 > max_ordinal {
1724 return Ok(());
1725 }
1726
1727 let cur_offset: usize = (2 - 1) * envelope_size;
1730
1731 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1733
1734 fidl::encoding::encode_in_envelope_optional::<NetworkInfo, D>(
1739 self.info.as_ref().map(<NetworkInfo as fidl::encoding::ValueTypeMarker>::borrow),
1740 encoder,
1741 offset + cur_offset,
1742 depth,
1743 )?;
1744
1745 _prev_end_offset = cur_offset + envelope_size;
1746 if 3 > max_ordinal {
1747 return Ok(());
1748 }
1749
1750 let cur_offset: usize = (3 - 1) * envelope_size;
1753
1754 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1756
1757 fidl::encoding::encode_in_envelope_optional::<NetworkDnsServers, D>(
1762 self.dns_servers
1763 .as_ref()
1764 .map(<NetworkDnsServers as fidl::encoding::ValueTypeMarker>::borrow),
1765 encoder,
1766 offset + cur_offset,
1767 depth,
1768 )?;
1769
1770 _prev_end_offset = cur_offset + envelope_size;
1771 if 4 > max_ordinal {
1772 return Ok(());
1773 }
1774
1775 let cur_offset: usize = (4 - 1) * envelope_size;
1778
1779 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1781
1782 fidl::encoding::encode_in_envelope_optional::<NetworkType, D>(
1787 self.network_type
1788 .as_ref()
1789 .map(<NetworkType as fidl::encoding::ValueTypeMarker>::borrow),
1790 encoder,
1791 offset + cur_offset,
1792 depth,
1793 )?;
1794
1795 _prev_end_offset = cur_offset + envelope_size;
1796 if 5 > max_ordinal {
1797 return Ok(());
1798 }
1799
1800 let cur_offset: usize = (5 - 1) * envelope_size;
1803
1804 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1806
1807 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<NetworkCapability>, D>(
1812 self.capabilities.as_ref().map(<fidl::encoding::UnboundedVector<NetworkCapability> as fidl::encoding::ValueTypeMarker>::borrow),
1813 encoder, offset + cur_offset, depth
1814 )?;
1815
1816 _prev_end_offset = cur_offset + envelope_size;
1817 if 6 > max_ordinal {
1818 return Ok(());
1819 }
1820
1821 let cur_offset: usize = (6 - 1) * envelope_size;
1824
1825 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1827
1828 fidl::encoding::encode_in_envelope_optional::<ConnectivityState, D>(
1833 self.connectivity
1834 .as_ref()
1835 .map(<ConnectivityState as fidl::encoding::ValueTypeMarker>::borrow),
1836 encoder,
1837 offset + cur_offset,
1838 depth,
1839 )?;
1840
1841 _prev_end_offset = cur_offset + envelope_size;
1842 if 7 > max_ordinal {
1843 return Ok(());
1844 }
1845
1846 let cur_offset: usize = (7 - 1) * envelope_size;
1849
1850 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1852
1853 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<15>, D>(
1858 self.name.as_ref().map(
1859 <fidl::encoding::BoundedString<15> as fidl::encoding::ValueTypeMarker>::borrow,
1860 ),
1861 encoder,
1862 offset + cur_offset,
1863 depth,
1864 )?;
1865
1866 _prev_end_offset = cur_offset + envelope_size;
1867 if 8 > max_ordinal {
1868 return Ok(());
1869 }
1870
1871 let cur_offset: usize = (8 - 1) * envelope_size;
1874
1875 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1877
1878 fidl::encoding::encode_in_envelope_optional::<ProtoProperties, D>(
1883 self.has_address
1884 .as_ref()
1885 .map(<ProtoProperties as fidl::encoding::ValueTypeMarker>::borrow),
1886 encoder,
1887 offset + cur_offset,
1888 depth,
1889 )?;
1890
1891 _prev_end_offset = cur_offset + envelope_size;
1892 if 9 > max_ordinal {
1893 return Ok(());
1894 }
1895
1896 let cur_offset: usize = (9 - 1) * envelope_size;
1899
1900 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1902
1903 fidl::encoding::encode_in_envelope_optional::<ProtoProperties, D>(
1908 self.has_default_route
1909 .as_ref()
1910 .map(<ProtoProperties as fidl::encoding::ValueTypeMarker>::borrow),
1911 encoder,
1912 offset + cur_offset,
1913 depth,
1914 )?;
1915
1916 _prev_end_offset = cur_offset + envelope_size;
1917
1918 Ok(())
1919 }
1920 }
1921
1922 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Network {
1923 #[inline(always)]
1924 fn new_empty() -> Self {
1925 Self::default()
1926 }
1927
1928 unsafe fn decode(
1929 &mut self,
1930 decoder: &mut fidl::encoding::Decoder<'_, D>,
1931 offset: usize,
1932 mut depth: fidl::encoding::Depth,
1933 ) -> fidl::Result<()> {
1934 decoder.debug_check_bounds::<Self>(offset);
1935 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1936 None => return Err(fidl::Error::NotNullable),
1937 Some(len) => len,
1938 };
1939 if len == 0 {
1941 return Ok(());
1942 };
1943 depth.increment()?;
1944 let envelope_size = 8;
1945 let bytes_len = len * envelope_size;
1946 let offset = decoder.out_of_line_offset(bytes_len)?;
1947 let mut _next_ordinal_to_read = 0;
1949 let mut next_offset = offset;
1950 let end_offset = offset + bytes_len;
1951 _next_ordinal_to_read += 1;
1952 if next_offset >= end_offset {
1953 return Ok(());
1954 }
1955
1956 while _next_ordinal_to_read < 1 {
1958 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1959 _next_ordinal_to_read += 1;
1960 next_offset += envelope_size;
1961 }
1962
1963 let next_out_of_line = decoder.next_out_of_line();
1964 let handles_before = decoder.remaining_handles();
1965 if let Some((inlined, num_bytes, num_handles)) =
1966 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1967 {
1968 let member_inline_size =
1969 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1970 if inlined != (member_inline_size <= 4) {
1971 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1972 }
1973 let inner_offset;
1974 let mut inner_depth = depth.clone();
1975 if inlined {
1976 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1977 inner_offset = next_offset;
1978 } else {
1979 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1980 inner_depth.increment()?;
1981 }
1982 let val_ref = self.network_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1983 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1984 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1985 {
1986 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1987 }
1988 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1989 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1990 }
1991 }
1992
1993 next_offset += envelope_size;
1994 _next_ordinal_to_read += 1;
1995 if next_offset >= end_offset {
1996 return Ok(());
1997 }
1998
1999 while _next_ordinal_to_read < 2 {
2001 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2002 _next_ordinal_to_read += 1;
2003 next_offset += envelope_size;
2004 }
2005
2006 let next_out_of_line = decoder.next_out_of_line();
2007 let handles_before = decoder.remaining_handles();
2008 if let Some((inlined, num_bytes, num_handles)) =
2009 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2010 {
2011 let member_inline_size =
2012 <NetworkInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2013 if inlined != (member_inline_size <= 4) {
2014 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2015 }
2016 let inner_offset;
2017 let mut inner_depth = depth.clone();
2018 if inlined {
2019 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2020 inner_offset = next_offset;
2021 } else {
2022 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2023 inner_depth.increment()?;
2024 }
2025 let val_ref = self.info.get_or_insert_with(|| fidl::new_empty!(NetworkInfo, D));
2026 fidl::decode!(NetworkInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
2027 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2028 {
2029 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2030 }
2031 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2032 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2033 }
2034 }
2035
2036 next_offset += envelope_size;
2037 _next_ordinal_to_read += 1;
2038 if next_offset >= end_offset {
2039 return Ok(());
2040 }
2041
2042 while _next_ordinal_to_read < 3 {
2044 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2045 _next_ordinal_to_read += 1;
2046 next_offset += envelope_size;
2047 }
2048
2049 let next_out_of_line = decoder.next_out_of_line();
2050 let handles_before = decoder.remaining_handles();
2051 if let Some((inlined, num_bytes, num_handles)) =
2052 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2053 {
2054 let member_inline_size =
2055 <NetworkDnsServers as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2056 if inlined != (member_inline_size <= 4) {
2057 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2058 }
2059 let inner_offset;
2060 let mut inner_depth = depth.clone();
2061 if inlined {
2062 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2063 inner_offset = next_offset;
2064 } else {
2065 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2066 inner_depth.increment()?;
2067 }
2068 let val_ref =
2069 self.dns_servers.get_or_insert_with(|| fidl::new_empty!(NetworkDnsServers, D));
2070 fidl::decode!(NetworkDnsServers, D, val_ref, decoder, inner_offset, inner_depth)?;
2071 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2072 {
2073 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2074 }
2075 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2076 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2077 }
2078 }
2079
2080 next_offset += envelope_size;
2081 _next_ordinal_to_read += 1;
2082 if next_offset >= end_offset {
2083 return Ok(());
2084 }
2085
2086 while _next_ordinal_to_read < 4 {
2088 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2089 _next_ordinal_to_read += 1;
2090 next_offset += envelope_size;
2091 }
2092
2093 let next_out_of_line = decoder.next_out_of_line();
2094 let handles_before = decoder.remaining_handles();
2095 if let Some((inlined, num_bytes, num_handles)) =
2096 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2097 {
2098 let member_inline_size =
2099 <NetworkType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2100 if inlined != (member_inline_size <= 4) {
2101 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2102 }
2103 let inner_offset;
2104 let mut inner_depth = depth.clone();
2105 if inlined {
2106 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2107 inner_offset = next_offset;
2108 } else {
2109 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2110 inner_depth.increment()?;
2111 }
2112 let val_ref =
2113 self.network_type.get_or_insert_with(|| fidl::new_empty!(NetworkType, D));
2114 fidl::decode!(NetworkType, D, val_ref, decoder, inner_offset, inner_depth)?;
2115 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2116 {
2117 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2118 }
2119 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2120 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2121 }
2122 }
2123
2124 next_offset += envelope_size;
2125 _next_ordinal_to_read += 1;
2126 if next_offset >= end_offset {
2127 return Ok(());
2128 }
2129
2130 while _next_ordinal_to_read < 5 {
2132 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2133 _next_ordinal_to_read += 1;
2134 next_offset += envelope_size;
2135 }
2136
2137 let next_out_of_line = decoder.next_out_of_line();
2138 let handles_before = decoder.remaining_handles();
2139 if let Some((inlined, num_bytes, num_handles)) =
2140 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2141 {
2142 let member_inline_size = <fidl::encoding::UnboundedVector<NetworkCapability> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2143 if inlined != (member_inline_size <= 4) {
2144 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2145 }
2146 let inner_offset;
2147 let mut inner_depth = depth.clone();
2148 if inlined {
2149 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2150 inner_offset = next_offset;
2151 } else {
2152 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2153 inner_depth.increment()?;
2154 }
2155 let val_ref = self.capabilities.get_or_insert_with(|| {
2156 fidl::new_empty!(fidl::encoding::UnboundedVector<NetworkCapability>, D)
2157 });
2158 fidl::decode!(
2159 fidl::encoding::UnboundedVector<NetworkCapability>,
2160 D,
2161 val_ref,
2162 decoder,
2163 inner_offset,
2164 inner_depth
2165 )?;
2166 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2167 {
2168 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2169 }
2170 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2171 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2172 }
2173 }
2174
2175 next_offset += envelope_size;
2176 _next_ordinal_to_read += 1;
2177 if next_offset >= end_offset {
2178 return Ok(());
2179 }
2180
2181 while _next_ordinal_to_read < 6 {
2183 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2184 _next_ordinal_to_read += 1;
2185 next_offset += envelope_size;
2186 }
2187
2188 let next_out_of_line = decoder.next_out_of_line();
2189 let handles_before = decoder.remaining_handles();
2190 if let Some((inlined, num_bytes, num_handles)) =
2191 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2192 {
2193 let member_inline_size =
2194 <ConnectivityState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2195 if inlined != (member_inline_size <= 4) {
2196 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2197 }
2198 let inner_offset;
2199 let mut inner_depth = depth.clone();
2200 if inlined {
2201 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2202 inner_offset = next_offset;
2203 } else {
2204 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2205 inner_depth.increment()?;
2206 }
2207 let val_ref =
2208 self.connectivity.get_or_insert_with(|| fidl::new_empty!(ConnectivityState, D));
2209 fidl::decode!(ConnectivityState, D, val_ref, decoder, inner_offset, inner_depth)?;
2210 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2211 {
2212 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2213 }
2214 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2215 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2216 }
2217 }
2218
2219 next_offset += envelope_size;
2220 _next_ordinal_to_read += 1;
2221 if next_offset >= end_offset {
2222 return Ok(());
2223 }
2224
2225 while _next_ordinal_to_read < 7 {
2227 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2228 _next_ordinal_to_read += 1;
2229 next_offset += envelope_size;
2230 }
2231
2232 let next_out_of_line = decoder.next_out_of_line();
2233 let handles_before = decoder.remaining_handles();
2234 if let Some((inlined, num_bytes, num_handles)) =
2235 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2236 {
2237 let member_inline_size =
2238 <fidl::encoding::BoundedString<15> as fidl::encoding::TypeMarker>::inline_size(
2239 decoder.context,
2240 );
2241 if inlined != (member_inline_size <= 4) {
2242 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2243 }
2244 let inner_offset;
2245 let mut inner_depth = depth.clone();
2246 if inlined {
2247 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2248 inner_offset = next_offset;
2249 } else {
2250 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2251 inner_depth.increment()?;
2252 }
2253 let val_ref = self
2254 .name
2255 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<15>, D));
2256 fidl::decode!(
2257 fidl::encoding::BoundedString<15>,
2258 D,
2259 val_ref,
2260 decoder,
2261 inner_offset,
2262 inner_depth
2263 )?;
2264 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2265 {
2266 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2267 }
2268 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2269 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2270 }
2271 }
2272
2273 next_offset += envelope_size;
2274 _next_ordinal_to_read += 1;
2275 if next_offset >= end_offset {
2276 return Ok(());
2277 }
2278
2279 while _next_ordinal_to_read < 8 {
2281 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2282 _next_ordinal_to_read += 1;
2283 next_offset += envelope_size;
2284 }
2285
2286 let next_out_of_line = decoder.next_out_of_line();
2287 let handles_before = decoder.remaining_handles();
2288 if let Some((inlined, num_bytes, num_handles)) =
2289 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2290 {
2291 let member_inline_size =
2292 <ProtoProperties as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2293 if inlined != (member_inline_size <= 4) {
2294 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2295 }
2296 let inner_offset;
2297 let mut inner_depth = depth.clone();
2298 if inlined {
2299 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2300 inner_offset = next_offset;
2301 } else {
2302 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2303 inner_depth.increment()?;
2304 }
2305 let val_ref =
2306 self.has_address.get_or_insert_with(|| fidl::new_empty!(ProtoProperties, D));
2307 fidl::decode!(ProtoProperties, D, val_ref, decoder, inner_offset, inner_depth)?;
2308 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2309 {
2310 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2311 }
2312 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2313 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2314 }
2315 }
2316
2317 next_offset += envelope_size;
2318 _next_ordinal_to_read += 1;
2319 if next_offset >= end_offset {
2320 return Ok(());
2321 }
2322
2323 while _next_ordinal_to_read < 9 {
2325 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2326 _next_ordinal_to_read += 1;
2327 next_offset += envelope_size;
2328 }
2329
2330 let next_out_of_line = decoder.next_out_of_line();
2331 let handles_before = decoder.remaining_handles();
2332 if let Some((inlined, num_bytes, num_handles)) =
2333 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2334 {
2335 let member_inline_size =
2336 <ProtoProperties as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2337 if inlined != (member_inline_size <= 4) {
2338 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2339 }
2340 let inner_offset;
2341 let mut inner_depth = depth.clone();
2342 if inlined {
2343 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2344 inner_offset = next_offset;
2345 } else {
2346 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2347 inner_depth.increment()?;
2348 }
2349 let val_ref = self
2350 .has_default_route
2351 .get_or_insert_with(|| fidl::new_empty!(ProtoProperties, D));
2352 fidl::decode!(ProtoProperties, D, val_ref, decoder, inner_offset, inner_depth)?;
2353 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2354 {
2355 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2356 }
2357 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2358 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2359 }
2360 }
2361
2362 next_offset += envelope_size;
2363
2364 while next_offset < end_offset {
2366 _next_ordinal_to_read += 1;
2367 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2368 next_offset += envelope_size;
2369 }
2370
2371 Ok(())
2372 }
2373 }
2374
2375 impl NetworkDnsServers {
2376 #[inline(always)]
2377 fn max_ordinal_present(&self) -> u64 {
2378 if let Some(_) = self.v6 {
2379 return 2;
2380 }
2381 if let Some(_) = self.v4 {
2382 return 1;
2383 }
2384 0
2385 }
2386 }
2387
2388 impl fidl::encoding::ValueTypeMarker for NetworkDnsServers {
2389 type Borrowed<'a> = &'a Self;
2390 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2391 value
2392 }
2393 }
2394
2395 unsafe impl fidl::encoding::TypeMarker for NetworkDnsServers {
2396 type Owned = Self;
2397
2398 #[inline(always)]
2399 fn inline_align(_context: fidl::encoding::Context) -> usize {
2400 8
2401 }
2402
2403 #[inline(always)]
2404 fn inline_size(_context: fidl::encoding::Context) -> usize {
2405 16
2406 }
2407 }
2408
2409 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetworkDnsServers, D>
2410 for &NetworkDnsServers
2411 {
2412 unsafe fn encode(
2413 self,
2414 encoder: &mut fidl::encoding::Encoder<'_, D>,
2415 offset: usize,
2416 mut depth: fidl::encoding::Depth,
2417 ) -> fidl::Result<()> {
2418 encoder.debug_check_bounds::<NetworkDnsServers>(offset);
2419 let max_ordinal: u64 = self.max_ordinal_present();
2421 encoder.write_num(max_ordinal, offset);
2422 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2423 if max_ordinal == 0 {
2425 return Ok(());
2426 }
2427 depth.increment()?;
2428 let envelope_size = 8;
2429 let bytes_len = max_ordinal as usize * envelope_size;
2430 #[allow(unused_variables)]
2431 let offset = encoder.out_of_line_offset(bytes_len);
2432 let mut _prev_end_offset: usize = 0;
2433 if 1 > max_ordinal {
2434 return Ok(());
2435 }
2436
2437 let cur_offset: usize = (1 - 1) * envelope_size;
2440
2441 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2443
2444 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_net_common::Ipv4Address>, D>(
2449 self.v4.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_net_common::Ipv4Address> as fidl::encoding::ValueTypeMarker>::borrow),
2450 encoder, offset + cur_offset, depth
2451 )?;
2452
2453 _prev_end_offset = cur_offset + envelope_size;
2454 if 2 > max_ordinal {
2455 return Ok(());
2456 }
2457
2458 let cur_offset: usize = (2 - 1) * envelope_size;
2461
2462 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2464
2465 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_net_common::Ipv6Address>, D>(
2470 self.v6.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_net_common::Ipv6Address> as fidl::encoding::ValueTypeMarker>::borrow),
2471 encoder, offset + cur_offset, depth
2472 )?;
2473
2474 _prev_end_offset = cur_offset + envelope_size;
2475
2476 Ok(())
2477 }
2478 }
2479
2480 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkDnsServers {
2481 #[inline(always)]
2482 fn new_empty() -> Self {
2483 Self::default()
2484 }
2485
2486 unsafe fn decode(
2487 &mut self,
2488 decoder: &mut fidl::encoding::Decoder<'_, D>,
2489 offset: usize,
2490 mut depth: fidl::encoding::Depth,
2491 ) -> fidl::Result<()> {
2492 decoder.debug_check_bounds::<Self>(offset);
2493 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2494 None => return Err(fidl::Error::NotNullable),
2495 Some(len) => len,
2496 };
2497 if len == 0 {
2499 return Ok(());
2500 };
2501 depth.increment()?;
2502 let envelope_size = 8;
2503 let bytes_len = len * envelope_size;
2504 let offset = decoder.out_of_line_offset(bytes_len)?;
2505 let mut _next_ordinal_to_read = 0;
2507 let mut next_offset = offset;
2508 let end_offset = offset + bytes_len;
2509 _next_ordinal_to_read += 1;
2510 if next_offset >= end_offset {
2511 return Ok(());
2512 }
2513
2514 while _next_ordinal_to_read < 1 {
2516 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2517 _next_ordinal_to_read += 1;
2518 next_offset += envelope_size;
2519 }
2520
2521 let next_out_of_line = decoder.next_out_of_line();
2522 let handles_before = decoder.remaining_handles();
2523 if let Some((inlined, num_bytes, num_handles)) =
2524 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2525 {
2526 let member_inline_size = <fidl::encoding::UnboundedVector<
2527 fidl_fuchsia_net_common::Ipv4Address,
2528 > as fidl::encoding::TypeMarker>::inline_size(
2529 decoder.context
2530 );
2531 if inlined != (member_inline_size <= 4) {
2532 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2533 }
2534 let inner_offset;
2535 let mut inner_depth = depth.clone();
2536 if inlined {
2537 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2538 inner_offset = next_offset;
2539 } else {
2540 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2541 inner_depth.increment()?;
2542 }
2543 let val_ref = self.v4.get_or_insert_with(|| {
2544 fidl::new_empty!(
2545 fidl::encoding::UnboundedVector<fidl_fuchsia_net_common::Ipv4Address>,
2546 D
2547 )
2548 });
2549 fidl::decode!(
2550 fidl::encoding::UnboundedVector<fidl_fuchsia_net_common::Ipv4Address>,
2551 D,
2552 val_ref,
2553 decoder,
2554 inner_offset,
2555 inner_depth
2556 )?;
2557 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2558 {
2559 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2560 }
2561 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2562 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2563 }
2564 }
2565
2566 next_offset += envelope_size;
2567 _next_ordinal_to_read += 1;
2568 if next_offset >= end_offset {
2569 return Ok(());
2570 }
2571
2572 while _next_ordinal_to_read < 2 {
2574 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2575 _next_ordinal_to_read += 1;
2576 next_offset += envelope_size;
2577 }
2578
2579 let next_out_of_line = decoder.next_out_of_line();
2580 let handles_before = decoder.remaining_handles();
2581 if let Some((inlined, num_bytes, num_handles)) =
2582 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2583 {
2584 let member_inline_size = <fidl::encoding::UnboundedVector<
2585 fidl_fuchsia_net_common::Ipv6Address,
2586 > as fidl::encoding::TypeMarker>::inline_size(
2587 decoder.context
2588 );
2589 if inlined != (member_inline_size <= 4) {
2590 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2591 }
2592 let inner_offset;
2593 let mut inner_depth = depth.clone();
2594 if inlined {
2595 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2596 inner_offset = next_offset;
2597 } else {
2598 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2599 inner_depth.increment()?;
2600 }
2601 let val_ref = self.v6.get_or_insert_with(|| {
2602 fidl::new_empty!(
2603 fidl::encoding::UnboundedVector<fidl_fuchsia_net_common::Ipv6Address>,
2604 D
2605 )
2606 });
2607 fidl::decode!(
2608 fidl::encoding::UnboundedVector<fidl_fuchsia_net_common::Ipv6Address>,
2609 D,
2610 val_ref,
2611 decoder,
2612 inner_offset,
2613 inner_depth
2614 )?;
2615 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2616 {
2617 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2618 }
2619 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2620 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2621 }
2622 }
2623
2624 next_offset += envelope_size;
2625
2626 while next_offset < end_offset {
2628 _next_ordinal_to_read += 1;
2629 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2630 next_offset += envelope_size;
2631 }
2632
2633 Ok(())
2634 }
2635 }
2636
2637 impl StarnixNetworkInfo {
2638 #[inline(always)]
2639 fn max_ordinal_present(&self) -> u64 {
2640 if let Some(_) = self.handle {
2641 return 2;
2642 }
2643 if let Some(_) = self.mark {
2644 return 1;
2645 }
2646 0
2647 }
2648 }
2649
2650 impl fidl::encoding::ValueTypeMarker for StarnixNetworkInfo {
2651 type Borrowed<'a> = &'a Self;
2652 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2653 value
2654 }
2655 }
2656
2657 unsafe impl fidl::encoding::TypeMarker for StarnixNetworkInfo {
2658 type Owned = Self;
2659
2660 #[inline(always)]
2661 fn inline_align(_context: fidl::encoding::Context) -> usize {
2662 8
2663 }
2664
2665 #[inline(always)]
2666 fn inline_size(_context: fidl::encoding::Context) -> usize {
2667 16
2668 }
2669 }
2670
2671 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StarnixNetworkInfo, D>
2672 for &StarnixNetworkInfo
2673 {
2674 unsafe fn encode(
2675 self,
2676 encoder: &mut fidl::encoding::Encoder<'_, D>,
2677 offset: usize,
2678 mut depth: fidl::encoding::Depth,
2679 ) -> fidl::Result<()> {
2680 encoder.debug_check_bounds::<StarnixNetworkInfo>(offset);
2681 let max_ordinal: u64 = self.max_ordinal_present();
2683 encoder.write_num(max_ordinal, offset);
2684 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2685 if max_ordinal == 0 {
2687 return Ok(());
2688 }
2689 depth.increment()?;
2690 let envelope_size = 8;
2691 let bytes_len = max_ordinal as usize * envelope_size;
2692 #[allow(unused_variables)]
2693 let offset = encoder.out_of_line_offset(bytes_len);
2694 let mut _prev_end_offset: usize = 0;
2695 if 1 > max_ordinal {
2696 return Ok(());
2697 }
2698
2699 let cur_offset: usize = (1 - 1) * envelope_size;
2702
2703 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2705
2706 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2711 self.mark.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2712 encoder,
2713 offset + cur_offset,
2714 depth,
2715 )?;
2716
2717 _prev_end_offset = cur_offset + envelope_size;
2718 if 2 > max_ordinal {
2719 return Ok(());
2720 }
2721
2722 let cur_offset: usize = (2 - 1) * envelope_size;
2725
2726 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2728
2729 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2734 self.handle.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2735 encoder,
2736 offset + cur_offset,
2737 depth,
2738 )?;
2739
2740 _prev_end_offset = cur_offset + envelope_size;
2741
2742 Ok(())
2743 }
2744 }
2745
2746 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StarnixNetworkInfo {
2747 #[inline(always)]
2748 fn new_empty() -> Self {
2749 Self::default()
2750 }
2751
2752 unsafe fn decode(
2753 &mut self,
2754 decoder: &mut fidl::encoding::Decoder<'_, D>,
2755 offset: usize,
2756 mut depth: fidl::encoding::Depth,
2757 ) -> fidl::Result<()> {
2758 decoder.debug_check_bounds::<Self>(offset);
2759 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2760 None => return Err(fidl::Error::NotNullable),
2761 Some(len) => len,
2762 };
2763 if len == 0 {
2765 return Ok(());
2766 };
2767 depth.increment()?;
2768 let envelope_size = 8;
2769 let bytes_len = len * envelope_size;
2770 let offset = decoder.out_of_line_offset(bytes_len)?;
2771 let mut _next_ordinal_to_read = 0;
2773 let mut next_offset = offset;
2774 let end_offset = offset + bytes_len;
2775 _next_ordinal_to_read += 1;
2776 if next_offset >= end_offset {
2777 return Ok(());
2778 }
2779
2780 while _next_ordinal_to_read < 1 {
2782 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2783 _next_ordinal_to_read += 1;
2784 next_offset += envelope_size;
2785 }
2786
2787 let next_out_of_line = decoder.next_out_of_line();
2788 let handles_before = decoder.remaining_handles();
2789 if let Some((inlined, num_bytes, num_handles)) =
2790 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2791 {
2792 let member_inline_size =
2793 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2794 if inlined != (member_inline_size <= 4) {
2795 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2796 }
2797 let inner_offset;
2798 let mut inner_depth = depth.clone();
2799 if inlined {
2800 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2801 inner_offset = next_offset;
2802 } else {
2803 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2804 inner_depth.increment()?;
2805 }
2806 let val_ref = self.mark.get_or_insert_with(|| fidl::new_empty!(u32, D));
2807 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2808 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2809 {
2810 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2811 }
2812 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2813 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2814 }
2815 }
2816
2817 next_offset += envelope_size;
2818 _next_ordinal_to_read += 1;
2819 if next_offset >= end_offset {
2820 return Ok(());
2821 }
2822
2823 while _next_ordinal_to_read < 2 {
2825 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2826 _next_ordinal_to_read += 1;
2827 next_offset += envelope_size;
2828 }
2829
2830 let next_out_of_line = decoder.next_out_of_line();
2831 let handles_before = decoder.remaining_handles();
2832 if let Some((inlined, num_bytes, num_handles)) =
2833 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2834 {
2835 let member_inline_size =
2836 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2837 if inlined != (member_inline_size <= 4) {
2838 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2839 }
2840 let inner_offset;
2841 let mut inner_depth = depth.clone();
2842 if inlined {
2843 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2844 inner_offset = next_offset;
2845 } else {
2846 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2847 inner_depth.increment()?;
2848 }
2849 let val_ref = self.handle.get_or_insert_with(|| fidl::new_empty!(u64, D));
2850 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2851 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2852 {
2853 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2854 }
2855 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2856 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2857 }
2858 }
2859
2860 next_offset += envelope_size;
2861
2862 while next_offset < end_offset {
2864 _next_ordinal_to_read += 1;
2865 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2866 next_offset += envelope_size;
2867 }
2868
2869 Ok(())
2870 }
2871 }
2872
2873 impl fidl::encoding::ValueTypeMarker for NetworkInfo {
2874 type Borrowed<'a> = &'a Self;
2875 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2876 value
2877 }
2878 }
2879
2880 unsafe impl fidl::encoding::TypeMarker for NetworkInfo {
2881 type Owned = Self;
2882
2883 #[inline(always)]
2884 fn inline_align(_context: fidl::encoding::Context) -> usize {
2885 8
2886 }
2887
2888 #[inline(always)]
2889 fn inline_size(_context: fidl::encoding::Context) -> usize {
2890 16
2891 }
2892 }
2893
2894 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetworkInfo, D>
2895 for &NetworkInfo
2896 {
2897 #[inline]
2898 unsafe fn encode(
2899 self,
2900 encoder: &mut fidl::encoding::Encoder<'_, D>,
2901 offset: usize,
2902 _depth: fidl::encoding::Depth,
2903 ) -> fidl::Result<()> {
2904 encoder.debug_check_bounds::<NetworkInfo>(offset);
2905 encoder.write_num::<u64>(self.ordinal(), offset);
2906 match self {
2907 NetworkInfo::Starnix(ref val) => {
2908 fidl::encoding::encode_in_envelope::<StarnixNetworkInfo, D>(
2909 <StarnixNetworkInfo as fidl::encoding::ValueTypeMarker>::borrow(val),
2910 encoder,
2911 offset + 8,
2912 _depth,
2913 )
2914 }
2915 NetworkInfo::Fuchsia(ref val) => {
2916 fidl::encoding::encode_in_envelope::<FuchsiaNetworkInfo, D>(
2917 <FuchsiaNetworkInfo as fidl::encoding::ValueTypeMarker>::borrow(val),
2918 encoder,
2919 offset + 8,
2920 _depth,
2921 )
2922 }
2923 NetworkInfo::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
2924 }
2925 }
2926 }
2927
2928 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkInfo {
2929 #[inline(always)]
2930 fn new_empty() -> Self {
2931 Self::__SourceBreaking { unknown_ordinal: 0 }
2932 }
2933
2934 #[inline]
2935 unsafe fn decode(
2936 &mut self,
2937 decoder: &mut fidl::encoding::Decoder<'_, D>,
2938 offset: usize,
2939 mut depth: fidl::encoding::Depth,
2940 ) -> fidl::Result<()> {
2941 decoder.debug_check_bounds::<Self>(offset);
2942 #[allow(unused_variables)]
2943 let next_out_of_line = decoder.next_out_of_line();
2944 let handles_before = decoder.remaining_handles();
2945 let (ordinal, inlined, num_bytes, num_handles) =
2946 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
2947
2948 let member_inline_size = match ordinal {
2949 1 => {
2950 <StarnixNetworkInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context)
2951 }
2952 2 => {
2953 <FuchsiaNetworkInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context)
2954 }
2955 0 => return Err(fidl::Error::UnknownUnionTag),
2956 _ => num_bytes as usize,
2957 };
2958
2959 if inlined != (member_inline_size <= 4) {
2960 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2961 }
2962 let _inner_offset;
2963 if inlined {
2964 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
2965 _inner_offset = offset + 8;
2966 } else {
2967 depth.increment()?;
2968 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2969 }
2970 match ordinal {
2971 1 => {
2972 #[allow(irrefutable_let_patterns)]
2973 if let NetworkInfo::Starnix(_) = self {
2974 } else {
2976 *self = NetworkInfo::Starnix(fidl::new_empty!(StarnixNetworkInfo, D));
2978 }
2979 #[allow(irrefutable_let_patterns)]
2980 if let NetworkInfo::Starnix(ref mut val) = self {
2981 fidl::decode!(StarnixNetworkInfo, D, val, decoder, _inner_offset, depth)?;
2982 } else {
2983 unreachable!()
2984 }
2985 }
2986 2 => {
2987 #[allow(irrefutable_let_patterns)]
2988 if let NetworkInfo::Fuchsia(_) = self {
2989 } else {
2991 *self = NetworkInfo::Fuchsia(fidl::new_empty!(FuchsiaNetworkInfo, D));
2993 }
2994 #[allow(irrefutable_let_patterns)]
2995 if let NetworkInfo::Fuchsia(ref mut val) = self {
2996 fidl::decode!(FuchsiaNetworkInfo, D, val, decoder, _inner_offset, depth)?;
2997 } else {
2998 unreachable!()
2999 }
3000 }
3001 #[allow(deprecated)]
3002 ordinal => {
3003 for _ in 0..num_handles {
3004 decoder.drop_next_handle()?;
3005 }
3006 *self = NetworkInfo::__SourceBreaking { unknown_ordinal: ordinal };
3007 }
3008 }
3009 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
3010 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3011 }
3012 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3013 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3014 }
3015 Ok(())
3016 }
3017 }
3018}