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
11pub const MAX_EXTERNAL_ROUTES: u32 = 32;
12
13pub const MAX_ON_MESH_PREFIXES: u32 = 32;
14
15pub const MAX_PROVISION_URL_LEN: u16 = 64;
16
17pub const MAX_VENDOR_DATA_LEN: u16 = 64;
18
19pub const MAX_VENDOR_MODEL_LEN: u16 = 32;
20
21pub const MAX_VENDOR_NAME_LEN: u16 = 32;
22
23pub const MAX_VENDOR_SW_VER_LEN: u16 = 16;
24
25pub const PSKD_LEN: u16 = 32;
26
27#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
29pub enum Dhcp6PdState {
30 Dhcp6PdStateUnspecified,
31 Dhcp6PdStateDisabled,
33 Dhcp6PdStateStopped,
35 Dhcp6PdStateRunning,
37 Dhcp6PdStateIdle,
39 #[doc(hidden)]
40 __SourceBreaking {
41 unknown_ordinal: u32,
42 },
43}
44
45#[macro_export]
47macro_rules! Dhcp6PdStateUnknown {
48 () => {
49 _
50 };
51}
52
53impl Dhcp6PdState {
54 #[inline]
55 pub fn from_primitive(prim: u32) -> Option<Self> {
56 match prim {
57 0 => Some(Self::Dhcp6PdStateUnspecified),
58 1 => Some(Self::Dhcp6PdStateDisabled),
59 2 => Some(Self::Dhcp6PdStateStopped),
60 3 => Some(Self::Dhcp6PdStateRunning),
61 4 => Some(Self::Dhcp6PdStateIdle),
62 _ => None,
63 }
64 }
65
66 #[inline]
67 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
68 match prim {
69 0 => Self::Dhcp6PdStateUnspecified,
70 1 => Self::Dhcp6PdStateDisabled,
71 2 => Self::Dhcp6PdStateStopped,
72 3 => Self::Dhcp6PdStateRunning,
73 4 => Self::Dhcp6PdStateIdle,
74 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
75 }
76 }
77
78 #[inline]
79 pub fn unknown() -> Self {
80 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
81 }
82
83 #[inline]
84 pub const fn into_primitive(self) -> u32 {
85 match self {
86 Self::Dhcp6PdStateUnspecified => 0,
87 Self::Dhcp6PdStateDisabled => 1,
88 Self::Dhcp6PdStateStopped => 2,
89 Self::Dhcp6PdStateRunning => 3,
90 Self::Dhcp6PdStateIdle => 4,
91 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
92 }
93 }
94
95 #[inline]
96 pub fn is_unknown(&self) -> bool {
97 match self {
98 Self::__SourceBreaking { unknown_ordinal: _ } => true,
99 _ => false,
100 }
101 }
102}
103
104#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
105pub enum Nat64State {
106 Nat64StateUnspecified,
107 Nat64StateDisabled,
108 Nat64StateNotRunning,
109 Nat64StateIdle,
110 Nat64StateActive,
111 #[doc(hidden)]
112 __SourceBreaking {
113 unknown_ordinal: u32,
114 },
115}
116
117#[macro_export]
119macro_rules! Nat64StateUnknown {
120 () => {
121 _
122 };
123}
124
125impl Nat64State {
126 #[inline]
127 pub fn from_primitive(prim: u32) -> Option<Self> {
128 match prim {
129 0 => Some(Self::Nat64StateUnspecified),
130 1 => Some(Self::Nat64StateDisabled),
131 2 => Some(Self::Nat64StateNotRunning),
132 3 => Some(Self::Nat64StateIdle),
133 4 => Some(Self::Nat64StateActive),
134 _ => None,
135 }
136 }
137
138 #[inline]
139 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
140 match prim {
141 0 => Self::Nat64StateUnspecified,
142 1 => Self::Nat64StateDisabled,
143 2 => Self::Nat64StateNotRunning,
144 3 => Self::Nat64StateIdle,
145 4 => Self::Nat64StateActive,
146 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
147 }
148 }
149
150 #[inline]
151 pub fn unknown() -> Self {
152 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
153 }
154
155 #[inline]
156 pub const fn into_primitive(self) -> u32 {
157 match self {
158 Self::Nat64StateUnspecified => 0,
159 Self::Nat64StateDisabled => 1,
160 Self::Nat64StateNotRunning => 2,
161 Self::Nat64StateIdle => 3,
162 Self::Nat64StateActive => 4,
163 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
164 }
165 }
166
167 #[inline]
168 pub fn is_unknown(&self) -> bool {
169 match self {
170 Self::__SourceBreaking { unknown_ordinal: _ } => true,
171 _ => false,
172 }
173 }
174}
175
176#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
180pub enum ProvisionError {
181 CredentialRejected,
186 NetworkNotFound,
189 NetworkAlreadyExists,
192 Canceled,
195 #[doc(hidden)]
196 __SourceBreaking { unknown_ordinal: i32 },
197}
198
199#[macro_export]
201macro_rules! ProvisionErrorUnknown {
202 () => {
203 _
204 };
205}
206
207impl ProvisionError {
208 #[inline]
209 pub fn from_primitive(prim: i32) -> Option<Self> {
210 match prim {
211 1 => Some(Self::CredentialRejected),
212 2 => Some(Self::NetworkNotFound),
213 3 => Some(Self::NetworkAlreadyExists),
214 4 => Some(Self::Canceled),
215 _ => None,
216 }
217 }
218
219 #[inline]
220 pub fn from_primitive_allow_unknown(prim: i32) -> Self {
221 match prim {
222 1 => Self::CredentialRejected,
223 2 => Self::NetworkNotFound,
224 3 => Self::NetworkAlreadyExists,
225 4 => Self::Canceled,
226 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
227 }
228 }
229
230 #[inline]
231 pub fn unknown() -> Self {
232 Self::__SourceBreaking { unknown_ordinal: 0x7fffffff }
233 }
234
235 #[inline]
236 pub const fn into_primitive(self) -> i32 {
237 match self {
238 Self::CredentialRejected => 1,
239 Self::NetworkNotFound => 2,
240 Self::NetworkAlreadyExists => 3,
241 Self::Canceled => 4,
242 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
243 }
244 }
245
246 #[inline]
247 pub fn is_unknown(&self) -> bool {
248 match self {
249 Self::__SourceBreaking { unknown_ordinal: _ } => true,
250 _ => false,
251 }
252 }
253}
254
255#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
257#[repr(i8)]
258pub enum RoutePreference {
259 Low = -1,
261 Medium = 0,
263 High = 1,
265}
266
267impl RoutePreference {
268 #[inline]
269 pub fn from_primitive(prim: i8) -> Option<Self> {
270 match prim {
271 -1 => Some(Self::Low),
272 0 => Some(Self::Medium),
273 1 => Some(Self::High),
274 _ => None,
275 }
276 }
277
278 #[inline]
279 pub const fn into_primitive(self) -> i8 {
280 self as i8
281 }
282}
283
284#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
285#[repr(u32)]
286pub enum SrpServerAddressMode {
287 Unicast = 1,
289 Anycast = 2,
291}
292
293impl SrpServerAddressMode {
294 #[inline]
295 pub fn from_primitive(prim: u32) -> Option<Self> {
296 match prim {
297 1 => Some(Self::Unicast),
298 2 => Some(Self::Anycast),
299 _ => None,
300 }
301 }
302
303 #[inline]
304 pub const fn into_primitive(self) -> u32 {
305 self as u32
306 }
307}
308
309#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
310#[repr(u32)]
311pub enum SrpServerState {
312 Disabled = 1,
314 Running = 2,
316 Stopped = 3,
318}
319
320impl SrpServerState {
321 #[inline]
322 pub fn from_primitive(prim: u32) -> Option<Self> {
323 match prim {
324 1 => Some(Self::Disabled),
325 2 => Some(Self::Running),
326 3 => Some(Self::Stopped),
327 _ => None,
328 }
329 }
330
331 #[inline]
332 pub const fn into_primitive(self) -> u32 {
333 self as u32
334 }
335}
336
337#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
339pub enum UpstreamDnsQueryState {
340 UpstreamdnsQueryStateUnspecified,
341 UpstreamdnsQueryStateEnabled,
342 UpstreamdnsQueryStateDisabled,
343 #[doc(hidden)]
344 __SourceBreaking {
345 unknown_ordinal: u32,
346 },
347}
348
349#[macro_export]
351macro_rules! UpstreamDnsQueryStateUnknown {
352 () => {
353 _
354 };
355}
356
357impl UpstreamDnsQueryState {
358 #[inline]
359 pub fn from_primitive(prim: u32) -> Option<Self> {
360 match prim {
361 0 => Some(Self::UpstreamdnsQueryStateUnspecified),
362 1 => Some(Self::UpstreamdnsQueryStateEnabled),
363 2 => Some(Self::UpstreamdnsQueryStateDisabled),
364 _ => None,
365 }
366 }
367
368 #[inline]
369 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
370 match prim {
371 0 => Self::UpstreamdnsQueryStateUnspecified,
372 1 => Self::UpstreamdnsQueryStateEnabled,
373 2 => Self::UpstreamdnsQueryStateDisabled,
374 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
375 }
376 }
377
378 #[inline]
379 pub fn unknown() -> Self {
380 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
381 }
382
383 #[inline]
384 pub const fn into_primitive(self) -> u32 {
385 match self {
386 Self::UpstreamdnsQueryStateUnspecified => 0,
387 Self::UpstreamdnsQueryStateEnabled => 1,
388 Self::UpstreamdnsQueryStateDisabled => 2,
389 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
390 }
391 }
392
393 #[inline]
394 pub fn is_unknown(&self) -> bool {
395 match self {
396 Self::__SourceBreaking { unknown_ordinal: _ } => true,
397 _ => false,
398 }
399 }
400}
401
402#[derive(Clone, Debug, PartialEq)]
403pub struct BeaconInfoStreamNextResponse {
404 pub beacons: Vec<BeaconInfo>,
405}
406
407impl fidl::Persistable for BeaconInfoStreamNextResponse {}
408
409#[derive(Clone, Debug, PartialEq)]
410pub struct DeviceGetSupportedChannelsResponse {
411 pub channels_info: Vec<ChannelInfo>,
412}
413
414impl fidl::Persistable for DeviceGetSupportedChannelsResponse {}
415
416#[derive(Clone, Debug, PartialEq)]
417pub struct DeviceRouteExtraGetLocalExternalRoutesResponse {
418 pub external_routes: Vec<ExternalRoute>,
419}
420
421impl fidl::Persistable for DeviceRouteExtraGetLocalExternalRoutesResponse {}
422
423#[derive(Clone, Debug, PartialEq)]
424pub struct DeviceRouteExtraGetLocalOnMeshPrefixesResponse {
425 pub prefixes: Vec<OnMeshPrefix>,
426}
427
428impl fidl::Persistable for DeviceRouteExtraGetLocalOnMeshPrefixesResponse {}
429
430#[derive(Clone, Debug, PartialEq)]
431pub struct DeviceRouteRegisterExternalRouteRequest {
432 pub external_route: ExternalRoute,
433}
434
435impl fidl::Persistable for DeviceRouteRegisterExternalRouteRequest {}
436
437#[derive(Clone, Debug, PartialEq)]
438pub struct DeviceRouteRegisterOnMeshPrefixRequest {
439 pub prefix: OnMeshPrefix,
440}
441
442impl fidl::Persistable for DeviceRouteRegisterOnMeshPrefixRequest {}
443
444#[derive(Clone, Debug, PartialEq)]
445pub struct DeviceRouteUnregisterExternalRouteRequest {
446 pub subnet: fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
447}
448
449impl fidl::Persistable for DeviceRouteUnregisterExternalRouteRequest {}
450
451#[derive(Clone, Debug, PartialEq)]
452pub struct DeviceRouteUnregisterOnMeshPrefixRequest {
453 pub subnet: fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
454}
455
456impl fidl::Persistable for DeviceRouteUnregisterOnMeshPrefixRequest {}
457
458#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
459#[repr(C)]
460pub struct LegacyJoiningMakeJoinableRequest {
461 pub duration: i64,
462 pub port: u16,
463}
464
465impl fidl::Persistable for LegacyJoiningMakeJoinableRequest {}
466
467#[derive(Clone, Debug, PartialEq)]
468pub struct ProvisioningMonitorWatchProgressResponse {
469 pub progress: ProvisioningProgress,
470}
471
472impl fidl::Persistable for ProvisioningMonitorWatchProgressResponse {}
473
474#[derive(Clone, Debug, PartialEq)]
475pub struct TelemetryProviderGetTelemetryResponse {
476 pub telemetry: Telemetry,
477}
478
479impl fidl::Persistable for TelemetryProviderGetTelemetryResponse {}
480
481#[derive(Clone, Debug, Default, PartialEq)]
482pub struct BeaconInfo {
483 pub address: Option<fidl_fuchsia_lowpan__common::MacAddress>,
485 pub identity: Option<fidl_fuchsia_lowpan_device__common::Identity>,
488 pub rssi: Option<i8>,
493 pub lqi: Option<u8>,
507 #[doc(hidden)]
508 pub __source_breaking: fidl::marker::SourceBreaking,
509}
510
511impl fidl::Persistable for BeaconInfo {}
512
513#[derive(Clone, Debug, Default, PartialEq)]
515pub struct BorderRoutingCounters {
516 pub inbound_unicast_packets: Option<u64>,
520 pub inbound_unicast_bytes: Option<u64>,
524 pub inbound_multicast_packets: Option<u64>,
528 pub inbound_multicast_bytes: Option<u64>,
532 pub outbound_unicast_packets: Option<u64>,
536 pub outbound_unicast_bytes: Option<u64>,
540 pub outbound_multicast_packets: Option<u64>,
544 pub outbound_multicast_bytes: Option<u64>,
548 pub ra_rx: Option<u32>,
552 pub ra_tx_success: Option<u32>,
556 pub ra_tx_failure: Option<u32>,
560 pub rs_rx: Option<u32>,
564 pub rs_tx_success: Option<u32>,
568 pub rs_tx_failure: Option<u32>,
572 pub inbound_internet_packets: Option<u64>,
576 pub inbound_internet_bytes: Option<u64>,
580 pub outbound_internet_packets: Option<u64>,
584 pub outbound_internet_bytes: Option<u64>,
588 #[doc(hidden)]
589 pub __source_breaking: fidl::marker::SourceBreaking,
590}
591
592impl fidl::Persistable for BorderRoutingCounters {}
593
594#[derive(Clone, Debug, Default, PartialEq)]
596pub struct BorderRoutingNat64State {
597 pub prefix_manager_state: Option<Nat64State>,
599 pub translator_state: Option<Nat64State>,
601 #[doc(hidden)]
602 pub __source_breaking: fidl::marker::SourceBreaking,
603}
604
605impl fidl::Persistable for BorderRoutingNat64State {}
606
607#[derive(Clone, Debug, Default, PartialEq)]
608pub struct ChannelInfo {
609 pub index: Option<u16>,
612 pub id: Option<String>,
628 pub max_transmit_power_dbm: Option<i8>,
631 pub spectrum_center_frequency_hz: Option<u64>,
654 pub spectrum_bandwidth_hz: Option<u64>,
661 pub masked_by_regulatory_domain: Option<bool>,
665 #[doc(hidden)]
666 pub __source_breaking: fidl::marker::SourceBreaking,
667}
668
669impl fidl::Persistable for ChannelInfo {}
670
671#[derive(Clone, Debug, Default, PartialEq)]
673pub struct Dhcp6PdInfo {
674 pub dhcp6pd_state: Option<Dhcp6PdState>,
678 pub pd_processed_ra_info: Option<PdProcessedRaInfo>,
682 pub hashed_pd_prefix: Option<Vec<u8>>,
686 #[doc(hidden)]
687 pub __source_breaking: fidl::marker::SourceBreaking,
688}
689
690impl fidl::Persistable for Dhcp6PdInfo {}
691
692#[derive(Clone, Debug, Default, PartialEq)]
694pub struct DnssdCounters {
695 pub success_response: Option<u32>,
699 pub server_failure_response: Option<u32>,
703 pub format_error_response: Option<u32>,
707 pub name_error_response: Option<u32>,
711 pub not_implemented_response: Option<u32>,
715 pub other_response: Option<u32>,
719 pub resolved_by_srp: Option<u32>,
723 pub upstream_dns_counters: Option<UpstreamDnsCounters>,
727 #[doc(hidden)]
728 pub __source_breaking: fidl::marker::SourceBreaking,
729}
730
731impl fidl::Persistable for DnssdCounters {}
732
733#[derive(Clone, Debug, Default, PartialEq)]
737pub struct ExternalRoute {
738 pub subnet: Option<fidl_fuchsia_net__common::Ipv6AddressWithPrefix>,
740 pub route_preference: Option<RoutePreference>,
747 pub stable: Option<bool>,
756 #[doc(hidden)]
757 pub __source_breaking: fidl::marker::SourceBreaking,
758}
759
760impl fidl::Persistable for ExternalRoute {}
761
762#[derive(Clone, Debug, Default, PartialEq)]
767pub struct JoinerCommissioningParams {
768 pub pskd: Option<String>,
770 pub provisioning_url: Option<String>,
772 pub vendor_name: Option<String>,
774 pub vendor_model: Option<String>,
776 pub vendor_sw_version: Option<String>,
778 pub vendor_data_string: Option<String>,
780 #[doc(hidden)]
781 pub __source_breaking: fidl::marker::SourceBreaking,
782}
783
784impl fidl::Persistable for JoinerCommissioningParams {}
785
786#[derive(Clone, Debug, Default, PartialEq)]
788pub struct LeaderData {
789 pub partition_id: Option<u32>,
793 pub weight: Option<u8>,
797 pub network_data_version: Option<u8>,
801 pub stable_network_data_version: Option<u8>,
805 pub router_id: Option<u8>,
809 #[doc(hidden)]
810 pub __source_breaking: fidl::marker::SourceBreaking,
811}
812
813impl fidl::Persistable for LeaderData {}
814
815#[derive(Clone, Debug, Default, PartialEq)]
817pub struct LinkMetricsEntry {
818 pub link_margin: Option<u8>,
820 pub rssi: Option<i8>,
822 #[doc(hidden)]
823 pub __source_breaking: fidl::marker::SourceBreaking,
824}
825
826impl fidl::Persistable for LinkMetricsEntry {}
827
828#[derive(Clone, Debug, Default, PartialEq)]
829pub struct Nat64ErrorCounters {
830 pub unknown: Option<Nat64PacketCounters>,
832 pub illegal_packet: Option<Nat64PacketCounters>,
834 pub unsupported_protocol: Option<Nat64PacketCounters>,
836 pub no_mapping: Option<Nat64PacketCounters>,
838 #[doc(hidden)]
839 pub __source_breaking: fidl::marker::SourceBreaking,
840}
841
842impl fidl::Persistable for Nat64ErrorCounters {}
843
844#[derive(Clone, Debug, Default, PartialEq)]
845pub struct Nat64Info {
846 pub nat64_state: Option<BorderRoutingNat64State>,
848 pub nat64_mappings: Option<Vec<Nat64Mapping>>,
850 pub nat64_error_counters: Option<Nat64ErrorCounters>,
852 pub nat64_protocol_counters: Option<Nat64ProtocolCounters>,
854 #[doc(hidden)]
855 pub __source_breaking: fidl::marker::SourceBreaking,
856}
857
858impl fidl::Persistable for Nat64Info {}
859
860#[derive(Clone, Debug, Default, PartialEq)]
862pub struct Nat64Mapping {
863 pub mapping_id: Option<u64>,
865 pub ip4_addr: Option<Vec<u8>>,
867 pub ip6_addr: Option<Vec<u8>>,
869 pub remaining_time_ms: Option<u32>,
871 pub counters: Option<Nat64ProtocolCounters>,
873 #[doc(hidden)]
874 pub __source_breaking: fidl::marker::SourceBreaking,
875}
876
877impl fidl::Persistable for Nat64Mapping {}
878
879#[derive(Clone, Debug, Default, PartialEq)]
880pub struct Nat64PacketCounters {
881 pub ipv4_to_ipv6_packets: Option<u64>,
883 pub ipv6_to_ipv4_packets: Option<u64>,
885 #[doc(hidden)]
886 pub __source_breaking: fidl::marker::SourceBreaking,
887}
888
889impl fidl::Persistable for Nat64PacketCounters {}
890
891#[derive(Clone, Debug, Default, PartialEq)]
892pub struct Nat64ProtocolCounters {
893 pub tcp: Option<Nat64TrafficCounters>,
895 pub udp: Option<Nat64TrafficCounters>,
897 pub icmp: Option<Nat64TrafficCounters>,
899 pub total: Option<Nat64TrafficCounters>,
901 #[doc(hidden)]
902 pub __source_breaking: fidl::marker::SourceBreaking,
903}
904
905impl fidl::Persistable for Nat64ProtocolCounters {}
906
907#[derive(Clone, Debug, Default, PartialEq)]
908pub struct Nat64TrafficCounters {
909 pub ipv4_to_ipv6_packets: Option<u64>,
911 pub ipv4_to_ipv6_bytes: Option<u64>,
913 pub ipv6_to_ipv4_packets: Option<u64>,
915 pub ipv6_to_ipv4_bytes: Option<u64>,
917 #[doc(hidden)]
918 pub __source_breaking: fidl::marker::SourceBreaking,
919}
920
921impl fidl::Persistable for Nat64TrafficCounters {}
922
923#[derive(Clone, Debug, Default, PartialEq)]
925pub struct NetworkScanParameters {
926 pub channels: Option<Vec<u16>>,
930 pub tx_power_dbm: Option<i8>,
941 #[doc(hidden)]
942 pub __source_breaking: fidl::marker::SourceBreaking,
943}
944
945impl fidl::Persistable for NetworkScanParameters {}
946
947#[derive(Clone, Debug, Default, PartialEq)]
951pub struct OnMeshPrefix {
952 pub subnet: Option<fidl_fuchsia_net__common::Ipv6AddressWithPrefix>,
954 pub default_route_preference: Option<RoutePreference>,
962 pub stable: Option<bool>,
971 pub slaac_preferred: Option<bool>,
980 pub slaac_valid: Option<bool>,
989 #[doc(hidden)]
990 pub __source_breaking: fidl::marker::SourceBreaking,
991}
992
993impl fidl::Persistable for OnMeshPrefix {}
994
995#[derive(Clone, Debug, Default, PartialEq)]
997pub struct PdProcessedRaInfo {
998 pub num_platform_ra_received: Option<u32>,
1002 pub num_platform_pio_processed: Option<u32>,
1006 pub last_platform_ra_msec: Option<u32>,
1010 #[doc(hidden)]
1011 pub __source_breaking: fidl::marker::SourceBreaking,
1012}
1013
1014impl fidl::Persistable for PdProcessedRaInfo {}
1015
1016#[derive(Clone, Debug, Default, PartialEq)]
1018pub struct SrpServerInfo {
1019 pub state: Option<SrpServerState>,
1023 pub port: Option<u16>,
1027 pub address_mode: Option<SrpServerAddressMode>,
1031 pub response_counters: Option<SrpServerResponseCounters>,
1035 pub hosts_registration: Option<SrpServerRegistration>,
1039 pub services_registration: Option<SrpServerRegistration>,
1043 #[doc(hidden)]
1044 pub __source_breaking: fidl::marker::SourceBreaking,
1045}
1046
1047impl fidl::Persistable for SrpServerInfo {}
1048
1049#[derive(Clone, Debug, Default, PartialEq)]
1051pub struct SrpServerRegistration {
1052 pub fresh_count: Option<u32>,
1056 pub deleted_count: Option<u32>,
1060 pub lease_time_total: Option<i64>,
1064 pub key_lease_time_total: Option<i64>,
1068 pub remaining_lease_time_total: Option<i64>,
1072 pub remaining_key_lease_time_total: Option<i64>,
1076 #[doc(hidden)]
1077 pub __source_breaking: fidl::marker::SourceBreaking,
1078}
1079
1080impl fidl::Persistable for SrpServerRegistration {}
1081
1082#[derive(Clone, Debug, Default, PartialEq)]
1083pub struct SrpServerResponseCounters {
1084 pub success_response: Option<u32>,
1088 pub server_failure_response: Option<u32>,
1092 pub format_error_response: Option<u32>,
1096 pub name_exists_response: Option<u32>,
1100 pub refused_response: Option<u32>,
1104 pub other_response: Option<u32>,
1108 #[doc(hidden)]
1109 pub __source_breaking: fidl::marker::SourceBreaking,
1110}
1111
1112impl fidl::Persistable for SrpServerResponseCounters {}
1113
1114#[derive(Clone, Debug, Default, PartialEq)]
1121pub struct Telemetry {
1122 pub rssi: Option<i8>,
1124 pub tx_power: Option<i8>,
1126 pub channel_index: Option<u16>,
1128 pub partition_id: Option<u32>,
1130 pub stack_version: Option<String>,
1132 pub rcp_version: Option<String>,
1134 pub thread_link_mode: Option<u8>,
1140 pub thread_router_id: Option<u8>,
1144 pub thread_rloc: Option<u16>,
1148 pub thread_network_data_version: Option<u8>,
1152 pub thread_stable_network_data_version: Option<u8>,
1156 pub thread_network_data: Option<Vec<u8>>,
1161 pub thread_stable_network_data: Option<Vec<u8>>,
1166 pub thread_border_routing_counters: Option<BorderRoutingCounters>,
1170 pub srp_server_info: Option<SrpServerInfo>,
1174 pub dnssd_counters: Option<DnssdCounters>,
1178 pub leader_data: Option<LeaderData>,
1182 pub uptime: Option<i64>,
1186 pub nat64_info: Option<Nat64Info>,
1190 pub trel_counters: Option<TrelCounters>,
1194 pub trel_peers_info: Option<TrelPeersInfo>,
1198 pub upstream_dns_info: Option<UpstreamDnsInfo>,
1202 pub dhcp6pd_info: Option<Dhcp6PdInfo>,
1206 pub link_metrics_entries: Option<Vec<LinkMetricsEntry>>,
1210 pub border_agent_counters: Option<fidl_fuchsia_lowpan_device__common::BorderAgentCounters>,
1214 pub multi_ail_detected: Option<bool>,
1218 pub extended_pan_id: Option<u64>,
1223 #[doc(hidden)]
1224 pub __source_breaking: fidl::marker::SourceBreaking,
1225}
1226
1227impl fidl::Persistable for Telemetry {}
1228
1229#[derive(Clone, Debug, Default, PartialEq)]
1233pub struct TrelCounters {
1234 pub rx_bytes: Option<u64>,
1236 pub rx_packets: Option<u64>,
1238 pub tx_bytes: Option<u64>,
1240 pub tx_failure: Option<u64>,
1242 pub tx_packets: Option<u64>,
1244 #[doc(hidden)]
1245 pub __source_breaking: fidl::marker::SourceBreaking,
1246}
1247
1248impl fidl::Persistable for TrelCounters {}
1249
1250#[derive(Clone, Debug, Default, PartialEq)]
1255pub struct TrelPeersInfo {
1256 pub num_trel_peers: Option<u16>,
1260 #[doc(hidden)]
1261 pub __source_breaking: fidl::marker::SourceBreaking,
1262}
1263
1264impl fidl::Persistable for TrelPeersInfo {}
1265
1266#[derive(Clone, Debug, Default, PartialEq)]
1270pub struct UpstreamDnsCounters {
1271 pub queries: Option<u32>,
1275 pub responses: Option<u32>,
1279 pub failures: Option<u32>,
1283 #[doc(hidden)]
1284 pub __source_breaking: fidl::marker::SourceBreaking,
1285}
1286
1287impl fidl::Persistable for UpstreamDnsCounters {}
1288
1289#[derive(Clone, Debug, Default, PartialEq)]
1294pub struct UpstreamDnsInfo {
1295 pub upstream_dns_query_state: Option<UpstreamDnsQueryState>,
1299 #[doc(hidden)]
1300 pub __source_breaking: fidl::marker::SourceBreaking,
1301}
1302
1303impl fidl::Persistable for UpstreamDnsInfo {}
1304
1305#[derive(Clone, Debug)]
1307pub enum JoinParams {
1308 ProvisioningParameter(fidl_fuchsia_lowpan_device__common::ProvisioningParams),
1310 JoinerParameter(JoinerCommissioningParams),
1316 #[doc(hidden)]
1317 __SourceBreaking { unknown_ordinal: u64 },
1318}
1319
1320#[macro_export]
1322macro_rules! JoinParamsUnknown {
1323 () => {
1324 _
1325 };
1326}
1327
1328impl PartialEq for JoinParams {
1330 fn eq(&self, other: &Self) -> bool {
1331 match (self, other) {
1332 (Self::ProvisioningParameter(x), Self::ProvisioningParameter(y)) => *x == *y,
1333 (Self::JoinerParameter(x), Self::JoinerParameter(y)) => *x == *y,
1334 _ => false,
1335 }
1336 }
1337}
1338
1339impl JoinParams {
1340 #[inline]
1341 pub fn ordinal(&self) -> u64 {
1342 match *self {
1343 Self::ProvisioningParameter(_) => 1,
1344 Self::JoinerParameter(_) => 2,
1345 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1346 }
1347 }
1348
1349 #[inline]
1350 pub fn unknown_variant_for_testing() -> Self {
1351 Self::__SourceBreaking { unknown_ordinal: 0 }
1352 }
1353
1354 #[inline]
1355 pub fn is_unknown(&self) -> bool {
1356 match self {
1357 Self::__SourceBreaking { .. } => true,
1358 _ => false,
1359 }
1360 }
1361}
1362
1363impl fidl::Persistable for JoinParams {}
1364
1365#[derive(Clone, Debug)]
1369pub enum ProvisioningProgress {
1370 Progress(f32),
1372 Identity(fidl_fuchsia_lowpan_device__common::Identity),
1374 #[doc(hidden)]
1375 __SourceBreaking { unknown_ordinal: u64 },
1376}
1377
1378#[macro_export]
1380macro_rules! ProvisioningProgressUnknown {
1381 () => {
1382 _
1383 };
1384}
1385
1386impl PartialEq for ProvisioningProgress {
1388 fn eq(&self, other: &Self) -> bool {
1389 match (self, other) {
1390 (Self::Progress(x), Self::Progress(y)) => *x == *y,
1391 (Self::Identity(x), Self::Identity(y)) => *x == *y,
1392 _ => false,
1393 }
1394 }
1395}
1396
1397impl ProvisioningProgress {
1398 #[inline]
1399 pub fn ordinal(&self) -> u64 {
1400 match *self {
1401 Self::Progress(_) => 1,
1402 Self::Identity(_) => 2,
1403 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1404 }
1405 }
1406
1407 #[inline]
1408 pub fn unknown_variant_for_testing() -> Self {
1409 Self::__SourceBreaking { unknown_ordinal: 0 }
1410 }
1411
1412 #[inline]
1413 pub fn is_unknown(&self) -> bool {
1414 match self {
1415 Self::__SourceBreaking { .. } => true,
1416 _ => false,
1417 }
1418 }
1419}
1420
1421impl fidl::Persistable for ProvisioningProgress {}
1422
1423pub mod beacon_info_stream_ordinals {
1424 pub const NEXT: u64 = 0x367a557363a340b6;
1425}
1426
1427pub mod device_ordinals {
1428 pub const GET_SUPPORTED_CHANNELS: u64 = 0x2d8b969a9bd70f23;
1429}
1430
1431pub mod device_connector_ordinals {
1432 pub const CONNECT: u64 = 0x296896c9304836cd;
1433}
1434
1435pub mod device_extra_ordinals {
1436 pub const FORM_NETWORK: u64 = 0x6a8135f84bfc90e;
1437 pub const JOIN_NETWORK: u64 = 0x3ea583bab79f81c0;
1438 pub const START_NETWORK_SCAN: u64 = 0x6288c73b79188b40;
1439}
1440
1441pub mod device_extra_connector_ordinals {
1442 pub const CONNECT: u64 = 0x3fcb37e4226c81e9;
1443}
1444
1445pub mod device_route_ordinals {
1446 pub const REGISTER_ON_MESH_PREFIX: u64 = 0x2c4135231eb97f61;
1447 pub const UNREGISTER_ON_MESH_PREFIX: u64 = 0x82d5184028b797f;
1448 pub const REGISTER_EXTERNAL_ROUTE: u64 = 0x75f70f0fc34a5a73;
1449 pub const UNREGISTER_EXTERNAL_ROUTE: u64 = 0x3769be353b1d7088;
1450}
1451
1452pub mod device_route_connector_ordinals {
1453 pub const CONNECT: u64 = 0x19cd5fdcb971f4ac;
1454}
1455
1456pub mod device_route_extra_ordinals {
1457 pub const GET_LOCAL_ON_MESH_PREFIXES: u64 = 0xf192c43311c811;
1458 pub const GET_LOCAL_EXTERNAL_ROUTES: u64 = 0x5a688c2e62c766a6;
1459}
1460
1461pub mod device_route_extra_connector_ordinals {
1462 pub const CONNECT: u64 = 0x12f72df7b1348fe2;
1463}
1464
1465pub mod legacy_joining_ordinals {
1466 pub const MAKE_JOINABLE: u64 = 0x1739a6ae36d5c5aa;
1467}
1468
1469pub mod legacy_joining_connector_ordinals {
1470 pub const CONNECT: u64 = 0x3c8dfeb943bb8d06;
1471}
1472
1473pub mod provisioning_monitor_ordinals {
1474 pub const WATCH_PROGRESS: u64 = 0xc35336fc43ac0c;
1475}
1476
1477pub mod telemetry_provider_ordinals {
1478 pub const GET_TELEMETRY: u64 = 0xc34f2fff7dacc41;
1479}
1480
1481pub mod telemetry_provider_connector_ordinals {
1482 pub const CONNECT: u64 = 0x24a5bf1be73e2fad;
1483}
1484
1485mod internal {
1486 use super::*;
1487 unsafe impl fidl::encoding::TypeMarker for Dhcp6PdState {
1488 type Owned = Self;
1489
1490 #[inline(always)]
1491 fn inline_align(_context: fidl::encoding::Context) -> usize {
1492 std::mem::align_of::<u32>()
1493 }
1494
1495 #[inline(always)]
1496 fn inline_size(_context: fidl::encoding::Context) -> usize {
1497 std::mem::size_of::<u32>()
1498 }
1499
1500 #[inline(always)]
1501 fn encode_is_copy() -> bool {
1502 false
1503 }
1504
1505 #[inline(always)]
1506 fn decode_is_copy() -> bool {
1507 false
1508 }
1509 }
1510
1511 impl fidl::encoding::ValueTypeMarker for Dhcp6PdState {
1512 type Borrowed<'a> = Self;
1513 #[inline(always)]
1514 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1515 *value
1516 }
1517 }
1518
1519 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Dhcp6PdState {
1520 #[inline]
1521 unsafe fn encode(
1522 self,
1523 encoder: &mut fidl::encoding::Encoder<'_, D>,
1524 offset: usize,
1525 _depth: fidl::encoding::Depth,
1526 ) -> fidl::Result<()> {
1527 encoder.debug_check_bounds::<Self>(offset);
1528 encoder.write_num(self.into_primitive(), offset);
1529 Ok(())
1530 }
1531 }
1532
1533 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dhcp6PdState {
1534 #[inline(always)]
1535 fn new_empty() -> Self {
1536 Self::unknown()
1537 }
1538
1539 #[inline]
1540 unsafe fn decode(
1541 &mut self,
1542 decoder: &mut fidl::encoding::Decoder<'_, D>,
1543 offset: usize,
1544 _depth: fidl::encoding::Depth,
1545 ) -> fidl::Result<()> {
1546 decoder.debug_check_bounds::<Self>(offset);
1547 let prim = decoder.read_num::<u32>(offset);
1548
1549 *self = Self::from_primitive_allow_unknown(prim);
1550 Ok(())
1551 }
1552 }
1553 unsafe impl fidl::encoding::TypeMarker for Nat64State {
1554 type Owned = Self;
1555
1556 #[inline(always)]
1557 fn inline_align(_context: fidl::encoding::Context) -> usize {
1558 std::mem::align_of::<u32>()
1559 }
1560
1561 #[inline(always)]
1562 fn inline_size(_context: fidl::encoding::Context) -> usize {
1563 std::mem::size_of::<u32>()
1564 }
1565
1566 #[inline(always)]
1567 fn encode_is_copy() -> bool {
1568 false
1569 }
1570
1571 #[inline(always)]
1572 fn decode_is_copy() -> bool {
1573 false
1574 }
1575 }
1576
1577 impl fidl::encoding::ValueTypeMarker for Nat64State {
1578 type Borrowed<'a> = Self;
1579 #[inline(always)]
1580 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1581 *value
1582 }
1583 }
1584
1585 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Nat64State {
1586 #[inline]
1587 unsafe fn encode(
1588 self,
1589 encoder: &mut fidl::encoding::Encoder<'_, D>,
1590 offset: usize,
1591 _depth: fidl::encoding::Depth,
1592 ) -> fidl::Result<()> {
1593 encoder.debug_check_bounds::<Self>(offset);
1594 encoder.write_num(self.into_primitive(), offset);
1595 Ok(())
1596 }
1597 }
1598
1599 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64State {
1600 #[inline(always)]
1601 fn new_empty() -> Self {
1602 Self::unknown()
1603 }
1604
1605 #[inline]
1606 unsafe fn decode(
1607 &mut self,
1608 decoder: &mut fidl::encoding::Decoder<'_, D>,
1609 offset: usize,
1610 _depth: fidl::encoding::Depth,
1611 ) -> fidl::Result<()> {
1612 decoder.debug_check_bounds::<Self>(offset);
1613 let prim = decoder.read_num::<u32>(offset);
1614
1615 *self = Self::from_primitive_allow_unknown(prim);
1616 Ok(())
1617 }
1618 }
1619 unsafe impl fidl::encoding::TypeMarker for ProvisionError {
1620 type Owned = Self;
1621
1622 #[inline(always)]
1623 fn inline_align(_context: fidl::encoding::Context) -> usize {
1624 std::mem::align_of::<i32>()
1625 }
1626
1627 #[inline(always)]
1628 fn inline_size(_context: fidl::encoding::Context) -> usize {
1629 std::mem::size_of::<i32>()
1630 }
1631
1632 #[inline(always)]
1633 fn encode_is_copy() -> bool {
1634 false
1635 }
1636
1637 #[inline(always)]
1638 fn decode_is_copy() -> bool {
1639 false
1640 }
1641 }
1642
1643 impl fidl::encoding::ValueTypeMarker for ProvisionError {
1644 type Borrowed<'a> = Self;
1645 #[inline(always)]
1646 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1647 *value
1648 }
1649 }
1650
1651 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ProvisionError {
1652 #[inline]
1653 unsafe fn encode(
1654 self,
1655 encoder: &mut fidl::encoding::Encoder<'_, D>,
1656 offset: usize,
1657 _depth: fidl::encoding::Depth,
1658 ) -> fidl::Result<()> {
1659 encoder.debug_check_bounds::<Self>(offset);
1660 encoder.write_num(self.into_primitive(), offset);
1661 Ok(())
1662 }
1663 }
1664
1665 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProvisionError {
1666 #[inline(always)]
1667 fn new_empty() -> Self {
1668 Self::unknown()
1669 }
1670
1671 #[inline]
1672 unsafe fn decode(
1673 &mut self,
1674 decoder: &mut fidl::encoding::Decoder<'_, D>,
1675 offset: usize,
1676 _depth: fidl::encoding::Depth,
1677 ) -> fidl::Result<()> {
1678 decoder.debug_check_bounds::<Self>(offset);
1679 let prim = decoder.read_num::<i32>(offset);
1680
1681 *self = Self::from_primitive_allow_unknown(prim);
1682 Ok(())
1683 }
1684 }
1685 unsafe impl fidl::encoding::TypeMarker for RoutePreference {
1686 type Owned = Self;
1687
1688 #[inline(always)]
1689 fn inline_align(_context: fidl::encoding::Context) -> usize {
1690 std::mem::align_of::<i8>()
1691 }
1692
1693 #[inline(always)]
1694 fn inline_size(_context: fidl::encoding::Context) -> usize {
1695 std::mem::size_of::<i8>()
1696 }
1697
1698 #[inline(always)]
1699 fn encode_is_copy() -> bool {
1700 true
1701 }
1702
1703 #[inline(always)]
1704 fn decode_is_copy() -> bool {
1705 false
1706 }
1707 }
1708
1709 impl fidl::encoding::ValueTypeMarker for RoutePreference {
1710 type Borrowed<'a> = Self;
1711 #[inline(always)]
1712 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1713 *value
1714 }
1715 }
1716
1717 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1718 for RoutePreference
1719 {
1720 #[inline]
1721 unsafe fn encode(
1722 self,
1723 encoder: &mut fidl::encoding::Encoder<'_, D>,
1724 offset: usize,
1725 _depth: fidl::encoding::Depth,
1726 ) -> fidl::Result<()> {
1727 encoder.debug_check_bounds::<Self>(offset);
1728 encoder.write_num(self.into_primitive(), offset);
1729 Ok(())
1730 }
1731 }
1732
1733 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoutePreference {
1734 #[inline(always)]
1735 fn new_empty() -> Self {
1736 Self::Low
1737 }
1738
1739 #[inline]
1740 unsafe fn decode(
1741 &mut self,
1742 decoder: &mut fidl::encoding::Decoder<'_, D>,
1743 offset: usize,
1744 _depth: fidl::encoding::Depth,
1745 ) -> fidl::Result<()> {
1746 decoder.debug_check_bounds::<Self>(offset);
1747 let prim = decoder.read_num::<i8>(offset);
1748
1749 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1750 Ok(())
1751 }
1752 }
1753 unsafe impl fidl::encoding::TypeMarker for SrpServerAddressMode {
1754 type Owned = Self;
1755
1756 #[inline(always)]
1757 fn inline_align(_context: fidl::encoding::Context) -> usize {
1758 std::mem::align_of::<u32>()
1759 }
1760
1761 #[inline(always)]
1762 fn inline_size(_context: fidl::encoding::Context) -> usize {
1763 std::mem::size_of::<u32>()
1764 }
1765
1766 #[inline(always)]
1767 fn encode_is_copy() -> bool {
1768 true
1769 }
1770
1771 #[inline(always)]
1772 fn decode_is_copy() -> bool {
1773 false
1774 }
1775 }
1776
1777 impl fidl::encoding::ValueTypeMarker for SrpServerAddressMode {
1778 type Borrowed<'a> = Self;
1779 #[inline(always)]
1780 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1781 *value
1782 }
1783 }
1784
1785 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1786 for SrpServerAddressMode
1787 {
1788 #[inline]
1789 unsafe fn encode(
1790 self,
1791 encoder: &mut fidl::encoding::Encoder<'_, D>,
1792 offset: usize,
1793 _depth: fidl::encoding::Depth,
1794 ) -> fidl::Result<()> {
1795 encoder.debug_check_bounds::<Self>(offset);
1796 encoder.write_num(self.into_primitive(), offset);
1797 Ok(())
1798 }
1799 }
1800
1801 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerAddressMode {
1802 #[inline(always)]
1803 fn new_empty() -> Self {
1804 Self::Unicast
1805 }
1806
1807 #[inline]
1808 unsafe fn decode(
1809 &mut self,
1810 decoder: &mut fidl::encoding::Decoder<'_, D>,
1811 offset: usize,
1812 _depth: fidl::encoding::Depth,
1813 ) -> fidl::Result<()> {
1814 decoder.debug_check_bounds::<Self>(offset);
1815 let prim = decoder.read_num::<u32>(offset);
1816
1817 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1818 Ok(())
1819 }
1820 }
1821 unsafe impl fidl::encoding::TypeMarker for SrpServerState {
1822 type Owned = Self;
1823
1824 #[inline(always)]
1825 fn inline_align(_context: fidl::encoding::Context) -> usize {
1826 std::mem::align_of::<u32>()
1827 }
1828
1829 #[inline(always)]
1830 fn inline_size(_context: fidl::encoding::Context) -> usize {
1831 std::mem::size_of::<u32>()
1832 }
1833
1834 #[inline(always)]
1835 fn encode_is_copy() -> bool {
1836 true
1837 }
1838
1839 #[inline(always)]
1840 fn decode_is_copy() -> bool {
1841 false
1842 }
1843 }
1844
1845 impl fidl::encoding::ValueTypeMarker for SrpServerState {
1846 type Borrowed<'a> = Self;
1847 #[inline(always)]
1848 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1849 *value
1850 }
1851 }
1852
1853 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for SrpServerState {
1854 #[inline]
1855 unsafe fn encode(
1856 self,
1857 encoder: &mut fidl::encoding::Encoder<'_, D>,
1858 offset: usize,
1859 _depth: fidl::encoding::Depth,
1860 ) -> fidl::Result<()> {
1861 encoder.debug_check_bounds::<Self>(offset);
1862 encoder.write_num(self.into_primitive(), offset);
1863 Ok(())
1864 }
1865 }
1866
1867 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerState {
1868 #[inline(always)]
1869 fn new_empty() -> Self {
1870 Self::Disabled
1871 }
1872
1873 #[inline]
1874 unsafe fn decode(
1875 &mut self,
1876 decoder: &mut fidl::encoding::Decoder<'_, D>,
1877 offset: usize,
1878 _depth: fidl::encoding::Depth,
1879 ) -> fidl::Result<()> {
1880 decoder.debug_check_bounds::<Self>(offset);
1881 let prim = decoder.read_num::<u32>(offset);
1882
1883 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1884 Ok(())
1885 }
1886 }
1887 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsQueryState {
1888 type Owned = Self;
1889
1890 #[inline(always)]
1891 fn inline_align(_context: fidl::encoding::Context) -> usize {
1892 std::mem::align_of::<u32>()
1893 }
1894
1895 #[inline(always)]
1896 fn inline_size(_context: fidl::encoding::Context) -> usize {
1897 std::mem::size_of::<u32>()
1898 }
1899
1900 #[inline(always)]
1901 fn encode_is_copy() -> bool {
1902 false
1903 }
1904
1905 #[inline(always)]
1906 fn decode_is_copy() -> bool {
1907 false
1908 }
1909 }
1910
1911 impl fidl::encoding::ValueTypeMarker for UpstreamDnsQueryState {
1912 type Borrowed<'a> = Self;
1913 #[inline(always)]
1914 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1915 *value
1916 }
1917 }
1918
1919 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1920 for UpstreamDnsQueryState
1921 {
1922 #[inline]
1923 unsafe fn encode(
1924 self,
1925 encoder: &mut fidl::encoding::Encoder<'_, D>,
1926 offset: usize,
1927 _depth: fidl::encoding::Depth,
1928 ) -> fidl::Result<()> {
1929 encoder.debug_check_bounds::<Self>(offset);
1930 encoder.write_num(self.into_primitive(), offset);
1931 Ok(())
1932 }
1933 }
1934
1935 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsQueryState {
1936 #[inline(always)]
1937 fn new_empty() -> Self {
1938 Self::unknown()
1939 }
1940
1941 #[inline]
1942 unsafe fn decode(
1943 &mut self,
1944 decoder: &mut fidl::encoding::Decoder<'_, D>,
1945 offset: usize,
1946 _depth: fidl::encoding::Depth,
1947 ) -> fidl::Result<()> {
1948 decoder.debug_check_bounds::<Self>(offset);
1949 let prim = decoder.read_num::<u32>(offset);
1950
1951 *self = Self::from_primitive_allow_unknown(prim);
1952 Ok(())
1953 }
1954 }
1955
1956 impl fidl::encoding::ValueTypeMarker for BeaconInfoStreamNextResponse {
1957 type Borrowed<'a> = &'a Self;
1958 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1959 value
1960 }
1961 }
1962
1963 unsafe impl fidl::encoding::TypeMarker for BeaconInfoStreamNextResponse {
1964 type Owned = Self;
1965
1966 #[inline(always)]
1967 fn inline_align(_context: fidl::encoding::Context) -> usize {
1968 8
1969 }
1970
1971 #[inline(always)]
1972 fn inline_size(_context: fidl::encoding::Context) -> usize {
1973 16
1974 }
1975 }
1976
1977 unsafe impl<D: fidl::encoding::ResourceDialect>
1978 fidl::encoding::Encode<BeaconInfoStreamNextResponse, D> for &BeaconInfoStreamNextResponse
1979 {
1980 #[inline]
1981 unsafe fn encode(
1982 self,
1983 encoder: &mut fidl::encoding::Encoder<'_, D>,
1984 offset: usize,
1985 _depth: fidl::encoding::Depth,
1986 ) -> fidl::Result<()> {
1987 encoder.debug_check_bounds::<BeaconInfoStreamNextResponse>(offset);
1988 fidl::encoding::Encode::<BeaconInfoStreamNextResponse, D>::encode(
1990 (
1991 <fidl::encoding::Vector<BeaconInfo, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.beacons),
1992 ),
1993 encoder, offset, _depth
1994 )
1995 }
1996 }
1997 unsafe impl<
1998 D: fidl::encoding::ResourceDialect,
1999 T0: fidl::encoding::Encode<fidl::encoding::Vector<BeaconInfo, 32>, D>,
2000 > fidl::encoding::Encode<BeaconInfoStreamNextResponse, D> for (T0,)
2001 {
2002 #[inline]
2003 unsafe fn encode(
2004 self,
2005 encoder: &mut fidl::encoding::Encoder<'_, D>,
2006 offset: usize,
2007 depth: fidl::encoding::Depth,
2008 ) -> fidl::Result<()> {
2009 encoder.debug_check_bounds::<BeaconInfoStreamNextResponse>(offset);
2010 self.0.encode(encoder, offset + 0, depth)?;
2014 Ok(())
2015 }
2016 }
2017
2018 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2019 for BeaconInfoStreamNextResponse
2020 {
2021 #[inline(always)]
2022 fn new_empty() -> Self {
2023 Self { beacons: fidl::new_empty!(fidl::encoding::Vector<BeaconInfo, 32>, D) }
2024 }
2025
2026 #[inline]
2027 unsafe fn decode(
2028 &mut self,
2029 decoder: &mut fidl::encoding::Decoder<'_, D>,
2030 offset: usize,
2031 _depth: fidl::encoding::Depth,
2032 ) -> fidl::Result<()> {
2033 decoder.debug_check_bounds::<Self>(offset);
2034 fidl::decode!(fidl::encoding::Vector<BeaconInfo, 32>, D, &mut self.beacons, decoder, offset + 0, _depth)?;
2036 Ok(())
2037 }
2038 }
2039
2040 impl fidl::encoding::ValueTypeMarker for DeviceGetSupportedChannelsResponse {
2041 type Borrowed<'a> = &'a Self;
2042 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2043 value
2044 }
2045 }
2046
2047 unsafe impl fidl::encoding::TypeMarker for DeviceGetSupportedChannelsResponse {
2048 type Owned = Self;
2049
2050 #[inline(always)]
2051 fn inline_align(_context: fidl::encoding::Context) -> usize {
2052 8
2053 }
2054
2055 #[inline(always)]
2056 fn inline_size(_context: fidl::encoding::Context) -> usize {
2057 16
2058 }
2059 }
2060
2061 unsafe impl<D: fidl::encoding::ResourceDialect>
2062 fidl::encoding::Encode<DeviceGetSupportedChannelsResponse, D>
2063 for &DeviceGetSupportedChannelsResponse
2064 {
2065 #[inline]
2066 unsafe fn encode(
2067 self,
2068 encoder: &mut fidl::encoding::Encoder<'_, D>,
2069 offset: usize,
2070 _depth: fidl::encoding::Depth,
2071 ) -> fidl::Result<()> {
2072 encoder.debug_check_bounds::<DeviceGetSupportedChannelsResponse>(offset);
2073 fidl::encoding::Encode::<DeviceGetSupportedChannelsResponse, D>::encode(
2075 (
2076 <fidl::encoding::Vector<ChannelInfo, 200> as fidl::encoding::ValueTypeMarker>::borrow(&self.channels_info),
2077 ),
2078 encoder, offset, _depth
2079 )
2080 }
2081 }
2082 unsafe impl<
2083 D: fidl::encoding::ResourceDialect,
2084 T0: fidl::encoding::Encode<fidl::encoding::Vector<ChannelInfo, 200>, D>,
2085 > fidl::encoding::Encode<DeviceGetSupportedChannelsResponse, D> for (T0,)
2086 {
2087 #[inline]
2088 unsafe fn encode(
2089 self,
2090 encoder: &mut fidl::encoding::Encoder<'_, D>,
2091 offset: usize,
2092 depth: fidl::encoding::Depth,
2093 ) -> fidl::Result<()> {
2094 encoder.debug_check_bounds::<DeviceGetSupportedChannelsResponse>(offset);
2095 self.0.encode(encoder, offset + 0, depth)?;
2099 Ok(())
2100 }
2101 }
2102
2103 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2104 for DeviceGetSupportedChannelsResponse
2105 {
2106 #[inline(always)]
2107 fn new_empty() -> Self {
2108 Self { channels_info: fidl::new_empty!(fidl::encoding::Vector<ChannelInfo, 200>, D) }
2109 }
2110
2111 #[inline]
2112 unsafe fn decode(
2113 &mut self,
2114 decoder: &mut fidl::encoding::Decoder<'_, D>,
2115 offset: usize,
2116 _depth: fidl::encoding::Depth,
2117 ) -> fidl::Result<()> {
2118 decoder.debug_check_bounds::<Self>(offset);
2119 fidl::decode!(fidl::encoding::Vector<ChannelInfo, 200>, D, &mut self.channels_info, decoder, offset + 0, _depth)?;
2121 Ok(())
2122 }
2123 }
2124
2125 impl fidl::encoding::ValueTypeMarker for DeviceRouteExtraGetLocalExternalRoutesResponse {
2126 type Borrowed<'a> = &'a Self;
2127 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2128 value
2129 }
2130 }
2131
2132 unsafe impl fidl::encoding::TypeMarker for DeviceRouteExtraGetLocalExternalRoutesResponse {
2133 type Owned = Self;
2134
2135 #[inline(always)]
2136 fn inline_align(_context: fidl::encoding::Context) -> usize {
2137 8
2138 }
2139
2140 #[inline(always)]
2141 fn inline_size(_context: fidl::encoding::Context) -> usize {
2142 16
2143 }
2144 }
2145
2146 unsafe impl<D: fidl::encoding::ResourceDialect>
2147 fidl::encoding::Encode<DeviceRouteExtraGetLocalExternalRoutesResponse, D>
2148 for &DeviceRouteExtraGetLocalExternalRoutesResponse
2149 {
2150 #[inline]
2151 unsafe fn encode(
2152 self,
2153 encoder: &mut fidl::encoding::Encoder<'_, D>,
2154 offset: usize,
2155 _depth: fidl::encoding::Depth,
2156 ) -> fidl::Result<()> {
2157 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalExternalRoutesResponse>(offset);
2158 fidl::encoding::Encode::<DeviceRouteExtraGetLocalExternalRoutesResponse, D>::encode(
2160 (
2161 <fidl::encoding::Vector<ExternalRoute, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.external_routes),
2162 ),
2163 encoder, offset, _depth
2164 )
2165 }
2166 }
2167 unsafe impl<
2168 D: fidl::encoding::ResourceDialect,
2169 T0: fidl::encoding::Encode<fidl::encoding::Vector<ExternalRoute, 32>, D>,
2170 > fidl::encoding::Encode<DeviceRouteExtraGetLocalExternalRoutesResponse, D> for (T0,)
2171 {
2172 #[inline]
2173 unsafe fn encode(
2174 self,
2175 encoder: &mut fidl::encoding::Encoder<'_, D>,
2176 offset: usize,
2177 depth: fidl::encoding::Depth,
2178 ) -> fidl::Result<()> {
2179 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalExternalRoutesResponse>(offset);
2180 self.0.encode(encoder, offset + 0, depth)?;
2184 Ok(())
2185 }
2186 }
2187
2188 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2189 for DeviceRouteExtraGetLocalExternalRoutesResponse
2190 {
2191 #[inline(always)]
2192 fn new_empty() -> Self {
2193 Self { external_routes: fidl::new_empty!(fidl::encoding::Vector<ExternalRoute, 32>, D) }
2194 }
2195
2196 #[inline]
2197 unsafe fn decode(
2198 &mut self,
2199 decoder: &mut fidl::encoding::Decoder<'_, D>,
2200 offset: usize,
2201 _depth: fidl::encoding::Depth,
2202 ) -> fidl::Result<()> {
2203 decoder.debug_check_bounds::<Self>(offset);
2204 fidl::decode!(fidl::encoding::Vector<ExternalRoute, 32>, D, &mut self.external_routes, decoder, offset + 0, _depth)?;
2206 Ok(())
2207 }
2208 }
2209
2210 impl fidl::encoding::ValueTypeMarker for DeviceRouteExtraGetLocalOnMeshPrefixesResponse {
2211 type Borrowed<'a> = &'a Self;
2212 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2213 value
2214 }
2215 }
2216
2217 unsafe impl fidl::encoding::TypeMarker for DeviceRouteExtraGetLocalOnMeshPrefixesResponse {
2218 type Owned = Self;
2219
2220 #[inline(always)]
2221 fn inline_align(_context: fidl::encoding::Context) -> usize {
2222 8
2223 }
2224
2225 #[inline(always)]
2226 fn inline_size(_context: fidl::encoding::Context) -> usize {
2227 16
2228 }
2229 }
2230
2231 unsafe impl<D: fidl::encoding::ResourceDialect>
2232 fidl::encoding::Encode<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D>
2233 for &DeviceRouteExtraGetLocalOnMeshPrefixesResponse
2234 {
2235 #[inline]
2236 unsafe fn encode(
2237 self,
2238 encoder: &mut fidl::encoding::Encoder<'_, D>,
2239 offset: usize,
2240 _depth: fidl::encoding::Depth,
2241 ) -> fidl::Result<()> {
2242 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse>(offset);
2243 fidl::encoding::Encode::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D>::encode(
2245 (
2246 <fidl::encoding::Vector<OnMeshPrefix, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.prefixes),
2247 ),
2248 encoder, offset, _depth
2249 )
2250 }
2251 }
2252 unsafe impl<
2253 D: fidl::encoding::ResourceDialect,
2254 T0: fidl::encoding::Encode<fidl::encoding::Vector<OnMeshPrefix, 32>, D>,
2255 > fidl::encoding::Encode<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D> for (T0,)
2256 {
2257 #[inline]
2258 unsafe fn encode(
2259 self,
2260 encoder: &mut fidl::encoding::Encoder<'_, D>,
2261 offset: usize,
2262 depth: fidl::encoding::Depth,
2263 ) -> fidl::Result<()> {
2264 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse>(offset);
2265 self.0.encode(encoder, offset + 0, depth)?;
2269 Ok(())
2270 }
2271 }
2272
2273 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2274 for DeviceRouteExtraGetLocalOnMeshPrefixesResponse
2275 {
2276 #[inline(always)]
2277 fn new_empty() -> Self {
2278 Self { prefixes: fidl::new_empty!(fidl::encoding::Vector<OnMeshPrefix, 32>, D) }
2279 }
2280
2281 #[inline]
2282 unsafe fn decode(
2283 &mut self,
2284 decoder: &mut fidl::encoding::Decoder<'_, D>,
2285 offset: usize,
2286 _depth: fidl::encoding::Depth,
2287 ) -> fidl::Result<()> {
2288 decoder.debug_check_bounds::<Self>(offset);
2289 fidl::decode!(fidl::encoding::Vector<OnMeshPrefix, 32>, D, &mut self.prefixes, decoder, offset + 0, _depth)?;
2291 Ok(())
2292 }
2293 }
2294
2295 impl fidl::encoding::ValueTypeMarker for DeviceRouteRegisterExternalRouteRequest {
2296 type Borrowed<'a> = &'a Self;
2297 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2298 value
2299 }
2300 }
2301
2302 unsafe impl fidl::encoding::TypeMarker for DeviceRouteRegisterExternalRouteRequest {
2303 type Owned = Self;
2304
2305 #[inline(always)]
2306 fn inline_align(_context: fidl::encoding::Context) -> usize {
2307 8
2308 }
2309
2310 #[inline(always)]
2311 fn inline_size(_context: fidl::encoding::Context) -> usize {
2312 16
2313 }
2314 }
2315
2316 unsafe impl<D: fidl::encoding::ResourceDialect>
2317 fidl::encoding::Encode<DeviceRouteRegisterExternalRouteRequest, D>
2318 for &DeviceRouteRegisterExternalRouteRequest
2319 {
2320 #[inline]
2321 unsafe fn encode(
2322 self,
2323 encoder: &mut fidl::encoding::Encoder<'_, D>,
2324 offset: usize,
2325 _depth: fidl::encoding::Depth,
2326 ) -> fidl::Result<()> {
2327 encoder.debug_check_bounds::<DeviceRouteRegisterExternalRouteRequest>(offset);
2328 fidl::encoding::Encode::<DeviceRouteRegisterExternalRouteRequest, D>::encode(
2330 (<ExternalRoute as fidl::encoding::ValueTypeMarker>::borrow(&self.external_route),),
2331 encoder,
2332 offset,
2333 _depth,
2334 )
2335 }
2336 }
2337 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ExternalRoute, D>>
2338 fidl::encoding::Encode<DeviceRouteRegisterExternalRouteRequest, D> for (T0,)
2339 {
2340 #[inline]
2341 unsafe fn encode(
2342 self,
2343 encoder: &mut fidl::encoding::Encoder<'_, D>,
2344 offset: usize,
2345 depth: fidl::encoding::Depth,
2346 ) -> fidl::Result<()> {
2347 encoder.debug_check_bounds::<DeviceRouteRegisterExternalRouteRequest>(offset);
2348 self.0.encode(encoder, offset + 0, depth)?;
2352 Ok(())
2353 }
2354 }
2355
2356 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2357 for DeviceRouteRegisterExternalRouteRequest
2358 {
2359 #[inline(always)]
2360 fn new_empty() -> Self {
2361 Self { external_route: fidl::new_empty!(ExternalRoute, D) }
2362 }
2363
2364 #[inline]
2365 unsafe fn decode(
2366 &mut self,
2367 decoder: &mut fidl::encoding::Decoder<'_, D>,
2368 offset: usize,
2369 _depth: fidl::encoding::Depth,
2370 ) -> fidl::Result<()> {
2371 decoder.debug_check_bounds::<Self>(offset);
2372 fidl::decode!(ExternalRoute, D, &mut self.external_route, decoder, offset + 0, _depth)?;
2374 Ok(())
2375 }
2376 }
2377
2378 impl fidl::encoding::ValueTypeMarker for DeviceRouteRegisterOnMeshPrefixRequest {
2379 type Borrowed<'a> = &'a Self;
2380 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2381 value
2382 }
2383 }
2384
2385 unsafe impl fidl::encoding::TypeMarker for DeviceRouteRegisterOnMeshPrefixRequest {
2386 type Owned = Self;
2387
2388 #[inline(always)]
2389 fn inline_align(_context: fidl::encoding::Context) -> usize {
2390 8
2391 }
2392
2393 #[inline(always)]
2394 fn inline_size(_context: fidl::encoding::Context) -> usize {
2395 16
2396 }
2397 }
2398
2399 unsafe impl<D: fidl::encoding::ResourceDialect>
2400 fidl::encoding::Encode<DeviceRouteRegisterOnMeshPrefixRequest, D>
2401 for &DeviceRouteRegisterOnMeshPrefixRequest
2402 {
2403 #[inline]
2404 unsafe fn encode(
2405 self,
2406 encoder: &mut fidl::encoding::Encoder<'_, D>,
2407 offset: usize,
2408 _depth: fidl::encoding::Depth,
2409 ) -> fidl::Result<()> {
2410 encoder.debug_check_bounds::<DeviceRouteRegisterOnMeshPrefixRequest>(offset);
2411 fidl::encoding::Encode::<DeviceRouteRegisterOnMeshPrefixRequest, D>::encode(
2413 (<OnMeshPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.prefix),),
2414 encoder,
2415 offset,
2416 _depth,
2417 )
2418 }
2419 }
2420 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<OnMeshPrefix, D>>
2421 fidl::encoding::Encode<DeviceRouteRegisterOnMeshPrefixRequest, D> for (T0,)
2422 {
2423 #[inline]
2424 unsafe fn encode(
2425 self,
2426 encoder: &mut fidl::encoding::Encoder<'_, D>,
2427 offset: usize,
2428 depth: fidl::encoding::Depth,
2429 ) -> fidl::Result<()> {
2430 encoder.debug_check_bounds::<DeviceRouteRegisterOnMeshPrefixRequest>(offset);
2431 self.0.encode(encoder, offset + 0, depth)?;
2435 Ok(())
2436 }
2437 }
2438
2439 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2440 for DeviceRouteRegisterOnMeshPrefixRequest
2441 {
2442 #[inline(always)]
2443 fn new_empty() -> Self {
2444 Self { prefix: fidl::new_empty!(OnMeshPrefix, D) }
2445 }
2446
2447 #[inline]
2448 unsafe fn decode(
2449 &mut self,
2450 decoder: &mut fidl::encoding::Decoder<'_, D>,
2451 offset: usize,
2452 _depth: fidl::encoding::Depth,
2453 ) -> fidl::Result<()> {
2454 decoder.debug_check_bounds::<Self>(offset);
2455 fidl::decode!(OnMeshPrefix, D, &mut self.prefix, decoder, offset + 0, _depth)?;
2457 Ok(())
2458 }
2459 }
2460
2461 impl fidl::encoding::ValueTypeMarker for DeviceRouteUnregisterExternalRouteRequest {
2462 type Borrowed<'a> = &'a Self;
2463 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2464 value
2465 }
2466 }
2467
2468 unsafe impl fidl::encoding::TypeMarker for DeviceRouteUnregisterExternalRouteRequest {
2469 type Owned = Self;
2470
2471 #[inline(always)]
2472 fn inline_align(_context: fidl::encoding::Context) -> usize {
2473 1
2474 }
2475
2476 #[inline(always)]
2477 fn inline_size(_context: fidl::encoding::Context) -> usize {
2478 17
2479 }
2480 }
2481
2482 unsafe impl<D: fidl::encoding::ResourceDialect>
2483 fidl::encoding::Encode<DeviceRouteUnregisterExternalRouteRequest, D>
2484 for &DeviceRouteUnregisterExternalRouteRequest
2485 {
2486 #[inline]
2487 unsafe fn encode(
2488 self,
2489 encoder: &mut fidl::encoding::Encoder<'_, D>,
2490 offset: usize,
2491 _depth: fidl::encoding::Depth,
2492 ) -> fidl::Result<()> {
2493 encoder.debug_check_bounds::<DeviceRouteUnregisterExternalRouteRequest>(offset);
2494 fidl::encoding::Encode::<DeviceRouteUnregisterExternalRouteRequest, D>::encode(
2496 (
2497 <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.subnet),
2498 ),
2499 encoder, offset, _depth
2500 )
2501 }
2502 }
2503 unsafe impl<
2504 D: fidl::encoding::ResourceDialect,
2505 T0: fidl::encoding::Encode<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>,
2506 > fidl::encoding::Encode<DeviceRouteUnregisterExternalRouteRequest, D> for (T0,)
2507 {
2508 #[inline]
2509 unsafe fn encode(
2510 self,
2511 encoder: &mut fidl::encoding::Encoder<'_, D>,
2512 offset: usize,
2513 depth: fidl::encoding::Depth,
2514 ) -> fidl::Result<()> {
2515 encoder.debug_check_bounds::<DeviceRouteUnregisterExternalRouteRequest>(offset);
2516 self.0.encode(encoder, offset + 0, depth)?;
2520 Ok(())
2521 }
2522 }
2523
2524 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2525 for DeviceRouteUnregisterExternalRouteRequest
2526 {
2527 #[inline(always)]
2528 fn new_empty() -> Self {
2529 Self { subnet: fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D) }
2530 }
2531
2532 #[inline]
2533 unsafe fn decode(
2534 &mut self,
2535 decoder: &mut fidl::encoding::Decoder<'_, D>,
2536 offset: usize,
2537 _depth: fidl::encoding::Depth,
2538 ) -> fidl::Result<()> {
2539 decoder.debug_check_bounds::<Self>(offset);
2540 fidl::decode!(
2542 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
2543 D,
2544 &mut self.subnet,
2545 decoder,
2546 offset + 0,
2547 _depth
2548 )?;
2549 Ok(())
2550 }
2551 }
2552
2553 impl fidl::encoding::ValueTypeMarker for DeviceRouteUnregisterOnMeshPrefixRequest {
2554 type Borrowed<'a> = &'a Self;
2555 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2556 value
2557 }
2558 }
2559
2560 unsafe impl fidl::encoding::TypeMarker for DeviceRouteUnregisterOnMeshPrefixRequest {
2561 type Owned = Self;
2562
2563 #[inline(always)]
2564 fn inline_align(_context: fidl::encoding::Context) -> usize {
2565 1
2566 }
2567
2568 #[inline(always)]
2569 fn inline_size(_context: fidl::encoding::Context) -> usize {
2570 17
2571 }
2572 }
2573
2574 unsafe impl<D: fidl::encoding::ResourceDialect>
2575 fidl::encoding::Encode<DeviceRouteUnregisterOnMeshPrefixRequest, D>
2576 for &DeviceRouteUnregisterOnMeshPrefixRequest
2577 {
2578 #[inline]
2579 unsafe fn encode(
2580 self,
2581 encoder: &mut fidl::encoding::Encoder<'_, D>,
2582 offset: usize,
2583 _depth: fidl::encoding::Depth,
2584 ) -> fidl::Result<()> {
2585 encoder.debug_check_bounds::<DeviceRouteUnregisterOnMeshPrefixRequest>(offset);
2586 fidl::encoding::Encode::<DeviceRouteUnregisterOnMeshPrefixRequest, D>::encode(
2588 (
2589 <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.subnet),
2590 ),
2591 encoder, offset, _depth
2592 )
2593 }
2594 }
2595 unsafe impl<
2596 D: fidl::encoding::ResourceDialect,
2597 T0: fidl::encoding::Encode<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>,
2598 > fidl::encoding::Encode<DeviceRouteUnregisterOnMeshPrefixRequest, D> for (T0,)
2599 {
2600 #[inline]
2601 unsafe fn encode(
2602 self,
2603 encoder: &mut fidl::encoding::Encoder<'_, D>,
2604 offset: usize,
2605 depth: fidl::encoding::Depth,
2606 ) -> fidl::Result<()> {
2607 encoder.debug_check_bounds::<DeviceRouteUnregisterOnMeshPrefixRequest>(offset);
2608 self.0.encode(encoder, offset + 0, depth)?;
2612 Ok(())
2613 }
2614 }
2615
2616 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2617 for DeviceRouteUnregisterOnMeshPrefixRequest
2618 {
2619 #[inline(always)]
2620 fn new_empty() -> Self {
2621 Self { subnet: fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D) }
2622 }
2623
2624 #[inline]
2625 unsafe fn decode(
2626 &mut self,
2627 decoder: &mut fidl::encoding::Decoder<'_, D>,
2628 offset: usize,
2629 _depth: fidl::encoding::Depth,
2630 ) -> fidl::Result<()> {
2631 decoder.debug_check_bounds::<Self>(offset);
2632 fidl::decode!(
2634 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
2635 D,
2636 &mut self.subnet,
2637 decoder,
2638 offset + 0,
2639 _depth
2640 )?;
2641 Ok(())
2642 }
2643 }
2644
2645 impl fidl::encoding::ValueTypeMarker for LegacyJoiningMakeJoinableRequest {
2646 type Borrowed<'a> = &'a Self;
2647 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2648 value
2649 }
2650 }
2651
2652 unsafe impl fidl::encoding::TypeMarker for LegacyJoiningMakeJoinableRequest {
2653 type Owned = Self;
2654
2655 #[inline(always)]
2656 fn inline_align(_context: fidl::encoding::Context) -> usize {
2657 8
2658 }
2659
2660 #[inline(always)]
2661 fn inline_size(_context: fidl::encoding::Context) -> usize {
2662 16
2663 }
2664 }
2665
2666 unsafe impl<D: fidl::encoding::ResourceDialect>
2667 fidl::encoding::Encode<LegacyJoiningMakeJoinableRequest, D>
2668 for &LegacyJoiningMakeJoinableRequest
2669 {
2670 #[inline]
2671 unsafe fn encode(
2672 self,
2673 encoder: &mut fidl::encoding::Encoder<'_, D>,
2674 offset: usize,
2675 _depth: fidl::encoding::Depth,
2676 ) -> fidl::Result<()> {
2677 encoder.debug_check_bounds::<LegacyJoiningMakeJoinableRequest>(offset);
2678 unsafe {
2679 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2681 (buf_ptr as *mut LegacyJoiningMakeJoinableRequest)
2682 .write_unaligned((self as *const LegacyJoiningMakeJoinableRequest).read());
2683 let padding_ptr = buf_ptr.offset(8) as *mut u64;
2686 let padding_mask = 0xffffffffffff0000u64;
2687 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
2688 }
2689 Ok(())
2690 }
2691 }
2692 unsafe impl<
2693 D: fidl::encoding::ResourceDialect,
2694 T0: fidl::encoding::Encode<i64, D>,
2695 T1: fidl::encoding::Encode<u16, D>,
2696 > fidl::encoding::Encode<LegacyJoiningMakeJoinableRequest, D> for (T0, T1)
2697 {
2698 #[inline]
2699 unsafe fn encode(
2700 self,
2701 encoder: &mut fidl::encoding::Encoder<'_, D>,
2702 offset: usize,
2703 depth: fidl::encoding::Depth,
2704 ) -> fidl::Result<()> {
2705 encoder.debug_check_bounds::<LegacyJoiningMakeJoinableRequest>(offset);
2706 unsafe {
2709 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2710 (ptr as *mut u64).write_unaligned(0);
2711 }
2712 self.0.encode(encoder, offset + 0, depth)?;
2714 self.1.encode(encoder, offset + 8, depth)?;
2715 Ok(())
2716 }
2717 }
2718
2719 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2720 for LegacyJoiningMakeJoinableRequest
2721 {
2722 #[inline(always)]
2723 fn new_empty() -> Self {
2724 Self { duration: fidl::new_empty!(i64, D), port: fidl::new_empty!(u16, D) }
2725 }
2726
2727 #[inline]
2728 unsafe fn decode(
2729 &mut self,
2730 decoder: &mut fidl::encoding::Decoder<'_, D>,
2731 offset: usize,
2732 _depth: fidl::encoding::Depth,
2733 ) -> fidl::Result<()> {
2734 decoder.debug_check_bounds::<Self>(offset);
2735 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2736 let ptr = unsafe { buf_ptr.offset(8) };
2738 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2739 let mask = 0xffffffffffff0000u64;
2740 let maskedval = padval & mask;
2741 if maskedval != 0 {
2742 return Err(fidl::Error::NonZeroPadding {
2743 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2744 });
2745 }
2746 unsafe {
2748 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
2749 }
2750 Ok(())
2751 }
2752 }
2753
2754 impl fidl::encoding::ValueTypeMarker for ProvisioningMonitorWatchProgressResponse {
2755 type Borrowed<'a> = &'a Self;
2756 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2757 value
2758 }
2759 }
2760
2761 unsafe impl fidl::encoding::TypeMarker for ProvisioningMonitorWatchProgressResponse {
2762 type Owned = Self;
2763
2764 #[inline(always)]
2765 fn inline_align(_context: fidl::encoding::Context) -> usize {
2766 8
2767 }
2768
2769 #[inline(always)]
2770 fn inline_size(_context: fidl::encoding::Context) -> usize {
2771 16
2772 }
2773 }
2774
2775 unsafe impl<D: fidl::encoding::ResourceDialect>
2776 fidl::encoding::Encode<ProvisioningMonitorWatchProgressResponse, D>
2777 for &ProvisioningMonitorWatchProgressResponse
2778 {
2779 #[inline]
2780 unsafe fn encode(
2781 self,
2782 encoder: &mut fidl::encoding::Encoder<'_, D>,
2783 offset: usize,
2784 _depth: fidl::encoding::Depth,
2785 ) -> fidl::Result<()> {
2786 encoder.debug_check_bounds::<ProvisioningMonitorWatchProgressResponse>(offset);
2787 fidl::encoding::Encode::<ProvisioningMonitorWatchProgressResponse, D>::encode(
2789 (<ProvisioningProgress as fidl::encoding::ValueTypeMarker>::borrow(&self.progress),),
2790 encoder,
2791 offset,
2792 _depth,
2793 )
2794 }
2795 }
2796 unsafe impl<
2797 D: fidl::encoding::ResourceDialect,
2798 T0: fidl::encoding::Encode<ProvisioningProgress, D>,
2799 > fidl::encoding::Encode<ProvisioningMonitorWatchProgressResponse, D> for (T0,)
2800 {
2801 #[inline]
2802 unsafe fn encode(
2803 self,
2804 encoder: &mut fidl::encoding::Encoder<'_, D>,
2805 offset: usize,
2806 depth: fidl::encoding::Depth,
2807 ) -> fidl::Result<()> {
2808 encoder.debug_check_bounds::<ProvisioningMonitorWatchProgressResponse>(offset);
2809 self.0.encode(encoder, offset + 0, depth)?;
2813 Ok(())
2814 }
2815 }
2816
2817 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2818 for ProvisioningMonitorWatchProgressResponse
2819 {
2820 #[inline(always)]
2821 fn new_empty() -> Self {
2822 Self { progress: fidl::new_empty!(ProvisioningProgress, D) }
2823 }
2824
2825 #[inline]
2826 unsafe fn decode(
2827 &mut self,
2828 decoder: &mut fidl::encoding::Decoder<'_, D>,
2829 offset: usize,
2830 _depth: fidl::encoding::Depth,
2831 ) -> fidl::Result<()> {
2832 decoder.debug_check_bounds::<Self>(offset);
2833 fidl::decode!(
2835 ProvisioningProgress,
2836 D,
2837 &mut self.progress,
2838 decoder,
2839 offset + 0,
2840 _depth
2841 )?;
2842 Ok(())
2843 }
2844 }
2845
2846 impl fidl::encoding::ValueTypeMarker for TelemetryProviderGetTelemetryResponse {
2847 type Borrowed<'a> = &'a Self;
2848 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2849 value
2850 }
2851 }
2852
2853 unsafe impl fidl::encoding::TypeMarker for TelemetryProviderGetTelemetryResponse {
2854 type Owned = Self;
2855
2856 #[inline(always)]
2857 fn inline_align(_context: fidl::encoding::Context) -> usize {
2858 8
2859 }
2860
2861 #[inline(always)]
2862 fn inline_size(_context: fidl::encoding::Context) -> usize {
2863 16
2864 }
2865 }
2866
2867 unsafe impl<D: fidl::encoding::ResourceDialect>
2868 fidl::encoding::Encode<TelemetryProviderGetTelemetryResponse, D>
2869 for &TelemetryProviderGetTelemetryResponse
2870 {
2871 #[inline]
2872 unsafe fn encode(
2873 self,
2874 encoder: &mut fidl::encoding::Encoder<'_, D>,
2875 offset: usize,
2876 _depth: fidl::encoding::Depth,
2877 ) -> fidl::Result<()> {
2878 encoder.debug_check_bounds::<TelemetryProviderGetTelemetryResponse>(offset);
2879 fidl::encoding::Encode::<TelemetryProviderGetTelemetryResponse, D>::encode(
2881 (<Telemetry as fidl::encoding::ValueTypeMarker>::borrow(&self.telemetry),),
2882 encoder,
2883 offset,
2884 _depth,
2885 )
2886 }
2887 }
2888 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Telemetry, D>>
2889 fidl::encoding::Encode<TelemetryProviderGetTelemetryResponse, D> for (T0,)
2890 {
2891 #[inline]
2892 unsafe fn encode(
2893 self,
2894 encoder: &mut fidl::encoding::Encoder<'_, D>,
2895 offset: usize,
2896 depth: fidl::encoding::Depth,
2897 ) -> fidl::Result<()> {
2898 encoder.debug_check_bounds::<TelemetryProviderGetTelemetryResponse>(offset);
2899 self.0.encode(encoder, offset + 0, depth)?;
2903 Ok(())
2904 }
2905 }
2906
2907 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2908 for TelemetryProviderGetTelemetryResponse
2909 {
2910 #[inline(always)]
2911 fn new_empty() -> Self {
2912 Self { telemetry: fidl::new_empty!(Telemetry, D) }
2913 }
2914
2915 #[inline]
2916 unsafe fn decode(
2917 &mut self,
2918 decoder: &mut fidl::encoding::Decoder<'_, D>,
2919 offset: usize,
2920 _depth: fidl::encoding::Depth,
2921 ) -> fidl::Result<()> {
2922 decoder.debug_check_bounds::<Self>(offset);
2923 fidl::decode!(Telemetry, D, &mut self.telemetry, decoder, offset + 0, _depth)?;
2925 Ok(())
2926 }
2927 }
2928
2929 impl BeaconInfo {
2930 #[inline(always)]
2931 fn max_ordinal_present(&self) -> u64 {
2932 if let Some(_) = self.lqi {
2933 return 4;
2934 }
2935 if let Some(_) = self.rssi {
2936 return 3;
2937 }
2938 if let Some(_) = self.identity {
2939 return 2;
2940 }
2941 if let Some(_) = self.address {
2942 return 1;
2943 }
2944 0
2945 }
2946 }
2947
2948 impl fidl::encoding::ValueTypeMarker for BeaconInfo {
2949 type Borrowed<'a> = &'a Self;
2950 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2951 value
2952 }
2953 }
2954
2955 unsafe impl fidl::encoding::TypeMarker for BeaconInfo {
2956 type Owned = Self;
2957
2958 #[inline(always)]
2959 fn inline_align(_context: fidl::encoding::Context) -> usize {
2960 8
2961 }
2962
2963 #[inline(always)]
2964 fn inline_size(_context: fidl::encoding::Context) -> usize {
2965 16
2966 }
2967 }
2968
2969 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BeaconInfo, D>
2970 for &BeaconInfo
2971 {
2972 unsafe fn encode(
2973 self,
2974 encoder: &mut fidl::encoding::Encoder<'_, D>,
2975 offset: usize,
2976 mut depth: fidl::encoding::Depth,
2977 ) -> fidl::Result<()> {
2978 encoder.debug_check_bounds::<BeaconInfo>(offset);
2979 let max_ordinal: u64 = self.max_ordinal_present();
2981 encoder.write_num(max_ordinal, offset);
2982 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2983 if max_ordinal == 0 {
2985 return Ok(());
2986 }
2987 depth.increment()?;
2988 let envelope_size = 8;
2989 let bytes_len = max_ordinal as usize * envelope_size;
2990 #[allow(unused_variables)]
2991 let offset = encoder.out_of_line_offset(bytes_len);
2992 let mut _prev_end_offset: usize = 0;
2993 if 1 > max_ordinal {
2994 return Ok(());
2995 }
2996
2997 let cur_offset: usize = (1 - 1) * envelope_size;
3000
3001 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3003
3004 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan__common::MacAddress, D>(
3009 self.address.as_ref().map(<fidl_fuchsia_lowpan__common::MacAddress as fidl::encoding::ValueTypeMarker>::borrow),
3010 encoder, offset + cur_offset, depth
3011 )?;
3012
3013 _prev_end_offset = cur_offset + envelope_size;
3014 if 2 > max_ordinal {
3015 return Ok(());
3016 }
3017
3018 let cur_offset: usize = (2 - 1) * envelope_size;
3021
3022 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3024
3025 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan_device__common::Identity, D>(
3030 self.identity.as_ref().map(<fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::ValueTypeMarker>::borrow),
3031 encoder, offset + cur_offset, depth
3032 )?;
3033
3034 _prev_end_offset = cur_offset + envelope_size;
3035 if 3 > max_ordinal {
3036 return Ok(());
3037 }
3038
3039 let cur_offset: usize = (3 - 1) * envelope_size;
3042
3043 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3045
3046 fidl::encoding::encode_in_envelope_optional::<i8, D>(
3051 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
3052 encoder,
3053 offset + cur_offset,
3054 depth,
3055 )?;
3056
3057 _prev_end_offset = cur_offset + envelope_size;
3058 if 4 > max_ordinal {
3059 return Ok(());
3060 }
3061
3062 let cur_offset: usize = (4 - 1) * envelope_size;
3065
3066 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3068
3069 fidl::encoding::encode_in_envelope_optional::<u8, D>(
3074 self.lqi.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
3075 encoder,
3076 offset + cur_offset,
3077 depth,
3078 )?;
3079
3080 _prev_end_offset = cur_offset + envelope_size;
3081
3082 Ok(())
3083 }
3084 }
3085
3086 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BeaconInfo {
3087 #[inline(always)]
3088 fn new_empty() -> Self {
3089 Self::default()
3090 }
3091
3092 unsafe fn decode(
3093 &mut self,
3094 decoder: &mut fidl::encoding::Decoder<'_, D>,
3095 offset: usize,
3096 mut depth: fidl::encoding::Depth,
3097 ) -> fidl::Result<()> {
3098 decoder.debug_check_bounds::<Self>(offset);
3099 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3100 None => return Err(fidl::Error::NotNullable),
3101 Some(len) => len,
3102 };
3103 if len == 0 {
3105 return Ok(());
3106 };
3107 depth.increment()?;
3108 let envelope_size = 8;
3109 let bytes_len = len * envelope_size;
3110 let offset = decoder.out_of_line_offset(bytes_len)?;
3111 let mut _next_ordinal_to_read = 0;
3113 let mut next_offset = offset;
3114 let end_offset = offset + bytes_len;
3115 _next_ordinal_to_read += 1;
3116 if next_offset >= end_offset {
3117 return Ok(());
3118 }
3119
3120 while _next_ordinal_to_read < 1 {
3122 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3123 _next_ordinal_to_read += 1;
3124 next_offset += envelope_size;
3125 }
3126
3127 let next_out_of_line = decoder.next_out_of_line();
3128 let handles_before = decoder.remaining_handles();
3129 if let Some((inlined, num_bytes, num_handles)) =
3130 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3131 {
3132 let member_inline_size = <fidl_fuchsia_lowpan__common::MacAddress as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3133 if inlined != (member_inline_size <= 4) {
3134 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3135 }
3136 let inner_offset;
3137 let mut inner_depth = depth.clone();
3138 if inlined {
3139 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3140 inner_offset = next_offset;
3141 } else {
3142 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3143 inner_depth.increment()?;
3144 }
3145 let val_ref = self.address.get_or_insert_with(|| {
3146 fidl::new_empty!(fidl_fuchsia_lowpan__common::MacAddress, D)
3147 });
3148 fidl::decode!(
3149 fidl_fuchsia_lowpan__common::MacAddress,
3150 D,
3151 val_ref,
3152 decoder,
3153 inner_offset,
3154 inner_depth
3155 )?;
3156 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3157 {
3158 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3159 }
3160 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3161 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3162 }
3163 }
3164
3165 next_offset += envelope_size;
3166 _next_ordinal_to_read += 1;
3167 if next_offset >= end_offset {
3168 return Ok(());
3169 }
3170
3171 while _next_ordinal_to_read < 2 {
3173 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3174 _next_ordinal_to_read += 1;
3175 next_offset += envelope_size;
3176 }
3177
3178 let next_out_of_line = decoder.next_out_of_line();
3179 let handles_before = decoder.remaining_handles();
3180 if let Some((inlined, num_bytes, num_handles)) =
3181 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3182 {
3183 let member_inline_size = <fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3184 if inlined != (member_inline_size <= 4) {
3185 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3186 }
3187 let inner_offset;
3188 let mut inner_depth = depth.clone();
3189 if inlined {
3190 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3191 inner_offset = next_offset;
3192 } else {
3193 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3194 inner_depth.increment()?;
3195 }
3196 let val_ref = self.identity.get_or_insert_with(|| {
3197 fidl::new_empty!(fidl_fuchsia_lowpan_device__common::Identity, D)
3198 });
3199 fidl::decode!(
3200 fidl_fuchsia_lowpan_device__common::Identity,
3201 D,
3202 val_ref,
3203 decoder,
3204 inner_offset,
3205 inner_depth
3206 )?;
3207 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3208 {
3209 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3210 }
3211 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3212 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3213 }
3214 }
3215
3216 next_offset += envelope_size;
3217 _next_ordinal_to_read += 1;
3218 if next_offset >= end_offset {
3219 return Ok(());
3220 }
3221
3222 while _next_ordinal_to_read < 3 {
3224 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3225 _next_ordinal_to_read += 1;
3226 next_offset += envelope_size;
3227 }
3228
3229 let next_out_of_line = decoder.next_out_of_line();
3230 let handles_before = decoder.remaining_handles();
3231 if let Some((inlined, num_bytes, num_handles)) =
3232 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3233 {
3234 let member_inline_size =
3235 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3236 if inlined != (member_inline_size <= 4) {
3237 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3238 }
3239 let inner_offset;
3240 let mut inner_depth = depth.clone();
3241 if inlined {
3242 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3243 inner_offset = next_offset;
3244 } else {
3245 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3246 inner_depth.increment()?;
3247 }
3248 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
3249 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
3250 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3251 {
3252 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3253 }
3254 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3255 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3256 }
3257 }
3258
3259 next_offset += envelope_size;
3260 _next_ordinal_to_read += 1;
3261 if next_offset >= end_offset {
3262 return Ok(());
3263 }
3264
3265 while _next_ordinal_to_read < 4 {
3267 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3268 _next_ordinal_to_read += 1;
3269 next_offset += envelope_size;
3270 }
3271
3272 let next_out_of_line = decoder.next_out_of_line();
3273 let handles_before = decoder.remaining_handles();
3274 if let Some((inlined, num_bytes, num_handles)) =
3275 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3276 {
3277 let member_inline_size =
3278 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3279 if inlined != (member_inline_size <= 4) {
3280 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3281 }
3282 let inner_offset;
3283 let mut inner_depth = depth.clone();
3284 if inlined {
3285 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3286 inner_offset = next_offset;
3287 } else {
3288 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3289 inner_depth.increment()?;
3290 }
3291 let val_ref = self.lqi.get_or_insert_with(|| fidl::new_empty!(u8, D));
3292 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
3293 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3294 {
3295 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3296 }
3297 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3298 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3299 }
3300 }
3301
3302 next_offset += envelope_size;
3303
3304 while next_offset < end_offset {
3306 _next_ordinal_to_read += 1;
3307 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3308 next_offset += envelope_size;
3309 }
3310
3311 Ok(())
3312 }
3313 }
3314
3315 impl BorderRoutingCounters {
3316 #[inline(always)]
3317 fn max_ordinal_present(&self) -> u64 {
3318 if let Some(_) = self.outbound_internet_bytes {
3319 return 18;
3320 }
3321 if let Some(_) = self.outbound_internet_packets {
3322 return 17;
3323 }
3324 if let Some(_) = self.inbound_internet_bytes {
3325 return 16;
3326 }
3327 if let Some(_) = self.inbound_internet_packets {
3328 return 15;
3329 }
3330 if let Some(_) = self.rs_tx_failure {
3331 return 14;
3332 }
3333 if let Some(_) = self.rs_tx_success {
3334 return 13;
3335 }
3336 if let Some(_) = self.rs_rx {
3337 return 12;
3338 }
3339 if let Some(_) = self.ra_tx_failure {
3340 return 11;
3341 }
3342 if let Some(_) = self.ra_tx_success {
3343 return 10;
3344 }
3345 if let Some(_) = self.ra_rx {
3346 return 9;
3347 }
3348 if let Some(_) = self.outbound_multicast_bytes {
3349 return 8;
3350 }
3351 if let Some(_) = self.outbound_multicast_packets {
3352 return 7;
3353 }
3354 if let Some(_) = self.outbound_unicast_bytes {
3355 return 6;
3356 }
3357 if let Some(_) = self.outbound_unicast_packets {
3358 return 5;
3359 }
3360 if let Some(_) = self.inbound_multicast_bytes {
3361 return 4;
3362 }
3363 if let Some(_) = self.inbound_multicast_packets {
3364 return 3;
3365 }
3366 if let Some(_) = self.inbound_unicast_bytes {
3367 return 2;
3368 }
3369 if let Some(_) = self.inbound_unicast_packets {
3370 return 1;
3371 }
3372 0
3373 }
3374 }
3375
3376 impl fidl::encoding::ValueTypeMarker for BorderRoutingCounters {
3377 type Borrowed<'a> = &'a Self;
3378 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3379 value
3380 }
3381 }
3382
3383 unsafe impl fidl::encoding::TypeMarker for BorderRoutingCounters {
3384 type Owned = Self;
3385
3386 #[inline(always)]
3387 fn inline_align(_context: fidl::encoding::Context) -> usize {
3388 8
3389 }
3390
3391 #[inline(always)]
3392 fn inline_size(_context: fidl::encoding::Context) -> usize {
3393 16
3394 }
3395 }
3396
3397 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRoutingCounters, D>
3398 for &BorderRoutingCounters
3399 {
3400 unsafe fn encode(
3401 self,
3402 encoder: &mut fidl::encoding::Encoder<'_, D>,
3403 offset: usize,
3404 mut depth: fidl::encoding::Depth,
3405 ) -> fidl::Result<()> {
3406 encoder.debug_check_bounds::<BorderRoutingCounters>(offset);
3407 let max_ordinal: u64 = self.max_ordinal_present();
3409 encoder.write_num(max_ordinal, offset);
3410 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3411 if max_ordinal == 0 {
3413 return Ok(());
3414 }
3415 depth.increment()?;
3416 let envelope_size = 8;
3417 let bytes_len = max_ordinal as usize * envelope_size;
3418 #[allow(unused_variables)]
3419 let offset = encoder.out_of_line_offset(bytes_len);
3420 let mut _prev_end_offset: usize = 0;
3421 if 1 > max_ordinal {
3422 return Ok(());
3423 }
3424
3425 let cur_offset: usize = (1 - 1) * envelope_size;
3428
3429 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3431
3432 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3437 self.inbound_unicast_packets
3438 .as_ref()
3439 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3440 encoder,
3441 offset + cur_offset,
3442 depth,
3443 )?;
3444
3445 _prev_end_offset = cur_offset + envelope_size;
3446 if 2 > max_ordinal {
3447 return Ok(());
3448 }
3449
3450 let cur_offset: usize = (2 - 1) * envelope_size;
3453
3454 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3456
3457 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3462 self.inbound_unicast_bytes
3463 .as_ref()
3464 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3465 encoder,
3466 offset + cur_offset,
3467 depth,
3468 )?;
3469
3470 _prev_end_offset = cur_offset + envelope_size;
3471 if 3 > max_ordinal {
3472 return Ok(());
3473 }
3474
3475 let cur_offset: usize = (3 - 1) * envelope_size;
3478
3479 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3481
3482 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3487 self.inbound_multicast_packets
3488 .as_ref()
3489 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3490 encoder,
3491 offset + cur_offset,
3492 depth,
3493 )?;
3494
3495 _prev_end_offset = cur_offset + envelope_size;
3496 if 4 > max_ordinal {
3497 return Ok(());
3498 }
3499
3500 let cur_offset: usize = (4 - 1) * envelope_size;
3503
3504 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3506
3507 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3512 self.inbound_multicast_bytes
3513 .as_ref()
3514 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3515 encoder,
3516 offset + cur_offset,
3517 depth,
3518 )?;
3519
3520 _prev_end_offset = cur_offset + envelope_size;
3521 if 5 > max_ordinal {
3522 return Ok(());
3523 }
3524
3525 let cur_offset: usize = (5 - 1) * envelope_size;
3528
3529 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3531
3532 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3537 self.outbound_unicast_packets
3538 .as_ref()
3539 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3540 encoder,
3541 offset + cur_offset,
3542 depth,
3543 )?;
3544
3545 _prev_end_offset = cur_offset + envelope_size;
3546 if 6 > max_ordinal {
3547 return Ok(());
3548 }
3549
3550 let cur_offset: usize = (6 - 1) * envelope_size;
3553
3554 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3556
3557 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3562 self.outbound_unicast_bytes
3563 .as_ref()
3564 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3565 encoder,
3566 offset + cur_offset,
3567 depth,
3568 )?;
3569
3570 _prev_end_offset = cur_offset + envelope_size;
3571 if 7 > max_ordinal {
3572 return Ok(());
3573 }
3574
3575 let cur_offset: usize = (7 - 1) * envelope_size;
3578
3579 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3581
3582 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3587 self.outbound_multicast_packets
3588 .as_ref()
3589 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3590 encoder,
3591 offset + cur_offset,
3592 depth,
3593 )?;
3594
3595 _prev_end_offset = cur_offset + envelope_size;
3596 if 8 > max_ordinal {
3597 return Ok(());
3598 }
3599
3600 let cur_offset: usize = (8 - 1) * envelope_size;
3603
3604 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3606
3607 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3612 self.outbound_multicast_bytes
3613 .as_ref()
3614 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3615 encoder,
3616 offset + cur_offset,
3617 depth,
3618 )?;
3619
3620 _prev_end_offset = cur_offset + envelope_size;
3621 if 9 > max_ordinal {
3622 return Ok(());
3623 }
3624
3625 let cur_offset: usize = (9 - 1) * envelope_size;
3628
3629 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3631
3632 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3637 self.ra_rx.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3638 encoder,
3639 offset + cur_offset,
3640 depth,
3641 )?;
3642
3643 _prev_end_offset = cur_offset + envelope_size;
3644 if 10 > max_ordinal {
3645 return Ok(());
3646 }
3647
3648 let cur_offset: usize = (10 - 1) * envelope_size;
3651
3652 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3654
3655 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3660 self.ra_tx_success.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3661 encoder,
3662 offset + cur_offset,
3663 depth,
3664 )?;
3665
3666 _prev_end_offset = cur_offset + envelope_size;
3667 if 11 > max_ordinal {
3668 return Ok(());
3669 }
3670
3671 let cur_offset: usize = (11 - 1) * envelope_size;
3674
3675 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3677
3678 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3683 self.ra_tx_failure.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3684 encoder,
3685 offset + cur_offset,
3686 depth,
3687 )?;
3688
3689 _prev_end_offset = cur_offset + envelope_size;
3690 if 12 > max_ordinal {
3691 return Ok(());
3692 }
3693
3694 let cur_offset: usize = (12 - 1) * envelope_size;
3697
3698 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3700
3701 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3706 self.rs_rx.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3707 encoder,
3708 offset + cur_offset,
3709 depth,
3710 )?;
3711
3712 _prev_end_offset = cur_offset + envelope_size;
3713 if 13 > max_ordinal {
3714 return Ok(());
3715 }
3716
3717 let cur_offset: usize = (13 - 1) * envelope_size;
3720
3721 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3723
3724 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3729 self.rs_tx_success.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3730 encoder,
3731 offset + cur_offset,
3732 depth,
3733 )?;
3734
3735 _prev_end_offset = cur_offset + envelope_size;
3736 if 14 > max_ordinal {
3737 return Ok(());
3738 }
3739
3740 let cur_offset: usize = (14 - 1) * envelope_size;
3743
3744 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3746
3747 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3752 self.rs_tx_failure.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3753 encoder,
3754 offset + cur_offset,
3755 depth,
3756 )?;
3757
3758 _prev_end_offset = cur_offset + envelope_size;
3759 if 15 > max_ordinal {
3760 return Ok(());
3761 }
3762
3763 let cur_offset: usize = (15 - 1) * envelope_size;
3766
3767 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3769
3770 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3775 self.inbound_internet_packets
3776 .as_ref()
3777 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3778 encoder,
3779 offset + cur_offset,
3780 depth,
3781 )?;
3782
3783 _prev_end_offset = cur_offset + envelope_size;
3784 if 16 > max_ordinal {
3785 return Ok(());
3786 }
3787
3788 let cur_offset: usize = (16 - 1) * envelope_size;
3791
3792 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3794
3795 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3800 self.inbound_internet_bytes
3801 .as_ref()
3802 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3803 encoder,
3804 offset + cur_offset,
3805 depth,
3806 )?;
3807
3808 _prev_end_offset = cur_offset + envelope_size;
3809 if 17 > max_ordinal {
3810 return Ok(());
3811 }
3812
3813 let cur_offset: usize = (17 - 1) * envelope_size;
3816
3817 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3819
3820 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3825 self.outbound_internet_packets
3826 .as_ref()
3827 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3828 encoder,
3829 offset + cur_offset,
3830 depth,
3831 )?;
3832
3833 _prev_end_offset = cur_offset + envelope_size;
3834 if 18 > max_ordinal {
3835 return Ok(());
3836 }
3837
3838 let cur_offset: usize = (18 - 1) * envelope_size;
3841
3842 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3844
3845 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3850 self.outbound_internet_bytes
3851 .as_ref()
3852 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3853 encoder,
3854 offset + cur_offset,
3855 depth,
3856 )?;
3857
3858 _prev_end_offset = cur_offset + envelope_size;
3859
3860 Ok(())
3861 }
3862 }
3863
3864 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRoutingCounters {
3865 #[inline(always)]
3866 fn new_empty() -> Self {
3867 Self::default()
3868 }
3869
3870 unsafe fn decode(
3871 &mut self,
3872 decoder: &mut fidl::encoding::Decoder<'_, D>,
3873 offset: usize,
3874 mut depth: fidl::encoding::Depth,
3875 ) -> fidl::Result<()> {
3876 decoder.debug_check_bounds::<Self>(offset);
3877 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3878 None => return Err(fidl::Error::NotNullable),
3879 Some(len) => len,
3880 };
3881 if len == 0 {
3883 return Ok(());
3884 };
3885 depth.increment()?;
3886 let envelope_size = 8;
3887 let bytes_len = len * envelope_size;
3888 let offset = decoder.out_of_line_offset(bytes_len)?;
3889 let mut _next_ordinal_to_read = 0;
3891 let mut next_offset = offset;
3892 let end_offset = offset + bytes_len;
3893 _next_ordinal_to_read += 1;
3894 if next_offset >= end_offset {
3895 return Ok(());
3896 }
3897
3898 while _next_ordinal_to_read < 1 {
3900 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3901 _next_ordinal_to_read += 1;
3902 next_offset += envelope_size;
3903 }
3904
3905 let next_out_of_line = decoder.next_out_of_line();
3906 let handles_before = decoder.remaining_handles();
3907 if let Some((inlined, num_bytes, num_handles)) =
3908 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3909 {
3910 let member_inline_size =
3911 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3912 if inlined != (member_inline_size <= 4) {
3913 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3914 }
3915 let inner_offset;
3916 let mut inner_depth = depth.clone();
3917 if inlined {
3918 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3919 inner_offset = next_offset;
3920 } else {
3921 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3922 inner_depth.increment()?;
3923 }
3924 let val_ref =
3925 self.inbound_unicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
3926 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3927 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3928 {
3929 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3930 }
3931 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3932 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3933 }
3934 }
3935
3936 next_offset += envelope_size;
3937 _next_ordinal_to_read += 1;
3938 if next_offset >= end_offset {
3939 return Ok(());
3940 }
3941
3942 while _next_ordinal_to_read < 2 {
3944 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3945 _next_ordinal_to_read += 1;
3946 next_offset += envelope_size;
3947 }
3948
3949 let next_out_of_line = decoder.next_out_of_line();
3950 let handles_before = decoder.remaining_handles();
3951 if let Some((inlined, num_bytes, num_handles)) =
3952 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3953 {
3954 let member_inline_size =
3955 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3956 if inlined != (member_inline_size <= 4) {
3957 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3958 }
3959 let inner_offset;
3960 let mut inner_depth = depth.clone();
3961 if inlined {
3962 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3963 inner_offset = next_offset;
3964 } else {
3965 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3966 inner_depth.increment()?;
3967 }
3968 let val_ref =
3969 self.inbound_unicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
3970 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3971 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3972 {
3973 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3974 }
3975 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3976 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3977 }
3978 }
3979
3980 next_offset += envelope_size;
3981 _next_ordinal_to_read += 1;
3982 if next_offset >= end_offset {
3983 return Ok(());
3984 }
3985
3986 while _next_ordinal_to_read < 3 {
3988 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3989 _next_ordinal_to_read += 1;
3990 next_offset += envelope_size;
3991 }
3992
3993 let next_out_of_line = decoder.next_out_of_line();
3994 let handles_before = decoder.remaining_handles();
3995 if let Some((inlined, num_bytes, num_handles)) =
3996 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3997 {
3998 let member_inline_size =
3999 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4000 if inlined != (member_inline_size <= 4) {
4001 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4002 }
4003 let inner_offset;
4004 let mut inner_depth = depth.clone();
4005 if inlined {
4006 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4007 inner_offset = next_offset;
4008 } else {
4009 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4010 inner_depth.increment()?;
4011 }
4012 let val_ref =
4013 self.inbound_multicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4014 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4015 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4016 {
4017 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4018 }
4019 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4020 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4021 }
4022 }
4023
4024 next_offset += envelope_size;
4025 _next_ordinal_to_read += 1;
4026 if next_offset >= end_offset {
4027 return Ok(());
4028 }
4029
4030 while _next_ordinal_to_read < 4 {
4032 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4033 _next_ordinal_to_read += 1;
4034 next_offset += envelope_size;
4035 }
4036
4037 let next_out_of_line = decoder.next_out_of_line();
4038 let handles_before = decoder.remaining_handles();
4039 if let Some((inlined, num_bytes, num_handles)) =
4040 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4041 {
4042 let member_inline_size =
4043 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4044 if inlined != (member_inline_size <= 4) {
4045 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4046 }
4047 let inner_offset;
4048 let mut inner_depth = depth.clone();
4049 if inlined {
4050 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4051 inner_offset = next_offset;
4052 } else {
4053 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4054 inner_depth.increment()?;
4055 }
4056 let val_ref =
4057 self.inbound_multicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4058 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4059 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4060 {
4061 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4062 }
4063 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4064 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4065 }
4066 }
4067
4068 next_offset += envelope_size;
4069 _next_ordinal_to_read += 1;
4070 if next_offset >= end_offset {
4071 return Ok(());
4072 }
4073
4074 while _next_ordinal_to_read < 5 {
4076 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4077 _next_ordinal_to_read += 1;
4078 next_offset += envelope_size;
4079 }
4080
4081 let next_out_of_line = decoder.next_out_of_line();
4082 let handles_before = decoder.remaining_handles();
4083 if let Some((inlined, num_bytes, num_handles)) =
4084 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4085 {
4086 let member_inline_size =
4087 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4088 if inlined != (member_inline_size <= 4) {
4089 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4090 }
4091 let inner_offset;
4092 let mut inner_depth = depth.clone();
4093 if inlined {
4094 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4095 inner_offset = next_offset;
4096 } else {
4097 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4098 inner_depth.increment()?;
4099 }
4100 let val_ref =
4101 self.outbound_unicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4102 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4103 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4104 {
4105 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4106 }
4107 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4108 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4109 }
4110 }
4111
4112 next_offset += envelope_size;
4113 _next_ordinal_to_read += 1;
4114 if next_offset >= end_offset {
4115 return Ok(());
4116 }
4117
4118 while _next_ordinal_to_read < 6 {
4120 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4121 _next_ordinal_to_read += 1;
4122 next_offset += envelope_size;
4123 }
4124
4125 let next_out_of_line = decoder.next_out_of_line();
4126 let handles_before = decoder.remaining_handles();
4127 if let Some((inlined, num_bytes, num_handles)) =
4128 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4129 {
4130 let member_inline_size =
4131 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4132 if inlined != (member_inline_size <= 4) {
4133 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4134 }
4135 let inner_offset;
4136 let mut inner_depth = depth.clone();
4137 if inlined {
4138 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4139 inner_offset = next_offset;
4140 } else {
4141 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4142 inner_depth.increment()?;
4143 }
4144 let val_ref =
4145 self.outbound_unicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4146 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4147 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4148 {
4149 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4150 }
4151 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4152 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4153 }
4154 }
4155
4156 next_offset += envelope_size;
4157 _next_ordinal_to_read += 1;
4158 if next_offset >= end_offset {
4159 return Ok(());
4160 }
4161
4162 while _next_ordinal_to_read < 7 {
4164 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4165 _next_ordinal_to_read += 1;
4166 next_offset += envelope_size;
4167 }
4168
4169 let next_out_of_line = decoder.next_out_of_line();
4170 let handles_before = decoder.remaining_handles();
4171 if let Some((inlined, num_bytes, num_handles)) =
4172 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4173 {
4174 let member_inline_size =
4175 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4176 if inlined != (member_inline_size <= 4) {
4177 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4178 }
4179 let inner_offset;
4180 let mut inner_depth = depth.clone();
4181 if inlined {
4182 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4183 inner_offset = next_offset;
4184 } else {
4185 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4186 inner_depth.increment()?;
4187 }
4188 let val_ref =
4189 self.outbound_multicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4190 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4191 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4192 {
4193 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4194 }
4195 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4196 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4197 }
4198 }
4199
4200 next_offset += envelope_size;
4201 _next_ordinal_to_read += 1;
4202 if next_offset >= end_offset {
4203 return Ok(());
4204 }
4205
4206 while _next_ordinal_to_read < 8 {
4208 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4209 _next_ordinal_to_read += 1;
4210 next_offset += envelope_size;
4211 }
4212
4213 let next_out_of_line = decoder.next_out_of_line();
4214 let handles_before = decoder.remaining_handles();
4215 if let Some((inlined, num_bytes, num_handles)) =
4216 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4217 {
4218 let member_inline_size =
4219 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4220 if inlined != (member_inline_size <= 4) {
4221 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4222 }
4223 let inner_offset;
4224 let mut inner_depth = depth.clone();
4225 if inlined {
4226 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4227 inner_offset = next_offset;
4228 } else {
4229 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4230 inner_depth.increment()?;
4231 }
4232 let val_ref =
4233 self.outbound_multicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4234 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4235 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4236 {
4237 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4238 }
4239 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4240 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4241 }
4242 }
4243
4244 next_offset += envelope_size;
4245 _next_ordinal_to_read += 1;
4246 if next_offset >= end_offset {
4247 return Ok(());
4248 }
4249
4250 while _next_ordinal_to_read < 9 {
4252 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4253 _next_ordinal_to_read += 1;
4254 next_offset += envelope_size;
4255 }
4256
4257 let next_out_of_line = decoder.next_out_of_line();
4258 let handles_before = decoder.remaining_handles();
4259 if let Some((inlined, num_bytes, num_handles)) =
4260 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4261 {
4262 let member_inline_size =
4263 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4264 if inlined != (member_inline_size <= 4) {
4265 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4266 }
4267 let inner_offset;
4268 let mut inner_depth = depth.clone();
4269 if inlined {
4270 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4271 inner_offset = next_offset;
4272 } else {
4273 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4274 inner_depth.increment()?;
4275 }
4276 let val_ref = self.ra_rx.get_or_insert_with(|| fidl::new_empty!(u32, D));
4277 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4278 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4279 {
4280 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4281 }
4282 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4283 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4284 }
4285 }
4286
4287 next_offset += envelope_size;
4288 _next_ordinal_to_read += 1;
4289 if next_offset >= end_offset {
4290 return Ok(());
4291 }
4292
4293 while _next_ordinal_to_read < 10 {
4295 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4296 _next_ordinal_to_read += 1;
4297 next_offset += envelope_size;
4298 }
4299
4300 let next_out_of_line = decoder.next_out_of_line();
4301 let handles_before = decoder.remaining_handles();
4302 if let Some((inlined, num_bytes, num_handles)) =
4303 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4304 {
4305 let member_inline_size =
4306 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4307 if inlined != (member_inline_size <= 4) {
4308 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4309 }
4310 let inner_offset;
4311 let mut inner_depth = depth.clone();
4312 if inlined {
4313 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4314 inner_offset = next_offset;
4315 } else {
4316 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4317 inner_depth.increment()?;
4318 }
4319 let val_ref = self.ra_tx_success.get_or_insert_with(|| fidl::new_empty!(u32, D));
4320 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4321 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4322 {
4323 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4324 }
4325 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4326 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4327 }
4328 }
4329
4330 next_offset += envelope_size;
4331 _next_ordinal_to_read += 1;
4332 if next_offset >= end_offset {
4333 return Ok(());
4334 }
4335
4336 while _next_ordinal_to_read < 11 {
4338 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4339 _next_ordinal_to_read += 1;
4340 next_offset += envelope_size;
4341 }
4342
4343 let next_out_of_line = decoder.next_out_of_line();
4344 let handles_before = decoder.remaining_handles();
4345 if let Some((inlined, num_bytes, num_handles)) =
4346 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4347 {
4348 let member_inline_size =
4349 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4350 if inlined != (member_inline_size <= 4) {
4351 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4352 }
4353 let inner_offset;
4354 let mut inner_depth = depth.clone();
4355 if inlined {
4356 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4357 inner_offset = next_offset;
4358 } else {
4359 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4360 inner_depth.increment()?;
4361 }
4362 let val_ref = self.ra_tx_failure.get_or_insert_with(|| fidl::new_empty!(u32, D));
4363 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4364 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4365 {
4366 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4367 }
4368 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4369 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4370 }
4371 }
4372
4373 next_offset += envelope_size;
4374 _next_ordinal_to_read += 1;
4375 if next_offset >= end_offset {
4376 return Ok(());
4377 }
4378
4379 while _next_ordinal_to_read < 12 {
4381 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4382 _next_ordinal_to_read += 1;
4383 next_offset += envelope_size;
4384 }
4385
4386 let next_out_of_line = decoder.next_out_of_line();
4387 let handles_before = decoder.remaining_handles();
4388 if let Some((inlined, num_bytes, num_handles)) =
4389 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4390 {
4391 let member_inline_size =
4392 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4393 if inlined != (member_inline_size <= 4) {
4394 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4395 }
4396 let inner_offset;
4397 let mut inner_depth = depth.clone();
4398 if inlined {
4399 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4400 inner_offset = next_offset;
4401 } else {
4402 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4403 inner_depth.increment()?;
4404 }
4405 let val_ref = self.rs_rx.get_or_insert_with(|| fidl::new_empty!(u32, D));
4406 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4407 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4408 {
4409 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4410 }
4411 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4412 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4413 }
4414 }
4415
4416 next_offset += envelope_size;
4417 _next_ordinal_to_read += 1;
4418 if next_offset >= end_offset {
4419 return Ok(());
4420 }
4421
4422 while _next_ordinal_to_read < 13 {
4424 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4425 _next_ordinal_to_read += 1;
4426 next_offset += envelope_size;
4427 }
4428
4429 let next_out_of_line = decoder.next_out_of_line();
4430 let handles_before = decoder.remaining_handles();
4431 if let Some((inlined, num_bytes, num_handles)) =
4432 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4433 {
4434 let member_inline_size =
4435 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4436 if inlined != (member_inline_size <= 4) {
4437 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4438 }
4439 let inner_offset;
4440 let mut inner_depth = depth.clone();
4441 if inlined {
4442 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4443 inner_offset = next_offset;
4444 } else {
4445 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4446 inner_depth.increment()?;
4447 }
4448 let val_ref = self.rs_tx_success.get_or_insert_with(|| fidl::new_empty!(u32, D));
4449 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4450 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4451 {
4452 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4453 }
4454 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4455 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4456 }
4457 }
4458
4459 next_offset += envelope_size;
4460 _next_ordinal_to_read += 1;
4461 if next_offset >= end_offset {
4462 return Ok(());
4463 }
4464
4465 while _next_ordinal_to_read < 14 {
4467 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4468 _next_ordinal_to_read += 1;
4469 next_offset += envelope_size;
4470 }
4471
4472 let next_out_of_line = decoder.next_out_of_line();
4473 let handles_before = decoder.remaining_handles();
4474 if let Some((inlined, num_bytes, num_handles)) =
4475 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4476 {
4477 let member_inline_size =
4478 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4479 if inlined != (member_inline_size <= 4) {
4480 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4481 }
4482 let inner_offset;
4483 let mut inner_depth = depth.clone();
4484 if inlined {
4485 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4486 inner_offset = next_offset;
4487 } else {
4488 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4489 inner_depth.increment()?;
4490 }
4491 let val_ref = self.rs_tx_failure.get_or_insert_with(|| fidl::new_empty!(u32, D));
4492 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4493 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4494 {
4495 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4496 }
4497 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4498 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4499 }
4500 }
4501
4502 next_offset += envelope_size;
4503 _next_ordinal_to_read += 1;
4504 if next_offset >= end_offset {
4505 return Ok(());
4506 }
4507
4508 while _next_ordinal_to_read < 15 {
4510 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4511 _next_ordinal_to_read += 1;
4512 next_offset += envelope_size;
4513 }
4514
4515 let next_out_of_line = decoder.next_out_of_line();
4516 let handles_before = decoder.remaining_handles();
4517 if let Some((inlined, num_bytes, num_handles)) =
4518 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4519 {
4520 let member_inline_size =
4521 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4522 if inlined != (member_inline_size <= 4) {
4523 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4524 }
4525 let inner_offset;
4526 let mut inner_depth = depth.clone();
4527 if inlined {
4528 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4529 inner_offset = next_offset;
4530 } else {
4531 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4532 inner_depth.increment()?;
4533 }
4534 let val_ref =
4535 self.inbound_internet_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4536 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4537 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4538 {
4539 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4540 }
4541 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4542 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4543 }
4544 }
4545
4546 next_offset += envelope_size;
4547 _next_ordinal_to_read += 1;
4548 if next_offset >= end_offset {
4549 return Ok(());
4550 }
4551
4552 while _next_ordinal_to_read < 16 {
4554 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4555 _next_ordinal_to_read += 1;
4556 next_offset += envelope_size;
4557 }
4558
4559 let next_out_of_line = decoder.next_out_of_line();
4560 let handles_before = decoder.remaining_handles();
4561 if let Some((inlined, num_bytes, num_handles)) =
4562 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4563 {
4564 let member_inline_size =
4565 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4566 if inlined != (member_inline_size <= 4) {
4567 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4568 }
4569 let inner_offset;
4570 let mut inner_depth = depth.clone();
4571 if inlined {
4572 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4573 inner_offset = next_offset;
4574 } else {
4575 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4576 inner_depth.increment()?;
4577 }
4578 let val_ref =
4579 self.inbound_internet_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4580 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4581 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4582 {
4583 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4584 }
4585 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4586 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4587 }
4588 }
4589
4590 next_offset += envelope_size;
4591 _next_ordinal_to_read += 1;
4592 if next_offset >= end_offset {
4593 return Ok(());
4594 }
4595
4596 while _next_ordinal_to_read < 17 {
4598 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4599 _next_ordinal_to_read += 1;
4600 next_offset += envelope_size;
4601 }
4602
4603 let next_out_of_line = decoder.next_out_of_line();
4604 let handles_before = decoder.remaining_handles();
4605 if let Some((inlined, num_bytes, num_handles)) =
4606 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4607 {
4608 let member_inline_size =
4609 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4610 if inlined != (member_inline_size <= 4) {
4611 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4612 }
4613 let inner_offset;
4614 let mut inner_depth = depth.clone();
4615 if inlined {
4616 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4617 inner_offset = next_offset;
4618 } else {
4619 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4620 inner_depth.increment()?;
4621 }
4622 let val_ref =
4623 self.outbound_internet_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4624 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4625 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4626 {
4627 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4628 }
4629 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4630 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4631 }
4632 }
4633
4634 next_offset += envelope_size;
4635 _next_ordinal_to_read += 1;
4636 if next_offset >= end_offset {
4637 return Ok(());
4638 }
4639
4640 while _next_ordinal_to_read < 18 {
4642 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4643 _next_ordinal_to_read += 1;
4644 next_offset += envelope_size;
4645 }
4646
4647 let next_out_of_line = decoder.next_out_of_line();
4648 let handles_before = decoder.remaining_handles();
4649 if let Some((inlined, num_bytes, num_handles)) =
4650 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4651 {
4652 let member_inline_size =
4653 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4654 if inlined != (member_inline_size <= 4) {
4655 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4656 }
4657 let inner_offset;
4658 let mut inner_depth = depth.clone();
4659 if inlined {
4660 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4661 inner_offset = next_offset;
4662 } else {
4663 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4664 inner_depth.increment()?;
4665 }
4666 let val_ref =
4667 self.outbound_internet_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4668 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4669 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4670 {
4671 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4672 }
4673 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4674 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4675 }
4676 }
4677
4678 next_offset += envelope_size;
4679
4680 while next_offset < end_offset {
4682 _next_ordinal_to_read += 1;
4683 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4684 next_offset += envelope_size;
4685 }
4686
4687 Ok(())
4688 }
4689 }
4690
4691 impl BorderRoutingNat64State {
4692 #[inline(always)]
4693 fn max_ordinal_present(&self) -> u64 {
4694 if let Some(_) = self.translator_state {
4695 return 2;
4696 }
4697 if let Some(_) = self.prefix_manager_state {
4698 return 1;
4699 }
4700 0
4701 }
4702 }
4703
4704 impl fidl::encoding::ValueTypeMarker for BorderRoutingNat64State {
4705 type Borrowed<'a> = &'a Self;
4706 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4707 value
4708 }
4709 }
4710
4711 unsafe impl fidl::encoding::TypeMarker for BorderRoutingNat64State {
4712 type Owned = Self;
4713
4714 #[inline(always)]
4715 fn inline_align(_context: fidl::encoding::Context) -> usize {
4716 8
4717 }
4718
4719 #[inline(always)]
4720 fn inline_size(_context: fidl::encoding::Context) -> usize {
4721 16
4722 }
4723 }
4724
4725 unsafe impl<D: fidl::encoding::ResourceDialect>
4726 fidl::encoding::Encode<BorderRoutingNat64State, D> for &BorderRoutingNat64State
4727 {
4728 unsafe fn encode(
4729 self,
4730 encoder: &mut fidl::encoding::Encoder<'_, D>,
4731 offset: usize,
4732 mut depth: fidl::encoding::Depth,
4733 ) -> fidl::Result<()> {
4734 encoder.debug_check_bounds::<BorderRoutingNat64State>(offset);
4735 let max_ordinal: u64 = self.max_ordinal_present();
4737 encoder.write_num(max_ordinal, offset);
4738 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4739 if max_ordinal == 0 {
4741 return Ok(());
4742 }
4743 depth.increment()?;
4744 let envelope_size = 8;
4745 let bytes_len = max_ordinal as usize * envelope_size;
4746 #[allow(unused_variables)]
4747 let offset = encoder.out_of_line_offset(bytes_len);
4748 let mut _prev_end_offset: usize = 0;
4749 if 1 > max_ordinal {
4750 return Ok(());
4751 }
4752
4753 let cur_offset: usize = (1 - 1) * envelope_size;
4756
4757 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4759
4760 fidl::encoding::encode_in_envelope_optional::<Nat64State, D>(
4765 self.prefix_manager_state
4766 .as_ref()
4767 .map(<Nat64State as fidl::encoding::ValueTypeMarker>::borrow),
4768 encoder,
4769 offset + cur_offset,
4770 depth,
4771 )?;
4772
4773 _prev_end_offset = cur_offset + envelope_size;
4774 if 2 > max_ordinal {
4775 return Ok(());
4776 }
4777
4778 let cur_offset: usize = (2 - 1) * envelope_size;
4781
4782 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4784
4785 fidl::encoding::encode_in_envelope_optional::<Nat64State, D>(
4790 self.translator_state
4791 .as_ref()
4792 .map(<Nat64State as fidl::encoding::ValueTypeMarker>::borrow),
4793 encoder,
4794 offset + cur_offset,
4795 depth,
4796 )?;
4797
4798 _prev_end_offset = cur_offset + envelope_size;
4799
4800 Ok(())
4801 }
4802 }
4803
4804 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4805 for BorderRoutingNat64State
4806 {
4807 #[inline(always)]
4808 fn new_empty() -> Self {
4809 Self::default()
4810 }
4811
4812 unsafe fn decode(
4813 &mut self,
4814 decoder: &mut fidl::encoding::Decoder<'_, D>,
4815 offset: usize,
4816 mut depth: fidl::encoding::Depth,
4817 ) -> fidl::Result<()> {
4818 decoder.debug_check_bounds::<Self>(offset);
4819 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4820 None => return Err(fidl::Error::NotNullable),
4821 Some(len) => len,
4822 };
4823 if len == 0 {
4825 return Ok(());
4826 };
4827 depth.increment()?;
4828 let envelope_size = 8;
4829 let bytes_len = len * envelope_size;
4830 let offset = decoder.out_of_line_offset(bytes_len)?;
4831 let mut _next_ordinal_to_read = 0;
4833 let mut next_offset = offset;
4834 let end_offset = offset + bytes_len;
4835 _next_ordinal_to_read += 1;
4836 if next_offset >= end_offset {
4837 return Ok(());
4838 }
4839
4840 while _next_ordinal_to_read < 1 {
4842 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4843 _next_ordinal_to_read += 1;
4844 next_offset += envelope_size;
4845 }
4846
4847 let next_out_of_line = decoder.next_out_of_line();
4848 let handles_before = decoder.remaining_handles();
4849 if let Some((inlined, num_bytes, num_handles)) =
4850 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4851 {
4852 let member_inline_size =
4853 <Nat64State as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4854 if inlined != (member_inline_size <= 4) {
4855 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4856 }
4857 let inner_offset;
4858 let mut inner_depth = depth.clone();
4859 if inlined {
4860 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4861 inner_offset = next_offset;
4862 } else {
4863 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4864 inner_depth.increment()?;
4865 }
4866 let val_ref = self
4867 .prefix_manager_state
4868 .get_or_insert_with(|| fidl::new_empty!(Nat64State, D));
4869 fidl::decode!(Nat64State, D, val_ref, decoder, inner_offset, inner_depth)?;
4870 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4871 {
4872 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4873 }
4874 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4875 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4876 }
4877 }
4878
4879 next_offset += envelope_size;
4880 _next_ordinal_to_read += 1;
4881 if next_offset >= end_offset {
4882 return Ok(());
4883 }
4884
4885 while _next_ordinal_to_read < 2 {
4887 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4888 _next_ordinal_to_read += 1;
4889 next_offset += envelope_size;
4890 }
4891
4892 let next_out_of_line = decoder.next_out_of_line();
4893 let handles_before = decoder.remaining_handles();
4894 if let Some((inlined, num_bytes, num_handles)) =
4895 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4896 {
4897 let member_inline_size =
4898 <Nat64State as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4899 if inlined != (member_inline_size <= 4) {
4900 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4901 }
4902 let inner_offset;
4903 let mut inner_depth = depth.clone();
4904 if inlined {
4905 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4906 inner_offset = next_offset;
4907 } else {
4908 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4909 inner_depth.increment()?;
4910 }
4911 let val_ref =
4912 self.translator_state.get_or_insert_with(|| fidl::new_empty!(Nat64State, D));
4913 fidl::decode!(Nat64State, D, val_ref, decoder, inner_offset, inner_depth)?;
4914 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4915 {
4916 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4917 }
4918 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4919 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4920 }
4921 }
4922
4923 next_offset += envelope_size;
4924
4925 while next_offset < end_offset {
4927 _next_ordinal_to_read += 1;
4928 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4929 next_offset += envelope_size;
4930 }
4931
4932 Ok(())
4933 }
4934 }
4935
4936 impl ChannelInfo {
4937 #[inline(always)]
4938 fn max_ordinal_present(&self) -> u64 {
4939 if let Some(_) = self.masked_by_regulatory_domain {
4940 return 6;
4941 }
4942 if let Some(_) = self.spectrum_bandwidth_hz {
4943 return 5;
4944 }
4945 if let Some(_) = self.spectrum_center_frequency_hz {
4946 return 4;
4947 }
4948 if let Some(_) = self.max_transmit_power_dbm {
4949 return 3;
4950 }
4951 if let Some(_) = self.id {
4952 return 2;
4953 }
4954 if let Some(_) = self.index {
4955 return 1;
4956 }
4957 0
4958 }
4959 }
4960
4961 impl fidl::encoding::ValueTypeMarker for ChannelInfo {
4962 type Borrowed<'a> = &'a Self;
4963 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4964 value
4965 }
4966 }
4967
4968 unsafe impl fidl::encoding::TypeMarker for ChannelInfo {
4969 type Owned = Self;
4970
4971 #[inline(always)]
4972 fn inline_align(_context: fidl::encoding::Context) -> usize {
4973 8
4974 }
4975
4976 #[inline(always)]
4977 fn inline_size(_context: fidl::encoding::Context) -> usize {
4978 16
4979 }
4980 }
4981
4982 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChannelInfo, D>
4983 for &ChannelInfo
4984 {
4985 unsafe fn encode(
4986 self,
4987 encoder: &mut fidl::encoding::Encoder<'_, D>,
4988 offset: usize,
4989 mut depth: fidl::encoding::Depth,
4990 ) -> fidl::Result<()> {
4991 encoder.debug_check_bounds::<ChannelInfo>(offset);
4992 let max_ordinal: u64 = self.max_ordinal_present();
4994 encoder.write_num(max_ordinal, offset);
4995 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4996 if max_ordinal == 0 {
4998 return Ok(());
4999 }
5000 depth.increment()?;
5001 let envelope_size = 8;
5002 let bytes_len = max_ordinal as usize * envelope_size;
5003 #[allow(unused_variables)]
5004 let offset = encoder.out_of_line_offset(bytes_len);
5005 let mut _prev_end_offset: usize = 0;
5006 if 1 > max_ordinal {
5007 return Ok(());
5008 }
5009
5010 let cur_offset: usize = (1 - 1) * envelope_size;
5013
5014 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5016
5017 fidl::encoding::encode_in_envelope_optional::<u16, D>(
5022 self.index.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5023 encoder,
5024 offset + cur_offset,
5025 depth,
5026 )?;
5027
5028 _prev_end_offset = cur_offset + envelope_size;
5029 if 2 > max_ordinal {
5030 return Ok(());
5031 }
5032
5033 let cur_offset: usize = (2 - 1) * envelope_size;
5036
5037 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5039
5040 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<16>, D>(
5045 self.id.as_ref().map(
5046 <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow,
5047 ),
5048 encoder,
5049 offset + cur_offset,
5050 depth,
5051 )?;
5052
5053 _prev_end_offset = cur_offset + envelope_size;
5054 if 3 > max_ordinal {
5055 return Ok(());
5056 }
5057
5058 let cur_offset: usize = (3 - 1) * envelope_size;
5061
5062 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5064
5065 fidl::encoding::encode_in_envelope_optional::<i8, D>(
5070 self.max_transmit_power_dbm
5071 .as_ref()
5072 .map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
5073 encoder,
5074 offset + cur_offset,
5075 depth,
5076 )?;
5077
5078 _prev_end_offset = cur_offset + envelope_size;
5079 if 4 > max_ordinal {
5080 return Ok(());
5081 }
5082
5083 let cur_offset: usize = (4 - 1) * envelope_size;
5086
5087 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5089
5090 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5095 self.spectrum_center_frequency_hz
5096 .as_ref()
5097 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5098 encoder,
5099 offset + cur_offset,
5100 depth,
5101 )?;
5102
5103 _prev_end_offset = cur_offset + envelope_size;
5104 if 5 > max_ordinal {
5105 return Ok(());
5106 }
5107
5108 let cur_offset: usize = (5 - 1) * envelope_size;
5111
5112 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5114
5115 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5120 self.spectrum_bandwidth_hz
5121 .as_ref()
5122 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5123 encoder,
5124 offset + cur_offset,
5125 depth,
5126 )?;
5127
5128 _prev_end_offset = cur_offset + envelope_size;
5129 if 6 > max_ordinal {
5130 return Ok(());
5131 }
5132
5133 let cur_offset: usize = (6 - 1) * envelope_size;
5136
5137 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5139
5140 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5145 self.masked_by_regulatory_domain
5146 .as_ref()
5147 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5148 encoder,
5149 offset + cur_offset,
5150 depth,
5151 )?;
5152
5153 _prev_end_offset = cur_offset + envelope_size;
5154
5155 Ok(())
5156 }
5157 }
5158
5159 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChannelInfo {
5160 #[inline(always)]
5161 fn new_empty() -> Self {
5162 Self::default()
5163 }
5164
5165 unsafe fn decode(
5166 &mut self,
5167 decoder: &mut fidl::encoding::Decoder<'_, D>,
5168 offset: usize,
5169 mut depth: fidl::encoding::Depth,
5170 ) -> fidl::Result<()> {
5171 decoder.debug_check_bounds::<Self>(offset);
5172 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5173 None => return Err(fidl::Error::NotNullable),
5174 Some(len) => len,
5175 };
5176 if len == 0 {
5178 return Ok(());
5179 };
5180 depth.increment()?;
5181 let envelope_size = 8;
5182 let bytes_len = len * envelope_size;
5183 let offset = decoder.out_of_line_offset(bytes_len)?;
5184 let mut _next_ordinal_to_read = 0;
5186 let mut next_offset = offset;
5187 let end_offset = offset + bytes_len;
5188 _next_ordinal_to_read += 1;
5189 if next_offset >= end_offset {
5190 return Ok(());
5191 }
5192
5193 while _next_ordinal_to_read < 1 {
5195 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5196 _next_ordinal_to_read += 1;
5197 next_offset += envelope_size;
5198 }
5199
5200 let next_out_of_line = decoder.next_out_of_line();
5201 let handles_before = decoder.remaining_handles();
5202 if let Some((inlined, num_bytes, num_handles)) =
5203 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5204 {
5205 let member_inline_size =
5206 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5207 if inlined != (member_inline_size <= 4) {
5208 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5209 }
5210 let inner_offset;
5211 let mut inner_depth = depth.clone();
5212 if inlined {
5213 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5214 inner_offset = next_offset;
5215 } else {
5216 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5217 inner_depth.increment()?;
5218 }
5219 let val_ref = self.index.get_or_insert_with(|| fidl::new_empty!(u16, D));
5220 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5221 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5222 {
5223 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5224 }
5225 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5226 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5227 }
5228 }
5229
5230 next_offset += envelope_size;
5231 _next_ordinal_to_read += 1;
5232 if next_offset >= end_offset {
5233 return Ok(());
5234 }
5235
5236 while _next_ordinal_to_read < 2 {
5238 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5239 _next_ordinal_to_read += 1;
5240 next_offset += envelope_size;
5241 }
5242
5243 let next_out_of_line = decoder.next_out_of_line();
5244 let handles_before = decoder.remaining_handles();
5245 if let Some((inlined, num_bytes, num_handles)) =
5246 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5247 {
5248 let member_inline_size =
5249 <fidl::encoding::BoundedString<16> as fidl::encoding::TypeMarker>::inline_size(
5250 decoder.context,
5251 );
5252 if inlined != (member_inline_size <= 4) {
5253 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5254 }
5255 let inner_offset;
5256 let mut inner_depth = depth.clone();
5257 if inlined {
5258 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5259 inner_offset = next_offset;
5260 } else {
5261 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5262 inner_depth.increment()?;
5263 }
5264 let val_ref = self
5265 .id
5266 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<16>, D));
5267 fidl::decode!(
5268 fidl::encoding::BoundedString<16>,
5269 D,
5270 val_ref,
5271 decoder,
5272 inner_offset,
5273 inner_depth
5274 )?;
5275 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5276 {
5277 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5278 }
5279 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5280 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5281 }
5282 }
5283
5284 next_offset += envelope_size;
5285 _next_ordinal_to_read += 1;
5286 if next_offset >= end_offset {
5287 return Ok(());
5288 }
5289
5290 while _next_ordinal_to_read < 3 {
5292 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5293 _next_ordinal_to_read += 1;
5294 next_offset += envelope_size;
5295 }
5296
5297 let next_out_of_line = decoder.next_out_of_line();
5298 let handles_before = decoder.remaining_handles();
5299 if let Some((inlined, num_bytes, num_handles)) =
5300 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5301 {
5302 let member_inline_size =
5303 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5304 if inlined != (member_inline_size <= 4) {
5305 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5306 }
5307 let inner_offset;
5308 let mut inner_depth = depth.clone();
5309 if inlined {
5310 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5311 inner_offset = next_offset;
5312 } else {
5313 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5314 inner_depth.increment()?;
5315 }
5316 let val_ref =
5317 self.max_transmit_power_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
5318 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
5319 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5320 {
5321 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5322 }
5323 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5324 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5325 }
5326 }
5327
5328 next_offset += envelope_size;
5329 _next_ordinal_to_read += 1;
5330 if next_offset >= end_offset {
5331 return Ok(());
5332 }
5333
5334 while _next_ordinal_to_read < 4 {
5336 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5337 _next_ordinal_to_read += 1;
5338 next_offset += envelope_size;
5339 }
5340
5341 let next_out_of_line = decoder.next_out_of_line();
5342 let handles_before = decoder.remaining_handles();
5343 if let Some((inlined, num_bytes, num_handles)) =
5344 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5345 {
5346 let member_inline_size =
5347 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5348 if inlined != (member_inline_size <= 4) {
5349 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5350 }
5351 let inner_offset;
5352 let mut inner_depth = depth.clone();
5353 if inlined {
5354 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5355 inner_offset = next_offset;
5356 } else {
5357 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5358 inner_depth.increment()?;
5359 }
5360 let val_ref = self
5361 .spectrum_center_frequency_hz
5362 .get_or_insert_with(|| fidl::new_empty!(u64, D));
5363 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5364 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5365 {
5366 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5367 }
5368 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5369 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5370 }
5371 }
5372
5373 next_offset += envelope_size;
5374 _next_ordinal_to_read += 1;
5375 if next_offset >= end_offset {
5376 return Ok(());
5377 }
5378
5379 while _next_ordinal_to_read < 5 {
5381 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5382 _next_ordinal_to_read += 1;
5383 next_offset += envelope_size;
5384 }
5385
5386 let next_out_of_line = decoder.next_out_of_line();
5387 let handles_before = decoder.remaining_handles();
5388 if let Some((inlined, num_bytes, num_handles)) =
5389 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5390 {
5391 let member_inline_size =
5392 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5393 if inlined != (member_inline_size <= 4) {
5394 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5395 }
5396 let inner_offset;
5397 let mut inner_depth = depth.clone();
5398 if inlined {
5399 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5400 inner_offset = next_offset;
5401 } else {
5402 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5403 inner_depth.increment()?;
5404 }
5405 let val_ref =
5406 self.spectrum_bandwidth_hz.get_or_insert_with(|| fidl::new_empty!(u64, D));
5407 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5408 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5409 {
5410 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5411 }
5412 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5413 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5414 }
5415 }
5416
5417 next_offset += envelope_size;
5418 _next_ordinal_to_read += 1;
5419 if next_offset >= end_offset {
5420 return Ok(());
5421 }
5422
5423 while _next_ordinal_to_read < 6 {
5425 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5426 _next_ordinal_to_read += 1;
5427 next_offset += envelope_size;
5428 }
5429
5430 let next_out_of_line = decoder.next_out_of_line();
5431 let handles_before = decoder.remaining_handles();
5432 if let Some((inlined, num_bytes, num_handles)) =
5433 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5434 {
5435 let member_inline_size =
5436 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5437 if inlined != (member_inline_size <= 4) {
5438 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5439 }
5440 let inner_offset;
5441 let mut inner_depth = depth.clone();
5442 if inlined {
5443 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5444 inner_offset = next_offset;
5445 } else {
5446 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5447 inner_depth.increment()?;
5448 }
5449 let val_ref = self
5450 .masked_by_regulatory_domain
5451 .get_or_insert_with(|| fidl::new_empty!(bool, D));
5452 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5453 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5454 {
5455 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5456 }
5457 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5458 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5459 }
5460 }
5461
5462 next_offset += envelope_size;
5463
5464 while next_offset < end_offset {
5466 _next_ordinal_to_read += 1;
5467 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5468 next_offset += envelope_size;
5469 }
5470
5471 Ok(())
5472 }
5473 }
5474
5475 impl Dhcp6PdInfo {
5476 #[inline(always)]
5477 fn max_ordinal_present(&self) -> u64 {
5478 if let Some(_) = self.hashed_pd_prefix {
5479 return 3;
5480 }
5481 if let Some(_) = self.pd_processed_ra_info {
5482 return 2;
5483 }
5484 if let Some(_) = self.dhcp6pd_state {
5485 return 1;
5486 }
5487 0
5488 }
5489 }
5490
5491 impl fidl::encoding::ValueTypeMarker for Dhcp6PdInfo {
5492 type Borrowed<'a> = &'a Self;
5493 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5494 value
5495 }
5496 }
5497
5498 unsafe impl fidl::encoding::TypeMarker for Dhcp6PdInfo {
5499 type Owned = Self;
5500
5501 #[inline(always)]
5502 fn inline_align(_context: fidl::encoding::Context) -> usize {
5503 8
5504 }
5505
5506 #[inline(always)]
5507 fn inline_size(_context: fidl::encoding::Context) -> usize {
5508 16
5509 }
5510 }
5511
5512 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Dhcp6PdInfo, D>
5513 for &Dhcp6PdInfo
5514 {
5515 unsafe fn encode(
5516 self,
5517 encoder: &mut fidl::encoding::Encoder<'_, D>,
5518 offset: usize,
5519 mut depth: fidl::encoding::Depth,
5520 ) -> fidl::Result<()> {
5521 encoder.debug_check_bounds::<Dhcp6PdInfo>(offset);
5522 let max_ordinal: u64 = self.max_ordinal_present();
5524 encoder.write_num(max_ordinal, offset);
5525 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5526 if max_ordinal == 0 {
5528 return Ok(());
5529 }
5530 depth.increment()?;
5531 let envelope_size = 8;
5532 let bytes_len = max_ordinal as usize * envelope_size;
5533 #[allow(unused_variables)]
5534 let offset = encoder.out_of_line_offset(bytes_len);
5535 let mut _prev_end_offset: usize = 0;
5536 if 1 > max_ordinal {
5537 return Ok(());
5538 }
5539
5540 let cur_offset: usize = (1 - 1) * envelope_size;
5543
5544 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5546
5547 fidl::encoding::encode_in_envelope_optional::<Dhcp6PdState, D>(
5552 self.dhcp6pd_state
5553 .as_ref()
5554 .map(<Dhcp6PdState as fidl::encoding::ValueTypeMarker>::borrow),
5555 encoder,
5556 offset + cur_offset,
5557 depth,
5558 )?;
5559
5560 _prev_end_offset = cur_offset + envelope_size;
5561 if 2 > max_ordinal {
5562 return Ok(());
5563 }
5564
5565 let cur_offset: usize = (2 - 1) * envelope_size;
5568
5569 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5571
5572 fidl::encoding::encode_in_envelope_optional::<PdProcessedRaInfo, D>(
5577 self.pd_processed_ra_info
5578 .as_ref()
5579 .map(<PdProcessedRaInfo as fidl::encoding::ValueTypeMarker>::borrow),
5580 encoder,
5581 offset + cur_offset,
5582 depth,
5583 )?;
5584
5585 _prev_end_offset = cur_offset + envelope_size;
5586 if 3 > max_ordinal {
5587 return Ok(());
5588 }
5589
5590 let cur_offset: usize = (3 - 1) * envelope_size;
5593
5594 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5596
5597 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
5602 self.hashed_pd_prefix.as_ref().map(
5603 <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
5604 ),
5605 encoder,
5606 offset + cur_offset,
5607 depth,
5608 )?;
5609
5610 _prev_end_offset = cur_offset + envelope_size;
5611
5612 Ok(())
5613 }
5614 }
5615
5616 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dhcp6PdInfo {
5617 #[inline(always)]
5618 fn new_empty() -> Self {
5619 Self::default()
5620 }
5621
5622 unsafe fn decode(
5623 &mut self,
5624 decoder: &mut fidl::encoding::Decoder<'_, D>,
5625 offset: usize,
5626 mut depth: fidl::encoding::Depth,
5627 ) -> fidl::Result<()> {
5628 decoder.debug_check_bounds::<Self>(offset);
5629 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5630 None => return Err(fidl::Error::NotNullable),
5631 Some(len) => len,
5632 };
5633 if len == 0 {
5635 return Ok(());
5636 };
5637 depth.increment()?;
5638 let envelope_size = 8;
5639 let bytes_len = len * envelope_size;
5640 let offset = decoder.out_of_line_offset(bytes_len)?;
5641 let mut _next_ordinal_to_read = 0;
5643 let mut next_offset = offset;
5644 let end_offset = offset + bytes_len;
5645 _next_ordinal_to_read += 1;
5646 if next_offset >= end_offset {
5647 return Ok(());
5648 }
5649
5650 while _next_ordinal_to_read < 1 {
5652 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5653 _next_ordinal_to_read += 1;
5654 next_offset += envelope_size;
5655 }
5656
5657 let next_out_of_line = decoder.next_out_of_line();
5658 let handles_before = decoder.remaining_handles();
5659 if let Some((inlined, num_bytes, num_handles)) =
5660 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5661 {
5662 let member_inline_size =
5663 <Dhcp6PdState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5664 if inlined != (member_inline_size <= 4) {
5665 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5666 }
5667 let inner_offset;
5668 let mut inner_depth = depth.clone();
5669 if inlined {
5670 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5671 inner_offset = next_offset;
5672 } else {
5673 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5674 inner_depth.increment()?;
5675 }
5676 let val_ref =
5677 self.dhcp6pd_state.get_or_insert_with(|| fidl::new_empty!(Dhcp6PdState, D));
5678 fidl::decode!(Dhcp6PdState, D, val_ref, decoder, inner_offset, inner_depth)?;
5679 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5680 {
5681 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5682 }
5683 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5684 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5685 }
5686 }
5687
5688 next_offset += envelope_size;
5689 _next_ordinal_to_read += 1;
5690 if next_offset >= end_offset {
5691 return Ok(());
5692 }
5693
5694 while _next_ordinal_to_read < 2 {
5696 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5697 _next_ordinal_to_read += 1;
5698 next_offset += envelope_size;
5699 }
5700
5701 let next_out_of_line = decoder.next_out_of_line();
5702 let handles_before = decoder.remaining_handles();
5703 if let Some((inlined, num_bytes, num_handles)) =
5704 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5705 {
5706 let member_inline_size =
5707 <PdProcessedRaInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5708 if inlined != (member_inline_size <= 4) {
5709 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5710 }
5711 let inner_offset;
5712 let mut inner_depth = depth.clone();
5713 if inlined {
5714 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5715 inner_offset = next_offset;
5716 } else {
5717 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5718 inner_depth.increment()?;
5719 }
5720 let val_ref = self
5721 .pd_processed_ra_info
5722 .get_or_insert_with(|| fidl::new_empty!(PdProcessedRaInfo, D));
5723 fidl::decode!(PdProcessedRaInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
5724 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5725 {
5726 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5727 }
5728 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5729 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5730 }
5731 }
5732
5733 next_offset += envelope_size;
5734 _next_ordinal_to_read += 1;
5735 if next_offset >= end_offset {
5736 return Ok(());
5737 }
5738
5739 while _next_ordinal_to_read < 3 {
5741 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5742 _next_ordinal_to_read += 1;
5743 next_offset += envelope_size;
5744 }
5745
5746 let next_out_of_line = decoder.next_out_of_line();
5747 let handles_before = decoder.remaining_handles();
5748 if let Some((inlined, num_bytes, num_handles)) =
5749 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5750 {
5751 let member_inline_size =
5752 <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
5753 decoder.context,
5754 );
5755 if inlined != (member_inline_size <= 4) {
5756 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5757 }
5758 let inner_offset;
5759 let mut inner_depth = depth.clone();
5760 if inlined {
5761 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5762 inner_offset = next_offset;
5763 } else {
5764 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5765 inner_depth.increment()?;
5766 }
5767 let val_ref = self
5768 .hashed_pd_prefix
5769 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
5770 fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
5771 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5772 {
5773 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5774 }
5775 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5776 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5777 }
5778 }
5779
5780 next_offset += envelope_size;
5781
5782 while next_offset < end_offset {
5784 _next_ordinal_to_read += 1;
5785 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5786 next_offset += envelope_size;
5787 }
5788
5789 Ok(())
5790 }
5791 }
5792
5793 impl DnssdCounters {
5794 #[inline(always)]
5795 fn max_ordinal_present(&self) -> u64 {
5796 if let Some(_) = self.upstream_dns_counters {
5797 return 8;
5798 }
5799 if let Some(_) = self.resolved_by_srp {
5800 return 7;
5801 }
5802 if let Some(_) = self.other_response {
5803 return 6;
5804 }
5805 if let Some(_) = self.not_implemented_response {
5806 return 5;
5807 }
5808 if let Some(_) = self.name_error_response {
5809 return 4;
5810 }
5811 if let Some(_) = self.format_error_response {
5812 return 3;
5813 }
5814 if let Some(_) = self.server_failure_response {
5815 return 2;
5816 }
5817 if let Some(_) = self.success_response {
5818 return 1;
5819 }
5820 0
5821 }
5822 }
5823
5824 impl fidl::encoding::ValueTypeMarker for DnssdCounters {
5825 type Borrowed<'a> = &'a Self;
5826 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5827 value
5828 }
5829 }
5830
5831 unsafe impl fidl::encoding::TypeMarker for DnssdCounters {
5832 type Owned = Self;
5833
5834 #[inline(always)]
5835 fn inline_align(_context: fidl::encoding::Context) -> usize {
5836 8
5837 }
5838
5839 #[inline(always)]
5840 fn inline_size(_context: fidl::encoding::Context) -> usize {
5841 16
5842 }
5843 }
5844
5845 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DnssdCounters, D>
5846 for &DnssdCounters
5847 {
5848 unsafe fn encode(
5849 self,
5850 encoder: &mut fidl::encoding::Encoder<'_, D>,
5851 offset: usize,
5852 mut depth: fidl::encoding::Depth,
5853 ) -> fidl::Result<()> {
5854 encoder.debug_check_bounds::<DnssdCounters>(offset);
5855 let max_ordinal: u64 = self.max_ordinal_present();
5857 encoder.write_num(max_ordinal, offset);
5858 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5859 if max_ordinal == 0 {
5861 return Ok(());
5862 }
5863 depth.increment()?;
5864 let envelope_size = 8;
5865 let bytes_len = max_ordinal as usize * envelope_size;
5866 #[allow(unused_variables)]
5867 let offset = encoder.out_of_line_offset(bytes_len);
5868 let mut _prev_end_offset: usize = 0;
5869 if 1 > max_ordinal {
5870 return Ok(());
5871 }
5872
5873 let cur_offset: usize = (1 - 1) * envelope_size;
5876
5877 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5879
5880 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5885 self.success_response
5886 .as_ref()
5887 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5888 encoder,
5889 offset + cur_offset,
5890 depth,
5891 )?;
5892
5893 _prev_end_offset = cur_offset + envelope_size;
5894 if 2 > max_ordinal {
5895 return Ok(());
5896 }
5897
5898 let cur_offset: usize = (2 - 1) * envelope_size;
5901
5902 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5904
5905 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5910 self.server_failure_response
5911 .as_ref()
5912 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5913 encoder,
5914 offset + cur_offset,
5915 depth,
5916 )?;
5917
5918 _prev_end_offset = cur_offset + envelope_size;
5919 if 3 > max_ordinal {
5920 return Ok(());
5921 }
5922
5923 let cur_offset: usize = (3 - 1) * envelope_size;
5926
5927 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5929
5930 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5935 self.format_error_response
5936 .as_ref()
5937 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5938 encoder,
5939 offset + cur_offset,
5940 depth,
5941 )?;
5942
5943 _prev_end_offset = cur_offset + envelope_size;
5944 if 4 > max_ordinal {
5945 return Ok(());
5946 }
5947
5948 let cur_offset: usize = (4 - 1) * envelope_size;
5951
5952 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5954
5955 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5960 self.name_error_response
5961 .as_ref()
5962 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5963 encoder,
5964 offset + cur_offset,
5965 depth,
5966 )?;
5967
5968 _prev_end_offset = cur_offset + envelope_size;
5969 if 5 > max_ordinal {
5970 return Ok(());
5971 }
5972
5973 let cur_offset: usize = (5 - 1) * envelope_size;
5976
5977 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5979
5980 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5985 self.not_implemented_response
5986 .as_ref()
5987 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5988 encoder,
5989 offset + cur_offset,
5990 depth,
5991 )?;
5992
5993 _prev_end_offset = cur_offset + envelope_size;
5994 if 6 > max_ordinal {
5995 return Ok(());
5996 }
5997
5998 let cur_offset: usize = (6 - 1) * envelope_size;
6001
6002 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6004
6005 fidl::encoding::encode_in_envelope_optional::<u32, D>(
6010 self.other_response.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6011 encoder,
6012 offset + cur_offset,
6013 depth,
6014 )?;
6015
6016 _prev_end_offset = cur_offset + envelope_size;
6017 if 7 > max_ordinal {
6018 return Ok(());
6019 }
6020
6021 let cur_offset: usize = (7 - 1) * envelope_size;
6024
6025 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6027
6028 fidl::encoding::encode_in_envelope_optional::<u32, D>(
6033 self.resolved_by_srp.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6034 encoder,
6035 offset + cur_offset,
6036 depth,
6037 )?;
6038
6039 _prev_end_offset = cur_offset + envelope_size;
6040 if 8 > max_ordinal {
6041 return Ok(());
6042 }
6043
6044 let cur_offset: usize = (8 - 1) * envelope_size;
6047
6048 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6050
6051 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsCounters, D>(
6056 self.upstream_dns_counters
6057 .as_ref()
6058 .map(<UpstreamDnsCounters as fidl::encoding::ValueTypeMarker>::borrow),
6059 encoder,
6060 offset + cur_offset,
6061 depth,
6062 )?;
6063
6064 _prev_end_offset = cur_offset + envelope_size;
6065
6066 Ok(())
6067 }
6068 }
6069
6070 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DnssdCounters {
6071 #[inline(always)]
6072 fn new_empty() -> Self {
6073 Self::default()
6074 }
6075
6076 unsafe fn decode(
6077 &mut self,
6078 decoder: &mut fidl::encoding::Decoder<'_, D>,
6079 offset: usize,
6080 mut depth: fidl::encoding::Depth,
6081 ) -> fidl::Result<()> {
6082 decoder.debug_check_bounds::<Self>(offset);
6083 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6084 None => return Err(fidl::Error::NotNullable),
6085 Some(len) => len,
6086 };
6087 if len == 0 {
6089 return Ok(());
6090 };
6091 depth.increment()?;
6092 let envelope_size = 8;
6093 let bytes_len = len * envelope_size;
6094 let offset = decoder.out_of_line_offset(bytes_len)?;
6095 let mut _next_ordinal_to_read = 0;
6097 let mut next_offset = offset;
6098 let end_offset = offset + bytes_len;
6099 _next_ordinal_to_read += 1;
6100 if next_offset >= end_offset {
6101 return Ok(());
6102 }
6103
6104 while _next_ordinal_to_read < 1 {
6106 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6107 _next_ordinal_to_read += 1;
6108 next_offset += envelope_size;
6109 }
6110
6111 let next_out_of_line = decoder.next_out_of_line();
6112 let handles_before = decoder.remaining_handles();
6113 if let Some((inlined, num_bytes, num_handles)) =
6114 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6115 {
6116 let member_inline_size =
6117 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6118 if inlined != (member_inline_size <= 4) {
6119 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6120 }
6121 let inner_offset;
6122 let mut inner_depth = depth.clone();
6123 if inlined {
6124 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6125 inner_offset = next_offset;
6126 } else {
6127 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6128 inner_depth.increment()?;
6129 }
6130 let val_ref = self.success_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
6131 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6132 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6133 {
6134 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6135 }
6136 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6137 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6138 }
6139 }
6140
6141 next_offset += envelope_size;
6142 _next_ordinal_to_read += 1;
6143 if next_offset >= end_offset {
6144 return Ok(());
6145 }
6146
6147 while _next_ordinal_to_read < 2 {
6149 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6150 _next_ordinal_to_read += 1;
6151 next_offset += envelope_size;
6152 }
6153
6154 let next_out_of_line = decoder.next_out_of_line();
6155 let handles_before = decoder.remaining_handles();
6156 if let Some((inlined, num_bytes, num_handles)) =
6157 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6158 {
6159 let member_inline_size =
6160 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6161 if inlined != (member_inline_size <= 4) {
6162 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6163 }
6164 let inner_offset;
6165 let mut inner_depth = depth.clone();
6166 if inlined {
6167 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6168 inner_offset = next_offset;
6169 } else {
6170 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6171 inner_depth.increment()?;
6172 }
6173 let val_ref =
6174 self.server_failure_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
6175 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6176 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6177 {
6178 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6179 }
6180 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6181 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6182 }
6183 }
6184
6185 next_offset += envelope_size;
6186 _next_ordinal_to_read += 1;
6187 if next_offset >= end_offset {
6188 return Ok(());
6189 }
6190
6191 while _next_ordinal_to_read < 3 {
6193 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6194 _next_ordinal_to_read += 1;
6195 next_offset += envelope_size;
6196 }
6197
6198 let next_out_of_line = decoder.next_out_of_line();
6199 let handles_before = decoder.remaining_handles();
6200 if let Some((inlined, num_bytes, num_handles)) =
6201 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6202 {
6203 let member_inline_size =
6204 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6205 if inlined != (member_inline_size <= 4) {
6206 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6207 }
6208 let inner_offset;
6209 let mut inner_depth = depth.clone();
6210 if inlined {
6211 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6212 inner_offset = next_offset;
6213 } else {
6214 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6215 inner_depth.increment()?;
6216 }
6217 let val_ref =
6218 self.format_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
6219 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6220 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6221 {
6222 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6223 }
6224 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6225 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6226 }
6227 }
6228
6229 next_offset += envelope_size;
6230 _next_ordinal_to_read += 1;
6231 if next_offset >= end_offset {
6232 return Ok(());
6233 }
6234
6235 while _next_ordinal_to_read < 4 {
6237 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6238 _next_ordinal_to_read += 1;
6239 next_offset += envelope_size;
6240 }
6241
6242 let next_out_of_line = decoder.next_out_of_line();
6243 let handles_before = decoder.remaining_handles();
6244 if let Some((inlined, num_bytes, num_handles)) =
6245 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6246 {
6247 let member_inline_size =
6248 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6249 if inlined != (member_inline_size <= 4) {
6250 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6251 }
6252 let inner_offset;
6253 let mut inner_depth = depth.clone();
6254 if inlined {
6255 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6256 inner_offset = next_offset;
6257 } else {
6258 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6259 inner_depth.increment()?;
6260 }
6261 let val_ref =
6262 self.name_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
6263 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6264 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6265 {
6266 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6267 }
6268 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6269 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6270 }
6271 }
6272
6273 next_offset += envelope_size;
6274 _next_ordinal_to_read += 1;
6275 if next_offset >= end_offset {
6276 return Ok(());
6277 }
6278
6279 while _next_ordinal_to_read < 5 {
6281 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6282 _next_ordinal_to_read += 1;
6283 next_offset += envelope_size;
6284 }
6285
6286 let next_out_of_line = decoder.next_out_of_line();
6287 let handles_before = decoder.remaining_handles();
6288 if let Some((inlined, num_bytes, num_handles)) =
6289 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6290 {
6291 let member_inline_size =
6292 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6293 if inlined != (member_inline_size <= 4) {
6294 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6295 }
6296 let inner_offset;
6297 let mut inner_depth = depth.clone();
6298 if inlined {
6299 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6300 inner_offset = next_offset;
6301 } else {
6302 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6303 inner_depth.increment()?;
6304 }
6305 let val_ref =
6306 self.not_implemented_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
6307 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6308 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6309 {
6310 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6311 }
6312 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6313 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6314 }
6315 }
6316
6317 next_offset += envelope_size;
6318 _next_ordinal_to_read += 1;
6319 if next_offset >= end_offset {
6320 return Ok(());
6321 }
6322
6323 while _next_ordinal_to_read < 6 {
6325 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6326 _next_ordinal_to_read += 1;
6327 next_offset += envelope_size;
6328 }
6329
6330 let next_out_of_line = decoder.next_out_of_line();
6331 let handles_before = decoder.remaining_handles();
6332 if let Some((inlined, num_bytes, num_handles)) =
6333 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6334 {
6335 let member_inline_size =
6336 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6337 if inlined != (member_inline_size <= 4) {
6338 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6339 }
6340 let inner_offset;
6341 let mut inner_depth = depth.clone();
6342 if inlined {
6343 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6344 inner_offset = next_offset;
6345 } else {
6346 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6347 inner_depth.increment()?;
6348 }
6349 let val_ref = self.other_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
6350 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6351 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6352 {
6353 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6354 }
6355 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6356 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6357 }
6358 }
6359
6360 next_offset += envelope_size;
6361 _next_ordinal_to_read += 1;
6362 if next_offset >= end_offset {
6363 return Ok(());
6364 }
6365
6366 while _next_ordinal_to_read < 7 {
6368 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6369 _next_ordinal_to_read += 1;
6370 next_offset += envelope_size;
6371 }
6372
6373 let next_out_of_line = decoder.next_out_of_line();
6374 let handles_before = decoder.remaining_handles();
6375 if let Some((inlined, num_bytes, num_handles)) =
6376 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6377 {
6378 let member_inline_size =
6379 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6380 if inlined != (member_inline_size <= 4) {
6381 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6382 }
6383 let inner_offset;
6384 let mut inner_depth = depth.clone();
6385 if inlined {
6386 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6387 inner_offset = next_offset;
6388 } else {
6389 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6390 inner_depth.increment()?;
6391 }
6392 let val_ref = self.resolved_by_srp.get_or_insert_with(|| fidl::new_empty!(u32, D));
6393 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6394 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6395 {
6396 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6397 }
6398 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6399 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6400 }
6401 }
6402
6403 next_offset += envelope_size;
6404 _next_ordinal_to_read += 1;
6405 if next_offset >= end_offset {
6406 return Ok(());
6407 }
6408
6409 while _next_ordinal_to_read < 8 {
6411 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6412 _next_ordinal_to_read += 1;
6413 next_offset += envelope_size;
6414 }
6415
6416 let next_out_of_line = decoder.next_out_of_line();
6417 let handles_before = decoder.remaining_handles();
6418 if let Some((inlined, num_bytes, num_handles)) =
6419 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6420 {
6421 let member_inline_size =
6422 <UpstreamDnsCounters as fidl::encoding::TypeMarker>::inline_size(
6423 decoder.context,
6424 );
6425 if inlined != (member_inline_size <= 4) {
6426 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6427 }
6428 let inner_offset;
6429 let mut inner_depth = depth.clone();
6430 if inlined {
6431 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6432 inner_offset = next_offset;
6433 } else {
6434 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6435 inner_depth.increment()?;
6436 }
6437 let val_ref = self
6438 .upstream_dns_counters
6439 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsCounters, D));
6440 fidl::decode!(UpstreamDnsCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
6441 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6442 {
6443 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6444 }
6445 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6446 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6447 }
6448 }
6449
6450 next_offset += envelope_size;
6451
6452 while next_offset < end_offset {
6454 _next_ordinal_to_read += 1;
6455 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6456 next_offset += envelope_size;
6457 }
6458
6459 Ok(())
6460 }
6461 }
6462
6463 impl ExternalRoute {
6464 #[inline(always)]
6465 fn max_ordinal_present(&self) -> u64 {
6466 if let Some(_) = self.stable {
6467 return 3;
6468 }
6469 if let Some(_) = self.route_preference {
6470 return 2;
6471 }
6472 if let Some(_) = self.subnet {
6473 return 1;
6474 }
6475 0
6476 }
6477 }
6478
6479 impl fidl::encoding::ValueTypeMarker for ExternalRoute {
6480 type Borrowed<'a> = &'a Self;
6481 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6482 value
6483 }
6484 }
6485
6486 unsafe impl fidl::encoding::TypeMarker for ExternalRoute {
6487 type Owned = Self;
6488
6489 #[inline(always)]
6490 fn inline_align(_context: fidl::encoding::Context) -> usize {
6491 8
6492 }
6493
6494 #[inline(always)]
6495 fn inline_size(_context: fidl::encoding::Context) -> usize {
6496 16
6497 }
6498 }
6499
6500 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExternalRoute, D>
6501 for &ExternalRoute
6502 {
6503 unsafe fn encode(
6504 self,
6505 encoder: &mut fidl::encoding::Encoder<'_, D>,
6506 offset: usize,
6507 mut depth: fidl::encoding::Depth,
6508 ) -> fidl::Result<()> {
6509 encoder.debug_check_bounds::<ExternalRoute>(offset);
6510 let max_ordinal: u64 = self.max_ordinal_present();
6512 encoder.write_num(max_ordinal, offset);
6513 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6514 if max_ordinal == 0 {
6516 return Ok(());
6517 }
6518 depth.increment()?;
6519 let envelope_size = 8;
6520 let bytes_len = max_ordinal as usize * envelope_size;
6521 #[allow(unused_variables)]
6522 let offset = encoder.out_of_line_offset(bytes_len);
6523 let mut _prev_end_offset: usize = 0;
6524 if 1 > max_ordinal {
6525 return Ok(());
6526 }
6527
6528 let cur_offset: usize = (1 - 1) * envelope_size;
6531
6532 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6534
6535 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>(
6540 self.subnet.as_ref().map(<fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow),
6541 encoder, offset + cur_offset, depth
6542 )?;
6543
6544 _prev_end_offset = cur_offset + envelope_size;
6545 if 2 > max_ordinal {
6546 return Ok(());
6547 }
6548
6549 let cur_offset: usize = (2 - 1) * envelope_size;
6552
6553 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6555
6556 fidl::encoding::encode_in_envelope_optional::<RoutePreference, D>(
6561 self.route_preference
6562 .as_ref()
6563 .map(<RoutePreference as fidl::encoding::ValueTypeMarker>::borrow),
6564 encoder,
6565 offset + cur_offset,
6566 depth,
6567 )?;
6568
6569 _prev_end_offset = cur_offset + envelope_size;
6570 if 3 > max_ordinal {
6571 return Ok(());
6572 }
6573
6574 let cur_offset: usize = (3 - 1) * envelope_size;
6577
6578 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6580
6581 fidl::encoding::encode_in_envelope_optional::<bool, D>(
6586 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6587 encoder,
6588 offset + cur_offset,
6589 depth,
6590 )?;
6591
6592 _prev_end_offset = cur_offset + envelope_size;
6593
6594 Ok(())
6595 }
6596 }
6597
6598 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExternalRoute {
6599 #[inline(always)]
6600 fn new_empty() -> Self {
6601 Self::default()
6602 }
6603
6604 unsafe fn decode(
6605 &mut self,
6606 decoder: &mut fidl::encoding::Decoder<'_, D>,
6607 offset: usize,
6608 mut depth: fidl::encoding::Depth,
6609 ) -> fidl::Result<()> {
6610 decoder.debug_check_bounds::<Self>(offset);
6611 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6612 None => return Err(fidl::Error::NotNullable),
6613 Some(len) => len,
6614 };
6615 if len == 0 {
6617 return Ok(());
6618 };
6619 depth.increment()?;
6620 let envelope_size = 8;
6621 let bytes_len = len * envelope_size;
6622 let offset = decoder.out_of_line_offset(bytes_len)?;
6623 let mut _next_ordinal_to_read = 0;
6625 let mut next_offset = offset;
6626 let end_offset = offset + bytes_len;
6627 _next_ordinal_to_read += 1;
6628 if next_offset >= end_offset {
6629 return Ok(());
6630 }
6631
6632 while _next_ordinal_to_read < 1 {
6634 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6635 _next_ordinal_to_read += 1;
6636 next_offset += envelope_size;
6637 }
6638
6639 let next_out_of_line = decoder.next_out_of_line();
6640 let handles_before = decoder.remaining_handles();
6641 if let Some((inlined, num_bytes, num_handles)) =
6642 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6643 {
6644 let member_inline_size = <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6645 if inlined != (member_inline_size <= 4) {
6646 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6647 }
6648 let inner_offset;
6649 let mut inner_depth = depth.clone();
6650 if inlined {
6651 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6652 inner_offset = next_offset;
6653 } else {
6654 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6655 inner_depth.increment()?;
6656 }
6657 let val_ref = self.subnet.get_or_insert_with(|| {
6658 fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D)
6659 });
6660 fidl::decode!(
6661 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
6662 D,
6663 val_ref,
6664 decoder,
6665 inner_offset,
6666 inner_depth
6667 )?;
6668 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6669 {
6670 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6671 }
6672 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6673 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6674 }
6675 }
6676
6677 next_offset += envelope_size;
6678 _next_ordinal_to_read += 1;
6679 if next_offset >= end_offset {
6680 return Ok(());
6681 }
6682
6683 while _next_ordinal_to_read < 2 {
6685 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6686 _next_ordinal_to_read += 1;
6687 next_offset += envelope_size;
6688 }
6689
6690 let next_out_of_line = decoder.next_out_of_line();
6691 let handles_before = decoder.remaining_handles();
6692 if let Some((inlined, num_bytes, num_handles)) =
6693 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6694 {
6695 let member_inline_size =
6696 <RoutePreference as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6697 if inlined != (member_inline_size <= 4) {
6698 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6699 }
6700 let inner_offset;
6701 let mut inner_depth = depth.clone();
6702 if inlined {
6703 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6704 inner_offset = next_offset;
6705 } else {
6706 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6707 inner_depth.increment()?;
6708 }
6709 let val_ref = self
6710 .route_preference
6711 .get_or_insert_with(|| fidl::new_empty!(RoutePreference, D));
6712 fidl::decode!(RoutePreference, D, val_ref, decoder, inner_offset, inner_depth)?;
6713 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6714 {
6715 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6716 }
6717 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6718 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6719 }
6720 }
6721
6722 next_offset += envelope_size;
6723 _next_ordinal_to_read += 1;
6724 if next_offset >= end_offset {
6725 return Ok(());
6726 }
6727
6728 while _next_ordinal_to_read < 3 {
6730 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6731 _next_ordinal_to_read += 1;
6732 next_offset += envelope_size;
6733 }
6734
6735 let next_out_of_line = decoder.next_out_of_line();
6736 let handles_before = decoder.remaining_handles();
6737 if let Some((inlined, num_bytes, num_handles)) =
6738 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6739 {
6740 let member_inline_size =
6741 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6742 if inlined != (member_inline_size <= 4) {
6743 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6744 }
6745 let inner_offset;
6746 let mut inner_depth = depth.clone();
6747 if inlined {
6748 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6749 inner_offset = next_offset;
6750 } else {
6751 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6752 inner_depth.increment()?;
6753 }
6754 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
6755 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6756 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6757 {
6758 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6759 }
6760 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6761 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6762 }
6763 }
6764
6765 next_offset += envelope_size;
6766
6767 while next_offset < end_offset {
6769 _next_ordinal_to_read += 1;
6770 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6771 next_offset += envelope_size;
6772 }
6773
6774 Ok(())
6775 }
6776 }
6777
6778 impl JoinerCommissioningParams {
6779 #[inline(always)]
6780 fn max_ordinal_present(&self) -> u64 {
6781 if let Some(_) = self.vendor_data_string {
6782 return 6;
6783 }
6784 if let Some(_) = self.vendor_sw_version {
6785 return 5;
6786 }
6787 if let Some(_) = self.vendor_model {
6788 return 4;
6789 }
6790 if let Some(_) = self.vendor_name {
6791 return 3;
6792 }
6793 if let Some(_) = self.provisioning_url {
6794 return 2;
6795 }
6796 if let Some(_) = self.pskd {
6797 return 1;
6798 }
6799 0
6800 }
6801 }
6802
6803 impl fidl::encoding::ValueTypeMarker for JoinerCommissioningParams {
6804 type Borrowed<'a> = &'a Self;
6805 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6806 value
6807 }
6808 }
6809
6810 unsafe impl fidl::encoding::TypeMarker for JoinerCommissioningParams {
6811 type Owned = Self;
6812
6813 #[inline(always)]
6814 fn inline_align(_context: fidl::encoding::Context) -> usize {
6815 8
6816 }
6817
6818 #[inline(always)]
6819 fn inline_size(_context: fidl::encoding::Context) -> usize {
6820 16
6821 }
6822 }
6823
6824 unsafe impl<D: fidl::encoding::ResourceDialect>
6825 fidl::encoding::Encode<JoinerCommissioningParams, D> for &JoinerCommissioningParams
6826 {
6827 unsafe fn encode(
6828 self,
6829 encoder: &mut fidl::encoding::Encoder<'_, D>,
6830 offset: usize,
6831 mut depth: fidl::encoding::Depth,
6832 ) -> fidl::Result<()> {
6833 encoder.debug_check_bounds::<JoinerCommissioningParams>(offset);
6834 let max_ordinal: u64 = self.max_ordinal_present();
6836 encoder.write_num(max_ordinal, offset);
6837 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6838 if max_ordinal == 0 {
6840 return Ok(());
6841 }
6842 depth.increment()?;
6843 let envelope_size = 8;
6844 let bytes_len = max_ordinal as usize * envelope_size;
6845 #[allow(unused_variables)]
6846 let offset = encoder.out_of_line_offset(bytes_len);
6847 let mut _prev_end_offset: usize = 0;
6848 if 1 > max_ordinal {
6849 return Ok(());
6850 }
6851
6852 let cur_offset: usize = (1 - 1) * envelope_size;
6855
6856 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6858
6859 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
6864 self.pskd.as_ref().map(
6865 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
6866 ),
6867 encoder,
6868 offset + cur_offset,
6869 depth,
6870 )?;
6871
6872 _prev_end_offset = cur_offset + envelope_size;
6873 if 2 > max_ordinal {
6874 return Ok(());
6875 }
6876
6877 let cur_offset: usize = (2 - 1) * envelope_size;
6880
6881 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6883
6884 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
6889 self.provisioning_url.as_ref().map(
6890 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
6891 ),
6892 encoder,
6893 offset + cur_offset,
6894 depth,
6895 )?;
6896
6897 _prev_end_offset = cur_offset + envelope_size;
6898 if 3 > max_ordinal {
6899 return Ok(());
6900 }
6901
6902 let cur_offset: usize = (3 - 1) * envelope_size;
6905
6906 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6908
6909 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
6914 self.vendor_name.as_ref().map(
6915 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
6916 ),
6917 encoder,
6918 offset + cur_offset,
6919 depth,
6920 )?;
6921
6922 _prev_end_offset = cur_offset + envelope_size;
6923 if 4 > max_ordinal {
6924 return Ok(());
6925 }
6926
6927 let cur_offset: usize = (4 - 1) * envelope_size;
6930
6931 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6933
6934 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
6939 self.vendor_model.as_ref().map(
6940 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
6941 ),
6942 encoder,
6943 offset + cur_offset,
6944 depth,
6945 )?;
6946
6947 _prev_end_offset = cur_offset + envelope_size;
6948 if 5 > max_ordinal {
6949 return Ok(());
6950 }
6951
6952 let cur_offset: usize = (5 - 1) * envelope_size;
6955
6956 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6958
6959 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<16>, D>(
6964 self.vendor_sw_version.as_ref().map(
6965 <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow,
6966 ),
6967 encoder,
6968 offset + cur_offset,
6969 depth,
6970 )?;
6971
6972 _prev_end_offset = cur_offset + envelope_size;
6973 if 6 > max_ordinal {
6974 return Ok(());
6975 }
6976
6977 let cur_offset: usize = (6 - 1) * envelope_size;
6980
6981 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6983
6984 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
6989 self.vendor_data_string.as_ref().map(
6990 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
6991 ),
6992 encoder,
6993 offset + cur_offset,
6994 depth,
6995 )?;
6996
6997 _prev_end_offset = cur_offset + envelope_size;
6998
6999 Ok(())
7000 }
7001 }
7002
7003 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7004 for JoinerCommissioningParams
7005 {
7006 #[inline(always)]
7007 fn new_empty() -> Self {
7008 Self::default()
7009 }
7010
7011 unsafe fn decode(
7012 &mut self,
7013 decoder: &mut fidl::encoding::Decoder<'_, D>,
7014 offset: usize,
7015 mut depth: fidl::encoding::Depth,
7016 ) -> fidl::Result<()> {
7017 decoder.debug_check_bounds::<Self>(offset);
7018 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7019 None => return Err(fidl::Error::NotNullable),
7020 Some(len) => len,
7021 };
7022 if len == 0 {
7024 return Ok(());
7025 };
7026 depth.increment()?;
7027 let envelope_size = 8;
7028 let bytes_len = len * envelope_size;
7029 let offset = decoder.out_of_line_offset(bytes_len)?;
7030 let mut _next_ordinal_to_read = 0;
7032 let mut next_offset = offset;
7033 let end_offset = offset + bytes_len;
7034 _next_ordinal_to_read += 1;
7035 if next_offset >= end_offset {
7036 return Ok(());
7037 }
7038
7039 while _next_ordinal_to_read < 1 {
7041 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7042 _next_ordinal_to_read += 1;
7043 next_offset += envelope_size;
7044 }
7045
7046 let next_out_of_line = decoder.next_out_of_line();
7047 let handles_before = decoder.remaining_handles();
7048 if let Some((inlined, num_bytes, num_handles)) =
7049 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7050 {
7051 let member_inline_size =
7052 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
7053 decoder.context,
7054 );
7055 if inlined != (member_inline_size <= 4) {
7056 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7057 }
7058 let inner_offset;
7059 let mut inner_depth = depth.clone();
7060 if inlined {
7061 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7062 inner_offset = next_offset;
7063 } else {
7064 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7065 inner_depth.increment()?;
7066 }
7067 let val_ref = self
7068 .pskd
7069 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
7070 fidl::decode!(
7071 fidl::encoding::BoundedString<32>,
7072 D,
7073 val_ref,
7074 decoder,
7075 inner_offset,
7076 inner_depth
7077 )?;
7078 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7079 {
7080 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7081 }
7082 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7083 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7084 }
7085 }
7086
7087 next_offset += envelope_size;
7088 _next_ordinal_to_read += 1;
7089 if next_offset >= end_offset {
7090 return Ok(());
7091 }
7092
7093 while _next_ordinal_to_read < 2 {
7095 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7096 _next_ordinal_to_read += 1;
7097 next_offset += envelope_size;
7098 }
7099
7100 let next_out_of_line = decoder.next_out_of_line();
7101 let handles_before = decoder.remaining_handles();
7102 if let Some((inlined, num_bytes, num_handles)) =
7103 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7104 {
7105 let member_inline_size =
7106 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
7107 decoder.context,
7108 );
7109 if inlined != (member_inline_size <= 4) {
7110 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7111 }
7112 let inner_offset;
7113 let mut inner_depth = depth.clone();
7114 if inlined {
7115 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7116 inner_offset = next_offset;
7117 } else {
7118 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7119 inner_depth.increment()?;
7120 }
7121 let val_ref = self
7122 .provisioning_url
7123 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
7124 fidl::decode!(
7125 fidl::encoding::BoundedString<64>,
7126 D,
7127 val_ref,
7128 decoder,
7129 inner_offset,
7130 inner_depth
7131 )?;
7132 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7133 {
7134 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7135 }
7136 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7137 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7138 }
7139 }
7140
7141 next_offset += envelope_size;
7142 _next_ordinal_to_read += 1;
7143 if next_offset >= end_offset {
7144 return Ok(());
7145 }
7146
7147 while _next_ordinal_to_read < 3 {
7149 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7150 _next_ordinal_to_read += 1;
7151 next_offset += envelope_size;
7152 }
7153
7154 let next_out_of_line = decoder.next_out_of_line();
7155 let handles_before = decoder.remaining_handles();
7156 if let Some((inlined, num_bytes, num_handles)) =
7157 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7158 {
7159 let member_inline_size =
7160 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
7161 decoder.context,
7162 );
7163 if inlined != (member_inline_size <= 4) {
7164 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7165 }
7166 let inner_offset;
7167 let mut inner_depth = depth.clone();
7168 if inlined {
7169 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7170 inner_offset = next_offset;
7171 } else {
7172 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7173 inner_depth.increment()?;
7174 }
7175 let val_ref = self
7176 .vendor_name
7177 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
7178 fidl::decode!(
7179 fidl::encoding::BoundedString<32>,
7180 D,
7181 val_ref,
7182 decoder,
7183 inner_offset,
7184 inner_depth
7185 )?;
7186 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7187 {
7188 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7189 }
7190 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7191 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7192 }
7193 }
7194
7195 next_offset += envelope_size;
7196 _next_ordinal_to_read += 1;
7197 if next_offset >= end_offset {
7198 return Ok(());
7199 }
7200
7201 while _next_ordinal_to_read < 4 {
7203 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7204 _next_ordinal_to_read += 1;
7205 next_offset += envelope_size;
7206 }
7207
7208 let next_out_of_line = decoder.next_out_of_line();
7209 let handles_before = decoder.remaining_handles();
7210 if let Some((inlined, num_bytes, num_handles)) =
7211 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7212 {
7213 let member_inline_size =
7214 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
7215 decoder.context,
7216 );
7217 if inlined != (member_inline_size <= 4) {
7218 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7219 }
7220 let inner_offset;
7221 let mut inner_depth = depth.clone();
7222 if inlined {
7223 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7224 inner_offset = next_offset;
7225 } else {
7226 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7227 inner_depth.increment()?;
7228 }
7229 let val_ref = self
7230 .vendor_model
7231 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
7232 fidl::decode!(
7233 fidl::encoding::BoundedString<32>,
7234 D,
7235 val_ref,
7236 decoder,
7237 inner_offset,
7238 inner_depth
7239 )?;
7240 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7241 {
7242 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7243 }
7244 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7245 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7246 }
7247 }
7248
7249 next_offset += envelope_size;
7250 _next_ordinal_to_read += 1;
7251 if next_offset >= end_offset {
7252 return Ok(());
7253 }
7254
7255 while _next_ordinal_to_read < 5 {
7257 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7258 _next_ordinal_to_read += 1;
7259 next_offset += envelope_size;
7260 }
7261
7262 let next_out_of_line = decoder.next_out_of_line();
7263 let handles_before = decoder.remaining_handles();
7264 if let Some((inlined, num_bytes, num_handles)) =
7265 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7266 {
7267 let member_inline_size =
7268 <fidl::encoding::BoundedString<16> as fidl::encoding::TypeMarker>::inline_size(
7269 decoder.context,
7270 );
7271 if inlined != (member_inline_size <= 4) {
7272 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7273 }
7274 let inner_offset;
7275 let mut inner_depth = depth.clone();
7276 if inlined {
7277 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7278 inner_offset = next_offset;
7279 } else {
7280 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7281 inner_depth.increment()?;
7282 }
7283 let val_ref = self
7284 .vendor_sw_version
7285 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<16>, D));
7286 fidl::decode!(
7287 fidl::encoding::BoundedString<16>,
7288 D,
7289 val_ref,
7290 decoder,
7291 inner_offset,
7292 inner_depth
7293 )?;
7294 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7295 {
7296 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7297 }
7298 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7299 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7300 }
7301 }
7302
7303 next_offset += envelope_size;
7304 _next_ordinal_to_read += 1;
7305 if next_offset >= end_offset {
7306 return Ok(());
7307 }
7308
7309 while _next_ordinal_to_read < 6 {
7311 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7312 _next_ordinal_to_read += 1;
7313 next_offset += envelope_size;
7314 }
7315
7316 let next_out_of_line = decoder.next_out_of_line();
7317 let handles_before = decoder.remaining_handles();
7318 if let Some((inlined, num_bytes, num_handles)) =
7319 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7320 {
7321 let member_inline_size =
7322 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
7323 decoder.context,
7324 );
7325 if inlined != (member_inline_size <= 4) {
7326 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7327 }
7328 let inner_offset;
7329 let mut inner_depth = depth.clone();
7330 if inlined {
7331 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7332 inner_offset = next_offset;
7333 } else {
7334 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7335 inner_depth.increment()?;
7336 }
7337 let val_ref = self
7338 .vendor_data_string
7339 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
7340 fidl::decode!(
7341 fidl::encoding::BoundedString<64>,
7342 D,
7343 val_ref,
7344 decoder,
7345 inner_offset,
7346 inner_depth
7347 )?;
7348 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7349 {
7350 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7351 }
7352 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7353 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7354 }
7355 }
7356
7357 next_offset += envelope_size;
7358
7359 while next_offset < end_offset {
7361 _next_ordinal_to_read += 1;
7362 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7363 next_offset += envelope_size;
7364 }
7365
7366 Ok(())
7367 }
7368 }
7369
7370 impl LeaderData {
7371 #[inline(always)]
7372 fn max_ordinal_present(&self) -> u64 {
7373 if let Some(_) = self.router_id {
7374 return 5;
7375 }
7376 if let Some(_) = self.stable_network_data_version {
7377 return 4;
7378 }
7379 if let Some(_) = self.network_data_version {
7380 return 3;
7381 }
7382 if let Some(_) = self.weight {
7383 return 2;
7384 }
7385 if let Some(_) = self.partition_id {
7386 return 1;
7387 }
7388 0
7389 }
7390 }
7391
7392 impl fidl::encoding::ValueTypeMarker for LeaderData {
7393 type Borrowed<'a> = &'a Self;
7394 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7395 value
7396 }
7397 }
7398
7399 unsafe impl fidl::encoding::TypeMarker for LeaderData {
7400 type Owned = Self;
7401
7402 #[inline(always)]
7403 fn inline_align(_context: fidl::encoding::Context) -> usize {
7404 8
7405 }
7406
7407 #[inline(always)]
7408 fn inline_size(_context: fidl::encoding::Context) -> usize {
7409 16
7410 }
7411 }
7412
7413 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LeaderData, D>
7414 for &LeaderData
7415 {
7416 unsafe fn encode(
7417 self,
7418 encoder: &mut fidl::encoding::Encoder<'_, D>,
7419 offset: usize,
7420 mut depth: fidl::encoding::Depth,
7421 ) -> fidl::Result<()> {
7422 encoder.debug_check_bounds::<LeaderData>(offset);
7423 let max_ordinal: u64 = self.max_ordinal_present();
7425 encoder.write_num(max_ordinal, offset);
7426 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7427 if max_ordinal == 0 {
7429 return Ok(());
7430 }
7431 depth.increment()?;
7432 let envelope_size = 8;
7433 let bytes_len = max_ordinal as usize * envelope_size;
7434 #[allow(unused_variables)]
7435 let offset = encoder.out_of_line_offset(bytes_len);
7436 let mut _prev_end_offset: usize = 0;
7437 if 1 > max_ordinal {
7438 return Ok(());
7439 }
7440
7441 let cur_offset: usize = (1 - 1) * envelope_size;
7444
7445 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7447
7448 fidl::encoding::encode_in_envelope_optional::<u32, D>(
7453 self.partition_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7454 encoder,
7455 offset + cur_offset,
7456 depth,
7457 )?;
7458
7459 _prev_end_offset = cur_offset + envelope_size;
7460 if 2 > max_ordinal {
7461 return Ok(());
7462 }
7463
7464 let cur_offset: usize = (2 - 1) * envelope_size;
7467
7468 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7470
7471 fidl::encoding::encode_in_envelope_optional::<u8, D>(
7476 self.weight.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
7477 encoder,
7478 offset + cur_offset,
7479 depth,
7480 )?;
7481
7482 _prev_end_offset = cur_offset + envelope_size;
7483 if 3 > max_ordinal {
7484 return Ok(());
7485 }
7486
7487 let cur_offset: usize = (3 - 1) * envelope_size;
7490
7491 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7493
7494 fidl::encoding::encode_in_envelope_optional::<u8, D>(
7499 self.network_data_version
7500 .as_ref()
7501 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
7502 encoder,
7503 offset + cur_offset,
7504 depth,
7505 )?;
7506
7507 _prev_end_offset = cur_offset + envelope_size;
7508 if 4 > max_ordinal {
7509 return Ok(());
7510 }
7511
7512 let cur_offset: usize = (4 - 1) * envelope_size;
7515
7516 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7518
7519 fidl::encoding::encode_in_envelope_optional::<u8, D>(
7524 self.stable_network_data_version
7525 .as_ref()
7526 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
7527 encoder,
7528 offset + cur_offset,
7529 depth,
7530 )?;
7531
7532 _prev_end_offset = cur_offset + envelope_size;
7533 if 5 > max_ordinal {
7534 return Ok(());
7535 }
7536
7537 let cur_offset: usize = (5 - 1) * envelope_size;
7540
7541 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7543
7544 fidl::encoding::encode_in_envelope_optional::<u8, D>(
7549 self.router_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
7550 encoder,
7551 offset + cur_offset,
7552 depth,
7553 )?;
7554
7555 _prev_end_offset = cur_offset + envelope_size;
7556
7557 Ok(())
7558 }
7559 }
7560
7561 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LeaderData {
7562 #[inline(always)]
7563 fn new_empty() -> Self {
7564 Self::default()
7565 }
7566
7567 unsafe fn decode(
7568 &mut self,
7569 decoder: &mut fidl::encoding::Decoder<'_, D>,
7570 offset: usize,
7571 mut depth: fidl::encoding::Depth,
7572 ) -> fidl::Result<()> {
7573 decoder.debug_check_bounds::<Self>(offset);
7574 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7575 None => return Err(fidl::Error::NotNullable),
7576 Some(len) => len,
7577 };
7578 if len == 0 {
7580 return Ok(());
7581 };
7582 depth.increment()?;
7583 let envelope_size = 8;
7584 let bytes_len = len * envelope_size;
7585 let offset = decoder.out_of_line_offset(bytes_len)?;
7586 let mut _next_ordinal_to_read = 0;
7588 let mut next_offset = offset;
7589 let end_offset = offset + bytes_len;
7590 _next_ordinal_to_read += 1;
7591 if next_offset >= end_offset {
7592 return Ok(());
7593 }
7594
7595 while _next_ordinal_to_read < 1 {
7597 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7598 _next_ordinal_to_read += 1;
7599 next_offset += envelope_size;
7600 }
7601
7602 let next_out_of_line = decoder.next_out_of_line();
7603 let handles_before = decoder.remaining_handles();
7604 if let Some((inlined, num_bytes, num_handles)) =
7605 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7606 {
7607 let member_inline_size =
7608 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7609 if inlined != (member_inline_size <= 4) {
7610 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7611 }
7612 let inner_offset;
7613 let mut inner_depth = depth.clone();
7614 if inlined {
7615 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7616 inner_offset = next_offset;
7617 } else {
7618 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7619 inner_depth.increment()?;
7620 }
7621 let val_ref = self.partition_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
7622 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7623 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7624 {
7625 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7626 }
7627 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7628 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7629 }
7630 }
7631
7632 next_offset += envelope_size;
7633 _next_ordinal_to_read += 1;
7634 if next_offset >= end_offset {
7635 return Ok(());
7636 }
7637
7638 while _next_ordinal_to_read < 2 {
7640 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7641 _next_ordinal_to_read += 1;
7642 next_offset += envelope_size;
7643 }
7644
7645 let next_out_of_line = decoder.next_out_of_line();
7646 let handles_before = decoder.remaining_handles();
7647 if let Some((inlined, num_bytes, num_handles)) =
7648 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7649 {
7650 let member_inline_size =
7651 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7652 if inlined != (member_inline_size <= 4) {
7653 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7654 }
7655 let inner_offset;
7656 let mut inner_depth = depth.clone();
7657 if inlined {
7658 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7659 inner_offset = next_offset;
7660 } else {
7661 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7662 inner_depth.increment()?;
7663 }
7664 let val_ref = self.weight.get_or_insert_with(|| fidl::new_empty!(u8, D));
7665 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
7666 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7667 {
7668 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7669 }
7670 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7671 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7672 }
7673 }
7674
7675 next_offset += envelope_size;
7676 _next_ordinal_to_read += 1;
7677 if next_offset >= end_offset {
7678 return Ok(());
7679 }
7680
7681 while _next_ordinal_to_read < 3 {
7683 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7684 _next_ordinal_to_read += 1;
7685 next_offset += envelope_size;
7686 }
7687
7688 let next_out_of_line = decoder.next_out_of_line();
7689 let handles_before = decoder.remaining_handles();
7690 if let Some((inlined, num_bytes, num_handles)) =
7691 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7692 {
7693 let member_inline_size =
7694 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7695 if inlined != (member_inline_size <= 4) {
7696 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7697 }
7698 let inner_offset;
7699 let mut inner_depth = depth.clone();
7700 if inlined {
7701 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7702 inner_offset = next_offset;
7703 } else {
7704 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7705 inner_depth.increment()?;
7706 }
7707 let val_ref =
7708 self.network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
7709 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
7710 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7711 {
7712 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7713 }
7714 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7715 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7716 }
7717 }
7718
7719 next_offset += envelope_size;
7720 _next_ordinal_to_read += 1;
7721 if next_offset >= end_offset {
7722 return Ok(());
7723 }
7724
7725 while _next_ordinal_to_read < 4 {
7727 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7728 _next_ordinal_to_read += 1;
7729 next_offset += envelope_size;
7730 }
7731
7732 let next_out_of_line = decoder.next_out_of_line();
7733 let handles_before = decoder.remaining_handles();
7734 if let Some((inlined, num_bytes, num_handles)) =
7735 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7736 {
7737 let member_inline_size =
7738 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7739 if inlined != (member_inline_size <= 4) {
7740 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7741 }
7742 let inner_offset;
7743 let mut inner_depth = depth.clone();
7744 if inlined {
7745 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7746 inner_offset = next_offset;
7747 } else {
7748 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7749 inner_depth.increment()?;
7750 }
7751 let val_ref =
7752 self.stable_network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
7753 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
7754 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7755 {
7756 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7757 }
7758 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7759 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7760 }
7761 }
7762
7763 next_offset += envelope_size;
7764 _next_ordinal_to_read += 1;
7765 if next_offset >= end_offset {
7766 return Ok(());
7767 }
7768
7769 while _next_ordinal_to_read < 5 {
7771 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7772 _next_ordinal_to_read += 1;
7773 next_offset += envelope_size;
7774 }
7775
7776 let next_out_of_line = decoder.next_out_of_line();
7777 let handles_before = decoder.remaining_handles();
7778 if let Some((inlined, num_bytes, num_handles)) =
7779 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7780 {
7781 let member_inline_size =
7782 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7783 if inlined != (member_inline_size <= 4) {
7784 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7785 }
7786 let inner_offset;
7787 let mut inner_depth = depth.clone();
7788 if inlined {
7789 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7790 inner_offset = next_offset;
7791 } else {
7792 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7793 inner_depth.increment()?;
7794 }
7795 let val_ref = self.router_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
7796 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
7797 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7798 {
7799 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7800 }
7801 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7802 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7803 }
7804 }
7805
7806 next_offset += envelope_size;
7807
7808 while next_offset < end_offset {
7810 _next_ordinal_to_read += 1;
7811 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7812 next_offset += envelope_size;
7813 }
7814
7815 Ok(())
7816 }
7817 }
7818
7819 impl LinkMetricsEntry {
7820 #[inline(always)]
7821 fn max_ordinal_present(&self) -> u64 {
7822 if let Some(_) = self.rssi {
7823 return 2;
7824 }
7825 if let Some(_) = self.link_margin {
7826 return 1;
7827 }
7828 0
7829 }
7830 }
7831
7832 impl fidl::encoding::ValueTypeMarker for LinkMetricsEntry {
7833 type Borrowed<'a> = &'a Self;
7834 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7835 value
7836 }
7837 }
7838
7839 unsafe impl fidl::encoding::TypeMarker for LinkMetricsEntry {
7840 type Owned = Self;
7841
7842 #[inline(always)]
7843 fn inline_align(_context: fidl::encoding::Context) -> usize {
7844 8
7845 }
7846
7847 #[inline(always)]
7848 fn inline_size(_context: fidl::encoding::Context) -> usize {
7849 16
7850 }
7851 }
7852
7853 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LinkMetricsEntry, D>
7854 for &LinkMetricsEntry
7855 {
7856 unsafe fn encode(
7857 self,
7858 encoder: &mut fidl::encoding::Encoder<'_, D>,
7859 offset: usize,
7860 mut depth: fidl::encoding::Depth,
7861 ) -> fidl::Result<()> {
7862 encoder.debug_check_bounds::<LinkMetricsEntry>(offset);
7863 let max_ordinal: u64 = self.max_ordinal_present();
7865 encoder.write_num(max_ordinal, offset);
7866 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7867 if max_ordinal == 0 {
7869 return Ok(());
7870 }
7871 depth.increment()?;
7872 let envelope_size = 8;
7873 let bytes_len = max_ordinal as usize * envelope_size;
7874 #[allow(unused_variables)]
7875 let offset = encoder.out_of_line_offset(bytes_len);
7876 let mut _prev_end_offset: usize = 0;
7877 if 1 > max_ordinal {
7878 return Ok(());
7879 }
7880
7881 let cur_offset: usize = (1 - 1) * envelope_size;
7884
7885 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7887
7888 fidl::encoding::encode_in_envelope_optional::<u8, D>(
7893 self.link_margin.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
7894 encoder,
7895 offset + cur_offset,
7896 depth,
7897 )?;
7898
7899 _prev_end_offset = cur_offset + envelope_size;
7900 if 2 > max_ordinal {
7901 return Ok(());
7902 }
7903
7904 let cur_offset: usize = (2 - 1) * envelope_size;
7907
7908 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7910
7911 fidl::encoding::encode_in_envelope_optional::<i8, D>(
7916 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
7917 encoder,
7918 offset + cur_offset,
7919 depth,
7920 )?;
7921
7922 _prev_end_offset = cur_offset + envelope_size;
7923
7924 Ok(())
7925 }
7926 }
7927
7928 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LinkMetricsEntry {
7929 #[inline(always)]
7930 fn new_empty() -> Self {
7931 Self::default()
7932 }
7933
7934 unsafe fn decode(
7935 &mut self,
7936 decoder: &mut fidl::encoding::Decoder<'_, D>,
7937 offset: usize,
7938 mut depth: fidl::encoding::Depth,
7939 ) -> fidl::Result<()> {
7940 decoder.debug_check_bounds::<Self>(offset);
7941 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7942 None => return Err(fidl::Error::NotNullable),
7943 Some(len) => len,
7944 };
7945 if len == 0 {
7947 return Ok(());
7948 };
7949 depth.increment()?;
7950 let envelope_size = 8;
7951 let bytes_len = len * envelope_size;
7952 let offset = decoder.out_of_line_offset(bytes_len)?;
7953 let mut _next_ordinal_to_read = 0;
7955 let mut next_offset = offset;
7956 let end_offset = offset + bytes_len;
7957 _next_ordinal_to_read += 1;
7958 if next_offset >= end_offset {
7959 return Ok(());
7960 }
7961
7962 while _next_ordinal_to_read < 1 {
7964 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7965 _next_ordinal_to_read += 1;
7966 next_offset += envelope_size;
7967 }
7968
7969 let next_out_of_line = decoder.next_out_of_line();
7970 let handles_before = decoder.remaining_handles();
7971 if let Some((inlined, num_bytes, num_handles)) =
7972 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7973 {
7974 let member_inline_size =
7975 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7976 if inlined != (member_inline_size <= 4) {
7977 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7978 }
7979 let inner_offset;
7980 let mut inner_depth = depth.clone();
7981 if inlined {
7982 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7983 inner_offset = next_offset;
7984 } else {
7985 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7986 inner_depth.increment()?;
7987 }
7988 let val_ref = self.link_margin.get_or_insert_with(|| fidl::new_empty!(u8, D));
7989 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
7990 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7991 {
7992 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7993 }
7994 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7995 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7996 }
7997 }
7998
7999 next_offset += envelope_size;
8000 _next_ordinal_to_read += 1;
8001 if next_offset >= end_offset {
8002 return Ok(());
8003 }
8004
8005 while _next_ordinal_to_read < 2 {
8007 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8008 _next_ordinal_to_read += 1;
8009 next_offset += envelope_size;
8010 }
8011
8012 let next_out_of_line = decoder.next_out_of_line();
8013 let handles_before = decoder.remaining_handles();
8014 if let Some((inlined, num_bytes, num_handles)) =
8015 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8016 {
8017 let member_inline_size =
8018 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8019 if inlined != (member_inline_size <= 4) {
8020 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8021 }
8022 let inner_offset;
8023 let mut inner_depth = depth.clone();
8024 if inlined {
8025 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8026 inner_offset = next_offset;
8027 } else {
8028 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8029 inner_depth.increment()?;
8030 }
8031 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
8032 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
8033 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8034 {
8035 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8036 }
8037 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8038 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8039 }
8040 }
8041
8042 next_offset += envelope_size;
8043
8044 while next_offset < end_offset {
8046 _next_ordinal_to_read += 1;
8047 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8048 next_offset += envelope_size;
8049 }
8050
8051 Ok(())
8052 }
8053 }
8054
8055 impl Nat64ErrorCounters {
8056 #[inline(always)]
8057 fn max_ordinal_present(&self) -> u64 {
8058 if let Some(_) = self.no_mapping {
8059 return 4;
8060 }
8061 if let Some(_) = self.unsupported_protocol {
8062 return 3;
8063 }
8064 if let Some(_) = self.illegal_packet {
8065 return 2;
8066 }
8067 if let Some(_) = self.unknown {
8068 return 1;
8069 }
8070 0
8071 }
8072 }
8073
8074 impl fidl::encoding::ValueTypeMarker for Nat64ErrorCounters {
8075 type Borrowed<'a> = &'a Self;
8076 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8077 value
8078 }
8079 }
8080
8081 unsafe impl fidl::encoding::TypeMarker for Nat64ErrorCounters {
8082 type Owned = Self;
8083
8084 #[inline(always)]
8085 fn inline_align(_context: fidl::encoding::Context) -> usize {
8086 8
8087 }
8088
8089 #[inline(always)]
8090 fn inline_size(_context: fidl::encoding::Context) -> usize {
8091 16
8092 }
8093 }
8094
8095 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64ErrorCounters, D>
8096 for &Nat64ErrorCounters
8097 {
8098 unsafe fn encode(
8099 self,
8100 encoder: &mut fidl::encoding::Encoder<'_, D>,
8101 offset: usize,
8102 mut depth: fidl::encoding::Depth,
8103 ) -> fidl::Result<()> {
8104 encoder.debug_check_bounds::<Nat64ErrorCounters>(offset);
8105 let max_ordinal: u64 = self.max_ordinal_present();
8107 encoder.write_num(max_ordinal, offset);
8108 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8109 if max_ordinal == 0 {
8111 return Ok(());
8112 }
8113 depth.increment()?;
8114 let envelope_size = 8;
8115 let bytes_len = max_ordinal as usize * envelope_size;
8116 #[allow(unused_variables)]
8117 let offset = encoder.out_of_line_offset(bytes_len);
8118 let mut _prev_end_offset: usize = 0;
8119 if 1 > max_ordinal {
8120 return Ok(());
8121 }
8122
8123 let cur_offset: usize = (1 - 1) * envelope_size;
8126
8127 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8129
8130 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
8135 self.unknown
8136 .as_ref()
8137 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
8138 encoder,
8139 offset + cur_offset,
8140 depth,
8141 )?;
8142
8143 _prev_end_offset = cur_offset + envelope_size;
8144 if 2 > max_ordinal {
8145 return Ok(());
8146 }
8147
8148 let cur_offset: usize = (2 - 1) * envelope_size;
8151
8152 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8154
8155 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
8160 self.illegal_packet
8161 .as_ref()
8162 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
8163 encoder,
8164 offset + cur_offset,
8165 depth,
8166 )?;
8167
8168 _prev_end_offset = cur_offset + envelope_size;
8169 if 3 > max_ordinal {
8170 return Ok(());
8171 }
8172
8173 let cur_offset: usize = (3 - 1) * envelope_size;
8176
8177 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8179
8180 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
8185 self.unsupported_protocol
8186 .as_ref()
8187 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
8188 encoder,
8189 offset + cur_offset,
8190 depth,
8191 )?;
8192
8193 _prev_end_offset = cur_offset + envelope_size;
8194 if 4 > max_ordinal {
8195 return Ok(());
8196 }
8197
8198 let cur_offset: usize = (4 - 1) * envelope_size;
8201
8202 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8204
8205 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
8210 self.no_mapping
8211 .as_ref()
8212 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
8213 encoder,
8214 offset + cur_offset,
8215 depth,
8216 )?;
8217
8218 _prev_end_offset = cur_offset + envelope_size;
8219
8220 Ok(())
8221 }
8222 }
8223
8224 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64ErrorCounters {
8225 #[inline(always)]
8226 fn new_empty() -> Self {
8227 Self::default()
8228 }
8229
8230 unsafe fn decode(
8231 &mut self,
8232 decoder: &mut fidl::encoding::Decoder<'_, D>,
8233 offset: usize,
8234 mut depth: fidl::encoding::Depth,
8235 ) -> fidl::Result<()> {
8236 decoder.debug_check_bounds::<Self>(offset);
8237 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8238 None => return Err(fidl::Error::NotNullable),
8239 Some(len) => len,
8240 };
8241 if len == 0 {
8243 return Ok(());
8244 };
8245 depth.increment()?;
8246 let envelope_size = 8;
8247 let bytes_len = len * envelope_size;
8248 let offset = decoder.out_of_line_offset(bytes_len)?;
8249 let mut _next_ordinal_to_read = 0;
8251 let mut next_offset = offset;
8252 let end_offset = offset + bytes_len;
8253 _next_ordinal_to_read += 1;
8254 if next_offset >= end_offset {
8255 return Ok(());
8256 }
8257
8258 while _next_ordinal_to_read < 1 {
8260 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8261 _next_ordinal_to_read += 1;
8262 next_offset += envelope_size;
8263 }
8264
8265 let next_out_of_line = decoder.next_out_of_line();
8266 let handles_before = decoder.remaining_handles();
8267 if let Some((inlined, num_bytes, num_handles)) =
8268 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8269 {
8270 let member_inline_size =
8271 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
8272 decoder.context,
8273 );
8274 if inlined != (member_inline_size <= 4) {
8275 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8276 }
8277 let inner_offset;
8278 let mut inner_depth = depth.clone();
8279 if inlined {
8280 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8281 inner_offset = next_offset;
8282 } else {
8283 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8284 inner_depth.increment()?;
8285 }
8286 let val_ref =
8287 self.unknown.get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
8288 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
8289 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8290 {
8291 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8292 }
8293 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8294 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8295 }
8296 }
8297
8298 next_offset += envelope_size;
8299 _next_ordinal_to_read += 1;
8300 if next_offset >= end_offset {
8301 return Ok(());
8302 }
8303
8304 while _next_ordinal_to_read < 2 {
8306 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8307 _next_ordinal_to_read += 1;
8308 next_offset += envelope_size;
8309 }
8310
8311 let next_out_of_line = decoder.next_out_of_line();
8312 let handles_before = decoder.remaining_handles();
8313 if let Some((inlined, num_bytes, num_handles)) =
8314 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8315 {
8316 let member_inline_size =
8317 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
8318 decoder.context,
8319 );
8320 if inlined != (member_inline_size <= 4) {
8321 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8322 }
8323 let inner_offset;
8324 let mut inner_depth = depth.clone();
8325 if inlined {
8326 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8327 inner_offset = next_offset;
8328 } else {
8329 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8330 inner_depth.increment()?;
8331 }
8332 let val_ref = self
8333 .illegal_packet
8334 .get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
8335 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
8336 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8337 {
8338 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8339 }
8340 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8341 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8342 }
8343 }
8344
8345 next_offset += envelope_size;
8346 _next_ordinal_to_read += 1;
8347 if next_offset >= end_offset {
8348 return Ok(());
8349 }
8350
8351 while _next_ordinal_to_read < 3 {
8353 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8354 _next_ordinal_to_read += 1;
8355 next_offset += envelope_size;
8356 }
8357
8358 let next_out_of_line = decoder.next_out_of_line();
8359 let handles_before = decoder.remaining_handles();
8360 if let Some((inlined, num_bytes, num_handles)) =
8361 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8362 {
8363 let member_inline_size =
8364 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
8365 decoder.context,
8366 );
8367 if inlined != (member_inline_size <= 4) {
8368 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8369 }
8370 let inner_offset;
8371 let mut inner_depth = depth.clone();
8372 if inlined {
8373 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8374 inner_offset = next_offset;
8375 } else {
8376 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8377 inner_depth.increment()?;
8378 }
8379 let val_ref = self
8380 .unsupported_protocol
8381 .get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
8382 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
8383 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8384 {
8385 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8386 }
8387 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8388 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8389 }
8390 }
8391
8392 next_offset += envelope_size;
8393 _next_ordinal_to_read += 1;
8394 if next_offset >= end_offset {
8395 return Ok(());
8396 }
8397
8398 while _next_ordinal_to_read < 4 {
8400 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8401 _next_ordinal_to_read += 1;
8402 next_offset += envelope_size;
8403 }
8404
8405 let next_out_of_line = decoder.next_out_of_line();
8406 let handles_before = decoder.remaining_handles();
8407 if let Some((inlined, num_bytes, num_handles)) =
8408 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8409 {
8410 let member_inline_size =
8411 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
8412 decoder.context,
8413 );
8414 if inlined != (member_inline_size <= 4) {
8415 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8416 }
8417 let inner_offset;
8418 let mut inner_depth = depth.clone();
8419 if inlined {
8420 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8421 inner_offset = next_offset;
8422 } else {
8423 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8424 inner_depth.increment()?;
8425 }
8426 let val_ref =
8427 self.no_mapping.get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
8428 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
8429 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8430 {
8431 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8432 }
8433 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8434 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8435 }
8436 }
8437
8438 next_offset += envelope_size;
8439
8440 while next_offset < end_offset {
8442 _next_ordinal_to_read += 1;
8443 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8444 next_offset += envelope_size;
8445 }
8446
8447 Ok(())
8448 }
8449 }
8450
8451 impl Nat64Info {
8452 #[inline(always)]
8453 fn max_ordinal_present(&self) -> u64 {
8454 if let Some(_) = self.nat64_protocol_counters {
8455 return 4;
8456 }
8457 if let Some(_) = self.nat64_error_counters {
8458 return 3;
8459 }
8460 if let Some(_) = self.nat64_mappings {
8461 return 2;
8462 }
8463 if let Some(_) = self.nat64_state {
8464 return 1;
8465 }
8466 0
8467 }
8468 }
8469
8470 impl fidl::encoding::ValueTypeMarker for Nat64Info {
8471 type Borrowed<'a> = &'a Self;
8472 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8473 value
8474 }
8475 }
8476
8477 unsafe impl fidl::encoding::TypeMarker for Nat64Info {
8478 type Owned = Self;
8479
8480 #[inline(always)]
8481 fn inline_align(_context: fidl::encoding::Context) -> usize {
8482 8
8483 }
8484
8485 #[inline(always)]
8486 fn inline_size(_context: fidl::encoding::Context) -> usize {
8487 16
8488 }
8489 }
8490
8491 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64Info, D>
8492 for &Nat64Info
8493 {
8494 unsafe fn encode(
8495 self,
8496 encoder: &mut fidl::encoding::Encoder<'_, D>,
8497 offset: usize,
8498 mut depth: fidl::encoding::Depth,
8499 ) -> fidl::Result<()> {
8500 encoder.debug_check_bounds::<Nat64Info>(offset);
8501 let max_ordinal: u64 = self.max_ordinal_present();
8503 encoder.write_num(max_ordinal, offset);
8504 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8505 if max_ordinal == 0 {
8507 return Ok(());
8508 }
8509 depth.increment()?;
8510 let envelope_size = 8;
8511 let bytes_len = max_ordinal as usize * envelope_size;
8512 #[allow(unused_variables)]
8513 let offset = encoder.out_of_line_offset(bytes_len);
8514 let mut _prev_end_offset: usize = 0;
8515 if 1 > max_ordinal {
8516 return Ok(());
8517 }
8518
8519 let cur_offset: usize = (1 - 1) * envelope_size;
8522
8523 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8525
8526 fidl::encoding::encode_in_envelope_optional::<BorderRoutingNat64State, D>(
8531 self.nat64_state
8532 .as_ref()
8533 .map(<BorderRoutingNat64State as fidl::encoding::ValueTypeMarker>::borrow),
8534 encoder,
8535 offset + cur_offset,
8536 depth,
8537 )?;
8538
8539 _prev_end_offset = cur_offset + envelope_size;
8540 if 2 > max_ordinal {
8541 return Ok(());
8542 }
8543
8544 let cur_offset: usize = (2 - 1) * envelope_size;
8547
8548 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8550
8551 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Nat64Mapping>, D>(
8556 self.nat64_mappings.as_ref().map(<fidl::encoding::UnboundedVector<Nat64Mapping> as fidl::encoding::ValueTypeMarker>::borrow),
8557 encoder, offset + cur_offset, depth
8558 )?;
8559
8560 _prev_end_offset = cur_offset + envelope_size;
8561 if 3 > max_ordinal {
8562 return Ok(());
8563 }
8564
8565 let cur_offset: usize = (3 - 1) * envelope_size;
8568
8569 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8571
8572 fidl::encoding::encode_in_envelope_optional::<Nat64ErrorCounters, D>(
8577 self.nat64_error_counters
8578 .as_ref()
8579 .map(<Nat64ErrorCounters as fidl::encoding::ValueTypeMarker>::borrow),
8580 encoder,
8581 offset + cur_offset,
8582 depth,
8583 )?;
8584
8585 _prev_end_offset = cur_offset + envelope_size;
8586 if 4 > max_ordinal {
8587 return Ok(());
8588 }
8589
8590 let cur_offset: usize = (4 - 1) * envelope_size;
8593
8594 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8596
8597 fidl::encoding::encode_in_envelope_optional::<Nat64ProtocolCounters, D>(
8602 self.nat64_protocol_counters
8603 .as_ref()
8604 .map(<Nat64ProtocolCounters as fidl::encoding::ValueTypeMarker>::borrow),
8605 encoder,
8606 offset + cur_offset,
8607 depth,
8608 )?;
8609
8610 _prev_end_offset = cur_offset + envelope_size;
8611
8612 Ok(())
8613 }
8614 }
8615
8616 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64Info {
8617 #[inline(always)]
8618 fn new_empty() -> Self {
8619 Self::default()
8620 }
8621
8622 unsafe fn decode(
8623 &mut self,
8624 decoder: &mut fidl::encoding::Decoder<'_, D>,
8625 offset: usize,
8626 mut depth: fidl::encoding::Depth,
8627 ) -> fidl::Result<()> {
8628 decoder.debug_check_bounds::<Self>(offset);
8629 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8630 None => return Err(fidl::Error::NotNullable),
8631 Some(len) => len,
8632 };
8633 if len == 0 {
8635 return Ok(());
8636 };
8637 depth.increment()?;
8638 let envelope_size = 8;
8639 let bytes_len = len * envelope_size;
8640 let offset = decoder.out_of_line_offset(bytes_len)?;
8641 let mut _next_ordinal_to_read = 0;
8643 let mut next_offset = offset;
8644 let end_offset = offset + bytes_len;
8645 _next_ordinal_to_read += 1;
8646 if next_offset >= end_offset {
8647 return Ok(());
8648 }
8649
8650 while _next_ordinal_to_read < 1 {
8652 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8653 _next_ordinal_to_read += 1;
8654 next_offset += envelope_size;
8655 }
8656
8657 let next_out_of_line = decoder.next_out_of_line();
8658 let handles_before = decoder.remaining_handles();
8659 if let Some((inlined, num_bytes, num_handles)) =
8660 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8661 {
8662 let member_inline_size =
8663 <BorderRoutingNat64State as fidl::encoding::TypeMarker>::inline_size(
8664 decoder.context,
8665 );
8666 if inlined != (member_inline_size <= 4) {
8667 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8668 }
8669 let inner_offset;
8670 let mut inner_depth = depth.clone();
8671 if inlined {
8672 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8673 inner_offset = next_offset;
8674 } else {
8675 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8676 inner_depth.increment()?;
8677 }
8678 let val_ref = self
8679 .nat64_state
8680 .get_or_insert_with(|| fidl::new_empty!(BorderRoutingNat64State, D));
8681 fidl::decode!(
8682 BorderRoutingNat64State,
8683 D,
8684 val_ref,
8685 decoder,
8686 inner_offset,
8687 inner_depth
8688 )?;
8689 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8690 {
8691 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8692 }
8693 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8694 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8695 }
8696 }
8697
8698 next_offset += envelope_size;
8699 _next_ordinal_to_read += 1;
8700 if next_offset >= end_offset {
8701 return Ok(());
8702 }
8703
8704 while _next_ordinal_to_read < 2 {
8706 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8707 _next_ordinal_to_read += 1;
8708 next_offset += envelope_size;
8709 }
8710
8711 let next_out_of_line = decoder.next_out_of_line();
8712 let handles_before = decoder.remaining_handles();
8713 if let Some((inlined, num_bytes, num_handles)) =
8714 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8715 {
8716 let member_inline_size = <fidl::encoding::UnboundedVector<Nat64Mapping> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8717 if inlined != (member_inline_size <= 4) {
8718 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8719 }
8720 let inner_offset;
8721 let mut inner_depth = depth.clone();
8722 if inlined {
8723 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8724 inner_offset = next_offset;
8725 } else {
8726 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8727 inner_depth.increment()?;
8728 }
8729 let val_ref = self.nat64_mappings.get_or_insert_with(|| {
8730 fidl::new_empty!(fidl::encoding::UnboundedVector<Nat64Mapping>, D)
8731 });
8732 fidl::decode!(
8733 fidl::encoding::UnboundedVector<Nat64Mapping>,
8734 D,
8735 val_ref,
8736 decoder,
8737 inner_offset,
8738 inner_depth
8739 )?;
8740 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8741 {
8742 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8743 }
8744 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8745 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8746 }
8747 }
8748
8749 next_offset += envelope_size;
8750 _next_ordinal_to_read += 1;
8751 if next_offset >= end_offset {
8752 return Ok(());
8753 }
8754
8755 while _next_ordinal_to_read < 3 {
8757 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8758 _next_ordinal_to_read += 1;
8759 next_offset += envelope_size;
8760 }
8761
8762 let next_out_of_line = decoder.next_out_of_line();
8763 let handles_before = decoder.remaining_handles();
8764 if let Some((inlined, num_bytes, num_handles)) =
8765 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8766 {
8767 let member_inline_size =
8768 <Nat64ErrorCounters as fidl::encoding::TypeMarker>::inline_size(
8769 decoder.context,
8770 );
8771 if inlined != (member_inline_size <= 4) {
8772 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8773 }
8774 let inner_offset;
8775 let mut inner_depth = depth.clone();
8776 if inlined {
8777 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8778 inner_offset = next_offset;
8779 } else {
8780 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8781 inner_depth.increment()?;
8782 }
8783 let val_ref = self
8784 .nat64_error_counters
8785 .get_or_insert_with(|| fidl::new_empty!(Nat64ErrorCounters, D));
8786 fidl::decode!(Nat64ErrorCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
8787 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8788 {
8789 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8790 }
8791 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8792 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8793 }
8794 }
8795
8796 next_offset += envelope_size;
8797 _next_ordinal_to_read += 1;
8798 if next_offset >= end_offset {
8799 return Ok(());
8800 }
8801
8802 while _next_ordinal_to_read < 4 {
8804 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8805 _next_ordinal_to_read += 1;
8806 next_offset += envelope_size;
8807 }
8808
8809 let next_out_of_line = decoder.next_out_of_line();
8810 let handles_before = decoder.remaining_handles();
8811 if let Some((inlined, num_bytes, num_handles)) =
8812 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8813 {
8814 let member_inline_size =
8815 <Nat64ProtocolCounters as fidl::encoding::TypeMarker>::inline_size(
8816 decoder.context,
8817 );
8818 if inlined != (member_inline_size <= 4) {
8819 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8820 }
8821 let inner_offset;
8822 let mut inner_depth = depth.clone();
8823 if inlined {
8824 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8825 inner_offset = next_offset;
8826 } else {
8827 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8828 inner_depth.increment()?;
8829 }
8830 let val_ref = self
8831 .nat64_protocol_counters
8832 .get_or_insert_with(|| fidl::new_empty!(Nat64ProtocolCounters, D));
8833 fidl::decode!(
8834 Nat64ProtocolCounters,
8835 D,
8836 val_ref,
8837 decoder,
8838 inner_offset,
8839 inner_depth
8840 )?;
8841 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8842 {
8843 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8844 }
8845 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8846 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8847 }
8848 }
8849
8850 next_offset += envelope_size;
8851
8852 while next_offset < end_offset {
8854 _next_ordinal_to_read += 1;
8855 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8856 next_offset += envelope_size;
8857 }
8858
8859 Ok(())
8860 }
8861 }
8862
8863 impl Nat64Mapping {
8864 #[inline(always)]
8865 fn max_ordinal_present(&self) -> u64 {
8866 if let Some(_) = self.counters {
8867 return 5;
8868 }
8869 if let Some(_) = self.remaining_time_ms {
8870 return 4;
8871 }
8872 if let Some(_) = self.ip6_addr {
8873 return 3;
8874 }
8875 if let Some(_) = self.ip4_addr {
8876 return 2;
8877 }
8878 if let Some(_) = self.mapping_id {
8879 return 1;
8880 }
8881 0
8882 }
8883 }
8884
8885 impl fidl::encoding::ValueTypeMarker for Nat64Mapping {
8886 type Borrowed<'a> = &'a Self;
8887 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8888 value
8889 }
8890 }
8891
8892 unsafe impl fidl::encoding::TypeMarker for Nat64Mapping {
8893 type Owned = Self;
8894
8895 #[inline(always)]
8896 fn inline_align(_context: fidl::encoding::Context) -> usize {
8897 8
8898 }
8899
8900 #[inline(always)]
8901 fn inline_size(_context: fidl::encoding::Context) -> usize {
8902 16
8903 }
8904 }
8905
8906 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64Mapping, D>
8907 for &Nat64Mapping
8908 {
8909 unsafe fn encode(
8910 self,
8911 encoder: &mut fidl::encoding::Encoder<'_, D>,
8912 offset: usize,
8913 mut depth: fidl::encoding::Depth,
8914 ) -> fidl::Result<()> {
8915 encoder.debug_check_bounds::<Nat64Mapping>(offset);
8916 let max_ordinal: u64 = self.max_ordinal_present();
8918 encoder.write_num(max_ordinal, offset);
8919 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8920 if max_ordinal == 0 {
8922 return Ok(());
8923 }
8924 depth.increment()?;
8925 let envelope_size = 8;
8926 let bytes_len = max_ordinal as usize * envelope_size;
8927 #[allow(unused_variables)]
8928 let offset = encoder.out_of_line_offset(bytes_len);
8929 let mut _prev_end_offset: usize = 0;
8930 if 1 > max_ordinal {
8931 return Ok(());
8932 }
8933
8934 let cur_offset: usize = (1 - 1) * envelope_size;
8937
8938 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8940
8941 fidl::encoding::encode_in_envelope_optional::<u64, D>(
8946 self.mapping_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
8947 encoder,
8948 offset + cur_offset,
8949 depth,
8950 )?;
8951
8952 _prev_end_offset = cur_offset + envelope_size;
8953 if 2 > max_ordinal {
8954 return Ok(());
8955 }
8956
8957 let cur_offset: usize = (2 - 1) * envelope_size;
8960
8961 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8963
8964 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8969 self.ip4_addr.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8970 encoder, offset + cur_offset, depth
8971 )?;
8972
8973 _prev_end_offset = cur_offset + envelope_size;
8974 if 3 > max_ordinal {
8975 return Ok(());
8976 }
8977
8978 let cur_offset: usize = (3 - 1) * envelope_size;
8981
8982 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8984
8985 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8990 self.ip6_addr.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8991 encoder, offset + cur_offset, depth
8992 )?;
8993
8994 _prev_end_offset = cur_offset + envelope_size;
8995 if 4 > max_ordinal {
8996 return Ok(());
8997 }
8998
8999 let cur_offset: usize = (4 - 1) * envelope_size;
9002
9003 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9005
9006 fidl::encoding::encode_in_envelope_optional::<u32, D>(
9011 self.remaining_time_ms
9012 .as_ref()
9013 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
9014 encoder,
9015 offset + cur_offset,
9016 depth,
9017 )?;
9018
9019 _prev_end_offset = cur_offset + envelope_size;
9020 if 5 > max_ordinal {
9021 return Ok(());
9022 }
9023
9024 let cur_offset: usize = (5 - 1) * envelope_size;
9027
9028 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9030
9031 fidl::encoding::encode_in_envelope_optional::<Nat64ProtocolCounters, D>(
9036 self.counters
9037 .as_ref()
9038 .map(<Nat64ProtocolCounters as fidl::encoding::ValueTypeMarker>::borrow),
9039 encoder,
9040 offset + cur_offset,
9041 depth,
9042 )?;
9043
9044 _prev_end_offset = cur_offset + envelope_size;
9045
9046 Ok(())
9047 }
9048 }
9049
9050 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64Mapping {
9051 #[inline(always)]
9052 fn new_empty() -> Self {
9053 Self::default()
9054 }
9055
9056 unsafe fn decode(
9057 &mut self,
9058 decoder: &mut fidl::encoding::Decoder<'_, D>,
9059 offset: usize,
9060 mut depth: fidl::encoding::Depth,
9061 ) -> fidl::Result<()> {
9062 decoder.debug_check_bounds::<Self>(offset);
9063 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9064 None => return Err(fidl::Error::NotNullable),
9065 Some(len) => len,
9066 };
9067 if len == 0 {
9069 return Ok(());
9070 };
9071 depth.increment()?;
9072 let envelope_size = 8;
9073 let bytes_len = len * envelope_size;
9074 let offset = decoder.out_of_line_offset(bytes_len)?;
9075 let mut _next_ordinal_to_read = 0;
9077 let mut next_offset = offset;
9078 let end_offset = offset + bytes_len;
9079 _next_ordinal_to_read += 1;
9080 if next_offset >= end_offset {
9081 return Ok(());
9082 }
9083
9084 while _next_ordinal_to_read < 1 {
9086 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9087 _next_ordinal_to_read += 1;
9088 next_offset += envelope_size;
9089 }
9090
9091 let next_out_of_line = decoder.next_out_of_line();
9092 let handles_before = decoder.remaining_handles();
9093 if let Some((inlined, num_bytes, num_handles)) =
9094 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9095 {
9096 let member_inline_size =
9097 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9098 if inlined != (member_inline_size <= 4) {
9099 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9100 }
9101 let inner_offset;
9102 let mut inner_depth = depth.clone();
9103 if inlined {
9104 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9105 inner_offset = next_offset;
9106 } else {
9107 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9108 inner_depth.increment()?;
9109 }
9110 let val_ref = self.mapping_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9111 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9112 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9113 {
9114 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9115 }
9116 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9117 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9118 }
9119 }
9120
9121 next_offset += envelope_size;
9122 _next_ordinal_to_read += 1;
9123 if next_offset >= end_offset {
9124 return Ok(());
9125 }
9126
9127 while _next_ordinal_to_read < 2 {
9129 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9130 _next_ordinal_to_read += 1;
9131 next_offset += envelope_size;
9132 }
9133
9134 let next_out_of_line = decoder.next_out_of_line();
9135 let handles_before = decoder.remaining_handles();
9136 if let Some((inlined, num_bytes, num_handles)) =
9137 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9138 {
9139 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9140 if inlined != (member_inline_size <= 4) {
9141 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9142 }
9143 let inner_offset;
9144 let mut inner_depth = depth.clone();
9145 if inlined {
9146 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9147 inner_offset = next_offset;
9148 } else {
9149 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9150 inner_depth.increment()?;
9151 }
9152 let val_ref = self.ip4_addr.get_or_insert_with(|| {
9153 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
9154 });
9155 fidl::decode!(
9156 fidl::encoding::UnboundedVector<u8>,
9157 D,
9158 val_ref,
9159 decoder,
9160 inner_offset,
9161 inner_depth
9162 )?;
9163 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9164 {
9165 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9166 }
9167 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9168 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9169 }
9170 }
9171
9172 next_offset += envelope_size;
9173 _next_ordinal_to_read += 1;
9174 if next_offset >= end_offset {
9175 return Ok(());
9176 }
9177
9178 while _next_ordinal_to_read < 3 {
9180 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9181 _next_ordinal_to_read += 1;
9182 next_offset += envelope_size;
9183 }
9184
9185 let next_out_of_line = decoder.next_out_of_line();
9186 let handles_before = decoder.remaining_handles();
9187 if let Some((inlined, num_bytes, num_handles)) =
9188 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9189 {
9190 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9191 if inlined != (member_inline_size <= 4) {
9192 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9193 }
9194 let inner_offset;
9195 let mut inner_depth = depth.clone();
9196 if inlined {
9197 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9198 inner_offset = next_offset;
9199 } else {
9200 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9201 inner_depth.increment()?;
9202 }
9203 let val_ref = self.ip6_addr.get_or_insert_with(|| {
9204 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
9205 });
9206 fidl::decode!(
9207 fidl::encoding::UnboundedVector<u8>,
9208 D,
9209 val_ref,
9210 decoder,
9211 inner_offset,
9212 inner_depth
9213 )?;
9214 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9215 {
9216 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9217 }
9218 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9219 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9220 }
9221 }
9222
9223 next_offset += envelope_size;
9224 _next_ordinal_to_read += 1;
9225 if next_offset >= end_offset {
9226 return Ok(());
9227 }
9228
9229 while _next_ordinal_to_read < 4 {
9231 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9232 _next_ordinal_to_read += 1;
9233 next_offset += envelope_size;
9234 }
9235
9236 let next_out_of_line = decoder.next_out_of_line();
9237 let handles_before = decoder.remaining_handles();
9238 if let Some((inlined, num_bytes, num_handles)) =
9239 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9240 {
9241 let member_inline_size =
9242 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9243 if inlined != (member_inline_size <= 4) {
9244 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9245 }
9246 let inner_offset;
9247 let mut inner_depth = depth.clone();
9248 if inlined {
9249 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9250 inner_offset = next_offset;
9251 } else {
9252 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9253 inner_depth.increment()?;
9254 }
9255 let val_ref =
9256 self.remaining_time_ms.get_or_insert_with(|| fidl::new_empty!(u32, D));
9257 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
9258 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9259 {
9260 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9261 }
9262 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9263 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9264 }
9265 }
9266
9267 next_offset += envelope_size;
9268 _next_ordinal_to_read += 1;
9269 if next_offset >= end_offset {
9270 return Ok(());
9271 }
9272
9273 while _next_ordinal_to_read < 5 {
9275 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9276 _next_ordinal_to_read += 1;
9277 next_offset += envelope_size;
9278 }
9279
9280 let next_out_of_line = decoder.next_out_of_line();
9281 let handles_before = decoder.remaining_handles();
9282 if let Some((inlined, num_bytes, num_handles)) =
9283 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9284 {
9285 let member_inline_size =
9286 <Nat64ProtocolCounters as fidl::encoding::TypeMarker>::inline_size(
9287 decoder.context,
9288 );
9289 if inlined != (member_inline_size <= 4) {
9290 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9291 }
9292 let inner_offset;
9293 let mut inner_depth = depth.clone();
9294 if inlined {
9295 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9296 inner_offset = next_offset;
9297 } else {
9298 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9299 inner_depth.increment()?;
9300 }
9301 let val_ref =
9302 self.counters.get_or_insert_with(|| fidl::new_empty!(Nat64ProtocolCounters, D));
9303 fidl::decode!(
9304 Nat64ProtocolCounters,
9305 D,
9306 val_ref,
9307 decoder,
9308 inner_offset,
9309 inner_depth
9310 )?;
9311 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9312 {
9313 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9314 }
9315 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9316 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9317 }
9318 }
9319
9320 next_offset += envelope_size;
9321
9322 while next_offset < end_offset {
9324 _next_ordinal_to_read += 1;
9325 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9326 next_offset += envelope_size;
9327 }
9328
9329 Ok(())
9330 }
9331 }
9332
9333 impl Nat64PacketCounters {
9334 #[inline(always)]
9335 fn max_ordinal_present(&self) -> u64 {
9336 if let Some(_) = self.ipv6_to_ipv4_packets {
9337 return 2;
9338 }
9339 if let Some(_) = self.ipv4_to_ipv6_packets {
9340 return 1;
9341 }
9342 0
9343 }
9344 }
9345
9346 impl fidl::encoding::ValueTypeMarker for Nat64PacketCounters {
9347 type Borrowed<'a> = &'a Self;
9348 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9349 value
9350 }
9351 }
9352
9353 unsafe impl fidl::encoding::TypeMarker for Nat64PacketCounters {
9354 type Owned = Self;
9355
9356 #[inline(always)]
9357 fn inline_align(_context: fidl::encoding::Context) -> usize {
9358 8
9359 }
9360
9361 #[inline(always)]
9362 fn inline_size(_context: fidl::encoding::Context) -> usize {
9363 16
9364 }
9365 }
9366
9367 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64PacketCounters, D>
9368 for &Nat64PacketCounters
9369 {
9370 unsafe fn encode(
9371 self,
9372 encoder: &mut fidl::encoding::Encoder<'_, D>,
9373 offset: usize,
9374 mut depth: fidl::encoding::Depth,
9375 ) -> fidl::Result<()> {
9376 encoder.debug_check_bounds::<Nat64PacketCounters>(offset);
9377 let max_ordinal: u64 = self.max_ordinal_present();
9379 encoder.write_num(max_ordinal, offset);
9380 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9381 if max_ordinal == 0 {
9383 return Ok(());
9384 }
9385 depth.increment()?;
9386 let envelope_size = 8;
9387 let bytes_len = max_ordinal as usize * envelope_size;
9388 #[allow(unused_variables)]
9389 let offset = encoder.out_of_line_offset(bytes_len);
9390 let mut _prev_end_offset: usize = 0;
9391 if 1 > max_ordinal {
9392 return Ok(());
9393 }
9394
9395 let cur_offset: usize = (1 - 1) * envelope_size;
9398
9399 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9401
9402 fidl::encoding::encode_in_envelope_optional::<u64, D>(
9407 self.ipv4_to_ipv6_packets
9408 .as_ref()
9409 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9410 encoder,
9411 offset + cur_offset,
9412 depth,
9413 )?;
9414
9415 _prev_end_offset = cur_offset + envelope_size;
9416 if 2 > max_ordinal {
9417 return Ok(());
9418 }
9419
9420 let cur_offset: usize = (2 - 1) * envelope_size;
9423
9424 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9426
9427 fidl::encoding::encode_in_envelope_optional::<u64, D>(
9432 self.ipv6_to_ipv4_packets
9433 .as_ref()
9434 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9435 encoder,
9436 offset + cur_offset,
9437 depth,
9438 )?;
9439
9440 _prev_end_offset = cur_offset + envelope_size;
9441
9442 Ok(())
9443 }
9444 }
9445
9446 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64PacketCounters {
9447 #[inline(always)]
9448 fn new_empty() -> Self {
9449 Self::default()
9450 }
9451
9452 unsafe fn decode(
9453 &mut self,
9454 decoder: &mut fidl::encoding::Decoder<'_, D>,
9455 offset: usize,
9456 mut depth: fidl::encoding::Depth,
9457 ) -> fidl::Result<()> {
9458 decoder.debug_check_bounds::<Self>(offset);
9459 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9460 None => return Err(fidl::Error::NotNullable),
9461 Some(len) => len,
9462 };
9463 if len == 0 {
9465 return Ok(());
9466 };
9467 depth.increment()?;
9468 let envelope_size = 8;
9469 let bytes_len = len * envelope_size;
9470 let offset = decoder.out_of_line_offset(bytes_len)?;
9471 let mut _next_ordinal_to_read = 0;
9473 let mut next_offset = offset;
9474 let end_offset = offset + bytes_len;
9475 _next_ordinal_to_read += 1;
9476 if next_offset >= end_offset {
9477 return Ok(());
9478 }
9479
9480 while _next_ordinal_to_read < 1 {
9482 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9483 _next_ordinal_to_read += 1;
9484 next_offset += envelope_size;
9485 }
9486
9487 let next_out_of_line = decoder.next_out_of_line();
9488 let handles_before = decoder.remaining_handles();
9489 if let Some((inlined, num_bytes, num_handles)) =
9490 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9491 {
9492 let member_inline_size =
9493 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9494 if inlined != (member_inline_size <= 4) {
9495 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9496 }
9497 let inner_offset;
9498 let mut inner_depth = depth.clone();
9499 if inlined {
9500 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9501 inner_offset = next_offset;
9502 } else {
9503 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9504 inner_depth.increment()?;
9505 }
9506 let val_ref =
9507 self.ipv4_to_ipv6_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
9508 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9509 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9510 {
9511 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9512 }
9513 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9514 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9515 }
9516 }
9517
9518 next_offset += envelope_size;
9519 _next_ordinal_to_read += 1;
9520 if next_offset >= end_offset {
9521 return Ok(());
9522 }
9523
9524 while _next_ordinal_to_read < 2 {
9526 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9527 _next_ordinal_to_read += 1;
9528 next_offset += envelope_size;
9529 }
9530
9531 let next_out_of_line = decoder.next_out_of_line();
9532 let handles_before = decoder.remaining_handles();
9533 if let Some((inlined, num_bytes, num_handles)) =
9534 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9535 {
9536 let member_inline_size =
9537 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9538 if inlined != (member_inline_size <= 4) {
9539 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9540 }
9541 let inner_offset;
9542 let mut inner_depth = depth.clone();
9543 if inlined {
9544 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9545 inner_offset = next_offset;
9546 } else {
9547 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9548 inner_depth.increment()?;
9549 }
9550 let val_ref =
9551 self.ipv6_to_ipv4_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
9552 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9553 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9554 {
9555 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9556 }
9557 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9558 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9559 }
9560 }
9561
9562 next_offset += envelope_size;
9563
9564 while next_offset < end_offset {
9566 _next_ordinal_to_read += 1;
9567 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9568 next_offset += envelope_size;
9569 }
9570
9571 Ok(())
9572 }
9573 }
9574
9575 impl Nat64ProtocolCounters {
9576 #[inline(always)]
9577 fn max_ordinal_present(&self) -> u64 {
9578 if let Some(_) = self.total {
9579 return 4;
9580 }
9581 if let Some(_) = self.icmp {
9582 return 3;
9583 }
9584 if let Some(_) = self.udp {
9585 return 2;
9586 }
9587 if let Some(_) = self.tcp {
9588 return 1;
9589 }
9590 0
9591 }
9592 }
9593
9594 impl fidl::encoding::ValueTypeMarker for Nat64ProtocolCounters {
9595 type Borrowed<'a> = &'a Self;
9596 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9597 value
9598 }
9599 }
9600
9601 unsafe impl fidl::encoding::TypeMarker for Nat64ProtocolCounters {
9602 type Owned = Self;
9603
9604 #[inline(always)]
9605 fn inline_align(_context: fidl::encoding::Context) -> usize {
9606 8
9607 }
9608
9609 #[inline(always)]
9610 fn inline_size(_context: fidl::encoding::Context) -> usize {
9611 16
9612 }
9613 }
9614
9615 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64ProtocolCounters, D>
9616 for &Nat64ProtocolCounters
9617 {
9618 unsafe fn encode(
9619 self,
9620 encoder: &mut fidl::encoding::Encoder<'_, D>,
9621 offset: usize,
9622 mut depth: fidl::encoding::Depth,
9623 ) -> fidl::Result<()> {
9624 encoder.debug_check_bounds::<Nat64ProtocolCounters>(offset);
9625 let max_ordinal: u64 = self.max_ordinal_present();
9627 encoder.write_num(max_ordinal, offset);
9628 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9629 if max_ordinal == 0 {
9631 return Ok(());
9632 }
9633 depth.increment()?;
9634 let envelope_size = 8;
9635 let bytes_len = max_ordinal as usize * envelope_size;
9636 #[allow(unused_variables)]
9637 let offset = encoder.out_of_line_offset(bytes_len);
9638 let mut _prev_end_offset: usize = 0;
9639 if 1 > max_ordinal {
9640 return Ok(());
9641 }
9642
9643 let cur_offset: usize = (1 - 1) * envelope_size;
9646
9647 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9649
9650 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
9655 self.tcp
9656 .as_ref()
9657 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
9658 encoder,
9659 offset + cur_offset,
9660 depth,
9661 )?;
9662
9663 _prev_end_offset = cur_offset + envelope_size;
9664 if 2 > max_ordinal {
9665 return Ok(());
9666 }
9667
9668 let cur_offset: usize = (2 - 1) * envelope_size;
9671
9672 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9674
9675 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
9680 self.udp
9681 .as_ref()
9682 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
9683 encoder,
9684 offset + cur_offset,
9685 depth,
9686 )?;
9687
9688 _prev_end_offset = cur_offset + envelope_size;
9689 if 3 > max_ordinal {
9690 return Ok(());
9691 }
9692
9693 let cur_offset: usize = (3 - 1) * envelope_size;
9696
9697 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9699
9700 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
9705 self.icmp
9706 .as_ref()
9707 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
9708 encoder,
9709 offset + cur_offset,
9710 depth,
9711 )?;
9712
9713 _prev_end_offset = cur_offset + envelope_size;
9714 if 4 > max_ordinal {
9715 return Ok(());
9716 }
9717
9718 let cur_offset: usize = (4 - 1) * envelope_size;
9721
9722 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9724
9725 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
9730 self.total
9731 .as_ref()
9732 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
9733 encoder,
9734 offset + cur_offset,
9735 depth,
9736 )?;
9737
9738 _prev_end_offset = cur_offset + envelope_size;
9739
9740 Ok(())
9741 }
9742 }
9743
9744 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64ProtocolCounters {
9745 #[inline(always)]
9746 fn new_empty() -> Self {
9747 Self::default()
9748 }
9749
9750 unsafe fn decode(
9751 &mut self,
9752 decoder: &mut fidl::encoding::Decoder<'_, D>,
9753 offset: usize,
9754 mut depth: fidl::encoding::Depth,
9755 ) -> fidl::Result<()> {
9756 decoder.debug_check_bounds::<Self>(offset);
9757 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9758 None => return Err(fidl::Error::NotNullable),
9759 Some(len) => len,
9760 };
9761 if len == 0 {
9763 return Ok(());
9764 };
9765 depth.increment()?;
9766 let envelope_size = 8;
9767 let bytes_len = len * envelope_size;
9768 let offset = decoder.out_of_line_offset(bytes_len)?;
9769 let mut _next_ordinal_to_read = 0;
9771 let mut next_offset = offset;
9772 let end_offset = offset + bytes_len;
9773 _next_ordinal_to_read += 1;
9774 if next_offset >= end_offset {
9775 return Ok(());
9776 }
9777
9778 while _next_ordinal_to_read < 1 {
9780 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9781 _next_ordinal_to_read += 1;
9782 next_offset += envelope_size;
9783 }
9784
9785 let next_out_of_line = decoder.next_out_of_line();
9786 let handles_before = decoder.remaining_handles();
9787 if let Some((inlined, num_bytes, num_handles)) =
9788 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9789 {
9790 let member_inline_size =
9791 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
9792 decoder.context,
9793 );
9794 if inlined != (member_inline_size <= 4) {
9795 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9796 }
9797 let inner_offset;
9798 let mut inner_depth = depth.clone();
9799 if inlined {
9800 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9801 inner_offset = next_offset;
9802 } else {
9803 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9804 inner_depth.increment()?;
9805 }
9806 let val_ref =
9807 self.tcp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
9808 fidl::decode!(
9809 Nat64TrafficCounters,
9810 D,
9811 val_ref,
9812 decoder,
9813 inner_offset,
9814 inner_depth
9815 )?;
9816 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9817 {
9818 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9819 }
9820 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9821 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9822 }
9823 }
9824
9825 next_offset += envelope_size;
9826 _next_ordinal_to_read += 1;
9827 if next_offset >= end_offset {
9828 return Ok(());
9829 }
9830
9831 while _next_ordinal_to_read < 2 {
9833 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9834 _next_ordinal_to_read += 1;
9835 next_offset += envelope_size;
9836 }
9837
9838 let next_out_of_line = decoder.next_out_of_line();
9839 let handles_before = decoder.remaining_handles();
9840 if let Some((inlined, num_bytes, num_handles)) =
9841 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9842 {
9843 let member_inline_size =
9844 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
9845 decoder.context,
9846 );
9847 if inlined != (member_inline_size <= 4) {
9848 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9849 }
9850 let inner_offset;
9851 let mut inner_depth = depth.clone();
9852 if inlined {
9853 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9854 inner_offset = next_offset;
9855 } else {
9856 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9857 inner_depth.increment()?;
9858 }
9859 let val_ref =
9860 self.udp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
9861 fidl::decode!(
9862 Nat64TrafficCounters,
9863 D,
9864 val_ref,
9865 decoder,
9866 inner_offset,
9867 inner_depth
9868 )?;
9869 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9870 {
9871 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9872 }
9873 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9874 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9875 }
9876 }
9877
9878 next_offset += envelope_size;
9879 _next_ordinal_to_read += 1;
9880 if next_offset >= end_offset {
9881 return Ok(());
9882 }
9883
9884 while _next_ordinal_to_read < 3 {
9886 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9887 _next_ordinal_to_read += 1;
9888 next_offset += envelope_size;
9889 }
9890
9891 let next_out_of_line = decoder.next_out_of_line();
9892 let handles_before = decoder.remaining_handles();
9893 if let Some((inlined, num_bytes, num_handles)) =
9894 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9895 {
9896 let member_inline_size =
9897 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
9898 decoder.context,
9899 );
9900 if inlined != (member_inline_size <= 4) {
9901 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9902 }
9903 let inner_offset;
9904 let mut inner_depth = depth.clone();
9905 if inlined {
9906 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9907 inner_offset = next_offset;
9908 } else {
9909 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9910 inner_depth.increment()?;
9911 }
9912 let val_ref =
9913 self.icmp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
9914 fidl::decode!(
9915 Nat64TrafficCounters,
9916 D,
9917 val_ref,
9918 decoder,
9919 inner_offset,
9920 inner_depth
9921 )?;
9922 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9923 {
9924 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9925 }
9926 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9927 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9928 }
9929 }
9930
9931 next_offset += envelope_size;
9932 _next_ordinal_to_read += 1;
9933 if next_offset >= end_offset {
9934 return Ok(());
9935 }
9936
9937 while _next_ordinal_to_read < 4 {
9939 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9940 _next_ordinal_to_read += 1;
9941 next_offset += envelope_size;
9942 }
9943
9944 let next_out_of_line = decoder.next_out_of_line();
9945 let handles_before = decoder.remaining_handles();
9946 if let Some((inlined, num_bytes, num_handles)) =
9947 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9948 {
9949 let member_inline_size =
9950 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
9951 decoder.context,
9952 );
9953 if inlined != (member_inline_size <= 4) {
9954 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9955 }
9956 let inner_offset;
9957 let mut inner_depth = depth.clone();
9958 if inlined {
9959 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9960 inner_offset = next_offset;
9961 } else {
9962 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9963 inner_depth.increment()?;
9964 }
9965 let val_ref =
9966 self.total.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
9967 fidl::decode!(
9968 Nat64TrafficCounters,
9969 D,
9970 val_ref,
9971 decoder,
9972 inner_offset,
9973 inner_depth
9974 )?;
9975 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9976 {
9977 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9978 }
9979 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9980 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9981 }
9982 }
9983
9984 next_offset += envelope_size;
9985
9986 while next_offset < end_offset {
9988 _next_ordinal_to_read += 1;
9989 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9990 next_offset += envelope_size;
9991 }
9992
9993 Ok(())
9994 }
9995 }
9996
9997 impl Nat64TrafficCounters {
9998 #[inline(always)]
9999 fn max_ordinal_present(&self) -> u64 {
10000 if let Some(_) = self.ipv6_to_ipv4_bytes {
10001 return 4;
10002 }
10003 if let Some(_) = self.ipv6_to_ipv4_packets {
10004 return 3;
10005 }
10006 if let Some(_) = self.ipv4_to_ipv6_bytes {
10007 return 2;
10008 }
10009 if let Some(_) = self.ipv4_to_ipv6_packets {
10010 return 1;
10011 }
10012 0
10013 }
10014 }
10015
10016 impl fidl::encoding::ValueTypeMarker for Nat64TrafficCounters {
10017 type Borrowed<'a> = &'a Self;
10018 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10019 value
10020 }
10021 }
10022
10023 unsafe impl fidl::encoding::TypeMarker for Nat64TrafficCounters {
10024 type Owned = Self;
10025
10026 #[inline(always)]
10027 fn inline_align(_context: fidl::encoding::Context) -> usize {
10028 8
10029 }
10030
10031 #[inline(always)]
10032 fn inline_size(_context: fidl::encoding::Context) -> usize {
10033 16
10034 }
10035 }
10036
10037 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64TrafficCounters, D>
10038 for &Nat64TrafficCounters
10039 {
10040 unsafe fn encode(
10041 self,
10042 encoder: &mut fidl::encoding::Encoder<'_, D>,
10043 offset: usize,
10044 mut depth: fidl::encoding::Depth,
10045 ) -> fidl::Result<()> {
10046 encoder.debug_check_bounds::<Nat64TrafficCounters>(offset);
10047 let max_ordinal: u64 = self.max_ordinal_present();
10049 encoder.write_num(max_ordinal, offset);
10050 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10051 if max_ordinal == 0 {
10053 return Ok(());
10054 }
10055 depth.increment()?;
10056 let envelope_size = 8;
10057 let bytes_len = max_ordinal as usize * envelope_size;
10058 #[allow(unused_variables)]
10059 let offset = encoder.out_of_line_offset(bytes_len);
10060 let mut _prev_end_offset: usize = 0;
10061 if 1 > max_ordinal {
10062 return Ok(());
10063 }
10064
10065 let cur_offset: usize = (1 - 1) * envelope_size;
10068
10069 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10071
10072 fidl::encoding::encode_in_envelope_optional::<u64, D>(
10077 self.ipv4_to_ipv6_packets
10078 .as_ref()
10079 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
10080 encoder,
10081 offset + cur_offset,
10082 depth,
10083 )?;
10084
10085 _prev_end_offset = cur_offset + envelope_size;
10086 if 2 > max_ordinal {
10087 return Ok(());
10088 }
10089
10090 let cur_offset: usize = (2 - 1) * envelope_size;
10093
10094 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10096
10097 fidl::encoding::encode_in_envelope_optional::<u64, D>(
10102 self.ipv4_to_ipv6_bytes
10103 .as_ref()
10104 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
10105 encoder,
10106 offset + cur_offset,
10107 depth,
10108 )?;
10109
10110 _prev_end_offset = cur_offset + envelope_size;
10111 if 3 > max_ordinal {
10112 return Ok(());
10113 }
10114
10115 let cur_offset: usize = (3 - 1) * envelope_size;
10118
10119 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10121
10122 fidl::encoding::encode_in_envelope_optional::<u64, D>(
10127 self.ipv6_to_ipv4_packets
10128 .as_ref()
10129 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
10130 encoder,
10131 offset + cur_offset,
10132 depth,
10133 )?;
10134
10135 _prev_end_offset = cur_offset + envelope_size;
10136 if 4 > max_ordinal {
10137 return Ok(());
10138 }
10139
10140 let cur_offset: usize = (4 - 1) * envelope_size;
10143
10144 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10146
10147 fidl::encoding::encode_in_envelope_optional::<u64, D>(
10152 self.ipv6_to_ipv4_bytes
10153 .as_ref()
10154 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
10155 encoder,
10156 offset + cur_offset,
10157 depth,
10158 )?;
10159
10160 _prev_end_offset = cur_offset + envelope_size;
10161
10162 Ok(())
10163 }
10164 }
10165
10166 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64TrafficCounters {
10167 #[inline(always)]
10168 fn new_empty() -> Self {
10169 Self::default()
10170 }
10171
10172 unsafe fn decode(
10173 &mut self,
10174 decoder: &mut fidl::encoding::Decoder<'_, D>,
10175 offset: usize,
10176 mut depth: fidl::encoding::Depth,
10177 ) -> fidl::Result<()> {
10178 decoder.debug_check_bounds::<Self>(offset);
10179 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10180 None => return Err(fidl::Error::NotNullable),
10181 Some(len) => len,
10182 };
10183 if len == 0 {
10185 return Ok(());
10186 };
10187 depth.increment()?;
10188 let envelope_size = 8;
10189 let bytes_len = len * envelope_size;
10190 let offset = decoder.out_of_line_offset(bytes_len)?;
10191 let mut _next_ordinal_to_read = 0;
10193 let mut next_offset = offset;
10194 let end_offset = offset + bytes_len;
10195 _next_ordinal_to_read += 1;
10196 if next_offset >= end_offset {
10197 return Ok(());
10198 }
10199
10200 while _next_ordinal_to_read < 1 {
10202 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10203 _next_ordinal_to_read += 1;
10204 next_offset += envelope_size;
10205 }
10206
10207 let next_out_of_line = decoder.next_out_of_line();
10208 let handles_before = decoder.remaining_handles();
10209 if let Some((inlined, num_bytes, num_handles)) =
10210 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10211 {
10212 let member_inline_size =
10213 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10214 if inlined != (member_inline_size <= 4) {
10215 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10216 }
10217 let inner_offset;
10218 let mut inner_depth = depth.clone();
10219 if inlined {
10220 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10221 inner_offset = next_offset;
10222 } else {
10223 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10224 inner_depth.increment()?;
10225 }
10226 let val_ref =
10227 self.ipv4_to_ipv6_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
10228 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
10229 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10230 {
10231 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10232 }
10233 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10234 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10235 }
10236 }
10237
10238 next_offset += envelope_size;
10239 _next_ordinal_to_read += 1;
10240 if next_offset >= end_offset {
10241 return Ok(());
10242 }
10243
10244 while _next_ordinal_to_read < 2 {
10246 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10247 _next_ordinal_to_read += 1;
10248 next_offset += envelope_size;
10249 }
10250
10251 let next_out_of_line = decoder.next_out_of_line();
10252 let handles_before = decoder.remaining_handles();
10253 if let Some((inlined, num_bytes, num_handles)) =
10254 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10255 {
10256 let member_inline_size =
10257 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10258 if inlined != (member_inline_size <= 4) {
10259 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10260 }
10261 let inner_offset;
10262 let mut inner_depth = depth.clone();
10263 if inlined {
10264 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10265 inner_offset = next_offset;
10266 } else {
10267 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10268 inner_depth.increment()?;
10269 }
10270 let val_ref =
10271 self.ipv4_to_ipv6_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
10272 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
10273 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10274 {
10275 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10276 }
10277 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10278 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10279 }
10280 }
10281
10282 next_offset += envelope_size;
10283 _next_ordinal_to_read += 1;
10284 if next_offset >= end_offset {
10285 return Ok(());
10286 }
10287
10288 while _next_ordinal_to_read < 3 {
10290 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10291 _next_ordinal_to_read += 1;
10292 next_offset += envelope_size;
10293 }
10294
10295 let next_out_of_line = decoder.next_out_of_line();
10296 let handles_before = decoder.remaining_handles();
10297 if let Some((inlined, num_bytes, num_handles)) =
10298 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10299 {
10300 let member_inline_size =
10301 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10302 if inlined != (member_inline_size <= 4) {
10303 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10304 }
10305 let inner_offset;
10306 let mut inner_depth = depth.clone();
10307 if inlined {
10308 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10309 inner_offset = next_offset;
10310 } else {
10311 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10312 inner_depth.increment()?;
10313 }
10314 let val_ref =
10315 self.ipv6_to_ipv4_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
10316 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
10317 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10318 {
10319 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10320 }
10321 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10322 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10323 }
10324 }
10325
10326 next_offset += envelope_size;
10327 _next_ordinal_to_read += 1;
10328 if next_offset >= end_offset {
10329 return Ok(());
10330 }
10331
10332 while _next_ordinal_to_read < 4 {
10334 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10335 _next_ordinal_to_read += 1;
10336 next_offset += envelope_size;
10337 }
10338
10339 let next_out_of_line = decoder.next_out_of_line();
10340 let handles_before = decoder.remaining_handles();
10341 if let Some((inlined, num_bytes, num_handles)) =
10342 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10343 {
10344 let member_inline_size =
10345 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10346 if inlined != (member_inline_size <= 4) {
10347 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10348 }
10349 let inner_offset;
10350 let mut inner_depth = depth.clone();
10351 if inlined {
10352 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10353 inner_offset = next_offset;
10354 } else {
10355 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10356 inner_depth.increment()?;
10357 }
10358 let val_ref =
10359 self.ipv6_to_ipv4_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
10360 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
10361 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10362 {
10363 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10364 }
10365 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10366 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10367 }
10368 }
10369
10370 next_offset += envelope_size;
10371
10372 while next_offset < end_offset {
10374 _next_ordinal_to_read += 1;
10375 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10376 next_offset += envelope_size;
10377 }
10378
10379 Ok(())
10380 }
10381 }
10382
10383 impl NetworkScanParameters {
10384 #[inline(always)]
10385 fn max_ordinal_present(&self) -> u64 {
10386 if let Some(_) = self.tx_power_dbm {
10387 return 2;
10388 }
10389 if let Some(_) = self.channels {
10390 return 1;
10391 }
10392 0
10393 }
10394 }
10395
10396 impl fidl::encoding::ValueTypeMarker for NetworkScanParameters {
10397 type Borrowed<'a> = &'a Self;
10398 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10399 value
10400 }
10401 }
10402
10403 unsafe impl fidl::encoding::TypeMarker for NetworkScanParameters {
10404 type Owned = Self;
10405
10406 #[inline(always)]
10407 fn inline_align(_context: fidl::encoding::Context) -> usize {
10408 8
10409 }
10410
10411 #[inline(always)]
10412 fn inline_size(_context: fidl::encoding::Context) -> usize {
10413 16
10414 }
10415 }
10416
10417 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetworkScanParameters, D>
10418 for &NetworkScanParameters
10419 {
10420 unsafe fn encode(
10421 self,
10422 encoder: &mut fidl::encoding::Encoder<'_, D>,
10423 offset: usize,
10424 mut depth: fidl::encoding::Depth,
10425 ) -> fidl::Result<()> {
10426 encoder.debug_check_bounds::<NetworkScanParameters>(offset);
10427 let max_ordinal: u64 = self.max_ordinal_present();
10429 encoder.write_num(max_ordinal, offset);
10430 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10431 if max_ordinal == 0 {
10433 return Ok(());
10434 }
10435 depth.increment()?;
10436 let envelope_size = 8;
10437 let bytes_len = max_ordinal as usize * envelope_size;
10438 #[allow(unused_variables)]
10439 let offset = encoder.out_of_line_offset(bytes_len);
10440 let mut _prev_end_offset: usize = 0;
10441 if 1 > max_ordinal {
10442 return Ok(());
10443 }
10444
10445 let cur_offset: usize = (1 - 1) * envelope_size;
10448
10449 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10451
10452 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u16, 200>, D>(
10457 self.channels.as_ref().map(
10458 <fidl::encoding::Vector<u16, 200> as fidl::encoding::ValueTypeMarker>::borrow,
10459 ),
10460 encoder,
10461 offset + cur_offset,
10462 depth,
10463 )?;
10464
10465 _prev_end_offset = cur_offset + envelope_size;
10466 if 2 > max_ordinal {
10467 return Ok(());
10468 }
10469
10470 let cur_offset: usize = (2 - 1) * envelope_size;
10473
10474 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10476
10477 fidl::encoding::encode_in_envelope_optional::<i8, D>(
10482 self.tx_power_dbm.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
10483 encoder,
10484 offset + cur_offset,
10485 depth,
10486 )?;
10487
10488 _prev_end_offset = cur_offset + envelope_size;
10489
10490 Ok(())
10491 }
10492 }
10493
10494 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkScanParameters {
10495 #[inline(always)]
10496 fn new_empty() -> Self {
10497 Self::default()
10498 }
10499
10500 unsafe fn decode(
10501 &mut self,
10502 decoder: &mut fidl::encoding::Decoder<'_, D>,
10503 offset: usize,
10504 mut depth: fidl::encoding::Depth,
10505 ) -> fidl::Result<()> {
10506 decoder.debug_check_bounds::<Self>(offset);
10507 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10508 None => return Err(fidl::Error::NotNullable),
10509 Some(len) => len,
10510 };
10511 if len == 0 {
10513 return Ok(());
10514 };
10515 depth.increment()?;
10516 let envelope_size = 8;
10517 let bytes_len = len * envelope_size;
10518 let offset = decoder.out_of_line_offset(bytes_len)?;
10519 let mut _next_ordinal_to_read = 0;
10521 let mut next_offset = offset;
10522 let end_offset = offset + bytes_len;
10523 _next_ordinal_to_read += 1;
10524 if next_offset >= end_offset {
10525 return Ok(());
10526 }
10527
10528 while _next_ordinal_to_read < 1 {
10530 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10531 _next_ordinal_to_read += 1;
10532 next_offset += envelope_size;
10533 }
10534
10535 let next_out_of_line = decoder.next_out_of_line();
10536 let handles_before = decoder.remaining_handles();
10537 if let Some((inlined, num_bytes, num_handles)) =
10538 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10539 {
10540 let member_inline_size =
10541 <fidl::encoding::Vector<u16, 200> as fidl::encoding::TypeMarker>::inline_size(
10542 decoder.context,
10543 );
10544 if inlined != (member_inline_size <= 4) {
10545 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10546 }
10547 let inner_offset;
10548 let mut inner_depth = depth.clone();
10549 if inlined {
10550 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10551 inner_offset = next_offset;
10552 } else {
10553 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10554 inner_depth.increment()?;
10555 }
10556 let val_ref = self
10557 .channels
10558 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u16, 200>, D));
10559 fidl::decode!(fidl::encoding::Vector<u16, 200>, D, val_ref, decoder, inner_offset, inner_depth)?;
10560 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10561 {
10562 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10563 }
10564 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10565 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10566 }
10567 }
10568
10569 next_offset += envelope_size;
10570 _next_ordinal_to_read += 1;
10571 if next_offset >= end_offset {
10572 return Ok(());
10573 }
10574
10575 while _next_ordinal_to_read < 2 {
10577 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10578 _next_ordinal_to_read += 1;
10579 next_offset += envelope_size;
10580 }
10581
10582 let next_out_of_line = decoder.next_out_of_line();
10583 let handles_before = decoder.remaining_handles();
10584 if let Some((inlined, num_bytes, num_handles)) =
10585 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10586 {
10587 let member_inline_size =
10588 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10589 if inlined != (member_inline_size <= 4) {
10590 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10591 }
10592 let inner_offset;
10593 let mut inner_depth = depth.clone();
10594 if inlined {
10595 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10596 inner_offset = next_offset;
10597 } else {
10598 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10599 inner_depth.increment()?;
10600 }
10601 let val_ref = self.tx_power_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
10602 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
10603 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10604 {
10605 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10606 }
10607 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10608 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10609 }
10610 }
10611
10612 next_offset += envelope_size;
10613
10614 while next_offset < end_offset {
10616 _next_ordinal_to_read += 1;
10617 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10618 next_offset += envelope_size;
10619 }
10620
10621 Ok(())
10622 }
10623 }
10624
10625 impl OnMeshPrefix {
10626 #[inline(always)]
10627 fn max_ordinal_present(&self) -> u64 {
10628 if let Some(_) = self.slaac_valid {
10629 return 5;
10630 }
10631 if let Some(_) = self.slaac_preferred {
10632 return 4;
10633 }
10634 if let Some(_) = self.stable {
10635 return 3;
10636 }
10637 if let Some(_) = self.default_route_preference {
10638 return 2;
10639 }
10640 if let Some(_) = self.subnet {
10641 return 1;
10642 }
10643 0
10644 }
10645 }
10646
10647 impl fidl::encoding::ValueTypeMarker for OnMeshPrefix {
10648 type Borrowed<'a> = &'a Self;
10649 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10650 value
10651 }
10652 }
10653
10654 unsafe impl fidl::encoding::TypeMarker for OnMeshPrefix {
10655 type Owned = Self;
10656
10657 #[inline(always)]
10658 fn inline_align(_context: fidl::encoding::Context) -> usize {
10659 8
10660 }
10661
10662 #[inline(always)]
10663 fn inline_size(_context: fidl::encoding::Context) -> usize {
10664 16
10665 }
10666 }
10667
10668 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OnMeshPrefix, D>
10669 for &OnMeshPrefix
10670 {
10671 unsafe fn encode(
10672 self,
10673 encoder: &mut fidl::encoding::Encoder<'_, D>,
10674 offset: usize,
10675 mut depth: fidl::encoding::Depth,
10676 ) -> fidl::Result<()> {
10677 encoder.debug_check_bounds::<OnMeshPrefix>(offset);
10678 let max_ordinal: u64 = self.max_ordinal_present();
10680 encoder.write_num(max_ordinal, offset);
10681 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10682 if max_ordinal == 0 {
10684 return Ok(());
10685 }
10686 depth.increment()?;
10687 let envelope_size = 8;
10688 let bytes_len = max_ordinal as usize * envelope_size;
10689 #[allow(unused_variables)]
10690 let offset = encoder.out_of_line_offset(bytes_len);
10691 let mut _prev_end_offset: usize = 0;
10692 if 1 > max_ordinal {
10693 return Ok(());
10694 }
10695
10696 let cur_offset: usize = (1 - 1) * envelope_size;
10699
10700 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10702
10703 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>(
10708 self.subnet.as_ref().map(<fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow),
10709 encoder, offset + cur_offset, depth
10710 )?;
10711
10712 _prev_end_offset = cur_offset + envelope_size;
10713 if 2 > max_ordinal {
10714 return Ok(());
10715 }
10716
10717 let cur_offset: usize = (2 - 1) * envelope_size;
10720
10721 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10723
10724 fidl::encoding::encode_in_envelope_optional::<RoutePreference, D>(
10729 self.default_route_preference
10730 .as_ref()
10731 .map(<RoutePreference as fidl::encoding::ValueTypeMarker>::borrow),
10732 encoder,
10733 offset + cur_offset,
10734 depth,
10735 )?;
10736
10737 _prev_end_offset = cur_offset + envelope_size;
10738 if 3 > max_ordinal {
10739 return Ok(());
10740 }
10741
10742 let cur_offset: usize = (3 - 1) * envelope_size;
10745
10746 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10748
10749 fidl::encoding::encode_in_envelope_optional::<bool, D>(
10754 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10755 encoder,
10756 offset + cur_offset,
10757 depth,
10758 )?;
10759
10760 _prev_end_offset = cur_offset + envelope_size;
10761 if 4 > max_ordinal {
10762 return Ok(());
10763 }
10764
10765 let cur_offset: usize = (4 - 1) * envelope_size;
10768
10769 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10771
10772 fidl::encoding::encode_in_envelope_optional::<bool, D>(
10777 self.slaac_preferred
10778 .as_ref()
10779 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10780 encoder,
10781 offset + cur_offset,
10782 depth,
10783 )?;
10784
10785 _prev_end_offset = cur_offset + envelope_size;
10786 if 5 > max_ordinal {
10787 return Ok(());
10788 }
10789
10790 let cur_offset: usize = (5 - 1) * envelope_size;
10793
10794 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10796
10797 fidl::encoding::encode_in_envelope_optional::<bool, D>(
10802 self.slaac_valid.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10803 encoder,
10804 offset + cur_offset,
10805 depth,
10806 )?;
10807
10808 _prev_end_offset = cur_offset + envelope_size;
10809
10810 Ok(())
10811 }
10812 }
10813
10814 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OnMeshPrefix {
10815 #[inline(always)]
10816 fn new_empty() -> Self {
10817 Self::default()
10818 }
10819
10820 unsafe fn decode(
10821 &mut self,
10822 decoder: &mut fidl::encoding::Decoder<'_, D>,
10823 offset: usize,
10824 mut depth: fidl::encoding::Depth,
10825 ) -> fidl::Result<()> {
10826 decoder.debug_check_bounds::<Self>(offset);
10827 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10828 None => return Err(fidl::Error::NotNullable),
10829 Some(len) => len,
10830 };
10831 if len == 0 {
10833 return Ok(());
10834 };
10835 depth.increment()?;
10836 let envelope_size = 8;
10837 let bytes_len = len * envelope_size;
10838 let offset = decoder.out_of_line_offset(bytes_len)?;
10839 let mut _next_ordinal_to_read = 0;
10841 let mut next_offset = offset;
10842 let end_offset = offset + bytes_len;
10843 _next_ordinal_to_read += 1;
10844 if next_offset >= end_offset {
10845 return Ok(());
10846 }
10847
10848 while _next_ordinal_to_read < 1 {
10850 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10851 _next_ordinal_to_read += 1;
10852 next_offset += envelope_size;
10853 }
10854
10855 let next_out_of_line = decoder.next_out_of_line();
10856 let handles_before = decoder.remaining_handles();
10857 if let Some((inlined, num_bytes, num_handles)) =
10858 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10859 {
10860 let member_inline_size = <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10861 if inlined != (member_inline_size <= 4) {
10862 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10863 }
10864 let inner_offset;
10865 let mut inner_depth = depth.clone();
10866 if inlined {
10867 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10868 inner_offset = next_offset;
10869 } else {
10870 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10871 inner_depth.increment()?;
10872 }
10873 let val_ref = self.subnet.get_or_insert_with(|| {
10874 fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D)
10875 });
10876 fidl::decode!(
10877 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
10878 D,
10879 val_ref,
10880 decoder,
10881 inner_offset,
10882 inner_depth
10883 )?;
10884 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10885 {
10886 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10887 }
10888 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10889 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10890 }
10891 }
10892
10893 next_offset += envelope_size;
10894 _next_ordinal_to_read += 1;
10895 if next_offset >= end_offset {
10896 return Ok(());
10897 }
10898
10899 while _next_ordinal_to_read < 2 {
10901 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10902 _next_ordinal_to_read += 1;
10903 next_offset += envelope_size;
10904 }
10905
10906 let next_out_of_line = decoder.next_out_of_line();
10907 let handles_before = decoder.remaining_handles();
10908 if let Some((inlined, num_bytes, num_handles)) =
10909 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10910 {
10911 let member_inline_size =
10912 <RoutePreference as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10913 if inlined != (member_inline_size <= 4) {
10914 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10915 }
10916 let inner_offset;
10917 let mut inner_depth = depth.clone();
10918 if inlined {
10919 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10920 inner_offset = next_offset;
10921 } else {
10922 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10923 inner_depth.increment()?;
10924 }
10925 let val_ref = self
10926 .default_route_preference
10927 .get_or_insert_with(|| fidl::new_empty!(RoutePreference, D));
10928 fidl::decode!(RoutePreference, D, val_ref, decoder, inner_offset, inner_depth)?;
10929 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10930 {
10931 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10932 }
10933 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10934 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10935 }
10936 }
10937
10938 next_offset += envelope_size;
10939 _next_ordinal_to_read += 1;
10940 if next_offset >= end_offset {
10941 return Ok(());
10942 }
10943
10944 while _next_ordinal_to_read < 3 {
10946 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10947 _next_ordinal_to_read += 1;
10948 next_offset += envelope_size;
10949 }
10950
10951 let next_out_of_line = decoder.next_out_of_line();
10952 let handles_before = decoder.remaining_handles();
10953 if let Some((inlined, num_bytes, num_handles)) =
10954 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10955 {
10956 let member_inline_size =
10957 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10958 if inlined != (member_inline_size <= 4) {
10959 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10960 }
10961 let inner_offset;
10962 let mut inner_depth = depth.clone();
10963 if inlined {
10964 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10965 inner_offset = next_offset;
10966 } else {
10967 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10968 inner_depth.increment()?;
10969 }
10970 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
10971 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10972 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10973 {
10974 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10975 }
10976 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10977 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10978 }
10979 }
10980
10981 next_offset += envelope_size;
10982 _next_ordinal_to_read += 1;
10983 if next_offset >= end_offset {
10984 return Ok(());
10985 }
10986
10987 while _next_ordinal_to_read < 4 {
10989 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10990 _next_ordinal_to_read += 1;
10991 next_offset += envelope_size;
10992 }
10993
10994 let next_out_of_line = decoder.next_out_of_line();
10995 let handles_before = decoder.remaining_handles();
10996 if let Some((inlined, num_bytes, num_handles)) =
10997 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10998 {
10999 let member_inline_size =
11000 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11001 if inlined != (member_inline_size <= 4) {
11002 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11003 }
11004 let inner_offset;
11005 let mut inner_depth = depth.clone();
11006 if inlined {
11007 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11008 inner_offset = next_offset;
11009 } else {
11010 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11011 inner_depth.increment()?;
11012 }
11013 let val_ref = self.slaac_preferred.get_or_insert_with(|| fidl::new_empty!(bool, D));
11014 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11015 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11016 {
11017 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11018 }
11019 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11020 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11021 }
11022 }
11023
11024 next_offset += envelope_size;
11025 _next_ordinal_to_read += 1;
11026 if next_offset >= end_offset {
11027 return Ok(());
11028 }
11029
11030 while _next_ordinal_to_read < 5 {
11032 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11033 _next_ordinal_to_read += 1;
11034 next_offset += envelope_size;
11035 }
11036
11037 let next_out_of_line = decoder.next_out_of_line();
11038 let handles_before = decoder.remaining_handles();
11039 if let Some((inlined, num_bytes, num_handles)) =
11040 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11041 {
11042 let member_inline_size =
11043 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11044 if inlined != (member_inline_size <= 4) {
11045 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11046 }
11047 let inner_offset;
11048 let mut inner_depth = depth.clone();
11049 if inlined {
11050 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11051 inner_offset = next_offset;
11052 } else {
11053 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11054 inner_depth.increment()?;
11055 }
11056 let val_ref = self.slaac_valid.get_or_insert_with(|| fidl::new_empty!(bool, D));
11057 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11058 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11059 {
11060 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11061 }
11062 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11063 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11064 }
11065 }
11066
11067 next_offset += envelope_size;
11068
11069 while next_offset < end_offset {
11071 _next_ordinal_to_read += 1;
11072 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11073 next_offset += envelope_size;
11074 }
11075
11076 Ok(())
11077 }
11078 }
11079
11080 impl PdProcessedRaInfo {
11081 #[inline(always)]
11082 fn max_ordinal_present(&self) -> u64 {
11083 if let Some(_) = self.last_platform_ra_msec {
11084 return 3;
11085 }
11086 if let Some(_) = self.num_platform_pio_processed {
11087 return 2;
11088 }
11089 if let Some(_) = self.num_platform_ra_received {
11090 return 1;
11091 }
11092 0
11093 }
11094 }
11095
11096 impl fidl::encoding::ValueTypeMarker for PdProcessedRaInfo {
11097 type Borrowed<'a> = &'a Self;
11098 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11099 value
11100 }
11101 }
11102
11103 unsafe impl fidl::encoding::TypeMarker for PdProcessedRaInfo {
11104 type Owned = Self;
11105
11106 #[inline(always)]
11107 fn inline_align(_context: fidl::encoding::Context) -> usize {
11108 8
11109 }
11110
11111 #[inline(always)]
11112 fn inline_size(_context: fidl::encoding::Context) -> usize {
11113 16
11114 }
11115 }
11116
11117 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PdProcessedRaInfo, D>
11118 for &PdProcessedRaInfo
11119 {
11120 unsafe fn encode(
11121 self,
11122 encoder: &mut fidl::encoding::Encoder<'_, D>,
11123 offset: usize,
11124 mut depth: fidl::encoding::Depth,
11125 ) -> fidl::Result<()> {
11126 encoder.debug_check_bounds::<PdProcessedRaInfo>(offset);
11127 let max_ordinal: u64 = self.max_ordinal_present();
11129 encoder.write_num(max_ordinal, offset);
11130 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11131 if max_ordinal == 0 {
11133 return Ok(());
11134 }
11135 depth.increment()?;
11136 let envelope_size = 8;
11137 let bytes_len = max_ordinal as usize * envelope_size;
11138 #[allow(unused_variables)]
11139 let offset = encoder.out_of_line_offset(bytes_len);
11140 let mut _prev_end_offset: usize = 0;
11141 if 1 > max_ordinal {
11142 return Ok(());
11143 }
11144
11145 let cur_offset: usize = (1 - 1) * envelope_size;
11148
11149 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11151
11152 fidl::encoding::encode_in_envelope_optional::<u32, D>(
11157 self.num_platform_ra_received
11158 .as_ref()
11159 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
11160 encoder,
11161 offset + cur_offset,
11162 depth,
11163 )?;
11164
11165 _prev_end_offset = cur_offset + envelope_size;
11166 if 2 > max_ordinal {
11167 return Ok(());
11168 }
11169
11170 let cur_offset: usize = (2 - 1) * envelope_size;
11173
11174 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11176
11177 fidl::encoding::encode_in_envelope_optional::<u32, D>(
11182 self.num_platform_pio_processed
11183 .as_ref()
11184 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
11185 encoder,
11186 offset + cur_offset,
11187 depth,
11188 )?;
11189
11190 _prev_end_offset = cur_offset + envelope_size;
11191 if 3 > max_ordinal {
11192 return Ok(());
11193 }
11194
11195 let cur_offset: usize = (3 - 1) * envelope_size;
11198
11199 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11201
11202 fidl::encoding::encode_in_envelope_optional::<u32, D>(
11207 self.last_platform_ra_msec
11208 .as_ref()
11209 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
11210 encoder,
11211 offset + cur_offset,
11212 depth,
11213 )?;
11214
11215 _prev_end_offset = cur_offset + envelope_size;
11216
11217 Ok(())
11218 }
11219 }
11220
11221 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PdProcessedRaInfo {
11222 #[inline(always)]
11223 fn new_empty() -> Self {
11224 Self::default()
11225 }
11226
11227 unsafe fn decode(
11228 &mut self,
11229 decoder: &mut fidl::encoding::Decoder<'_, D>,
11230 offset: usize,
11231 mut depth: fidl::encoding::Depth,
11232 ) -> fidl::Result<()> {
11233 decoder.debug_check_bounds::<Self>(offset);
11234 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11235 None => return Err(fidl::Error::NotNullable),
11236 Some(len) => len,
11237 };
11238 if len == 0 {
11240 return Ok(());
11241 };
11242 depth.increment()?;
11243 let envelope_size = 8;
11244 let bytes_len = len * envelope_size;
11245 let offset = decoder.out_of_line_offset(bytes_len)?;
11246 let mut _next_ordinal_to_read = 0;
11248 let mut next_offset = offset;
11249 let end_offset = offset + bytes_len;
11250 _next_ordinal_to_read += 1;
11251 if next_offset >= end_offset {
11252 return Ok(());
11253 }
11254
11255 while _next_ordinal_to_read < 1 {
11257 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11258 _next_ordinal_to_read += 1;
11259 next_offset += envelope_size;
11260 }
11261
11262 let next_out_of_line = decoder.next_out_of_line();
11263 let handles_before = decoder.remaining_handles();
11264 if let Some((inlined, num_bytes, num_handles)) =
11265 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11266 {
11267 let member_inline_size =
11268 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11269 if inlined != (member_inline_size <= 4) {
11270 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11271 }
11272 let inner_offset;
11273 let mut inner_depth = depth.clone();
11274 if inlined {
11275 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11276 inner_offset = next_offset;
11277 } else {
11278 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11279 inner_depth.increment()?;
11280 }
11281 let val_ref =
11282 self.num_platform_ra_received.get_or_insert_with(|| fidl::new_empty!(u32, D));
11283 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
11284 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11285 {
11286 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11287 }
11288 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11289 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11290 }
11291 }
11292
11293 next_offset += envelope_size;
11294 _next_ordinal_to_read += 1;
11295 if next_offset >= end_offset {
11296 return Ok(());
11297 }
11298
11299 while _next_ordinal_to_read < 2 {
11301 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11302 _next_ordinal_to_read += 1;
11303 next_offset += envelope_size;
11304 }
11305
11306 let next_out_of_line = decoder.next_out_of_line();
11307 let handles_before = decoder.remaining_handles();
11308 if let Some((inlined, num_bytes, num_handles)) =
11309 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11310 {
11311 let member_inline_size =
11312 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11313 if inlined != (member_inline_size <= 4) {
11314 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11315 }
11316 let inner_offset;
11317 let mut inner_depth = depth.clone();
11318 if inlined {
11319 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11320 inner_offset = next_offset;
11321 } else {
11322 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11323 inner_depth.increment()?;
11324 }
11325 let val_ref =
11326 self.num_platform_pio_processed.get_or_insert_with(|| fidl::new_empty!(u32, D));
11327 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
11328 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11329 {
11330 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11331 }
11332 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11333 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11334 }
11335 }
11336
11337 next_offset += envelope_size;
11338 _next_ordinal_to_read += 1;
11339 if next_offset >= end_offset {
11340 return Ok(());
11341 }
11342
11343 while _next_ordinal_to_read < 3 {
11345 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11346 _next_ordinal_to_read += 1;
11347 next_offset += envelope_size;
11348 }
11349
11350 let next_out_of_line = decoder.next_out_of_line();
11351 let handles_before = decoder.remaining_handles();
11352 if let Some((inlined, num_bytes, num_handles)) =
11353 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11354 {
11355 let member_inline_size =
11356 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11357 if inlined != (member_inline_size <= 4) {
11358 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11359 }
11360 let inner_offset;
11361 let mut inner_depth = depth.clone();
11362 if inlined {
11363 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11364 inner_offset = next_offset;
11365 } else {
11366 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11367 inner_depth.increment()?;
11368 }
11369 let val_ref =
11370 self.last_platform_ra_msec.get_or_insert_with(|| fidl::new_empty!(u32, D));
11371 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
11372 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11373 {
11374 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11375 }
11376 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11377 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11378 }
11379 }
11380
11381 next_offset += envelope_size;
11382
11383 while next_offset < end_offset {
11385 _next_ordinal_to_read += 1;
11386 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11387 next_offset += envelope_size;
11388 }
11389
11390 Ok(())
11391 }
11392 }
11393
11394 impl SrpServerInfo {
11395 #[inline(always)]
11396 fn max_ordinal_present(&self) -> u64 {
11397 if let Some(_) = self.services_registration {
11398 return 6;
11399 }
11400 if let Some(_) = self.hosts_registration {
11401 return 5;
11402 }
11403 if let Some(_) = self.response_counters {
11404 return 4;
11405 }
11406 if let Some(_) = self.address_mode {
11407 return 3;
11408 }
11409 if let Some(_) = self.port {
11410 return 2;
11411 }
11412 if let Some(_) = self.state {
11413 return 1;
11414 }
11415 0
11416 }
11417 }
11418
11419 impl fidl::encoding::ValueTypeMarker for SrpServerInfo {
11420 type Borrowed<'a> = &'a Self;
11421 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11422 value
11423 }
11424 }
11425
11426 unsafe impl fidl::encoding::TypeMarker for SrpServerInfo {
11427 type Owned = Self;
11428
11429 #[inline(always)]
11430 fn inline_align(_context: fidl::encoding::Context) -> usize {
11431 8
11432 }
11433
11434 #[inline(always)]
11435 fn inline_size(_context: fidl::encoding::Context) -> usize {
11436 16
11437 }
11438 }
11439
11440 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerInfo, D>
11441 for &SrpServerInfo
11442 {
11443 unsafe fn encode(
11444 self,
11445 encoder: &mut fidl::encoding::Encoder<'_, D>,
11446 offset: usize,
11447 mut depth: fidl::encoding::Depth,
11448 ) -> fidl::Result<()> {
11449 encoder.debug_check_bounds::<SrpServerInfo>(offset);
11450 let max_ordinal: u64 = self.max_ordinal_present();
11452 encoder.write_num(max_ordinal, offset);
11453 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11454 if max_ordinal == 0 {
11456 return Ok(());
11457 }
11458 depth.increment()?;
11459 let envelope_size = 8;
11460 let bytes_len = max_ordinal as usize * envelope_size;
11461 #[allow(unused_variables)]
11462 let offset = encoder.out_of_line_offset(bytes_len);
11463 let mut _prev_end_offset: usize = 0;
11464 if 1 > max_ordinal {
11465 return Ok(());
11466 }
11467
11468 let cur_offset: usize = (1 - 1) * envelope_size;
11471
11472 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11474
11475 fidl::encoding::encode_in_envelope_optional::<SrpServerState, D>(
11480 self.state
11481 .as_ref()
11482 .map(<SrpServerState as fidl::encoding::ValueTypeMarker>::borrow),
11483 encoder,
11484 offset + cur_offset,
11485 depth,
11486 )?;
11487
11488 _prev_end_offset = cur_offset + envelope_size;
11489 if 2 > max_ordinal {
11490 return Ok(());
11491 }
11492
11493 let cur_offset: usize = (2 - 1) * envelope_size;
11496
11497 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11499
11500 fidl::encoding::encode_in_envelope_optional::<u16, D>(
11505 self.port.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
11506 encoder,
11507 offset + cur_offset,
11508 depth,
11509 )?;
11510
11511 _prev_end_offset = cur_offset + envelope_size;
11512 if 3 > max_ordinal {
11513 return Ok(());
11514 }
11515
11516 let cur_offset: usize = (3 - 1) * envelope_size;
11519
11520 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11522
11523 fidl::encoding::encode_in_envelope_optional::<SrpServerAddressMode, D>(
11528 self.address_mode
11529 .as_ref()
11530 .map(<SrpServerAddressMode as fidl::encoding::ValueTypeMarker>::borrow),
11531 encoder,
11532 offset + cur_offset,
11533 depth,
11534 )?;
11535
11536 _prev_end_offset = cur_offset + envelope_size;
11537 if 4 > max_ordinal {
11538 return Ok(());
11539 }
11540
11541 let cur_offset: usize = (4 - 1) * envelope_size;
11544
11545 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11547
11548 fidl::encoding::encode_in_envelope_optional::<SrpServerResponseCounters, D>(
11553 self.response_counters
11554 .as_ref()
11555 .map(<SrpServerResponseCounters as fidl::encoding::ValueTypeMarker>::borrow),
11556 encoder,
11557 offset + cur_offset,
11558 depth,
11559 )?;
11560
11561 _prev_end_offset = cur_offset + envelope_size;
11562 if 5 > max_ordinal {
11563 return Ok(());
11564 }
11565
11566 let cur_offset: usize = (5 - 1) * envelope_size;
11569
11570 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11572
11573 fidl::encoding::encode_in_envelope_optional::<SrpServerRegistration, D>(
11578 self.hosts_registration
11579 .as_ref()
11580 .map(<SrpServerRegistration as fidl::encoding::ValueTypeMarker>::borrow),
11581 encoder,
11582 offset + cur_offset,
11583 depth,
11584 )?;
11585
11586 _prev_end_offset = cur_offset + envelope_size;
11587 if 6 > max_ordinal {
11588 return Ok(());
11589 }
11590
11591 let cur_offset: usize = (6 - 1) * envelope_size;
11594
11595 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11597
11598 fidl::encoding::encode_in_envelope_optional::<SrpServerRegistration, D>(
11603 self.services_registration
11604 .as_ref()
11605 .map(<SrpServerRegistration as fidl::encoding::ValueTypeMarker>::borrow),
11606 encoder,
11607 offset + cur_offset,
11608 depth,
11609 )?;
11610
11611 _prev_end_offset = cur_offset + envelope_size;
11612
11613 Ok(())
11614 }
11615 }
11616
11617 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerInfo {
11618 #[inline(always)]
11619 fn new_empty() -> Self {
11620 Self::default()
11621 }
11622
11623 unsafe fn decode(
11624 &mut self,
11625 decoder: &mut fidl::encoding::Decoder<'_, D>,
11626 offset: usize,
11627 mut depth: fidl::encoding::Depth,
11628 ) -> fidl::Result<()> {
11629 decoder.debug_check_bounds::<Self>(offset);
11630 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11631 None => return Err(fidl::Error::NotNullable),
11632 Some(len) => len,
11633 };
11634 if len == 0 {
11636 return Ok(());
11637 };
11638 depth.increment()?;
11639 let envelope_size = 8;
11640 let bytes_len = len * envelope_size;
11641 let offset = decoder.out_of_line_offset(bytes_len)?;
11642 let mut _next_ordinal_to_read = 0;
11644 let mut next_offset = offset;
11645 let end_offset = offset + bytes_len;
11646 _next_ordinal_to_read += 1;
11647 if next_offset >= end_offset {
11648 return Ok(());
11649 }
11650
11651 while _next_ordinal_to_read < 1 {
11653 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11654 _next_ordinal_to_read += 1;
11655 next_offset += envelope_size;
11656 }
11657
11658 let next_out_of_line = decoder.next_out_of_line();
11659 let handles_before = decoder.remaining_handles();
11660 if let Some((inlined, num_bytes, num_handles)) =
11661 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11662 {
11663 let member_inline_size =
11664 <SrpServerState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11665 if inlined != (member_inline_size <= 4) {
11666 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11667 }
11668 let inner_offset;
11669 let mut inner_depth = depth.clone();
11670 if inlined {
11671 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11672 inner_offset = next_offset;
11673 } else {
11674 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11675 inner_depth.increment()?;
11676 }
11677 let val_ref = self.state.get_or_insert_with(|| fidl::new_empty!(SrpServerState, D));
11678 fidl::decode!(SrpServerState, D, val_ref, decoder, inner_offset, inner_depth)?;
11679 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11680 {
11681 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11682 }
11683 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11684 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11685 }
11686 }
11687
11688 next_offset += envelope_size;
11689 _next_ordinal_to_read += 1;
11690 if next_offset >= end_offset {
11691 return Ok(());
11692 }
11693
11694 while _next_ordinal_to_read < 2 {
11696 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11697 _next_ordinal_to_read += 1;
11698 next_offset += envelope_size;
11699 }
11700
11701 let next_out_of_line = decoder.next_out_of_line();
11702 let handles_before = decoder.remaining_handles();
11703 if let Some((inlined, num_bytes, num_handles)) =
11704 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11705 {
11706 let member_inline_size =
11707 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11708 if inlined != (member_inline_size <= 4) {
11709 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11710 }
11711 let inner_offset;
11712 let mut inner_depth = depth.clone();
11713 if inlined {
11714 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11715 inner_offset = next_offset;
11716 } else {
11717 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11718 inner_depth.increment()?;
11719 }
11720 let val_ref = self.port.get_or_insert_with(|| fidl::new_empty!(u16, D));
11721 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
11722 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11723 {
11724 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11725 }
11726 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11727 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11728 }
11729 }
11730
11731 next_offset += envelope_size;
11732 _next_ordinal_to_read += 1;
11733 if next_offset >= end_offset {
11734 return Ok(());
11735 }
11736
11737 while _next_ordinal_to_read < 3 {
11739 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11740 _next_ordinal_to_read += 1;
11741 next_offset += envelope_size;
11742 }
11743
11744 let next_out_of_line = decoder.next_out_of_line();
11745 let handles_before = decoder.remaining_handles();
11746 if let Some((inlined, num_bytes, num_handles)) =
11747 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11748 {
11749 let member_inline_size =
11750 <SrpServerAddressMode as fidl::encoding::TypeMarker>::inline_size(
11751 decoder.context,
11752 );
11753 if inlined != (member_inline_size <= 4) {
11754 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11755 }
11756 let inner_offset;
11757 let mut inner_depth = depth.clone();
11758 if inlined {
11759 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11760 inner_offset = next_offset;
11761 } else {
11762 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11763 inner_depth.increment()?;
11764 }
11765 let val_ref = self
11766 .address_mode
11767 .get_or_insert_with(|| fidl::new_empty!(SrpServerAddressMode, D));
11768 fidl::decode!(
11769 SrpServerAddressMode,
11770 D,
11771 val_ref,
11772 decoder,
11773 inner_offset,
11774 inner_depth
11775 )?;
11776 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11777 {
11778 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11779 }
11780 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11781 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11782 }
11783 }
11784
11785 next_offset += envelope_size;
11786 _next_ordinal_to_read += 1;
11787 if next_offset >= end_offset {
11788 return Ok(());
11789 }
11790
11791 while _next_ordinal_to_read < 4 {
11793 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11794 _next_ordinal_to_read += 1;
11795 next_offset += envelope_size;
11796 }
11797
11798 let next_out_of_line = decoder.next_out_of_line();
11799 let handles_before = decoder.remaining_handles();
11800 if let Some((inlined, num_bytes, num_handles)) =
11801 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11802 {
11803 let member_inline_size =
11804 <SrpServerResponseCounters as fidl::encoding::TypeMarker>::inline_size(
11805 decoder.context,
11806 );
11807 if inlined != (member_inline_size <= 4) {
11808 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11809 }
11810 let inner_offset;
11811 let mut inner_depth = depth.clone();
11812 if inlined {
11813 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11814 inner_offset = next_offset;
11815 } else {
11816 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11817 inner_depth.increment()?;
11818 }
11819 let val_ref = self
11820 .response_counters
11821 .get_or_insert_with(|| fidl::new_empty!(SrpServerResponseCounters, D));
11822 fidl::decode!(
11823 SrpServerResponseCounters,
11824 D,
11825 val_ref,
11826 decoder,
11827 inner_offset,
11828 inner_depth
11829 )?;
11830 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11831 {
11832 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11833 }
11834 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11835 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11836 }
11837 }
11838
11839 next_offset += envelope_size;
11840 _next_ordinal_to_read += 1;
11841 if next_offset >= end_offset {
11842 return Ok(());
11843 }
11844
11845 while _next_ordinal_to_read < 5 {
11847 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11848 _next_ordinal_to_read += 1;
11849 next_offset += envelope_size;
11850 }
11851
11852 let next_out_of_line = decoder.next_out_of_line();
11853 let handles_before = decoder.remaining_handles();
11854 if let Some((inlined, num_bytes, num_handles)) =
11855 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11856 {
11857 let member_inline_size =
11858 <SrpServerRegistration as fidl::encoding::TypeMarker>::inline_size(
11859 decoder.context,
11860 );
11861 if inlined != (member_inline_size <= 4) {
11862 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11863 }
11864 let inner_offset;
11865 let mut inner_depth = depth.clone();
11866 if inlined {
11867 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11868 inner_offset = next_offset;
11869 } else {
11870 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11871 inner_depth.increment()?;
11872 }
11873 let val_ref = self
11874 .hosts_registration
11875 .get_or_insert_with(|| fidl::new_empty!(SrpServerRegistration, D));
11876 fidl::decode!(
11877 SrpServerRegistration,
11878 D,
11879 val_ref,
11880 decoder,
11881 inner_offset,
11882 inner_depth
11883 )?;
11884 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11885 {
11886 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11887 }
11888 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11889 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11890 }
11891 }
11892
11893 next_offset += envelope_size;
11894 _next_ordinal_to_read += 1;
11895 if next_offset >= end_offset {
11896 return Ok(());
11897 }
11898
11899 while _next_ordinal_to_read < 6 {
11901 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11902 _next_ordinal_to_read += 1;
11903 next_offset += envelope_size;
11904 }
11905
11906 let next_out_of_line = decoder.next_out_of_line();
11907 let handles_before = decoder.remaining_handles();
11908 if let Some((inlined, num_bytes, num_handles)) =
11909 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11910 {
11911 let member_inline_size =
11912 <SrpServerRegistration as fidl::encoding::TypeMarker>::inline_size(
11913 decoder.context,
11914 );
11915 if inlined != (member_inline_size <= 4) {
11916 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11917 }
11918 let inner_offset;
11919 let mut inner_depth = depth.clone();
11920 if inlined {
11921 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11922 inner_offset = next_offset;
11923 } else {
11924 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11925 inner_depth.increment()?;
11926 }
11927 let val_ref = self
11928 .services_registration
11929 .get_or_insert_with(|| fidl::new_empty!(SrpServerRegistration, D));
11930 fidl::decode!(
11931 SrpServerRegistration,
11932 D,
11933 val_ref,
11934 decoder,
11935 inner_offset,
11936 inner_depth
11937 )?;
11938 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11939 {
11940 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11941 }
11942 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11943 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11944 }
11945 }
11946
11947 next_offset += envelope_size;
11948
11949 while next_offset < end_offset {
11951 _next_ordinal_to_read += 1;
11952 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11953 next_offset += envelope_size;
11954 }
11955
11956 Ok(())
11957 }
11958 }
11959
11960 impl SrpServerRegistration {
11961 #[inline(always)]
11962 fn max_ordinal_present(&self) -> u64 {
11963 if let Some(_) = self.remaining_key_lease_time_total {
11964 return 6;
11965 }
11966 if let Some(_) = self.remaining_lease_time_total {
11967 return 5;
11968 }
11969 if let Some(_) = self.key_lease_time_total {
11970 return 4;
11971 }
11972 if let Some(_) = self.lease_time_total {
11973 return 3;
11974 }
11975 if let Some(_) = self.deleted_count {
11976 return 2;
11977 }
11978 if let Some(_) = self.fresh_count {
11979 return 1;
11980 }
11981 0
11982 }
11983 }
11984
11985 impl fidl::encoding::ValueTypeMarker for SrpServerRegistration {
11986 type Borrowed<'a> = &'a Self;
11987 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11988 value
11989 }
11990 }
11991
11992 unsafe impl fidl::encoding::TypeMarker for SrpServerRegistration {
11993 type Owned = Self;
11994
11995 #[inline(always)]
11996 fn inline_align(_context: fidl::encoding::Context) -> usize {
11997 8
11998 }
11999
12000 #[inline(always)]
12001 fn inline_size(_context: fidl::encoding::Context) -> usize {
12002 16
12003 }
12004 }
12005
12006 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerRegistration, D>
12007 for &SrpServerRegistration
12008 {
12009 unsafe fn encode(
12010 self,
12011 encoder: &mut fidl::encoding::Encoder<'_, D>,
12012 offset: usize,
12013 mut depth: fidl::encoding::Depth,
12014 ) -> fidl::Result<()> {
12015 encoder.debug_check_bounds::<SrpServerRegistration>(offset);
12016 let max_ordinal: u64 = self.max_ordinal_present();
12018 encoder.write_num(max_ordinal, offset);
12019 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12020 if max_ordinal == 0 {
12022 return Ok(());
12023 }
12024 depth.increment()?;
12025 let envelope_size = 8;
12026 let bytes_len = max_ordinal as usize * envelope_size;
12027 #[allow(unused_variables)]
12028 let offset = encoder.out_of_line_offset(bytes_len);
12029 let mut _prev_end_offset: usize = 0;
12030 if 1 > max_ordinal {
12031 return Ok(());
12032 }
12033
12034 let cur_offset: usize = (1 - 1) * envelope_size;
12037
12038 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12040
12041 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12046 self.fresh_count.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12047 encoder,
12048 offset + cur_offset,
12049 depth,
12050 )?;
12051
12052 _prev_end_offset = cur_offset + envelope_size;
12053 if 2 > max_ordinal {
12054 return Ok(());
12055 }
12056
12057 let cur_offset: usize = (2 - 1) * envelope_size;
12060
12061 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12063
12064 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12069 self.deleted_count.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12070 encoder,
12071 offset + cur_offset,
12072 depth,
12073 )?;
12074
12075 _prev_end_offset = cur_offset + envelope_size;
12076 if 3 > max_ordinal {
12077 return Ok(());
12078 }
12079
12080 let cur_offset: usize = (3 - 1) * envelope_size;
12083
12084 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12086
12087 fidl::encoding::encode_in_envelope_optional::<i64, D>(
12092 self.lease_time_total
12093 .as_ref()
12094 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12095 encoder,
12096 offset + cur_offset,
12097 depth,
12098 )?;
12099
12100 _prev_end_offset = cur_offset + envelope_size;
12101 if 4 > max_ordinal {
12102 return Ok(());
12103 }
12104
12105 let cur_offset: usize = (4 - 1) * envelope_size;
12108
12109 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12111
12112 fidl::encoding::encode_in_envelope_optional::<i64, D>(
12117 self.key_lease_time_total
12118 .as_ref()
12119 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12120 encoder,
12121 offset + cur_offset,
12122 depth,
12123 )?;
12124
12125 _prev_end_offset = cur_offset + envelope_size;
12126 if 5 > max_ordinal {
12127 return Ok(());
12128 }
12129
12130 let cur_offset: usize = (5 - 1) * envelope_size;
12133
12134 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12136
12137 fidl::encoding::encode_in_envelope_optional::<i64, D>(
12142 self.remaining_lease_time_total
12143 .as_ref()
12144 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12145 encoder,
12146 offset + cur_offset,
12147 depth,
12148 )?;
12149
12150 _prev_end_offset = cur_offset + envelope_size;
12151 if 6 > max_ordinal {
12152 return Ok(());
12153 }
12154
12155 let cur_offset: usize = (6 - 1) * envelope_size;
12158
12159 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12161
12162 fidl::encoding::encode_in_envelope_optional::<i64, D>(
12167 self.remaining_key_lease_time_total
12168 .as_ref()
12169 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12170 encoder,
12171 offset + cur_offset,
12172 depth,
12173 )?;
12174
12175 _prev_end_offset = cur_offset + envelope_size;
12176
12177 Ok(())
12178 }
12179 }
12180
12181 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerRegistration {
12182 #[inline(always)]
12183 fn new_empty() -> Self {
12184 Self::default()
12185 }
12186
12187 unsafe fn decode(
12188 &mut self,
12189 decoder: &mut fidl::encoding::Decoder<'_, D>,
12190 offset: usize,
12191 mut depth: fidl::encoding::Depth,
12192 ) -> fidl::Result<()> {
12193 decoder.debug_check_bounds::<Self>(offset);
12194 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12195 None => return Err(fidl::Error::NotNullable),
12196 Some(len) => len,
12197 };
12198 if len == 0 {
12200 return Ok(());
12201 };
12202 depth.increment()?;
12203 let envelope_size = 8;
12204 let bytes_len = len * envelope_size;
12205 let offset = decoder.out_of_line_offset(bytes_len)?;
12206 let mut _next_ordinal_to_read = 0;
12208 let mut next_offset = offset;
12209 let end_offset = offset + bytes_len;
12210 _next_ordinal_to_read += 1;
12211 if next_offset >= end_offset {
12212 return Ok(());
12213 }
12214
12215 while _next_ordinal_to_read < 1 {
12217 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12218 _next_ordinal_to_read += 1;
12219 next_offset += envelope_size;
12220 }
12221
12222 let next_out_of_line = decoder.next_out_of_line();
12223 let handles_before = decoder.remaining_handles();
12224 if let Some((inlined, num_bytes, num_handles)) =
12225 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12226 {
12227 let member_inline_size =
12228 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12229 if inlined != (member_inline_size <= 4) {
12230 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12231 }
12232 let inner_offset;
12233 let mut inner_depth = depth.clone();
12234 if inlined {
12235 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12236 inner_offset = next_offset;
12237 } else {
12238 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12239 inner_depth.increment()?;
12240 }
12241 let val_ref = self.fresh_count.get_or_insert_with(|| fidl::new_empty!(u32, D));
12242 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12243 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12244 {
12245 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12246 }
12247 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12248 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12249 }
12250 }
12251
12252 next_offset += envelope_size;
12253 _next_ordinal_to_read += 1;
12254 if next_offset >= end_offset {
12255 return Ok(());
12256 }
12257
12258 while _next_ordinal_to_read < 2 {
12260 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12261 _next_ordinal_to_read += 1;
12262 next_offset += envelope_size;
12263 }
12264
12265 let next_out_of_line = decoder.next_out_of_line();
12266 let handles_before = decoder.remaining_handles();
12267 if let Some((inlined, num_bytes, num_handles)) =
12268 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12269 {
12270 let member_inline_size =
12271 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12272 if inlined != (member_inline_size <= 4) {
12273 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12274 }
12275 let inner_offset;
12276 let mut inner_depth = depth.clone();
12277 if inlined {
12278 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12279 inner_offset = next_offset;
12280 } else {
12281 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12282 inner_depth.increment()?;
12283 }
12284 let val_ref = self.deleted_count.get_or_insert_with(|| fidl::new_empty!(u32, D));
12285 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12286 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12287 {
12288 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12289 }
12290 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12291 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12292 }
12293 }
12294
12295 next_offset += envelope_size;
12296 _next_ordinal_to_read += 1;
12297 if next_offset >= end_offset {
12298 return Ok(());
12299 }
12300
12301 while _next_ordinal_to_read < 3 {
12303 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12304 _next_ordinal_to_read += 1;
12305 next_offset += envelope_size;
12306 }
12307
12308 let next_out_of_line = decoder.next_out_of_line();
12309 let handles_before = decoder.remaining_handles();
12310 if let Some((inlined, num_bytes, num_handles)) =
12311 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12312 {
12313 let member_inline_size =
12314 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12315 if inlined != (member_inline_size <= 4) {
12316 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12317 }
12318 let inner_offset;
12319 let mut inner_depth = depth.clone();
12320 if inlined {
12321 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12322 inner_offset = next_offset;
12323 } else {
12324 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12325 inner_depth.increment()?;
12326 }
12327 let val_ref = self.lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
12328 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12329 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12330 {
12331 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12332 }
12333 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12334 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12335 }
12336 }
12337
12338 next_offset += envelope_size;
12339 _next_ordinal_to_read += 1;
12340 if next_offset >= end_offset {
12341 return Ok(());
12342 }
12343
12344 while _next_ordinal_to_read < 4 {
12346 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12347 _next_ordinal_to_read += 1;
12348 next_offset += envelope_size;
12349 }
12350
12351 let next_out_of_line = decoder.next_out_of_line();
12352 let handles_before = decoder.remaining_handles();
12353 if let Some((inlined, num_bytes, num_handles)) =
12354 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12355 {
12356 let member_inline_size =
12357 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12358 if inlined != (member_inline_size <= 4) {
12359 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12360 }
12361 let inner_offset;
12362 let mut inner_depth = depth.clone();
12363 if inlined {
12364 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12365 inner_offset = next_offset;
12366 } else {
12367 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12368 inner_depth.increment()?;
12369 }
12370 let val_ref =
12371 self.key_lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
12372 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12373 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12374 {
12375 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12376 }
12377 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12378 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12379 }
12380 }
12381
12382 next_offset += envelope_size;
12383 _next_ordinal_to_read += 1;
12384 if next_offset >= end_offset {
12385 return Ok(());
12386 }
12387
12388 while _next_ordinal_to_read < 5 {
12390 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12391 _next_ordinal_to_read += 1;
12392 next_offset += envelope_size;
12393 }
12394
12395 let next_out_of_line = decoder.next_out_of_line();
12396 let handles_before = decoder.remaining_handles();
12397 if let Some((inlined, num_bytes, num_handles)) =
12398 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12399 {
12400 let member_inline_size =
12401 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12402 if inlined != (member_inline_size <= 4) {
12403 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12404 }
12405 let inner_offset;
12406 let mut inner_depth = depth.clone();
12407 if inlined {
12408 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12409 inner_offset = next_offset;
12410 } else {
12411 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12412 inner_depth.increment()?;
12413 }
12414 let val_ref =
12415 self.remaining_lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
12416 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12417 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12418 {
12419 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12420 }
12421 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12422 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12423 }
12424 }
12425
12426 next_offset += envelope_size;
12427 _next_ordinal_to_read += 1;
12428 if next_offset >= end_offset {
12429 return Ok(());
12430 }
12431
12432 while _next_ordinal_to_read < 6 {
12434 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12435 _next_ordinal_to_read += 1;
12436 next_offset += envelope_size;
12437 }
12438
12439 let next_out_of_line = decoder.next_out_of_line();
12440 let handles_before = decoder.remaining_handles();
12441 if let Some((inlined, num_bytes, num_handles)) =
12442 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12443 {
12444 let member_inline_size =
12445 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12446 if inlined != (member_inline_size <= 4) {
12447 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12448 }
12449 let inner_offset;
12450 let mut inner_depth = depth.clone();
12451 if inlined {
12452 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12453 inner_offset = next_offset;
12454 } else {
12455 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12456 inner_depth.increment()?;
12457 }
12458 let val_ref = self
12459 .remaining_key_lease_time_total
12460 .get_or_insert_with(|| fidl::new_empty!(i64, D));
12461 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12462 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12463 {
12464 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12465 }
12466 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12467 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12468 }
12469 }
12470
12471 next_offset += envelope_size;
12472
12473 while next_offset < end_offset {
12475 _next_ordinal_to_read += 1;
12476 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12477 next_offset += envelope_size;
12478 }
12479
12480 Ok(())
12481 }
12482 }
12483
12484 impl SrpServerResponseCounters {
12485 #[inline(always)]
12486 fn max_ordinal_present(&self) -> u64 {
12487 if let Some(_) = self.other_response {
12488 return 6;
12489 }
12490 if let Some(_) = self.refused_response {
12491 return 5;
12492 }
12493 if let Some(_) = self.name_exists_response {
12494 return 4;
12495 }
12496 if let Some(_) = self.format_error_response {
12497 return 3;
12498 }
12499 if let Some(_) = self.server_failure_response {
12500 return 2;
12501 }
12502 if let Some(_) = self.success_response {
12503 return 1;
12504 }
12505 0
12506 }
12507 }
12508
12509 impl fidl::encoding::ValueTypeMarker for SrpServerResponseCounters {
12510 type Borrowed<'a> = &'a Self;
12511 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12512 value
12513 }
12514 }
12515
12516 unsafe impl fidl::encoding::TypeMarker for SrpServerResponseCounters {
12517 type Owned = Self;
12518
12519 #[inline(always)]
12520 fn inline_align(_context: fidl::encoding::Context) -> usize {
12521 8
12522 }
12523
12524 #[inline(always)]
12525 fn inline_size(_context: fidl::encoding::Context) -> usize {
12526 16
12527 }
12528 }
12529
12530 unsafe impl<D: fidl::encoding::ResourceDialect>
12531 fidl::encoding::Encode<SrpServerResponseCounters, D> for &SrpServerResponseCounters
12532 {
12533 unsafe fn encode(
12534 self,
12535 encoder: &mut fidl::encoding::Encoder<'_, D>,
12536 offset: usize,
12537 mut depth: fidl::encoding::Depth,
12538 ) -> fidl::Result<()> {
12539 encoder.debug_check_bounds::<SrpServerResponseCounters>(offset);
12540 let max_ordinal: u64 = self.max_ordinal_present();
12542 encoder.write_num(max_ordinal, offset);
12543 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12544 if max_ordinal == 0 {
12546 return Ok(());
12547 }
12548 depth.increment()?;
12549 let envelope_size = 8;
12550 let bytes_len = max_ordinal as usize * envelope_size;
12551 #[allow(unused_variables)]
12552 let offset = encoder.out_of_line_offset(bytes_len);
12553 let mut _prev_end_offset: usize = 0;
12554 if 1 > max_ordinal {
12555 return Ok(());
12556 }
12557
12558 let cur_offset: usize = (1 - 1) * envelope_size;
12561
12562 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12564
12565 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12570 self.success_response
12571 .as_ref()
12572 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12573 encoder,
12574 offset + cur_offset,
12575 depth,
12576 )?;
12577
12578 _prev_end_offset = cur_offset + envelope_size;
12579 if 2 > max_ordinal {
12580 return Ok(());
12581 }
12582
12583 let cur_offset: usize = (2 - 1) * envelope_size;
12586
12587 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12589
12590 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12595 self.server_failure_response
12596 .as_ref()
12597 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12598 encoder,
12599 offset + cur_offset,
12600 depth,
12601 )?;
12602
12603 _prev_end_offset = cur_offset + envelope_size;
12604 if 3 > max_ordinal {
12605 return Ok(());
12606 }
12607
12608 let cur_offset: usize = (3 - 1) * envelope_size;
12611
12612 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12614
12615 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12620 self.format_error_response
12621 .as_ref()
12622 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12623 encoder,
12624 offset + cur_offset,
12625 depth,
12626 )?;
12627
12628 _prev_end_offset = cur_offset + envelope_size;
12629 if 4 > max_ordinal {
12630 return Ok(());
12631 }
12632
12633 let cur_offset: usize = (4 - 1) * envelope_size;
12636
12637 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12639
12640 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12645 self.name_exists_response
12646 .as_ref()
12647 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12648 encoder,
12649 offset + cur_offset,
12650 depth,
12651 )?;
12652
12653 _prev_end_offset = cur_offset + envelope_size;
12654 if 5 > max_ordinal {
12655 return Ok(());
12656 }
12657
12658 let cur_offset: usize = (5 - 1) * envelope_size;
12661
12662 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12664
12665 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12670 self.refused_response
12671 .as_ref()
12672 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12673 encoder,
12674 offset + cur_offset,
12675 depth,
12676 )?;
12677
12678 _prev_end_offset = cur_offset + envelope_size;
12679 if 6 > max_ordinal {
12680 return Ok(());
12681 }
12682
12683 let cur_offset: usize = (6 - 1) * envelope_size;
12686
12687 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12689
12690 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12695 self.other_response.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12696 encoder,
12697 offset + cur_offset,
12698 depth,
12699 )?;
12700
12701 _prev_end_offset = cur_offset + envelope_size;
12702
12703 Ok(())
12704 }
12705 }
12706
12707 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12708 for SrpServerResponseCounters
12709 {
12710 #[inline(always)]
12711 fn new_empty() -> Self {
12712 Self::default()
12713 }
12714
12715 unsafe fn decode(
12716 &mut self,
12717 decoder: &mut fidl::encoding::Decoder<'_, D>,
12718 offset: usize,
12719 mut depth: fidl::encoding::Depth,
12720 ) -> fidl::Result<()> {
12721 decoder.debug_check_bounds::<Self>(offset);
12722 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12723 None => return Err(fidl::Error::NotNullable),
12724 Some(len) => len,
12725 };
12726 if len == 0 {
12728 return Ok(());
12729 };
12730 depth.increment()?;
12731 let envelope_size = 8;
12732 let bytes_len = len * envelope_size;
12733 let offset = decoder.out_of_line_offset(bytes_len)?;
12734 let mut _next_ordinal_to_read = 0;
12736 let mut next_offset = offset;
12737 let end_offset = offset + bytes_len;
12738 _next_ordinal_to_read += 1;
12739 if next_offset >= end_offset {
12740 return Ok(());
12741 }
12742
12743 while _next_ordinal_to_read < 1 {
12745 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12746 _next_ordinal_to_read += 1;
12747 next_offset += envelope_size;
12748 }
12749
12750 let next_out_of_line = decoder.next_out_of_line();
12751 let handles_before = decoder.remaining_handles();
12752 if let Some((inlined, num_bytes, num_handles)) =
12753 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12754 {
12755 let member_inline_size =
12756 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12757 if inlined != (member_inline_size <= 4) {
12758 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12759 }
12760 let inner_offset;
12761 let mut inner_depth = depth.clone();
12762 if inlined {
12763 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12764 inner_offset = next_offset;
12765 } else {
12766 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12767 inner_depth.increment()?;
12768 }
12769 let val_ref = self.success_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
12770 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12771 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12772 {
12773 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12774 }
12775 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12776 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12777 }
12778 }
12779
12780 next_offset += envelope_size;
12781 _next_ordinal_to_read += 1;
12782 if next_offset >= end_offset {
12783 return Ok(());
12784 }
12785
12786 while _next_ordinal_to_read < 2 {
12788 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12789 _next_ordinal_to_read += 1;
12790 next_offset += envelope_size;
12791 }
12792
12793 let next_out_of_line = decoder.next_out_of_line();
12794 let handles_before = decoder.remaining_handles();
12795 if let Some((inlined, num_bytes, num_handles)) =
12796 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12797 {
12798 let member_inline_size =
12799 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12800 if inlined != (member_inline_size <= 4) {
12801 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12802 }
12803 let inner_offset;
12804 let mut inner_depth = depth.clone();
12805 if inlined {
12806 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12807 inner_offset = next_offset;
12808 } else {
12809 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12810 inner_depth.increment()?;
12811 }
12812 let val_ref =
12813 self.server_failure_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
12814 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12815 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12816 {
12817 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12818 }
12819 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12820 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12821 }
12822 }
12823
12824 next_offset += envelope_size;
12825 _next_ordinal_to_read += 1;
12826 if next_offset >= end_offset {
12827 return Ok(());
12828 }
12829
12830 while _next_ordinal_to_read < 3 {
12832 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12833 _next_ordinal_to_read += 1;
12834 next_offset += envelope_size;
12835 }
12836
12837 let next_out_of_line = decoder.next_out_of_line();
12838 let handles_before = decoder.remaining_handles();
12839 if let Some((inlined, num_bytes, num_handles)) =
12840 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12841 {
12842 let member_inline_size =
12843 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12844 if inlined != (member_inline_size <= 4) {
12845 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12846 }
12847 let inner_offset;
12848 let mut inner_depth = depth.clone();
12849 if inlined {
12850 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12851 inner_offset = next_offset;
12852 } else {
12853 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12854 inner_depth.increment()?;
12855 }
12856 let val_ref =
12857 self.format_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
12858 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12859 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12860 {
12861 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12862 }
12863 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12864 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12865 }
12866 }
12867
12868 next_offset += envelope_size;
12869 _next_ordinal_to_read += 1;
12870 if next_offset >= end_offset {
12871 return Ok(());
12872 }
12873
12874 while _next_ordinal_to_read < 4 {
12876 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12877 _next_ordinal_to_read += 1;
12878 next_offset += envelope_size;
12879 }
12880
12881 let next_out_of_line = decoder.next_out_of_line();
12882 let handles_before = decoder.remaining_handles();
12883 if let Some((inlined, num_bytes, num_handles)) =
12884 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12885 {
12886 let member_inline_size =
12887 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12888 if inlined != (member_inline_size <= 4) {
12889 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12890 }
12891 let inner_offset;
12892 let mut inner_depth = depth.clone();
12893 if inlined {
12894 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12895 inner_offset = next_offset;
12896 } else {
12897 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12898 inner_depth.increment()?;
12899 }
12900 let val_ref =
12901 self.name_exists_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
12902 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12903 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12904 {
12905 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12906 }
12907 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12908 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12909 }
12910 }
12911
12912 next_offset += envelope_size;
12913 _next_ordinal_to_read += 1;
12914 if next_offset >= end_offset {
12915 return Ok(());
12916 }
12917
12918 while _next_ordinal_to_read < 5 {
12920 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12921 _next_ordinal_to_read += 1;
12922 next_offset += envelope_size;
12923 }
12924
12925 let next_out_of_line = decoder.next_out_of_line();
12926 let handles_before = decoder.remaining_handles();
12927 if let Some((inlined, num_bytes, num_handles)) =
12928 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12929 {
12930 let member_inline_size =
12931 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12932 if inlined != (member_inline_size <= 4) {
12933 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12934 }
12935 let inner_offset;
12936 let mut inner_depth = depth.clone();
12937 if inlined {
12938 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12939 inner_offset = next_offset;
12940 } else {
12941 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12942 inner_depth.increment()?;
12943 }
12944 let val_ref = self.refused_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
12945 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12946 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12947 {
12948 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12949 }
12950 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12951 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12952 }
12953 }
12954
12955 next_offset += envelope_size;
12956 _next_ordinal_to_read += 1;
12957 if next_offset >= end_offset {
12958 return Ok(());
12959 }
12960
12961 while _next_ordinal_to_read < 6 {
12963 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12964 _next_ordinal_to_read += 1;
12965 next_offset += envelope_size;
12966 }
12967
12968 let next_out_of_line = decoder.next_out_of_line();
12969 let handles_before = decoder.remaining_handles();
12970 if let Some((inlined, num_bytes, num_handles)) =
12971 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12972 {
12973 let member_inline_size =
12974 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12975 if inlined != (member_inline_size <= 4) {
12976 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12977 }
12978 let inner_offset;
12979 let mut inner_depth = depth.clone();
12980 if inlined {
12981 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12982 inner_offset = next_offset;
12983 } else {
12984 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12985 inner_depth.increment()?;
12986 }
12987 let val_ref = self.other_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
12988 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12989 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12990 {
12991 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12992 }
12993 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12994 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12995 }
12996 }
12997
12998 next_offset += envelope_size;
12999
13000 while next_offset < end_offset {
13002 _next_ordinal_to_read += 1;
13003 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13004 next_offset += envelope_size;
13005 }
13006
13007 Ok(())
13008 }
13009 }
13010
13011 impl Telemetry {
13012 #[inline(always)]
13013 fn max_ordinal_present(&self) -> u64 {
13014 if let Some(_) = self.extended_pan_id {
13015 return 27;
13016 }
13017 if let Some(_) = self.multi_ail_detected {
13018 return 26;
13019 }
13020 if let Some(_) = self.border_agent_counters {
13021 return 25;
13022 }
13023 if let Some(_) = self.link_metrics_entries {
13024 return 24;
13025 }
13026 if let Some(_) = self.dhcp6pd_info {
13027 return 23;
13028 }
13029 if let Some(_) = self.upstream_dns_info {
13030 return 22;
13031 }
13032 if let Some(_) = self.trel_peers_info {
13033 return 21;
13034 }
13035 if let Some(_) = self.trel_counters {
13036 return 20;
13037 }
13038 if let Some(_) = self.nat64_info {
13039 return 19;
13040 }
13041 if let Some(_) = self.uptime {
13042 return 18;
13043 }
13044 if let Some(_) = self.leader_data {
13045 return 17;
13046 }
13047 if let Some(_) = self.dnssd_counters {
13048 return 16;
13049 }
13050 if let Some(_) = self.srp_server_info {
13051 return 15;
13052 }
13053 if let Some(_) = self.thread_border_routing_counters {
13054 return 14;
13055 }
13056 if let Some(_) = self.thread_stable_network_data {
13057 return 13;
13058 }
13059 if let Some(_) = self.thread_network_data {
13060 return 12;
13061 }
13062 if let Some(_) = self.thread_stable_network_data_version {
13063 return 11;
13064 }
13065 if let Some(_) = self.thread_network_data_version {
13066 return 10;
13067 }
13068 if let Some(_) = self.thread_rloc {
13069 return 9;
13070 }
13071 if let Some(_) = self.thread_router_id {
13072 return 8;
13073 }
13074 if let Some(_) = self.thread_link_mode {
13075 return 7;
13076 }
13077 if let Some(_) = self.rcp_version {
13078 return 6;
13079 }
13080 if let Some(_) = self.stack_version {
13081 return 5;
13082 }
13083 if let Some(_) = self.partition_id {
13084 return 4;
13085 }
13086 if let Some(_) = self.channel_index {
13087 return 3;
13088 }
13089 if let Some(_) = self.tx_power {
13090 return 2;
13091 }
13092 if let Some(_) = self.rssi {
13093 return 1;
13094 }
13095 0
13096 }
13097 }
13098
13099 impl fidl::encoding::ValueTypeMarker for Telemetry {
13100 type Borrowed<'a> = &'a Self;
13101 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13102 value
13103 }
13104 }
13105
13106 unsafe impl fidl::encoding::TypeMarker for Telemetry {
13107 type Owned = Self;
13108
13109 #[inline(always)]
13110 fn inline_align(_context: fidl::encoding::Context) -> usize {
13111 8
13112 }
13113
13114 #[inline(always)]
13115 fn inline_size(_context: fidl::encoding::Context) -> usize {
13116 16
13117 }
13118 }
13119
13120 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Telemetry, D>
13121 for &Telemetry
13122 {
13123 unsafe fn encode(
13124 self,
13125 encoder: &mut fidl::encoding::Encoder<'_, D>,
13126 offset: usize,
13127 mut depth: fidl::encoding::Depth,
13128 ) -> fidl::Result<()> {
13129 encoder.debug_check_bounds::<Telemetry>(offset);
13130 let max_ordinal: u64 = self.max_ordinal_present();
13132 encoder.write_num(max_ordinal, offset);
13133 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13134 if max_ordinal == 0 {
13136 return Ok(());
13137 }
13138 depth.increment()?;
13139 let envelope_size = 8;
13140 let bytes_len = max_ordinal as usize * envelope_size;
13141 #[allow(unused_variables)]
13142 let offset = encoder.out_of_line_offset(bytes_len);
13143 let mut _prev_end_offset: usize = 0;
13144 if 1 > max_ordinal {
13145 return Ok(());
13146 }
13147
13148 let cur_offset: usize = (1 - 1) * envelope_size;
13151
13152 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13154
13155 fidl::encoding::encode_in_envelope_optional::<i8, D>(
13160 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
13161 encoder,
13162 offset + cur_offset,
13163 depth,
13164 )?;
13165
13166 _prev_end_offset = cur_offset + envelope_size;
13167 if 2 > max_ordinal {
13168 return Ok(());
13169 }
13170
13171 let cur_offset: usize = (2 - 1) * envelope_size;
13174
13175 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13177
13178 fidl::encoding::encode_in_envelope_optional::<i8, D>(
13183 self.tx_power.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
13184 encoder,
13185 offset + cur_offset,
13186 depth,
13187 )?;
13188
13189 _prev_end_offset = cur_offset + envelope_size;
13190 if 3 > max_ordinal {
13191 return Ok(());
13192 }
13193
13194 let cur_offset: usize = (3 - 1) * envelope_size;
13197
13198 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13200
13201 fidl::encoding::encode_in_envelope_optional::<u16, D>(
13206 self.channel_index.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
13207 encoder,
13208 offset + cur_offset,
13209 depth,
13210 )?;
13211
13212 _prev_end_offset = cur_offset + envelope_size;
13213 if 4 > max_ordinal {
13214 return Ok(());
13215 }
13216
13217 let cur_offset: usize = (4 - 1) * envelope_size;
13220
13221 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13223
13224 fidl::encoding::encode_in_envelope_optional::<u32, D>(
13229 self.partition_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13230 encoder,
13231 offset + cur_offset,
13232 depth,
13233 )?;
13234
13235 _prev_end_offset = cur_offset + envelope_size;
13236 if 5 > max_ordinal {
13237 return Ok(());
13238 }
13239
13240 let cur_offset: usize = (5 - 1) * envelope_size;
13243
13244 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13246
13247 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
13252 self.stack_version.as_ref().map(
13253 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
13254 ),
13255 encoder,
13256 offset + cur_offset,
13257 depth,
13258 )?;
13259
13260 _prev_end_offset = cur_offset + envelope_size;
13261 if 6 > max_ordinal {
13262 return Ok(());
13263 }
13264
13265 let cur_offset: usize = (6 - 1) * envelope_size;
13268
13269 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13271
13272 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
13277 self.rcp_version.as_ref().map(
13278 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
13279 ),
13280 encoder,
13281 offset + cur_offset,
13282 depth,
13283 )?;
13284
13285 _prev_end_offset = cur_offset + envelope_size;
13286 if 7 > max_ordinal {
13287 return Ok(());
13288 }
13289
13290 let cur_offset: usize = (7 - 1) * envelope_size;
13293
13294 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13296
13297 fidl::encoding::encode_in_envelope_optional::<u8, D>(
13302 self.thread_link_mode.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13303 encoder,
13304 offset + cur_offset,
13305 depth,
13306 )?;
13307
13308 _prev_end_offset = cur_offset + envelope_size;
13309 if 8 > max_ordinal {
13310 return Ok(());
13311 }
13312
13313 let cur_offset: usize = (8 - 1) * envelope_size;
13316
13317 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13319
13320 fidl::encoding::encode_in_envelope_optional::<u8, D>(
13325 self.thread_router_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13326 encoder,
13327 offset + cur_offset,
13328 depth,
13329 )?;
13330
13331 _prev_end_offset = cur_offset + envelope_size;
13332 if 9 > max_ordinal {
13333 return Ok(());
13334 }
13335
13336 let cur_offset: usize = (9 - 1) * envelope_size;
13339
13340 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13342
13343 fidl::encoding::encode_in_envelope_optional::<u16, D>(
13348 self.thread_rloc.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
13349 encoder,
13350 offset + cur_offset,
13351 depth,
13352 )?;
13353
13354 _prev_end_offset = cur_offset + envelope_size;
13355 if 10 > max_ordinal {
13356 return Ok(());
13357 }
13358
13359 let cur_offset: usize = (10 - 1) * envelope_size;
13362
13363 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13365
13366 fidl::encoding::encode_in_envelope_optional::<u8, D>(
13371 self.thread_network_data_version
13372 .as_ref()
13373 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13374 encoder,
13375 offset + cur_offset,
13376 depth,
13377 )?;
13378
13379 _prev_end_offset = cur_offset + envelope_size;
13380 if 11 > max_ordinal {
13381 return Ok(());
13382 }
13383
13384 let cur_offset: usize = (11 - 1) * envelope_size;
13387
13388 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13390
13391 fidl::encoding::encode_in_envelope_optional::<u8, D>(
13396 self.thread_stable_network_data_version
13397 .as_ref()
13398 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13399 encoder,
13400 offset + cur_offset,
13401 depth,
13402 )?;
13403
13404 _prev_end_offset = cur_offset + envelope_size;
13405 if 12 > max_ordinal {
13406 return Ok(());
13407 }
13408
13409 let cur_offset: usize = (12 - 1) * envelope_size;
13412
13413 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13415
13416 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 255>, D>(
13421 self.thread_network_data.as_ref().map(
13422 <fidl::encoding::Vector<u8, 255> as fidl::encoding::ValueTypeMarker>::borrow,
13423 ),
13424 encoder,
13425 offset + cur_offset,
13426 depth,
13427 )?;
13428
13429 _prev_end_offset = cur_offset + envelope_size;
13430 if 13 > max_ordinal {
13431 return Ok(());
13432 }
13433
13434 let cur_offset: usize = (13 - 1) * envelope_size;
13437
13438 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13440
13441 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 255>, D>(
13446 self.thread_stable_network_data.as_ref().map(
13447 <fidl::encoding::Vector<u8, 255> as fidl::encoding::ValueTypeMarker>::borrow,
13448 ),
13449 encoder,
13450 offset + cur_offset,
13451 depth,
13452 )?;
13453
13454 _prev_end_offset = cur_offset + envelope_size;
13455 if 14 > max_ordinal {
13456 return Ok(());
13457 }
13458
13459 let cur_offset: usize = (14 - 1) * envelope_size;
13462
13463 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13465
13466 fidl::encoding::encode_in_envelope_optional::<BorderRoutingCounters, D>(
13471 self.thread_border_routing_counters
13472 .as_ref()
13473 .map(<BorderRoutingCounters as fidl::encoding::ValueTypeMarker>::borrow),
13474 encoder,
13475 offset + cur_offset,
13476 depth,
13477 )?;
13478
13479 _prev_end_offset = cur_offset + envelope_size;
13480 if 15 > max_ordinal {
13481 return Ok(());
13482 }
13483
13484 let cur_offset: usize = (15 - 1) * envelope_size;
13487
13488 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13490
13491 fidl::encoding::encode_in_envelope_optional::<SrpServerInfo, D>(
13496 self.srp_server_info
13497 .as_ref()
13498 .map(<SrpServerInfo as fidl::encoding::ValueTypeMarker>::borrow),
13499 encoder,
13500 offset + cur_offset,
13501 depth,
13502 )?;
13503
13504 _prev_end_offset = cur_offset + envelope_size;
13505 if 16 > max_ordinal {
13506 return Ok(());
13507 }
13508
13509 let cur_offset: usize = (16 - 1) * envelope_size;
13512
13513 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13515
13516 fidl::encoding::encode_in_envelope_optional::<DnssdCounters, D>(
13521 self.dnssd_counters
13522 .as_ref()
13523 .map(<DnssdCounters as fidl::encoding::ValueTypeMarker>::borrow),
13524 encoder,
13525 offset + cur_offset,
13526 depth,
13527 )?;
13528
13529 _prev_end_offset = cur_offset + envelope_size;
13530 if 17 > max_ordinal {
13531 return Ok(());
13532 }
13533
13534 let cur_offset: usize = (17 - 1) * envelope_size;
13537
13538 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13540
13541 fidl::encoding::encode_in_envelope_optional::<LeaderData, D>(
13546 self.leader_data
13547 .as_ref()
13548 .map(<LeaderData as fidl::encoding::ValueTypeMarker>::borrow),
13549 encoder,
13550 offset + cur_offset,
13551 depth,
13552 )?;
13553
13554 _prev_end_offset = cur_offset + envelope_size;
13555 if 18 > max_ordinal {
13556 return Ok(());
13557 }
13558
13559 let cur_offset: usize = (18 - 1) * envelope_size;
13562
13563 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13565
13566 fidl::encoding::encode_in_envelope_optional::<i64, D>(
13571 self.uptime.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
13572 encoder,
13573 offset + cur_offset,
13574 depth,
13575 )?;
13576
13577 _prev_end_offset = cur_offset + envelope_size;
13578 if 19 > max_ordinal {
13579 return Ok(());
13580 }
13581
13582 let cur_offset: usize = (19 - 1) * envelope_size;
13585
13586 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13588
13589 fidl::encoding::encode_in_envelope_optional::<Nat64Info, D>(
13594 self.nat64_info
13595 .as_ref()
13596 .map(<Nat64Info as fidl::encoding::ValueTypeMarker>::borrow),
13597 encoder,
13598 offset + cur_offset,
13599 depth,
13600 )?;
13601
13602 _prev_end_offset = cur_offset + envelope_size;
13603 if 20 > max_ordinal {
13604 return Ok(());
13605 }
13606
13607 let cur_offset: usize = (20 - 1) * envelope_size;
13610
13611 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13613
13614 fidl::encoding::encode_in_envelope_optional::<TrelCounters, D>(
13619 self.trel_counters
13620 .as_ref()
13621 .map(<TrelCounters as fidl::encoding::ValueTypeMarker>::borrow),
13622 encoder,
13623 offset + cur_offset,
13624 depth,
13625 )?;
13626
13627 _prev_end_offset = cur_offset + envelope_size;
13628 if 21 > max_ordinal {
13629 return Ok(());
13630 }
13631
13632 let cur_offset: usize = (21 - 1) * envelope_size;
13635
13636 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13638
13639 fidl::encoding::encode_in_envelope_optional::<TrelPeersInfo, D>(
13644 self.trel_peers_info
13645 .as_ref()
13646 .map(<TrelPeersInfo as fidl::encoding::ValueTypeMarker>::borrow),
13647 encoder,
13648 offset + cur_offset,
13649 depth,
13650 )?;
13651
13652 _prev_end_offset = cur_offset + envelope_size;
13653 if 22 > max_ordinal {
13654 return Ok(());
13655 }
13656
13657 let cur_offset: usize = (22 - 1) * envelope_size;
13660
13661 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13663
13664 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsInfo, D>(
13669 self.upstream_dns_info
13670 .as_ref()
13671 .map(<UpstreamDnsInfo as fidl::encoding::ValueTypeMarker>::borrow),
13672 encoder,
13673 offset + cur_offset,
13674 depth,
13675 )?;
13676
13677 _prev_end_offset = cur_offset + envelope_size;
13678 if 23 > max_ordinal {
13679 return Ok(());
13680 }
13681
13682 let cur_offset: usize = (23 - 1) * envelope_size;
13685
13686 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13688
13689 fidl::encoding::encode_in_envelope_optional::<Dhcp6PdInfo, D>(
13694 self.dhcp6pd_info
13695 .as_ref()
13696 .map(<Dhcp6PdInfo as fidl::encoding::ValueTypeMarker>::borrow),
13697 encoder,
13698 offset + cur_offset,
13699 depth,
13700 )?;
13701
13702 _prev_end_offset = cur_offset + envelope_size;
13703 if 24 > max_ordinal {
13704 return Ok(());
13705 }
13706
13707 let cur_offset: usize = (24 - 1) * envelope_size;
13710
13711 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13713
13714 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<LinkMetricsEntry, 64>, D>(
13719 self.link_metrics_entries.as_ref().map(<fidl::encoding::Vector<LinkMetricsEntry, 64> as fidl::encoding::ValueTypeMarker>::borrow),
13720 encoder, offset + cur_offset, depth
13721 )?;
13722
13723 _prev_end_offset = cur_offset + envelope_size;
13724 if 25 > max_ordinal {
13725 return Ok(());
13726 }
13727
13728 let cur_offset: usize = (25 - 1) * envelope_size;
13731
13732 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13734
13735 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan_device__common::BorderAgentCounters, D>(
13740 self.border_agent_counters.as_ref().map(<fidl_fuchsia_lowpan_device__common::BorderAgentCounters as fidl::encoding::ValueTypeMarker>::borrow),
13741 encoder, offset + cur_offset, depth
13742 )?;
13743
13744 _prev_end_offset = cur_offset + envelope_size;
13745 if 26 > max_ordinal {
13746 return Ok(());
13747 }
13748
13749 let cur_offset: usize = (26 - 1) * envelope_size;
13752
13753 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13755
13756 fidl::encoding::encode_in_envelope_optional::<bool, D>(
13761 self.multi_ail_detected
13762 .as_ref()
13763 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
13764 encoder,
13765 offset + cur_offset,
13766 depth,
13767 )?;
13768
13769 _prev_end_offset = cur_offset + envelope_size;
13770 if 27 > max_ordinal {
13771 return Ok(());
13772 }
13773
13774 let cur_offset: usize = (27 - 1) * envelope_size;
13777
13778 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13780
13781 fidl::encoding::encode_in_envelope_optional::<u64, D>(
13786 self.extended_pan_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
13787 encoder,
13788 offset + cur_offset,
13789 depth,
13790 )?;
13791
13792 _prev_end_offset = cur_offset + envelope_size;
13793
13794 Ok(())
13795 }
13796 }
13797
13798 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Telemetry {
13799 #[inline(always)]
13800 fn new_empty() -> Self {
13801 Self::default()
13802 }
13803
13804 unsafe fn decode(
13805 &mut self,
13806 decoder: &mut fidl::encoding::Decoder<'_, D>,
13807 offset: usize,
13808 mut depth: fidl::encoding::Depth,
13809 ) -> fidl::Result<()> {
13810 decoder.debug_check_bounds::<Self>(offset);
13811 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13812 None => return Err(fidl::Error::NotNullable),
13813 Some(len) => len,
13814 };
13815 if len == 0 {
13817 return Ok(());
13818 };
13819 depth.increment()?;
13820 let envelope_size = 8;
13821 let bytes_len = len * envelope_size;
13822 let offset = decoder.out_of_line_offset(bytes_len)?;
13823 let mut _next_ordinal_to_read = 0;
13825 let mut next_offset = offset;
13826 let end_offset = offset + bytes_len;
13827 _next_ordinal_to_read += 1;
13828 if next_offset >= end_offset {
13829 return Ok(());
13830 }
13831
13832 while _next_ordinal_to_read < 1 {
13834 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13835 _next_ordinal_to_read += 1;
13836 next_offset += envelope_size;
13837 }
13838
13839 let next_out_of_line = decoder.next_out_of_line();
13840 let handles_before = decoder.remaining_handles();
13841 if let Some((inlined, num_bytes, num_handles)) =
13842 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13843 {
13844 let member_inline_size =
13845 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13846 if inlined != (member_inline_size <= 4) {
13847 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13848 }
13849 let inner_offset;
13850 let mut inner_depth = depth.clone();
13851 if inlined {
13852 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13853 inner_offset = next_offset;
13854 } else {
13855 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13856 inner_depth.increment()?;
13857 }
13858 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
13859 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
13860 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13861 {
13862 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13863 }
13864 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13865 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13866 }
13867 }
13868
13869 next_offset += envelope_size;
13870 _next_ordinal_to_read += 1;
13871 if next_offset >= end_offset {
13872 return Ok(());
13873 }
13874
13875 while _next_ordinal_to_read < 2 {
13877 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13878 _next_ordinal_to_read += 1;
13879 next_offset += envelope_size;
13880 }
13881
13882 let next_out_of_line = decoder.next_out_of_line();
13883 let handles_before = decoder.remaining_handles();
13884 if let Some((inlined, num_bytes, num_handles)) =
13885 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13886 {
13887 let member_inline_size =
13888 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13889 if inlined != (member_inline_size <= 4) {
13890 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13891 }
13892 let inner_offset;
13893 let mut inner_depth = depth.clone();
13894 if inlined {
13895 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13896 inner_offset = next_offset;
13897 } else {
13898 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13899 inner_depth.increment()?;
13900 }
13901 let val_ref = self.tx_power.get_or_insert_with(|| fidl::new_empty!(i8, D));
13902 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
13903 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13904 {
13905 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13906 }
13907 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13908 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13909 }
13910 }
13911
13912 next_offset += envelope_size;
13913 _next_ordinal_to_read += 1;
13914 if next_offset >= end_offset {
13915 return Ok(());
13916 }
13917
13918 while _next_ordinal_to_read < 3 {
13920 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13921 _next_ordinal_to_read += 1;
13922 next_offset += envelope_size;
13923 }
13924
13925 let next_out_of_line = decoder.next_out_of_line();
13926 let handles_before = decoder.remaining_handles();
13927 if let Some((inlined, num_bytes, num_handles)) =
13928 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13929 {
13930 let member_inline_size =
13931 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13932 if inlined != (member_inline_size <= 4) {
13933 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13934 }
13935 let inner_offset;
13936 let mut inner_depth = depth.clone();
13937 if inlined {
13938 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13939 inner_offset = next_offset;
13940 } else {
13941 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13942 inner_depth.increment()?;
13943 }
13944 let val_ref = self.channel_index.get_or_insert_with(|| fidl::new_empty!(u16, D));
13945 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
13946 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13947 {
13948 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13949 }
13950 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13951 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13952 }
13953 }
13954
13955 next_offset += envelope_size;
13956 _next_ordinal_to_read += 1;
13957 if next_offset >= end_offset {
13958 return Ok(());
13959 }
13960
13961 while _next_ordinal_to_read < 4 {
13963 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13964 _next_ordinal_to_read += 1;
13965 next_offset += envelope_size;
13966 }
13967
13968 let next_out_of_line = decoder.next_out_of_line();
13969 let handles_before = decoder.remaining_handles();
13970 if let Some((inlined, num_bytes, num_handles)) =
13971 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13972 {
13973 let member_inline_size =
13974 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13975 if inlined != (member_inline_size <= 4) {
13976 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13977 }
13978 let inner_offset;
13979 let mut inner_depth = depth.clone();
13980 if inlined {
13981 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13982 inner_offset = next_offset;
13983 } else {
13984 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13985 inner_depth.increment()?;
13986 }
13987 let val_ref = self.partition_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
13988 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13989 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13990 {
13991 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13992 }
13993 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13994 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13995 }
13996 }
13997
13998 next_offset += envelope_size;
13999 _next_ordinal_to_read += 1;
14000 if next_offset >= end_offset {
14001 return Ok(());
14002 }
14003
14004 while _next_ordinal_to_read < 5 {
14006 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14007 _next_ordinal_to_read += 1;
14008 next_offset += envelope_size;
14009 }
14010
14011 let next_out_of_line = decoder.next_out_of_line();
14012 let handles_before = decoder.remaining_handles();
14013 if let Some((inlined, num_bytes, num_handles)) =
14014 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14015 {
14016 let member_inline_size =
14017 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
14018 decoder.context,
14019 );
14020 if inlined != (member_inline_size <= 4) {
14021 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14022 }
14023 let inner_offset;
14024 let mut inner_depth = depth.clone();
14025 if inlined {
14026 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14027 inner_offset = next_offset;
14028 } else {
14029 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14030 inner_depth.increment()?;
14031 }
14032 let val_ref = self
14033 .stack_version
14034 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
14035 fidl::decode!(
14036 fidl::encoding::BoundedString<256>,
14037 D,
14038 val_ref,
14039 decoder,
14040 inner_offset,
14041 inner_depth
14042 )?;
14043 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14044 {
14045 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14046 }
14047 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14048 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14049 }
14050 }
14051
14052 next_offset += envelope_size;
14053 _next_ordinal_to_read += 1;
14054 if next_offset >= end_offset {
14055 return Ok(());
14056 }
14057
14058 while _next_ordinal_to_read < 6 {
14060 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14061 _next_ordinal_to_read += 1;
14062 next_offset += envelope_size;
14063 }
14064
14065 let next_out_of_line = decoder.next_out_of_line();
14066 let handles_before = decoder.remaining_handles();
14067 if let Some((inlined, num_bytes, num_handles)) =
14068 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14069 {
14070 let member_inline_size =
14071 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
14072 decoder.context,
14073 );
14074 if inlined != (member_inline_size <= 4) {
14075 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14076 }
14077 let inner_offset;
14078 let mut inner_depth = depth.clone();
14079 if inlined {
14080 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14081 inner_offset = next_offset;
14082 } else {
14083 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14084 inner_depth.increment()?;
14085 }
14086 let val_ref = self
14087 .rcp_version
14088 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
14089 fidl::decode!(
14090 fidl::encoding::BoundedString<256>,
14091 D,
14092 val_ref,
14093 decoder,
14094 inner_offset,
14095 inner_depth
14096 )?;
14097 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14098 {
14099 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14100 }
14101 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14102 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14103 }
14104 }
14105
14106 next_offset += envelope_size;
14107 _next_ordinal_to_read += 1;
14108 if next_offset >= end_offset {
14109 return Ok(());
14110 }
14111
14112 while _next_ordinal_to_read < 7 {
14114 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14115 _next_ordinal_to_read += 1;
14116 next_offset += envelope_size;
14117 }
14118
14119 let next_out_of_line = decoder.next_out_of_line();
14120 let handles_before = decoder.remaining_handles();
14121 if let Some((inlined, num_bytes, num_handles)) =
14122 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14123 {
14124 let member_inline_size =
14125 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14126 if inlined != (member_inline_size <= 4) {
14127 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14128 }
14129 let inner_offset;
14130 let mut inner_depth = depth.clone();
14131 if inlined {
14132 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14133 inner_offset = next_offset;
14134 } else {
14135 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14136 inner_depth.increment()?;
14137 }
14138 let val_ref = self.thread_link_mode.get_or_insert_with(|| fidl::new_empty!(u8, D));
14139 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14140 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14141 {
14142 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14143 }
14144 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14145 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14146 }
14147 }
14148
14149 next_offset += envelope_size;
14150 _next_ordinal_to_read += 1;
14151 if next_offset >= end_offset {
14152 return Ok(());
14153 }
14154
14155 while _next_ordinal_to_read < 8 {
14157 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14158 _next_ordinal_to_read += 1;
14159 next_offset += envelope_size;
14160 }
14161
14162 let next_out_of_line = decoder.next_out_of_line();
14163 let handles_before = decoder.remaining_handles();
14164 if let Some((inlined, num_bytes, num_handles)) =
14165 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14166 {
14167 let member_inline_size =
14168 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14169 if inlined != (member_inline_size <= 4) {
14170 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14171 }
14172 let inner_offset;
14173 let mut inner_depth = depth.clone();
14174 if inlined {
14175 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14176 inner_offset = next_offset;
14177 } else {
14178 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14179 inner_depth.increment()?;
14180 }
14181 let val_ref = self.thread_router_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
14182 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14183 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14184 {
14185 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14186 }
14187 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14188 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14189 }
14190 }
14191
14192 next_offset += envelope_size;
14193 _next_ordinal_to_read += 1;
14194 if next_offset >= end_offset {
14195 return Ok(());
14196 }
14197
14198 while _next_ordinal_to_read < 9 {
14200 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14201 _next_ordinal_to_read += 1;
14202 next_offset += envelope_size;
14203 }
14204
14205 let next_out_of_line = decoder.next_out_of_line();
14206 let handles_before = decoder.remaining_handles();
14207 if let Some((inlined, num_bytes, num_handles)) =
14208 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14209 {
14210 let member_inline_size =
14211 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14212 if inlined != (member_inline_size <= 4) {
14213 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14214 }
14215 let inner_offset;
14216 let mut inner_depth = depth.clone();
14217 if inlined {
14218 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14219 inner_offset = next_offset;
14220 } else {
14221 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14222 inner_depth.increment()?;
14223 }
14224 let val_ref = self.thread_rloc.get_or_insert_with(|| fidl::new_empty!(u16, D));
14225 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
14226 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14227 {
14228 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14229 }
14230 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14231 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14232 }
14233 }
14234
14235 next_offset += envelope_size;
14236 _next_ordinal_to_read += 1;
14237 if next_offset >= end_offset {
14238 return Ok(());
14239 }
14240
14241 while _next_ordinal_to_read < 10 {
14243 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14244 _next_ordinal_to_read += 1;
14245 next_offset += envelope_size;
14246 }
14247
14248 let next_out_of_line = decoder.next_out_of_line();
14249 let handles_before = decoder.remaining_handles();
14250 if let Some((inlined, num_bytes, num_handles)) =
14251 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14252 {
14253 let member_inline_size =
14254 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14255 if inlined != (member_inline_size <= 4) {
14256 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14257 }
14258 let inner_offset;
14259 let mut inner_depth = depth.clone();
14260 if inlined {
14261 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14262 inner_offset = next_offset;
14263 } else {
14264 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14265 inner_depth.increment()?;
14266 }
14267 let val_ref =
14268 self.thread_network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
14269 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14270 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14271 {
14272 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14273 }
14274 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14275 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14276 }
14277 }
14278
14279 next_offset += envelope_size;
14280 _next_ordinal_to_read += 1;
14281 if next_offset >= end_offset {
14282 return Ok(());
14283 }
14284
14285 while _next_ordinal_to_read < 11 {
14287 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14288 _next_ordinal_to_read += 1;
14289 next_offset += envelope_size;
14290 }
14291
14292 let next_out_of_line = decoder.next_out_of_line();
14293 let handles_before = decoder.remaining_handles();
14294 if let Some((inlined, num_bytes, num_handles)) =
14295 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14296 {
14297 let member_inline_size =
14298 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14299 if inlined != (member_inline_size <= 4) {
14300 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14301 }
14302 let inner_offset;
14303 let mut inner_depth = depth.clone();
14304 if inlined {
14305 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14306 inner_offset = next_offset;
14307 } else {
14308 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14309 inner_depth.increment()?;
14310 }
14311 let val_ref = self
14312 .thread_stable_network_data_version
14313 .get_or_insert_with(|| fidl::new_empty!(u8, D));
14314 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14315 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14316 {
14317 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14318 }
14319 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14320 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14321 }
14322 }
14323
14324 next_offset += envelope_size;
14325 _next_ordinal_to_read += 1;
14326 if next_offset >= end_offset {
14327 return Ok(());
14328 }
14329
14330 while _next_ordinal_to_read < 12 {
14332 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14333 _next_ordinal_to_read += 1;
14334 next_offset += envelope_size;
14335 }
14336
14337 let next_out_of_line = decoder.next_out_of_line();
14338 let handles_before = decoder.remaining_handles();
14339 if let Some((inlined, num_bytes, num_handles)) =
14340 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14341 {
14342 let member_inline_size =
14343 <fidl::encoding::Vector<u8, 255> as fidl::encoding::TypeMarker>::inline_size(
14344 decoder.context,
14345 );
14346 if inlined != (member_inline_size <= 4) {
14347 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14348 }
14349 let inner_offset;
14350 let mut inner_depth = depth.clone();
14351 if inlined {
14352 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14353 inner_offset = next_offset;
14354 } else {
14355 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14356 inner_depth.increment()?;
14357 }
14358 let val_ref = self
14359 .thread_network_data
14360 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 255>, D));
14361 fidl::decode!(fidl::encoding::Vector<u8, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
14362 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14363 {
14364 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14365 }
14366 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14367 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14368 }
14369 }
14370
14371 next_offset += envelope_size;
14372 _next_ordinal_to_read += 1;
14373 if next_offset >= end_offset {
14374 return Ok(());
14375 }
14376
14377 while _next_ordinal_to_read < 13 {
14379 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14380 _next_ordinal_to_read += 1;
14381 next_offset += envelope_size;
14382 }
14383
14384 let next_out_of_line = decoder.next_out_of_line();
14385 let handles_before = decoder.remaining_handles();
14386 if let Some((inlined, num_bytes, num_handles)) =
14387 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14388 {
14389 let member_inline_size =
14390 <fidl::encoding::Vector<u8, 255> as fidl::encoding::TypeMarker>::inline_size(
14391 decoder.context,
14392 );
14393 if inlined != (member_inline_size <= 4) {
14394 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14395 }
14396 let inner_offset;
14397 let mut inner_depth = depth.clone();
14398 if inlined {
14399 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14400 inner_offset = next_offset;
14401 } else {
14402 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14403 inner_depth.increment()?;
14404 }
14405 let val_ref = self
14406 .thread_stable_network_data
14407 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 255>, D));
14408 fidl::decode!(fidl::encoding::Vector<u8, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
14409 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14410 {
14411 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14412 }
14413 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14414 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14415 }
14416 }
14417
14418 next_offset += envelope_size;
14419 _next_ordinal_to_read += 1;
14420 if next_offset >= end_offset {
14421 return Ok(());
14422 }
14423
14424 while _next_ordinal_to_read < 14 {
14426 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14427 _next_ordinal_to_read += 1;
14428 next_offset += envelope_size;
14429 }
14430
14431 let next_out_of_line = decoder.next_out_of_line();
14432 let handles_before = decoder.remaining_handles();
14433 if let Some((inlined, num_bytes, num_handles)) =
14434 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14435 {
14436 let member_inline_size =
14437 <BorderRoutingCounters as fidl::encoding::TypeMarker>::inline_size(
14438 decoder.context,
14439 );
14440 if inlined != (member_inline_size <= 4) {
14441 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14442 }
14443 let inner_offset;
14444 let mut inner_depth = depth.clone();
14445 if inlined {
14446 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14447 inner_offset = next_offset;
14448 } else {
14449 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14450 inner_depth.increment()?;
14451 }
14452 let val_ref = self
14453 .thread_border_routing_counters
14454 .get_or_insert_with(|| fidl::new_empty!(BorderRoutingCounters, D));
14455 fidl::decode!(
14456 BorderRoutingCounters,
14457 D,
14458 val_ref,
14459 decoder,
14460 inner_offset,
14461 inner_depth
14462 )?;
14463 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14464 {
14465 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14466 }
14467 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14468 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14469 }
14470 }
14471
14472 next_offset += envelope_size;
14473 _next_ordinal_to_read += 1;
14474 if next_offset >= end_offset {
14475 return Ok(());
14476 }
14477
14478 while _next_ordinal_to_read < 15 {
14480 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14481 _next_ordinal_to_read += 1;
14482 next_offset += envelope_size;
14483 }
14484
14485 let next_out_of_line = decoder.next_out_of_line();
14486 let handles_before = decoder.remaining_handles();
14487 if let Some((inlined, num_bytes, num_handles)) =
14488 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14489 {
14490 let member_inline_size =
14491 <SrpServerInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14492 if inlined != (member_inline_size <= 4) {
14493 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14494 }
14495 let inner_offset;
14496 let mut inner_depth = depth.clone();
14497 if inlined {
14498 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14499 inner_offset = next_offset;
14500 } else {
14501 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14502 inner_depth.increment()?;
14503 }
14504 let val_ref =
14505 self.srp_server_info.get_or_insert_with(|| fidl::new_empty!(SrpServerInfo, D));
14506 fidl::decode!(SrpServerInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
14507 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14508 {
14509 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14510 }
14511 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14512 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14513 }
14514 }
14515
14516 next_offset += envelope_size;
14517 _next_ordinal_to_read += 1;
14518 if next_offset >= end_offset {
14519 return Ok(());
14520 }
14521
14522 while _next_ordinal_to_read < 16 {
14524 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14525 _next_ordinal_to_read += 1;
14526 next_offset += envelope_size;
14527 }
14528
14529 let next_out_of_line = decoder.next_out_of_line();
14530 let handles_before = decoder.remaining_handles();
14531 if let Some((inlined, num_bytes, num_handles)) =
14532 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14533 {
14534 let member_inline_size =
14535 <DnssdCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14536 if inlined != (member_inline_size <= 4) {
14537 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14538 }
14539 let inner_offset;
14540 let mut inner_depth = depth.clone();
14541 if inlined {
14542 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14543 inner_offset = next_offset;
14544 } else {
14545 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14546 inner_depth.increment()?;
14547 }
14548 let val_ref =
14549 self.dnssd_counters.get_or_insert_with(|| fidl::new_empty!(DnssdCounters, D));
14550 fidl::decode!(DnssdCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
14551 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14552 {
14553 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14554 }
14555 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14556 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14557 }
14558 }
14559
14560 next_offset += envelope_size;
14561 _next_ordinal_to_read += 1;
14562 if next_offset >= end_offset {
14563 return Ok(());
14564 }
14565
14566 while _next_ordinal_to_read < 17 {
14568 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14569 _next_ordinal_to_read += 1;
14570 next_offset += envelope_size;
14571 }
14572
14573 let next_out_of_line = decoder.next_out_of_line();
14574 let handles_before = decoder.remaining_handles();
14575 if let Some((inlined, num_bytes, num_handles)) =
14576 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14577 {
14578 let member_inline_size =
14579 <LeaderData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14580 if inlined != (member_inline_size <= 4) {
14581 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14582 }
14583 let inner_offset;
14584 let mut inner_depth = depth.clone();
14585 if inlined {
14586 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14587 inner_offset = next_offset;
14588 } else {
14589 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14590 inner_depth.increment()?;
14591 }
14592 let val_ref =
14593 self.leader_data.get_or_insert_with(|| fidl::new_empty!(LeaderData, D));
14594 fidl::decode!(LeaderData, D, val_ref, decoder, inner_offset, inner_depth)?;
14595 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14596 {
14597 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14598 }
14599 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14600 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14601 }
14602 }
14603
14604 next_offset += envelope_size;
14605 _next_ordinal_to_read += 1;
14606 if next_offset >= end_offset {
14607 return Ok(());
14608 }
14609
14610 while _next_ordinal_to_read < 18 {
14612 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14613 _next_ordinal_to_read += 1;
14614 next_offset += envelope_size;
14615 }
14616
14617 let next_out_of_line = decoder.next_out_of_line();
14618 let handles_before = decoder.remaining_handles();
14619 if let Some((inlined, num_bytes, num_handles)) =
14620 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14621 {
14622 let member_inline_size =
14623 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14624 if inlined != (member_inline_size <= 4) {
14625 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14626 }
14627 let inner_offset;
14628 let mut inner_depth = depth.clone();
14629 if inlined {
14630 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14631 inner_offset = next_offset;
14632 } else {
14633 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14634 inner_depth.increment()?;
14635 }
14636 let val_ref = self.uptime.get_or_insert_with(|| fidl::new_empty!(i64, D));
14637 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
14638 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14639 {
14640 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14641 }
14642 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14643 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14644 }
14645 }
14646
14647 next_offset += envelope_size;
14648 _next_ordinal_to_read += 1;
14649 if next_offset >= end_offset {
14650 return Ok(());
14651 }
14652
14653 while _next_ordinal_to_read < 19 {
14655 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14656 _next_ordinal_to_read += 1;
14657 next_offset += envelope_size;
14658 }
14659
14660 let next_out_of_line = decoder.next_out_of_line();
14661 let handles_before = decoder.remaining_handles();
14662 if let Some((inlined, num_bytes, num_handles)) =
14663 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14664 {
14665 let member_inline_size =
14666 <Nat64Info as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14667 if inlined != (member_inline_size <= 4) {
14668 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14669 }
14670 let inner_offset;
14671 let mut inner_depth = depth.clone();
14672 if inlined {
14673 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14674 inner_offset = next_offset;
14675 } else {
14676 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14677 inner_depth.increment()?;
14678 }
14679 let val_ref = self.nat64_info.get_or_insert_with(|| fidl::new_empty!(Nat64Info, D));
14680 fidl::decode!(Nat64Info, D, val_ref, decoder, inner_offset, inner_depth)?;
14681 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14682 {
14683 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14684 }
14685 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14686 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14687 }
14688 }
14689
14690 next_offset += envelope_size;
14691 _next_ordinal_to_read += 1;
14692 if next_offset >= end_offset {
14693 return Ok(());
14694 }
14695
14696 while _next_ordinal_to_read < 20 {
14698 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14699 _next_ordinal_to_read += 1;
14700 next_offset += envelope_size;
14701 }
14702
14703 let next_out_of_line = decoder.next_out_of_line();
14704 let handles_before = decoder.remaining_handles();
14705 if let Some((inlined, num_bytes, num_handles)) =
14706 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14707 {
14708 let member_inline_size =
14709 <TrelCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14710 if inlined != (member_inline_size <= 4) {
14711 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14712 }
14713 let inner_offset;
14714 let mut inner_depth = depth.clone();
14715 if inlined {
14716 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14717 inner_offset = next_offset;
14718 } else {
14719 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14720 inner_depth.increment()?;
14721 }
14722 let val_ref =
14723 self.trel_counters.get_or_insert_with(|| fidl::new_empty!(TrelCounters, D));
14724 fidl::decode!(TrelCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
14725 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14726 {
14727 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14728 }
14729 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14730 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14731 }
14732 }
14733
14734 next_offset += envelope_size;
14735 _next_ordinal_to_read += 1;
14736 if next_offset >= end_offset {
14737 return Ok(());
14738 }
14739
14740 while _next_ordinal_to_read < 21 {
14742 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14743 _next_ordinal_to_read += 1;
14744 next_offset += envelope_size;
14745 }
14746
14747 let next_out_of_line = decoder.next_out_of_line();
14748 let handles_before = decoder.remaining_handles();
14749 if let Some((inlined, num_bytes, num_handles)) =
14750 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14751 {
14752 let member_inline_size =
14753 <TrelPeersInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14754 if inlined != (member_inline_size <= 4) {
14755 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14756 }
14757 let inner_offset;
14758 let mut inner_depth = depth.clone();
14759 if inlined {
14760 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14761 inner_offset = next_offset;
14762 } else {
14763 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14764 inner_depth.increment()?;
14765 }
14766 let val_ref =
14767 self.trel_peers_info.get_or_insert_with(|| fidl::new_empty!(TrelPeersInfo, D));
14768 fidl::decode!(TrelPeersInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
14769 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14770 {
14771 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14772 }
14773 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14774 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14775 }
14776 }
14777
14778 next_offset += envelope_size;
14779 _next_ordinal_to_read += 1;
14780 if next_offset >= end_offset {
14781 return Ok(());
14782 }
14783
14784 while _next_ordinal_to_read < 22 {
14786 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14787 _next_ordinal_to_read += 1;
14788 next_offset += envelope_size;
14789 }
14790
14791 let next_out_of_line = decoder.next_out_of_line();
14792 let handles_before = decoder.remaining_handles();
14793 if let Some((inlined, num_bytes, num_handles)) =
14794 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14795 {
14796 let member_inline_size =
14797 <UpstreamDnsInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14798 if inlined != (member_inline_size <= 4) {
14799 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14800 }
14801 let inner_offset;
14802 let mut inner_depth = depth.clone();
14803 if inlined {
14804 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14805 inner_offset = next_offset;
14806 } else {
14807 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14808 inner_depth.increment()?;
14809 }
14810 let val_ref = self
14811 .upstream_dns_info
14812 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsInfo, D));
14813 fidl::decode!(UpstreamDnsInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
14814 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14815 {
14816 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14817 }
14818 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14819 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14820 }
14821 }
14822
14823 next_offset += envelope_size;
14824 _next_ordinal_to_read += 1;
14825 if next_offset >= end_offset {
14826 return Ok(());
14827 }
14828
14829 while _next_ordinal_to_read < 23 {
14831 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14832 _next_ordinal_to_read += 1;
14833 next_offset += envelope_size;
14834 }
14835
14836 let next_out_of_line = decoder.next_out_of_line();
14837 let handles_before = decoder.remaining_handles();
14838 if let Some((inlined, num_bytes, num_handles)) =
14839 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14840 {
14841 let member_inline_size =
14842 <Dhcp6PdInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14843 if inlined != (member_inline_size <= 4) {
14844 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14845 }
14846 let inner_offset;
14847 let mut inner_depth = depth.clone();
14848 if inlined {
14849 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14850 inner_offset = next_offset;
14851 } else {
14852 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14853 inner_depth.increment()?;
14854 }
14855 let val_ref =
14856 self.dhcp6pd_info.get_or_insert_with(|| fidl::new_empty!(Dhcp6PdInfo, D));
14857 fidl::decode!(Dhcp6PdInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
14858 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14859 {
14860 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14861 }
14862 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14863 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14864 }
14865 }
14866
14867 next_offset += envelope_size;
14868 _next_ordinal_to_read += 1;
14869 if next_offset >= end_offset {
14870 return Ok(());
14871 }
14872
14873 while _next_ordinal_to_read < 24 {
14875 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14876 _next_ordinal_to_read += 1;
14877 next_offset += envelope_size;
14878 }
14879
14880 let next_out_of_line = decoder.next_out_of_line();
14881 let handles_before = decoder.remaining_handles();
14882 if let Some((inlined, num_bytes, num_handles)) =
14883 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14884 {
14885 let member_inline_size = <fidl::encoding::Vector<LinkMetricsEntry, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14886 if inlined != (member_inline_size <= 4) {
14887 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14888 }
14889 let inner_offset;
14890 let mut inner_depth = depth.clone();
14891 if inlined {
14892 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14893 inner_offset = next_offset;
14894 } else {
14895 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14896 inner_depth.increment()?;
14897 }
14898 let val_ref = self.link_metrics_entries.get_or_insert_with(
14899 || fidl::new_empty!(fidl::encoding::Vector<LinkMetricsEntry, 64>, D),
14900 );
14901 fidl::decode!(fidl::encoding::Vector<LinkMetricsEntry, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
14902 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14903 {
14904 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14905 }
14906 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14907 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14908 }
14909 }
14910
14911 next_offset += envelope_size;
14912 _next_ordinal_to_read += 1;
14913 if next_offset >= end_offset {
14914 return Ok(());
14915 }
14916
14917 while _next_ordinal_to_read < 25 {
14919 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14920 _next_ordinal_to_read += 1;
14921 next_offset += envelope_size;
14922 }
14923
14924 let next_out_of_line = decoder.next_out_of_line();
14925 let handles_before = decoder.remaining_handles();
14926 if let Some((inlined, num_bytes, num_handles)) =
14927 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14928 {
14929 let member_inline_size = <fidl_fuchsia_lowpan_device__common::BorderAgentCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14930 if inlined != (member_inline_size <= 4) {
14931 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14932 }
14933 let inner_offset;
14934 let mut inner_depth = depth.clone();
14935 if inlined {
14936 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14937 inner_offset = next_offset;
14938 } else {
14939 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14940 inner_depth.increment()?;
14941 }
14942 let val_ref = self.border_agent_counters.get_or_insert_with(|| {
14943 fidl::new_empty!(fidl_fuchsia_lowpan_device__common::BorderAgentCounters, D)
14944 });
14945 fidl::decode!(
14946 fidl_fuchsia_lowpan_device__common::BorderAgentCounters,
14947 D,
14948 val_ref,
14949 decoder,
14950 inner_offset,
14951 inner_depth
14952 )?;
14953 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14954 {
14955 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14956 }
14957 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14958 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14959 }
14960 }
14961
14962 next_offset += envelope_size;
14963 _next_ordinal_to_read += 1;
14964 if next_offset >= end_offset {
14965 return Ok(());
14966 }
14967
14968 while _next_ordinal_to_read < 26 {
14970 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14971 _next_ordinal_to_read += 1;
14972 next_offset += envelope_size;
14973 }
14974
14975 let next_out_of_line = decoder.next_out_of_line();
14976 let handles_before = decoder.remaining_handles();
14977 if let Some((inlined, num_bytes, num_handles)) =
14978 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14979 {
14980 let member_inline_size =
14981 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14982 if inlined != (member_inline_size <= 4) {
14983 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14984 }
14985 let inner_offset;
14986 let mut inner_depth = depth.clone();
14987 if inlined {
14988 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14989 inner_offset = next_offset;
14990 } else {
14991 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14992 inner_depth.increment()?;
14993 }
14994 let val_ref =
14995 self.multi_ail_detected.get_or_insert_with(|| fidl::new_empty!(bool, D));
14996 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
14997 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14998 {
14999 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15000 }
15001 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15002 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15003 }
15004 }
15005
15006 next_offset += envelope_size;
15007 _next_ordinal_to_read += 1;
15008 if next_offset >= end_offset {
15009 return Ok(());
15010 }
15011
15012 while _next_ordinal_to_read < 27 {
15014 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15015 _next_ordinal_to_read += 1;
15016 next_offset += envelope_size;
15017 }
15018
15019 let next_out_of_line = decoder.next_out_of_line();
15020 let handles_before = decoder.remaining_handles();
15021 if let Some((inlined, num_bytes, num_handles)) =
15022 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15023 {
15024 let member_inline_size =
15025 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15026 if inlined != (member_inline_size <= 4) {
15027 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15028 }
15029 let inner_offset;
15030 let mut inner_depth = depth.clone();
15031 if inlined {
15032 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15033 inner_offset = next_offset;
15034 } else {
15035 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15036 inner_depth.increment()?;
15037 }
15038 let val_ref = self.extended_pan_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
15039 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15040 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15041 {
15042 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15043 }
15044 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15045 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15046 }
15047 }
15048
15049 next_offset += envelope_size;
15050
15051 while next_offset < end_offset {
15053 _next_ordinal_to_read += 1;
15054 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15055 next_offset += envelope_size;
15056 }
15057
15058 Ok(())
15059 }
15060 }
15061
15062 impl TrelCounters {
15063 #[inline(always)]
15064 fn max_ordinal_present(&self) -> u64 {
15065 if let Some(_) = self.tx_packets {
15066 return 5;
15067 }
15068 if let Some(_) = self.tx_failure {
15069 return 4;
15070 }
15071 if let Some(_) = self.tx_bytes {
15072 return 3;
15073 }
15074 if let Some(_) = self.rx_packets {
15075 return 2;
15076 }
15077 if let Some(_) = self.rx_bytes {
15078 return 1;
15079 }
15080 0
15081 }
15082 }
15083
15084 impl fidl::encoding::ValueTypeMarker for TrelCounters {
15085 type Borrowed<'a> = &'a Self;
15086 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15087 value
15088 }
15089 }
15090
15091 unsafe impl fidl::encoding::TypeMarker for TrelCounters {
15092 type Owned = Self;
15093
15094 #[inline(always)]
15095 fn inline_align(_context: fidl::encoding::Context) -> usize {
15096 8
15097 }
15098
15099 #[inline(always)]
15100 fn inline_size(_context: fidl::encoding::Context) -> usize {
15101 16
15102 }
15103 }
15104
15105 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TrelCounters, D>
15106 for &TrelCounters
15107 {
15108 unsafe fn encode(
15109 self,
15110 encoder: &mut fidl::encoding::Encoder<'_, D>,
15111 offset: usize,
15112 mut depth: fidl::encoding::Depth,
15113 ) -> fidl::Result<()> {
15114 encoder.debug_check_bounds::<TrelCounters>(offset);
15115 let max_ordinal: u64 = self.max_ordinal_present();
15117 encoder.write_num(max_ordinal, offset);
15118 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15119 if max_ordinal == 0 {
15121 return Ok(());
15122 }
15123 depth.increment()?;
15124 let envelope_size = 8;
15125 let bytes_len = max_ordinal as usize * envelope_size;
15126 #[allow(unused_variables)]
15127 let offset = encoder.out_of_line_offset(bytes_len);
15128 let mut _prev_end_offset: usize = 0;
15129 if 1 > max_ordinal {
15130 return Ok(());
15131 }
15132
15133 let cur_offset: usize = (1 - 1) * envelope_size;
15136
15137 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15139
15140 fidl::encoding::encode_in_envelope_optional::<u64, D>(
15145 self.rx_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
15146 encoder,
15147 offset + cur_offset,
15148 depth,
15149 )?;
15150
15151 _prev_end_offset = cur_offset + envelope_size;
15152 if 2 > max_ordinal {
15153 return Ok(());
15154 }
15155
15156 let cur_offset: usize = (2 - 1) * envelope_size;
15159
15160 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15162
15163 fidl::encoding::encode_in_envelope_optional::<u64, D>(
15168 self.rx_packets.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
15169 encoder,
15170 offset + cur_offset,
15171 depth,
15172 )?;
15173
15174 _prev_end_offset = cur_offset + envelope_size;
15175 if 3 > max_ordinal {
15176 return Ok(());
15177 }
15178
15179 let cur_offset: usize = (3 - 1) * envelope_size;
15182
15183 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15185
15186 fidl::encoding::encode_in_envelope_optional::<u64, D>(
15191 self.tx_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
15192 encoder,
15193 offset + cur_offset,
15194 depth,
15195 )?;
15196
15197 _prev_end_offset = cur_offset + envelope_size;
15198 if 4 > max_ordinal {
15199 return Ok(());
15200 }
15201
15202 let cur_offset: usize = (4 - 1) * envelope_size;
15205
15206 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15208
15209 fidl::encoding::encode_in_envelope_optional::<u64, D>(
15214 self.tx_failure.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
15215 encoder,
15216 offset + cur_offset,
15217 depth,
15218 )?;
15219
15220 _prev_end_offset = cur_offset + envelope_size;
15221 if 5 > max_ordinal {
15222 return Ok(());
15223 }
15224
15225 let cur_offset: usize = (5 - 1) * envelope_size;
15228
15229 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15231
15232 fidl::encoding::encode_in_envelope_optional::<u64, D>(
15237 self.tx_packets.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
15238 encoder,
15239 offset + cur_offset,
15240 depth,
15241 )?;
15242
15243 _prev_end_offset = cur_offset + envelope_size;
15244
15245 Ok(())
15246 }
15247 }
15248
15249 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TrelCounters {
15250 #[inline(always)]
15251 fn new_empty() -> Self {
15252 Self::default()
15253 }
15254
15255 unsafe fn decode(
15256 &mut self,
15257 decoder: &mut fidl::encoding::Decoder<'_, D>,
15258 offset: usize,
15259 mut depth: fidl::encoding::Depth,
15260 ) -> fidl::Result<()> {
15261 decoder.debug_check_bounds::<Self>(offset);
15262 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15263 None => return Err(fidl::Error::NotNullable),
15264 Some(len) => len,
15265 };
15266 if len == 0 {
15268 return Ok(());
15269 };
15270 depth.increment()?;
15271 let envelope_size = 8;
15272 let bytes_len = len * envelope_size;
15273 let offset = decoder.out_of_line_offset(bytes_len)?;
15274 let mut _next_ordinal_to_read = 0;
15276 let mut next_offset = offset;
15277 let end_offset = offset + bytes_len;
15278 _next_ordinal_to_read += 1;
15279 if next_offset >= end_offset {
15280 return Ok(());
15281 }
15282
15283 while _next_ordinal_to_read < 1 {
15285 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15286 _next_ordinal_to_read += 1;
15287 next_offset += envelope_size;
15288 }
15289
15290 let next_out_of_line = decoder.next_out_of_line();
15291 let handles_before = decoder.remaining_handles();
15292 if let Some((inlined, num_bytes, num_handles)) =
15293 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15294 {
15295 let member_inline_size =
15296 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15297 if inlined != (member_inline_size <= 4) {
15298 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15299 }
15300 let inner_offset;
15301 let mut inner_depth = depth.clone();
15302 if inlined {
15303 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15304 inner_offset = next_offset;
15305 } else {
15306 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15307 inner_depth.increment()?;
15308 }
15309 let val_ref = self.rx_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
15310 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15311 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15312 {
15313 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15314 }
15315 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15316 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15317 }
15318 }
15319
15320 next_offset += envelope_size;
15321 _next_ordinal_to_read += 1;
15322 if next_offset >= end_offset {
15323 return Ok(());
15324 }
15325
15326 while _next_ordinal_to_read < 2 {
15328 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15329 _next_ordinal_to_read += 1;
15330 next_offset += envelope_size;
15331 }
15332
15333 let next_out_of_line = decoder.next_out_of_line();
15334 let handles_before = decoder.remaining_handles();
15335 if let Some((inlined, num_bytes, num_handles)) =
15336 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15337 {
15338 let member_inline_size =
15339 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15340 if inlined != (member_inline_size <= 4) {
15341 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15342 }
15343 let inner_offset;
15344 let mut inner_depth = depth.clone();
15345 if inlined {
15346 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15347 inner_offset = next_offset;
15348 } else {
15349 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15350 inner_depth.increment()?;
15351 }
15352 let val_ref = self.rx_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
15353 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15354 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15355 {
15356 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15357 }
15358 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15359 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15360 }
15361 }
15362
15363 next_offset += envelope_size;
15364 _next_ordinal_to_read += 1;
15365 if next_offset >= end_offset {
15366 return Ok(());
15367 }
15368
15369 while _next_ordinal_to_read < 3 {
15371 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15372 _next_ordinal_to_read += 1;
15373 next_offset += envelope_size;
15374 }
15375
15376 let next_out_of_line = decoder.next_out_of_line();
15377 let handles_before = decoder.remaining_handles();
15378 if let Some((inlined, num_bytes, num_handles)) =
15379 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15380 {
15381 let member_inline_size =
15382 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15383 if inlined != (member_inline_size <= 4) {
15384 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15385 }
15386 let inner_offset;
15387 let mut inner_depth = depth.clone();
15388 if inlined {
15389 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15390 inner_offset = next_offset;
15391 } else {
15392 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15393 inner_depth.increment()?;
15394 }
15395 let val_ref = self.tx_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
15396 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15397 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15398 {
15399 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15400 }
15401 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15402 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15403 }
15404 }
15405
15406 next_offset += envelope_size;
15407 _next_ordinal_to_read += 1;
15408 if next_offset >= end_offset {
15409 return Ok(());
15410 }
15411
15412 while _next_ordinal_to_read < 4 {
15414 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15415 _next_ordinal_to_read += 1;
15416 next_offset += envelope_size;
15417 }
15418
15419 let next_out_of_line = decoder.next_out_of_line();
15420 let handles_before = decoder.remaining_handles();
15421 if let Some((inlined, num_bytes, num_handles)) =
15422 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15423 {
15424 let member_inline_size =
15425 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15426 if inlined != (member_inline_size <= 4) {
15427 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15428 }
15429 let inner_offset;
15430 let mut inner_depth = depth.clone();
15431 if inlined {
15432 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15433 inner_offset = next_offset;
15434 } else {
15435 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15436 inner_depth.increment()?;
15437 }
15438 let val_ref = self.tx_failure.get_or_insert_with(|| fidl::new_empty!(u64, D));
15439 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15440 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15441 {
15442 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15443 }
15444 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15445 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15446 }
15447 }
15448
15449 next_offset += envelope_size;
15450 _next_ordinal_to_read += 1;
15451 if next_offset >= end_offset {
15452 return Ok(());
15453 }
15454
15455 while _next_ordinal_to_read < 5 {
15457 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15458 _next_ordinal_to_read += 1;
15459 next_offset += envelope_size;
15460 }
15461
15462 let next_out_of_line = decoder.next_out_of_line();
15463 let handles_before = decoder.remaining_handles();
15464 if let Some((inlined, num_bytes, num_handles)) =
15465 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15466 {
15467 let member_inline_size =
15468 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15469 if inlined != (member_inline_size <= 4) {
15470 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15471 }
15472 let inner_offset;
15473 let mut inner_depth = depth.clone();
15474 if inlined {
15475 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15476 inner_offset = next_offset;
15477 } else {
15478 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15479 inner_depth.increment()?;
15480 }
15481 let val_ref = self.tx_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
15482 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15483 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15484 {
15485 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15486 }
15487 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15488 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15489 }
15490 }
15491
15492 next_offset += envelope_size;
15493
15494 while next_offset < end_offset {
15496 _next_ordinal_to_read += 1;
15497 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15498 next_offset += envelope_size;
15499 }
15500
15501 Ok(())
15502 }
15503 }
15504
15505 impl TrelPeersInfo {
15506 #[inline(always)]
15507 fn max_ordinal_present(&self) -> u64 {
15508 if let Some(_) = self.num_trel_peers {
15509 return 1;
15510 }
15511 0
15512 }
15513 }
15514
15515 impl fidl::encoding::ValueTypeMarker for TrelPeersInfo {
15516 type Borrowed<'a> = &'a Self;
15517 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15518 value
15519 }
15520 }
15521
15522 unsafe impl fidl::encoding::TypeMarker for TrelPeersInfo {
15523 type Owned = Self;
15524
15525 #[inline(always)]
15526 fn inline_align(_context: fidl::encoding::Context) -> usize {
15527 8
15528 }
15529
15530 #[inline(always)]
15531 fn inline_size(_context: fidl::encoding::Context) -> usize {
15532 16
15533 }
15534 }
15535
15536 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TrelPeersInfo, D>
15537 for &TrelPeersInfo
15538 {
15539 unsafe fn encode(
15540 self,
15541 encoder: &mut fidl::encoding::Encoder<'_, D>,
15542 offset: usize,
15543 mut depth: fidl::encoding::Depth,
15544 ) -> fidl::Result<()> {
15545 encoder.debug_check_bounds::<TrelPeersInfo>(offset);
15546 let max_ordinal: u64 = self.max_ordinal_present();
15548 encoder.write_num(max_ordinal, offset);
15549 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15550 if max_ordinal == 0 {
15552 return Ok(());
15553 }
15554 depth.increment()?;
15555 let envelope_size = 8;
15556 let bytes_len = max_ordinal as usize * envelope_size;
15557 #[allow(unused_variables)]
15558 let offset = encoder.out_of_line_offset(bytes_len);
15559 let mut _prev_end_offset: usize = 0;
15560 if 1 > max_ordinal {
15561 return Ok(());
15562 }
15563
15564 let cur_offset: usize = (1 - 1) * envelope_size;
15567
15568 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15570
15571 fidl::encoding::encode_in_envelope_optional::<u16, D>(
15576 self.num_trel_peers.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
15577 encoder,
15578 offset + cur_offset,
15579 depth,
15580 )?;
15581
15582 _prev_end_offset = cur_offset + envelope_size;
15583
15584 Ok(())
15585 }
15586 }
15587
15588 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TrelPeersInfo {
15589 #[inline(always)]
15590 fn new_empty() -> Self {
15591 Self::default()
15592 }
15593
15594 unsafe fn decode(
15595 &mut self,
15596 decoder: &mut fidl::encoding::Decoder<'_, D>,
15597 offset: usize,
15598 mut depth: fidl::encoding::Depth,
15599 ) -> fidl::Result<()> {
15600 decoder.debug_check_bounds::<Self>(offset);
15601 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15602 None => return Err(fidl::Error::NotNullable),
15603 Some(len) => len,
15604 };
15605 if len == 0 {
15607 return Ok(());
15608 };
15609 depth.increment()?;
15610 let envelope_size = 8;
15611 let bytes_len = len * envelope_size;
15612 let offset = decoder.out_of_line_offset(bytes_len)?;
15613 let mut _next_ordinal_to_read = 0;
15615 let mut next_offset = offset;
15616 let end_offset = offset + bytes_len;
15617 _next_ordinal_to_read += 1;
15618 if next_offset >= end_offset {
15619 return Ok(());
15620 }
15621
15622 while _next_ordinal_to_read < 1 {
15624 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15625 _next_ordinal_to_read += 1;
15626 next_offset += envelope_size;
15627 }
15628
15629 let next_out_of_line = decoder.next_out_of_line();
15630 let handles_before = decoder.remaining_handles();
15631 if let Some((inlined, num_bytes, num_handles)) =
15632 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15633 {
15634 let member_inline_size =
15635 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15636 if inlined != (member_inline_size <= 4) {
15637 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15638 }
15639 let inner_offset;
15640 let mut inner_depth = depth.clone();
15641 if inlined {
15642 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15643 inner_offset = next_offset;
15644 } else {
15645 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15646 inner_depth.increment()?;
15647 }
15648 let val_ref = self.num_trel_peers.get_or_insert_with(|| fidl::new_empty!(u16, D));
15649 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
15650 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15651 {
15652 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15653 }
15654 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15655 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15656 }
15657 }
15658
15659 next_offset += envelope_size;
15660
15661 while next_offset < end_offset {
15663 _next_ordinal_to_read += 1;
15664 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15665 next_offset += envelope_size;
15666 }
15667
15668 Ok(())
15669 }
15670 }
15671
15672 impl UpstreamDnsCounters {
15673 #[inline(always)]
15674 fn max_ordinal_present(&self) -> u64 {
15675 if let Some(_) = self.failures {
15676 return 3;
15677 }
15678 if let Some(_) = self.responses {
15679 return 2;
15680 }
15681 if let Some(_) = self.queries {
15682 return 1;
15683 }
15684 0
15685 }
15686 }
15687
15688 impl fidl::encoding::ValueTypeMarker for UpstreamDnsCounters {
15689 type Borrowed<'a> = &'a Self;
15690 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15691 value
15692 }
15693 }
15694
15695 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsCounters {
15696 type Owned = Self;
15697
15698 #[inline(always)]
15699 fn inline_align(_context: fidl::encoding::Context) -> usize {
15700 8
15701 }
15702
15703 #[inline(always)]
15704 fn inline_size(_context: fidl::encoding::Context) -> usize {
15705 16
15706 }
15707 }
15708
15709 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UpstreamDnsCounters, D>
15710 for &UpstreamDnsCounters
15711 {
15712 unsafe fn encode(
15713 self,
15714 encoder: &mut fidl::encoding::Encoder<'_, D>,
15715 offset: usize,
15716 mut depth: fidl::encoding::Depth,
15717 ) -> fidl::Result<()> {
15718 encoder.debug_check_bounds::<UpstreamDnsCounters>(offset);
15719 let max_ordinal: u64 = self.max_ordinal_present();
15721 encoder.write_num(max_ordinal, offset);
15722 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15723 if max_ordinal == 0 {
15725 return Ok(());
15726 }
15727 depth.increment()?;
15728 let envelope_size = 8;
15729 let bytes_len = max_ordinal as usize * envelope_size;
15730 #[allow(unused_variables)]
15731 let offset = encoder.out_of_line_offset(bytes_len);
15732 let mut _prev_end_offset: usize = 0;
15733 if 1 > max_ordinal {
15734 return Ok(());
15735 }
15736
15737 let cur_offset: usize = (1 - 1) * envelope_size;
15740
15741 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15743
15744 fidl::encoding::encode_in_envelope_optional::<u32, D>(
15749 self.queries.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
15750 encoder,
15751 offset + cur_offset,
15752 depth,
15753 )?;
15754
15755 _prev_end_offset = cur_offset + envelope_size;
15756 if 2 > max_ordinal {
15757 return Ok(());
15758 }
15759
15760 let cur_offset: usize = (2 - 1) * envelope_size;
15763
15764 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15766
15767 fidl::encoding::encode_in_envelope_optional::<u32, D>(
15772 self.responses.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
15773 encoder,
15774 offset + cur_offset,
15775 depth,
15776 )?;
15777
15778 _prev_end_offset = cur_offset + envelope_size;
15779 if 3 > max_ordinal {
15780 return Ok(());
15781 }
15782
15783 let cur_offset: usize = (3 - 1) * envelope_size;
15786
15787 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15789
15790 fidl::encoding::encode_in_envelope_optional::<u32, D>(
15795 self.failures.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
15796 encoder,
15797 offset + cur_offset,
15798 depth,
15799 )?;
15800
15801 _prev_end_offset = cur_offset + envelope_size;
15802
15803 Ok(())
15804 }
15805 }
15806
15807 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsCounters {
15808 #[inline(always)]
15809 fn new_empty() -> Self {
15810 Self::default()
15811 }
15812
15813 unsafe fn decode(
15814 &mut self,
15815 decoder: &mut fidl::encoding::Decoder<'_, D>,
15816 offset: usize,
15817 mut depth: fidl::encoding::Depth,
15818 ) -> fidl::Result<()> {
15819 decoder.debug_check_bounds::<Self>(offset);
15820 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15821 None => return Err(fidl::Error::NotNullable),
15822 Some(len) => len,
15823 };
15824 if len == 0 {
15826 return Ok(());
15827 };
15828 depth.increment()?;
15829 let envelope_size = 8;
15830 let bytes_len = len * envelope_size;
15831 let offset = decoder.out_of_line_offset(bytes_len)?;
15832 let mut _next_ordinal_to_read = 0;
15834 let mut next_offset = offset;
15835 let end_offset = offset + bytes_len;
15836 _next_ordinal_to_read += 1;
15837 if next_offset >= end_offset {
15838 return Ok(());
15839 }
15840
15841 while _next_ordinal_to_read < 1 {
15843 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15844 _next_ordinal_to_read += 1;
15845 next_offset += envelope_size;
15846 }
15847
15848 let next_out_of_line = decoder.next_out_of_line();
15849 let handles_before = decoder.remaining_handles();
15850 if let Some((inlined, num_bytes, num_handles)) =
15851 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15852 {
15853 let member_inline_size =
15854 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15855 if inlined != (member_inline_size <= 4) {
15856 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15857 }
15858 let inner_offset;
15859 let mut inner_depth = depth.clone();
15860 if inlined {
15861 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15862 inner_offset = next_offset;
15863 } else {
15864 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15865 inner_depth.increment()?;
15866 }
15867 let val_ref = self.queries.get_or_insert_with(|| fidl::new_empty!(u32, D));
15868 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
15869 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15870 {
15871 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15872 }
15873 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15874 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15875 }
15876 }
15877
15878 next_offset += envelope_size;
15879 _next_ordinal_to_read += 1;
15880 if next_offset >= end_offset {
15881 return Ok(());
15882 }
15883
15884 while _next_ordinal_to_read < 2 {
15886 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15887 _next_ordinal_to_read += 1;
15888 next_offset += envelope_size;
15889 }
15890
15891 let next_out_of_line = decoder.next_out_of_line();
15892 let handles_before = decoder.remaining_handles();
15893 if let Some((inlined, num_bytes, num_handles)) =
15894 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15895 {
15896 let member_inline_size =
15897 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15898 if inlined != (member_inline_size <= 4) {
15899 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15900 }
15901 let inner_offset;
15902 let mut inner_depth = depth.clone();
15903 if inlined {
15904 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15905 inner_offset = next_offset;
15906 } else {
15907 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15908 inner_depth.increment()?;
15909 }
15910 let val_ref = self.responses.get_or_insert_with(|| fidl::new_empty!(u32, D));
15911 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
15912 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15913 {
15914 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15915 }
15916 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15917 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15918 }
15919 }
15920
15921 next_offset += envelope_size;
15922 _next_ordinal_to_read += 1;
15923 if next_offset >= end_offset {
15924 return Ok(());
15925 }
15926
15927 while _next_ordinal_to_read < 3 {
15929 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15930 _next_ordinal_to_read += 1;
15931 next_offset += envelope_size;
15932 }
15933
15934 let next_out_of_line = decoder.next_out_of_line();
15935 let handles_before = decoder.remaining_handles();
15936 if let Some((inlined, num_bytes, num_handles)) =
15937 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15938 {
15939 let member_inline_size =
15940 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15941 if inlined != (member_inline_size <= 4) {
15942 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15943 }
15944 let inner_offset;
15945 let mut inner_depth = depth.clone();
15946 if inlined {
15947 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15948 inner_offset = next_offset;
15949 } else {
15950 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15951 inner_depth.increment()?;
15952 }
15953 let val_ref = self.failures.get_or_insert_with(|| fidl::new_empty!(u32, D));
15954 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
15955 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15956 {
15957 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15958 }
15959 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15960 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15961 }
15962 }
15963
15964 next_offset += envelope_size;
15965
15966 while next_offset < end_offset {
15968 _next_ordinal_to_read += 1;
15969 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15970 next_offset += envelope_size;
15971 }
15972
15973 Ok(())
15974 }
15975 }
15976
15977 impl UpstreamDnsInfo {
15978 #[inline(always)]
15979 fn max_ordinal_present(&self) -> u64 {
15980 if let Some(_) = self.upstream_dns_query_state {
15981 return 1;
15982 }
15983 0
15984 }
15985 }
15986
15987 impl fidl::encoding::ValueTypeMarker for UpstreamDnsInfo {
15988 type Borrowed<'a> = &'a Self;
15989 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15990 value
15991 }
15992 }
15993
15994 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsInfo {
15995 type Owned = Self;
15996
15997 #[inline(always)]
15998 fn inline_align(_context: fidl::encoding::Context) -> usize {
15999 8
16000 }
16001
16002 #[inline(always)]
16003 fn inline_size(_context: fidl::encoding::Context) -> usize {
16004 16
16005 }
16006 }
16007
16008 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UpstreamDnsInfo, D>
16009 for &UpstreamDnsInfo
16010 {
16011 unsafe fn encode(
16012 self,
16013 encoder: &mut fidl::encoding::Encoder<'_, D>,
16014 offset: usize,
16015 mut depth: fidl::encoding::Depth,
16016 ) -> fidl::Result<()> {
16017 encoder.debug_check_bounds::<UpstreamDnsInfo>(offset);
16018 let max_ordinal: u64 = self.max_ordinal_present();
16020 encoder.write_num(max_ordinal, offset);
16021 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16022 if max_ordinal == 0 {
16024 return Ok(());
16025 }
16026 depth.increment()?;
16027 let envelope_size = 8;
16028 let bytes_len = max_ordinal as usize * envelope_size;
16029 #[allow(unused_variables)]
16030 let offset = encoder.out_of_line_offset(bytes_len);
16031 let mut _prev_end_offset: usize = 0;
16032 if 1 > max_ordinal {
16033 return Ok(());
16034 }
16035
16036 let cur_offset: usize = (1 - 1) * envelope_size;
16039
16040 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16042
16043 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsQueryState, D>(
16048 self.upstream_dns_query_state
16049 .as_ref()
16050 .map(<UpstreamDnsQueryState as fidl::encoding::ValueTypeMarker>::borrow),
16051 encoder,
16052 offset + cur_offset,
16053 depth,
16054 )?;
16055
16056 _prev_end_offset = cur_offset + envelope_size;
16057
16058 Ok(())
16059 }
16060 }
16061
16062 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsInfo {
16063 #[inline(always)]
16064 fn new_empty() -> Self {
16065 Self::default()
16066 }
16067
16068 unsafe fn decode(
16069 &mut self,
16070 decoder: &mut fidl::encoding::Decoder<'_, D>,
16071 offset: usize,
16072 mut depth: fidl::encoding::Depth,
16073 ) -> fidl::Result<()> {
16074 decoder.debug_check_bounds::<Self>(offset);
16075 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16076 None => return Err(fidl::Error::NotNullable),
16077 Some(len) => len,
16078 };
16079 if len == 0 {
16081 return Ok(());
16082 };
16083 depth.increment()?;
16084 let envelope_size = 8;
16085 let bytes_len = len * envelope_size;
16086 let offset = decoder.out_of_line_offset(bytes_len)?;
16087 let mut _next_ordinal_to_read = 0;
16089 let mut next_offset = offset;
16090 let end_offset = offset + bytes_len;
16091 _next_ordinal_to_read += 1;
16092 if next_offset >= end_offset {
16093 return Ok(());
16094 }
16095
16096 while _next_ordinal_to_read < 1 {
16098 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16099 _next_ordinal_to_read += 1;
16100 next_offset += envelope_size;
16101 }
16102
16103 let next_out_of_line = decoder.next_out_of_line();
16104 let handles_before = decoder.remaining_handles();
16105 if let Some((inlined, num_bytes, num_handles)) =
16106 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16107 {
16108 let member_inline_size =
16109 <UpstreamDnsQueryState as fidl::encoding::TypeMarker>::inline_size(
16110 decoder.context,
16111 );
16112 if inlined != (member_inline_size <= 4) {
16113 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16114 }
16115 let inner_offset;
16116 let mut inner_depth = depth.clone();
16117 if inlined {
16118 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16119 inner_offset = next_offset;
16120 } else {
16121 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16122 inner_depth.increment()?;
16123 }
16124 let val_ref = self
16125 .upstream_dns_query_state
16126 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsQueryState, D));
16127 fidl::decode!(
16128 UpstreamDnsQueryState,
16129 D,
16130 val_ref,
16131 decoder,
16132 inner_offset,
16133 inner_depth
16134 )?;
16135 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16136 {
16137 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16138 }
16139 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16140 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16141 }
16142 }
16143
16144 next_offset += envelope_size;
16145
16146 while next_offset < end_offset {
16148 _next_ordinal_to_read += 1;
16149 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16150 next_offset += envelope_size;
16151 }
16152
16153 Ok(())
16154 }
16155 }
16156
16157 impl fidl::encoding::ValueTypeMarker for JoinParams {
16158 type Borrowed<'a> = &'a Self;
16159 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16160 value
16161 }
16162 }
16163
16164 unsafe impl fidl::encoding::TypeMarker for JoinParams {
16165 type Owned = Self;
16166
16167 #[inline(always)]
16168 fn inline_align(_context: fidl::encoding::Context) -> usize {
16169 8
16170 }
16171
16172 #[inline(always)]
16173 fn inline_size(_context: fidl::encoding::Context) -> usize {
16174 16
16175 }
16176 }
16177
16178 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<JoinParams, D>
16179 for &JoinParams
16180 {
16181 #[inline]
16182 unsafe fn encode(
16183 self,
16184 encoder: &mut fidl::encoding::Encoder<'_, D>,
16185 offset: usize,
16186 _depth: fidl::encoding::Depth,
16187 ) -> fidl::Result<()> {
16188 encoder.debug_check_bounds::<JoinParams>(offset);
16189 encoder.write_num::<u64>(self.ordinal(), offset);
16190 match self {
16191 JoinParams::ProvisioningParameter(ref val) => {
16192 fidl::encoding::encode_in_envelope::<fidl_fuchsia_lowpan_device__common::ProvisioningParams, D>(
16193 <fidl_fuchsia_lowpan_device__common::ProvisioningParams as fidl::encoding::ValueTypeMarker>::borrow(val),
16194 encoder, offset + 8, _depth
16195 )
16196 }
16197 JoinParams::JoinerParameter(ref val) => {
16198 fidl::encoding::encode_in_envelope::<JoinerCommissioningParams, D>(
16199 <JoinerCommissioningParams as fidl::encoding::ValueTypeMarker>::borrow(val),
16200 encoder, offset + 8, _depth
16201 )
16202 }
16203 JoinParams::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
16204 }
16205 }
16206 }
16207
16208 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for JoinParams {
16209 #[inline(always)]
16210 fn new_empty() -> Self {
16211 Self::__SourceBreaking { unknown_ordinal: 0 }
16212 }
16213
16214 #[inline]
16215 unsafe fn decode(
16216 &mut self,
16217 decoder: &mut fidl::encoding::Decoder<'_, D>,
16218 offset: usize,
16219 mut depth: fidl::encoding::Depth,
16220 ) -> fidl::Result<()> {
16221 decoder.debug_check_bounds::<Self>(offset);
16222 #[allow(unused_variables)]
16223 let next_out_of_line = decoder.next_out_of_line();
16224 let handles_before = decoder.remaining_handles();
16225 let (ordinal, inlined, num_bytes, num_handles) =
16226 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
16227
16228 let member_inline_size = match ordinal {
16229 1 => <fidl_fuchsia_lowpan_device__common::ProvisioningParams as fidl::encoding::TypeMarker>::inline_size(decoder.context),
16230 2 => <JoinerCommissioningParams as fidl::encoding::TypeMarker>::inline_size(decoder.context),
16231 0 => return Err(fidl::Error::UnknownUnionTag),
16232 _ => num_bytes as usize,
16233 };
16234
16235 if inlined != (member_inline_size <= 4) {
16236 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16237 }
16238 let _inner_offset;
16239 if inlined {
16240 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
16241 _inner_offset = offset + 8;
16242 } else {
16243 depth.increment()?;
16244 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16245 }
16246 match ordinal {
16247 1 => {
16248 #[allow(irrefutable_let_patterns)]
16249 if let JoinParams::ProvisioningParameter(_) = self {
16250 } else {
16252 *self = JoinParams::ProvisioningParameter(fidl::new_empty!(
16254 fidl_fuchsia_lowpan_device__common::ProvisioningParams,
16255 D
16256 ));
16257 }
16258 #[allow(irrefutable_let_patterns)]
16259 if let JoinParams::ProvisioningParameter(ref mut val) = self {
16260 fidl::decode!(
16261 fidl_fuchsia_lowpan_device__common::ProvisioningParams,
16262 D,
16263 val,
16264 decoder,
16265 _inner_offset,
16266 depth
16267 )?;
16268 } else {
16269 unreachable!()
16270 }
16271 }
16272 2 => {
16273 #[allow(irrefutable_let_patterns)]
16274 if let JoinParams::JoinerParameter(_) = self {
16275 } else {
16277 *self = JoinParams::JoinerParameter(fidl::new_empty!(
16279 JoinerCommissioningParams,
16280 D
16281 ));
16282 }
16283 #[allow(irrefutable_let_patterns)]
16284 if let JoinParams::JoinerParameter(ref mut val) = self {
16285 fidl::decode!(
16286 JoinerCommissioningParams,
16287 D,
16288 val,
16289 decoder,
16290 _inner_offset,
16291 depth
16292 )?;
16293 } else {
16294 unreachable!()
16295 }
16296 }
16297 #[allow(deprecated)]
16298 ordinal => {
16299 for _ in 0..num_handles {
16300 decoder.drop_next_handle()?;
16301 }
16302 *self = JoinParams::__SourceBreaking { unknown_ordinal: ordinal };
16303 }
16304 }
16305 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
16306 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16307 }
16308 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16309 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16310 }
16311 Ok(())
16312 }
16313 }
16314
16315 impl fidl::encoding::ValueTypeMarker for ProvisioningProgress {
16316 type Borrowed<'a> = &'a Self;
16317 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16318 value
16319 }
16320 }
16321
16322 unsafe impl fidl::encoding::TypeMarker for ProvisioningProgress {
16323 type Owned = Self;
16324
16325 #[inline(always)]
16326 fn inline_align(_context: fidl::encoding::Context) -> usize {
16327 8
16328 }
16329
16330 #[inline(always)]
16331 fn inline_size(_context: fidl::encoding::Context) -> usize {
16332 16
16333 }
16334 }
16335
16336 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProvisioningProgress, D>
16337 for &ProvisioningProgress
16338 {
16339 #[inline]
16340 unsafe fn encode(
16341 self,
16342 encoder: &mut fidl::encoding::Encoder<'_, D>,
16343 offset: usize,
16344 _depth: fidl::encoding::Depth,
16345 ) -> fidl::Result<()> {
16346 encoder.debug_check_bounds::<ProvisioningProgress>(offset);
16347 encoder.write_num::<u64>(self.ordinal(), offset);
16348 match self {
16349 ProvisioningProgress::Progress(ref val) => {
16350 fidl::encoding::encode_in_envelope::<f32, D>(
16351 <f32 as fidl::encoding::ValueTypeMarker>::borrow(val),
16352 encoder, offset + 8, _depth
16353 )
16354 }
16355 ProvisioningProgress::Identity(ref val) => {
16356 fidl::encoding::encode_in_envelope::<fidl_fuchsia_lowpan_device__common::Identity, D>(
16357 <fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::ValueTypeMarker>::borrow(val),
16358 encoder, offset + 8, _depth
16359 )
16360 }
16361 ProvisioningProgress::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
16362 }
16363 }
16364 }
16365
16366 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProvisioningProgress {
16367 #[inline(always)]
16368 fn new_empty() -> Self {
16369 Self::__SourceBreaking { unknown_ordinal: 0 }
16370 }
16371
16372 #[inline]
16373 unsafe fn decode(
16374 &mut self,
16375 decoder: &mut fidl::encoding::Decoder<'_, D>,
16376 offset: usize,
16377 mut depth: fidl::encoding::Depth,
16378 ) -> fidl::Result<()> {
16379 decoder.debug_check_bounds::<Self>(offset);
16380 #[allow(unused_variables)]
16381 let next_out_of_line = decoder.next_out_of_line();
16382 let handles_before = decoder.remaining_handles();
16383 let (ordinal, inlined, num_bytes, num_handles) =
16384 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
16385
16386 let member_inline_size = match ordinal {
16387 1 => <f32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
16388 2 => <fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::TypeMarker>::inline_size(decoder.context),
16389 0 => return Err(fidl::Error::UnknownUnionTag),
16390 _ => num_bytes as usize,
16391 };
16392
16393 if inlined != (member_inline_size <= 4) {
16394 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16395 }
16396 let _inner_offset;
16397 if inlined {
16398 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
16399 _inner_offset = offset + 8;
16400 } else {
16401 depth.increment()?;
16402 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16403 }
16404 match ordinal {
16405 1 => {
16406 #[allow(irrefutable_let_patterns)]
16407 if let ProvisioningProgress::Progress(_) = self {
16408 } else {
16410 *self = ProvisioningProgress::Progress(fidl::new_empty!(f32, D));
16412 }
16413 #[allow(irrefutable_let_patterns)]
16414 if let ProvisioningProgress::Progress(ref mut val) = self {
16415 fidl::decode!(f32, D, val, decoder, _inner_offset, depth)?;
16416 } else {
16417 unreachable!()
16418 }
16419 }
16420 2 => {
16421 #[allow(irrefutable_let_patterns)]
16422 if let ProvisioningProgress::Identity(_) = self {
16423 } else {
16425 *self = ProvisioningProgress::Identity(fidl::new_empty!(
16427 fidl_fuchsia_lowpan_device__common::Identity,
16428 D
16429 ));
16430 }
16431 #[allow(irrefutable_let_patterns)]
16432 if let ProvisioningProgress::Identity(ref mut val) = self {
16433 fidl::decode!(
16434 fidl_fuchsia_lowpan_device__common::Identity,
16435 D,
16436 val,
16437 decoder,
16438 _inner_offset,
16439 depth
16440 )?;
16441 } else {
16442 unreachable!()
16443 }
16444 }
16445 #[allow(deprecated)]
16446 ordinal => {
16447 for _ in 0..num_handles {
16448 decoder.drop_next_handle()?;
16449 }
16450 *self = ProvisioningProgress::__SourceBreaking { unknown_ordinal: ordinal };
16451 }
16452 }
16453 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
16454 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16455 }
16456 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16457 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16458 }
16459 Ok(())
16460 }
16461 }
16462}