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