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 #[doc(hidden)]
1215 pub __source_breaking: fidl::marker::SourceBreaking,
1216}
1217
1218impl fidl::Persistable for Telemetry {}
1219
1220#[derive(Clone, Debug, Default, PartialEq)]
1224pub struct TrelCounters {
1225 pub rx_bytes: Option<u64>,
1227 pub rx_packets: Option<u64>,
1229 pub tx_bytes: Option<u64>,
1231 pub tx_failure: Option<u64>,
1233 pub tx_packets: Option<u64>,
1235 #[doc(hidden)]
1236 pub __source_breaking: fidl::marker::SourceBreaking,
1237}
1238
1239impl fidl::Persistable for TrelCounters {}
1240
1241#[derive(Clone, Debug, Default, PartialEq)]
1246pub struct TrelPeersInfo {
1247 pub num_trel_peers: Option<u16>,
1251 #[doc(hidden)]
1252 pub __source_breaking: fidl::marker::SourceBreaking,
1253}
1254
1255impl fidl::Persistable for TrelPeersInfo {}
1256
1257#[derive(Clone, Debug, Default, PartialEq)]
1261pub struct UpstreamDnsCounters {
1262 pub queries: Option<u32>,
1266 pub responses: Option<u32>,
1270 pub failures: Option<u32>,
1274 #[doc(hidden)]
1275 pub __source_breaking: fidl::marker::SourceBreaking,
1276}
1277
1278impl fidl::Persistable for UpstreamDnsCounters {}
1279
1280#[derive(Clone, Debug, Default, PartialEq)]
1285pub struct UpstreamDnsInfo {
1286 pub upstream_dns_query_state: Option<UpstreamDnsQueryState>,
1290 #[doc(hidden)]
1291 pub __source_breaking: fidl::marker::SourceBreaking,
1292}
1293
1294impl fidl::Persistable for UpstreamDnsInfo {}
1295
1296#[derive(Clone, Debug)]
1298pub enum JoinParams {
1299 ProvisioningParameter(fidl_fuchsia_lowpan_device__common::ProvisioningParams),
1301 JoinerParameter(JoinerCommissioningParams),
1307 #[doc(hidden)]
1308 __SourceBreaking { unknown_ordinal: u64 },
1309}
1310
1311#[macro_export]
1313macro_rules! JoinParamsUnknown {
1314 () => {
1315 _
1316 };
1317}
1318
1319impl PartialEq for JoinParams {
1321 fn eq(&self, other: &Self) -> bool {
1322 match (self, other) {
1323 (Self::ProvisioningParameter(x), Self::ProvisioningParameter(y)) => *x == *y,
1324 (Self::JoinerParameter(x), Self::JoinerParameter(y)) => *x == *y,
1325 _ => false,
1326 }
1327 }
1328}
1329
1330impl JoinParams {
1331 #[inline]
1332 pub fn ordinal(&self) -> u64 {
1333 match *self {
1334 Self::ProvisioningParameter(_) => 1,
1335 Self::JoinerParameter(_) => 2,
1336 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1337 }
1338 }
1339
1340 #[inline]
1341 pub fn unknown_variant_for_testing() -> Self {
1342 Self::__SourceBreaking { unknown_ordinal: 0 }
1343 }
1344
1345 #[inline]
1346 pub fn is_unknown(&self) -> bool {
1347 match self {
1348 Self::__SourceBreaking { .. } => true,
1349 _ => false,
1350 }
1351 }
1352}
1353
1354impl fidl::Persistable for JoinParams {}
1355
1356#[derive(Clone, Debug)]
1360pub enum ProvisioningProgress {
1361 Progress(f32),
1363 Identity(fidl_fuchsia_lowpan_device__common::Identity),
1365 #[doc(hidden)]
1366 __SourceBreaking { unknown_ordinal: u64 },
1367}
1368
1369#[macro_export]
1371macro_rules! ProvisioningProgressUnknown {
1372 () => {
1373 _
1374 };
1375}
1376
1377impl PartialEq for ProvisioningProgress {
1379 fn eq(&self, other: &Self) -> bool {
1380 match (self, other) {
1381 (Self::Progress(x), Self::Progress(y)) => *x == *y,
1382 (Self::Identity(x), Self::Identity(y)) => *x == *y,
1383 _ => false,
1384 }
1385 }
1386}
1387
1388impl ProvisioningProgress {
1389 #[inline]
1390 pub fn ordinal(&self) -> u64 {
1391 match *self {
1392 Self::Progress(_) => 1,
1393 Self::Identity(_) => 2,
1394 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1395 }
1396 }
1397
1398 #[inline]
1399 pub fn unknown_variant_for_testing() -> Self {
1400 Self::__SourceBreaking { unknown_ordinal: 0 }
1401 }
1402
1403 #[inline]
1404 pub fn is_unknown(&self) -> bool {
1405 match self {
1406 Self::__SourceBreaking { .. } => true,
1407 _ => false,
1408 }
1409 }
1410}
1411
1412impl fidl::Persistable for ProvisioningProgress {}
1413
1414pub mod beacon_info_stream_ordinals {
1415 pub const NEXT: u64 = 0x367a557363a340b6;
1416}
1417
1418pub mod device_ordinals {
1419 pub const GET_SUPPORTED_CHANNELS: u64 = 0x2d8b969a9bd70f23;
1420}
1421
1422pub mod device_connector_ordinals {
1423 pub const CONNECT: u64 = 0x296896c9304836cd;
1424}
1425
1426pub mod device_extra_ordinals {
1427 pub const FORM_NETWORK: u64 = 0x6a8135f84bfc90e;
1428 pub const JOIN_NETWORK: u64 = 0x3ea583bab79f81c0;
1429 pub const START_NETWORK_SCAN: u64 = 0x6288c73b79188b40;
1430}
1431
1432pub mod device_extra_connector_ordinals {
1433 pub const CONNECT: u64 = 0x3fcb37e4226c81e9;
1434}
1435
1436pub mod device_route_ordinals {
1437 pub const REGISTER_ON_MESH_PREFIX: u64 = 0x2c4135231eb97f61;
1438 pub const UNREGISTER_ON_MESH_PREFIX: u64 = 0x82d5184028b797f;
1439 pub const REGISTER_EXTERNAL_ROUTE: u64 = 0x75f70f0fc34a5a73;
1440 pub const UNREGISTER_EXTERNAL_ROUTE: u64 = 0x3769be353b1d7088;
1441}
1442
1443pub mod device_route_connector_ordinals {
1444 pub const CONNECT: u64 = 0x19cd5fdcb971f4ac;
1445}
1446
1447pub mod device_route_extra_ordinals {
1448 pub const GET_LOCAL_ON_MESH_PREFIXES: u64 = 0xf192c43311c811;
1449 pub const GET_LOCAL_EXTERNAL_ROUTES: u64 = 0x5a688c2e62c766a6;
1450}
1451
1452pub mod device_route_extra_connector_ordinals {
1453 pub const CONNECT: u64 = 0x12f72df7b1348fe2;
1454}
1455
1456pub mod legacy_joining_ordinals {
1457 pub const MAKE_JOINABLE: u64 = 0x1739a6ae36d5c5aa;
1458}
1459
1460pub mod legacy_joining_connector_ordinals {
1461 pub const CONNECT: u64 = 0x3c8dfeb943bb8d06;
1462}
1463
1464pub mod provisioning_monitor_ordinals {
1465 pub const WATCH_PROGRESS: u64 = 0xc35336fc43ac0c;
1466}
1467
1468pub mod telemetry_provider_ordinals {
1469 pub const GET_TELEMETRY: u64 = 0xc34f2fff7dacc41;
1470}
1471
1472pub mod telemetry_provider_connector_ordinals {
1473 pub const CONNECT: u64 = 0x24a5bf1be73e2fad;
1474}
1475
1476mod internal {
1477 use super::*;
1478 unsafe impl fidl::encoding::TypeMarker for Dhcp6PdState {
1479 type Owned = Self;
1480
1481 #[inline(always)]
1482 fn inline_align(_context: fidl::encoding::Context) -> usize {
1483 std::mem::align_of::<u32>()
1484 }
1485
1486 #[inline(always)]
1487 fn inline_size(_context: fidl::encoding::Context) -> usize {
1488 std::mem::size_of::<u32>()
1489 }
1490
1491 #[inline(always)]
1492 fn encode_is_copy() -> bool {
1493 false
1494 }
1495
1496 #[inline(always)]
1497 fn decode_is_copy() -> bool {
1498 false
1499 }
1500 }
1501
1502 impl fidl::encoding::ValueTypeMarker for Dhcp6PdState {
1503 type Borrowed<'a> = Self;
1504 #[inline(always)]
1505 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1506 *value
1507 }
1508 }
1509
1510 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Dhcp6PdState {
1511 #[inline]
1512 unsafe fn encode(
1513 self,
1514 encoder: &mut fidl::encoding::Encoder<'_, D>,
1515 offset: usize,
1516 _depth: fidl::encoding::Depth,
1517 ) -> fidl::Result<()> {
1518 encoder.debug_check_bounds::<Self>(offset);
1519 encoder.write_num(self.into_primitive(), offset);
1520 Ok(())
1521 }
1522 }
1523
1524 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dhcp6PdState {
1525 #[inline(always)]
1526 fn new_empty() -> Self {
1527 Self::unknown()
1528 }
1529
1530 #[inline]
1531 unsafe fn decode(
1532 &mut self,
1533 decoder: &mut fidl::encoding::Decoder<'_, D>,
1534 offset: usize,
1535 _depth: fidl::encoding::Depth,
1536 ) -> fidl::Result<()> {
1537 decoder.debug_check_bounds::<Self>(offset);
1538 let prim = decoder.read_num::<u32>(offset);
1539
1540 *self = Self::from_primitive_allow_unknown(prim);
1541 Ok(())
1542 }
1543 }
1544 unsafe impl fidl::encoding::TypeMarker for Nat64State {
1545 type Owned = Self;
1546
1547 #[inline(always)]
1548 fn inline_align(_context: fidl::encoding::Context) -> usize {
1549 std::mem::align_of::<u32>()
1550 }
1551
1552 #[inline(always)]
1553 fn inline_size(_context: fidl::encoding::Context) -> usize {
1554 std::mem::size_of::<u32>()
1555 }
1556
1557 #[inline(always)]
1558 fn encode_is_copy() -> bool {
1559 false
1560 }
1561
1562 #[inline(always)]
1563 fn decode_is_copy() -> bool {
1564 false
1565 }
1566 }
1567
1568 impl fidl::encoding::ValueTypeMarker for Nat64State {
1569 type Borrowed<'a> = Self;
1570 #[inline(always)]
1571 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1572 *value
1573 }
1574 }
1575
1576 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Nat64State {
1577 #[inline]
1578 unsafe fn encode(
1579 self,
1580 encoder: &mut fidl::encoding::Encoder<'_, D>,
1581 offset: usize,
1582 _depth: fidl::encoding::Depth,
1583 ) -> fidl::Result<()> {
1584 encoder.debug_check_bounds::<Self>(offset);
1585 encoder.write_num(self.into_primitive(), offset);
1586 Ok(())
1587 }
1588 }
1589
1590 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64State {
1591 #[inline(always)]
1592 fn new_empty() -> Self {
1593 Self::unknown()
1594 }
1595
1596 #[inline]
1597 unsafe fn decode(
1598 &mut self,
1599 decoder: &mut fidl::encoding::Decoder<'_, D>,
1600 offset: usize,
1601 _depth: fidl::encoding::Depth,
1602 ) -> fidl::Result<()> {
1603 decoder.debug_check_bounds::<Self>(offset);
1604 let prim = decoder.read_num::<u32>(offset);
1605
1606 *self = Self::from_primitive_allow_unknown(prim);
1607 Ok(())
1608 }
1609 }
1610 unsafe impl fidl::encoding::TypeMarker for ProvisionError {
1611 type Owned = Self;
1612
1613 #[inline(always)]
1614 fn inline_align(_context: fidl::encoding::Context) -> usize {
1615 std::mem::align_of::<i32>()
1616 }
1617
1618 #[inline(always)]
1619 fn inline_size(_context: fidl::encoding::Context) -> usize {
1620 std::mem::size_of::<i32>()
1621 }
1622
1623 #[inline(always)]
1624 fn encode_is_copy() -> bool {
1625 false
1626 }
1627
1628 #[inline(always)]
1629 fn decode_is_copy() -> bool {
1630 false
1631 }
1632 }
1633
1634 impl fidl::encoding::ValueTypeMarker for ProvisionError {
1635 type Borrowed<'a> = Self;
1636 #[inline(always)]
1637 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1638 *value
1639 }
1640 }
1641
1642 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ProvisionError {
1643 #[inline]
1644 unsafe fn encode(
1645 self,
1646 encoder: &mut fidl::encoding::Encoder<'_, D>,
1647 offset: usize,
1648 _depth: fidl::encoding::Depth,
1649 ) -> fidl::Result<()> {
1650 encoder.debug_check_bounds::<Self>(offset);
1651 encoder.write_num(self.into_primitive(), offset);
1652 Ok(())
1653 }
1654 }
1655
1656 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProvisionError {
1657 #[inline(always)]
1658 fn new_empty() -> Self {
1659 Self::unknown()
1660 }
1661
1662 #[inline]
1663 unsafe fn decode(
1664 &mut self,
1665 decoder: &mut fidl::encoding::Decoder<'_, D>,
1666 offset: usize,
1667 _depth: fidl::encoding::Depth,
1668 ) -> fidl::Result<()> {
1669 decoder.debug_check_bounds::<Self>(offset);
1670 let prim = decoder.read_num::<i32>(offset);
1671
1672 *self = Self::from_primitive_allow_unknown(prim);
1673 Ok(())
1674 }
1675 }
1676 unsafe impl fidl::encoding::TypeMarker for RoutePreference {
1677 type Owned = Self;
1678
1679 #[inline(always)]
1680 fn inline_align(_context: fidl::encoding::Context) -> usize {
1681 std::mem::align_of::<i8>()
1682 }
1683
1684 #[inline(always)]
1685 fn inline_size(_context: fidl::encoding::Context) -> usize {
1686 std::mem::size_of::<i8>()
1687 }
1688
1689 #[inline(always)]
1690 fn encode_is_copy() -> bool {
1691 true
1692 }
1693
1694 #[inline(always)]
1695 fn decode_is_copy() -> bool {
1696 false
1697 }
1698 }
1699
1700 impl fidl::encoding::ValueTypeMarker for RoutePreference {
1701 type Borrowed<'a> = Self;
1702 #[inline(always)]
1703 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1704 *value
1705 }
1706 }
1707
1708 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1709 for RoutePreference
1710 {
1711 #[inline]
1712 unsafe fn encode(
1713 self,
1714 encoder: &mut fidl::encoding::Encoder<'_, D>,
1715 offset: usize,
1716 _depth: fidl::encoding::Depth,
1717 ) -> fidl::Result<()> {
1718 encoder.debug_check_bounds::<Self>(offset);
1719 encoder.write_num(self.into_primitive(), offset);
1720 Ok(())
1721 }
1722 }
1723
1724 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoutePreference {
1725 #[inline(always)]
1726 fn new_empty() -> Self {
1727 Self::Low
1728 }
1729
1730 #[inline]
1731 unsafe fn decode(
1732 &mut self,
1733 decoder: &mut fidl::encoding::Decoder<'_, D>,
1734 offset: usize,
1735 _depth: fidl::encoding::Depth,
1736 ) -> fidl::Result<()> {
1737 decoder.debug_check_bounds::<Self>(offset);
1738 let prim = decoder.read_num::<i8>(offset);
1739
1740 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1741 Ok(())
1742 }
1743 }
1744 unsafe impl fidl::encoding::TypeMarker for SrpServerAddressMode {
1745 type Owned = Self;
1746
1747 #[inline(always)]
1748 fn inline_align(_context: fidl::encoding::Context) -> usize {
1749 std::mem::align_of::<u32>()
1750 }
1751
1752 #[inline(always)]
1753 fn inline_size(_context: fidl::encoding::Context) -> usize {
1754 std::mem::size_of::<u32>()
1755 }
1756
1757 #[inline(always)]
1758 fn encode_is_copy() -> bool {
1759 true
1760 }
1761
1762 #[inline(always)]
1763 fn decode_is_copy() -> bool {
1764 false
1765 }
1766 }
1767
1768 impl fidl::encoding::ValueTypeMarker for SrpServerAddressMode {
1769 type Borrowed<'a> = Self;
1770 #[inline(always)]
1771 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1772 *value
1773 }
1774 }
1775
1776 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1777 for SrpServerAddressMode
1778 {
1779 #[inline]
1780 unsafe fn encode(
1781 self,
1782 encoder: &mut fidl::encoding::Encoder<'_, D>,
1783 offset: usize,
1784 _depth: fidl::encoding::Depth,
1785 ) -> fidl::Result<()> {
1786 encoder.debug_check_bounds::<Self>(offset);
1787 encoder.write_num(self.into_primitive(), offset);
1788 Ok(())
1789 }
1790 }
1791
1792 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerAddressMode {
1793 #[inline(always)]
1794 fn new_empty() -> Self {
1795 Self::Unicast
1796 }
1797
1798 #[inline]
1799 unsafe fn decode(
1800 &mut self,
1801 decoder: &mut fidl::encoding::Decoder<'_, D>,
1802 offset: usize,
1803 _depth: fidl::encoding::Depth,
1804 ) -> fidl::Result<()> {
1805 decoder.debug_check_bounds::<Self>(offset);
1806 let prim = decoder.read_num::<u32>(offset);
1807
1808 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1809 Ok(())
1810 }
1811 }
1812 unsafe impl fidl::encoding::TypeMarker for SrpServerState {
1813 type Owned = Self;
1814
1815 #[inline(always)]
1816 fn inline_align(_context: fidl::encoding::Context) -> usize {
1817 std::mem::align_of::<u32>()
1818 }
1819
1820 #[inline(always)]
1821 fn inline_size(_context: fidl::encoding::Context) -> usize {
1822 std::mem::size_of::<u32>()
1823 }
1824
1825 #[inline(always)]
1826 fn encode_is_copy() -> bool {
1827 true
1828 }
1829
1830 #[inline(always)]
1831 fn decode_is_copy() -> bool {
1832 false
1833 }
1834 }
1835
1836 impl fidl::encoding::ValueTypeMarker for SrpServerState {
1837 type Borrowed<'a> = Self;
1838 #[inline(always)]
1839 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1840 *value
1841 }
1842 }
1843
1844 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for SrpServerState {
1845 #[inline]
1846 unsafe fn encode(
1847 self,
1848 encoder: &mut fidl::encoding::Encoder<'_, D>,
1849 offset: usize,
1850 _depth: fidl::encoding::Depth,
1851 ) -> fidl::Result<()> {
1852 encoder.debug_check_bounds::<Self>(offset);
1853 encoder.write_num(self.into_primitive(), offset);
1854 Ok(())
1855 }
1856 }
1857
1858 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerState {
1859 #[inline(always)]
1860 fn new_empty() -> Self {
1861 Self::Disabled
1862 }
1863
1864 #[inline]
1865 unsafe fn decode(
1866 &mut self,
1867 decoder: &mut fidl::encoding::Decoder<'_, D>,
1868 offset: usize,
1869 _depth: fidl::encoding::Depth,
1870 ) -> fidl::Result<()> {
1871 decoder.debug_check_bounds::<Self>(offset);
1872 let prim = decoder.read_num::<u32>(offset);
1873
1874 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1875 Ok(())
1876 }
1877 }
1878 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsQueryState {
1879 type Owned = Self;
1880
1881 #[inline(always)]
1882 fn inline_align(_context: fidl::encoding::Context) -> usize {
1883 std::mem::align_of::<u32>()
1884 }
1885
1886 #[inline(always)]
1887 fn inline_size(_context: fidl::encoding::Context) -> usize {
1888 std::mem::size_of::<u32>()
1889 }
1890
1891 #[inline(always)]
1892 fn encode_is_copy() -> bool {
1893 false
1894 }
1895
1896 #[inline(always)]
1897 fn decode_is_copy() -> bool {
1898 false
1899 }
1900 }
1901
1902 impl fidl::encoding::ValueTypeMarker for UpstreamDnsQueryState {
1903 type Borrowed<'a> = Self;
1904 #[inline(always)]
1905 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1906 *value
1907 }
1908 }
1909
1910 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1911 for UpstreamDnsQueryState
1912 {
1913 #[inline]
1914 unsafe fn encode(
1915 self,
1916 encoder: &mut fidl::encoding::Encoder<'_, D>,
1917 offset: usize,
1918 _depth: fidl::encoding::Depth,
1919 ) -> fidl::Result<()> {
1920 encoder.debug_check_bounds::<Self>(offset);
1921 encoder.write_num(self.into_primitive(), offset);
1922 Ok(())
1923 }
1924 }
1925
1926 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsQueryState {
1927 #[inline(always)]
1928 fn new_empty() -> Self {
1929 Self::unknown()
1930 }
1931
1932 #[inline]
1933 unsafe fn decode(
1934 &mut self,
1935 decoder: &mut fidl::encoding::Decoder<'_, D>,
1936 offset: usize,
1937 _depth: fidl::encoding::Depth,
1938 ) -> fidl::Result<()> {
1939 decoder.debug_check_bounds::<Self>(offset);
1940 let prim = decoder.read_num::<u32>(offset);
1941
1942 *self = Self::from_primitive_allow_unknown(prim);
1943 Ok(())
1944 }
1945 }
1946
1947 impl fidl::encoding::ValueTypeMarker for BeaconInfoStreamNextResponse {
1948 type Borrowed<'a> = &'a Self;
1949 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1950 value
1951 }
1952 }
1953
1954 unsafe impl fidl::encoding::TypeMarker for BeaconInfoStreamNextResponse {
1955 type Owned = Self;
1956
1957 #[inline(always)]
1958 fn inline_align(_context: fidl::encoding::Context) -> usize {
1959 8
1960 }
1961
1962 #[inline(always)]
1963 fn inline_size(_context: fidl::encoding::Context) -> usize {
1964 16
1965 }
1966 }
1967
1968 unsafe impl<D: fidl::encoding::ResourceDialect>
1969 fidl::encoding::Encode<BeaconInfoStreamNextResponse, D> for &BeaconInfoStreamNextResponse
1970 {
1971 #[inline]
1972 unsafe fn encode(
1973 self,
1974 encoder: &mut fidl::encoding::Encoder<'_, D>,
1975 offset: usize,
1976 _depth: fidl::encoding::Depth,
1977 ) -> fidl::Result<()> {
1978 encoder.debug_check_bounds::<BeaconInfoStreamNextResponse>(offset);
1979 fidl::encoding::Encode::<BeaconInfoStreamNextResponse, D>::encode(
1981 (
1982 <fidl::encoding::Vector<BeaconInfo, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.beacons),
1983 ),
1984 encoder, offset, _depth
1985 )
1986 }
1987 }
1988 unsafe impl<
1989 D: fidl::encoding::ResourceDialect,
1990 T0: fidl::encoding::Encode<fidl::encoding::Vector<BeaconInfo, 32>, D>,
1991 > fidl::encoding::Encode<BeaconInfoStreamNextResponse, D> for (T0,)
1992 {
1993 #[inline]
1994 unsafe fn encode(
1995 self,
1996 encoder: &mut fidl::encoding::Encoder<'_, D>,
1997 offset: usize,
1998 depth: fidl::encoding::Depth,
1999 ) -> fidl::Result<()> {
2000 encoder.debug_check_bounds::<BeaconInfoStreamNextResponse>(offset);
2001 self.0.encode(encoder, offset + 0, depth)?;
2005 Ok(())
2006 }
2007 }
2008
2009 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2010 for BeaconInfoStreamNextResponse
2011 {
2012 #[inline(always)]
2013 fn new_empty() -> Self {
2014 Self { beacons: fidl::new_empty!(fidl::encoding::Vector<BeaconInfo, 32>, D) }
2015 }
2016
2017 #[inline]
2018 unsafe fn decode(
2019 &mut self,
2020 decoder: &mut fidl::encoding::Decoder<'_, D>,
2021 offset: usize,
2022 _depth: fidl::encoding::Depth,
2023 ) -> fidl::Result<()> {
2024 decoder.debug_check_bounds::<Self>(offset);
2025 fidl::decode!(fidl::encoding::Vector<BeaconInfo, 32>, D, &mut self.beacons, decoder, offset + 0, _depth)?;
2027 Ok(())
2028 }
2029 }
2030
2031 impl fidl::encoding::ValueTypeMarker for DeviceGetSupportedChannelsResponse {
2032 type Borrowed<'a> = &'a Self;
2033 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2034 value
2035 }
2036 }
2037
2038 unsafe impl fidl::encoding::TypeMarker for DeviceGetSupportedChannelsResponse {
2039 type Owned = Self;
2040
2041 #[inline(always)]
2042 fn inline_align(_context: fidl::encoding::Context) -> usize {
2043 8
2044 }
2045
2046 #[inline(always)]
2047 fn inline_size(_context: fidl::encoding::Context) -> usize {
2048 16
2049 }
2050 }
2051
2052 unsafe impl<D: fidl::encoding::ResourceDialect>
2053 fidl::encoding::Encode<DeviceGetSupportedChannelsResponse, D>
2054 for &DeviceGetSupportedChannelsResponse
2055 {
2056 #[inline]
2057 unsafe fn encode(
2058 self,
2059 encoder: &mut fidl::encoding::Encoder<'_, D>,
2060 offset: usize,
2061 _depth: fidl::encoding::Depth,
2062 ) -> fidl::Result<()> {
2063 encoder.debug_check_bounds::<DeviceGetSupportedChannelsResponse>(offset);
2064 fidl::encoding::Encode::<DeviceGetSupportedChannelsResponse, D>::encode(
2066 (
2067 <fidl::encoding::Vector<ChannelInfo, 200> as fidl::encoding::ValueTypeMarker>::borrow(&self.channels_info),
2068 ),
2069 encoder, offset, _depth
2070 )
2071 }
2072 }
2073 unsafe impl<
2074 D: fidl::encoding::ResourceDialect,
2075 T0: fidl::encoding::Encode<fidl::encoding::Vector<ChannelInfo, 200>, D>,
2076 > fidl::encoding::Encode<DeviceGetSupportedChannelsResponse, D> for (T0,)
2077 {
2078 #[inline]
2079 unsafe fn encode(
2080 self,
2081 encoder: &mut fidl::encoding::Encoder<'_, D>,
2082 offset: usize,
2083 depth: fidl::encoding::Depth,
2084 ) -> fidl::Result<()> {
2085 encoder.debug_check_bounds::<DeviceGetSupportedChannelsResponse>(offset);
2086 self.0.encode(encoder, offset + 0, depth)?;
2090 Ok(())
2091 }
2092 }
2093
2094 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2095 for DeviceGetSupportedChannelsResponse
2096 {
2097 #[inline(always)]
2098 fn new_empty() -> Self {
2099 Self { channels_info: fidl::new_empty!(fidl::encoding::Vector<ChannelInfo, 200>, D) }
2100 }
2101
2102 #[inline]
2103 unsafe fn decode(
2104 &mut self,
2105 decoder: &mut fidl::encoding::Decoder<'_, D>,
2106 offset: usize,
2107 _depth: fidl::encoding::Depth,
2108 ) -> fidl::Result<()> {
2109 decoder.debug_check_bounds::<Self>(offset);
2110 fidl::decode!(fidl::encoding::Vector<ChannelInfo, 200>, D, &mut self.channels_info, decoder, offset + 0, _depth)?;
2112 Ok(())
2113 }
2114 }
2115
2116 impl fidl::encoding::ValueTypeMarker for DeviceRouteExtraGetLocalExternalRoutesResponse {
2117 type Borrowed<'a> = &'a Self;
2118 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2119 value
2120 }
2121 }
2122
2123 unsafe impl fidl::encoding::TypeMarker for DeviceRouteExtraGetLocalExternalRoutesResponse {
2124 type Owned = Self;
2125
2126 #[inline(always)]
2127 fn inline_align(_context: fidl::encoding::Context) -> usize {
2128 8
2129 }
2130
2131 #[inline(always)]
2132 fn inline_size(_context: fidl::encoding::Context) -> usize {
2133 16
2134 }
2135 }
2136
2137 unsafe impl<D: fidl::encoding::ResourceDialect>
2138 fidl::encoding::Encode<DeviceRouteExtraGetLocalExternalRoutesResponse, D>
2139 for &DeviceRouteExtraGetLocalExternalRoutesResponse
2140 {
2141 #[inline]
2142 unsafe fn encode(
2143 self,
2144 encoder: &mut fidl::encoding::Encoder<'_, D>,
2145 offset: usize,
2146 _depth: fidl::encoding::Depth,
2147 ) -> fidl::Result<()> {
2148 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalExternalRoutesResponse>(offset);
2149 fidl::encoding::Encode::<DeviceRouteExtraGetLocalExternalRoutesResponse, D>::encode(
2151 (
2152 <fidl::encoding::Vector<ExternalRoute, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.external_routes),
2153 ),
2154 encoder, offset, _depth
2155 )
2156 }
2157 }
2158 unsafe impl<
2159 D: fidl::encoding::ResourceDialect,
2160 T0: fidl::encoding::Encode<fidl::encoding::Vector<ExternalRoute, 32>, D>,
2161 > fidl::encoding::Encode<DeviceRouteExtraGetLocalExternalRoutesResponse, D> for (T0,)
2162 {
2163 #[inline]
2164 unsafe fn encode(
2165 self,
2166 encoder: &mut fidl::encoding::Encoder<'_, D>,
2167 offset: usize,
2168 depth: fidl::encoding::Depth,
2169 ) -> fidl::Result<()> {
2170 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalExternalRoutesResponse>(offset);
2171 self.0.encode(encoder, offset + 0, depth)?;
2175 Ok(())
2176 }
2177 }
2178
2179 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2180 for DeviceRouteExtraGetLocalExternalRoutesResponse
2181 {
2182 #[inline(always)]
2183 fn new_empty() -> Self {
2184 Self { external_routes: fidl::new_empty!(fidl::encoding::Vector<ExternalRoute, 32>, D) }
2185 }
2186
2187 #[inline]
2188 unsafe fn decode(
2189 &mut self,
2190 decoder: &mut fidl::encoding::Decoder<'_, D>,
2191 offset: usize,
2192 _depth: fidl::encoding::Depth,
2193 ) -> fidl::Result<()> {
2194 decoder.debug_check_bounds::<Self>(offset);
2195 fidl::decode!(fidl::encoding::Vector<ExternalRoute, 32>, D, &mut self.external_routes, decoder, offset + 0, _depth)?;
2197 Ok(())
2198 }
2199 }
2200
2201 impl fidl::encoding::ValueTypeMarker for DeviceRouteExtraGetLocalOnMeshPrefixesResponse {
2202 type Borrowed<'a> = &'a Self;
2203 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2204 value
2205 }
2206 }
2207
2208 unsafe impl fidl::encoding::TypeMarker for DeviceRouteExtraGetLocalOnMeshPrefixesResponse {
2209 type Owned = Self;
2210
2211 #[inline(always)]
2212 fn inline_align(_context: fidl::encoding::Context) -> usize {
2213 8
2214 }
2215
2216 #[inline(always)]
2217 fn inline_size(_context: fidl::encoding::Context) -> usize {
2218 16
2219 }
2220 }
2221
2222 unsafe impl<D: fidl::encoding::ResourceDialect>
2223 fidl::encoding::Encode<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D>
2224 for &DeviceRouteExtraGetLocalOnMeshPrefixesResponse
2225 {
2226 #[inline]
2227 unsafe fn encode(
2228 self,
2229 encoder: &mut fidl::encoding::Encoder<'_, D>,
2230 offset: usize,
2231 _depth: fidl::encoding::Depth,
2232 ) -> fidl::Result<()> {
2233 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse>(offset);
2234 fidl::encoding::Encode::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D>::encode(
2236 (
2237 <fidl::encoding::Vector<OnMeshPrefix, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.prefixes),
2238 ),
2239 encoder, offset, _depth
2240 )
2241 }
2242 }
2243 unsafe impl<
2244 D: fidl::encoding::ResourceDialect,
2245 T0: fidl::encoding::Encode<fidl::encoding::Vector<OnMeshPrefix, 32>, D>,
2246 > fidl::encoding::Encode<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D> for (T0,)
2247 {
2248 #[inline]
2249 unsafe fn encode(
2250 self,
2251 encoder: &mut fidl::encoding::Encoder<'_, D>,
2252 offset: usize,
2253 depth: fidl::encoding::Depth,
2254 ) -> fidl::Result<()> {
2255 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse>(offset);
2256 self.0.encode(encoder, offset + 0, depth)?;
2260 Ok(())
2261 }
2262 }
2263
2264 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2265 for DeviceRouteExtraGetLocalOnMeshPrefixesResponse
2266 {
2267 #[inline(always)]
2268 fn new_empty() -> Self {
2269 Self { prefixes: fidl::new_empty!(fidl::encoding::Vector<OnMeshPrefix, 32>, D) }
2270 }
2271
2272 #[inline]
2273 unsafe fn decode(
2274 &mut self,
2275 decoder: &mut fidl::encoding::Decoder<'_, D>,
2276 offset: usize,
2277 _depth: fidl::encoding::Depth,
2278 ) -> fidl::Result<()> {
2279 decoder.debug_check_bounds::<Self>(offset);
2280 fidl::decode!(fidl::encoding::Vector<OnMeshPrefix, 32>, D, &mut self.prefixes, decoder, offset + 0, _depth)?;
2282 Ok(())
2283 }
2284 }
2285
2286 impl fidl::encoding::ValueTypeMarker for DeviceRouteRegisterExternalRouteRequest {
2287 type Borrowed<'a> = &'a Self;
2288 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2289 value
2290 }
2291 }
2292
2293 unsafe impl fidl::encoding::TypeMarker for DeviceRouteRegisterExternalRouteRequest {
2294 type Owned = Self;
2295
2296 #[inline(always)]
2297 fn inline_align(_context: fidl::encoding::Context) -> usize {
2298 8
2299 }
2300
2301 #[inline(always)]
2302 fn inline_size(_context: fidl::encoding::Context) -> usize {
2303 16
2304 }
2305 }
2306
2307 unsafe impl<D: fidl::encoding::ResourceDialect>
2308 fidl::encoding::Encode<DeviceRouteRegisterExternalRouteRequest, D>
2309 for &DeviceRouteRegisterExternalRouteRequest
2310 {
2311 #[inline]
2312 unsafe fn encode(
2313 self,
2314 encoder: &mut fidl::encoding::Encoder<'_, D>,
2315 offset: usize,
2316 _depth: fidl::encoding::Depth,
2317 ) -> fidl::Result<()> {
2318 encoder.debug_check_bounds::<DeviceRouteRegisterExternalRouteRequest>(offset);
2319 fidl::encoding::Encode::<DeviceRouteRegisterExternalRouteRequest, D>::encode(
2321 (<ExternalRoute as fidl::encoding::ValueTypeMarker>::borrow(&self.external_route),),
2322 encoder,
2323 offset,
2324 _depth,
2325 )
2326 }
2327 }
2328 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ExternalRoute, D>>
2329 fidl::encoding::Encode<DeviceRouteRegisterExternalRouteRequest, D> for (T0,)
2330 {
2331 #[inline]
2332 unsafe fn encode(
2333 self,
2334 encoder: &mut fidl::encoding::Encoder<'_, D>,
2335 offset: usize,
2336 depth: fidl::encoding::Depth,
2337 ) -> fidl::Result<()> {
2338 encoder.debug_check_bounds::<DeviceRouteRegisterExternalRouteRequest>(offset);
2339 self.0.encode(encoder, offset + 0, depth)?;
2343 Ok(())
2344 }
2345 }
2346
2347 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2348 for DeviceRouteRegisterExternalRouteRequest
2349 {
2350 #[inline(always)]
2351 fn new_empty() -> Self {
2352 Self { external_route: fidl::new_empty!(ExternalRoute, D) }
2353 }
2354
2355 #[inline]
2356 unsafe fn decode(
2357 &mut self,
2358 decoder: &mut fidl::encoding::Decoder<'_, D>,
2359 offset: usize,
2360 _depth: fidl::encoding::Depth,
2361 ) -> fidl::Result<()> {
2362 decoder.debug_check_bounds::<Self>(offset);
2363 fidl::decode!(ExternalRoute, D, &mut self.external_route, decoder, offset + 0, _depth)?;
2365 Ok(())
2366 }
2367 }
2368
2369 impl fidl::encoding::ValueTypeMarker for DeviceRouteRegisterOnMeshPrefixRequest {
2370 type Borrowed<'a> = &'a Self;
2371 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2372 value
2373 }
2374 }
2375
2376 unsafe impl fidl::encoding::TypeMarker for DeviceRouteRegisterOnMeshPrefixRequest {
2377 type Owned = Self;
2378
2379 #[inline(always)]
2380 fn inline_align(_context: fidl::encoding::Context) -> usize {
2381 8
2382 }
2383
2384 #[inline(always)]
2385 fn inline_size(_context: fidl::encoding::Context) -> usize {
2386 16
2387 }
2388 }
2389
2390 unsafe impl<D: fidl::encoding::ResourceDialect>
2391 fidl::encoding::Encode<DeviceRouteRegisterOnMeshPrefixRequest, D>
2392 for &DeviceRouteRegisterOnMeshPrefixRequest
2393 {
2394 #[inline]
2395 unsafe fn encode(
2396 self,
2397 encoder: &mut fidl::encoding::Encoder<'_, D>,
2398 offset: usize,
2399 _depth: fidl::encoding::Depth,
2400 ) -> fidl::Result<()> {
2401 encoder.debug_check_bounds::<DeviceRouteRegisterOnMeshPrefixRequest>(offset);
2402 fidl::encoding::Encode::<DeviceRouteRegisterOnMeshPrefixRequest, D>::encode(
2404 (<OnMeshPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.prefix),),
2405 encoder,
2406 offset,
2407 _depth,
2408 )
2409 }
2410 }
2411 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<OnMeshPrefix, D>>
2412 fidl::encoding::Encode<DeviceRouteRegisterOnMeshPrefixRequest, D> for (T0,)
2413 {
2414 #[inline]
2415 unsafe fn encode(
2416 self,
2417 encoder: &mut fidl::encoding::Encoder<'_, D>,
2418 offset: usize,
2419 depth: fidl::encoding::Depth,
2420 ) -> fidl::Result<()> {
2421 encoder.debug_check_bounds::<DeviceRouteRegisterOnMeshPrefixRequest>(offset);
2422 self.0.encode(encoder, offset + 0, depth)?;
2426 Ok(())
2427 }
2428 }
2429
2430 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2431 for DeviceRouteRegisterOnMeshPrefixRequest
2432 {
2433 #[inline(always)]
2434 fn new_empty() -> Self {
2435 Self { prefix: fidl::new_empty!(OnMeshPrefix, D) }
2436 }
2437
2438 #[inline]
2439 unsafe fn decode(
2440 &mut self,
2441 decoder: &mut fidl::encoding::Decoder<'_, D>,
2442 offset: usize,
2443 _depth: fidl::encoding::Depth,
2444 ) -> fidl::Result<()> {
2445 decoder.debug_check_bounds::<Self>(offset);
2446 fidl::decode!(OnMeshPrefix, D, &mut self.prefix, decoder, offset + 0, _depth)?;
2448 Ok(())
2449 }
2450 }
2451
2452 impl fidl::encoding::ValueTypeMarker for DeviceRouteUnregisterExternalRouteRequest {
2453 type Borrowed<'a> = &'a Self;
2454 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2455 value
2456 }
2457 }
2458
2459 unsafe impl fidl::encoding::TypeMarker for DeviceRouteUnregisterExternalRouteRequest {
2460 type Owned = Self;
2461
2462 #[inline(always)]
2463 fn inline_align(_context: fidl::encoding::Context) -> usize {
2464 1
2465 }
2466
2467 #[inline(always)]
2468 fn inline_size(_context: fidl::encoding::Context) -> usize {
2469 17
2470 }
2471 }
2472
2473 unsafe impl<D: fidl::encoding::ResourceDialect>
2474 fidl::encoding::Encode<DeviceRouteUnregisterExternalRouteRequest, D>
2475 for &DeviceRouteUnregisterExternalRouteRequest
2476 {
2477 #[inline]
2478 unsafe fn encode(
2479 self,
2480 encoder: &mut fidl::encoding::Encoder<'_, D>,
2481 offset: usize,
2482 _depth: fidl::encoding::Depth,
2483 ) -> fidl::Result<()> {
2484 encoder.debug_check_bounds::<DeviceRouteUnregisterExternalRouteRequest>(offset);
2485 fidl::encoding::Encode::<DeviceRouteUnregisterExternalRouteRequest, D>::encode(
2487 (
2488 <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.subnet),
2489 ),
2490 encoder, offset, _depth
2491 )
2492 }
2493 }
2494 unsafe impl<
2495 D: fidl::encoding::ResourceDialect,
2496 T0: fidl::encoding::Encode<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>,
2497 > fidl::encoding::Encode<DeviceRouteUnregisterExternalRouteRequest, D> for (T0,)
2498 {
2499 #[inline]
2500 unsafe fn encode(
2501 self,
2502 encoder: &mut fidl::encoding::Encoder<'_, D>,
2503 offset: usize,
2504 depth: fidl::encoding::Depth,
2505 ) -> fidl::Result<()> {
2506 encoder.debug_check_bounds::<DeviceRouteUnregisterExternalRouteRequest>(offset);
2507 self.0.encode(encoder, offset + 0, depth)?;
2511 Ok(())
2512 }
2513 }
2514
2515 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2516 for DeviceRouteUnregisterExternalRouteRequest
2517 {
2518 #[inline(always)]
2519 fn new_empty() -> Self {
2520 Self { subnet: fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D) }
2521 }
2522
2523 #[inline]
2524 unsafe fn decode(
2525 &mut self,
2526 decoder: &mut fidl::encoding::Decoder<'_, D>,
2527 offset: usize,
2528 _depth: fidl::encoding::Depth,
2529 ) -> fidl::Result<()> {
2530 decoder.debug_check_bounds::<Self>(offset);
2531 fidl::decode!(
2533 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
2534 D,
2535 &mut self.subnet,
2536 decoder,
2537 offset + 0,
2538 _depth
2539 )?;
2540 Ok(())
2541 }
2542 }
2543
2544 impl fidl::encoding::ValueTypeMarker for DeviceRouteUnregisterOnMeshPrefixRequest {
2545 type Borrowed<'a> = &'a Self;
2546 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2547 value
2548 }
2549 }
2550
2551 unsafe impl fidl::encoding::TypeMarker for DeviceRouteUnregisterOnMeshPrefixRequest {
2552 type Owned = Self;
2553
2554 #[inline(always)]
2555 fn inline_align(_context: fidl::encoding::Context) -> usize {
2556 1
2557 }
2558
2559 #[inline(always)]
2560 fn inline_size(_context: fidl::encoding::Context) -> usize {
2561 17
2562 }
2563 }
2564
2565 unsafe impl<D: fidl::encoding::ResourceDialect>
2566 fidl::encoding::Encode<DeviceRouteUnregisterOnMeshPrefixRequest, D>
2567 for &DeviceRouteUnregisterOnMeshPrefixRequest
2568 {
2569 #[inline]
2570 unsafe fn encode(
2571 self,
2572 encoder: &mut fidl::encoding::Encoder<'_, D>,
2573 offset: usize,
2574 _depth: fidl::encoding::Depth,
2575 ) -> fidl::Result<()> {
2576 encoder.debug_check_bounds::<DeviceRouteUnregisterOnMeshPrefixRequest>(offset);
2577 fidl::encoding::Encode::<DeviceRouteUnregisterOnMeshPrefixRequest, D>::encode(
2579 (
2580 <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.subnet),
2581 ),
2582 encoder, offset, _depth
2583 )
2584 }
2585 }
2586 unsafe impl<
2587 D: fidl::encoding::ResourceDialect,
2588 T0: fidl::encoding::Encode<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>,
2589 > fidl::encoding::Encode<DeviceRouteUnregisterOnMeshPrefixRequest, D> for (T0,)
2590 {
2591 #[inline]
2592 unsafe fn encode(
2593 self,
2594 encoder: &mut fidl::encoding::Encoder<'_, D>,
2595 offset: usize,
2596 depth: fidl::encoding::Depth,
2597 ) -> fidl::Result<()> {
2598 encoder.debug_check_bounds::<DeviceRouteUnregisterOnMeshPrefixRequest>(offset);
2599 self.0.encode(encoder, offset + 0, depth)?;
2603 Ok(())
2604 }
2605 }
2606
2607 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2608 for DeviceRouteUnregisterOnMeshPrefixRequest
2609 {
2610 #[inline(always)]
2611 fn new_empty() -> Self {
2612 Self { subnet: fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D) }
2613 }
2614
2615 #[inline]
2616 unsafe fn decode(
2617 &mut self,
2618 decoder: &mut fidl::encoding::Decoder<'_, D>,
2619 offset: usize,
2620 _depth: fidl::encoding::Depth,
2621 ) -> fidl::Result<()> {
2622 decoder.debug_check_bounds::<Self>(offset);
2623 fidl::decode!(
2625 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
2626 D,
2627 &mut self.subnet,
2628 decoder,
2629 offset + 0,
2630 _depth
2631 )?;
2632 Ok(())
2633 }
2634 }
2635
2636 impl fidl::encoding::ValueTypeMarker for LegacyJoiningMakeJoinableRequest {
2637 type Borrowed<'a> = &'a Self;
2638 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2639 value
2640 }
2641 }
2642
2643 unsafe impl fidl::encoding::TypeMarker for LegacyJoiningMakeJoinableRequest {
2644 type Owned = Self;
2645
2646 #[inline(always)]
2647 fn inline_align(_context: fidl::encoding::Context) -> usize {
2648 8
2649 }
2650
2651 #[inline(always)]
2652 fn inline_size(_context: fidl::encoding::Context) -> usize {
2653 16
2654 }
2655 }
2656
2657 unsafe impl<D: fidl::encoding::ResourceDialect>
2658 fidl::encoding::Encode<LegacyJoiningMakeJoinableRequest, D>
2659 for &LegacyJoiningMakeJoinableRequest
2660 {
2661 #[inline]
2662 unsafe fn encode(
2663 self,
2664 encoder: &mut fidl::encoding::Encoder<'_, D>,
2665 offset: usize,
2666 _depth: fidl::encoding::Depth,
2667 ) -> fidl::Result<()> {
2668 encoder.debug_check_bounds::<LegacyJoiningMakeJoinableRequest>(offset);
2669 unsafe {
2670 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2672 (buf_ptr as *mut LegacyJoiningMakeJoinableRequest)
2673 .write_unaligned((self as *const LegacyJoiningMakeJoinableRequest).read());
2674 let padding_ptr = buf_ptr.offset(8) as *mut u64;
2677 let padding_mask = 0xffffffffffff0000u64;
2678 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
2679 }
2680 Ok(())
2681 }
2682 }
2683 unsafe impl<
2684 D: fidl::encoding::ResourceDialect,
2685 T0: fidl::encoding::Encode<i64, D>,
2686 T1: fidl::encoding::Encode<u16, D>,
2687 > fidl::encoding::Encode<LegacyJoiningMakeJoinableRequest, D> for (T0, T1)
2688 {
2689 #[inline]
2690 unsafe fn encode(
2691 self,
2692 encoder: &mut fidl::encoding::Encoder<'_, D>,
2693 offset: usize,
2694 depth: fidl::encoding::Depth,
2695 ) -> fidl::Result<()> {
2696 encoder.debug_check_bounds::<LegacyJoiningMakeJoinableRequest>(offset);
2697 unsafe {
2700 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2701 (ptr as *mut u64).write_unaligned(0);
2702 }
2703 self.0.encode(encoder, offset + 0, depth)?;
2705 self.1.encode(encoder, offset + 8, depth)?;
2706 Ok(())
2707 }
2708 }
2709
2710 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2711 for LegacyJoiningMakeJoinableRequest
2712 {
2713 #[inline(always)]
2714 fn new_empty() -> Self {
2715 Self { duration: fidl::new_empty!(i64, D), port: fidl::new_empty!(u16, D) }
2716 }
2717
2718 #[inline]
2719 unsafe fn decode(
2720 &mut self,
2721 decoder: &mut fidl::encoding::Decoder<'_, D>,
2722 offset: usize,
2723 _depth: fidl::encoding::Depth,
2724 ) -> fidl::Result<()> {
2725 decoder.debug_check_bounds::<Self>(offset);
2726 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2727 let ptr = unsafe { buf_ptr.offset(8) };
2729 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2730 let mask = 0xffffffffffff0000u64;
2731 let maskedval = padval & mask;
2732 if maskedval != 0 {
2733 return Err(fidl::Error::NonZeroPadding {
2734 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2735 });
2736 }
2737 unsafe {
2739 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
2740 }
2741 Ok(())
2742 }
2743 }
2744
2745 impl fidl::encoding::ValueTypeMarker for ProvisioningMonitorWatchProgressResponse {
2746 type Borrowed<'a> = &'a Self;
2747 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2748 value
2749 }
2750 }
2751
2752 unsafe impl fidl::encoding::TypeMarker for ProvisioningMonitorWatchProgressResponse {
2753 type Owned = Self;
2754
2755 #[inline(always)]
2756 fn inline_align(_context: fidl::encoding::Context) -> usize {
2757 8
2758 }
2759
2760 #[inline(always)]
2761 fn inline_size(_context: fidl::encoding::Context) -> usize {
2762 16
2763 }
2764 }
2765
2766 unsafe impl<D: fidl::encoding::ResourceDialect>
2767 fidl::encoding::Encode<ProvisioningMonitorWatchProgressResponse, D>
2768 for &ProvisioningMonitorWatchProgressResponse
2769 {
2770 #[inline]
2771 unsafe fn encode(
2772 self,
2773 encoder: &mut fidl::encoding::Encoder<'_, D>,
2774 offset: usize,
2775 _depth: fidl::encoding::Depth,
2776 ) -> fidl::Result<()> {
2777 encoder.debug_check_bounds::<ProvisioningMonitorWatchProgressResponse>(offset);
2778 fidl::encoding::Encode::<ProvisioningMonitorWatchProgressResponse, D>::encode(
2780 (<ProvisioningProgress as fidl::encoding::ValueTypeMarker>::borrow(&self.progress),),
2781 encoder,
2782 offset,
2783 _depth,
2784 )
2785 }
2786 }
2787 unsafe impl<
2788 D: fidl::encoding::ResourceDialect,
2789 T0: fidl::encoding::Encode<ProvisioningProgress, D>,
2790 > fidl::encoding::Encode<ProvisioningMonitorWatchProgressResponse, D> for (T0,)
2791 {
2792 #[inline]
2793 unsafe fn encode(
2794 self,
2795 encoder: &mut fidl::encoding::Encoder<'_, D>,
2796 offset: usize,
2797 depth: fidl::encoding::Depth,
2798 ) -> fidl::Result<()> {
2799 encoder.debug_check_bounds::<ProvisioningMonitorWatchProgressResponse>(offset);
2800 self.0.encode(encoder, offset + 0, depth)?;
2804 Ok(())
2805 }
2806 }
2807
2808 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2809 for ProvisioningMonitorWatchProgressResponse
2810 {
2811 #[inline(always)]
2812 fn new_empty() -> Self {
2813 Self { progress: fidl::new_empty!(ProvisioningProgress, D) }
2814 }
2815
2816 #[inline]
2817 unsafe fn decode(
2818 &mut self,
2819 decoder: &mut fidl::encoding::Decoder<'_, D>,
2820 offset: usize,
2821 _depth: fidl::encoding::Depth,
2822 ) -> fidl::Result<()> {
2823 decoder.debug_check_bounds::<Self>(offset);
2824 fidl::decode!(
2826 ProvisioningProgress,
2827 D,
2828 &mut self.progress,
2829 decoder,
2830 offset + 0,
2831 _depth
2832 )?;
2833 Ok(())
2834 }
2835 }
2836
2837 impl fidl::encoding::ValueTypeMarker for TelemetryProviderGetTelemetryResponse {
2838 type Borrowed<'a> = &'a Self;
2839 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2840 value
2841 }
2842 }
2843
2844 unsafe impl fidl::encoding::TypeMarker for TelemetryProviderGetTelemetryResponse {
2845 type Owned = Self;
2846
2847 #[inline(always)]
2848 fn inline_align(_context: fidl::encoding::Context) -> usize {
2849 8
2850 }
2851
2852 #[inline(always)]
2853 fn inline_size(_context: fidl::encoding::Context) -> usize {
2854 16
2855 }
2856 }
2857
2858 unsafe impl<D: fidl::encoding::ResourceDialect>
2859 fidl::encoding::Encode<TelemetryProviderGetTelemetryResponse, D>
2860 for &TelemetryProviderGetTelemetryResponse
2861 {
2862 #[inline]
2863 unsafe fn encode(
2864 self,
2865 encoder: &mut fidl::encoding::Encoder<'_, D>,
2866 offset: usize,
2867 _depth: fidl::encoding::Depth,
2868 ) -> fidl::Result<()> {
2869 encoder.debug_check_bounds::<TelemetryProviderGetTelemetryResponse>(offset);
2870 fidl::encoding::Encode::<TelemetryProviderGetTelemetryResponse, D>::encode(
2872 (<Telemetry as fidl::encoding::ValueTypeMarker>::borrow(&self.telemetry),),
2873 encoder,
2874 offset,
2875 _depth,
2876 )
2877 }
2878 }
2879 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Telemetry, D>>
2880 fidl::encoding::Encode<TelemetryProviderGetTelemetryResponse, D> for (T0,)
2881 {
2882 #[inline]
2883 unsafe fn encode(
2884 self,
2885 encoder: &mut fidl::encoding::Encoder<'_, D>,
2886 offset: usize,
2887 depth: fidl::encoding::Depth,
2888 ) -> fidl::Result<()> {
2889 encoder.debug_check_bounds::<TelemetryProviderGetTelemetryResponse>(offset);
2890 self.0.encode(encoder, offset + 0, depth)?;
2894 Ok(())
2895 }
2896 }
2897
2898 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2899 for TelemetryProviderGetTelemetryResponse
2900 {
2901 #[inline(always)]
2902 fn new_empty() -> Self {
2903 Self { telemetry: fidl::new_empty!(Telemetry, D) }
2904 }
2905
2906 #[inline]
2907 unsafe fn decode(
2908 &mut self,
2909 decoder: &mut fidl::encoding::Decoder<'_, D>,
2910 offset: usize,
2911 _depth: fidl::encoding::Depth,
2912 ) -> fidl::Result<()> {
2913 decoder.debug_check_bounds::<Self>(offset);
2914 fidl::decode!(Telemetry, D, &mut self.telemetry, decoder, offset + 0, _depth)?;
2916 Ok(())
2917 }
2918 }
2919
2920 impl BeaconInfo {
2921 #[inline(always)]
2922 fn max_ordinal_present(&self) -> u64 {
2923 if let Some(_) = self.lqi {
2924 return 4;
2925 }
2926 if let Some(_) = self.rssi {
2927 return 3;
2928 }
2929 if let Some(_) = self.identity {
2930 return 2;
2931 }
2932 if let Some(_) = self.address {
2933 return 1;
2934 }
2935 0
2936 }
2937 }
2938
2939 impl fidl::encoding::ValueTypeMarker for BeaconInfo {
2940 type Borrowed<'a> = &'a Self;
2941 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2942 value
2943 }
2944 }
2945
2946 unsafe impl fidl::encoding::TypeMarker for BeaconInfo {
2947 type Owned = Self;
2948
2949 #[inline(always)]
2950 fn inline_align(_context: fidl::encoding::Context) -> usize {
2951 8
2952 }
2953
2954 #[inline(always)]
2955 fn inline_size(_context: fidl::encoding::Context) -> usize {
2956 16
2957 }
2958 }
2959
2960 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BeaconInfo, D>
2961 for &BeaconInfo
2962 {
2963 unsafe fn encode(
2964 self,
2965 encoder: &mut fidl::encoding::Encoder<'_, D>,
2966 offset: usize,
2967 mut depth: fidl::encoding::Depth,
2968 ) -> fidl::Result<()> {
2969 encoder.debug_check_bounds::<BeaconInfo>(offset);
2970 let max_ordinal: u64 = self.max_ordinal_present();
2972 encoder.write_num(max_ordinal, offset);
2973 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2974 if max_ordinal == 0 {
2976 return Ok(());
2977 }
2978 depth.increment()?;
2979 let envelope_size = 8;
2980 let bytes_len = max_ordinal as usize * envelope_size;
2981 #[allow(unused_variables)]
2982 let offset = encoder.out_of_line_offset(bytes_len);
2983 let mut _prev_end_offset: usize = 0;
2984 if 1 > max_ordinal {
2985 return Ok(());
2986 }
2987
2988 let cur_offset: usize = (1 - 1) * envelope_size;
2991
2992 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2994
2995 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan__common::MacAddress, D>(
3000 self.address.as_ref().map(<fidl_fuchsia_lowpan__common::MacAddress as fidl::encoding::ValueTypeMarker>::borrow),
3001 encoder, offset + cur_offset, depth
3002 )?;
3003
3004 _prev_end_offset = cur_offset + envelope_size;
3005 if 2 > max_ordinal {
3006 return Ok(());
3007 }
3008
3009 let cur_offset: usize = (2 - 1) * envelope_size;
3012
3013 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3015
3016 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan_device__common::Identity, D>(
3021 self.identity.as_ref().map(<fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::ValueTypeMarker>::borrow),
3022 encoder, offset + cur_offset, depth
3023 )?;
3024
3025 _prev_end_offset = cur_offset + envelope_size;
3026 if 3 > max_ordinal {
3027 return Ok(());
3028 }
3029
3030 let cur_offset: usize = (3 - 1) * envelope_size;
3033
3034 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3036
3037 fidl::encoding::encode_in_envelope_optional::<i8, D>(
3042 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
3043 encoder,
3044 offset + cur_offset,
3045 depth,
3046 )?;
3047
3048 _prev_end_offset = cur_offset + envelope_size;
3049 if 4 > max_ordinal {
3050 return Ok(());
3051 }
3052
3053 let cur_offset: usize = (4 - 1) * envelope_size;
3056
3057 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3059
3060 fidl::encoding::encode_in_envelope_optional::<u8, D>(
3065 self.lqi.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
3066 encoder,
3067 offset + cur_offset,
3068 depth,
3069 )?;
3070
3071 _prev_end_offset = cur_offset + envelope_size;
3072
3073 Ok(())
3074 }
3075 }
3076
3077 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BeaconInfo {
3078 #[inline(always)]
3079 fn new_empty() -> Self {
3080 Self::default()
3081 }
3082
3083 unsafe fn decode(
3084 &mut self,
3085 decoder: &mut fidl::encoding::Decoder<'_, D>,
3086 offset: usize,
3087 mut depth: fidl::encoding::Depth,
3088 ) -> fidl::Result<()> {
3089 decoder.debug_check_bounds::<Self>(offset);
3090 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3091 None => return Err(fidl::Error::NotNullable),
3092 Some(len) => len,
3093 };
3094 if len == 0 {
3096 return Ok(());
3097 };
3098 depth.increment()?;
3099 let envelope_size = 8;
3100 let bytes_len = len * envelope_size;
3101 let offset = decoder.out_of_line_offset(bytes_len)?;
3102 let mut _next_ordinal_to_read = 0;
3104 let mut next_offset = offset;
3105 let end_offset = offset + bytes_len;
3106 _next_ordinal_to_read += 1;
3107 if next_offset >= end_offset {
3108 return Ok(());
3109 }
3110
3111 while _next_ordinal_to_read < 1 {
3113 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3114 _next_ordinal_to_read += 1;
3115 next_offset += envelope_size;
3116 }
3117
3118 let next_out_of_line = decoder.next_out_of_line();
3119 let handles_before = decoder.remaining_handles();
3120 if let Some((inlined, num_bytes, num_handles)) =
3121 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3122 {
3123 let member_inline_size = <fidl_fuchsia_lowpan__common::MacAddress as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3124 if inlined != (member_inline_size <= 4) {
3125 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3126 }
3127 let inner_offset;
3128 let mut inner_depth = depth.clone();
3129 if inlined {
3130 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3131 inner_offset = next_offset;
3132 } else {
3133 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3134 inner_depth.increment()?;
3135 }
3136 let val_ref = self.address.get_or_insert_with(|| {
3137 fidl::new_empty!(fidl_fuchsia_lowpan__common::MacAddress, D)
3138 });
3139 fidl::decode!(
3140 fidl_fuchsia_lowpan__common::MacAddress,
3141 D,
3142 val_ref,
3143 decoder,
3144 inner_offset,
3145 inner_depth
3146 )?;
3147 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3148 {
3149 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3150 }
3151 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3152 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3153 }
3154 }
3155
3156 next_offset += envelope_size;
3157 _next_ordinal_to_read += 1;
3158 if next_offset >= end_offset {
3159 return Ok(());
3160 }
3161
3162 while _next_ordinal_to_read < 2 {
3164 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3165 _next_ordinal_to_read += 1;
3166 next_offset += envelope_size;
3167 }
3168
3169 let next_out_of_line = decoder.next_out_of_line();
3170 let handles_before = decoder.remaining_handles();
3171 if let Some((inlined, num_bytes, num_handles)) =
3172 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3173 {
3174 let member_inline_size = <fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3175 if inlined != (member_inline_size <= 4) {
3176 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3177 }
3178 let inner_offset;
3179 let mut inner_depth = depth.clone();
3180 if inlined {
3181 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3182 inner_offset = next_offset;
3183 } else {
3184 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3185 inner_depth.increment()?;
3186 }
3187 let val_ref = self.identity.get_or_insert_with(|| {
3188 fidl::new_empty!(fidl_fuchsia_lowpan_device__common::Identity, D)
3189 });
3190 fidl::decode!(
3191 fidl_fuchsia_lowpan_device__common::Identity,
3192 D,
3193 val_ref,
3194 decoder,
3195 inner_offset,
3196 inner_depth
3197 )?;
3198 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3199 {
3200 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3201 }
3202 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3203 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3204 }
3205 }
3206
3207 next_offset += envelope_size;
3208 _next_ordinal_to_read += 1;
3209 if next_offset >= end_offset {
3210 return Ok(());
3211 }
3212
3213 while _next_ordinal_to_read < 3 {
3215 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3216 _next_ordinal_to_read += 1;
3217 next_offset += envelope_size;
3218 }
3219
3220 let next_out_of_line = decoder.next_out_of_line();
3221 let handles_before = decoder.remaining_handles();
3222 if let Some((inlined, num_bytes, num_handles)) =
3223 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3224 {
3225 let member_inline_size =
3226 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3227 if inlined != (member_inline_size <= 4) {
3228 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3229 }
3230 let inner_offset;
3231 let mut inner_depth = depth.clone();
3232 if inlined {
3233 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3234 inner_offset = next_offset;
3235 } else {
3236 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3237 inner_depth.increment()?;
3238 }
3239 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
3240 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
3241 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3242 {
3243 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3244 }
3245 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3246 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3247 }
3248 }
3249
3250 next_offset += envelope_size;
3251 _next_ordinal_to_read += 1;
3252 if next_offset >= end_offset {
3253 return Ok(());
3254 }
3255
3256 while _next_ordinal_to_read < 4 {
3258 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3259 _next_ordinal_to_read += 1;
3260 next_offset += envelope_size;
3261 }
3262
3263 let next_out_of_line = decoder.next_out_of_line();
3264 let handles_before = decoder.remaining_handles();
3265 if let Some((inlined, num_bytes, num_handles)) =
3266 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3267 {
3268 let member_inline_size =
3269 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3270 if inlined != (member_inline_size <= 4) {
3271 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3272 }
3273 let inner_offset;
3274 let mut inner_depth = depth.clone();
3275 if inlined {
3276 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3277 inner_offset = next_offset;
3278 } else {
3279 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3280 inner_depth.increment()?;
3281 }
3282 let val_ref = self.lqi.get_or_insert_with(|| fidl::new_empty!(u8, D));
3283 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
3284 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3285 {
3286 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3287 }
3288 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3289 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3290 }
3291 }
3292
3293 next_offset += envelope_size;
3294
3295 while next_offset < end_offset {
3297 _next_ordinal_to_read += 1;
3298 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3299 next_offset += envelope_size;
3300 }
3301
3302 Ok(())
3303 }
3304 }
3305
3306 impl BorderRoutingCounters {
3307 #[inline(always)]
3308 fn max_ordinal_present(&self) -> u64 {
3309 if let Some(_) = self.outbound_internet_bytes {
3310 return 18;
3311 }
3312 if let Some(_) = self.outbound_internet_packets {
3313 return 17;
3314 }
3315 if let Some(_) = self.inbound_internet_bytes {
3316 return 16;
3317 }
3318 if let Some(_) = self.inbound_internet_packets {
3319 return 15;
3320 }
3321 if let Some(_) = self.rs_tx_failure {
3322 return 14;
3323 }
3324 if let Some(_) = self.rs_tx_success {
3325 return 13;
3326 }
3327 if let Some(_) = self.rs_rx {
3328 return 12;
3329 }
3330 if let Some(_) = self.ra_tx_failure {
3331 return 11;
3332 }
3333 if let Some(_) = self.ra_tx_success {
3334 return 10;
3335 }
3336 if let Some(_) = self.ra_rx {
3337 return 9;
3338 }
3339 if let Some(_) = self.outbound_multicast_bytes {
3340 return 8;
3341 }
3342 if let Some(_) = self.outbound_multicast_packets {
3343 return 7;
3344 }
3345 if let Some(_) = self.outbound_unicast_bytes {
3346 return 6;
3347 }
3348 if let Some(_) = self.outbound_unicast_packets {
3349 return 5;
3350 }
3351 if let Some(_) = self.inbound_multicast_bytes {
3352 return 4;
3353 }
3354 if let Some(_) = self.inbound_multicast_packets {
3355 return 3;
3356 }
3357 if let Some(_) = self.inbound_unicast_bytes {
3358 return 2;
3359 }
3360 if let Some(_) = self.inbound_unicast_packets {
3361 return 1;
3362 }
3363 0
3364 }
3365 }
3366
3367 impl fidl::encoding::ValueTypeMarker for BorderRoutingCounters {
3368 type Borrowed<'a> = &'a Self;
3369 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3370 value
3371 }
3372 }
3373
3374 unsafe impl fidl::encoding::TypeMarker for BorderRoutingCounters {
3375 type Owned = Self;
3376
3377 #[inline(always)]
3378 fn inline_align(_context: fidl::encoding::Context) -> usize {
3379 8
3380 }
3381
3382 #[inline(always)]
3383 fn inline_size(_context: fidl::encoding::Context) -> usize {
3384 16
3385 }
3386 }
3387
3388 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRoutingCounters, D>
3389 for &BorderRoutingCounters
3390 {
3391 unsafe fn encode(
3392 self,
3393 encoder: &mut fidl::encoding::Encoder<'_, D>,
3394 offset: usize,
3395 mut depth: fidl::encoding::Depth,
3396 ) -> fidl::Result<()> {
3397 encoder.debug_check_bounds::<BorderRoutingCounters>(offset);
3398 let max_ordinal: u64 = self.max_ordinal_present();
3400 encoder.write_num(max_ordinal, offset);
3401 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3402 if max_ordinal == 0 {
3404 return Ok(());
3405 }
3406 depth.increment()?;
3407 let envelope_size = 8;
3408 let bytes_len = max_ordinal as usize * envelope_size;
3409 #[allow(unused_variables)]
3410 let offset = encoder.out_of_line_offset(bytes_len);
3411 let mut _prev_end_offset: usize = 0;
3412 if 1 > max_ordinal {
3413 return Ok(());
3414 }
3415
3416 let cur_offset: usize = (1 - 1) * envelope_size;
3419
3420 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3422
3423 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3428 self.inbound_unicast_packets
3429 .as_ref()
3430 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3431 encoder,
3432 offset + cur_offset,
3433 depth,
3434 )?;
3435
3436 _prev_end_offset = cur_offset + envelope_size;
3437 if 2 > max_ordinal {
3438 return Ok(());
3439 }
3440
3441 let cur_offset: usize = (2 - 1) * envelope_size;
3444
3445 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3447
3448 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3453 self.inbound_unicast_bytes
3454 .as_ref()
3455 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3456 encoder,
3457 offset + cur_offset,
3458 depth,
3459 )?;
3460
3461 _prev_end_offset = cur_offset + envelope_size;
3462 if 3 > max_ordinal {
3463 return Ok(());
3464 }
3465
3466 let cur_offset: usize = (3 - 1) * envelope_size;
3469
3470 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3472
3473 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3478 self.inbound_multicast_packets
3479 .as_ref()
3480 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3481 encoder,
3482 offset + cur_offset,
3483 depth,
3484 )?;
3485
3486 _prev_end_offset = cur_offset + envelope_size;
3487 if 4 > max_ordinal {
3488 return Ok(());
3489 }
3490
3491 let cur_offset: usize = (4 - 1) * envelope_size;
3494
3495 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3497
3498 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3503 self.inbound_multicast_bytes
3504 .as_ref()
3505 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3506 encoder,
3507 offset + cur_offset,
3508 depth,
3509 )?;
3510
3511 _prev_end_offset = cur_offset + envelope_size;
3512 if 5 > max_ordinal {
3513 return Ok(());
3514 }
3515
3516 let cur_offset: usize = (5 - 1) * envelope_size;
3519
3520 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3522
3523 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3528 self.outbound_unicast_packets
3529 .as_ref()
3530 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3531 encoder,
3532 offset + cur_offset,
3533 depth,
3534 )?;
3535
3536 _prev_end_offset = cur_offset + envelope_size;
3537 if 6 > max_ordinal {
3538 return Ok(());
3539 }
3540
3541 let cur_offset: usize = (6 - 1) * envelope_size;
3544
3545 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3547
3548 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3553 self.outbound_unicast_bytes
3554 .as_ref()
3555 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3556 encoder,
3557 offset + cur_offset,
3558 depth,
3559 )?;
3560
3561 _prev_end_offset = cur_offset + envelope_size;
3562 if 7 > max_ordinal {
3563 return Ok(());
3564 }
3565
3566 let cur_offset: usize = (7 - 1) * envelope_size;
3569
3570 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3572
3573 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3578 self.outbound_multicast_packets
3579 .as_ref()
3580 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3581 encoder,
3582 offset + cur_offset,
3583 depth,
3584 )?;
3585
3586 _prev_end_offset = cur_offset + envelope_size;
3587 if 8 > max_ordinal {
3588 return Ok(());
3589 }
3590
3591 let cur_offset: usize = (8 - 1) * envelope_size;
3594
3595 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3597
3598 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3603 self.outbound_multicast_bytes
3604 .as_ref()
3605 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3606 encoder,
3607 offset + cur_offset,
3608 depth,
3609 )?;
3610
3611 _prev_end_offset = cur_offset + envelope_size;
3612 if 9 > max_ordinal {
3613 return Ok(());
3614 }
3615
3616 let cur_offset: usize = (9 - 1) * envelope_size;
3619
3620 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3622
3623 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3628 self.ra_rx.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3629 encoder,
3630 offset + cur_offset,
3631 depth,
3632 )?;
3633
3634 _prev_end_offset = cur_offset + envelope_size;
3635 if 10 > max_ordinal {
3636 return Ok(());
3637 }
3638
3639 let cur_offset: usize = (10 - 1) * envelope_size;
3642
3643 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3645
3646 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3651 self.ra_tx_success.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3652 encoder,
3653 offset + cur_offset,
3654 depth,
3655 )?;
3656
3657 _prev_end_offset = cur_offset + envelope_size;
3658 if 11 > max_ordinal {
3659 return Ok(());
3660 }
3661
3662 let cur_offset: usize = (11 - 1) * envelope_size;
3665
3666 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3668
3669 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3674 self.ra_tx_failure.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3675 encoder,
3676 offset + cur_offset,
3677 depth,
3678 )?;
3679
3680 _prev_end_offset = cur_offset + envelope_size;
3681 if 12 > max_ordinal {
3682 return Ok(());
3683 }
3684
3685 let cur_offset: usize = (12 - 1) * envelope_size;
3688
3689 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3691
3692 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3697 self.rs_rx.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3698 encoder,
3699 offset + cur_offset,
3700 depth,
3701 )?;
3702
3703 _prev_end_offset = cur_offset + envelope_size;
3704 if 13 > max_ordinal {
3705 return Ok(());
3706 }
3707
3708 let cur_offset: usize = (13 - 1) * envelope_size;
3711
3712 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3714
3715 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3720 self.rs_tx_success.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3721 encoder,
3722 offset + cur_offset,
3723 depth,
3724 )?;
3725
3726 _prev_end_offset = cur_offset + envelope_size;
3727 if 14 > max_ordinal {
3728 return Ok(());
3729 }
3730
3731 let cur_offset: usize = (14 - 1) * envelope_size;
3734
3735 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3737
3738 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3743 self.rs_tx_failure.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3744 encoder,
3745 offset + cur_offset,
3746 depth,
3747 )?;
3748
3749 _prev_end_offset = cur_offset + envelope_size;
3750 if 15 > max_ordinal {
3751 return Ok(());
3752 }
3753
3754 let cur_offset: usize = (15 - 1) * envelope_size;
3757
3758 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3760
3761 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3766 self.inbound_internet_packets
3767 .as_ref()
3768 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3769 encoder,
3770 offset + cur_offset,
3771 depth,
3772 )?;
3773
3774 _prev_end_offset = cur_offset + envelope_size;
3775 if 16 > max_ordinal {
3776 return Ok(());
3777 }
3778
3779 let cur_offset: usize = (16 - 1) * envelope_size;
3782
3783 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3785
3786 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3791 self.inbound_internet_bytes
3792 .as_ref()
3793 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3794 encoder,
3795 offset + cur_offset,
3796 depth,
3797 )?;
3798
3799 _prev_end_offset = cur_offset + envelope_size;
3800 if 17 > max_ordinal {
3801 return Ok(());
3802 }
3803
3804 let cur_offset: usize = (17 - 1) * envelope_size;
3807
3808 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3810
3811 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3816 self.outbound_internet_packets
3817 .as_ref()
3818 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3819 encoder,
3820 offset + cur_offset,
3821 depth,
3822 )?;
3823
3824 _prev_end_offset = cur_offset + envelope_size;
3825 if 18 > max_ordinal {
3826 return Ok(());
3827 }
3828
3829 let cur_offset: usize = (18 - 1) * envelope_size;
3832
3833 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3835
3836 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3841 self.outbound_internet_bytes
3842 .as_ref()
3843 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3844 encoder,
3845 offset + cur_offset,
3846 depth,
3847 )?;
3848
3849 _prev_end_offset = cur_offset + envelope_size;
3850
3851 Ok(())
3852 }
3853 }
3854
3855 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRoutingCounters {
3856 #[inline(always)]
3857 fn new_empty() -> Self {
3858 Self::default()
3859 }
3860
3861 unsafe fn decode(
3862 &mut self,
3863 decoder: &mut fidl::encoding::Decoder<'_, D>,
3864 offset: usize,
3865 mut depth: fidl::encoding::Depth,
3866 ) -> fidl::Result<()> {
3867 decoder.debug_check_bounds::<Self>(offset);
3868 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3869 None => return Err(fidl::Error::NotNullable),
3870 Some(len) => len,
3871 };
3872 if len == 0 {
3874 return Ok(());
3875 };
3876 depth.increment()?;
3877 let envelope_size = 8;
3878 let bytes_len = len * envelope_size;
3879 let offset = decoder.out_of_line_offset(bytes_len)?;
3880 let mut _next_ordinal_to_read = 0;
3882 let mut next_offset = offset;
3883 let end_offset = offset + bytes_len;
3884 _next_ordinal_to_read += 1;
3885 if next_offset >= end_offset {
3886 return Ok(());
3887 }
3888
3889 while _next_ordinal_to_read < 1 {
3891 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3892 _next_ordinal_to_read += 1;
3893 next_offset += envelope_size;
3894 }
3895
3896 let next_out_of_line = decoder.next_out_of_line();
3897 let handles_before = decoder.remaining_handles();
3898 if let Some((inlined, num_bytes, num_handles)) =
3899 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3900 {
3901 let member_inline_size =
3902 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3903 if inlined != (member_inline_size <= 4) {
3904 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3905 }
3906 let inner_offset;
3907 let mut inner_depth = depth.clone();
3908 if inlined {
3909 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3910 inner_offset = next_offset;
3911 } else {
3912 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3913 inner_depth.increment()?;
3914 }
3915 let val_ref =
3916 self.inbound_unicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
3917 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3918 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3919 {
3920 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3921 }
3922 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3923 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3924 }
3925 }
3926
3927 next_offset += envelope_size;
3928 _next_ordinal_to_read += 1;
3929 if next_offset >= end_offset {
3930 return Ok(());
3931 }
3932
3933 while _next_ordinal_to_read < 2 {
3935 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3936 _next_ordinal_to_read += 1;
3937 next_offset += envelope_size;
3938 }
3939
3940 let next_out_of_line = decoder.next_out_of_line();
3941 let handles_before = decoder.remaining_handles();
3942 if let Some((inlined, num_bytes, num_handles)) =
3943 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3944 {
3945 let member_inline_size =
3946 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3947 if inlined != (member_inline_size <= 4) {
3948 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3949 }
3950 let inner_offset;
3951 let mut inner_depth = depth.clone();
3952 if inlined {
3953 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3954 inner_offset = next_offset;
3955 } else {
3956 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3957 inner_depth.increment()?;
3958 }
3959 let val_ref =
3960 self.inbound_unicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
3961 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3962 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3963 {
3964 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3965 }
3966 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3967 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3968 }
3969 }
3970
3971 next_offset += envelope_size;
3972 _next_ordinal_to_read += 1;
3973 if next_offset >= end_offset {
3974 return Ok(());
3975 }
3976
3977 while _next_ordinal_to_read < 3 {
3979 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3980 _next_ordinal_to_read += 1;
3981 next_offset += envelope_size;
3982 }
3983
3984 let next_out_of_line = decoder.next_out_of_line();
3985 let handles_before = decoder.remaining_handles();
3986 if let Some((inlined, num_bytes, num_handles)) =
3987 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3988 {
3989 let member_inline_size =
3990 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3991 if inlined != (member_inline_size <= 4) {
3992 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3993 }
3994 let inner_offset;
3995 let mut inner_depth = depth.clone();
3996 if inlined {
3997 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3998 inner_offset = next_offset;
3999 } else {
4000 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4001 inner_depth.increment()?;
4002 }
4003 let val_ref =
4004 self.inbound_multicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4005 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4006 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4007 {
4008 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4009 }
4010 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4011 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4012 }
4013 }
4014
4015 next_offset += envelope_size;
4016 _next_ordinal_to_read += 1;
4017 if next_offset >= end_offset {
4018 return Ok(());
4019 }
4020
4021 while _next_ordinal_to_read < 4 {
4023 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4024 _next_ordinal_to_read += 1;
4025 next_offset += envelope_size;
4026 }
4027
4028 let next_out_of_line = decoder.next_out_of_line();
4029 let handles_before = decoder.remaining_handles();
4030 if let Some((inlined, num_bytes, num_handles)) =
4031 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4032 {
4033 let member_inline_size =
4034 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4035 if inlined != (member_inline_size <= 4) {
4036 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4037 }
4038 let inner_offset;
4039 let mut inner_depth = depth.clone();
4040 if inlined {
4041 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4042 inner_offset = next_offset;
4043 } else {
4044 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4045 inner_depth.increment()?;
4046 }
4047 let val_ref =
4048 self.inbound_multicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4049 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4050 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4051 {
4052 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4053 }
4054 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4055 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4056 }
4057 }
4058
4059 next_offset += envelope_size;
4060 _next_ordinal_to_read += 1;
4061 if next_offset >= end_offset {
4062 return Ok(());
4063 }
4064
4065 while _next_ordinal_to_read < 5 {
4067 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4068 _next_ordinal_to_read += 1;
4069 next_offset += envelope_size;
4070 }
4071
4072 let next_out_of_line = decoder.next_out_of_line();
4073 let handles_before = decoder.remaining_handles();
4074 if let Some((inlined, num_bytes, num_handles)) =
4075 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4076 {
4077 let member_inline_size =
4078 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4079 if inlined != (member_inline_size <= 4) {
4080 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4081 }
4082 let inner_offset;
4083 let mut inner_depth = depth.clone();
4084 if inlined {
4085 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4086 inner_offset = next_offset;
4087 } else {
4088 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4089 inner_depth.increment()?;
4090 }
4091 let val_ref =
4092 self.outbound_unicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4093 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4094 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4095 {
4096 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4097 }
4098 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4099 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4100 }
4101 }
4102
4103 next_offset += envelope_size;
4104 _next_ordinal_to_read += 1;
4105 if next_offset >= end_offset {
4106 return Ok(());
4107 }
4108
4109 while _next_ordinal_to_read < 6 {
4111 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4112 _next_ordinal_to_read += 1;
4113 next_offset += envelope_size;
4114 }
4115
4116 let next_out_of_line = decoder.next_out_of_line();
4117 let handles_before = decoder.remaining_handles();
4118 if let Some((inlined, num_bytes, num_handles)) =
4119 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4120 {
4121 let member_inline_size =
4122 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4123 if inlined != (member_inline_size <= 4) {
4124 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4125 }
4126 let inner_offset;
4127 let mut inner_depth = depth.clone();
4128 if inlined {
4129 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4130 inner_offset = next_offset;
4131 } else {
4132 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4133 inner_depth.increment()?;
4134 }
4135 let val_ref =
4136 self.outbound_unicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4137 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4138 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4139 {
4140 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4141 }
4142 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4143 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4144 }
4145 }
4146
4147 next_offset += envelope_size;
4148 _next_ordinal_to_read += 1;
4149 if next_offset >= end_offset {
4150 return Ok(());
4151 }
4152
4153 while _next_ordinal_to_read < 7 {
4155 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4156 _next_ordinal_to_read += 1;
4157 next_offset += envelope_size;
4158 }
4159
4160 let next_out_of_line = decoder.next_out_of_line();
4161 let handles_before = decoder.remaining_handles();
4162 if let Some((inlined, num_bytes, num_handles)) =
4163 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4164 {
4165 let member_inline_size =
4166 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4167 if inlined != (member_inline_size <= 4) {
4168 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4169 }
4170 let inner_offset;
4171 let mut inner_depth = depth.clone();
4172 if inlined {
4173 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4174 inner_offset = next_offset;
4175 } else {
4176 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4177 inner_depth.increment()?;
4178 }
4179 let val_ref =
4180 self.outbound_multicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4181 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4182 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4183 {
4184 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4185 }
4186 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4187 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4188 }
4189 }
4190
4191 next_offset += envelope_size;
4192 _next_ordinal_to_read += 1;
4193 if next_offset >= end_offset {
4194 return Ok(());
4195 }
4196
4197 while _next_ordinal_to_read < 8 {
4199 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4200 _next_ordinal_to_read += 1;
4201 next_offset += envelope_size;
4202 }
4203
4204 let next_out_of_line = decoder.next_out_of_line();
4205 let handles_before = decoder.remaining_handles();
4206 if let Some((inlined, num_bytes, num_handles)) =
4207 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4208 {
4209 let member_inline_size =
4210 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4211 if inlined != (member_inline_size <= 4) {
4212 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4213 }
4214 let inner_offset;
4215 let mut inner_depth = depth.clone();
4216 if inlined {
4217 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4218 inner_offset = next_offset;
4219 } else {
4220 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4221 inner_depth.increment()?;
4222 }
4223 let val_ref =
4224 self.outbound_multicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4225 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4226 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4227 {
4228 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4229 }
4230 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4231 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4232 }
4233 }
4234
4235 next_offset += envelope_size;
4236 _next_ordinal_to_read += 1;
4237 if next_offset >= end_offset {
4238 return Ok(());
4239 }
4240
4241 while _next_ordinal_to_read < 9 {
4243 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4244 _next_ordinal_to_read += 1;
4245 next_offset += envelope_size;
4246 }
4247
4248 let next_out_of_line = decoder.next_out_of_line();
4249 let handles_before = decoder.remaining_handles();
4250 if let Some((inlined, num_bytes, num_handles)) =
4251 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4252 {
4253 let member_inline_size =
4254 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4255 if inlined != (member_inline_size <= 4) {
4256 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4257 }
4258 let inner_offset;
4259 let mut inner_depth = depth.clone();
4260 if inlined {
4261 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4262 inner_offset = next_offset;
4263 } else {
4264 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4265 inner_depth.increment()?;
4266 }
4267 let val_ref = self.ra_rx.get_or_insert_with(|| fidl::new_empty!(u32, D));
4268 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4269 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4270 {
4271 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4272 }
4273 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4274 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4275 }
4276 }
4277
4278 next_offset += envelope_size;
4279 _next_ordinal_to_read += 1;
4280 if next_offset >= end_offset {
4281 return Ok(());
4282 }
4283
4284 while _next_ordinal_to_read < 10 {
4286 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4287 _next_ordinal_to_read += 1;
4288 next_offset += envelope_size;
4289 }
4290
4291 let next_out_of_line = decoder.next_out_of_line();
4292 let handles_before = decoder.remaining_handles();
4293 if let Some((inlined, num_bytes, num_handles)) =
4294 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4295 {
4296 let member_inline_size =
4297 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4298 if inlined != (member_inline_size <= 4) {
4299 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4300 }
4301 let inner_offset;
4302 let mut inner_depth = depth.clone();
4303 if inlined {
4304 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4305 inner_offset = next_offset;
4306 } else {
4307 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4308 inner_depth.increment()?;
4309 }
4310 let val_ref = self.ra_tx_success.get_or_insert_with(|| fidl::new_empty!(u32, D));
4311 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4312 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4313 {
4314 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4315 }
4316 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4317 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4318 }
4319 }
4320
4321 next_offset += envelope_size;
4322 _next_ordinal_to_read += 1;
4323 if next_offset >= end_offset {
4324 return Ok(());
4325 }
4326
4327 while _next_ordinal_to_read < 11 {
4329 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4330 _next_ordinal_to_read += 1;
4331 next_offset += envelope_size;
4332 }
4333
4334 let next_out_of_line = decoder.next_out_of_line();
4335 let handles_before = decoder.remaining_handles();
4336 if let Some((inlined, num_bytes, num_handles)) =
4337 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4338 {
4339 let member_inline_size =
4340 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4341 if inlined != (member_inline_size <= 4) {
4342 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4343 }
4344 let inner_offset;
4345 let mut inner_depth = depth.clone();
4346 if inlined {
4347 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4348 inner_offset = next_offset;
4349 } else {
4350 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4351 inner_depth.increment()?;
4352 }
4353 let val_ref = self.ra_tx_failure.get_or_insert_with(|| fidl::new_empty!(u32, D));
4354 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4355 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4356 {
4357 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4358 }
4359 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4360 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4361 }
4362 }
4363
4364 next_offset += envelope_size;
4365 _next_ordinal_to_read += 1;
4366 if next_offset >= end_offset {
4367 return Ok(());
4368 }
4369
4370 while _next_ordinal_to_read < 12 {
4372 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4373 _next_ordinal_to_read += 1;
4374 next_offset += envelope_size;
4375 }
4376
4377 let next_out_of_line = decoder.next_out_of_line();
4378 let handles_before = decoder.remaining_handles();
4379 if let Some((inlined, num_bytes, num_handles)) =
4380 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4381 {
4382 let member_inline_size =
4383 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4384 if inlined != (member_inline_size <= 4) {
4385 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4386 }
4387 let inner_offset;
4388 let mut inner_depth = depth.clone();
4389 if inlined {
4390 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4391 inner_offset = next_offset;
4392 } else {
4393 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4394 inner_depth.increment()?;
4395 }
4396 let val_ref = self.rs_rx.get_or_insert_with(|| fidl::new_empty!(u32, D));
4397 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4398 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4399 {
4400 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4401 }
4402 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4403 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4404 }
4405 }
4406
4407 next_offset += envelope_size;
4408 _next_ordinal_to_read += 1;
4409 if next_offset >= end_offset {
4410 return Ok(());
4411 }
4412
4413 while _next_ordinal_to_read < 13 {
4415 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4416 _next_ordinal_to_read += 1;
4417 next_offset += envelope_size;
4418 }
4419
4420 let next_out_of_line = decoder.next_out_of_line();
4421 let handles_before = decoder.remaining_handles();
4422 if let Some((inlined, num_bytes, num_handles)) =
4423 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4424 {
4425 let member_inline_size =
4426 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4427 if inlined != (member_inline_size <= 4) {
4428 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4429 }
4430 let inner_offset;
4431 let mut inner_depth = depth.clone();
4432 if inlined {
4433 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4434 inner_offset = next_offset;
4435 } else {
4436 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4437 inner_depth.increment()?;
4438 }
4439 let val_ref = self.rs_tx_success.get_or_insert_with(|| fidl::new_empty!(u32, D));
4440 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4441 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4442 {
4443 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4444 }
4445 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4446 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4447 }
4448 }
4449
4450 next_offset += envelope_size;
4451 _next_ordinal_to_read += 1;
4452 if next_offset >= end_offset {
4453 return Ok(());
4454 }
4455
4456 while _next_ordinal_to_read < 14 {
4458 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4459 _next_ordinal_to_read += 1;
4460 next_offset += envelope_size;
4461 }
4462
4463 let next_out_of_line = decoder.next_out_of_line();
4464 let handles_before = decoder.remaining_handles();
4465 if let Some((inlined, num_bytes, num_handles)) =
4466 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4467 {
4468 let member_inline_size =
4469 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4470 if inlined != (member_inline_size <= 4) {
4471 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4472 }
4473 let inner_offset;
4474 let mut inner_depth = depth.clone();
4475 if inlined {
4476 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4477 inner_offset = next_offset;
4478 } else {
4479 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4480 inner_depth.increment()?;
4481 }
4482 let val_ref = self.rs_tx_failure.get_or_insert_with(|| fidl::new_empty!(u32, D));
4483 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4484 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4485 {
4486 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4487 }
4488 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4489 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4490 }
4491 }
4492
4493 next_offset += envelope_size;
4494 _next_ordinal_to_read += 1;
4495 if next_offset >= end_offset {
4496 return Ok(());
4497 }
4498
4499 while _next_ordinal_to_read < 15 {
4501 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4502 _next_ordinal_to_read += 1;
4503 next_offset += envelope_size;
4504 }
4505
4506 let next_out_of_line = decoder.next_out_of_line();
4507 let handles_before = decoder.remaining_handles();
4508 if let Some((inlined, num_bytes, num_handles)) =
4509 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4510 {
4511 let member_inline_size =
4512 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4513 if inlined != (member_inline_size <= 4) {
4514 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4515 }
4516 let inner_offset;
4517 let mut inner_depth = depth.clone();
4518 if inlined {
4519 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4520 inner_offset = next_offset;
4521 } else {
4522 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4523 inner_depth.increment()?;
4524 }
4525 let val_ref =
4526 self.inbound_internet_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4527 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4528 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4529 {
4530 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4531 }
4532 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4533 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4534 }
4535 }
4536
4537 next_offset += envelope_size;
4538 _next_ordinal_to_read += 1;
4539 if next_offset >= end_offset {
4540 return Ok(());
4541 }
4542
4543 while _next_ordinal_to_read < 16 {
4545 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4546 _next_ordinal_to_read += 1;
4547 next_offset += envelope_size;
4548 }
4549
4550 let next_out_of_line = decoder.next_out_of_line();
4551 let handles_before = decoder.remaining_handles();
4552 if let Some((inlined, num_bytes, num_handles)) =
4553 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4554 {
4555 let member_inline_size =
4556 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4557 if inlined != (member_inline_size <= 4) {
4558 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4559 }
4560 let inner_offset;
4561 let mut inner_depth = depth.clone();
4562 if inlined {
4563 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4564 inner_offset = next_offset;
4565 } else {
4566 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4567 inner_depth.increment()?;
4568 }
4569 let val_ref =
4570 self.inbound_internet_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4571 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4572 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4573 {
4574 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4575 }
4576 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4577 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4578 }
4579 }
4580
4581 next_offset += envelope_size;
4582 _next_ordinal_to_read += 1;
4583 if next_offset >= end_offset {
4584 return Ok(());
4585 }
4586
4587 while _next_ordinal_to_read < 17 {
4589 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4590 _next_ordinal_to_read += 1;
4591 next_offset += envelope_size;
4592 }
4593
4594 let next_out_of_line = decoder.next_out_of_line();
4595 let handles_before = decoder.remaining_handles();
4596 if let Some((inlined, num_bytes, num_handles)) =
4597 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4598 {
4599 let member_inline_size =
4600 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4601 if inlined != (member_inline_size <= 4) {
4602 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4603 }
4604 let inner_offset;
4605 let mut inner_depth = depth.clone();
4606 if inlined {
4607 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4608 inner_offset = next_offset;
4609 } else {
4610 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4611 inner_depth.increment()?;
4612 }
4613 let val_ref =
4614 self.outbound_internet_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4615 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4616 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4617 {
4618 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4619 }
4620 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4621 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4622 }
4623 }
4624
4625 next_offset += envelope_size;
4626 _next_ordinal_to_read += 1;
4627 if next_offset >= end_offset {
4628 return Ok(());
4629 }
4630
4631 while _next_ordinal_to_read < 18 {
4633 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4634 _next_ordinal_to_read += 1;
4635 next_offset += envelope_size;
4636 }
4637
4638 let next_out_of_line = decoder.next_out_of_line();
4639 let handles_before = decoder.remaining_handles();
4640 if let Some((inlined, num_bytes, num_handles)) =
4641 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4642 {
4643 let member_inline_size =
4644 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4645 if inlined != (member_inline_size <= 4) {
4646 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4647 }
4648 let inner_offset;
4649 let mut inner_depth = depth.clone();
4650 if inlined {
4651 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4652 inner_offset = next_offset;
4653 } else {
4654 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4655 inner_depth.increment()?;
4656 }
4657 let val_ref =
4658 self.outbound_internet_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4659 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4660 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4661 {
4662 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4663 }
4664 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4665 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4666 }
4667 }
4668
4669 next_offset += envelope_size;
4670
4671 while next_offset < end_offset {
4673 _next_ordinal_to_read += 1;
4674 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4675 next_offset += envelope_size;
4676 }
4677
4678 Ok(())
4679 }
4680 }
4681
4682 impl BorderRoutingNat64State {
4683 #[inline(always)]
4684 fn max_ordinal_present(&self) -> u64 {
4685 if let Some(_) = self.translator_state {
4686 return 2;
4687 }
4688 if let Some(_) = self.prefix_manager_state {
4689 return 1;
4690 }
4691 0
4692 }
4693 }
4694
4695 impl fidl::encoding::ValueTypeMarker for BorderRoutingNat64State {
4696 type Borrowed<'a> = &'a Self;
4697 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4698 value
4699 }
4700 }
4701
4702 unsafe impl fidl::encoding::TypeMarker for BorderRoutingNat64State {
4703 type Owned = Self;
4704
4705 #[inline(always)]
4706 fn inline_align(_context: fidl::encoding::Context) -> usize {
4707 8
4708 }
4709
4710 #[inline(always)]
4711 fn inline_size(_context: fidl::encoding::Context) -> usize {
4712 16
4713 }
4714 }
4715
4716 unsafe impl<D: fidl::encoding::ResourceDialect>
4717 fidl::encoding::Encode<BorderRoutingNat64State, D> for &BorderRoutingNat64State
4718 {
4719 unsafe fn encode(
4720 self,
4721 encoder: &mut fidl::encoding::Encoder<'_, D>,
4722 offset: usize,
4723 mut depth: fidl::encoding::Depth,
4724 ) -> fidl::Result<()> {
4725 encoder.debug_check_bounds::<BorderRoutingNat64State>(offset);
4726 let max_ordinal: u64 = self.max_ordinal_present();
4728 encoder.write_num(max_ordinal, offset);
4729 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4730 if max_ordinal == 0 {
4732 return Ok(());
4733 }
4734 depth.increment()?;
4735 let envelope_size = 8;
4736 let bytes_len = max_ordinal as usize * envelope_size;
4737 #[allow(unused_variables)]
4738 let offset = encoder.out_of_line_offset(bytes_len);
4739 let mut _prev_end_offset: usize = 0;
4740 if 1 > max_ordinal {
4741 return Ok(());
4742 }
4743
4744 let cur_offset: usize = (1 - 1) * envelope_size;
4747
4748 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4750
4751 fidl::encoding::encode_in_envelope_optional::<Nat64State, D>(
4756 self.prefix_manager_state
4757 .as_ref()
4758 .map(<Nat64State as fidl::encoding::ValueTypeMarker>::borrow),
4759 encoder,
4760 offset + cur_offset,
4761 depth,
4762 )?;
4763
4764 _prev_end_offset = cur_offset + envelope_size;
4765 if 2 > max_ordinal {
4766 return Ok(());
4767 }
4768
4769 let cur_offset: usize = (2 - 1) * envelope_size;
4772
4773 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4775
4776 fidl::encoding::encode_in_envelope_optional::<Nat64State, D>(
4781 self.translator_state
4782 .as_ref()
4783 .map(<Nat64State as fidl::encoding::ValueTypeMarker>::borrow),
4784 encoder,
4785 offset + cur_offset,
4786 depth,
4787 )?;
4788
4789 _prev_end_offset = cur_offset + envelope_size;
4790
4791 Ok(())
4792 }
4793 }
4794
4795 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4796 for BorderRoutingNat64State
4797 {
4798 #[inline(always)]
4799 fn new_empty() -> Self {
4800 Self::default()
4801 }
4802
4803 unsafe fn decode(
4804 &mut self,
4805 decoder: &mut fidl::encoding::Decoder<'_, D>,
4806 offset: usize,
4807 mut depth: fidl::encoding::Depth,
4808 ) -> fidl::Result<()> {
4809 decoder.debug_check_bounds::<Self>(offset);
4810 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4811 None => return Err(fidl::Error::NotNullable),
4812 Some(len) => len,
4813 };
4814 if len == 0 {
4816 return Ok(());
4817 };
4818 depth.increment()?;
4819 let envelope_size = 8;
4820 let bytes_len = len * envelope_size;
4821 let offset = decoder.out_of_line_offset(bytes_len)?;
4822 let mut _next_ordinal_to_read = 0;
4824 let mut next_offset = offset;
4825 let end_offset = offset + bytes_len;
4826 _next_ordinal_to_read += 1;
4827 if next_offset >= end_offset {
4828 return Ok(());
4829 }
4830
4831 while _next_ordinal_to_read < 1 {
4833 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4834 _next_ordinal_to_read += 1;
4835 next_offset += envelope_size;
4836 }
4837
4838 let next_out_of_line = decoder.next_out_of_line();
4839 let handles_before = decoder.remaining_handles();
4840 if let Some((inlined, num_bytes, num_handles)) =
4841 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4842 {
4843 let member_inline_size =
4844 <Nat64State as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4845 if inlined != (member_inline_size <= 4) {
4846 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4847 }
4848 let inner_offset;
4849 let mut inner_depth = depth.clone();
4850 if inlined {
4851 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4852 inner_offset = next_offset;
4853 } else {
4854 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4855 inner_depth.increment()?;
4856 }
4857 let val_ref = self
4858 .prefix_manager_state
4859 .get_or_insert_with(|| fidl::new_empty!(Nat64State, D));
4860 fidl::decode!(Nat64State, D, val_ref, decoder, inner_offset, inner_depth)?;
4861 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4862 {
4863 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4864 }
4865 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4866 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4867 }
4868 }
4869
4870 next_offset += envelope_size;
4871 _next_ordinal_to_read += 1;
4872 if next_offset >= end_offset {
4873 return Ok(());
4874 }
4875
4876 while _next_ordinal_to_read < 2 {
4878 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4879 _next_ordinal_to_read += 1;
4880 next_offset += envelope_size;
4881 }
4882
4883 let next_out_of_line = decoder.next_out_of_line();
4884 let handles_before = decoder.remaining_handles();
4885 if let Some((inlined, num_bytes, num_handles)) =
4886 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4887 {
4888 let member_inline_size =
4889 <Nat64State as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4890 if inlined != (member_inline_size <= 4) {
4891 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4892 }
4893 let inner_offset;
4894 let mut inner_depth = depth.clone();
4895 if inlined {
4896 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4897 inner_offset = next_offset;
4898 } else {
4899 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4900 inner_depth.increment()?;
4901 }
4902 let val_ref =
4903 self.translator_state.get_or_insert_with(|| fidl::new_empty!(Nat64State, D));
4904 fidl::decode!(Nat64State, D, val_ref, decoder, inner_offset, inner_depth)?;
4905 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4906 {
4907 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4908 }
4909 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4910 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4911 }
4912 }
4913
4914 next_offset += envelope_size;
4915
4916 while next_offset < end_offset {
4918 _next_ordinal_to_read += 1;
4919 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4920 next_offset += envelope_size;
4921 }
4922
4923 Ok(())
4924 }
4925 }
4926
4927 impl ChannelInfo {
4928 #[inline(always)]
4929 fn max_ordinal_present(&self) -> u64 {
4930 if let Some(_) = self.masked_by_regulatory_domain {
4931 return 6;
4932 }
4933 if let Some(_) = self.spectrum_bandwidth_hz {
4934 return 5;
4935 }
4936 if let Some(_) = self.spectrum_center_frequency_hz {
4937 return 4;
4938 }
4939 if let Some(_) = self.max_transmit_power_dbm {
4940 return 3;
4941 }
4942 if let Some(_) = self.id {
4943 return 2;
4944 }
4945 if let Some(_) = self.index {
4946 return 1;
4947 }
4948 0
4949 }
4950 }
4951
4952 impl fidl::encoding::ValueTypeMarker for ChannelInfo {
4953 type Borrowed<'a> = &'a Self;
4954 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4955 value
4956 }
4957 }
4958
4959 unsafe impl fidl::encoding::TypeMarker for ChannelInfo {
4960 type Owned = Self;
4961
4962 #[inline(always)]
4963 fn inline_align(_context: fidl::encoding::Context) -> usize {
4964 8
4965 }
4966
4967 #[inline(always)]
4968 fn inline_size(_context: fidl::encoding::Context) -> usize {
4969 16
4970 }
4971 }
4972
4973 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChannelInfo, D>
4974 for &ChannelInfo
4975 {
4976 unsafe fn encode(
4977 self,
4978 encoder: &mut fidl::encoding::Encoder<'_, D>,
4979 offset: usize,
4980 mut depth: fidl::encoding::Depth,
4981 ) -> fidl::Result<()> {
4982 encoder.debug_check_bounds::<ChannelInfo>(offset);
4983 let max_ordinal: u64 = self.max_ordinal_present();
4985 encoder.write_num(max_ordinal, offset);
4986 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4987 if max_ordinal == 0 {
4989 return Ok(());
4990 }
4991 depth.increment()?;
4992 let envelope_size = 8;
4993 let bytes_len = max_ordinal as usize * envelope_size;
4994 #[allow(unused_variables)]
4995 let offset = encoder.out_of_line_offset(bytes_len);
4996 let mut _prev_end_offset: usize = 0;
4997 if 1 > max_ordinal {
4998 return Ok(());
4999 }
5000
5001 let cur_offset: usize = (1 - 1) * envelope_size;
5004
5005 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5007
5008 fidl::encoding::encode_in_envelope_optional::<u16, D>(
5013 self.index.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5014 encoder,
5015 offset + cur_offset,
5016 depth,
5017 )?;
5018
5019 _prev_end_offset = cur_offset + envelope_size;
5020 if 2 > max_ordinal {
5021 return Ok(());
5022 }
5023
5024 let cur_offset: usize = (2 - 1) * envelope_size;
5027
5028 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5030
5031 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<16>, D>(
5036 self.id.as_ref().map(
5037 <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow,
5038 ),
5039 encoder,
5040 offset + cur_offset,
5041 depth,
5042 )?;
5043
5044 _prev_end_offset = cur_offset + envelope_size;
5045 if 3 > max_ordinal {
5046 return Ok(());
5047 }
5048
5049 let cur_offset: usize = (3 - 1) * envelope_size;
5052
5053 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5055
5056 fidl::encoding::encode_in_envelope_optional::<i8, D>(
5061 self.max_transmit_power_dbm
5062 .as_ref()
5063 .map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
5064 encoder,
5065 offset + cur_offset,
5066 depth,
5067 )?;
5068
5069 _prev_end_offset = cur_offset + envelope_size;
5070 if 4 > max_ordinal {
5071 return Ok(());
5072 }
5073
5074 let cur_offset: usize = (4 - 1) * envelope_size;
5077
5078 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5080
5081 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5086 self.spectrum_center_frequency_hz
5087 .as_ref()
5088 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5089 encoder,
5090 offset + cur_offset,
5091 depth,
5092 )?;
5093
5094 _prev_end_offset = cur_offset + envelope_size;
5095 if 5 > max_ordinal {
5096 return Ok(());
5097 }
5098
5099 let cur_offset: usize = (5 - 1) * envelope_size;
5102
5103 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5105
5106 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5111 self.spectrum_bandwidth_hz
5112 .as_ref()
5113 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5114 encoder,
5115 offset + cur_offset,
5116 depth,
5117 )?;
5118
5119 _prev_end_offset = cur_offset + envelope_size;
5120 if 6 > max_ordinal {
5121 return Ok(());
5122 }
5123
5124 let cur_offset: usize = (6 - 1) * envelope_size;
5127
5128 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5130
5131 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5136 self.masked_by_regulatory_domain
5137 .as_ref()
5138 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5139 encoder,
5140 offset + cur_offset,
5141 depth,
5142 )?;
5143
5144 _prev_end_offset = cur_offset + envelope_size;
5145
5146 Ok(())
5147 }
5148 }
5149
5150 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChannelInfo {
5151 #[inline(always)]
5152 fn new_empty() -> Self {
5153 Self::default()
5154 }
5155
5156 unsafe fn decode(
5157 &mut self,
5158 decoder: &mut fidl::encoding::Decoder<'_, D>,
5159 offset: usize,
5160 mut depth: fidl::encoding::Depth,
5161 ) -> fidl::Result<()> {
5162 decoder.debug_check_bounds::<Self>(offset);
5163 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5164 None => return Err(fidl::Error::NotNullable),
5165 Some(len) => len,
5166 };
5167 if len == 0 {
5169 return Ok(());
5170 };
5171 depth.increment()?;
5172 let envelope_size = 8;
5173 let bytes_len = len * envelope_size;
5174 let offset = decoder.out_of_line_offset(bytes_len)?;
5175 let mut _next_ordinal_to_read = 0;
5177 let mut next_offset = offset;
5178 let end_offset = offset + bytes_len;
5179 _next_ordinal_to_read += 1;
5180 if next_offset >= end_offset {
5181 return Ok(());
5182 }
5183
5184 while _next_ordinal_to_read < 1 {
5186 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5187 _next_ordinal_to_read += 1;
5188 next_offset += envelope_size;
5189 }
5190
5191 let next_out_of_line = decoder.next_out_of_line();
5192 let handles_before = decoder.remaining_handles();
5193 if let Some((inlined, num_bytes, num_handles)) =
5194 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5195 {
5196 let member_inline_size =
5197 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5198 if inlined != (member_inline_size <= 4) {
5199 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5200 }
5201 let inner_offset;
5202 let mut inner_depth = depth.clone();
5203 if inlined {
5204 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5205 inner_offset = next_offset;
5206 } else {
5207 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5208 inner_depth.increment()?;
5209 }
5210 let val_ref = self.index.get_or_insert_with(|| fidl::new_empty!(u16, D));
5211 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5212 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5213 {
5214 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5215 }
5216 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5217 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5218 }
5219 }
5220
5221 next_offset += envelope_size;
5222 _next_ordinal_to_read += 1;
5223 if next_offset >= end_offset {
5224 return Ok(());
5225 }
5226
5227 while _next_ordinal_to_read < 2 {
5229 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5230 _next_ordinal_to_read += 1;
5231 next_offset += envelope_size;
5232 }
5233
5234 let next_out_of_line = decoder.next_out_of_line();
5235 let handles_before = decoder.remaining_handles();
5236 if let Some((inlined, num_bytes, num_handles)) =
5237 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5238 {
5239 let member_inline_size =
5240 <fidl::encoding::BoundedString<16> as fidl::encoding::TypeMarker>::inline_size(
5241 decoder.context,
5242 );
5243 if inlined != (member_inline_size <= 4) {
5244 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5245 }
5246 let inner_offset;
5247 let mut inner_depth = depth.clone();
5248 if inlined {
5249 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5250 inner_offset = next_offset;
5251 } else {
5252 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5253 inner_depth.increment()?;
5254 }
5255 let val_ref = self
5256 .id
5257 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<16>, D));
5258 fidl::decode!(
5259 fidl::encoding::BoundedString<16>,
5260 D,
5261 val_ref,
5262 decoder,
5263 inner_offset,
5264 inner_depth
5265 )?;
5266 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5267 {
5268 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5269 }
5270 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5271 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5272 }
5273 }
5274
5275 next_offset += envelope_size;
5276 _next_ordinal_to_read += 1;
5277 if next_offset >= end_offset {
5278 return Ok(());
5279 }
5280
5281 while _next_ordinal_to_read < 3 {
5283 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5284 _next_ordinal_to_read += 1;
5285 next_offset += envelope_size;
5286 }
5287
5288 let next_out_of_line = decoder.next_out_of_line();
5289 let handles_before = decoder.remaining_handles();
5290 if let Some((inlined, num_bytes, num_handles)) =
5291 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5292 {
5293 let member_inline_size =
5294 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5295 if inlined != (member_inline_size <= 4) {
5296 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5297 }
5298 let inner_offset;
5299 let mut inner_depth = depth.clone();
5300 if inlined {
5301 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5302 inner_offset = next_offset;
5303 } else {
5304 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5305 inner_depth.increment()?;
5306 }
5307 let val_ref =
5308 self.max_transmit_power_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
5309 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
5310 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5311 {
5312 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5313 }
5314 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5315 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5316 }
5317 }
5318
5319 next_offset += envelope_size;
5320 _next_ordinal_to_read += 1;
5321 if next_offset >= end_offset {
5322 return Ok(());
5323 }
5324
5325 while _next_ordinal_to_read < 4 {
5327 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5328 _next_ordinal_to_read += 1;
5329 next_offset += envelope_size;
5330 }
5331
5332 let next_out_of_line = decoder.next_out_of_line();
5333 let handles_before = decoder.remaining_handles();
5334 if let Some((inlined, num_bytes, num_handles)) =
5335 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5336 {
5337 let member_inline_size =
5338 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5339 if inlined != (member_inline_size <= 4) {
5340 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5341 }
5342 let inner_offset;
5343 let mut inner_depth = depth.clone();
5344 if inlined {
5345 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5346 inner_offset = next_offset;
5347 } else {
5348 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5349 inner_depth.increment()?;
5350 }
5351 let val_ref = self
5352 .spectrum_center_frequency_hz
5353 .get_or_insert_with(|| fidl::new_empty!(u64, D));
5354 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5355 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5356 {
5357 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5358 }
5359 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5360 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5361 }
5362 }
5363
5364 next_offset += envelope_size;
5365 _next_ordinal_to_read += 1;
5366 if next_offset >= end_offset {
5367 return Ok(());
5368 }
5369
5370 while _next_ordinal_to_read < 5 {
5372 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5373 _next_ordinal_to_read += 1;
5374 next_offset += envelope_size;
5375 }
5376
5377 let next_out_of_line = decoder.next_out_of_line();
5378 let handles_before = decoder.remaining_handles();
5379 if let Some((inlined, num_bytes, num_handles)) =
5380 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5381 {
5382 let member_inline_size =
5383 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5384 if inlined != (member_inline_size <= 4) {
5385 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5386 }
5387 let inner_offset;
5388 let mut inner_depth = depth.clone();
5389 if inlined {
5390 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5391 inner_offset = next_offset;
5392 } else {
5393 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5394 inner_depth.increment()?;
5395 }
5396 let val_ref =
5397 self.spectrum_bandwidth_hz.get_or_insert_with(|| fidl::new_empty!(u64, D));
5398 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5399 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5400 {
5401 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5402 }
5403 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5404 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5405 }
5406 }
5407
5408 next_offset += envelope_size;
5409 _next_ordinal_to_read += 1;
5410 if next_offset >= end_offset {
5411 return Ok(());
5412 }
5413
5414 while _next_ordinal_to_read < 6 {
5416 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5417 _next_ordinal_to_read += 1;
5418 next_offset += envelope_size;
5419 }
5420
5421 let next_out_of_line = decoder.next_out_of_line();
5422 let handles_before = decoder.remaining_handles();
5423 if let Some((inlined, num_bytes, num_handles)) =
5424 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5425 {
5426 let member_inline_size =
5427 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5428 if inlined != (member_inline_size <= 4) {
5429 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5430 }
5431 let inner_offset;
5432 let mut inner_depth = depth.clone();
5433 if inlined {
5434 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5435 inner_offset = next_offset;
5436 } else {
5437 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5438 inner_depth.increment()?;
5439 }
5440 let val_ref = self
5441 .masked_by_regulatory_domain
5442 .get_or_insert_with(|| fidl::new_empty!(bool, D));
5443 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5444 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5445 {
5446 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5447 }
5448 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5449 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5450 }
5451 }
5452
5453 next_offset += envelope_size;
5454
5455 while next_offset < end_offset {
5457 _next_ordinal_to_read += 1;
5458 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5459 next_offset += envelope_size;
5460 }
5461
5462 Ok(())
5463 }
5464 }
5465
5466 impl Dhcp6PdInfo {
5467 #[inline(always)]
5468 fn max_ordinal_present(&self) -> u64 {
5469 if let Some(_) = self.hashed_pd_prefix {
5470 return 3;
5471 }
5472 if let Some(_) = self.pd_processed_ra_info {
5473 return 2;
5474 }
5475 if let Some(_) = self.dhcp6pd_state {
5476 return 1;
5477 }
5478 0
5479 }
5480 }
5481
5482 impl fidl::encoding::ValueTypeMarker for Dhcp6PdInfo {
5483 type Borrowed<'a> = &'a Self;
5484 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5485 value
5486 }
5487 }
5488
5489 unsafe impl fidl::encoding::TypeMarker for Dhcp6PdInfo {
5490 type Owned = Self;
5491
5492 #[inline(always)]
5493 fn inline_align(_context: fidl::encoding::Context) -> usize {
5494 8
5495 }
5496
5497 #[inline(always)]
5498 fn inline_size(_context: fidl::encoding::Context) -> usize {
5499 16
5500 }
5501 }
5502
5503 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Dhcp6PdInfo, D>
5504 for &Dhcp6PdInfo
5505 {
5506 unsafe fn encode(
5507 self,
5508 encoder: &mut fidl::encoding::Encoder<'_, D>,
5509 offset: usize,
5510 mut depth: fidl::encoding::Depth,
5511 ) -> fidl::Result<()> {
5512 encoder.debug_check_bounds::<Dhcp6PdInfo>(offset);
5513 let max_ordinal: u64 = self.max_ordinal_present();
5515 encoder.write_num(max_ordinal, offset);
5516 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5517 if max_ordinal == 0 {
5519 return Ok(());
5520 }
5521 depth.increment()?;
5522 let envelope_size = 8;
5523 let bytes_len = max_ordinal as usize * envelope_size;
5524 #[allow(unused_variables)]
5525 let offset = encoder.out_of_line_offset(bytes_len);
5526 let mut _prev_end_offset: usize = 0;
5527 if 1 > max_ordinal {
5528 return Ok(());
5529 }
5530
5531 let cur_offset: usize = (1 - 1) * envelope_size;
5534
5535 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5537
5538 fidl::encoding::encode_in_envelope_optional::<Dhcp6PdState, D>(
5543 self.dhcp6pd_state
5544 .as_ref()
5545 .map(<Dhcp6PdState as fidl::encoding::ValueTypeMarker>::borrow),
5546 encoder,
5547 offset + cur_offset,
5548 depth,
5549 )?;
5550
5551 _prev_end_offset = cur_offset + envelope_size;
5552 if 2 > max_ordinal {
5553 return Ok(());
5554 }
5555
5556 let cur_offset: usize = (2 - 1) * envelope_size;
5559
5560 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5562
5563 fidl::encoding::encode_in_envelope_optional::<PdProcessedRaInfo, D>(
5568 self.pd_processed_ra_info
5569 .as_ref()
5570 .map(<PdProcessedRaInfo as fidl::encoding::ValueTypeMarker>::borrow),
5571 encoder,
5572 offset + cur_offset,
5573 depth,
5574 )?;
5575
5576 _prev_end_offset = cur_offset + envelope_size;
5577 if 3 > max_ordinal {
5578 return Ok(());
5579 }
5580
5581 let cur_offset: usize = (3 - 1) * envelope_size;
5584
5585 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5587
5588 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
5593 self.hashed_pd_prefix.as_ref().map(
5594 <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
5595 ),
5596 encoder,
5597 offset + cur_offset,
5598 depth,
5599 )?;
5600
5601 _prev_end_offset = cur_offset + envelope_size;
5602
5603 Ok(())
5604 }
5605 }
5606
5607 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dhcp6PdInfo {
5608 #[inline(always)]
5609 fn new_empty() -> Self {
5610 Self::default()
5611 }
5612
5613 unsafe fn decode(
5614 &mut self,
5615 decoder: &mut fidl::encoding::Decoder<'_, D>,
5616 offset: usize,
5617 mut depth: fidl::encoding::Depth,
5618 ) -> fidl::Result<()> {
5619 decoder.debug_check_bounds::<Self>(offset);
5620 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5621 None => return Err(fidl::Error::NotNullable),
5622 Some(len) => len,
5623 };
5624 if len == 0 {
5626 return Ok(());
5627 };
5628 depth.increment()?;
5629 let envelope_size = 8;
5630 let bytes_len = len * envelope_size;
5631 let offset = decoder.out_of_line_offset(bytes_len)?;
5632 let mut _next_ordinal_to_read = 0;
5634 let mut next_offset = offset;
5635 let end_offset = offset + bytes_len;
5636 _next_ordinal_to_read += 1;
5637 if next_offset >= end_offset {
5638 return Ok(());
5639 }
5640
5641 while _next_ordinal_to_read < 1 {
5643 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5644 _next_ordinal_to_read += 1;
5645 next_offset += envelope_size;
5646 }
5647
5648 let next_out_of_line = decoder.next_out_of_line();
5649 let handles_before = decoder.remaining_handles();
5650 if let Some((inlined, num_bytes, num_handles)) =
5651 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5652 {
5653 let member_inline_size =
5654 <Dhcp6PdState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5655 if inlined != (member_inline_size <= 4) {
5656 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5657 }
5658 let inner_offset;
5659 let mut inner_depth = depth.clone();
5660 if inlined {
5661 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5662 inner_offset = next_offset;
5663 } else {
5664 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5665 inner_depth.increment()?;
5666 }
5667 let val_ref =
5668 self.dhcp6pd_state.get_or_insert_with(|| fidl::new_empty!(Dhcp6PdState, D));
5669 fidl::decode!(Dhcp6PdState, D, val_ref, decoder, inner_offset, inner_depth)?;
5670 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5671 {
5672 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5673 }
5674 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5675 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5676 }
5677 }
5678
5679 next_offset += envelope_size;
5680 _next_ordinal_to_read += 1;
5681 if next_offset >= end_offset {
5682 return Ok(());
5683 }
5684
5685 while _next_ordinal_to_read < 2 {
5687 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5688 _next_ordinal_to_read += 1;
5689 next_offset += envelope_size;
5690 }
5691
5692 let next_out_of_line = decoder.next_out_of_line();
5693 let handles_before = decoder.remaining_handles();
5694 if let Some((inlined, num_bytes, num_handles)) =
5695 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5696 {
5697 let member_inline_size =
5698 <PdProcessedRaInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5699 if inlined != (member_inline_size <= 4) {
5700 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5701 }
5702 let inner_offset;
5703 let mut inner_depth = depth.clone();
5704 if inlined {
5705 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5706 inner_offset = next_offset;
5707 } else {
5708 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5709 inner_depth.increment()?;
5710 }
5711 let val_ref = self
5712 .pd_processed_ra_info
5713 .get_or_insert_with(|| fidl::new_empty!(PdProcessedRaInfo, D));
5714 fidl::decode!(PdProcessedRaInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
5715 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5716 {
5717 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5718 }
5719 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5720 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5721 }
5722 }
5723
5724 next_offset += envelope_size;
5725 _next_ordinal_to_read += 1;
5726 if next_offset >= end_offset {
5727 return Ok(());
5728 }
5729
5730 while _next_ordinal_to_read < 3 {
5732 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5733 _next_ordinal_to_read += 1;
5734 next_offset += envelope_size;
5735 }
5736
5737 let next_out_of_line = decoder.next_out_of_line();
5738 let handles_before = decoder.remaining_handles();
5739 if let Some((inlined, num_bytes, num_handles)) =
5740 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5741 {
5742 let member_inline_size =
5743 <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
5744 decoder.context,
5745 );
5746 if inlined != (member_inline_size <= 4) {
5747 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5748 }
5749 let inner_offset;
5750 let mut inner_depth = depth.clone();
5751 if inlined {
5752 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5753 inner_offset = next_offset;
5754 } else {
5755 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5756 inner_depth.increment()?;
5757 }
5758 let val_ref = self
5759 .hashed_pd_prefix
5760 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
5761 fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
5762 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5763 {
5764 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5765 }
5766 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5767 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5768 }
5769 }
5770
5771 next_offset += envelope_size;
5772
5773 while next_offset < end_offset {
5775 _next_ordinal_to_read += 1;
5776 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5777 next_offset += envelope_size;
5778 }
5779
5780 Ok(())
5781 }
5782 }
5783
5784 impl DnssdCounters {
5785 #[inline(always)]
5786 fn max_ordinal_present(&self) -> u64 {
5787 if let Some(_) = self.upstream_dns_counters {
5788 return 8;
5789 }
5790 if let Some(_) = self.resolved_by_srp {
5791 return 7;
5792 }
5793 if let Some(_) = self.other_response {
5794 return 6;
5795 }
5796 if let Some(_) = self.not_implemented_response {
5797 return 5;
5798 }
5799 if let Some(_) = self.name_error_response {
5800 return 4;
5801 }
5802 if let Some(_) = self.format_error_response {
5803 return 3;
5804 }
5805 if let Some(_) = self.server_failure_response {
5806 return 2;
5807 }
5808 if let Some(_) = self.success_response {
5809 return 1;
5810 }
5811 0
5812 }
5813 }
5814
5815 impl fidl::encoding::ValueTypeMarker for DnssdCounters {
5816 type Borrowed<'a> = &'a Self;
5817 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5818 value
5819 }
5820 }
5821
5822 unsafe impl fidl::encoding::TypeMarker for DnssdCounters {
5823 type Owned = Self;
5824
5825 #[inline(always)]
5826 fn inline_align(_context: fidl::encoding::Context) -> usize {
5827 8
5828 }
5829
5830 #[inline(always)]
5831 fn inline_size(_context: fidl::encoding::Context) -> usize {
5832 16
5833 }
5834 }
5835
5836 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DnssdCounters, D>
5837 for &DnssdCounters
5838 {
5839 unsafe fn encode(
5840 self,
5841 encoder: &mut fidl::encoding::Encoder<'_, D>,
5842 offset: usize,
5843 mut depth: fidl::encoding::Depth,
5844 ) -> fidl::Result<()> {
5845 encoder.debug_check_bounds::<DnssdCounters>(offset);
5846 let max_ordinal: u64 = self.max_ordinal_present();
5848 encoder.write_num(max_ordinal, offset);
5849 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5850 if max_ordinal == 0 {
5852 return Ok(());
5853 }
5854 depth.increment()?;
5855 let envelope_size = 8;
5856 let bytes_len = max_ordinal as usize * envelope_size;
5857 #[allow(unused_variables)]
5858 let offset = encoder.out_of_line_offset(bytes_len);
5859 let mut _prev_end_offset: usize = 0;
5860 if 1 > max_ordinal {
5861 return Ok(());
5862 }
5863
5864 let cur_offset: usize = (1 - 1) * envelope_size;
5867
5868 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5870
5871 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5876 self.success_response
5877 .as_ref()
5878 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5879 encoder,
5880 offset + cur_offset,
5881 depth,
5882 )?;
5883
5884 _prev_end_offset = cur_offset + envelope_size;
5885 if 2 > max_ordinal {
5886 return Ok(());
5887 }
5888
5889 let cur_offset: usize = (2 - 1) * envelope_size;
5892
5893 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5895
5896 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5901 self.server_failure_response
5902 .as_ref()
5903 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5904 encoder,
5905 offset + cur_offset,
5906 depth,
5907 )?;
5908
5909 _prev_end_offset = cur_offset + envelope_size;
5910 if 3 > max_ordinal {
5911 return Ok(());
5912 }
5913
5914 let cur_offset: usize = (3 - 1) * envelope_size;
5917
5918 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5920
5921 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5926 self.format_error_response
5927 .as_ref()
5928 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5929 encoder,
5930 offset + cur_offset,
5931 depth,
5932 )?;
5933
5934 _prev_end_offset = cur_offset + envelope_size;
5935 if 4 > max_ordinal {
5936 return Ok(());
5937 }
5938
5939 let cur_offset: usize = (4 - 1) * envelope_size;
5942
5943 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5945
5946 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5951 self.name_error_response
5952 .as_ref()
5953 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5954 encoder,
5955 offset + cur_offset,
5956 depth,
5957 )?;
5958
5959 _prev_end_offset = cur_offset + envelope_size;
5960 if 5 > max_ordinal {
5961 return Ok(());
5962 }
5963
5964 let cur_offset: usize = (5 - 1) * envelope_size;
5967
5968 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5970
5971 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5976 self.not_implemented_response
5977 .as_ref()
5978 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5979 encoder,
5980 offset + cur_offset,
5981 depth,
5982 )?;
5983
5984 _prev_end_offset = cur_offset + envelope_size;
5985 if 6 > max_ordinal {
5986 return Ok(());
5987 }
5988
5989 let cur_offset: usize = (6 - 1) * envelope_size;
5992
5993 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5995
5996 fidl::encoding::encode_in_envelope_optional::<u32, D>(
6001 self.other_response.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6002 encoder,
6003 offset + cur_offset,
6004 depth,
6005 )?;
6006
6007 _prev_end_offset = cur_offset + envelope_size;
6008 if 7 > max_ordinal {
6009 return Ok(());
6010 }
6011
6012 let cur_offset: usize = (7 - 1) * envelope_size;
6015
6016 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6018
6019 fidl::encoding::encode_in_envelope_optional::<u32, D>(
6024 self.resolved_by_srp.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6025 encoder,
6026 offset + cur_offset,
6027 depth,
6028 )?;
6029
6030 _prev_end_offset = cur_offset + envelope_size;
6031 if 8 > max_ordinal {
6032 return Ok(());
6033 }
6034
6035 let cur_offset: usize = (8 - 1) * envelope_size;
6038
6039 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6041
6042 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsCounters, D>(
6047 self.upstream_dns_counters
6048 .as_ref()
6049 .map(<UpstreamDnsCounters as fidl::encoding::ValueTypeMarker>::borrow),
6050 encoder,
6051 offset + cur_offset,
6052 depth,
6053 )?;
6054
6055 _prev_end_offset = cur_offset + envelope_size;
6056
6057 Ok(())
6058 }
6059 }
6060
6061 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DnssdCounters {
6062 #[inline(always)]
6063 fn new_empty() -> Self {
6064 Self::default()
6065 }
6066
6067 unsafe fn decode(
6068 &mut self,
6069 decoder: &mut fidl::encoding::Decoder<'_, D>,
6070 offset: usize,
6071 mut depth: fidl::encoding::Depth,
6072 ) -> fidl::Result<()> {
6073 decoder.debug_check_bounds::<Self>(offset);
6074 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6075 None => return Err(fidl::Error::NotNullable),
6076 Some(len) => len,
6077 };
6078 if len == 0 {
6080 return Ok(());
6081 };
6082 depth.increment()?;
6083 let envelope_size = 8;
6084 let bytes_len = len * envelope_size;
6085 let offset = decoder.out_of_line_offset(bytes_len)?;
6086 let mut _next_ordinal_to_read = 0;
6088 let mut next_offset = offset;
6089 let end_offset = offset + bytes_len;
6090 _next_ordinal_to_read += 1;
6091 if next_offset >= end_offset {
6092 return Ok(());
6093 }
6094
6095 while _next_ordinal_to_read < 1 {
6097 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6098 _next_ordinal_to_read += 1;
6099 next_offset += envelope_size;
6100 }
6101
6102 let next_out_of_line = decoder.next_out_of_line();
6103 let handles_before = decoder.remaining_handles();
6104 if let Some((inlined, num_bytes, num_handles)) =
6105 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6106 {
6107 let member_inline_size =
6108 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6109 if inlined != (member_inline_size <= 4) {
6110 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6111 }
6112 let inner_offset;
6113 let mut inner_depth = depth.clone();
6114 if inlined {
6115 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6116 inner_offset = next_offset;
6117 } else {
6118 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6119 inner_depth.increment()?;
6120 }
6121 let val_ref = self.success_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
6122 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6123 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6124 {
6125 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6126 }
6127 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6128 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6129 }
6130 }
6131
6132 next_offset += envelope_size;
6133 _next_ordinal_to_read += 1;
6134 if next_offset >= end_offset {
6135 return Ok(());
6136 }
6137
6138 while _next_ordinal_to_read < 2 {
6140 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6141 _next_ordinal_to_read += 1;
6142 next_offset += envelope_size;
6143 }
6144
6145 let next_out_of_line = decoder.next_out_of_line();
6146 let handles_before = decoder.remaining_handles();
6147 if let Some((inlined, num_bytes, num_handles)) =
6148 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6149 {
6150 let member_inline_size =
6151 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6152 if inlined != (member_inline_size <= 4) {
6153 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6154 }
6155 let inner_offset;
6156 let mut inner_depth = depth.clone();
6157 if inlined {
6158 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6159 inner_offset = next_offset;
6160 } else {
6161 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6162 inner_depth.increment()?;
6163 }
6164 let val_ref =
6165 self.server_failure_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
6166 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6167 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6168 {
6169 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6170 }
6171 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6172 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6173 }
6174 }
6175
6176 next_offset += envelope_size;
6177 _next_ordinal_to_read += 1;
6178 if next_offset >= end_offset {
6179 return Ok(());
6180 }
6181
6182 while _next_ordinal_to_read < 3 {
6184 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6185 _next_ordinal_to_read += 1;
6186 next_offset += envelope_size;
6187 }
6188
6189 let next_out_of_line = decoder.next_out_of_line();
6190 let handles_before = decoder.remaining_handles();
6191 if let Some((inlined, num_bytes, num_handles)) =
6192 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6193 {
6194 let member_inline_size =
6195 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6196 if inlined != (member_inline_size <= 4) {
6197 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6198 }
6199 let inner_offset;
6200 let mut inner_depth = depth.clone();
6201 if inlined {
6202 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6203 inner_offset = next_offset;
6204 } else {
6205 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6206 inner_depth.increment()?;
6207 }
6208 let val_ref =
6209 self.format_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
6210 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6211 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6212 {
6213 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6214 }
6215 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6216 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6217 }
6218 }
6219
6220 next_offset += envelope_size;
6221 _next_ordinal_to_read += 1;
6222 if next_offset >= end_offset {
6223 return Ok(());
6224 }
6225
6226 while _next_ordinal_to_read < 4 {
6228 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6229 _next_ordinal_to_read += 1;
6230 next_offset += envelope_size;
6231 }
6232
6233 let next_out_of_line = decoder.next_out_of_line();
6234 let handles_before = decoder.remaining_handles();
6235 if let Some((inlined, num_bytes, num_handles)) =
6236 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6237 {
6238 let member_inline_size =
6239 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6240 if inlined != (member_inline_size <= 4) {
6241 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6242 }
6243 let inner_offset;
6244 let mut inner_depth = depth.clone();
6245 if inlined {
6246 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6247 inner_offset = next_offset;
6248 } else {
6249 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6250 inner_depth.increment()?;
6251 }
6252 let val_ref =
6253 self.name_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
6254 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6255 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6256 {
6257 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6258 }
6259 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6260 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6261 }
6262 }
6263
6264 next_offset += envelope_size;
6265 _next_ordinal_to_read += 1;
6266 if next_offset >= end_offset {
6267 return Ok(());
6268 }
6269
6270 while _next_ordinal_to_read < 5 {
6272 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6273 _next_ordinal_to_read += 1;
6274 next_offset += envelope_size;
6275 }
6276
6277 let next_out_of_line = decoder.next_out_of_line();
6278 let handles_before = decoder.remaining_handles();
6279 if let Some((inlined, num_bytes, num_handles)) =
6280 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6281 {
6282 let member_inline_size =
6283 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6284 if inlined != (member_inline_size <= 4) {
6285 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6286 }
6287 let inner_offset;
6288 let mut inner_depth = depth.clone();
6289 if inlined {
6290 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6291 inner_offset = next_offset;
6292 } else {
6293 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6294 inner_depth.increment()?;
6295 }
6296 let val_ref =
6297 self.not_implemented_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
6298 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6299 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6300 {
6301 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6302 }
6303 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6304 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6305 }
6306 }
6307
6308 next_offset += envelope_size;
6309 _next_ordinal_to_read += 1;
6310 if next_offset >= end_offset {
6311 return Ok(());
6312 }
6313
6314 while _next_ordinal_to_read < 6 {
6316 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6317 _next_ordinal_to_read += 1;
6318 next_offset += envelope_size;
6319 }
6320
6321 let next_out_of_line = decoder.next_out_of_line();
6322 let handles_before = decoder.remaining_handles();
6323 if let Some((inlined, num_bytes, num_handles)) =
6324 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6325 {
6326 let member_inline_size =
6327 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6328 if inlined != (member_inline_size <= 4) {
6329 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6330 }
6331 let inner_offset;
6332 let mut inner_depth = depth.clone();
6333 if inlined {
6334 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6335 inner_offset = next_offset;
6336 } else {
6337 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6338 inner_depth.increment()?;
6339 }
6340 let val_ref = self.other_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
6341 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6342 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6343 {
6344 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6345 }
6346 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6347 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6348 }
6349 }
6350
6351 next_offset += envelope_size;
6352 _next_ordinal_to_read += 1;
6353 if next_offset >= end_offset {
6354 return Ok(());
6355 }
6356
6357 while _next_ordinal_to_read < 7 {
6359 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6360 _next_ordinal_to_read += 1;
6361 next_offset += envelope_size;
6362 }
6363
6364 let next_out_of_line = decoder.next_out_of_line();
6365 let handles_before = decoder.remaining_handles();
6366 if let Some((inlined, num_bytes, num_handles)) =
6367 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6368 {
6369 let member_inline_size =
6370 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6371 if inlined != (member_inline_size <= 4) {
6372 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6373 }
6374 let inner_offset;
6375 let mut inner_depth = depth.clone();
6376 if inlined {
6377 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6378 inner_offset = next_offset;
6379 } else {
6380 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6381 inner_depth.increment()?;
6382 }
6383 let val_ref = self.resolved_by_srp.get_or_insert_with(|| fidl::new_empty!(u32, D));
6384 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6385 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6386 {
6387 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6388 }
6389 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6390 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6391 }
6392 }
6393
6394 next_offset += envelope_size;
6395 _next_ordinal_to_read += 1;
6396 if next_offset >= end_offset {
6397 return Ok(());
6398 }
6399
6400 while _next_ordinal_to_read < 8 {
6402 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6403 _next_ordinal_to_read += 1;
6404 next_offset += envelope_size;
6405 }
6406
6407 let next_out_of_line = decoder.next_out_of_line();
6408 let handles_before = decoder.remaining_handles();
6409 if let Some((inlined, num_bytes, num_handles)) =
6410 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6411 {
6412 let member_inline_size =
6413 <UpstreamDnsCounters as fidl::encoding::TypeMarker>::inline_size(
6414 decoder.context,
6415 );
6416 if inlined != (member_inline_size <= 4) {
6417 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6418 }
6419 let inner_offset;
6420 let mut inner_depth = depth.clone();
6421 if inlined {
6422 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6423 inner_offset = next_offset;
6424 } else {
6425 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6426 inner_depth.increment()?;
6427 }
6428 let val_ref = self
6429 .upstream_dns_counters
6430 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsCounters, D));
6431 fidl::decode!(UpstreamDnsCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
6432 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6433 {
6434 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6435 }
6436 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6437 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6438 }
6439 }
6440
6441 next_offset += envelope_size;
6442
6443 while next_offset < end_offset {
6445 _next_ordinal_to_read += 1;
6446 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6447 next_offset += envelope_size;
6448 }
6449
6450 Ok(())
6451 }
6452 }
6453
6454 impl ExternalRoute {
6455 #[inline(always)]
6456 fn max_ordinal_present(&self) -> u64 {
6457 if let Some(_) = self.stable {
6458 return 3;
6459 }
6460 if let Some(_) = self.route_preference {
6461 return 2;
6462 }
6463 if let Some(_) = self.subnet {
6464 return 1;
6465 }
6466 0
6467 }
6468 }
6469
6470 impl fidl::encoding::ValueTypeMarker for ExternalRoute {
6471 type Borrowed<'a> = &'a Self;
6472 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6473 value
6474 }
6475 }
6476
6477 unsafe impl fidl::encoding::TypeMarker for ExternalRoute {
6478 type Owned = Self;
6479
6480 #[inline(always)]
6481 fn inline_align(_context: fidl::encoding::Context) -> usize {
6482 8
6483 }
6484
6485 #[inline(always)]
6486 fn inline_size(_context: fidl::encoding::Context) -> usize {
6487 16
6488 }
6489 }
6490
6491 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExternalRoute, D>
6492 for &ExternalRoute
6493 {
6494 unsafe fn encode(
6495 self,
6496 encoder: &mut fidl::encoding::Encoder<'_, D>,
6497 offset: usize,
6498 mut depth: fidl::encoding::Depth,
6499 ) -> fidl::Result<()> {
6500 encoder.debug_check_bounds::<ExternalRoute>(offset);
6501 let max_ordinal: u64 = self.max_ordinal_present();
6503 encoder.write_num(max_ordinal, offset);
6504 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6505 if max_ordinal == 0 {
6507 return Ok(());
6508 }
6509 depth.increment()?;
6510 let envelope_size = 8;
6511 let bytes_len = max_ordinal as usize * envelope_size;
6512 #[allow(unused_variables)]
6513 let offset = encoder.out_of_line_offset(bytes_len);
6514 let mut _prev_end_offset: usize = 0;
6515 if 1 > max_ordinal {
6516 return Ok(());
6517 }
6518
6519 let cur_offset: usize = (1 - 1) * envelope_size;
6522
6523 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6525
6526 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>(
6531 self.subnet.as_ref().map(<fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow),
6532 encoder, offset + cur_offset, depth
6533 )?;
6534
6535 _prev_end_offset = cur_offset + envelope_size;
6536 if 2 > max_ordinal {
6537 return Ok(());
6538 }
6539
6540 let cur_offset: usize = (2 - 1) * envelope_size;
6543
6544 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6546
6547 fidl::encoding::encode_in_envelope_optional::<RoutePreference, D>(
6552 self.route_preference
6553 .as_ref()
6554 .map(<RoutePreference as fidl::encoding::ValueTypeMarker>::borrow),
6555 encoder,
6556 offset + cur_offset,
6557 depth,
6558 )?;
6559
6560 _prev_end_offset = cur_offset + envelope_size;
6561 if 3 > max_ordinal {
6562 return Ok(());
6563 }
6564
6565 let cur_offset: usize = (3 - 1) * envelope_size;
6568
6569 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6571
6572 fidl::encoding::encode_in_envelope_optional::<bool, D>(
6577 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6578 encoder,
6579 offset + cur_offset,
6580 depth,
6581 )?;
6582
6583 _prev_end_offset = cur_offset + envelope_size;
6584
6585 Ok(())
6586 }
6587 }
6588
6589 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExternalRoute {
6590 #[inline(always)]
6591 fn new_empty() -> Self {
6592 Self::default()
6593 }
6594
6595 unsafe fn decode(
6596 &mut self,
6597 decoder: &mut fidl::encoding::Decoder<'_, D>,
6598 offset: usize,
6599 mut depth: fidl::encoding::Depth,
6600 ) -> fidl::Result<()> {
6601 decoder.debug_check_bounds::<Self>(offset);
6602 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6603 None => return Err(fidl::Error::NotNullable),
6604 Some(len) => len,
6605 };
6606 if len == 0 {
6608 return Ok(());
6609 };
6610 depth.increment()?;
6611 let envelope_size = 8;
6612 let bytes_len = len * envelope_size;
6613 let offset = decoder.out_of_line_offset(bytes_len)?;
6614 let mut _next_ordinal_to_read = 0;
6616 let mut next_offset = offset;
6617 let end_offset = offset + bytes_len;
6618 _next_ordinal_to_read += 1;
6619 if next_offset >= end_offset {
6620 return Ok(());
6621 }
6622
6623 while _next_ordinal_to_read < 1 {
6625 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6626 _next_ordinal_to_read += 1;
6627 next_offset += envelope_size;
6628 }
6629
6630 let next_out_of_line = decoder.next_out_of_line();
6631 let handles_before = decoder.remaining_handles();
6632 if let Some((inlined, num_bytes, num_handles)) =
6633 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6634 {
6635 let member_inline_size = <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6636 if inlined != (member_inline_size <= 4) {
6637 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6638 }
6639 let inner_offset;
6640 let mut inner_depth = depth.clone();
6641 if inlined {
6642 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6643 inner_offset = next_offset;
6644 } else {
6645 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6646 inner_depth.increment()?;
6647 }
6648 let val_ref = self.subnet.get_or_insert_with(|| {
6649 fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D)
6650 });
6651 fidl::decode!(
6652 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
6653 D,
6654 val_ref,
6655 decoder,
6656 inner_offset,
6657 inner_depth
6658 )?;
6659 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6660 {
6661 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6662 }
6663 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6664 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6665 }
6666 }
6667
6668 next_offset += envelope_size;
6669 _next_ordinal_to_read += 1;
6670 if next_offset >= end_offset {
6671 return Ok(());
6672 }
6673
6674 while _next_ordinal_to_read < 2 {
6676 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6677 _next_ordinal_to_read += 1;
6678 next_offset += envelope_size;
6679 }
6680
6681 let next_out_of_line = decoder.next_out_of_line();
6682 let handles_before = decoder.remaining_handles();
6683 if let Some((inlined, num_bytes, num_handles)) =
6684 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6685 {
6686 let member_inline_size =
6687 <RoutePreference as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6688 if inlined != (member_inline_size <= 4) {
6689 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6690 }
6691 let inner_offset;
6692 let mut inner_depth = depth.clone();
6693 if inlined {
6694 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6695 inner_offset = next_offset;
6696 } else {
6697 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6698 inner_depth.increment()?;
6699 }
6700 let val_ref = self
6701 .route_preference
6702 .get_or_insert_with(|| fidl::new_empty!(RoutePreference, D));
6703 fidl::decode!(RoutePreference, D, val_ref, decoder, inner_offset, inner_depth)?;
6704 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6705 {
6706 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6707 }
6708 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6709 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6710 }
6711 }
6712
6713 next_offset += envelope_size;
6714 _next_ordinal_to_read += 1;
6715 if next_offset >= end_offset {
6716 return Ok(());
6717 }
6718
6719 while _next_ordinal_to_read < 3 {
6721 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6722 _next_ordinal_to_read += 1;
6723 next_offset += envelope_size;
6724 }
6725
6726 let next_out_of_line = decoder.next_out_of_line();
6727 let handles_before = decoder.remaining_handles();
6728 if let Some((inlined, num_bytes, num_handles)) =
6729 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6730 {
6731 let member_inline_size =
6732 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6733 if inlined != (member_inline_size <= 4) {
6734 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6735 }
6736 let inner_offset;
6737 let mut inner_depth = depth.clone();
6738 if inlined {
6739 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6740 inner_offset = next_offset;
6741 } else {
6742 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6743 inner_depth.increment()?;
6744 }
6745 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
6746 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6747 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6748 {
6749 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6750 }
6751 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6752 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6753 }
6754 }
6755
6756 next_offset += envelope_size;
6757
6758 while next_offset < end_offset {
6760 _next_ordinal_to_read += 1;
6761 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6762 next_offset += envelope_size;
6763 }
6764
6765 Ok(())
6766 }
6767 }
6768
6769 impl JoinerCommissioningParams {
6770 #[inline(always)]
6771 fn max_ordinal_present(&self) -> u64 {
6772 if let Some(_) = self.vendor_data_string {
6773 return 6;
6774 }
6775 if let Some(_) = self.vendor_sw_version {
6776 return 5;
6777 }
6778 if let Some(_) = self.vendor_model {
6779 return 4;
6780 }
6781 if let Some(_) = self.vendor_name {
6782 return 3;
6783 }
6784 if let Some(_) = self.provisioning_url {
6785 return 2;
6786 }
6787 if let Some(_) = self.pskd {
6788 return 1;
6789 }
6790 0
6791 }
6792 }
6793
6794 impl fidl::encoding::ValueTypeMarker for JoinerCommissioningParams {
6795 type Borrowed<'a> = &'a Self;
6796 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6797 value
6798 }
6799 }
6800
6801 unsafe impl fidl::encoding::TypeMarker for JoinerCommissioningParams {
6802 type Owned = Self;
6803
6804 #[inline(always)]
6805 fn inline_align(_context: fidl::encoding::Context) -> usize {
6806 8
6807 }
6808
6809 #[inline(always)]
6810 fn inline_size(_context: fidl::encoding::Context) -> usize {
6811 16
6812 }
6813 }
6814
6815 unsafe impl<D: fidl::encoding::ResourceDialect>
6816 fidl::encoding::Encode<JoinerCommissioningParams, D> for &JoinerCommissioningParams
6817 {
6818 unsafe fn encode(
6819 self,
6820 encoder: &mut fidl::encoding::Encoder<'_, D>,
6821 offset: usize,
6822 mut depth: fidl::encoding::Depth,
6823 ) -> fidl::Result<()> {
6824 encoder.debug_check_bounds::<JoinerCommissioningParams>(offset);
6825 let max_ordinal: u64 = self.max_ordinal_present();
6827 encoder.write_num(max_ordinal, offset);
6828 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6829 if max_ordinal == 0 {
6831 return Ok(());
6832 }
6833 depth.increment()?;
6834 let envelope_size = 8;
6835 let bytes_len = max_ordinal as usize * envelope_size;
6836 #[allow(unused_variables)]
6837 let offset = encoder.out_of_line_offset(bytes_len);
6838 let mut _prev_end_offset: usize = 0;
6839 if 1 > max_ordinal {
6840 return Ok(());
6841 }
6842
6843 let cur_offset: usize = (1 - 1) * envelope_size;
6846
6847 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6849
6850 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
6855 self.pskd.as_ref().map(
6856 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
6857 ),
6858 encoder,
6859 offset + cur_offset,
6860 depth,
6861 )?;
6862
6863 _prev_end_offset = cur_offset + envelope_size;
6864 if 2 > max_ordinal {
6865 return Ok(());
6866 }
6867
6868 let cur_offset: usize = (2 - 1) * envelope_size;
6871
6872 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6874
6875 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
6880 self.provisioning_url.as_ref().map(
6881 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
6882 ),
6883 encoder,
6884 offset + cur_offset,
6885 depth,
6886 )?;
6887
6888 _prev_end_offset = cur_offset + envelope_size;
6889 if 3 > max_ordinal {
6890 return Ok(());
6891 }
6892
6893 let cur_offset: usize = (3 - 1) * envelope_size;
6896
6897 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6899
6900 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
6905 self.vendor_name.as_ref().map(
6906 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
6907 ),
6908 encoder,
6909 offset + cur_offset,
6910 depth,
6911 )?;
6912
6913 _prev_end_offset = cur_offset + envelope_size;
6914 if 4 > max_ordinal {
6915 return Ok(());
6916 }
6917
6918 let cur_offset: usize = (4 - 1) * envelope_size;
6921
6922 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6924
6925 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
6930 self.vendor_model.as_ref().map(
6931 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
6932 ),
6933 encoder,
6934 offset + cur_offset,
6935 depth,
6936 )?;
6937
6938 _prev_end_offset = cur_offset + envelope_size;
6939 if 5 > max_ordinal {
6940 return Ok(());
6941 }
6942
6943 let cur_offset: usize = (5 - 1) * envelope_size;
6946
6947 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6949
6950 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<16>, D>(
6955 self.vendor_sw_version.as_ref().map(
6956 <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow,
6957 ),
6958 encoder,
6959 offset + cur_offset,
6960 depth,
6961 )?;
6962
6963 _prev_end_offset = cur_offset + envelope_size;
6964 if 6 > max_ordinal {
6965 return Ok(());
6966 }
6967
6968 let cur_offset: usize = (6 - 1) * envelope_size;
6971
6972 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6974
6975 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
6980 self.vendor_data_string.as_ref().map(
6981 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
6982 ),
6983 encoder,
6984 offset + cur_offset,
6985 depth,
6986 )?;
6987
6988 _prev_end_offset = cur_offset + envelope_size;
6989
6990 Ok(())
6991 }
6992 }
6993
6994 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6995 for JoinerCommissioningParams
6996 {
6997 #[inline(always)]
6998 fn new_empty() -> Self {
6999 Self::default()
7000 }
7001
7002 unsafe fn decode(
7003 &mut self,
7004 decoder: &mut fidl::encoding::Decoder<'_, D>,
7005 offset: usize,
7006 mut depth: fidl::encoding::Depth,
7007 ) -> fidl::Result<()> {
7008 decoder.debug_check_bounds::<Self>(offset);
7009 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7010 None => return Err(fidl::Error::NotNullable),
7011 Some(len) => len,
7012 };
7013 if len == 0 {
7015 return Ok(());
7016 };
7017 depth.increment()?;
7018 let envelope_size = 8;
7019 let bytes_len = len * envelope_size;
7020 let offset = decoder.out_of_line_offset(bytes_len)?;
7021 let mut _next_ordinal_to_read = 0;
7023 let mut next_offset = offset;
7024 let end_offset = offset + bytes_len;
7025 _next_ordinal_to_read += 1;
7026 if next_offset >= end_offset {
7027 return Ok(());
7028 }
7029
7030 while _next_ordinal_to_read < 1 {
7032 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7033 _next_ordinal_to_read += 1;
7034 next_offset += envelope_size;
7035 }
7036
7037 let next_out_of_line = decoder.next_out_of_line();
7038 let handles_before = decoder.remaining_handles();
7039 if let Some((inlined, num_bytes, num_handles)) =
7040 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7041 {
7042 let member_inline_size =
7043 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
7044 decoder.context,
7045 );
7046 if inlined != (member_inline_size <= 4) {
7047 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7048 }
7049 let inner_offset;
7050 let mut inner_depth = depth.clone();
7051 if inlined {
7052 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7053 inner_offset = next_offset;
7054 } else {
7055 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7056 inner_depth.increment()?;
7057 }
7058 let val_ref = self
7059 .pskd
7060 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
7061 fidl::decode!(
7062 fidl::encoding::BoundedString<32>,
7063 D,
7064 val_ref,
7065 decoder,
7066 inner_offset,
7067 inner_depth
7068 )?;
7069 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7070 {
7071 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7072 }
7073 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7074 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7075 }
7076 }
7077
7078 next_offset += envelope_size;
7079 _next_ordinal_to_read += 1;
7080 if next_offset >= end_offset {
7081 return Ok(());
7082 }
7083
7084 while _next_ordinal_to_read < 2 {
7086 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7087 _next_ordinal_to_read += 1;
7088 next_offset += envelope_size;
7089 }
7090
7091 let next_out_of_line = decoder.next_out_of_line();
7092 let handles_before = decoder.remaining_handles();
7093 if let Some((inlined, num_bytes, num_handles)) =
7094 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7095 {
7096 let member_inline_size =
7097 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
7098 decoder.context,
7099 );
7100 if inlined != (member_inline_size <= 4) {
7101 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7102 }
7103 let inner_offset;
7104 let mut inner_depth = depth.clone();
7105 if inlined {
7106 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7107 inner_offset = next_offset;
7108 } else {
7109 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7110 inner_depth.increment()?;
7111 }
7112 let val_ref = self
7113 .provisioning_url
7114 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
7115 fidl::decode!(
7116 fidl::encoding::BoundedString<64>,
7117 D,
7118 val_ref,
7119 decoder,
7120 inner_offset,
7121 inner_depth
7122 )?;
7123 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7124 {
7125 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7126 }
7127 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7128 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7129 }
7130 }
7131
7132 next_offset += envelope_size;
7133 _next_ordinal_to_read += 1;
7134 if next_offset >= end_offset {
7135 return Ok(());
7136 }
7137
7138 while _next_ordinal_to_read < 3 {
7140 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7141 _next_ordinal_to_read += 1;
7142 next_offset += envelope_size;
7143 }
7144
7145 let next_out_of_line = decoder.next_out_of_line();
7146 let handles_before = decoder.remaining_handles();
7147 if let Some((inlined, num_bytes, num_handles)) =
7148 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7149 {
7150 let member_inline_size =
7151 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
7152 decoder.context,
7153 );
7154 if inlined != (member_inline_size <= 4) {
7155 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7156 }
7157 let inner_offset;
7158 let mut inner_depth = depth.clone();
7159 if inlined {
7160 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7161 inner_offset = next_offset;
7162 } else {
7163 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7164 inner_depth.increment()?;
7165 }
7166 let val_ref = self
7167 .vendor_name
7168 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
7169 fidl::decode!(
7170 fidl::encoding::BoundedString<32>,
7171 D,
7172 val_ref,
7173 decoder,
7174 inner_offset,
7175 inner_depth
7176 )?;
7177 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7178 {
7179 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7180 }
7181 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7182 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7183 }
7184 }
7185
7186 next_offset += envelope_size;
7187 _next_ordinal_to_read += 1;
7188 if next_offset >= end_offset {
7189 return Ok(());
7190 }
7191
7192 while _next_ordinal_to_read < 4 {
7194 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7195 _next_ordinal_to_read += 1;
7196 next_offset += envelope_size;
7197 }
7198
7199 let next_out_of_line = decoder.next_out_of_line();
7200 let handles_before = decoder.remaining_handles();
7201 if let Some((inlined, num_bytes, num_handles)) =
7202 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7203 {
7204 let member_inline_size =
7205 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
7206 decoder.context,
7207 );
7208 if inlined != (member_inline_size <= 4) {
7209 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7210 }
7211 let inner_offset;
7212 let mut inner_depth = depth.clone();
7213 if inlined {
7214 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7215 inner_offset = next_offset;
7216 } else {
7217 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7218 inner_depth.increment()?;
7219 }
7220 let val_ref = self
7221 .vendor_model
7222 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
7223 fidl::decode!(
7224 fidl::encoding::BoundedString<32>,
7225 D,
7226 val_ref,
7227 decoder,
7228 inner_offset,
7229 inner_depth
7230 )?;
7231 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7232 {
7233 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7234 }
7235 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7236 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7237 }
7238 }
7239
7240 next_offset += envelope_size;
7241 _next_ordinal_to_read += 1;
7242 if next_offset >= end_offset {
7243 return Ok(());
7244 }
7245
7246 while _next_ordinal_to_read < 5 {
7248 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7249 _next_ordinal_to_read += 1;
7250 next_offset += envelope_size;
7251 }
7252
7253 let next_out_of_line = decoder.next_out_of_line();
7254 let handles_before = decoder.remaining_handles();
7255 if let Some((inlined, num_bytes, num_handles)) =
7256 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7257 {
7258 let member_inline_size =
7259 <fidl::encoding::BoundedString<16> as fidl::encoding::TypeMarker>::inline_size(
7260 decoder.context,
7261 );
7262 if inlined != (member_inline_size <= 4) {
7263 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7264 }
7265 let inner_offset;
7266 let mut inner_depth = depth.clone();
7267 if inlined {
7268 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7269 inner_offset = next_offset;
7270 } else {
7271 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7272 inner_depth.increment()?;
7273 }
7274 let val_ref = self
7275 .vendor_sw_version
7276 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<16>, D));
7277 fidl::decode!(
7278 fidl::encoding::BoundedString<16>,
7279 D,
7280 val_ref,
7281 decoder,
7282 inner_offset,
7283 inner_depth
7284 )?;
7285 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7286 {
7287 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7288 }
7289 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7290 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7291 }
7292 }
7293
7294 next_offset += envelope_size;
7295 _next_ordinal_to_read += 1;
7296 if next_offset >= end_offset {
7297 return Ok(());
7298 }
7299
7300 while _next_ordinal_to_read < 6 {
7302 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7303 _next_ordinal_to_read += 1;
7304 next_offset += envelope_size;
7305 }
7306
7307 let next_out_of_line = decoder.next_out_of_line();
7308 let handles_before = decoder.remaining_handles();
7309 if let Some((inlined, num_bytes, num_handles)) =
7310 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7311 {
7312 let member_inline_size =
7313 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
7314 decoder.context,
7315 );
7316 if inlined != (member_inline_size <= 4) {
7317 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7318 }
7319 let inner_offset;
7320 let mut inner_depth = depth.clone();
7321 if inlined {
7322 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7323 inner_offset = next_offset;
7324 } else {
7325 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7326 inner_depth.increment()?;
7327 }
7328 let val_ref = self
7329 .vendor_data_string
7330 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
7331 fidl::decode!(
7332 fidl::encoding::BoundedString<64>,
7333 D,
7334 val_ref,
7335 decoder,
7336 inner_offset,
7337 inner_depth
7338 )?;
7339 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7340 {
7341 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7342 }
7343 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7344 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7345 }
7346 }
7347
7348 next_offset += envelope_size;
7349
7350 while next_offset < end_offset {
7352 _next_ordinal_to_read += 1;
7353 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7354 next_offset += envelope_size;
7355 }
7356
7357 Ok(())
7358 }
7359 }
7360
7361 impl LeaderData {
7362 #[inline(always)]
7363 fn max_ordinal_present(&self) -> u64 {
7364 if let Some(_) = self.router_id {
7365 return 5;
7366 }
7367 if let Some(_) = self.stable_network_data_version {
7368 return 4;
7369 }
7370 if let Some(_) = self.network_data_version {
7371 return 3;
7372 }
7373 if let Some(_) = self.weight {
7374 return 2;
7375 }
7376 if let Some(_) = self.partition_id {
7377 return 1;
7378 }
7379 0
7380 }
7381 }
7382
7383 impl fidl::encoding::ValueTypeMarker for LeaderData {
7384 type Borrowed<'a> = &'a Self;
7385 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7386 value
7387 }
7388 }
7389
7390 unsafe impl fidl::encoding::TypeMarker for LeaderData {
7391 type Owned = Self;
7392
7393 #[inline(always)]
7394 fn inline_align(_context: fidl::encoding::Context) -> usize {
7395 8
7396 }
7397
7398 #[inline(always)]
7399 fn inline_size(_context: fidl::encoding::Context) -> usize {
7400 16
7401 }
7402 }
7403
7404 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LeaderData, D>
7405 for &LeaderData
7406 {
7407 unsafe fn encode(
7408 self,
7409 encoder: &mut fidl::encoding::Encoder<'_, D>,
7410 offset: usize,
7411 mut depth: fidl::encoding::Depth,
7412 ) -> fidl::Result<()> {
7413 encoder.debug_check_bounds::<LeaderData>(offset);
7414 let max_ordinal: u64 = self.max_ordinal_present();
7416 encoder.write_num(max_ordinal, offset);
7417 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7418 if max_ordinal == 0 {
7420 return Ok(());
7421 }
7422 depth.increment()?;
7423 let envelope_size = 8;
7424 let bytes_len = max_ordinal as usize * envelope_size;
7425 #[allow(unused_variables)]
7426 let offset = encoder.out_of_line_offset(bytes_len);
7427 let mut _prev_end_offset: usize = 0;
7428 if 1 > max_ordinal {
7429 return Ok(());
7430 }
7431
7432 let cur_offset: usize = (1 - 1) * envelope_size;
7435
7436 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7438
7439 fidl::encoding::encode_in_envelope_optional::<u32, D>(
7444 self.partition_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7445 encoder,
7446 offset + cur_offset,
7447 depth,
7448 )?;
7449
7450 _prev_end_offset = cur_offset + envelope_size;
7451 if 2 > max_ordinal {
7452 return Ok(());
7453 }
7454
7455 let cur_offset: usize = (2 - 1) * envelope_size;
7458
7459 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7461
7462 fidl::encoding::encode_in_envelope_optional::<u8, D>(
7467 self.weight.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
7468 encoder,
7469 offset + cur_offset,
7470 depth,
7471 )?;
7472
7473 _prev_end_offset = cur_offset + envelope_size;
7474 if 3 > max_ordinal {
7475 return Ok(());
7476 }
7477
7478 let cur_offset: usize = (3 - 1) * envelope_size;
7481
7482 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7484
7485 fidl::encoding::encode_in_envelope_optional::<u8, D>(
7490 self.network_data_version
7491 .as_ref()
7492 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
7493 encoder,
7494 offset + cur_offset,
7495 depth,
7496 )?;
7497
7498 _prev_end_offset = cur_offset + envelope_size;
7499 if 4 > max_ordinal {
7500 return Ok(());
7501 }
7502
7503 let cur_offset: usize = (4 - 1) * envelope_size;
7506
7507 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7509
7510 fidl::encoding::encode_in_envelope_optional::<u8, D>(
7515 self.stable_network_data_version
7516 .as_ref()
7517 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
7518 encoder,
7519 offset + cur_offset,
7520 depth,
7521 )?;
7522
7523 _prev_end_offset = cur_offset + envelope_size;
7524 if 5 > max_ordinal {
7525 return Ok(());
7526 }
7527
7528 let cur_offset: usize = (5 - 1) * envelope_size;
7531
7532 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7534
7535 fidl::encoding::encode_in_envelope_optional::<u8, D>(
7540 self.router_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
7541 encoder,
7542 offset + cur_offset,
7543 depth,
7544 )?;
7545
7546 _prev_end_offset = cur_offset + envelope_size;
7547
7548 Ok(())
7549 }
7550 }
7551
7552 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LeaderData {
7553 #[inline(always)]
7554 fn new_empty() -> Self {
7555 Self::default()
7556 }
7557
7558 unsafe fn decode(
7559 &mut self,
7560 decoder: &mut fidl::encoding::Decoder<'_, D>,
7561 offset: usize,
7562 mut depth: fidl::encoding::Depth,
7563 ) -> fidl::Result<()> {
7564 decoder.debug_check_bounds::<Self>(offset);
7565 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7566 None => return Err(fidl::Error::NotNullable),
7567 Some(len) => len,
7568 };
7569 if len == 0 {
7571 return Ok(());
7572 };
7573 depth.increment()?;
7574 let envelope_size = 8;
7575 let bytes_len = len * envelope_size;
7576 let offset = decoder.out_of_line_offset(bytes_len)?;
7577 let mut _next_ordinal_to_read = 0;
7579 let mut next_offset = offset;
7580 let end_offset = offset + bytes_len;
7581 _next_ordinal_to_read += 1;
7582 if next_offset >= end_offset {
7583 return Ok(());
7584 }
7585
7586 while _next_ordinal_to_read < 1 {
7588 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7589 _next_ordinal_to_read += 1;
7590 next_offset += envelope_size;
7591 }
7592
7593 let next_out_of_line = decoder.next_out_of_line();
7594 let handles_before = decoder.remaining_handles();
7595 if let Some((inlined, num_bytes, num_handles)) =
7596 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7597 {
7598 let member_inline_size =
7599 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7600 if inlined != (member_inline_size <= 4) {
7601 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7602 }
7603 let inner_offset;
7604 let mut inner_depth = depth.clone();
7605 if inlined {
7606 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7607 inner_offset = next_offset;
7608 } else {
7609 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7610 inner_depth.increment()?;
7611 }
7612 let val_ref = self.partition_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
7613 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7614 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7615 {
7616 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7617 }
7618 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7619 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7620 }
7621 }
7622
7623 next_offset += envelope_size;
7624 _next_ordinal_to_read += 1;
7625 if next_offset >= end_offset {
7626 return Ok(());
7627 }
7628
7629 while _next_ordinal_to_read < 2 {
7631 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7632 _next_ordinal_to_read += 1;
7633 next_offset += envelope_size;
7634 }
7635
7636 let next_out_of_line = decoder.next_out_of_line();
7637 let handles_before = decoder.remaining_handles();
7638 if let Some((inlined, num_bytes, num_handles)) =
7639 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7640 {
7641 let member_inline_size =
7642 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7643 if inlined != (member_inline_size <= 4) {
7644 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7645 }
7646 let inner_offset;
7647 let mut inner_depth = depth.clone();
7648 if inlined {
7649 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7650 inner_offset = next_offset;
7651 } else {
7652 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7653 inner_depth.increment()?;
7654 }
7655 let val_ref = self.weight.get_or_insert_with(|| fidl::new_empty!(u8, D));
7656 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
7657 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7658 {
7659 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7660 }
7661 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7662 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7663 }
7664 }
7665
7666 next_offset += envelope_size;
7667 _next_ordinal_to_read += 1;
7668 if next_offset >= end_offset {
7669 return Ok(());
7670 }
7671
7672 while _next_ordinal_to_read < 3 {
7674 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7675 _next_ordinal_to_read += 1;
7676 next_offset += envelope_size;
7677 }
7678
7679 let next_out_of_line = decoder.next_out_of_line();
7680 let handles_before = decoder.remaining_handles();
7681 if let Some((inlined, num_bytes, num_handles)) =
7682 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7683 {
7684 let member_inline_size =
7685 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7686 if inlined != (member_inline_size <= 4) {
7687 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7688 }
7689 let inner_offset;
7690 let mut inner_depth = depth.clone();
7691 if inlined {
7692 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7693 inner_offset = next_offset;
7694 } else {
7695 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7696 inner_depth.increment()?;
7697 }
7698 let val_ref =
7699 self.network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
7700 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
7701 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7702 {
7703 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7704 }
7705 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7706 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7707 }
7708 }
7709
7710 next_offset += envelope_size;
7711 _next_ordinal_to_read += 1;
7712 if next_offset >= end_offset {
7713 return Ok(());
7714 }
7715
7716 while _next_ordinal_to_read < 4 {
7718 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7719 _next_ordinal_to_read += 1;
7720 next_offset += envelope_size;
7721 }
7722
7723 let next_out_of_line = decoder.next_out_of_line();
7724 let handles_before = decoder.remaining_handles();
7725 if let Some((inlined, num_bytes, num_handles)) =
7726 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7727 {
7728 let member_inline_size =
7729 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7730 if inlined != (member_inline_size <= 4) {
7731 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7732 }
7733 let inner_offset;
7734 let mut inner_depth = depth.clone();
7735 if inlined {
7736 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7737 inner_offset = next_offset;
7738 } else {
7739 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7740 inner_depth.increment()?;
7741 }
7742 let val_ref =
7743 self.stable_network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
7744 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
7745 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7746 {
7747 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7748 }
7749 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7750 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7751 }
7752 }
7753
7754 next_offset += envelope_size;
7755 _next_ordinal_to_read += 1;
7756 if next_offset >= end_offset {
7757 return Ok(());
7758 }
7759
7760 while _next_ordinal_to_read < 5 {
7762 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7763 _next_ordinal_to_read += 1;
7764 next_offset += envelope_size;
7765 }
7766
7767 let next_out_of_line = decoder.next_out_of_line();
7768 let handles_before = decoder.remaining_handles();
7769 if let Some((inlined, num_bytes, num_handles)) =
7770 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7771 {
7772 let member_inline_size =
7773 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7774 if inlined != (member_inline_size <= 4) {
7775 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7776 }
7777 let inner_offset;
7778 let mut inner_depth = depth.clone();
7779 if inlined {
7780 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7781 inner_offset = next_offset;
7782 } else {
7783 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7784 inner_depth.increment()?;
7785 }
7786 let val_ref = self.router_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
7787 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
7788 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7789 {
7790 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7791 }
7792 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7793 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7794 }
7795 }
7796
7797 next_offset += envelope_size;
7798
7799 while next_offset < end_offset {
7801 _next_ordinal_to_read += 1;
7802 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7803 next_offset += envelope_size;
7804 }
7805
7806 Ok(())
7807 }
7808 }
7809
7810 impl LinkMetricsEntry {
7811 #[inline(always)]
7812 fn max_ordinal_present(&self) -> u64 {
7813 if let Some(_) = self.rssi {
7814 return 2;
7815 }
7816 if let Some(_) = self.link_margin {
7817 return 1;
7818 }
7819 0
7820 }
7821 }
7822
7823 impl fidl::encoding::ValueTypeMarker for LinkMetricsEntry {
7824 type Borrowed<'a> = &'a Self;
7825 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7826 value
7827 }
7828 }
7829
7830 unsafe impl fidl::encoding::TypeMarker for LinkMetricsEntry {
7831 type Owned = Self;
7832
7833 #[inline(always)]
7834 fn inline_align(_context: fidl::encoding::Context) -> usize {
7835 8
7836 }
7837
7838 #[inline(always)]
7839 fn inline_size(_context: fidl::encoding::Context) -> usize {
7840 16
7841 }
7842 }
7843
7844 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LinkMetricsEntry, D>
7845 for &LinkMetricsEntry
7846 {
7847 unsafe fn encode(
7848 self,
7849 encoder: &mut fidl::encoding::Encoder<'_, D>,
7850 offset: usize,
7851 mut depth: fidl::encoding::Depth,
7852 ) -> fidl::Result<()> {
7853 encoder.debug_check_bounds::<LinkMetricsEntry>(offset);
7854 let max_ordinal: u64 = self.max_ordinal_present();
7856 encoder.write_num(max_ordinal, offset);
7857 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7858 if max_ordinal == 0 {
7860 return Ok(());
7861 }
7862 depth.increment()?;
7863 let envelope_size = 8;
7864 let bytes_len = max_ordinal as usize * envelope_size;
7865 #[allow(unused_variables)]
7866 let offset = encoder.out_of_line_offset(bytes_len);
7867 let mut _prev_end_offset: usize = 0;
7868 if 1 > max_ordinal {
7869 return Ok(());
7870 }
7871
7872 let cur_offset: usize = (1 - 1) * envelope_size;
7875
7876 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7878
7879 fidl::encoding::encode_in_envelope_optional::<u8, D>(
7884 self.link_margin.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
7885 encoder,
7886 offset + cur_offset,
7887 depth,
7888 )?;
7889
7890 _prev_end_offset = cur_offset + envelope_size;
7891 if 2 > max_ordinal {
7892 return Ok(());
7893 }
7894
7895 let cur_offset: usize = (2 - 1) * envelope_size;
7898
7899 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7901
7902 fidl::encoding::encode_in_envelope_optional::<i8, D>(
7907 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
7908 encoder,
7909 offset + cur_offset,
7910 depth,
7911 )?;
7912
7913 _prev_end_offset = cur_offset + envelope_size;
7914
7915 Ok(())
7916 }
7917 }
7918
7919 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LinkMetricsEntry {
7920 #[inline(always)]
7921 fn new_empty() -> Self {
7922 Self::default()
7923 }
7924
7925 unsafe fn decode(
7926 &mut self,
7927 decoder: &mut fidl::encoding::Decoder<'_, D>,
7928 offset: usize,
7929 mut depth: fidl::encoding::Depth,
7930 ) -> fidl::Result<()> {
7931 decoder.debug_check_bounds::<Self>(offset);
7932 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7933 None => return Err(fidl::Error::NotNullable),
7934 Some(len) => len,
7935 };
7936 if len == 0 {
7938 return Ok(());
7939 };
7940 depth.increment()?;
7941 let envelope_size = 8;
7942 let bytes_len = len * envelope_size;
7943 let offset = decoder.out_of_line_offset(bytes_len)?;
7944 let mut _next_ordinal_to_read = 0;
7946 let mut next_offset = offset;
7947 let end_offset = offset + bytes_len;
7948 _next_ordinal_to_read += 1;
7949 if next_offset >= end_offset {
7950 return Ok(());
7951 }
7952
7953 while _next_ordinal_to_read < 1 {
7955 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7956 _next_ordinal_to_read += 1;
7957 next_offset += envelope_size;
7958 }
7959
7960 let next_out_of_line = decoder.next_out_of_line();
7961 let handles_before = decoder.remaining_handles();
7962 if let Some((inlined, num_bytes, num_handles)) =
7963 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7964 {
7965 let member_inline_size =
7966 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7967 if inlined != (member_inline_size <= 4) {
7968 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7969 }
7970 let inner_offset;
7971 let mut inner_depth = depth.clone();
7972 if inlined {
7973 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7974 inner_offset = next_offset;
7975 } else {
7976 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7977 inner_depth.increment()?;
7978 }
7979 let val_ref = self.link_margin.get_or_insert_with(|| fidl::new_empty!(u8, D));
7980 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
7981 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7982 {
7983 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7984 }
7985 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7986 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7987 }
7988 }
7989
7990 next_offset += envelope_size;
7991 _next_ordinal_to_read += 1;
7992 if next_offset >= end_offset {
7993 return Ok(());
7994 }
7995
7996 while _next_ordinal_to_read < 2 {
7998 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7999 _next_ordinal_to_read += 1;
8000 next_offset += envelope_size;
8001 }
8002
8003 let next_out_of_line = decoder.next_out_of_line();
8004 let handles_before = decoder.remaining_handles();
8005 if let Some((inlined, num_bytes, num_handles)) =
8006 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8007 {
8008 let member_inline_size =
8009 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8010 if inlined != (member_inline_size <= 4) {
8011 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8012 }
8013 let inner_offset;
8014 let mut inner_depth = depth.clone();
8015 if inlined {
8016 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8017 inner_offset = next_offset;
8018 } else {
8019 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8020 inner_depth.increment()?;
8021 }
8022 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
8023 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
8024 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8025 {
8026 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8027 }
8028 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8029 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8030 }
8031 }
8032
8033 next_offset += envelope_size;
8034
8035 while next_offset < end_offset {
8037 _next_ordinal_to_read += 1;
8038 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8039 next_offset += envelope_size;
8040 }
8041
8042 Ok(())
8043 }
8044 }
8045
8046 impl Nat64ErrorCounters {
8047 #[inline(always)]
8048 fn max_ordinal_present(&self) -> u64 {
8049 if let Some(_) = self.no_mapping {
8050 return 4;
8051 }
8052 if let Some(_) = self.unsupported_protocol {
8053 return 3;
8054 }
8055 if let Some(_) = self.illegal_packet {
8056 return 2;
8057 }
8058 if let Some(_) = self.unknown {
8059 return 1;
8060 }
8061 0
8062 }
8063 }
8064
8065 impl fidl::encoding::ValueTypeMarker for Nat64ErrorCounters {
8066 type Borrowed<'a> = &'a Self;
8067 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8068 value
8069 }
8070 }
8071
8072 unsafe impl fidl::encoding::TypeMarker for Nat64ErrorCounters {
8073 type Owned = Self;
8074
8075 #[inline(always)]
8076 fn inline_align(_context: fidl::encoding::Context) -> usize {
8077 8
8078 }
8079
8080 #[inline(always)]
8081 fn inline_size(_context: fidl::encoding::Context) -> usize {
8082 16
8083 }
8084 }
8085
8086 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64ErrorCounters, D>
8087 for &Nat64ErrorCounters
8088 {
8089 unsafe fn encode(
8090 self,
8091 encoder: &mut fidl::encoding::Encoder<'_, D>,
8092 offset: usize,
8093 mut depth: fidl::encoding::Depth,
8094 ) -> fidl::Result<()> {
8095 encoder.debug_check_bounds::<Nat64ErrorCounters>(offset);
8096 let max_ordinal: u64 = self.max_ordinal_present();
8098 encoder.write_num(max_ordinal, offset);
8099 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8100 if max_ordinal == 0 {
8102 return Ok(());
8103 }
8104 depth.increment()?;
8105 let envelope_size = 8;
8106 let bytes_len = max_ordinal as usize * envelope_size;
8107 #[allow(unused_variables)]
8108 let offset = encoder.out_of_line_offset(bytes_len);
8109 let mut _prev_end_offset: usize = 0;
8110 if 1 > max_ordinal {
8111 return Ok(());
8112 }
8113
8114 let cur_offset: usize = (1 - 1) * envelope_size;
8117
8118 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8120
8121 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
8126 self.unknown
8127 .as_ref()
8128 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
8129 encoder,
8130 offset + cur_offset,
8131 depth,
8132 )?;
8133
8134 _prev_end_offset = cur_offset + envelope_size;
8135 if 2 > max_ordinal {
8136 return Ok(());
8137 }
8138
8139 let cur_offset: usize = (2 - 1) * envelope_size;
8142
8143 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8145
8146 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
8151 self.illegal_packet
8152 .as_ref()
8153 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
8154 encoder,
8155 offset + cur_offset,
8156 depth,
8157 )?;
8158
8159 _prev_end_offset = cur_offset + envelope_size;
8160 if 3 > max_ordinal {
8161 return Ok(());
8162 }
8163
8164 let cur_offset: usize = (3 - 1) * envelope_size;
8167
8168 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8170
8171 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
8176 self.unsupported_protocol
8177 .as_ref()
8178 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
8179 encoder,
8180 offset + cur_offset,
8181 depth,
8182 )?;
8183
8184 _prev_end_offset = cur_offset + envelope_size;
8185 if 4 > max_ordinal {
8186 return Ok(());
8187 }
8188
8189 let cur_offset: usize = (4 - 1) * envelope_size;
8192
8193 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8195
8196 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
8201 self.no_mapping
8202 .as_ref()
8203 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
8204 encoder,
8205 offset + cur_offset,
8206 depth,
8207 )?;
8208
8209 _prev_end_offset = cur_offset + envelope_size;
8210
8211 Ok(())
8212 }
8213 }
8214
8215 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64ErrorCounters {
8216 #[inline(always)]
8217 fn new_empty() -> Self {
8218 Self::default()
8219 }
8220
8221 unsafe fn decode(
8222 &mut self,
8223 decoder: &mut fidl::encoding::Decoder<'_, D>,
8224 offset: usize,
8225 mut depth: fidl::encoding::Depth,
8226 ) -> fidl::Result<()> {
8227 decoder.debug_check_bounds::<Self>(offset);
8228 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8229 None => return Err(fidl::Error::NotNullable),
8230 Some(len) => len,
8231 };
8232 if len == 0 {
8234 return Ok(());
8235 };
8236 depth.increment()?;
8237 let envelope_size = 8;
8238 let bytes_len = len * envelope_size;
8239 let offset = decoder.out_of_line_offset(bytes_len)?;
8240 let mut _next_ordinal_to_read = 0;
8242 let mut next_offset = offset;
8243 let end_offset = offset + bytes_len;
8244 _next_ordinal_to_read += 1;
8245 if next_offset >= end_offset {
8246 return Ok(());
8247 }
8248
8249 while _next_ordinal_to_read < 1 {
8251 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8252 _next_ordinal_to_read += 1;
8253 next_offset += envelope_size;
8254 }
8255
8256 let next_out_of_line = decoder.next_out_of_line();
8257 let handles_before = decoder.remaining_handles();
8258 if let Some((inlined, num_bytes, num_handles)) =
8259 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8260 {
8261 let member_inline_size =
8262 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
8263 decoder.context,
8264 );
8265 if inlined != (member_inline_size <= 4) {
8266 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8267 }
8268 let inner_offset;
8269 let mut inner_depth = depth.clone();
8270 if inlined {
8271 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8272 inner_offset = next_offset;
8273 } else {
8274 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8275 inner_depth.increment()?;
8276 }
8277 let val_ref =
8278 self.unknown.get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
8279 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
8280 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8281 {
8282 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8283 }
8284 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8285 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8286 }
8287 }
8288
8289 next_offset += envelope_size;
8290 _next_ordinal_to_read += 1;
8291 if next_offset >= end_offset {
8292 return Ok(());
8293 }
8294
8295 while _next_ordinal_to_read < 2 {
8297 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8298 _next_ordinal_to_read += 1;
8299 next_offset += envelope_size;
8300 }
8301
8302 let next_out_of_line = decoder.next_out_of_line();
8303 let handles_before = decoder.remaining_handles();
8304 if let Some((inlined, num_bytes, num_handles)) =
8305 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8306 {
8307 let member_inline_size =
8308 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
8309 decoder.context,
8310 );
8311 if inlined != (member_inline_size <= 4) {
8312 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8313 }
8314 let inner_offset;
8315 let mut inner_depth = depth.clone();
8316 if inlined {
8317 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8318 inner_offset = next_offset;
8319 } else {
8320 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8321 inner_depth.increment()?;
8322 }
8323 let val_ref = self
8324 .illegal_packet
8325 .get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
8326 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
8327 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8328 {
8329 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8330 }
8331 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8332 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8333 }
8334 }
8335
8336 next_offset += envelope_size;
8337 _next_ordinal_to_read += 1;
8338 if next_offset >= end_offset {
8339 return Ok(());
8340 }
8341
8342 while _next_ordinal_to_read < 3 {
8344 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8345 _next_ordinal_to_read += 1;
8346 next_offset += envelope_size;
8347 }
8348
8349 let next_out_of_line = decoder.next_out_of_line();
8350 let handles_before = decoder.remaining_handles();
8351 if let Some((inlined, num_bytes, num_handles)) =
8352 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8353 {
8354 let member_inline_size =
8355 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
8356 decoder.context,
8357 );
8358 if inlined != (member_inline_size <= 4) {
8359 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8360 }
8361 let inner_offset;
8362 let mut inner_depth = depth.clone();
8363 if inlined {
8364 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8365 inner_offset = next_offset;
8366 } else {
8367 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8368 inner_depth.increment()?;
8369 }
8370 let val_ref = self
8371 .unsupported_protocol
8372 .get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
8373 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
8374 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8375 {
8376 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8377 }
8378 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8379 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8380 }
8381 }
8382
8383 next_offset += envelope_size;
8384 _next_ordinal_to_read += 1;
8385 if next_offset >= end_offset {
8386 return Ok(());
8387 }
8388
8389 while _next_ordinal_to_read < 4 {
8391 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8392 _next_ordinal_to_read += 1;
8393 next_offset += envelope_size;
8394 }
8395
8396 let next_out_of_line = decoder.next_out_of_line();
8397 let handles_before = decoder.remaining_handles();
8398 if let Some((inlined, num_bytes, num_handles)) =
8399 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8400 {
8401 let member_inline_size =
8402 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
8403 decoder.context,
8404 );
8405 if inlined != (member_inline_size <= 4) {
8406 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8407 }
8408 let inner_offset;
8409 let mut inner_depth = depth.clone();
8410 if inlined {
8411 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8412 inner_offset = next_offset;
8413 } else {
8414 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8415 inner_depth.increment()?;
8416 }
8417 let val_ref =
8418 self.no_mapping.get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
8419 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
8420 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8421 {
8422 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8423 }
8424 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8425 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8426 }
8427 }
8428
8429 next_offset += envelope_size;
8430
8431 while next_offset < end_offset {
8433 _next_ordinal_to_read += 1;
8434 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8435 next_offset += envelope_size;
8436 }
8437
8438 Ok(())
8439 }
8440 }
8441
8442 impl Nat64Info {
8443 #[inline(always)]
8444 fn max_ordinal_present(&self) -> u64 {
8445 if let Some(_) = self.nat64_protocol_counters {
8446 return 4;
8447 }
8448 if let Some(_) = self.nat64_error_counters {
8449 return 3;
8450 }
8451 if let Some(_) = self.nat64_mappings {
8452 return 2;
8453 }
8454 if let Some(_) = self.nat64_state {
8455 return 1;
8456 }
8457 0
8458 }
8459 }
8460
8461 impl fidl::encoding::ValueTypeMarker for Nat64Info {
8462 type Borrowed<'a> = &'a Self;
8463 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8464 value
8465 }
8466 }
8467
8468 unsafe impl fidl::encoding::TypeMarker for Nat64Info {
8469 type Owned = Self;
8470
8471 #[inline(always)]
8472 fn inline_align(_context: fidl::encoding::Context) -> usize {
8473 8
8474 }
8475
8476 #[inline(always)]
8477 fn inline_size(_context: fidl::encoding::Context) -> usize {
8478 16
8479 }
8480 }
8481
8482 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64Info, D>
8483 for &Nat64Info
8484 {
8485 unsafe fn encode(
8486 self,
8487 encoder: &mut fidl::encoding::Encoder<'_, D>,
8488 offset: usize,
8489 mut depth: fidl::encoding::Depth,
8490 ) -> fidl::Result<()> {
8491 encoder.debug_check_bounds::<Nat64Info>(offset);
8492 let max_ordinal: u64 = self.max_ordinal_present();
8494 encoder.write_num(max_ordinal, offset);
8495 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8496 if max_ordinal == 0 {
8498 return Ok(());
8499 }
8500 depth.increment()?;
8501 let envelope_size = 8;
8502 let bytes_len = max_ordinal as usize * envelope_size;
8503 #[allow(unused_variables)]
8504 let offset = encoder.out_of_line_offset(bytes_len);
8505 let mut _prev_end_offset: usize = 0;
8506 if 1 > max_ordinal {
8507 return Ok(());
8508 }
8509
8510 let cur_offset: usize = (1 - 1) * envelope_size;
8513
8514 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8516
8517 fidl::encoding::encode_in_envelope_optional::<BorderRoutingNat64State, D>(
8522 self.nat64_state
8523 .as_ref()
8524 .map(<BorderRoutingNat64State as fidl::encoding::ValueTypeMarker>::borrow),
8525 encoder,
8526 offset + cur_offset,
8527 depth,
8528 )?;
8529
8530 _prev_end_offset = cur_offset + envelope_size;
8531 if 2 > max_ordinal {
8532 return Ok(());
8533 }
8534
8535 let cur_offset: usize = (2 - 1) * envelope_size;
8538
8539 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8541
8542 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Nat64Mapping>, D>(
8547 self.nat64_mappings.as_ref().map(<fidl::encoding::UnboundedVector<Nat64Mapping> as fidl::encoding::ValueTypeMarker>::borrow),
8548 encoder, offset + cur_offset, depth
8549 )?;
8550
8551 _prev_end_offset = cur_offset + envelope_size;
8552 if 3 > max_ordinal {
8553 return Ok(());
8554 }
8555
8556 let cur_offset: usize = (3 - 1) * envelope_size;
8559
8560 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8562
8563 fidl::encoding::encode_in_envelope_optional::<Nat64ErrorCounters, D>(
8568 self.nat64_error_counters
8569 .as_ref()
8570 .map(<Nat64ErrorCounters as fidl::encoding::ValueTypeMarker>::borrow),
8571 encoder,
8572 offset + cur_offset,
8573 depth,
8574 )?;
8575
8576 _prev_end_offset = cur_offset + envelope_size;
8577 if 4 > max_ordinal {
8578 return Ok(());
8579 }
8580
8581 let cur_offset: usize = (4 - 1) * envelope_size;
8584
8585 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8587
8588 fidl::encoding::encode_in_envelope_optional::<Nat64ProtocolCounters, D>(
8593 self.nat64_protocol_counters
8594 .as_ref()
8595 .map(<Nat64ProtocolCounters as fidl::encoding::ValueTypeMarker>::borrow),
8596 encoder,
8597 offset + cur_offset,
8598 depth,
8599 )?;
8600
8601 _prev_end_offset = cur_offset + envelope_size;
8602
8603 Ok(())
8604 }
8605 }
8606
8607 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64Info {
8608 #[inline(always)]
8609 fn new_empty() -> Self {
8610 Self::default()
8611 }
8612
8613 unsafe fn decode(
8614 &mut self,
8615 decoder: &mut fidl::encoding::Decoder<'_, D>,
8616 offset: usize,
8617 mut depth: fidl::encoding::Depth,
8618 ) -> fidl::Result<()> {
8619 decoder.debug_check_bounds::<Self>(offset);
8620 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8621 None => return Err(fidl::Error::NotNullable),
8622 Some(len) => len,
8623 };
8624 if len == 0 {
8626 return Ok(());
8627 };
8628 depth.increment()?;
8629 let envelope_size = 8;
8630 let bytes_len = len * envelope_size;
8631 let offset = decoder.out_of_line_offset(bytes_len)?;
8632 let mut _next_ordinal_to_read = 0;
8634 let mut next_offset = offset;
8635 let end_offset = offset + bytes_len;
8636 _next_ordinal_to_read += 1;
8637 if next_offset >= end_offset {
8638 return Ok(());
8639 }
8640
8641 while _next_ordinal_to_read < 1 {
8643 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8644 _next_ordinal_to_read += 1;
8645 next_offset += envelope_size;
8646 }
8647
8648 let next_out_of_line = decoder.next_out_of_line();
8649 let handles_before = decoder.remaining_handles();
8650 if let Some((inlined, num_bytes, num_handles)) =
8651 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8652 {
8653 let member_inline_size =
8654 <BorderRoutingNat64State as fidl::encoding::TypeMarker>::inline_size(
8655 decoder.context,
8656 );
8657 if inlined != (member_inline_size <= 4) {
8658 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8659 }
8660 let inner_offset;
8661 let mut inner_depth = depth.clone();
8662 if inlined {
8663 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8664 inner_offset = next_offset;
8665 } else {
8666 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8667 inner_depth.increment()?;
8668 }
8669 let val_ref = self
8670 .nat64_state
8671 .get_or_insert_with(|| fidl::new_empty!(BorderRoutingNat64State, D));
8672 fidl::decode!(
8673 BorderRoutingNat64State,
8674 D,
8675 val_ref,
8676 decoder,
8677 inner_offset,
8678 inner_depth
8679 )?;
8680 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8681 {
8682 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8683 }
8684 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8685 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8686 }
8687 }
8688
8689 next_offset += envelope_size;
8690 _next_ordinal_to_read += 1;
8691 if next_offset >= end_offset {
8692 return Ok(());
8693 }
8694
8695 while _next_ordinal_to_read < 2 {
8697 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8698 _next_ordinal_to_read += 1;
8699 next_offset += envelope_size;
8700 }
8701
8702 let next_out_of_line = decoder.next_out_of_line();
8703 let handles_before = decoder.remaining_handles();
8704 if let Some((inlined, num_bytes, num_handles)) =
8705 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8706 {
8707 let member_inline_size = <fidl::encoding::UnboundedVector<Nat64Mapping> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8708 if inlined != (member_inline_size <= 4) {
8709 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8710 }
8711 let inner_offset;
8712 let mut inner_depth = depth.clone();
8713 if inlined {
8714 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8715 inner_offset = next_offset;
8716 } else {
8717 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8718 inner_depth.increment()?;
8719 }
8720 let val_ref = self.nat64_mappings.get_or_insert_with(|| {
8721 fidl::new_empty!(fidl::encoding::UnboundedVector<Nat64Mapping>, D)
8722 });
8723 fidl::decode!(
8724 fidl::encoding::UnboundedVector<Nat64Mapping>,
8725 D,
8726 val_ref,
8727 decoder,
8728 inner_offset,
8729 inner_depth
8730 )?;
8731 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8732 {
8733 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8734 }
8735 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8736 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8737 }
8738 }
8739
8740 next_offset += envelope_size;
8741 _next_ordinal_to_read += 1;
8742 if next_offset >= end_offset {
8743 return Ok(());
8744 }
8745
8746 while _next_ordinal_to_read < 3 {
8748 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8749 _next_ordinal_to_read += 1;
8750 next_offset += envelope_size;
8751 }
8752
8753 let next_out_of_line = decoder.next_out_of_line();
8754 let handles_before = decoder.remaining_handles();
8755 if let Some((inlined, num_bytes, num_handles)) =
8756 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8757 {
8758 let member_inline_size =
8759 <Nat64ErrorCounters as fidl::encoding::TypeMarker>::inline_size(
8760 decoder.context,
8761 );
8762 if inlined != (member_inline_size <= 4) {
8763 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8764 }
8765 let inner_offset;
8766 let mut inner_depth = depth.clone();
8767 if inlined {
8768 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8769 inner_offset = next_offset;
8770 } else {
8771 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8772 inner_depth.increment()?;
8773 }
8774 let val_ref = self
8775 .nat64_error_counters
8776 .get_or_insert_with(|| fidl::new_empty!(Nat64ErrorCounters, D));
8777 fidl::decode!(Nat64ErrorCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
8778 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8779 {
8780 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8781 }
8782 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8783 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8784 }
8785 }
8786
8787 next_offset += envelope_size;
8788 _next_ordinal_to_read += 1;
8789 if next_offset >= end_offset {
8790 return Ok(());
8791 }
8792
8793 while _next_ordinal_to_read < 4 {
8795 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8796 _next_ordinal_to_read += 1;
8797 next_offset += envelope_size;
8798 }
8799
8800 let next_out_of_line = decoder.next_out_of_line();
8801 let handles_before = decoder.remaining_handles();
8802 if let Some((inlined, num_bytes, num_handles)) =
8803 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8804 {
8805 let member_inline_size =
8806 <Nat64ProtocolCounters as fidl::encoding::TypeMarker>::inline_size(
8807 decoder.context,
8808 );
8809 if inlined != (member_inline_size <= 4) {
8810 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8811 }
8812 let inner_offset;
8813 let mut inner_depth = depth.clone();
8814 if inlined {
8815 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8816 inner_offset = next_offset;
8817 } else {
8818 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8819 inner_depth.increment()?;
8820 }
8821 let val_ref = self
8822 .nat64_protocol_counters
8823 .get_or_insert_with(|| fidl::new_empty!(Nat64ProtocolCounters, D));
8824 fidl::decode!(
8825 Nat64ProtocolCounters,
8826 D,
8827 val_ref,
8828 decoder,
8829 inner_offset,
8830 inner_depth
8831 )?;
8832 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8833 {
8834 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8835 }
8836 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8837 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8838 }
8839 }
8840
8841 next_offset += envelope_size;
8842
8843 while next_offset < end_offset {
8845 _next_ordinal_to_read += 1;
8846 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8847 next_offset += envelope_size;
8848 }
8849
8850 Ok(())
8851 }
8852 }
8853
8854 impl Nat64Mapping {
8855 #[inline(always)]
8856 fn max_ordinal_present(&self) -> u64 {
8857 if let Some(_) = self.counters {
8858 return 5;
8859 }
8860 if let Some(_) = self.remaining_time_ms {
8861 return 4;
8862 }
8863 if let Some(_) = self.ip6_addr {
8864 return 3;
8865 }
8866 if let Some(_) = self.ip4_addr {
8867 return 2;
8868 }
8869 if let Some(_) = self.mapping_id {
8870 return 1;
8871 }
8872 0
8873 }
8874 }
8875
8876 impl fidl::encoding::ValueTypeMarker for Nat64Mapping {
8877 type Borrowed<'a> = &'a Self;
8878 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8879 value
8880 }
8881 }
8882
8883 unsafe impl fidl::encoding::TypeMarker for Nat64Mapping {
8884 type Owned = Self;
8885
8886 #[inline(always)]
8887 fn inline_align(_context: fidl::encoding::Context) -> usize {
8888 8
8889 }
8890
8891 #[inline(always)]
8892 fn inline_size(_context: fidl::encoding::Context) -> usize {
8893 16
8894 }
8895 }
8896
8897 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64Mapping, D>
8898 for &Nat64Mapping
8899 {
8900 unsafe fn encode(
8901 self,
8902 encoder: &mut fidl::encoding::Encoder<'_, D>,
8903 offset: usize,
8904 mut depth: fidl::encoding::Depth,
8905 ) -> fidl::Result<()> {
8906 encoder.debug_check_bounds::<Nat64Mapping>(offset);
8907 let max_ordinal: u64 = self.max_ordinal_present();
8909 encoder.write_num(max_ordinal, offset);
8910 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8911 if max_ordinal == 0 {
8913 return Ok(());
8914 }
8915 depth.increment()?;
8916 let envelope_size = 8;
8917 let bytes_len = max_ordinal as usize * envelope_size;
8918 #[allow(unused_variables)]
8919 let offset = encoder.out_of_line_offset(bytes_len);
8920 let mut _prev_end_offset: usize = 0;
8921 if 1 > max_ordinal {
8922 return Ok(());
8923 }
8924
8925 let cur_offset: usize = (1 - 1) * envelope_size;
8928
8929 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8931
8932 fidl::encoding::encode_in_envelope_optional::<u64, D>(
8937 self.mapping_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
8938 encoder,
8939 offset + cur_offset,
8940 depth,
8941 )?;
8942
8943 _prev_end_offset = cur_offset + envelope_size;
8944 if 2 > max_ordinal {
8945 return Ok(());
8946 }
8947
8948 let cur_offset: usize = (2 - 1) * envelope_size;
8951
8952 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8954
8955 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8960 self.ip4_addr.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8961 encoder, offset + cur_offset, depth
8962 )?;
8963
8964 _prev_end_offset = cur_offset + envelope_size;
8965 if 3 > max_ordinal {
8966 return Ok(());
8967 }
8968
8969 let cur_offset: usize = (3 - 1) * envelope_size;
8972
8973 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8975
8976 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8981 self.ip6_addr.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8982 encoder, offset + cur_offset, depth
8983 )?;
8984
8985 _prev_end_offset = cur_offset + envelope_size;
8986 if 4 > max_ordinal {
8987 return Ok(());
8988 }
8989
8990 let cur_offset: usize = (4 - 1) * envelope_size;
8993
8994 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8996
8997 fidl::encoding::encode_in_envelope_optional::<u32, D>(
9002 self.remaining_time_ms
9003 .as_ref()
9004 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
9005 encoder,
9006 offset + cur_offset,
9007 depth,
9008 )?;
9009
9010 _prev_end_offset = cur_offset + envelope_size;
9011 if 5 > max_ordinal {
9012 return Ok(());
9013 }
9014
9015 let cur_offset: usize = (5 - 1) * envelope_size;
9018
9019 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9021
9022 fidl::encoding::encode_in_envelope_optional::<Nat64ProtocolCounters, D>(
9027 self.counters
9028 .as_ref()
9029 .map(<Nat64ProtocolCounters as fidl::encoding::ValueTypeMarker>::borrow),
9030 encoder,
9031 offset + cur_offset,
9032 depth,
9033 )?;
9034
9035 _prev_end_offset = cur_offset + envelope_size;
9036
9037 Ok(())
9038 }
9039 }
9040
9041 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64Mapping {
9042 #[inline(always)]
9043 fn new_empty() -> Self {
9044 Self::default()
9045 }
9046
9047 unsafe fn decode(
9048 &mut self,
9049 decoder: &mut fidl::encoding::Decoder<'_, D>,
9050 offset: usize,
9051 mut depth: fidl::encoding::Depth,
9052 ) -> fidl::Result<()> {
9053 decoder.debug_check_bounds::<Self>(offset);
9054 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9055 None => return Err(fidl::Error::NotNullable),
9056 Some(len) => len,
9057 };
9058 if len == 0 {
9060 return Ok(());
9061 };
9062 depth.increment()?;
9063 let envelope_size = 8;
9064 let bytes_len = len * envelope_size;
9065 let offset = decoder.out_of_line_offset(bytes_len)?;
9066 let mut _next_ordinal_to_read = 0;
9068 let mut next_offset = offset;
9069 let end_offset = offset + bytes_len;
9070 _next_ordinal_to_read += 1;
9071 if next_offset >= end_offset {
9072 return Ok(());
9073 }
9074
9075 while _next_ordinal_to_read < 1 {
9077 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9078 _next_ordinal_to_read += 1;
9079 next_offset += envelope_size;
9080 }
9081
9082 let next_out_of_line = decoder.next_out_of_line();
9083 let handles_before = decoder.remaining_handles();
9084 if let Some((inlined, num_bytes, num_handles)) =
9085 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9086 {
9087 let member_inline_size =
9088 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9089 if inlined != (member_inline_size <= 4) {
9090 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9091 }
9092 let inner_offset;
9093 let mut inner_depth = depth.clone();
9094 if inlined {
9095 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9096 inner_offset = next_offset;
9097 } else {
9098 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9099 inner_depth.increment()?;
9100 }
9101 let val_ref = self.mapping_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9102 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9103 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9104 {
9105 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9106 }
9107 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9108 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9109 }
9110 }
9111
9112 next_offset += envelope_size;
9113 _next_ordinal_to_read += 1;
9114 if next_offset >= end_offset {
9115 return Ok(());
9116 }
9117
9118 while _next_ordinal_to_read < 2 {
9120 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9121 _next_ordinal_to_read += 1;
9122 next_offset += envelope_size;
9123 }
9124
9125 let next_out_of_line = decoder.next_out_of_line();
9126 let handles_before = decoder.remaining_handles();
9127 if let Some((inlined, num_bytes, num_handles)) =
9128 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9129 {
9130 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9131 if inlined != (member_inline_size <= 4) {
9132 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9133 }
9134 let inner_offset;
9135 let mut inner_depth = depth.clone();
9136 if inlined {
9137 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9138 inner_offset = next_offset;
9139 } else {
9140 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9141 inner_depth.increment()?;
9142 }
9143 let val_ref = self.ip4_addr.get_or_insert_with(|| {
9144 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
9145 });
9146 fidl::decode!(
9147 fidl::encoding::UnboundedVector<u8>,
9148 D,
9149 val_ref,
9150 decoder,
9151 inner_offset,
9152 inner_depth
9153 )?;
9154 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9155 {
9156 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9157 }
9158 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9159 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9160 }
9161 }
9162
9163 next_offset += envelope_size;
9164 _next_ordinal_to_read += 1;
9165 if next_offset >= end_offset {
9166 return Ok(());
9167 }
9168
9169 while _next_ordinal_to_read < 3 {
9171 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9172 _next_ordinal_to_read += 1;
9173 next_offset += envelope_size;
9174 }
9175
9176 let next_out_of_line = decoder.next_out_of_line();
9177 let handles_before = decoder.remaining_handles();
9178 if let Some((inlined, num_bytes, num_handles)) =
9179 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9180 {
9181 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9182 if inlined != (member_inline_size <= 4) {
9183 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9184 }
9185 let inner_offset;
9186 let mut inner_depth = depth.clone();
9187 if inlined {
9188 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9189 inner_offset = next_offset;
9190 } else {
9191 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9192 inner_depth.increment()?;
9193 }
9194 let val_ref = self.ip6_addr.get_or_insert_with(|| {
9195 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
9196 });
9197 fidl::decode!(
9198 fidl::encoding::UnboundedVector<u8>,
9199 D,
9200 val_ref,
9201 decoder,
9202 inner_offset,
9203 inner_depth
9204 )?;
9205 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9206 {
9207 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9208 }
9209 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9210 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9211 }
9212 }
9213
9214 next_offset += envelope_size;
9215 _next_ordinal_to_read += 1;
9216 if next_offset >= end_offset {
9217 return Ok(());
9218 }
9219
9220 while _next_ordinal_to_read < 4 {
9222 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9223 _next_ordinal_to_read += 1;
9224 next_offset += envelope_size;
9225 }
9226
9227 let next_out_of_line = decoder.next_out_of_line();
9228 let handles_before = decoder.remaining_handles();
9229 if let Some((inlined, num_bytes, num_handles)) =
9230 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9231 {
9232 let member_inline_size =
9233 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9234 if inlined != (member_inline_size <= 4) {
9235 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9236 }
9237 let inner_offset;
9238 let mut inner_depth = depth.clone();
9239 if inlined {
9240 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9241 inner_offset = next_offset;
9242 } else {
9243 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9244 inner_depth.increment()?;
9245 }
9246 let val_ref =
9247 self.remaining_time_ms.get_or_insert_with(|| fidl::new_empty!(u32, D));
9248 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
9249 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9250 {
9251 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9252 }
9253 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9254 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9255 }
9256 }
9257
9258 next_offset += envelope_size;
9259 _next_ordinal_to_read += 1;
9260 if next_offset >= end_offset {
9261 return Ok(());
9262 }
9263
9264 while _next_ordinal_to_read < 5 {
9266 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9267 _next_ordinal_to_read += 1;
9268 next_offset += envelope_size;
9269 }
9270
9271 let next_out_of_line = decoder.next_out_of_line();
9272 let handles_before = decoder.remaining_handles();
9273 if let Some((inlined, num_bytes, num_handles)) =
9274 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9275 {
9276 let member_inline_size =
9277 <Nat64ProtocolCounters as fidl::encoding::TypeMarker>::inline_size(
9278 decoder.context,
9279 );
9280 if inlined != (member_inline_size <= 4) {
9281 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9282 }
9283 let inner_offset;
9284 let mut inner_depth = depth.clone();
9285 if inlined {
9286 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9287 inner_offset = next_offset;
9288 } else {
9289 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9290 inner_depth.increment()?;
9291 }
9292 let val_ref =
9293 self.counters.get_or_insert_with(|| fidl::new_empty!(Nat64ProtocolCounters, D));
9294 fidl::decode!(
9295 Nat64ProtocolCounters,
9296 D,
9297 val_ref,
9298 decoder,
9299 inner_offset,
9300 inner_depth
9301 )?;
9302 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9303 {
9304 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9305 }
9306 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9307 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9308 }
9309 }
9310
9311 next_offset += envelope_size;
9312
9313 while next_offset < end_offset {
9315 _next_ordinal_to_read += 1;
9316 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9317 next_offset += envelope_size;
9318 }
9319
9320 Ok(())
9321 }
9322 }
9323
9324 impl Nat64PacketCounters {
9325 #[inline(always)]
9326 fn max_ordinal_present(&self) -> u64 {
9327 if let Some(_) = self.ipv6_to_ipv4_packets {
9328 return 2;
9329 }
9330 if let Some(_) = self.ipv4_to_ipv6_packets {
9331 return 1;
9332 }
9333 0
9334 }
9335 }
9336
9337 impl fidl::encoding::ValueTypeMarker for Nat64PacketCounters {
9338 type Borrowed<'a> = &'a Self;
9339 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9340 value
9341 }
9342 }
9343
9344 unsafe impl fidl::encoding::TypeMarker for Nat64PacketCounters {
9345 type Owned = Self;
9346
9347 #[inline(always)]
9348 fn inline_align(_context: fidl::encoding::Context) -> usize {
9349 8
9350 }
9351
9352 #[inline(always)]
9353 fn inline_size(_context: fidl::encoding::Context) -> usize {
9354 16
9355 }
9356 }
9357
9358 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64PacketCounters, D>
9359 for &Nat64PacketCounters
9360 {
9361 unsafe fn encode(
9362 self,
9363 encoder: &mut fidl::encoding::Encoder<'_, D>,
9364 offset: usize,
9365 mut depth: fidl::encoding::Depth,
9366 ) -> fidl::Result<()> {
9367 encoder.debug_check_bounds::<Nat64PacketCounters>(offset);
9368 let max_ordinal: u64 = self.max_ordinal_present();
9370 encoder.write_num(max_ordinal, offset);
9371 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9372 if max_ordinal == 0 {
9374 return Ok(());
9375 }
9376 depth.increment()?;
9377 let envelope_size = 8;
9378 let bytes_len = max_ordinal as usize * envelope_size;
9379 #[allow(unused_variables)]
9380 let offset = encoder.out_of_line_offset(bytes_len);
9381 let mut _prev_end_offset: usize = 0;
9382 if 1 > max_ordinal {
9383 return Ok(());
9384 }
9385
9386 let cur_offset: usize = (1 - 1) * envelope_size;
9389
9390 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9392
9393 fidl::encoding::encode_in_envelope_optional::<u64, D>(
9398 self.ipv4_to_ipv6_packets
9399 .as_ref()
9400 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9401 encoder,
9402 offset + cur_offset,
9403 depth,
9404 )?;
9405
9406 _prev_end_offset = cur_offset + envelope_size;
9407 if 2 > max_ordinal {
9408 return Ok(());
9409 }
9410
9411 let cur_offset: usize = (2 - 1) * envelope_size;
9414
9415 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9417
9418 fidl::encoding::encode_in_envelope_optional::<u64, D>(
9423 self.ipv6_to_ipv4_packets
9424 .as_ref()
9425 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9426 encoder,
9427 offset + cur_offset,
9428 depth,
9429 )?;
9430
9431 _prev_end_offset = cur_offset + envelope_size;
9432
9433 Ok(())
9434 }
9435 }
9436
9437 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64PacketCounters {
9438 #[inline(always)]
9439 fn new_empty() -> Self {
9440 Self::default()
9441 }
9442
9443 unsafe fn decode(
9444 &mut self,
9445 decoder: &mut fidl::encoding::Decoder<'_, D>,
9446 offset: usize,
9447 mut depth: fidl::encoding::Depth,
9448 ) -> fidl::Result<()> {
9449 decoder.debug_check_bounds::<Self>(offset);
9450 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9451 None => return Err(fidl::Error::NotNullable),
9452 Some(len) => len,
9453 };
9454 if len == 0 {
9456 return Ok(());
9457 };
9458 depth.increment()?;
9459 let envelope_size = 8;
9460 let bytes_len = len * envelope_size;
9461 let offset = decoder.out_of_line_offset(bytes_len)?;
9462 let mut _next_ordinal_to_read = 0;
9464 let mut next_offset = offset;
9465 let end_offset = offset + bytes_len;
9466 _next_ordinal_to_read += 1;
9467 if next_offset >= end_offset {
9468 return Ok(());
9469 }
9470
9471 while _next_ordinal_to_read < 1 {
9473 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9474 _next_ordinal_to_read += 1;
9475 next_offset += envelope_size;
9476 }
9477
9478 let next_out_of_line = decoder.next_out_of_line();
9479 let handles_before = decoder.remaining_handles();
9480 if let Some((inlined, num_bytes, num_handles)) =
9481 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9482 {
9483 let member_inline_size =
9484 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9485 if inlined != (member_inline_size <= 4) {
9486 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9487 }
9488 let inner_offset;
9489 let mut inner_depth = depth.clone();
9490 if inlined {
9491 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9492 inner_offset = next_offset;
9493 } else {
9494 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9495 inner_depth.increment()?;
9496 }
9497 let val_ref =
9498 self.ipv4_to_ipv6_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
9499 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9500 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9501 {
9502 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9503 }
9504 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9505 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9506 }
9507 }
9508
9509 next_offset += envelope_size;
9510 _next_ordinal_to_read += 1;
9511 if next_offset >= end_offset {
9512 return Ok(());
9513 }
9514
9515 while _next_ordinal_to_read < 2 {
9517 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9518 _next_ordinal_to_read += 1;
9519 next_offset += envelope_size;
9520 }
9521
9522 let next_out_of_line = decoder.next_out_of_line();
9523 let handles_before = decoder.remaining_handles();
9524 if let Some((inlined, num_bytes, num_handles)) =
9525 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9526 {
9527 let member_inline_size =
9528 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9529 if inlined != (member_inline_size <= 4) {
9530 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9531 }
9532 let inner_offset;
9533 let mut inner_depth = depth.clone();
9534 if inlined {
9535 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9536 inner_offset = next_offset;
9537 } else {
9538 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9539 inner_depth.increment()?;
9540 }
9541 let val_ref =
9542 self.ipv6_to_ipv4_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
9543 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9544 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9545 {
9546 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9547 }
9548 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9549 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9550 }
9551 }
9552
9553 next_offset += envelope_size;
9554
9555 while next_offset < end_offset {
9557 _next_ordinal_to_read += 1;
9558 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9559 next_offset += envelope_size;
9560 }
9561
9562 Ok(())
9563 }
9564 }
9565
9566 impl Nat64ProtocolCounters {
9567 #[inline(always)]
9568 fn max_ordinal_present(&self) -> u64 {
9569 if let Some(_) = self.total {
9570 return 4;
9571 }
9572 if let Some(_) = self.icmp {
9573 return 3;
9574 }
9575 if let Some(_) = self.udp {
9576 return 2;
9577 }
9578 if let Some(_) = self.tcp {
9579 return 1;
9580 }
9581 0
9582 }
9583 }
9584
9585 impl fidl::encoding::ValueTypeMarker for Nat64ProtocolCounters {
9586 type Borrowed<'a> = &'a Self;
9587 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9588 value
9589 }
9590 }
9591
9592 unsafe impl fidl::encoding::TypeMarker for Nat64ProtocolCounters {
9593 type Owned = Self;
9594
9595 #[inline(always)]
9596 fn inline_align(_context: fidl::encoding::Context) -> usize {
9597 8
9598 }
9599
9600 #[inline(always)]
9601 fn inline_size(_context: fidl::encoding::Context) -> usize {
9602 16
9603 }
9604 }
9605
9606 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64ProtocolCounters, D>
9607 for &Nat64ProtocolCounters
9608 {
9609 unsafe fn encode(
9610 self,
9611 encoder: &mut fidl::encoding::Encoder<'_, D>,
9612 offset: usize,
9613 mut depth: fidl::encoding::Depth,
9614 ) -> fidl::Result<()> {
9615 encoder.debug_check_bounds::<Nat64ProtocolCounters>(offset);
9616 let max_ordinal: u64 = self.max_ordinal_present();
9618 encoder.write_num(max_ordinal, offset);
9619 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9620 if max_ordinal == 0 {
9622 return Ok(());
9623 }
9624 depth.increment()?;
9625 let envelope_size = 8;
9626 let bytes_len = max_ordinal as usize * envelope_size;
9627 #[allow(unused_variables)]
9628 let offset = encoder.out_of_line_offset(bytes_len);
9629 let mut _prev_end_offset: usize = 0;
9630 if 1 > max_ordinal {
9631 return Ok(());
9632 }
9633
9634 let cur_offset: usize = (1 - 1) * envelope_size;
9637
9638 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9640
9641 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
9646 self.tcp
9647 .as_ref()
9648 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
9649 encoder,
9650 offset + cur_offset,
9651 depth,
9652 )?;
9653
9654 _prev_end_offset = cur_offset + envelope_size;
9655 if 2 > max_ordinal {
9656 return Ok(());
9657 }
9658
9659 let cur_offset: usize = (2 - 1) * envelope_size;
9662
9663 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9665
9666 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
9671 self.udp
9672 .as_ref()
9673 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
9674 encoder,
9675 offset + cur_offset,
9676 depth,
9677 )?;
9678
9679 _prev_end_offset = cur_offset + envelope_size;
9680 if 3 > max_ordinal {
9681 return Ok(());
9682 }
9683
9684 let cur_offset: usize = (3 - 1) * envelope_size;
9687
9688 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9690
9691 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
9696 self.icmp
9697 .as_ref()
9698 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
9699 encoder,
9700 offset + cur_offset,
9701 depth,
9702 )?;
9703
9704 _prev_end_offset = cur_offset + envelope_size;
9705 if 4 > max_ordinal {
9706 return Ok(());
9707 }
9708
9709 let cur_offset: usize = (4 - 1) * envelope_size;
9712
9713 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9715
9716 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
9721 self.total
9722 .as_ref()
9723 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
9724 encoder,
9725 offset + cur_offset,
9726 depth,
9727 )?;
9728
9729 _prev_end_offset = cur_offset + envelope_size;
9730
9731 Ok(())
9732 }
9733 }
9734
9735 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64ProtocolCounters {
9736 #[inline(always)]
9737 fn new_empty() -> Self {
9738 Self::default()
9739 }
9740
9741 unsafe fn decode(
9742 &mut self,
9743 decoder: &mut fidl::encoding::Decoder<'_, D>,
9744 offset: usize,
9745 mut depth: fidl::encoding::Depth,
9746 ) -> fidl::Result<()> {
9747 decoder.debug_check_bounds::<Self>(offset);
9748 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9749 None => return Err(fidl::Error::NotNullable),
9750 Some(len) => len,
9751 };
9752 if len == 0 {
9754 return Ok(());
9755 };
9756 depth.increment()?;
9757 let envelope_size = 8;
9758 let bytes_len = len * envelope_size;
9759 let offset = decoder.out_of_line_offset(bytes_len)?;
9760 let mut _next_ordinal_to_read = 0;
9762 let mut next_offset = offset;
9763 let end_offset = offset + bytes_len;
9764 _next_ordinal_to_read += 1;
9765 if next_offset >= end_offset {
9766 return Ok(());
9767 }
9768
9769 while _next_ordinal_to_read < 1 {
9771 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9772 _next_ordinal_to_read += 1;
9773 next_offset += envelope_size;
9774 }
9775
9776 let next_out_of_line = decoder.next_out_of_line();
9777 let handles_before = decoder.remaining_handles();
9778 if let Some((inlined, num_bytes, num_handles)) =
9779 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9780 {
9781 let member_inline_size =
9782 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
9783 decoder.context,
9784 );
9785 if inlined != (member_inline_size <= 4) {
9786 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9787 }
9788 let inner_offset;
9789 let mut inner_depth = depth.clone();
9790 if inlined {
9791 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9792 inner_offset = next_offset;
9793 } else {
9794 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9795 inner_depth.increment()?;
9796 }
9797 let val_ref =
9798 self.tcp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
9799 fidl::decode!(
9800 Nat64TrafficCounters,
9801 D,
9802 val_ref,
9803 decoder,
9804 inner_offset,
9805 inner_depth
9806 )?;
9807 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9808 {
9809 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9810 }
9811 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9812 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9813 }
9814 }
9815
9816 next_offset += envelope_size;
9817 _next_ordinal_to_read += 1;
9818 if next_offset >= end_offset {
9819 return Ok(());
9820 }
9821
9822 while _next_ordinal_to_read < 2 {
9824 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9825 _next_ordinal_to_read += 1;
9826 next_offset += envelope_size;
9827 }
9828
9829 let next_out_of_line = decoder.next_out_of_line();
9830 let handles_before = decoder.remaining_handles();
9831 if let Some((inlined, num_bytes, num_handles)) =
9832 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9833 {
9834 let member_inline_size =
9835 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
9836 decoder.context,
9837 );
9838 if inlined != (member_inline_size <= 4) {
9839 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9840 }
9841 let inner_offset;
9842 let mut inner_depth = depth.clone();
9843 if inlined {
9844 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9845 inner_offset = next_offset;
9846 } else {
9847 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9848 inner_depth.increment()?;
9849 }
9850 let val_ref =
9851 self.udp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
9852 fidl::decode!(
9853 Nat64TrafficCounters,
9854 D,
9855 val_ref,
9856 decoder,
9857 inner_offset,
9858 inner_depth
9859 )?;
9860 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9861 {
9862 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9863 }
9864 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9865 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9866 }
9867 }
9868
9869 next_offset += envelope_size;
9870 _next_ordinal_to_read += 1;
9871 if next_offset >= end_offset {
9872 return Ok(());
9873 }
9874
9875 while _next_ordinal_to_read < 3 {
9877 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9878 _next_ordinal_to_read += 1;
9879 next_offset += envelope_size;
9880 }
9881
9882 let next_out_of_line = decoder.next_out_of_line();
9883 let handles_before = decoder.remaining_handles();
9884 if let Some((inlined, num_bytes, num_handles)) =
9885 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9886 {
9887 let member_inline_size =
9888 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
9889 decoder.context,
9890 );
9891 if inlined != (member_inline_size <= 4) {
9892 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9893 }
9894 let inner_offset;
9895 let mut inner_depth = depth.clone();
9896 if inlined {
9897 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9898 inner_offset = next_offset;
9899 } else {
9900 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9901 inner_depth.increment()?;
9902 }
9903 let val_ref =
9904 self.icmp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
9905 fidl::decode!(
9906 Nat64TrafficCounters,
9907 D,
9908 val_ref,
9909 decoder,
9910 inner_offset,
9911 inner_depth
9912 )?;
9913 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9914 {
9915 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9916 }
9917 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9918 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9919 }
9920 }
9921
9922 next_offset += envelope_size;
9923 _next_ordinal_to_read += 1;
9924 if next_offset >= end_offset {
9925 return Ok(());
9926 }
9927
9928 while _next_ordinal_to_read < 4 {
9930 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9931 _next_ordinal_to_read += 1;
9932 next_offset += envelope_size;
9933 }
9934
9935 let next_out_of_line = decoder.next_out_of_line();
9936 let handles_before = decoder.remaining_handles();
9937 if let Some((inlined, num_bytes, num_handles)) =
9938 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9939 {
9940 let member_inline_size =
9941 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
9942 decoder.context,
9943 );
9944 if inlined != (member_inline_size <= 4) {
9945 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9946 }
9947 let inner_offset;
9948 let mut inner_depth = depth.clone();
9949 if inlined {
9950 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9951 inner_offset = next_offset;
9952 } else {
9953 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9954 inner_depth.increment()?;
9955 }
9956 let val_ref =
9957 self.total.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
9958 fidl::decode!(
9959 Nat64TrafficCounters,
9960 D,
9961 val_ref,
9962 decoder,
9963 inner_offset,
9964 inner_depth
9965 )?;
9966 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9967 {
9968 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9969 }
9970 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9971 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9972 }
9973 }
9974
9975 next_offset += envelope_size;
9976
9977 while next_offset < end_offset {
9979 _next_ordinal_to_read += 1;
9980 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9981 next_offset += envelope_size;
9982 }
9983
9984 Ok(())
9985 }
9986 }
9987
9988 impl Nat64TrafficCounters {
9989 #[inline(always)]
9990 fn max_ordinal_present(&self) -> u64 {
9991 if let Some(_) = self.ipv6_to_ipv4_bytes {
9992 return 4;
9993 }
9994 if let Some(_) = self.ipv6_to_ipv4_packets {
9995 return 3;
9996 }
9997 if let Some(_) = self.ipv4_to_ipv6_bytes {
9998 return 2;
9999 }
10000 if let Some(_) = self.ipv4_to_ipv6_packets {
10001 return 1;
10002 }
10003 0
10004 }
10005 }
10006
10007 impl fidl::encoding::ValueTypeMarker for Nat64TrafficCounters {
10008 type Borrowed<'a> = &'a Self;
10009 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10010 value
10011 }
10012 }
10013
10014 unsafe impl fidl::encoding::TypeMarker for Nat64TrafficCounters {
10015 type Owned = Self;
10016
10017 #[inline(always)]
10018 fn inline_align(_context: fidl::encoding::Context) -> usize {
10019 8
10020 }
10021
10022 #[inline(always)]
10023 fn inline_size(_context: fidl::encoding::Context) -> usize {
10024 16
10025 }
10026 }
10027
10028 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64TrafficCounters, D>
10029 for &Nat64TrafficCounters
10030 {
10031 unsafe fn encode(
10032 self,
10033 encoder: &mut fidl::encoding::Encoder<'_, D>,
10034 offset: usize,
10035 mut depth: fidl::encoding::Depth,
10036 ) -> fidl::Result<()> {
10037 encoder.debug_check_bounds::<Nat64TrafficCounters>(offset);
10038 let max_ordinal: u64 = self.max_ordinal_present();
10040 encoder.write_num(max_ordinal, offset);
10041 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10042 if max_ordinal == 0 {
10044 return Ok(());
10045 }
10046 depth.increment()?;
10047 let envelope_size = 8;
10048 let bytes_len = max_ordinal as usize * envelope_size;
10049 #[allow(unused_variables)]
10050 let offset = encoder.out_of_line_offset(bytes_len);
10051 let mut _prev_end_offset: usize = 0;
10052 if 1 > max_ordinal {
10053 return Ok(());
10054 }
10055
10056 let cur_offset: usize = (1 - 1) * envelope_size;
10059
10060 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10062
10063 fidl::encoding::encode_in_envelope_optional::<u64, D>(
10068 self.ipv4_to_ipv6_packets
10069 .as_ref()
10070 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
10071 encoder,
10072 offset + cur_offset,
10073 depth,
10074 )?;
10075
10076 _prev_end_offset = cur_offset + envelope_size;
10077 if 2 > max_ordinal {
10078 return Ok(());
10079 }
10080
10081 let cur_offset: usize = (2 - 1) * envelope_size;
10084
10085 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10087
10088 fidl::encoding::encode_in_envelope_optional::<u64, D>(
10093 self.ipv4_to_ipv6_bytes
10094 .as_ref()
10095 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
10096 encoder,
10097 offset + cur_offset,
10098 depth,
10099 )?;
10100
10101 _prev_end_offset = cur_offset + envelope_size;
10102 if 3 > max_ordinal {
10103 return Ok(());
10104 }
10105
10106 let cur_offset: usize = (3 - 1) * envelope_size;
10109
10110 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10112
10113 fidl::encoding::encode_in_envelope_optional::<u64, D>(
10118 self.ipv6_to_ipv4_packets
10119 .as_ref()
10120 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
10121 encoder,
10122 offset + cur_offset,
10123 depth,
10124 )?;
10125
10126 _prev_end_offset = cur_offset + envelope_size;
10127 if 4 > max_ordinal {
10128 return Ok(());
10129 }
10130
10131 let cur_offset: usize = (4 - 1) * envelope_size;
10134
10135 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10137
10138 fidl::encoding::encode_in_envelope_optional::<u64, D>(
10143 self.ipv6_to_ipv4_bytes
10144 .as_ref()
10145 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
10146 encoder,
10147 offset + cur_offset,
10148 depth,
10149 )?;
10150
10151 _prev_end_offset = cur_offset + envelope_size;
10152
10153 Ok(())
10154 }
10155 }
10156
10157 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64TrafficCounters {
10158 #[inline(always)]
10159 fn new_empty() -> Self {
10160 Self::default()
10161 }
10162
10163 unsafe fn decode(
10164 &mut self,
10165 decoder: &mut fidl::encoding::Decoder<'_, D>,
10166 offset: usize,
10167 mut depth: fidl::encoding::Depth,
10168 ) -> fidl::Result<()> {
10169 decoder.debug_check_bounds::<Self>(offset);
10170 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10171 None => return Err(fidl::Error::NotNullable),
10172 Some(len) => len,
10173 };
10174 if len == 0 {
10176 return Ok(());
10177 };
10178 depth.increment()?;
10179 let envelope_size = 8;
10180 let bytes_len = len * envelope_size;
10181 let offset = decoder.out_of_line_offset(bytes_len)?;
10182 let mut _next_ordinal_to_read = 0;
10184 let mut next_offset = offset;
10185 let end_offset = offset + bytes_len;
10186 _next_ordinal_to_read += 1;
10187 if next_offset >= end_offset {
10188 return Ok(());
10189 }
10190
10191 while _next_ordinal_to_read < 1 {
10193 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10194 _next_ordinal_to_read += 1;
10195 next_offset += envelope_size;
10196 }
10197
10198 let next_out_of_line = decoder.next_out_of_line();
10199 let handles_before = decoder.remaining_handles();
10200 if let Some((inlined, num_bytes, num_handles)) =
10201 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10202 {
10203 let member_inline_size =
10204 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10205 if inlined != (member_inline_size <= 4) {
10206 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10207 }
10208 let inner_offset;
10209 let mut inner_depth = depth.clone();
10210 if inlined {
10211 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10212 inner_offset = next_offset;
10213 } else {
10214 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10215 inner_depth.increment()?;
10216 }
10217 let val_ref =
10218 self.ipv4_to_ipv6_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
10219 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
10220 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10221 {
10222 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10223 }
10224 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10225 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10226 }
10227 }
10228
10229 next_offset += envelope_size;
10230 _next_ordinal_to_read += 1;
10231 if next_offset >= end_offset {
10232 return Ok(());
10233 }
10234
10235 while _next_ordinal_to_read < 2 {
10237 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10238 _next_ordinal_to_read += 1;
10239 next_offset += envelope_size;
10240 }
10241
10242 let next_out_of_line = decoder.next_out_of_line();
10243 let handles_before = decoder.remaining_handles();
10244 if let Some((inlined, num_bytes, num_handles)) =
10245 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10246 {
10247 let member_inline_size =
10248 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10249 if inlined != (member_inline_size <= 4) {
10250 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10251 }
10252 let inner_offset;
10253 let mut inner_depth = depth.clone();
10254 if inlined {
10255 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10256 inner_offset = next_offset;
10257 } else {
10258 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10259 inner_depth.increment()?;
10260 }
10261 let val_ref =
10262 self.ipv4_to_ipv6_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
10263 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
10264 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10265 {
10266 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10267 }
10268 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10269 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10270 }
10271 }
10272
10273 next_offset += envelope_size;
10274 _next_ordinal_to_read += 1;
10275 if next_offset >= end_offset {
10276 return Ok(());
10277 }
10278
10279 while _next_ordinal_to_read < 3 {
10281 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10282 _next_ordinal_to_read += 1;
10283 next_offset += envelope_size;
10284 }
10285
10286 let next_out_of_line = decoder.next_out_of_line();
10287 let handles_before = decoder.remaining_handles();
10288 if let Some((inlined, num_bytes, num_handles)) =
10289 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10290 {
10291 let member_inline_size =
10292 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10293 if inlined != (member_inline_size <= 4) {
10294 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10295 }
10296 let inner_offset;
10297 let mut inner_depth = depth.clone();
10298 if inlined {
10299 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10300 inner_offset = next_offset;
10301 } else {
10302 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10303 inner_depth.increment()?;
10304 }
10305 let val_ref =
10306 self.ipv6_to_ipv4_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
10307 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
10308 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10309 {
10310 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10311 }
10312 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10313 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10314 }
10315 }
10316
10317 next_offset += envelope_size;
10318 _next_ordinal_to_read += 1;
10319 if next_offset >= end_offset {
10320 return Ok(());
10321 }
10322
10323 while _next_ordinal_to_read < 4 {
10325 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10326 _next_ordinal_to_read += 1;
10327 next_offset += envelope_size;
10328 }
10329
10330 let next_out_of_line = decoder.next_out_of_line();
10331 let handles_before = decoder.remaining_handles();
10332 if let Some((inlined, num_bytes, num_handles)) =
10333 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10334 {
10335 let member_inline_size =
10336 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10337 if inlined != (member_inline_size <= 4) {
10338 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10339 }
10340 let inner_offset;
10341 let mut inner_depth = depth.clone();
10342 if inlined {
10343 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10344 inner_offset = next_offset;
10345 } else {
10346 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10347 inner_depth.increment()?;
10348 }
10349 let val_ref =
10350 self.ipv6_to_ipv4_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
10351 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
10352 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10353 {
10354 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10355 }
10356 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10357 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10358 }
10359 }
10360
10361 next_offset += envelope_size;
10362
10363 while next_offset < end_offset {
10365 _next_ordinal_to_read += 1;
10366 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10367 next_offset += envelope_size;
10368 }
10369
10370 Ok(())
10371 }
10372 }
10373
10374 impl NetworkScanParameters {
10375 #[inline(always)]
10376 fn max_ordinal_present(&self) -> u64 {
10377 if let Some(_) = self.tx_power_dbm {
10378 return 2;
10379 }
10380 if let Some(_) = self.channels {
10381 return 1;
10382 }
10383 0
10384 }
10385 }
10386
10387 impl fidl::encoding::ValueTypeMarker for NetworkScanParameters {
10388 type Borrowed<'a> = &'a Self;
10389 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10390 value
10391 }
10392 }
10393
10394 unsafe impl fidl::encoding::TypeMarker for NetworkScanParameters {
10395 type Owned = Self;
10396
10397 #[inline(always)]
10398 fn inline_align(_context: fidl::encoding::Context) -> usize {
10399 8
10400 }
10401
10402 #[inline(always)]
10403 fn inline_size(_context: fidl::encoding::Context) -> usize {
10404 16
10405 }
10406 }
10407
10408 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetworkScanParameters, D>
10409 for &NetworkScanParameters
10410 {
10411 unsafe fn encode(
10412 self,
10413 encoder: &mut fidl::encoding::Encoder<'_, D>,
10414 offset: usize,
10415 mut depth: fidl::encoding::Depth,
10416 ) -> fidl::Result<()> {
10417 encoder.debug_check_bounds::<NetworkScanParameters>(offset);
10418 let max_ordinal: u64 = self.max_ordinal_present();
10420 encoder.write_num(max_ordinal, offset);
10421 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10422 if max_ordinal == 0 {
10424 return Ok(());
10425 }
10426 depth.increment()?;
10427 let envelope_size = 8;
10428 let bytes_len = max_ordinal as usize * envelope_size;
10429 #[allow(unused_variables)]
10430 let offset = encoder.out_of_line_offset(bytes_len);
10431 let mut _prev_end_offset: usize = 0;
10432 if 1 > max_ordinal {
10433 return Ok(());
10434 }
10435
10436 let cur_offset: usize = (1 - 1) * envelope_size;
10439
10440 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10442
10443 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u16, 200>, D>(
10448 self.channels.as_ref().map(
10449 <fidl::encoding::Vector<u16, 200> as fidl::encoding::ValueTypeMarker>::borrow,
10450 ),
10451 encoder,
10452 offset + cur_offset,
10453 depth,
10454 )?;
10455
10456 _prev_end_offset = cur_offset + envelope_size;
10457 if 2 > max_ordinal {
10458 return Ok(());
10459 }
10460
10461 let cur_offset: usize = (2 - 1) * envelope_size;
10464
10465 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10467
10468 fidl::encoding::encode_in_envelope_optional::<i8, D>(
10473 self.tx_power_dbm.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
10474 encoder,
10475 offset + cur_offset,
10476 depth,
10477 )?;
10478
10479 _prev_end_offset = cur_offset + envelope_size;
10480
10481 Ok(())
10482 }
10483 }
10484
10485 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkScanParameters {
10486 #[inline(always)]
10487 fn new_empty() -> Self {
10488 Self::default()
10489 }
10490
10491 unsafe fn decode(
10492 &mut self,
10493 decoder: &mut fidl::encoding::Decoder<'_, D>,
10494 offset: usize,
10495 mut depth: fidl::encoding::Depth,
10496 ) -> fidl::Result<()> {
10497 decoder.debug_check_bounds::<Self>(offset);
10498 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10499 None => return Err(fidl::Error::NotNullable),
10500 Some(len) => len,
10501 };
10502 if len == 0 {
10504 return Ok(());
10505 };
10506 depth.increment()?;
10507 let envelope_size = 8;
10508 let bytes_len = len * envelope_size;
10509 let offset = decoder.out_of_line_offset(bytes_len)?;
10510 let mut _next_ordinal_to_read = 0;
10512 let mut next_offset = offset;
10513 let end_offset = offset + bytes_len;
10514 _next_ordinal_to_read += 1;
10515 if next_offset >= end_offset {
10516 return Ok(());
10517 }
10518
10519 while _next_ordinal_to_read < 1 {
10521 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10522 _next_ordinal_to_read += 1;
10523 next_offset += envelope_size;
10524 }
10525
10526 let next_out_of_line = decoder.next_out_of_line();
10527 let handles_before = decoder.remaining_handles();
10528 if let Some((inlined, num_bytes, num_handles)) =
10529 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10530 {
10531 let member_inline_size =
10532 <fidl::encoding::Vector<u16, 200> as fidl::encoding::TypeMarker>::inline_size(
10533 decoder.context,
10534 );
10535 if inlined != (member_inline_size <= 4) {
10536 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10537 }
10538 let inner_offset;
10539 let mut inner_depth = depth.clone();
10540 if inlined {
10541 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10542 inner_offset = next_offset;
10543 } else {
10544 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10545 inner_depth.increment()?;
10546 }
10547 let val_ref = self
10548 .channels
10549 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u16, 200>, D));
10550 fidl::decode!(fidl::encoding::Vector<u16, 200>, D, val_ref, decoder, inner_offset, inner_depth)?;
10551 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10552 {
10553 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10554 }
10555 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10556 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10557 }
10558 }
10559
10560 next_offset += envelope_size;
10561 _next_ordinal_to_read += 1;
10562 if next_offset >= end_offset {
10563 return Ok(());
10564 }
10565
10566 while _next_ordinal_to_read < 2 {
10568 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10569 _next_ordinal_to_read += 1;
10570 next_offset += envelope_size;
10571 }
10572
10573 let next_out_of_line = decoder.next_out_of_line();
10574 let handles_before = decoder.remaining_handles();
10575 if let Some((inlined, num_bytes, num_handles)) =
10576 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10577 {
10578 let member_inline_size =
10579 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10580 if inlined != (member_inline_size <= 4) {
10581 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10582 }
10583 let inner_offset;
10584 let mut inner_depth = depth.clone();
10585 if inlined {
10586 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10587 inner_offset = next_offset;
10588 } else {
10589 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10590 inner_depth.increment()?;
10591 }
10592 let val_ref = self.tx_power_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
10593 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
10594 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10595 {
10596 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10597 }
10598 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10599 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10600 }
10601 }
10602
10603 next_offset += envelope_size;
10604
10605 while next_offset < end_offset {
10607 _next_ordinal_to_read += 1;
10608 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10609 next_offset += envelope_size;
10610 }
10611
10612 Ok(())
10613 }
10614 }
10615
10616 impl OnMeshPrefix {
10617 #[inline(always)]
10618 fn max_ordinal_present(&self) -> u64 {
10619 if let Some(_) = self.slaac_valid {
10620 return 5;
10621 }
10622 if let Some(_) = self.slaac_preferred {
10623 return 4;
10624 }
10625 if let Some(_) = self.stable {
10626 return 3;
10627 }
10628 if let Some(_) = self.default_route_preference {
10629 return 2;
10630 }
10631 if let Some(_) = self.subnet {
10632 return 1;
10633 }
10634 0
10635 }
10636 }
10637
10638 impl fidl::encoding::ValueTypeMarker for OnMeshPrefix {
10639 type Borrowed<'a> = &'a Self;
10640 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10641 value
10642 }
10643 }
10644
10645 unsafe impl fidl::encoding::TypeMarker for OnMeshPrefix {
10646 type Owned = Self;
10647
10648 #[inline(always)]
10649 fn inline_align(_context: fidl::encoding::Context) -> usize {
10650 8
10651 }
10652
10653 #[inline(always)]
10654 fn inline_size(_context: fidl::encoding::Context) -> usize {
10655 16
10656 }
10657 }
10658
10659 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OnMeshPrefix, D>
10660 for &OnMeshPrefix
10661 {
10662 unsafe fn encode(
10663 self,
10664 encoder: &mut fidl::encoding::Encoder<'_, D>,
10665 offset: usize,
10666 mut depth: fidl::encoding::Depth,
10667 ) -> fidl::Result<()> {
10668 encoder.debug_check_bounds::<OnMeshPrefix>(offset);
10669 let max_ordinal: u64 = self.max_ordinal_present();
10671 encoder.write_num(max_ordinal, offset);
10672 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10673 if max_ordinal == 0 {
10675 return Ok(());
10676 }
10677 depth.increment()?;
10678 let envelope_size = 8;
10679 let bytes_len = max_ordinal as usize * envelope_size;
10680 #[allow(unused_variables)]
10681 let offset = encoder.out_of_line_offset(bytes_len);
10682 let mut _prev_end_offset: usize = 0;
10683 if 1 > max_ordinal {
10684 return Ok(());
10685 }
10686
10687 let cur_offset: usize = (1 - 1) * envelope_size;
10690
10691 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10693
10694 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>(
10699 self.subnet.as_ref().map(<fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow),
10700 encoder, offset + cur_offset, depth
10701 )?;
10702
10703 _prev_end_offset = cur_offset + envelope_size;
10704 if 2 > max_ordinal {
10705 return Ok(());
10706 }
10707
10708 let cur_offset: usize = (2 - 1) * envelope_size;
10711
10712 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10714
10715 fidl::encoding::encode_in_envelope_optional::<RoutePreference, D>(
10720 self.default_route_preference
10721 .as_ref()
10722 .map(<RoutePreference as fidl::encoding::ValueTypeMarker>::borrow),
10723 encoder,
10724 offset + cur_offset,
10725 depth,
10726 )?;
10727
10728 _prev_end_offset = cur_offset + envelope_size;
10729 if 3 > max_ordinal {
10730 return Ok(());
10731 }
10732
10733 let cur_offset: usize = (3 - 1) * envelope_size;
10736
10737 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10739
10740 fidl::encoding::encode_in_envelope_optional::<bool, D>(
10745 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10746 encoder,
10747 offset + cur_offset,
10748 depth,
10749 )?;
10750
10751 _prev_end_offset = cur_offset + envelope_size;
10752 if 4 > max_ordinal {
10753 return Ok(());
10754 }
10755
10756 let cur_offset: usize = (4 - 1) * envelope_size;
10759
10760 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10762
10763 fidl::encoding::encode_in_envelope_optional::<bool, D>(
10768 self.slaac_preferred
10769 .as_ref()
10770 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10771 encoder,
10772 offset + cur_offset,
10773 depth,
10774 )?;
10775
10776 _prev_end_offset = cur_offset + envelope_size;
10777 if 5 > max_ordinal {
10778 return Ok(());
10779 }
10780
10781 let cur_offset: usize = (5 - 1) * envelope_size;
10784
10785 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10787
10788 fidl::encoding::encode_in_envelope_optional::<bool, D>(
10793 self.slaac_valid.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10794 encoder,
10795 offset + cur_offset,
10796 depth,
10797 )?;
10798
10799 _prev_end_offset = cur_offset + envelope_size;
10800
10801 Ok(())
10802 }
10803 }
10804
10805 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OnMeshPrefix {
10806 #[inline(always)]
10807 fn new_empty() -> Self {
10808 Self::default()
10809 }
10810
10811 unsafe fn decode(
10812 &mut self,
10813 decoder: &mut fidl::encoding::Decoder<'_, D>,
10814 offset: usize,
10815 mut depth: fidl::encoding::Depth,
10816 ) -> fidl::Result<()> {
10817 decoder.debug_check_bounds::<Self>(offset);
10818 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10819 None => return Err(fidl::Error::NotNullable),
10820 Some(len) => len,
10821 };
10822 if len == 0 {
10824 return Ok(());
10825 };
10826 depth.increment()?;
10827 let envelope_size = 8;
10828 let bytes_len = len * envelope_size;
10829 let offset = decoder.out_of_line_offset(bytes_len)?;
10830 let mut _next_ordinal_to_read = 0;
10832 let mut next_offset = offset;
10833 let end_offset = offset + bytes_len;
10834 _next_ordinal_to_read += 1;
10835 if next_offset >= end_offset {
10836 return Ok(());
10837 }
10838
10839 while _next_ordinal_to_read < 1 {
10841 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10842 _next_ordinal_to_read += 1;
10843 next_offset += envelope_size;
10844 }
10845
10846 let next_out_of_line = decoder.next_out_of_line();
10847 let handles_before = decoder.remaining_handles();
10848 if let Some((inlined, num_bytes, num_handles)) =
10849 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10850 {
10851 let member_inline_size = <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10852 if inlined != (member_inline_size <= 4) {
10853 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10854 }
10855 let inner_offset;
10856 let mut inner_depth = depth.clone();
10857 if inlined {
10858 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10859 inner_offset = next_offset;
10860 } else {
10861 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10862 inner_depth.increment()?;
10863 }
10864 let val_ref = self.subnet.get_or_insert_with(|| {
10865 fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D)
10866 });
10867 fidl::decode!(
10868 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
10869 D,
10870 val_ref,
10871 decoder,
10872 inner_offset,
10873 inner_depth
10874 )?;
10875 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10876 {
10877 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10878 }
10879 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10880 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10881 }
10882 }
10883
10884 next_offset += envelope_size;
10885 _next_ordinal_to_read += 1;
10886 if next_offset >= end_offset {
10887 return Ok(());
10888 }
10889
10890 while _next_ordinal_to_read < 2 {
10892 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10893 _next_ordinal_to_read += 1;
10894 next_offset += envelope_size;
10895 }
10896
10897 let next_out_of_line = decoder.next_out_of_line();
10898 let handles_before = decoder.remaining_handles();
10899 if let Some((inlined, num_bytes, num_handles)) =
10900 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10901 {
10902 let member_inline_size =
10903 <RoutePreference as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10904 if inlined != (member_inline_size <= 4) {
10905 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10906 }
10907 let inner_offset;
10908 let mut inner_depth = depth.clone();
10909 if inlined {
10910 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10911 inner_offset = next_offset;
10912 } else {
10913 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10914 inner_depth.increment()?;
10915 }
10916 let val_ref = self
10917 .default_route_preference
10918 .get_or_insert_with(|| fidl::new_empty!(RoutePreference, D));
10919 fidl::decode!(RoutePreference, D, val_ref, decoder, inner_offset, inner_depth)?;
10920 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10921 {
10922 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10923 }
10924 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10925 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10926 }
10927 }
10928
10929 next_offset += envelope_size;
10930 _next_ordinal_to_read += 1;
10931 if next_offset >= end_offset {
10932 return Ok(());
10933 }
10934
10935 while _next_ordinal_to_read < 3 {
10937 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10938 _next_ordinal_to_read += 1;
10939 next_offset += envelope_size;
10940 }
10941
10942 let next_out_of_line = decoder.next_out_of_line();
10943 let handles_before = decoder.remaining_handles();
10944 if let Some((inlined, num_bytes, num_handles)) =
10945 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10946 {
10947 let member_inline_size =
10948 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10949 if inlined != (member_inline_size <= 4) {
10950 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10951 }
10952 let inner_offset;
10953 let mut inner_depth = depth.clone();
10954 if inlined {
10955 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10956 inner_offset = next_offset;
10957 } else {
10958 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10959 inner_depth.increment()?;
10960 }
10961 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
10962 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10963 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10964 {
10965 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10966 }
10967 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10968 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10969 }
10970 }
10971
10972 next_offset += envelope_size;
10973 _next_ordinal_to_read += 1;
10974 if next_offset >= end_offset {
10975 return Ok(());
10976 }
10977
10978 while _next_ordinal_to_read < 4 {
10980 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10981 _next_ordinal_to_read += 1;
10982 next_offset += envelope_size;
10983 }
10984
10985 let next_out_of_line = decoder.next_out_of_line();
10986 let handles_before = decoder.remaining_handles();
10987 if let Some((inlined, num_bytes, num_handles)) =
10988 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10989 {
10990 let member_inline_size =
10991 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10992 if inlined != (member_inline_size <= 4) {
10993 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10994 }
10995 let inner_offset;
10996 let mut inner_depth = depth.clone();
10997 if inlined {
10998 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10999 inner_offset = next_offset;
11000 } else {
11001 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11002 inner_depth.increment()?;
11003 }
11004 let val_ref = self.slaac_preferred.get_or_insert_with(|| fidl::new_empty!(bool, D));
11005 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11006 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11007 {
11008 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11009 }
11010 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11011 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11012 }
11013 }
11014
11015 next_offset += envelope_size;
11016 _next_ordinal_to_read += 1;
11017 if next_offset >= end_offset {
11018 return Ok(());
11019 }
11020
11021 while _next_ordinal_to_read < 5 {
11023 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11024 _next_ordinal_to_read += 1;
11025 next_offset += envelope_size;
11026 }
11027
11028 let next_out_of_line = decoder.next_out_of_line();
11029 let handles_before = decoder.remaining_handles();
11030 if let Some((inlined, num_bytes, num_handles)) =
11031 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11032 {
11033 let member_inline_size =
11034 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11035 if inlined != (member_inline_size <= 4) {
11036 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11037 }
11038 let inner_offset;
11039 let mut inner_depth = depth.clone();
11040 if inlined {
11041 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11042 inner_offset = next_offset;
11043 } else {
11044 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11045 inner_depth.increment()?;
11046 }
11047 let val_ref = self.slaac_valid.get_or_insert_with(|| fidl::new_empty!(bool, D));
11048 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11049 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11050 {
11051 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11052 }
11053 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11054 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11055 }
11056 }
11057
11058 next_offset += envelope_size;
11059
11060 while next_offset < end_offset {
11062 _next_ordinal_to_read += 1;
11063 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11064 next_offset += envelope_size;
11065 }
11066
11067 Ok(())
11068 }
11069 }
11070
11071 impl PdProcessedRaInfo {
11072 #[inline(always)]
11073 fn max_ordinal_present(&self) -> u64 {
11074 if let Some(_) = self.last_platform_ra_msec {
11075 return 3;
11076 }
11077 if let Some(_) = self.num_platform_pio_processed {
11078 return 2;
11079 }
11080 if let Some(_) = self.num_platform_ra_received {
11081 return 1;
11082 }
11083 0
11084 }
11085 }
11086
11087 impl fidl::encoding::ValueTypeMarker for PdProcessedRaInfo {
11088 type Borrowed<'a> = &'a Self;
11089 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11090 value
11091 }
11092 }
11093
11094 unsafe impl fidl::encoding::TypeMarker for PdProcessedRaInfo {
11095 type Owned = Self;
11096
11097 #[inline(always)]
11098 fn inline_align(_context: fidl::encoding::Context) -> usize {
11099 8
11100 }
11101
11102 #[inline(always)]
11103 fn inline_size(_context: fidl::encoding::Context) -> usize {
11104 16
11105 }
11106 }
11107
11108 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PdProcessedRaInfo, D>
11109 for &PdProcessedRaInfo
11110 {
11111 unsafe fn encode(
11112 self,
11113 encoder: &mut fidl::encoding::Encoder<'_, D>,
11114 offset: usize,
11115 mut depth: fidl::encoding::Depth,
11116 ) -> fidl::Result<()> {
11117 encoder.debug_check_bounds::<PdProcessedRaInfo>(offset);
11118 let max_ordinal: u64 = self.max_ordinal_present();
11120 encoder.write_num(max_ordinal, offset);
11121 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11122 if max_ordinal == 0 {
11124 return Ok(());
11125 }
11126 depth.increment()?;
11127 let envelope_size = 8;
11128 let bytes_len = max_ordinal as usize * envelope_size;
11129 #[allow(unused_variables)]
11130 let offset = encoder.out_of_line_offset(bytes_len);
11131 let mut _prev_end_offset: usize = 0;
11132 if 1 > max_ordinal {
11133 return Ok(());
11134 }
11135
11136 let cur_offset: usize = (1 - 1) * envelope_size;
11139
11140 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11142
11143 fidl::encoding::encode_in_envelope_optional::<u32, D>(
11148 self.num_platform_ra_received
11149 .as_ref()
11150 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
11151 encoder,
11152 offset + cur_offset,
11153 depth,
11154 )?;
11155
11156 _prev_end_offset = cur_offset + envelope_size;
11157 if 2 > max_ordinal {
11158 return Ok(());
11159 }
11160
11161 let cur_offset: usize = (2 - 1) * envelope_size;
11164
11165 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11167
11168 fidl::encoding::encode_in_envelope_optional::<u32, D>(
11173 self.num_platform_pio_processed
11174 .as_ref()
11175 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
11176 encoder,
11177 offset + cur_offset,
11178 depth,
11179 )?;
11180
11181 _prev_end_offset = cur_offset + envelope_size;
11182 if 3 > max_ordinal {
11183 return Ok(());
11184 }
11185
11186 let cur_offset: usize = (3 - 1) * envelope_size;
11189
11190 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11192
11193 fidl::encoding::encode_in_envelope_optional::<u32, D>(
11198 self.last_platform_ra_msec
11199 .as_ref()
11200 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
11201 encoder,
11202 offset + cur_offset,
11203 depth,
11204 )?;
11205
11206 _prev_end_offset = cur_offset + envelope_size;
11207
11208 Ok(())
11209 }
11210 }
11211
11212 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PdProcessedRaInfo {
11213 #[inline(always)]
11214 fn new_empty() -> Self {
11215 Self::default()
11216 }
11217
11218 unsafe fn decode(
11219 &mut self,
11220 decoder: &mut fidl::encoding::Decoder<'_, D>,
11221 offset: usize,
11222 mut depth: fidl::encoding::Depth,
11223 ) -> fidl::Result<()> {
11224 decoder.debug_check_bounds::<Self>(offset);
11225 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11226 None => return Err(fidl::Error::NotNullable),
11227 Some(len) => len,
11228 };
11229 if len == 0 {
11231 return Ok(());
11232 };
11233 depth.increment()?;
11234 let envelope_size = 8;
11235 let bytes_len = len * envelope_size;
11236 let offset = decoder.out_of_line_offset(bytes_len)?;
11237 let mut _next_ordinal_to_read = 0;
11239 let mut next_offset = offset;
11240 let end_offset = offset + bytes_len;
11241 _next_ordinal_to_read += 1;
11242 if next_offset >= end_offset {
11243 return Ok(());
11244 }
11245
11246 while _next_ordinal_to_read < 1 {
11248 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11249 _next_ordinal_to_read += 1;
11250 next_offset += envelope_size;
11251 }
11252
11253 let next_out_of_line = decoder.next_out_of_line();
11254 let handles_before = decoder.remaining_handles();
11255 if let Some((inlined, num_bytes, num_handles)) =
11256 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11257 {
11258 let member_inline_size =
11259 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11260 if inlined != (member_inline_size <= 4) {
11261 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11262 }
11263 let inner_offset;
11264 let mut inner_depth = depth.clone();
11265 if inlined {
11266 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11267 inner_offset = next_offset;
11268 } else {
11269 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11270 inner_depth.increment()?;
11271 }
11272 let val_ref =
11273 self.num_platform_ra_received.get_or_insert_with(|| fidl::new_empty!(u32, D));
11274 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
11275 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11276 {
11277 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11278 }
11279 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11280 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11281 }
11282 }
11283
11284 next_offset += envelope_size;
11285 _next_ordinal_to_read += 1;
11286 if next_offset >= end_offset {
11287 return Ok(());
11288 }
11289
11290 while _next_ordinal_to_read < 2 {
11292 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11293 _next_ordinal_to_read += 1;
11294 next_offset += envelope_size;
11295 }
11296
11297 let next_out_of_line = decoder.next_out_of_line();
11298 let handles_before = decoder.remaining_handles();
11299 if let Some((inlined, num_bytes, num_handles)) =
11300 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11301 {
11302 let member_inline_size =
11303 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11304 if inlined != (member_inline_size <= 4) {
11305 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11306 }
11307 let inner_offset;
11308 let mut inner_depth = depth.clone();
11309 if inlined {
11310 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11311 inner_offset = next_offset;
11312 } else {
11313 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11314 inner_depth.increment()?;
11315 }
11316 let val_ref =
11317 self.num_platform_pio_processed.get_or_insert_with(|| fidl::new_empty!(u32, D));
11318 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
11319 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11320 {
11321 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11322 }
11323 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11324 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11325 }
11326 }
11327
11328 next_offset += envelope_size;
11329 _next_ordinal_to_read += 1;
11330 if next_offset >= end_offset {
11331 return Ok(());
11332 }
11333
11334 while _next_ordinal_to_read < 3 {
11336 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11337 _next_ordinal_to_read += 1;
11338 next_offset += envelope_size;
11339 }
11340
11341 let next_out_of_line = decoder.next_out_of_line();
11342 let handles_before = decoder.remaining_handles();
11343 if let Some((inlined, num_bytes, num_handles)) =
11344 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11345 {
11346 let member_inline_size =
11347 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11348 if inlined != (member_inline_size <= 4) {
11349 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11350 }
11351 let inner_offset;
11352 let mut inner_depth = depth.clone();
11353 if inlined {
11354 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11355 inner_offset = next_offset;
11356 } else {
11357 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11358 inner_depth.increment()?;
11359 }
11360 let val_ref =
11361 self.last_platform_ra_msec.get_or_insert_with(|| fidl::new_empty!(u32, D));
11362 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
11363 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11364 {
11365 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11366 }
11367 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11368 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11369 }
11370 }
11371
11372 next_offset += envelope_size;
11373
11374 while next_offset < end_offset {
11376 _next_ordinal_to_read += 1;
11377 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11378 next_offset += envelope_size;
11379 }
11380
11381 Ok(())
11382 }
11383 }
11384
11385 impl SrpServerInfo {
11386 #[inline(always)]
11387 fn max_ordinal_present(&self) -> u64 {
11388 if let Some(_) = self.services_registration {
11389 return 6;
11390 }
11391 if let Some(_) = self.hosts_registration {
11392 return 5;
11393 }
11394 if let Some(_) = self.response_counters {
11395 return 4;
11396 }
11397 if let Some(_) = self.address_mode {
11398 return 3;
11399 }
11400 if let Some(_) = self.port {
11401 return 2;
11402 }
11403 if let Some(_) = self.state {
11404 return 1;
11405 }
11406 0
11407 }
11408 }
11409
11410 impl fidl::encoding::ValueTypeMarker for SrpServerInfo {
11411 type Borrowed<'a> = &'a Self;
11412 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11413 value
11414 }
11415 }
11416
11417 unsafe impl fidl::encoding::TypeMarker for SrpServerInfo {
11418 type Owned = Self;
11419
11420 #[inline(always)]
11421 fn inline_align(_context: fidl::encoding::Context) -> usize {
11422 8
11423 }
11424
11425 #[inline(always)]
11426 fn inline_size(_context: fidl::encoding::Context) -> usize {
11427 16
11428 }
11429 }
11430
11431 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerInfo, D>
11432 for &SrpServerInfo
11433 {
11434 unsafe fn encode(
11435 self,
11436 encoder: &mut fidl::encoding::Encoder<'_, D>,
11437 offset: usize,
11438 mut depth: fidl::encoding::Depth,
11439 ) -> fidl::Result<()> {
11440 encoder.debug_check_bounds::<SrpServerInfo>(offset);
11441 let max_ordinal: u64 = self.max_ordinal_present();
11443 encoder.write_num(max_ordinal, offset);
11444 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11445 if max_ordinal == 0 {
11447 return Ok(());
11448 }
11449 depth.increment()?;
11450 let envelope_size = 8;
11451 let bytes_len = max_ordinal as usize * envelope_size;
11452 #[allow(unused_variables)]
11453 let offset = encoder.out_of_line_offset(bytes_len);
11454 let mut _prev_end_offset: usize = 0;
11455 if 1 > max_ordinal {
11456 return Ok(());
11457 }
11458
11459 let cur_offset: usize = (1 - 1) * envelope_size;
11462
11463 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11465
11466 fidl::encoding::encode_in_envelope_optional::<SrpServerState, D>(
11471 self.state
11472 .as_ref()
11473 .map(<SrpServerState as fidl::encoding::ValueTypeMarker>::borrow),
11474 encoder,
11475 offset + cur_offset,
11476 depth,
11477 )?;
11478
11479 _prev_end_offset = cur_offset + envelope_size;
11480 if 2 > max_ordinal {
11481 return Ok(());
11482 }
11483
11484 let cur_offset: usize = (2 - 1) * envelope_size;
11487
11488 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11490
11491 fidl::encoding::encode_in_envelope_optional::<u16, D>(
11496 self.port.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
11497 encoder,
11498 offset + cur_offset,
11499 depth,
11500 )?;
11501
11502 _prev_end_offset = cur_offset + envelope_size;
11503 if 3 > max_ordinal {
11504 return Ok(());
11505 }
11506
11507 let cur_offset: usize = (3 - 1) * envelope_size;
11510
11511 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11513
11514 fidl::encoding::encode_in_envelope_optional::<SrpServerAddressMode, D>(
11519 self.address_mode
11520 .as_ref()
11521 .map(<SrpServerAddressMode as fidl::encoding::ValueTypeMarker>::borrow),
11522 encoder,
11523 offset + cur_offset,
11524 depth,
11525 )?;
11526
11527 _prev_end_offset = cur_offset + envelope_size;
11528 if 4 > max_ordinal {
11529 return Ok(());
11530 }
11531
11532 let cur_offset: usize = (4 - 1) * envelope_size;
11535
11536 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11538
11539 fidl::encoding::encode_in_envelope_optional::<SrpServerResponseCounters, D>(
11544 self.response_counters
11545 .as_ref()
11546 .map(<SrpServerResponseCounters as fidl::encoding::ValueTypeMarker>::borrow),
11547 encoder,
11548 offset + cur_offset,
11549 depth,
11550 )?;
11551
11552 _prev_end_offset = cur_offset + envelope_size;
11553 if 5 > max_ordinal {
11554 return Ok(());
11555 }
11556
11557 let cur_offset: usize = (5 - 1) * envelope_size;
11560
11561 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11563
11564 fidl::encoding::encode_in_envelope_optional::<SrpServerRegistration, D>(
11569 self.hosts_registration
11570 .as_ref()
11571 .map(<SrpServerRegistration as fidl::encoding::ValueTypeMarker>::borrow),
11572 encoder,
11573 offset + cur_offset,
11574 depth,
11575 )?;
11576
11577 _prev_end_offset = cur_offset + envelope_size;
11578 if 6 > max_ordinal {
11579 return Ok(());
11580 }
11581
11582 let cur_offset: usize = (6 - 1) * envelope_size;
11585
11586 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11588
11589 fidl::encoding::encode_in_envelope_optional::<SrpServerRegistration, D>(
11594 self.services_registration
11595 .as_ref()
11596 .map(<SrpServerRegistration as fidl::encoding::ValueTypeMarker>::borrow),
11597 encoder,
11598 offset + cur_offset,
11599 depth,
11600 )?;
11601
11602 _prev_end_offset = cur_offset + envelope_size;
11603
11604 Ok(())
11605 }
11606 }
11607
11608 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerInfo {
11609 #[inline(always)]
11610 fn new_empty() -> Self {
11611 Self::default()
11612 }
11613
11614 unsafe fn decode(
11615 &mut self,
11616 decoder: &mut fidl::encoding::Decoder<'_, D>,
11617 offset: usize,
11618 mut depth: fidl::encoding::Depth,
11619 ) -> fidl::Result<()> {
11620 decoder.debug_check_bounds::<Self>(offset);
11621 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11622 None => return Err(fidl::Error::NotNullable),
11623 Some(len) => len,
11624 };
11625 if len == 0 {
11627 return Ok(());
11628 };
11629 depth.increment()?;
11630 let envelope_size = 8;
11631 let bytes_len = len * envelope_size;
11632 let offset = decoder.out_of_line_offset(bytes_len)?;
11633 let mut _next_ordinal_to_read = 0;
11635 let mut next_offset = offset;
11636 let end_offset = offset + bytes_len;
11637 _next_ordinal_to_read += 1;
11638 if next_offset >= end_offset {
11639 return Ok(());
11640 }
11641
11642 while _next_ordinal_to_read < 1 {
11644 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11645 _next_ordinal_to_read += 1;
11646 next_offset += envelope_size;
11647 }
11648
11649 let next_out_of_line = decoder.next_out_of_line();
11650 let handles_before = decoder.remaining_handles();
11651 if let Some((inlined, num_bytes, num_handles)) =
11652 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11653 {
11654 let member_inline_size =
11655 <SrpServerState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11656 if inlined != (member_inline_size <= 4) {
11657 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11658 }
11659 let inner_offset;
11660 let mut inner_depth = depth.clone();
11661 if inlined {
11662 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11663 inner_offset = next_offset;
11664 } else {
11665 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11666 inner_depth.increment()?;
11667 }
11668 let val_ref = self.state.get_or_insert_with(|| fidl::new_empty!(SrpServerState, D));
11669 fidl::decode!(SrpServerState, D, val_ref, decoder, inner_offset, inner_depth)?;
11670 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11671 {
11672 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11673 }
11674 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11675 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11676 }
11677 }
11678
11679 next_offset += envelope_size;
11680 _next_ordinal_to_read += 1;
11681 if next_offset >= end_offset {
11682 return Ok(());
11683 }
11684
11685 while _next_ordinal_to_read < 2 {
11687 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11688 _next_ordinal_to_read += 1;
11689 next_offset += envelope_size;
11690 }
11691
11692 let next_out_of_line = decoder.next_out_of_line();
11693 let handles_before = decoder.remaining_handles();
11694 if let Some((inlined, num_bytes, num_handles)) =
11695 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11696 {
11697 let member_inline_size =
11698 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11699 if inlined != (member_inline_size <= 4) {
11700 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11701 }
11702 let inner_offset;
11703 let mut inner_depth = depth.clone();
11704 if inlined {
11705 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11706 inner_offset = next_offset;
11707 } else {
11708 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11709 inner_depth.increment()?;
11710 }
11711 let val_ref = self.port.get_or_insert_with(|| fidl::new_empty!(u16, D));
11712 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
11713 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11714 {
11715 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11716 }
11717 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11718 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11719 }
11720 }
11721
11722 next_offset += envelope_size;
11723 _next_ordinal_to_read += 1;
11724 if next_offset >= end_offset {
11725 return Ok(());
11726 }
11727
11728 while _next_ordinal_to_read < 3 {
11730 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11731 _next_ordinal_to_read += 1;
11732 next_offset += envelope_size;
11733 }
11734
11735 let next_out_of_line = decoder.next_out_of_line();
11736 let handles_before = decoder.remaining_handles();
11737 if let Some((inlined, num_bytes, num_handles)) =
11738 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11739 {
11740 let member_inline_size =
11741 <SrpServerAddressMode as fidl::encoding::TypeMarker>::inline_size(
11742 decoder.context,
11743 );
11744 if inlined != (member_inline_size <= 4) {
11745 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11746 }
11747 let inner_offset;
11748 let mut inner_depth = depth.clone();
11749 if inlined {
11750 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11751 inner_offset = next_offset;
11752 } else {
11753 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11754 inner_depth.increment()?;
11755 }
11756 let val_ref = self
11757 .address_mode
11758 .get_or_insert_with(|| fidl::new_empty!(SrpServerAddressMode, D));
11759 fidl::decode!(
11760 SrpServerAddressMode,
11761 D,
11762 val_ref,
11763 decoder,
11764 inner_offset,
11765 inner_depth
11766 )?;
11767 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11768 {
11769 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11770 }
11771 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11772 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11773 }
11774 }
11775
11776 next_offset += envelope_size;
11777 _next_ordinal_to_read += 1;
11778 if next_offset >= end_offset {
11779 return Ok(());
11780 }
11781
11782 while _next_ordinal_to_read < 4 {
11784 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11785 _next_ordinal_to_read += 1;
11786 next_offset += envelope_size;
11787 }
11788
11789 let next_out_of_line = decoder.next_out_of_line();
11790 let handles_before = decoder.remaining_handles();
11791 if let Some((inlined, num_bytes, num_handles)) =
11792 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11793 {
11794 let member_inline_size =
11795 <SrpServerResponseCounters as fidl::encoding::TypeMarker>::inline_size(
11796 decoder.context,
11797 );
11798 if inlined != (member_inline_size <= 4) {
11799 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11800 }
11801 let inner_offset;
11802 let mut inner_depth = depth.clone();
11803 if inlined {
11804 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11805 inner_offset = next_offset;
11806 } else {
11807 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11808 inner_depth.increment()?;
11809 }
11810 let val_ref = self
11811 .response_counters
11812 .get_or_insert_with(|| fidl::new_empty!(SrpServerResponseCounters, D));
11813 fidl::decode!(
11814 SrpServerResponseCounters,
11815 D,
11816 val_ref,
11817 decoder,
11818 inner_offset,
11819 inner_depth
11820 )?;
11821 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11822 {
11823 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11824 }
11825 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11826 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11827 }
11828 }
11829
11830 next_offset += envelope_size;
11831 _next_ordinal_to_read += 1;
11832 if next_offset >= end_offset {
11833 return Ok(());
11834 }
11835
11836 while _next_ordinal_to_read < 5 {
11838 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11839 _next_ordinal_to_read += 1;
11840 next_offset += envelope_size;
11841 }
11842
11843 let next_out_of_line = decoder.next_out_of_line();
11844 let handles_before = decoder.remaining_handles();
11845 if let Some((inlined, num_bytes, num_handles)) =
11846 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11847 {
11848 let member_inline_size =
11849 <SrpServerRegistration as fidl::encoding::TypeMarker>::inline_size(
11850 decoder.context,
11851 );
11852 if inlined != (member_inline_size <= 4) {
11853 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11854 }
11855 let inner_offset;
11856 let mut inner_depth = depth.clone();
11857 if inlined {
11858 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11859 inner_offset = next_offset;
11860 } else {
11861 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11862 inner_depth.increment()?;
11863 }
11864 let val_ref = self
11865 .hosts_registration
11866 .get_or_insert_with(|| fidl::new_empty!(SrpServerRegistration, D));
11867 fidl::decode!(
11868 SrpServerRegistration,
11869 D,
11870 val_ref,
11871 decoder,
11872 inner_offset,
11873 inner_depth
11874 )?;
11875 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11876 {
11877 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11878 }
11879 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11880 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11881 }
11882 }
11883
11884 next_offset += envelope_size;
11885 _next_ordinal_to_read += 1;
11886 if next_offset >= end_offset {
11887 return Ok(());
11888 }
11889
11890 while _next_ordinal_to_read < 6 {
11892 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11893 _next_ordinal_to_read += 1;
11894 next_offset += envelope_size;
11895 }
11896
11897 let next_out_of_line = decoder.next_out_of_line();
11898 let handles_before = decoder.remaining_handles();
11899 if let Some((inlined, num_bytes, num_handles)) =
11900 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11901 {
11902 let member_inline_size =
11903 <SrpServerRegistration as fidl::encoding::TypeMarker>::inline_size(
11904 decoder.context,
11905 );
11906 if inlined != (member_inline_size <= 4) {
11907 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11908 }
11909 let inner_offset;
11910 let mut inner_depth = depth.clone();
11911 if inlined {
11912 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11913 inner_offset = next_offset;
11914 } else {
11915 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11916 inner_depth.increment()?;
11917 }
11918 let val_ref = self
11919 .services_registration
11920 .get_or_insert_with(|| fidl::new_empty!(SrpServerRegistration, D));
11921 fidl::decode!(
11922 SrpServerRegistration,
11923 D,
11924 val_ref,
11925 decoder,
11926 inner_offset,
11927 inner_depth
11928 )?;
11929 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11930 {
11931 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11932 }
11933 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11934 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11935 }
11936 }
11937
11938 next_offset += envelope_size;
11939
11940 while next_offset < end_offset {
11942 _next_ordinal_to_read += 1;
11943 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11944 next_offset += envelope_size;
11945 }
11946
11947 Ok(())
11948 }
11949 }
11950
11951 impl SrpServerRegistration {
11952 #[inline(always)]
11953 fn max_ordinal_present(&self) -> u64 {
11954 if let Some(_) = self.remaining_key_lease_time_total {
11955 return 6;
11956 }
11957 if let Some(_) = self.remaining_lease_time_total {
11958 return 5;
11959 }
11960 if let Some(_) = self.key_lease_time_total {
11961 return 4;
11962 }
11963 if let Some(_) = self.lease_time_total {
11964 return 3;
11965 }
11966 if let Some(_) = self.deleted_count {
11967 return 2;
11968 }
11969 if let Some(_) = self.fresh_count {
11970 return 1;
11971 }
11972 0
11973 }
11974 }
11975
11976 impl fidl::encoding::ValueTypeMarker for SrpServerRegistration {
11977 type Borrowed<'a> = &'a Self;
11978 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11979 value
11980 }
11981 }
11982
11983 unsafe impl fidl::encoding::TypeMarker for SrpServerRegistration {
11984 type Owned = Self;
11985
11986 #[inline(always)]
11987 fn inline_align(_context: fidl::encoding::Context) -> usize {
11988 8
11989 }
11990
11991 #[inline(always)]
11992 fn inline_size(_context: fidl::encoding::Context) -> usize {
11993 16
11994 }
11995 }
11996
11997 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerRegistration, D>
11998 for &SrpServerRegistration
11999 {
12000 unsafe fn encode(
12001 self,
12002 encoder: &mut fidl::encoding::Encoder<'_, D>,
12003 offset: usize,
12004 mut depth: fidl::encoding::Depth,
12005 ) -> fidl::Result<()> {
12006 encoder.debug_check_bounds::<SrpServerRegistration>(offset);
12007 let max_ordinal: u64 = self.max_ordinal_present();
12009 encoder.write_num(max_ordinal, offset);
12010 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12011 if max_ordinal == 0 {
12013 return Ok(());
12014 }
12015 depth.increment()?;
12016 let envelope_size = 8;
12017 let bytes_len = max_ordinal as usize * envelope_size;
12018 #[allow(unused_variables)]
12019 let offset = encoder.out_of_line_offset(bytes_len);
12020 let mut _prev_end_offset: usize = 0;
12021 if 1 > max_ordinal {
12022 return Ok(());
12023 }
12024
12025 let cur_offset: usize = (1 - 1) * envelope_size;
12028
12029 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12031
12032 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12037 self.fresh_count.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12038 encoder,
12039 offset + cur_offset,
12040 depth,
12041 )?;
12042
12043 _prev_end_offset = cur_offset + envelope_size;
12044 if 2 > max_ordinal {
12045 return Ok(());
12046 }
12047
12048 let cur_offset: usize = (2 - 1) * envelope_size;
12051
12052 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12054
12055 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12060 self.deleted_count.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12061 encoder,
12062 offset + cur_offset,
12063 depth,
12064 )?;
12065
12066 _prev_end_offset = cur_offset + envelope_size;
12067 if 3 > max_ordinal {
12068 return Ok(());
12069 }
12070
12071 let cur_offset: usize = (3 - 1) * envelope_size;
12074
12075 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12077
12078 fidl::encoding::encode_in_envelope_optional::<i64, D>(
12083 self.lease_time_total
12084 .as_ref()
12085 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12086 encoder,
12087 offset + cur_offset,
12088 depth,
12089 )?;
12090
12091 _prev_end_offset = cur_offset + envelope_size;
12092 if 4 > max_ordinal {
12093 return Ok(());
12094 }
12095
12096 let cur_offset: usize = (4 - 1) * envelope_size;
12099
12100 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12102
12103 fidl::encoding::encode_in_envelope_optional::<i64, D>(
12108 self.key_lease_time_total
12109 .as_ref()
12110 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12111 encoder,
12112 offset + cur_offset,
12113 depth,
12114 )?;
12115
12116 _prev_end_offset = cur_offset + envelope_size;
12117 if 5 > max_ordinal {
12118 return Ok(());
12119 }
12120
12121 let cur_offset: usize = (5 - 1) * envelope_size;
12124
12125 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12127
12128 fidl::encoding::encode_in_envelope_optional::<i64, D>(
12133 self.remaining_lease_time_total
12134 .as_ref()
12135 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12136 encoder,
12137 offset + cur_offset,
12138 depth,
12139 )?;
12140
12141 _prev_end_offset = cur_offset + envelope_size;
12142 if 6 > max_ordinal {
12143 return Ok(());
12144 }
12145
12146 let cur_offset: usize = (6 - 1) * envelope_size;
12149
12150 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12152
12153 fidl::encoding::encode_in_envelope_optional::<i64, D>(
12158 self.remaining_key_lease_time_total
12159 .as_ref()
12160 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12161 encoder,
12162 offset + cur_offset,
12163 depth,
12164 )?;
12165
12166 _prev_end_offset = cur_offset + envelope_size;
12167
12168 Ok(())
12169 }
12170 }
12171
12172 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerRegistration {
12173 #[inline(always)]
12174 fn new_empty() -> Self {
12175 Self::default()
12176 }
12177
12178 unsafe fn decode(
12179 &mut self,
12180 decoder: &mut fidl::encoding::Decoder<'_, D>,
12181 offset: usize,
12182 mut depth: fidl::encoding::Depth,
12183 ) -> fidl::Result<()> {
12184 decoder.debug_check_bounds::<Self>(offset);
12185 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12186 None => return Err(fidl::Error::NotNullable),
12187 Some(len) => len,
12188 };
12189 if len == 0 {
12191 return Ok(());
12192 };
12193 depth.increment()?;
12194 let envelope_size = 8;
12195 let bytes_len = len * envelope_size;
12196 let offset = decoder.out_of_line_offset(bytes_len)?;
12197 let mut _next_ordinal_to_read = 0;
12199 let mut next_offset = offset;
12200 let end_offset = offset + bytes_len;
12201 _next_ordinal_to_read += 1;
12202 if next_offset >= end_offset {
12203 return Ok(());
12204 }
12205
12206 while _next_ordinal_to_read < 1 {
12208 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12209 _next_ordinal_to_read += 1;
12210 next_offset += envelope_size;
12211 }
12212
12213 let next_out_of_line = decoder.next_out_of_line();
12214 let handles_before = decoder.remaining_handles();
12215 if let Some((inlined, num_bytes, num_handles)) =
12216 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12217 {
12218 let member_inline_size =
12219 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12220 if inlined != (member_inline_size <= 4) {
12221 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12222 }
12223 let inner_offset;
12224 let mut inner_depth = depth.clone();
12225 if inlined {
12226 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12227 inner_offset = next_offset;
12228 } else {
12229 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12230 inner_depth.increment()?;
12231 }
12232 let val_ref = self.fresh_count.get_or_insert_with(|| fidl::new_empty!(u32, D));
12233 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12234 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12235 {
12236 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12237 }
12238 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12239 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12240 }
12241 }
12242
12243 next_offset += envelope_size;
12244 _next_ordinal_to_read += 1;
12245 if next_offset >= end_offset {
12246 return Ok(());
12247 }
12248
12249 while _next_ordinal_to_read < 2 {
12251 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12252 _next_ordinal_to_read += 1;
12253 next_offset += envelope_size;
12254 }
12255
12256 let next_out_of_line = decoder.next_out_of_line();
12257 let handles_before = decoder.remaining_handles();
12258 if let Some((inlined, num_bytes, num_handles)) =
12259 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12260 {
12261 let member_inline_size =
12262 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12263 if inlined != (member_inline_size <= 4) {
12264 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12265 }
12266 let inner_offset;
12267 let mut inner_depth = depth.clone();
12268 if inlined {
12269 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12270 inner_offset = next_offset;
12271 } else {
12272 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12273 inner_depth.increment()?;
12274 }
12275 let val_ref = self.deleted_count.get_or_insert_with(|| fidl::new_empty!(u32, D));
12276 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12277 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12278 {
12279 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12280 }
12281 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12282 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12283 }
12284 }
12285
12286 next_offset += envelope_size;
12287 _next_ordinal_to_read += 1;
12288 if next_offset >= end_offset {
12289 return Ok(());
12290 }
12291
12292 while _next_ordinal_to_read < 3 {
12294 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12295 _next_ordinal_to_read += 1;
12296 next_offset += envelope_size;
12297 }
12298
12299 let next_out_of_line = decoder.next_out_of_line();
12300 let handles_before = decoder.remaining_handles();
12301 if let Some((inlined, num_bytes, num_handles)) =
12302 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12303 {
12304 let member_inline_size =
12305 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12306 if inlined != (member_inline_size <= 4) {
12307 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12308 }
12309 let inner_offset;
12310 let mut inner_depth = depth.clone();
12311 if inlined {
12312 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12313 inner_offset = next_offset;
12314 } else {
12315 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12316 inner_depth.increment()?;
12317 }
12318 let val_ref = self.lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
12319 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12320 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12321 {
12322 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12323 }
12324 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12325 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12326 }
12327 }
12328
12329 next_offset += envelope_size;
12330 _next_ordinal_to_read += 1;
12331 if next_offset >= end_offset {
12332 return Ok(());
12333 }
12334
12335 while _next_ordinal_to_read < 4 {
12337 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12338 _next_ordinal_to_read += 1;
12339 next_offset += envelope_size;
12340 }
12341
12342 let next_out_of_line = decoder.next_out_of_line();
12343 let handles_before = decoder.remaining_handles();
12344 if let Some((inlined, num_bytes, num_handles)) =
12345 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12346 {
12347 let member_inline_size =
12348 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12349 if inlined != (member_inline_size <= 4) {
12350 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12351 }
12352 let inner_offset;
12353 let mut inner_depth = depth.clone();
12354 if inlined {
12355 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12356 inner_offset = next_offset;
12357 } else {
12358 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12359 inner_depth.increment()?;
12360 }
12361 let val_ref =
12362 self.key_lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
12363 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12364 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12365 {
12366 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12367 }
12368 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12369 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12370 }
12371 }
12372
12373 next_offset += envelope_size;
12374 _next_ordinal_to_read += 1;
12375 if next_offset >= end_offset {
12376 return Ok(());
12377 }
12378
12379 while _next_ordinal_to_read < 5 {
12381 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12382 _next_ordinal_to_read += 1;
12383 next_offset += envelope_size;
12384 }
12385
12386 let next_out_of_line = decoder.next_out_of_line();
12387 let handles_before = decoder.remaining_handles();
12388 if let Some((inlined, num_bytes, num_handles)) =
12389 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12390 {
12391 let member_inline_size =
12392 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12393 if inlined != (member_inline_size <= 4) {
12394 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12395 }
12396 let inner_offset;
12397 let mut inner_depth = depth.clone();
12398 if inlined {
12399 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12400 inner_offset = next_offset;
12401 } else {
12402 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12403 inner_depth.increment()?;
12404 }
12405 let val_ref =
12406 self.remaining_lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
12407 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12408 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12409 {
12410 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12411 }
12412 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12413 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12414 }
12415 }
12416
12417 next_offset += envelope_size;
12418 _next_ordinal_to_read += 1;
12419 if next_offset >= end_offset {
12420 return Ok(());
12421 }
12422
12423 while _next_ordinal_to_read < 6 {
12425 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12426 _next_ordinal_to_read += 1;
12427 next_offset += envelope_size;
12428 }
12429
12430 let next_out_of_line = decoder.next_out_of_line();
12431 let handles_before = decoder.remaining_handles();
12432 if let Some((inlined, num_bytes, num_handles)) =
12433 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12434 {
12435 let member_inline_size =
12436 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12437 if inlined != (member_inline_size <= 4) {
12438 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12439 }
12440 let inner_offset;
12441 let mut inner_depth = depth.clone();
12442 if inlined {
12443 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12444 inner_offset = next_offset;
12445 } else {
12446 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12447 inner_depth.increment()?;
12448 }
12449 let val_ref = self
12450 .remaining_key_lease_time_total
12451 .get_or_insert_with(|| fidl::new_empty!(i64, D));
12452 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12453 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12454 {
12455 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12456 }
12457 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12458 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12459 }
12460 }
12461
12462 next_offset += envelope_size;
12463
12464 while next_offset < end_offset {
12466 _next_ordinal_to_read += 1;
12467 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12468 next_offset += envelope_size;
12469 }
12470
12471 Ok(())
12472 }
12473 }
12474
12475 impl SrpServerResponseCounters {
12476 #[inline(always)]
12477 fn max_ordinal_present(&self) -> u64 {
12478 if let Some(_) = self.other_response {
12479 return 6;
12480 }
12481 if let Some(_) = self.refused_response {
12482 return 5;
12483 }
12484 if let Some(_) = self.name_exists_response {
12485 return 4;
12486 }
12487 if let Some(_) = self.format_error_response {
12488 return 3;
12489 }
12490 if let Some(_) = self.server_failure_response {
12491 return 2;
12492 }
12493 if let Some(_) = self.success_response {
12494 return 1;
12495 }
12496 0
12497 }
12498 }
12499
12500 impl fidl::encoding::ValueTypeMarker for SrpServerResponseCounters {
12501 type Borrowed<'a> = &'a Self;
12502 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12503 value
12504 }
12505 }
12506
12507 unsafe impl fidl::encoding::TypeMarker for SrpServerResponseCounters {
12508 type Owned = Self;
12509
12510 #[inline(always)]
12511 fn inline_align(_context: fidl::encoding::Context) -> usize {
12512 8
12513 }
12514
12515 #[inline(always)]
12516 fn inline_size(_context: fidl::encoding::Context) -> usize {
12517 16
12518 }
12519 }
12520
12521 unsafe impl<D: fidl::encoding::ResourceDialect>
12522 fidl::encoding::Encode<SrpServerResponseCounters, D> for &SrpServerResponseCounters
12523 {
12524 unsafe fn encode(
12525 self,
12526 encoder: &mut fidl::encoding::Encoder<'_, D>,
12527 offset: usize,
12528 mut depth: fidl::encoding::Depth,
12529 ) -> fidl::Result<()> {
12530 encoder.debug_check_bounds::<SrpServerResponseCounters>(offset);
12531 let max_ordinal: u64 = self.max_ordinal_present();
12533 encoder.write_num(max_ordinal, offset);
12534 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12535 if max_ordinal == 0 {
12537 return Ok(());
12538 }
12539 depth.increment()?;
12540 let envelope_size = 8;
12541 let bytes_len = max_ordinal as usize * envelope_size;
12542 #[allow(unused_variables)]
12543 let offset = encoder.out_of_line_offset(bytes_len);
12544 let mut _prev_end_offset: usize = 0;
12545 if 1 > max_ordinal {
12546 return Ok(());
12547 }
12548
12549 let cur_offset: usize = (1 - 1) * envelope_size;
12552
12553 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12555
12556 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12561 self.success_response
12562 .as_ref()
12563 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12564 encoder,
12565 offset + cur_offset,
12566 depth,
12567 )?;
12568
12569 _prev_end_offset = cur_offset + envelope_size;
12570 if 2 > max_ordinal {
12571 return Ok(());
12572 }
12573
12574 let cur_offset: usize = (2 - 1) * envelope_size;
12577
12578 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12580
12581 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12586 self.server_failure_response
12587 .as_ref()
12588 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12589 encoder,
12590 offset + cur_offset,
12591 depth,
12592 )?;
12593
12594 _prev_end_offset = cur_offset + envelope_size;
12595 if 3 > max_ordinal {
12596 return Ok(());
12597 }
12598
12599 let cur_offset: usize = (3 - 1) * envelope_size;
12602
12603 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12605
12606 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12611 self.format_error_response
12612 .as_ref()
12613 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12614 encoder,
12615 offset + cur_offset,
12616 depth,
12617 )?;
12618
12619 _prev_end_offset = cur_offset + envelope_size;
12620 if 4 > max_ordinal {
12621 return Ok(());
12622 }
12623
12624 let cur_offset: usize = (4 - 1) * envelope_size;
12627
12628 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12630
12631 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12636 self.name_exists_response
12637 .as_ref()
12638 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12639 encoder,
12640 offset + cur_offset,
12641 depth,
12642 )?;
12643
12644 _prev_end_offset = cur_offset + envelope_size;
12645 if 5 > max_ordinal {
12646 return Ok(());
12647 }
12648
12649 let cur_offset: usize = (5 - 1) * envelope_size;
12652
12653 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12655
12656 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12661 self.refused_response
12662 .as_ref()
12663 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12664 encoder,
12665 offset + cur_offset,
12666 depth,
12667 )?;
12668
12669 _prev_end_offset = cur_offset + envelope_size;
12670 if 6 > max_ordinal {
12671 return Ok(());
12672 }
12673
12674 let cur_offset: usize = (6 - 1) * envelope_size;
12677
12678 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12680
12681 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12686 self.other_response.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12687 encoder,
12688 offset + cur_offset,
12689 depth,
12690 )?;
12691
12692 _prev_end_offset = cur_offset + envelope_size;
12693
12694 Ok(())
12695 }
12696 }
12697
12698 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12699 for SrpServerResponseCounters
12700 {
12701 #[inline(always)]
12702 fn new_empty() -> Self {
12703 Self::default()
12704 }
12705
12706 unsafe fn decode(
12707 &mut self,
12708 decoder: &mut fidl::encoding::Decoder<'_, D>,
12709 offset: usize,
12710 mut depth: fidl::encoding::Depth,
12711 ) -> fidl::Result<()> {
12712 decoder.debug_check_bounds::<Self>(offset);
12713 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12714 None => return Err(fidl::Error::NotNullable),
12715 Some(len) => len,
12716 };
12717 if len == 0 {
12719 return Ok(());
12720 };
12721 depth.increment()?;
12722 let envelope_size = 8;
12723 let bytes_len = len * envelope_size;
12724 let offset = decoder.out_of_line_offset(bytes_len)?;
12725 let mut _next_ordinal_to_read = 0;
12727 let mut next_offset = offset;
12728 let end_offset = offset + bytes_len;
12729 _next_ordinal_to_read += 1;
12730 if next_offset >= end_offset {
12731 return Ok(());
12732 }
12733
12734 while _next_ordinal_to_read < 1 {
12736 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12737 _next_ordinal_to_read += 1;
12738 next_offset += envelope_size;
12739 }
12740
12741 let next_out_of_line = decoder.next_out_of_line();
12742 let handles_before = decoder.remaining_handles();
12743 if let Some((inlined, num_bytes, num_handles)) =
12744 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12745 {
12746 let member_inline_size =
12747 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12748 if inlined != (member_inline_size <= 4) {
12749 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12750 }
12751 let inner_offset;
12752 let mut inner_depth = depth.clone();
12753 if inlined {
12754 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12755 inner_offset = next_offset;
12756 } else {
12757 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12758 inner_depth.increment()?;
12759 }
12760 let val_ref = self.success_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
12761 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12762 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12763 {
12764 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12765 }
12766 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12767 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12768 }
12769 }
12770
12771 next_offset += envelope_size;
12772 _next_ordinal_to_read += 1;
12773 if next_offset >= end_offset {
12774 return Ok(());
12775 }
12776
12777 while _next_ordinal_to_read < 2 {
12779 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12780 _next_ordinal_to_read += 1;
12781 next_offset += envelope_size;
12782 }
12783
12784 let next_out_of_line = decoder.next_out_of_line();
12785 let handles_before = decoder.remaining_handles();
12786 if let Some((inlined, num_bytes, num_handles)) =
12787 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12788 {
12789 let member_inline_size =
12790 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12791 if inlined != (member_inline_size <= 4) {
12792 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12793 }
12794 let inner_offset;
12795 let mut inner_depth = depth.clone();
12796 if inlined {
12797 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12798 inner_offset = next_offset;
12799 } else {
12800 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12801 inner_depth.increment()?;
12802 }
12803 let val_ref =
12804 self.server_failure_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
12805 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12806 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12807 {
12808 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12809 }
12810 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12811 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12812 }
12813 }
12814
12815 next_offset += envelope_size;
12816 _next_ordinal_to_read += 1;
12817 if next_offset >= end_offset {
12818 return Ok(());
12819 }
12820
12821 while _next_ordinal_to_read < 3 {
12823 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12824 _next_ordinal_to_read += 1;
12825 next_offset += envelope_size;
12826 }
12827
12828 let next_out_of_line = decoder.next_out_of_line();
12829 let handles_before = decoder.remaining_handles();
12830 if let Some((inlined, num_bytes, num_handles)) =
12831 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12832 {
12833 let member_inline_size =
12834 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12835 if inlined != (member_inline_size <= 4) {
12836 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12837 }
12838 let inner_offset;
12839 let mut inner_depth = depth.clone();
12840 if inlined {
12841 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12842 inner_offset = next_offset;
12843 } else {
12844 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12845 inner_depth.increment()?;
12846 }
12847 let val_ref =
12848 self.format_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
12849 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12850 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12851 {
12852 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12853 }
12854 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12855 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12856 }
12857 }
12858
12859 next_offset += envelope_size;
12860 _next_ordinal_to_read += 1;
12861 if next_offset >= end_offset {
12862 return Ok(());
12863 }
12864
12865 while _next_ordinal_to_read < 4 {
12867 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12868 _next_ordinal_to_read += 1;
12869 next_offset += envelope_size;
12870 }
12871
12872 let next_out_of_line = decoder.next_out_of_line();
12873 let handles_before = decoder.remaining_handles();
12874 if let Some((inlined, num_bytes, num_handles)) =
12875 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12876 {
12877 let member_inline_size =
12878 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12879 if inlined != (member_inline_size <= 4) {
12880 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12881 }
12882 let inner_offset;
12883 let mut inner_depth = depth.clone();
12884 if inlined {
12885 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12886 inner_offset = next_offset;
12887 } else {
12888 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12889 inner_depth.increment()?;
12890 }
12891 let val_ref =
12892 self.name_exists_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
12893 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12894 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12895 {
12896 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12897 }
12898 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12899 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12900 }
12901 }
12902
12903 next_offset += envelope_size;
12904 _next_ordinal_to_read += 1;
12905 if next_offset >= end_offset {
12906 return Ok(());
12907 }
12908
12909 while _next_ordinal_to_read < 5 {
12911 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12912 _next_ordinal_to_read += 1;
12913 next_offset += envelope_size;
12914 }
12915
12916 let next_out_of_line = decoder.next_out_of_line();
12917 let handles_before = decoder.remaining_handles();
12918 if let Some((inlined, num_bytes, num_handles)) =
12919 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12920 {
12921 let member_inline_size =
12922 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12923 if inlined != (member_inline_size <= 4) {
12924 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12925 }
12926 let inner_offset;
12927 let mut inner_depth = depth.clone();
12928 if inlined {
12929 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12930 inner_offset = next_offset;
12931 } else {
12932 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12933 inner_depth.increment()?;
12934 }
12935 let val_ref = self.refused_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
12936 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12937 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12938 {
12939 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12940 }
12941 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12942 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12943 }
12944 }
12945
12946 next_offset += envelope_size;
12947 _next_ordinal_to_read += 1;
12948 if next_offset >= end_offset {
12949 return Ok(());
12950 }
12951
12952 while _next_ordinal_to_read < 6 {
12954 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12955 _next_ordinal_to_read += 1;
12956 next_offset += envelope_size;
12957 }
12958
12959 let next_out_of_line = decoder.next_out_of_line();
12960 let handles_before = decoder.remaining_handles();
12961 if let Some((inlined, num_bytes, num_handles)) =
12962 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12963 {
12964 let member_inline_size =
12965 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12966 if inlined != (member_inline_size <= 4) {
12967 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12968 }
12969 let inner_offset;
12970 let mut inner_depth = depth.clone();
12971 if inlined {
12972 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12973 inner_offset = next_offset;
12974 } else {
12975 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12976 inner_depth.increment()?;
12977 }
12978 let val_ref = self.other_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
12979 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12980 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12981 {
12982 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12983 }
12984 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12985 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12986 }
12987 }
12988
12989 next_offset += envelope_size;
12990
12991 while next_offset < end_offset {
12993 _next_ordinal_to_read += 1;
12994 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12995 next_offset += envelope_size;
12996 }
12997
12998 Ok(())
12999 }
13000 }
13001
13002 impl Telemetry {
13003 #[inline(always)]
13004 fn max_ordinal_present(&self) -> u64 {
13005 if let Some(_) = self.border_agent_counters {
13006 return 25;
13007 }
13008 if let Some(_) = self.link_metrics_entries {
13009 return 24;
13010 }
13011 if let Some(_) = self.dhcp6pd_info {
13012 return 23;
13013 }
13014 if let Some(_) = self.upstream_dns_info {
13015 return 22;
13016 }
13017 if let Some(_) = self.trel_peers_info {
13018 return 21;
13019 }
13020 if let Some(_) = self.trel_counters {
13021 return 20;
13022 }
13023 if let Some(_) = self.nat64_info {
13024 return 19;
13025 }
13026 if let Some(_) = self.uptime {
13027 return 18;
13028 }
13029 if let Some(_) = self.leader_data {
13030 return 17;
13031 }
13032 if let Some(_) = self.dnssd_counters {
13033 return 16;
13034 }
13035 if let Some(_) = self.srp_server_info {
13036 return 15;
13037 }
13038 if let Some(_) = self.thread_border_routing_counters {
13039 return 14;
13040 }
13041 if let Some(_) = self.thread_stable_network_data {
13042 return 13;
13043 }
13044 if let Some(_) = self.thread_network_data {
13045 return 12;
13046 }
13047 if let Some(_) = self.thread_stable_network_data_version {
13048 return 11;
13049 }
13050 if let Some(_) = self.thread_network_data_version {
13051 return 10;
13052 }
13053 if let Some(_) = self.thread_rloc {
13054 return 9;
13055 }
13056 if let Some(_) = self.thread_router_id {
13057 return 8;
13058 }
13059 if let Some(_) = self.thread_link_mode {
13060 return 7;
13061 }
13062 if let Some(_) = self.rcp_version {
13063 return 6;
13064 }
13065 if let Some(_) = self.stack_version {
13066 return 5;
13067 }
13068 if let Some(_) = self.partition_id {
13069 return 4;
13070 }
13071 if let Some(_) = self.channel_index {
13072 return 3;
13073 }
13074 if let Some(_) = self.tx_power {
13075 return 2;
13076 }
13077 if let Some(_) = self.rssi {
13078 return 1;
13079 }
13080 0
13081 }
13082 }
13083
13084 impl fidl::encoding::ValueTypeMarker for Telemetry {
13085 type Borrowed<'a> = &'a Self;
13086 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13087 value
13088 }
13089 }
13090
13091 unsafe impl fidl::encoding::TypeMarker for Telemetry {
13092 type Owned = Self;
13093
13094 #[inline(always)]
13095 fn inline_align(_context: fidl::encoding::Context) -> usize {
13096 8
13097 }
13098
13099 #[inline(always)]
13100 fn inline_size(_context: fidl::encoding::Context) -> usize {
13101 16
13102 }
13103 }
13104
13105 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Telemetry, D>
13106 for &Telemetry
13107 {
13108 unsafe fn encode(
13109 self,
13110 encoder: &mut fidl::encoding::Encoder<'_, D>,
13111 offset: usize,
13112 mut depth: fidl::encoding::Depth,
13113 ) -> fidl::Result<()> {
13114 encoder.debug_check_bounds::<Telemetry>(offset);
13115 let max_ordinal: u64 = self.max_ordinal_present();
13117 encoder.write_num(max_ordinal, offset);
13118 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13119 if max_ordinal == 0 {
13121 return Ok(());
13122 }
13123 depth.increment()?;
13124 let envelope_size = 8;
13125 let bytes_len = max_ordinal as usize * envelope_size;
13126 #[allow(unused_variables)]
13127 let offset = encoder.out_of_line_offset(bytes_len);
13128 let mut _prev_end_offset: usize = 0;
13129 if 1 > max_ordinal {
13130 return Ok(());
13131 }
13132
13133 let cur_offset: usize = (1 - 1) * envelope_size;
13136
13137 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13139
13140 fidl::encoding::encode_in_envelope_optional::<i8, D>(
13145 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
13146 encoder,
13147 offset + cur_offset,
13148 depth,
13149 )?;
13150
13151 _prev_end_offset = cur_offset + envelope_size;
13152 if 2 > max_ordinal {
13153 return Ok(());
13154 }
13155
13156 let cur_offset: usize = (2 - 1) * envelope_size;
13159
13160 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13162
13163 fidl::encoding::encode_in_envelope_optional::<i8, D>(
13168 self.tx_power.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
13169 encoder,
13170 offset + cur_offset,
13171 depth,
13172 )?;
13173
13174 _prev_end_offset = cur_offset + envelope_size;
13175 if 3 > max_ordinal {
13176 return Ok(());
13177 }
13178
13179 let cur_offset: usize = (3 - 1) * envelope_size;
13182
13183 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13185
13186 fidl::encoding::encode_in_envelope_optional::<u16, D>(
13191 self.channel_index.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
13192 encoder,
13193 offset + cur_offset,
13194 depth,
13195 )?;
13196
13197 _prev_end_offset = cur_offset + envelope_size;
13198 if 4 > max_ordinal {
13199 return Ok(());
13200 }
13201
13202 let cur_offset: usize = (4 - 1) * envelope_size;
13205
13206 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13208
13209 fidl::encoding::encode_in_envelope_optional::<u32, D>(
13214 self.partition_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13215 encoder,
13216 offset + cur_offset,
13217 depth,
13218 )?;
13219
13220 _prev_end_offset = cur_offset + envelope_size;
13221 if 5 > max_ordinal {
13222 return Ok(());
13223 }
13224
13225 let cur_offset: usize = (5 - 1) * envelope_size;
13228
13229 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13231
13232 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
13237 self.stack_version.as_ref().map(
13238 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
13239 ),
13240 encoder,
13241 offset + cur_offset,
13242 depth,
13243 )?;
13244
13245 _prev_end_offset = cur_offset + envelope_size;
13246 if 6 > max_ordinal {
13247 return Ok(());
13248 }
13249
13250 let cur_offset: usize = (6 - 1) * envelope_size;
13253
13254 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13256
13257 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
13262 self.rcp_version.as_ref().map(
13263 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
13264 ),
13265 encoder,
13266 offset + cur_offset,
13267 depth,
13268 )?;
13269
13270 _prev_end_offset = cur_offset + envelope_size;
13271 if 7 > max_ordinal {
13272 return Ok(());
13273 }
13274
13275 let cur_offset: usize = (7 - 1) * envelope_size;
13278
13279 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13281
13282 fidl::encoding::encode_in_envelope_optional::<u8, D>(
13287 self.thread_link_mode.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13288 encoder,
13289 offset + cur_offset,
13290 depth,
13291 )?;
13292
13293 _prev_end_offset = cur_offset + envelope_size;
13294 if 8 > max_ordinal {
13295 return Ok(());
13296 }
13297
13298 let cur_offset: usize = (8 - 1) * envelope_size;
13301
13302 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13304
13305 fidl::encoding::encode_in_envelope_optional::<u8, D>(
13310 self.thread_router_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13311 encoder,
13312 offset + cur_offset,
13313 depth,
13314 )?;
13315
13316 _prev_end_offset = cur_offset + envelope_size;
13317 if 9 > max_ordinal {
13318 return Ok(());
13319 }
13320
13321 let cur_offset: usize = (9 - 1) * envelope_size;
13324
13325 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13327
13328 fidl::encoding::encode_in_envelope_optional::<u16, D>(
13333 self.thread_rloc.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
13334 encoder,
13335 offset + cur_offset,
13336 depth,
13337 )?;
13338
13339 _prev_end_offset = cur_offset + envelope_size;
13340 if 10 > max_ordinal {
13341 return Ok(());
13342 }
13343
13344 let cur_offset: usize = (10 - 1) * envelope_size;
13347
13348 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13350
13351 fidl::encoding::encode_in_envelope_optional::<u8, D>(
13356 self.thread_network_data_version
13357 .as_ref()
13358 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13359 encoder,
13360 offset + cur_offset,
13361 depth,
13362 )?;
13363
13364 _prev_end_offset = cur_offset + envelope_size;
13365 if 11 > max_ordinal {
13366 return Ok(());
13367 }
13368
13369 let cur_offset: usize = (11 - 1) * envelope_size;
13372
13373 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13375
13376 fidl::encoding::encode_in_envelope_optional::<u8, D>(
13381 self.thread_stable_network_data_version
13382 .as_ref()
13383 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13384 encoder,
13385 offset + cur_offset,
13386 depth,
13387 )?;
13388
13389 _prev_end_offset = cur_offset + envelope_size;
13390 if 12 > max_ordinal {
13391 return Ok(());
13392 }
13393
13394 let cur_offset: usize = (12 - 1) * envelope_size;
13397
13398 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13400
13401 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 255>, D>(
13406 self.thread_network_data.as_ref().map(
13407 <fidl::encoding::Vector<u8, 255> as fidl::encoding::ValueTypeMarker>::borrow,
13408 ),
13409 encoder,
13410 offset + cur_offset,
13411 depth,
13412 )?;
13413
13414 _prev_end_offset = cur_offset + envelope_size;
13415 if 13 > max_ordinal {
13416 return Ok(());
13417 }
13418
13419 let cur_offset: usize = (13 - 1) * envelope_size;
13422
13423 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13425
13426 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 255>, D>(
13431 self.thread_stable_network_data.as_ref().map(
13432 <fidl::encoding::Vector<u8, 255> as fidl::encoding::ValueTypeMarker>::borrow,
13433 ),
13434 encoder,
13435 offset + cur_offset,
13436 depth,
13437 )?;
13438
13439 _prev_end_offset = cur_offset + envelope_size;
13440 if 14 > max_ordinal {
13441 return Ok(());
13442 }
13443
13444 let cur_offset: usize = (14 - 1) * envelope_size;
13447
13448 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13450
13451 fidl::encoding::encode_in_envelope_optional::<BorderRoutingCounters, D>(
13456 self.thread_border_routing_counters
13457 .as_ref()
13458 .map(<BorderRoutingCounters as fidl::encoding::ValueTypeMarker>::borrow),
13459 encoder,
13460 offset + cur_offset,
13461 depth,
13462 )?;
13463
13464 _prev_end_offset = cur_offset + envelope_size;
13465 if 15 > max_ordinal {
13466 return Ok(());
13467 }
13468
13469 let cur_offset: usize = (15 - 1) * envelope_size;
13472
13473 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13475
13476 fidl::encoding::encode_in_envelope_optional::<SrpServerInfo, D>(
13481 self.srp_server_info
13482 .as_ref()
13483 .map(<SrpServerInfo as fidl::encoding::ValueTypeMarker>::borrow),
13484 encoder,
13485 offset + cur_offset,
13486 depth,
13487 )?;
13488
13489 _prev_end_offset = cur_offset + envelope_size;
13490 if 16 > max_ordinal {
13491 return Ok(());
13492 }
13493
13494 let cur_offset: usize = (16 - 1) * envelope_size;
13497
13498 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13500
13501 fidl::encoding::encode_in_envelope_optional::<DnssdCounters, D>(
13506 self.dnssd_counters
13507 .as_ref()
13508 .map(<DnssdCounters as fidl::encoding::ValueTypeMarker>::borrow),
13509 encoder,
13510 offset + cur_offset,
13511 depth,
13512 )?;
13513
13514 _prev_end_offset = cur_offset + envelope_size;
13515 if 17 > max_ordinal {
13516 return Ok(());
13517 }
13518
13519 let cur_offset: usize = (17 - 1) * envelope_size;
13522
13523 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13525
13526 fidl::encoding::encode_in_envelope_optional::<LeaderData, D>(
13531 self.leader_data
13532 .as_ref()
13533 .map(<LeaderData as fidl::encoding::ValueTypeMarker>::borrow),
13534 encoder,
13535 offset + cur_offset,
13536 depth,
13537 )?;
13538
13539 _prev_end_offset = cur_offset + envelope_size;
13540 if 18 > max_ordinal {
13541 return Ok(());
13542 }
13543
13544 let cur_offset: usize = (18 - 1) * envelope_size;
13547
13548 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13550
13551 fidl::encoding::encode_in_envelope_optional::<i64, D>(
13556 self.uptime.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
13557 encoder,
13558 offset + cur_offset,
13559 depth,
13560 )?;
13561
13562 _prev_end_offset = cur_offset + envelope_size;
13563 if 19 > max_ordinal {
13564 return Ok(());
13565 }
13566
13567 let cur_offset: usize = (19 - 1) * envelope_size;
13570
13571 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13573
13574 fidl::encoding::encode_in_envelope_optional::<Nat64Info, D>(
13579 self.nat64_info
13580 .as_ref()
13581 .map(<Nat64Info as fidl::encoding::ValueTypeMarker>::borrow),
13582 encoder,
13583 offset + cur_offset,
13584 depth,
13585 )?;
13586
13587 _prev_end_offset = cur_offset + envelope_size;
13588 if 20 > max_ordinal {
13589 return Ok(());
13590 }
13591
13592 let cur_offset: usize = (20 - 1) * envelope_size;
13595
13596 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13598
13599 fidl::encoding::encode_in_envelope_optional::<TrelCounters, D>(
13604 self.trel_counters
13605 .as_ref()
13606 .map(<TrelCounters as fidl::encoding::ValueTypeMarker>::borrow),
13607 encoder,
13608 offset + cur_offset,
13609 depth,
13610 )?;
13611
13612 _prev_end_offset = cur_offset + envelope_size;
13613 if 21 > max_ordinal {
13614 return Ok(());
13615 }
13616
13617 let cur_offset: usize = (21 - 1) * envelope_size;
13620
13621 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13623
13624 fidl::encoding::encode_in_envelope_optional::<TrelPeersInfo, D>(
13629 self.trel_peers_info
13630 .as_ref()
13631 .map(<TrelPeersInfo as fidl::encoding::ValueTypeMarker>::borrow),
13632 encoder,
13633 offset + cur_offset,
13634 depth,
13635 )?;
13636
13637 _prev_end_offset = cur_offset + envelope_size;
13638 if 22 > max_ordinal {
13639 return Ok(());
13640 }
13641
13642 let cur_offset: usize = (22 - 1) * envelope_size;
13645
13646 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13648
13649 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsInfo, D>(
13654 self.upstream_dns_info
13655 .as_ref()
13656 .map(<UpstreamDnsInfo as fidl::encoding::ValueTypeMarker>::borrow),
13657 encoder,
13658 offset + cur_offset,
13659 depth,
13660 )?;
13661
13662 _prev_end_offset = cur_offset + envelope_size;
13663 if 23 > max_ordinal {
13664 return Ok(());
13665 }
13666
13667 let cur_offset: usize = (23 - 1) * envelope_size;
13670
13671 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13673
13674 fidl::encoding::encode_in_envelope_optional::<Dhcp6PdInfo, D>(
13679 self.dhcp6pd_info
13680 .as_ref()
13681 .map(<Dhcp6PdInfo as fidl::encoding::ValueTypeMarker>::borrow),
13682 encoder,
13683 offset + cur_offset,
13684 depth,
13685 )?;
13686
13687 _prev_end_offset = cur_offset + envelope_size;
13688 if 24 > max_ordinal {
13689 return Ok(());
13690 }
13691
13692 let cur_offset: usize = (24 - 1) * envelope_size;
13695
13696 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13698
13699 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<LinkMetricsEntry, 64>, D>(
13704 self.link_metrics_entries.as_ref().map(<fidl::encoding::Vector<LinkMetricsEntry, 64> as fidl::encoding::ValueTypeMarker>::borrow),
13705 encoder, offset + cur_offset, depth
13706 )?;
13707
13708 _prev_end_offset = cur_offset + envelope_size;
13709 if 25 > max_ordinal {
13710 return Ok(());
13711 }
13712
13713 let cur_offset: usize = (25 - 1) * envelope_size;
13716
13717 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13719
13720 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan_device__common::BorderAgentCounters, D>(
13725 self.border_agent_counters.as_ref().map(<fidl_fuchsia_lowpan_device__common::BorderAgentCounters as fidl::encoding::ValueTypeMarker>::borrow),
13726 encoder, offset + cur_offset, depth
13727 )?;
13728
13729 _prev_end_offset = cur_offset + envelope_size;
13730
13731 Ok(())
13732 }
13733 }
13734
13735 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Telemetry {
13736 #[inline(always)]
13737 fn new_empty() -> Self {
13738 Self::default()
13739 }
13740
13741 unsafe fn decode(
13742 &mut self,
13743 decoder: &mut fidl::encoding::Decoder<'_, D>,
13744 offset: usize,
13745 mut depth: fidl::encoding::Depth,
13746 ) -> fidl::Result<()> {
13747 decoder.debug_check_bounds::<Self>(offset);
13748 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13749 None => return Err(fidl::Error::NotNullable),
13750 Some(len) => len,
13751 };
13752 if len == 0 {
13754 return Ok(());
13755 };
13756 depth.increment()?;
13757 let envelope_size = 8;
13758 let bytes_len = len * envelope_size;
13759 let offset = decoder.out_of_line_offset(bytes_len)?;
13760 let mut _next_ordinal_to_read = 0;
13762 let mut next_offset = offset;
13763 let end_offset = offset + bytes_len;
13764 _next_ordinal_to_read += 1;
13765 if next_offset >= end_offset {
13766 return Ok(());
13767 }
13768
13769 while _next_ordinal_to_read < 1 {
13771 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13772 _next_ordinal_to_read += 1;
13773 next_offset += envelope_size;
13774 }
13775
13776 let next_out_of_line = decoder.next_out_of_line();
13777 let handles_before = decoder.remaining_handles();
13778 if let Some((inlined, num_bytes, num_handles)) =
13779 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13780 {
13781 let member_inline_size =
13782 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13783 if inlined != (member_inline_size <= 4) {
13784 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13785 }
13786 let inner_offset;
13787 let mut inner_depth = depth.clone();
13788 if inlined {
13789 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13790 inner_offset = next_offset;
13791 } else {
13792 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13793 inner_depth.increment()?;
13794 }
13795 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
13796 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
13797 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13798 {
13799 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13800 }
13801 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13802 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13803 }
13804 }
13805
13806 next_offset += envelope_size;
13807 _next_ordinal_to_read += 1;
13808 if next_offset >= end_offset {
13809 return Ok(());
13810 }
13811
13812 while _next_ordinal_to_read < 2 {
13814 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13815 _next_ordinal_to_read += 1;
13816 next_offset += envelope_size;
13817 }
13818
13819 let next_out_of_line = decoder.next_out_of_line();
13820 let handles_before = decoder.remaining_handles();
13821 if let Some((inlined, num_bytes, num_handles)) =
13822 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13823 {
13824 let member_inline_size =
13825 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13826 if inlined != (member_inline_size <= 4) {
13827 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13828 }
13829 let inner_offset;
13830 let mut inner_depth = depth.clone();
13831 if inlined {
13832 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13833 inner_offset = next_offset;
13834 } else {
13835 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13836 inner_depth.increment()?;
13837 }
13838 let val_ref = self.tx_power.get_or_insert_with(|| fidl::new_empty!(i8, D));
13839 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
13840 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13841 {
13842 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13843 }
13844 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13845 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13846 }
13847 }
13848
13849 next_offset += envelope_size;
13850 _next_ordinal_to_read += 1;
13851 if next_offset >= end_offset {
13852 return Ok(());
13853 }
13854
13855 while _next_ordinal_to_read < 3 {
13857 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13858 _next_ordinal_to_read += 1;
13859 next_offset += envelope_size;
13860 }
13861
13862 let next_out_of_line = decoder.next_out_of_line();
13863 let handles_before = decoder.remaining_handles();
13864 if let Some((inlined, num_bytes, num_handles)) =
13865 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13866 {
13867 let member_inline_size =
13868 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13869 if inlined != (member_inline_size <= 4) {
13870 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13871 }
13872 let inner_offset;
13873 let mut inner_depth = depth.clone();
13874 if inlined {
13875 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13876 inner_offset = next_offset;
13877 } else {
13878 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13879 inner_depth.increment()?;
13880 }
13881 let val_ref = self.channel_index.get_or_insert_with(|| fidl::new_empty!(u16, D));
13882 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
13883 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13884 {
13885 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13886 }
13887 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13888 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13889 }
13890 }
13891
13892 next_offset += envelope_size;
13893 _next_ordinal_to_read += 1;
13894 if next_offset >= end_offset {
13895 return Ok(());
13896 }
13897
13898 while _next_ordinal_to_read < 4 {
13900 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13901 _next_ordinal_to_read += 1;
13902 next_offset += envelope_size;
13903 }
13904
13905 let next_out_of_line = decoder.next_out_of_line();
13906 let handles_before = decoder.remaining_handles();
13907 if let Some((inlined, num_bytes, num_handles)) =
13908 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13909 {
13910 let member_inline_size =
13911 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13912 if inlined != (member_inline_size <= 4) {
13913 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13914 }
13915 let inner_offset;
13916 let mut inner_depth = depth.clone();
13917 if inlined {
13918 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13919 inner_offset = next_offset;
13920 } else {
13921 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13922 inner_depth.increment()?;
13923 }
13924 let val_ref = self.partition_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
13925 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13926 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13927 {
13928 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13929 }
13930 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13931 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13932 }
13933 }
13934
13935 next_offset += envelope_size;
13936 _next_ordinal_to_read += 1;
13937 if next_offset >= end_offset {
13938 return Ok(());
13939 }
13940
13941 while _next_ordinal_to_read < 5 {
13943 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13944 _next_ordinal_to_read += 1;
13945 next_offset += envelope_size;
13946 }
13947
13948 let next_out_of_line = decoder.next_out_of_line();
13949 let handles_before = decoder.remaining_handles();
13950 if let Some((inlined, num_bytes, num_handles)) =
13951 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13952 {
13953 let member_inline_size =
13954 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
13955 decoder.context,
13956 );
13957 if inlined != (member_inline_size <= 4) {
13958 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13959 }
13960 let inner_offset;
13961 let mut inner_depth = depth.clone();
13962 if inlined {
13963 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13964 inner_offset = next_offset;
13965 } else {
13966 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13967 inner_depth.increment()?;
13968 }
13969 let val_ref = self
13970 .stack_version
13971 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
13972 fidl::decode!(
13973 fidl::encoding::BoundedString<256>,
13974 D,
13975 val_ref,
13976 decoder,
13977 inner_offset,
13978 inner_depth
13979 )?;
13980 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13981 {
13982 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13983 }
13984 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13985 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13986 }
13987 }
13988
13989 next_offset += envelope_size;
13990 _next_ordinal_to_read += 1;
13991 if next_offset >= end_offset {
13992 return Ok(());
13993 }
13994
13995 while _next_ordinal_to_read < 6 {
13997 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13998 _next_ordinal_to_read += 1;
13999 next_offset += envelope_size;
14000 }
14001
14002 let next_out_of_line = decoder.next_out_of_line();
14003 let handles_before = decoder.remaining_handles();
14004 if let Some((inlined, num_bytes, num_handles)) =
14005 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14006 {
14007 let member_inline_size =
14008 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
14009 decoder.context,
14010 );
14011 if inlined != (member_inline_size <= 4) {
14012 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14013 }
14014 let inner_offset;
14015 let mut inner_depth = depth.clone();
14016 if inlined {
14017 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14018 inner_offset = next_offset;
14019 } else {
14020 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14021 inner_depth.increment()?;
14022 }
14023 let val_ref = self
14024 .rcp_version
14025 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
14026 fidl::decode!(
14027 fidl::encoding::BoundedString<256>,
14028 D,
14029 val_ref,
14030 decoder,
14031 inner_offset,
14032 inner_depth
14033 )?;
14034 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14035 {
14036 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14037 }
14038 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14039 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14040 }
14041 }
14042
14043 next_offset += envelope_size;
14044 _next_ordinal_to_read += 1;
14045 if next_offset >= end_offset {
14046 return Ok(());
14047 }
14048
14049 while _next_ordinal_to_read < 7 {
14051 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14052 _next_ordinal_to_read += 1;
14053 next_offset += envelope_size;
14054 }
14055
14056 let next_out_of_line = decoder.next_out_of_line();
14057 let handles_before = decoder.remaining_handles();
14058 if let Some((inlined, num_bytes, num_handles)) =
14059 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14060 {
14061 let member_inline_size =
14062 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14063 if inlined != (member_inline_size <= 4) {
14064 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14065 }
14066 let inner_offset;
14067 let mut inner_depth = depth.clone();
14068 if inlined {
14069 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14070 inner_offset = next_offset;
14071 } else {
14072 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14073 inner_depth.increment()?;
14074 }
14075 let val_ref = self.thread_link_mode.get_or_insert_with(|| fidl::new_empty!(u8, D));
14076 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14077 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14078 {
14079 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14080 }
14081 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14082 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14083 }
14084 }
14085
14086 next_offset += envelope_size;
14087 _next_ordinal_to_read += 1;
14088 if next_offset >= end_offset {
14089 return Ok(());
14090 }
14091
14092 while _next_ordinal_to_read < 8 {
14094 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14095 _next_ordinal_to_read += 1;
14096 next_offset += envelope_size;
14097 }
14098
14099 let next_out_of_line = decoder.next_out_of_line();
14100 let handles_before = decoder.remaining_handles();
14101 if let Some((inlined, num_bytes, num_handles)) =
14102 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14103 {
14104 let member_inline_size =
14105 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14106 if inlined != (member_inline_size <= 4) {
14107 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14108 }
14109 let inner_offset;
14110 let mut inner_depth = depth.clone();
14111 if inlined {
14112 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14113 inner_offset = next_offset;
14114 } else {
14115 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14116 inner_depth.increment()?;
14117 }
14118 let val_ref = self.thread_router_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
14119 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14120 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14121 {
14122 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14123 }
14124 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14125 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14126 }
14127 }
14128
14129 next_offset += envelope_size;
14130 _next_ordinal_to_read += 1;
14131 if next_offset >= end_offset {
14132 return Ok(());
14133 }
14134
14135 while _next_ordinal_to_read < 9 {
14137 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14138 _next_ordinal_to_read += 1;
14139 next_offset += envelope_size;
14140 }
14141
14142 let next_out_of_line = decoder.next_out_of_line();
14143 let handles_before = decoder.remaining_handles();
14144 if let Some((inlined, num_bytes, num_handles)) =
14145 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14146 {
14147 let member_inline_size =
14148 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14149 if inlined != (member_inline_size <= 4) {
14150 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14151 }
14152 let inner_offset;
14153 let mut inner_depth = depth.clone();
14154 if inlined {
14155 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14156 inner_offset = next_offset;
14157 } else {
14158 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14159 inner_depth.increment()?;
14160 }
14161 let val_ref = self.thread_rloc.get_or_insert_with(|| fidl::new_empty!(u16, D));
14162 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
14163 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14164 {
14165 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14166 }
14167 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14168 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14169 }
14170 }
14171
14172 next_offset += envelope_size;
14173 _next_ordinal_to_read += 1;
14174 if next_offset >= end_offset {
14175 return Ok(());
14176 }
14177
14178 while _next_ordinal_to_read < 10 {
14180 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14181 _next_ordinal_to_read += 1;
14182 next_offset += envelope_size;
14183 }
14184
14185 let next_out_of_line = decoder.next_out_of_line();
14186 let handles_before = decoder.remaining_handles();
14187 if let Some((inlined, num_bytes, num_handles)) =
14188 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14189 {
14190 let member_inline_size =
14191 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14192 if inlined != (member_inline_size <= 4) {
14193 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14194 }
14195 let inner_offset;
14196 let mut inner_depth = depth.clone();
14197 if inlined {
14198 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14199 inner_offset = next_offset;
14200 } else {
14201 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14202 inner_depth.increment()?;
14203 }
14204 let val_ref =
14205 self.thread_network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
14206 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14207 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14208 {
14209 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14210 }
14211 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14212 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14213 }
14214 }
14215
14216 next_offset += envelope_size;
14217 _next_ordinal_to_read += 1;
14218 if next_offset >= end_offset {
14219 return Ok(());
14220 }
14221
14222 while _next_ordinal_to_read < 11 {
14224 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14225 _next_ordinal_to_read += 1;
14226 next_offset += envelope_size;
14227 }
14228
14229 let next_out_of_line = decoder.next_out_of_line();
14230 let handles_before = decoder.remaining_handles();
14231 if let Some((inlined, num_bytes, num_handles)) =
14232 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14233 {
14234 let member_inline_size =
14235 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14236 if inlined != (member_inline_size <= 4) {
14237 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14238 }
14239 let inner_offset;
14240 let mut inner_depth = depth.clone();
14241 if inlined {
14242 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14243 inner_offset = next_offset;
14244 } else {
14245 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14246 inner_depth.increment()?;
14247 }
14248 let val_ref = self
14249 .thread_stable_network_data_version
14250 .get_or_insert_with(|| fidl::new_empty!(u8, D));
14251 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14252 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14253 {
14254 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14255 }
14256 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14257 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14258 }
14259 }
14260
14261 next_offset += envelope_size;
14262 _next_ordinal_to_read += 1;
14263 if next_offset >= end_offset {
14264 return Ok(());
14265 }
14266
14267 while _next_ordinal_to_read < 12 {
14269 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14270 _next_ordinal_to_read += 1;
14271 next_offset += envelope_size;
14272 }
14273
14274 let next_out_of_line = decoder.next_out_of_line();
14275 let handles_before = decoder.remaining_handles();
14276 if let Some((inlined, num_bytes, num_handles)) =
14277 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14278 {
14279 let member_inline_size =
14280 <fidl::encoding::Vector<u8, 255> as fidl::encoding::TypeMarker>::inline_size(
14281 decoder.context,
14282 );
14283 if inlined != (member_inline_size <= 4) {
14284 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14285 }
14286 let inner_offset;
14287 let mut inner_depth = depth.clone();
14288 if inlined {
14289 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14290 inner_offset = next_offset;
14291 } else {
14292 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14293 inner_depth.increment()?;
14294 }
14295 let val_ref = self
14296 .thread_network_data
14297 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 255>, D));
14298 fidl::decode!(fidl::encoding::Vector<u8, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
14299 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14300 {
14301 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14302 }
14303 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14304 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14305 }
14306 }
14307
14308 next_offset += envelope_size;
14309 _next_ordinal_to_read += 1;
14310 if next_offset >= end_offset {
14311 return Ok(());
14312 }
14313
14314 while _next_ordinal_to_read < 13 {
14316 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14317 _next_ordinal_to_read += 1;
14318 next_offset += envelope_size;
14319 }
14320
14321 let next_out_of_line = decoder.next_out_of_line();
14322 let handles_before = decoder.remaining_handles();
14323 if let Some((inlined, num_bytes, num_handles)) =
14324 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14325 {
14326 let member_inline_size =
14327 <fidl::encoding::Vector<u8, 255> as fidl::encoding::TypeMarker>::inline_size(
14328 decoder.context,
14329 );
14330 if inlined != (member_inline_size <= 4) {
14331 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14332 }
14333 let inner_offset;
14334 let mut inner_depth = depth.clone();
14335 if inlined {
14336 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14337 inner_offset = next_offset;
14338 } else {
14339 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14340 inner_depth.increment()?;
14341 }
14342 let val_ref = self
14343 .thread_stable_network_data
14344 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 255>, D));
14345 fidl::decode!(fidl::encoding::Vector<u8, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
14346 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14347 {
14348 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14349 }
14350 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14351 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14352 }
14353 }
14354
14355 next_offset += envelope_size;
14356 _next_ordinal_to_read += 1;
14357 if next_offset >= end_offset {
14358 return Ok(());
14359 }
14360
14361 while _next_ordinal_to_read < 14 {
14363 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14364 _next_ordinal_to_read += 1;
14365 next_offset += envelope_size;
14366 }
14367
14368 let next_out_of_line = decoder.next_out_of_line();
14369 let handles_before = decoder.remaining_handles();
14370 if let Some((inlined, num_bytes, num_handles)) =
14371 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14372 {
14373 let member_inline_size =
14374 <BorderRoutingCounters as fidl::encoding::TypeMarker>::inline_size(
14375 decoder.context,
14376 );
14377 if inlined != (member_inline_size <= 4) {
14378 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14379 }
14380 let inner_offset;
14381 let mut inner_depth = depth.clone();
14382 if inlined {
14383 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14384 inner_offset = next_offset;
14385 } else {
14386 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14387 inner_depth.increment()?;
14388 }
14389 let val_ref = self
14390 .thread_border_routing_counters
14391 .get_or_insert_with(|| fidl::new_empty!(BorderRoutingCounters, D));
14392 fidl::decode!(
14393 BorderRoutingCounters,
14394 D,
14395 val_ref,
14396 decoder,
14397 inner_offset,
14398 inner_depth
14399 )?;
14400 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14401 {
14402 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14403 }
14404 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14405 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14406 }
14407 }
14408
14409 next_offset += envelope_size;
14410 _next_ordinal_to_read += 1;
14411 if next_offset >= end_offset {
14412 return Ok(());
14413 }
14414
14415 while _next_ordinal_to_read < 15 {
14417 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14418 _next_ordinal_to_read += 1;
14419 next_offset += envelope_size;
14420 }
14421
14422 let next_out_of_line = decoder.next_out_of_line();
14423 let handles_before = decoder.remaining_handles();
14424 if let Some((inlined, num_bytes, num_handles)) =
14425 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14426 {
14427 let member_inline_size =
14428 <SrpServerInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14429 if inlined != (member_inline_size <= 4) {
14430 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14431 }
14432 let inner_offset;
14433 let mut inner_depth = depth.clone();
14434 if inlined {
14435 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14436 inner_offset = next_offset;
14437 } else {
14438 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14439 inner_depth.increment()?;
14440 }
14441 let val_ref =
14442 self.srp_server_info.get_or_insert_with(|| fidl::new_empty!(SrpServerInfo, D));
14443 fidl::decode!(SrpServerInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
14444 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14445 {
14446 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14447 }
14448 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14449 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14450 }
14451 }
14452
14453 next_offset += envelope_size;
14454 _next_ordinal_to_read += 1;
14455 if next_offset >= end_offset {
14456 return Ok(());
14457 }
14458
14459 while _next_ordinal_to_read < 16 {
14461 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14462 _next_ordinal_to_read += 1;
14463 next_offset += envelope_size;
14464 }
14465
14466 let next_out_of_line = decoder.next_out_of_line();
14467 let handles_before = decoder.remaining_handles();
14468 if let Some((inlined, num_bytes, num_handles)) =
14469 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14470 {
14471 let member_inline_size =
14472 <DnssdCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14473 if inlined != (member_inline_size <= 4) {
14474 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14475 }
14476 let inner_offset;
14477 let mut inner_depth = depth.clone();
14478 if inlined {
14479 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14480 inner_offset = next_offset;
14481 } else {
14482 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14483 inner_depth.increment()?;
14484 }
14485 let val_ref =
14486 self.dnssd_counters.get_or_insert_with(|| fidl::new_empty!(DnssdCounters, D));
14487 fidl::decode!(DnssdCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
14488 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14489 {
14490 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14491 }
14492 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14493 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14494 }
14495 }
14496
14497 next_offset += envelope_size;
14498 _next_ordinal_to_read += 1;
14499 if next_offset >= end_offset {
14500 return Ok(());
14501 }
14502
14503 while _next_ordinal_to_read < 17 {
14505 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14506 _next_ordinal_to_read += 1;
14507 next_offset += envelope_size;
14508 }
14509
14510 let next_out_of_line = decoder.next_out_of_line();
14511 let handles_before = decoder.remaining_handles();
14512 if let Some((inlined, num_bytes, num_handles)) =
14513 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14514 {
14515 let member_inline_size =
14516 <LeaderData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14517 if inlined != (member_inline_size <= 4) {
14518 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14519 }
14520 let inner_offset;
14521 let mut inner_depth = depth.clone();
14522 if inlined {
14523 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14524 inner_offset = next_offset;
14525 } else {
14526 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14527 inner_depth.increment()?;
14528 }
14529 let val_ref =
14530 self.leader_data.get_or_insert_with(|| fidl::new_empty!(LeaderData, D));
14531 fidl::decode!(LeaderData, D, val_ref, decoder, inner_offset, inner_depth)?;
14532 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14533 {
14534 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14535 }
14536 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14537 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14538 }
14539 }
14540
14541 next_offset += envelope_size;
14542 _next_ordinal_to_read += 1;
14543 if next_offset >= end_offset {
14544 return Ok(());
14545 }
14546
14547 while _next_ordinal_to_read < 18 {
14549 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14550 _next_ordinal_to_read += 1;
14551 next_offset += envelope_size;
14552 }
14553
14554 let next_out_of_line = decoder.next_out_of_line();
14555 let handles_before = decoder.remaining_handles();
14556 if let Some((inlined, num_bytes, num_handles)) =
14557 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14558 {
14559 let member_inline_size =
14560 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14561 if inlined != (member_inline_size <= 4) {
14562 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14563 }
14564 let inner_offset;
14565 let mut inner_depth = depth.clone();
14566 if inlined {
14567 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14568 inner_offset = next_offset;
14569 } else {
14570 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14571 inner_depth.increment()?;
14572 }
14573 let val_ref = self.uptime.get_or_insert_with(|| fidl::new_empty!(i64, D));
14574 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
14575 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14576 {
14577 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14578 }
14579 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14580 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14581 }
14582 }
14583
14584 next_offset += envelope_size;
14585 _next_ordinal_to_read += 1;
14586 if next_offset >= end_offset {
14587 return Ok(());
14588 }
14589
14590 while _next_ordinal_to_read < 19 {
14592 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14593 _next_ordinal_to_read += 1;
14594 next_offset += envelope_size;
14595 }
14596
14597 let next_out_of_line = decoder.next_out_of_line();
14598 let handles_before = decoder.remaining_handles();
14599 if let Some((inlined, num_bytes, num_handles)) =
14600 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14601 {
14602 let member_inline_size =
14603 <Nat64Info as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14604 if inlined != (member_inline_size <= 4) {
14605 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14606 }
14607 let inner_offset;
14608 let mut inner_depth = depth.clone();
14609 if inlined {
14610 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14611 inner_offset = next_offset;
14612 } else {
14613 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14614 inner_depth.increment()?;
14615 }
14616 let val_ref = self.nat64_info.get_or_insert_with(|| fidl::new_empty!(Nat64Info, D));
14617 fidl::decode!(Nat64Info, D, val_ref, decoder, inner_offset, inner_depth)?;
14618 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14619 {
14620 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14621 }
14622 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14623 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14624 }
14625 }
14626
14627 next_offset += envelope_size;
14628 _next_ordinal_to_read += 1;
14629 if next_offset >= end_offset {
14630 return Ok(());
14631 }
14632
14633 while _next_ordinal_to_read < 20 {
14635 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14636 _next_ordinal_to_read += 1;
14637 next_offset += envelope_size;
14638 }
14639
14640 let next_out_of_line = decoder.next_out_of_line();
14641 let handles_before = decoder.remaining_handles();
14642 if let Some((inlined, num_bytes, num_handles)) =
14643 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14644 {
14645 let member_inline_size =
14646 <TrelCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14647 if inlined != (member_inline_size <= 4) {
14648 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14649 }
14650 let inner_offset;
14651 let mut inner_depth = depth.clone();
14652 if inlined {
14653 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14654 inner_offset = next_offset;
14655 } else {
14656 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14657 inner_depth.increment()?;
14658 }
14659 let val_ref =
14660 self.trel_counters.get_or_insert_with(|| fidl::new_empty!(TrelCounters, D));
14661 fidl::decode!(TrelCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
14662 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14663 {
14664 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14665 }
14666 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14667 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14668 }
14669 }
14670
14671 next_offset += envelope_size;
14672 _next_ordinal_to_read += 1;
14673 if next_offset >= end_offset {
14674 return Ok(());
14675 }
14676
14677 while _next_ordinal_to_read < 21 {
14679 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14680 _next_ordinal_to_read += 1;
14681 next_offset += envelope_size;
14682 }
14683
14684 let next_out_of_line = decoder.next_out_of_line();
14685 let handles_before = decoder.remaining_handles();
14686 if let Some((inlined, num_bytes, num_handles)) =
14687 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14688 {
14689 let member_inline_size =
14690 <TrelPeersInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14691 if inlined != (member_inline_size <= 4) {
14692 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14693 }
14694 let inner_offset;
14695 let mut inner_depth = depth.clone();
14696 if inlined {
14697 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14698 inner_offset = next_offset;
14699 } else {
14700 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14701 inner_depth.increment()?;
14702 }
14703 let val_ref =
14704 self.trel_peers_info.get_or_insert_with(|| fidl::new_empty!(TrelPeersInfo, D));
14705 fidl::decode!(TrelPeersInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
14706 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14707 {
14708 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14709 }
14710 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14711 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14712 }
14713 }
14714
14715 next_offset += envelope_size;
14716 _next_ordinal_to_read += 1;
14717 if next_offset >= end_offset {
14718 return Ok(());
14719 }
14720
14721 while _next_ordinal_to_read < 22 {
14723 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14724 _next_ordinal_to_read += 1;
14725 next_offset += envelope_size;
14726 }
14727
14728 let next_out_of_line = decoder.next_out_of_line();
14729 let handles_before = decoder.remaining_handles();
14730 if let Some((inlined, num_bytes, num_handles)) =
14731 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14732 {
14733 let member_inline_size =
14734 <UpstreamDnsInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14735 if inlined != (member_inline_size <= 4) {
14736 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14737 }
14738 let inner_offset;
14739 let mut inner_depth = depth.clone();
14740 if inlined {
14741 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14742 inner_offset = next_offset;
14743 } else {
14744 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14745 inner_depth.increment()?;
14746 }
14747 let val_ref = self
14748 .upstream_dns_info
14749 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsInfo, D));
14750 fidl::decode!(UpstreamDnsInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
14751 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14752 {
14753 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14754 }
14755 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14756 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14757 }
14758 }
14759
14760 next_offset += envelope_size;
14761 _next_ordinal_to_read += 1;
14762 if next_offset >= end_offset {
14763 return Ok(());
14764 }
14765
14766 while _next_ordinal_to_read < 23 {
14768 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14769 _next_ordinal_to_read += 1;
14770 next_offset += envelope_size;
14771 }
14772
14773 let next_out_of_line = decoder.next_out_of_line();
14774 let handles_before = decoder.remaining_handles();
14775 if let Some((inlined, num_bytes, num_handles)) =
14776 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14777 {
14778 let member_inline_size =
14779 <Dhcp6PdInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14780 if inlined != (member_inline_size <= 4) {
14781 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14782 }
14783 let inner_offset;
14784 let mut inner_depth = depth.clone();
14785 if inlined {
14786 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14787 inner_offset = next_offset;
14788 } else {
14789 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14790 inner_depth.increment()?;
14791 }
14792 let val_ref =
14793 self.dhcp6pd_info.get_or_insert_with(|| fidl::new_empty!(Dhcp6PdInfo, D));
14794 fidl::decode!(Dhcp6PdInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
14795 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14796 {
14797 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14798 }
14799 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14800 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14801 }
14802 }
14803
14804 next_offset += envelope_size;
14805 _next_ordinal_to_read += 1;
14806 if next_offset >= end_offset {
14807 return Ok(());
14808 }
14809
14810 while _next_ordinal_to_read < 24 {
14812 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14813 _next_ordinal_to_read += 1;
14814 next_offset += envelope_size;
14815 }
14816
14817 let next_out_of_line = decoder.next_out_of_line();
14818 let handles_before = decoder.remaining_handles();
14819 if let Some((inlined, num_bytes, num_handles)) =
14820 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14821 {
14822 let member_inline_size = <fidl::encoding::Vector<LinkMetricsEntry, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14823 if inlined != (member_inline_size <= 4) {
14824 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14825 }
14826 let inner_offset;
14827 let mut inner_depth = depth.clone();
14828 if inlined {
14829 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14830 inner_offset = next_offset;
14831 } else {
14832 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14833 inner_depth.increment()?;
14834 }
14835 let val_ref = self.link_metrics_entries.get_or_insert_with(
14836 || fidl::new_empty!(fidl::encoding::Vector<LinkMetricsEntry, 64>, D),
14837 );
14838 fidl::decode!(fidl::encoding::Vector<LinkMetricsEntry, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
14839 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14840 {
14841 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14842 }
14843 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14844 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14845 }
14846 }
14847
14848 next_offset += envelope_size;
14849 _next_ordinal_to_read += 1;
14850 if next_offset >= end_offset {
14851 return Ok(());
14852 }
14853
14854 while _next_ordinal_to_read < 25 {
14856 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14857 _next_ordinal_to_read += 1;
14858 next_offset += envelope_size;
14859 }
14860
14861 let next_out_of_line = decoder.next_out_of_line();
14862 let handles_before = decoder.remaining_handles();
14863 if let Some((inlined, num_bytes, num_handles)) =
14864 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14865 {
14866 let member_inline_size = <fidl_fuchsia_lowpan_device__common::BorderAgentCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14867 if inlined != (member_inline_size <= 4) {
14868 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14869 }
14870 let inner_offset;
14871 let mut inner_depth = depth.clone();
14872 if inlined {
14873 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14874 inner_offset = next_offset;
14875 } else {
14876 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14877 inner_depth.increment()?;
14878 }
14879 let val_ref = self.border_agent_counters.get_or_insert_with(|| {
14880 fidl::new_empty!(fidl_fuchsia_lowpan_device__common::BorderAgentCounters, D)
14881 });
14882 fidl::decode!(
14883 fidl_fuchsia_lowpan_device__common::BorderAgentCounters,
14884 D,
14885 val_ref,
14886 decoder,
14887 inner_offset,
14888 inner_depth
14889 )?;
14890 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14891 {
14892 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14893 }
14894 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14895 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14896 }
14897 }
14898
14899 next_offset += envelope_size;
14900
14901 while next_offset < end_offset {
14903 _next_ordinal_to_read += 1;
14904 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14905 next_offset += envelope_size;
14906 }
14907
14908 Ok(())
14909 }
14910 }
14911
14912 impl TrelCounters {
14913 #[inline(always)]
14914 fn max_ordinal_present(&self) -> u64 {
14915 if let Some(_) = self.tx_packets {
14916 return 5;
14917 }
14918 if let Some(_) = self.tx_failure {
14919 return 4;
14920 }
14921 if let Some(_) = self.tx_bytes {
14922 return 3;
14923 }
14924 if let Some(_) = self.rx_packets {
14925 return 2;
14926 }
14927 if let Some(_) = self.rx_bytes {
14928 return 1;
14929 }
14930 0
14931 }
14932 }
14933
14934 impl fidl::encoding::ValueTypeMarker for TrelCounters {
14935 type Borrowed<'a> = &'a Self;
14936 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14937 value
14938 }
14939 }
14940
14941 unsafe impl fidl::encoding::TypeMarker for TrelCounters {
14942 type Owned = Self;
14943
14944 #[inline(always)]
14945 fn inline_align(_context: fidl::encoding::Context) -> usize {
14946 8
14947 }
14948
14949 #[inline(always)]
14950 fn inline_size(_context: fidl::encoding::Context) -> usize {
14951 16
14952 }
14953 }
14954
14955 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TrelCounters, D>
14956 for &TrelCounters
14957 {
14958 unsafe fn encode(
14959 self,
14960 encoder: &mut fidl::encoding::Encoder<'_, D>,
14961 offset: usize,
14962 mut depth: fidl::encoding::Depth,
14963 ) -> fidl::Result<()> {
14964 encoder.debug_check_bounds::<TrelCounters>(offset);
14965 let max_ordinal: u64 = self.max_ordinal_present();
14967 encoder.write_num(max_ordinal, offset);
14968 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14969 if max_ordinal == 0 {
14971 return Ok(());
14972 }
14973 depth.increment()?;
14974 let envelope_size = 8;
14975 let bytes_len = max_ordinal as usize * envelope_size;
14976 #[allow(unused_variables)]
14977 let offset = encoder.out_of_line_offset(bytes_len);
14978 let mut _prev_end_offset: usize = 0;
14979 if 1 > max_ordinal {
14980 return Ok(());
14981 }
14982
14983 let cur_offset: usize = (1 - 1) * envelope_size;
14986
14987 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14989
14990 fidl::encoding::encode_in_envelope_optional::<u64, D>(
14995 self.rx_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
14996 encoder,
14997 offset + cur_offset,
14998 depth,
14999 )?;
15000
15001 _prev_end_offset = cur_offset + envelope_size;
15002 if 2 > max_ordinal {
15003 return Ok(());
15004 }
15005
15006 let cur_offset: usize = (2 - 1) * envelope_size;
15009
15010 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15012
15013 fidl::encoding::encode_in_envelope_optional::<u64, D>(
15018 self.rx_packets.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
15019 encoder,
15020 offset + cur_offset,
15021 depth,
15022 )?;
15023
15024 _prev_end_offset = cur_offset + envelope_size;
15025 if 3 > max_ordinal {
15026 return Ok(());
15027 }
15028
15029 let cur_offset: usize = (3 - 1) * envelope_size;
15032
15033 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15035
15036 fidl::encoding::encode_in_envelope_optional::<u64, D>(
15041 self.tx_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
15042 encoder,
15043 offset + cur_offset,
15044 depth,
15045 )?;
15046
15047 _prev_end_offset = cur_offset + envelope_size;
15048 if 4 > max_ordinal {
15049 return Ok(());
15050 }
15051
15052 let cur_offset: usize = (4 - 1) * envelope_size;
15055
15056 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15058
15059 fidl::encoding::encode_in_envelope_optional::<u64, D>(
15064 self.tx_failure.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
15065 encoder,
15066 offset + cur_offset,
15067 depth,
15068 )?;
15069
15070 _prev_end_offset = cur_offset + envelope_size;
15071 if 5 > max_ordinal {
15072 return Ok(());
15073 }
15074
15075 let cur_offset: usize = (5 - 1) * envelope_size;
15078
15079 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15081
15082 fidl::encoding::encode_in_envelope_optional::<u64, D>(
15087 self.tx_packets.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
15088 encoder,
15089 offset + cur_offset,
15090 depth,
15091 )?;
15092
15093 _prev_end_offset = cur_offset + envelope_size;
15094
15095 Ok(())
15096 }
15097 }
15098
15099 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TrelCounters {
15100 #[inline(always)]
15101 fn new_empty() -> Self {
15102 Self::default()
15103 }
15104
15105 unsafe fn decode(
15106 &mut self,
15107 decoder: &mut fidl::encoding::Decoder<'_, D>,
15108 offset: usize,
15109 mut depth: fidl::encoding::Depth,
15110 ) -> fidl::Result<()> {
15111 decoder.debug_check_bounds::<Self>(offset);
15112 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15113 None => return Err(fidl::Error::NotNullable),
15114 Some(len) => len,
15115 };
15116 if len == 0 {
15118 return Ok(());
15119 };
15120 depth.increment()?;
15121 let envelope_size = 8;
15122 let bytes_len = len * envelope_size;
15123 let offset = decoder.out_of_line_offset(bytes_len)?;
15124 let mut _next_ordinal_to_read = 0;
15126 let mut next_offset = offset;
15127 let end_offset = offset + bytes_len;
15128 _next_ordinal_to_read += 1;
15129 if next_offset >= end_offset {
15130 return Ok(());
15131 }
15132
15133 while _next_ordinal_to_read < 1 {
15135 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15136 _next_ordinal_to_read += 1;
15137 next_offset += envelope_size;
15138 }
15139
15140 let next_out_of_line = decoder.next_out_of_line();
15141 let handles_before = decoder.remaining_handles();
15142 if let Some((inlined, num_bytes, num_handles)) =
15143 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15144 {
15145 let member_inline_size =
15146 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15147 if inlined != (member_inline_size <= 4) {
15148 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15149 }
15150 let inner_offset;
15151 let mut inner_depth = depth.clone();
15152 if inlined {
15153 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15154 inner_offset = next_offset;
15155 } else {
15156 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15157 inner_depth.increment()?;
15158 }
15159 let val_ref = self.rx_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
15160 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15161 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15162 {
15163 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15164 }
15165 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15166 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15167 }
15168 }
15169
15170 next_offset += envelope_size;
15171 _next_ordinal_to_read += 1;
15172 if next_offset >= end_offset {
15173 return Ok(());
15174 }
15175
15176 while _next_ordinal_to_read < 2 {
15178 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15179 _next_ordinal_to_read += 1;
15180 next_offset += envelope_size;
15181 }
15182
15183 let next_out_of_line = decoder.next_out_of_line();
15184 let handles_before = decoder.remaining_handles();
15185 if let Some((inlined, num_bytes, num_handles)) =
15186 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15187 {
15188 let member_inline_size =
15189 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15190 if inlined != (member_inline_size <= 4) {
15191 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15192 }
15193 let inner_offset;
15194 let mut inner_depth = depth.clone();
15195 if inlined {
15196 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15197 inner_offset = next_offset;
15198 } else {
15199 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15200 inner_depth.increment()?;
15201 }
15202 let val_ref = self.rx_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
15203 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15204 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15205 {
15206 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15207 }
15208 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15209 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15210 }
15211 }
15212
15213 next_offset += envelope_size;
15214 _next_ordinal_to_read += 1;
15215 if next_offset >= end_offset {
15216 return Ok(());
15217 }
15218
15219 while _next_ordinal_to_read < 3 {
15221 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15222 _next_ordinal_to_read += 1;
15223 next_offset += envelope_size;
15224 }
15225
15226 let next_out_of_line = decoder.next_out_of_line();
15227 let handles_before = decoder.remaining_handles();
15228 if let Some((inlined, num_bytes, num_handles)) =
15229 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15230 {
15231 let member_inline_size =
15232 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15233 if inlined != (member_inline_size <= 4) {
15234 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15235 }
15236 let inner_offset;
15237 let mut inner_depth = depth.clone();
15238 if inlined {
15239 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15240 inner_offset = next_offset;
15241 } else {
15242 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15243 inner_depth.increment()?;
15244 }
15245 let val_ref = self.tx_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
15246 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15247 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15248 {
15249 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15250 }
15251 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15252 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15253 }
15254 }
15255
15256 next_offset += envelope_size;
15257 _next_ordinal_to_read += 1;
15258 if next_offset >= end_offset {
15259 return Ok(());
15260 }
15261
15262 while _next_ordinal_to_read < 4 {
15264 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15265 _next_ordinal_to_read += 1;
15266 next_offset += envelope_size;
15267 }
15268
15269 let next_out_of_line = decoder.next_out_of_line();
15270 let handles_before = decoder.remaining_handles();
15271 if let Some((inlined, num_bytes, num_handles)) =
15272 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15273 {
15274 let member_inline_size =
15275 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15276 if inlined != (member_inline_size <= 4) {
15277 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15278 }
15279 let inner_offset;
15280 let mut inner_depth = depth.clone();
15281 if inlined {
15282 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15283 inner_offset = next_offset;
15284 } else {
15285 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15286 inner_depth.increment()?;
15287 }
15288 let val_ref = self.tx_failure.get_or_insert_with(|| fidl::new_empty!(u64, D));
15289 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15290 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15291 {
15292 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15293 }
15294 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15295 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15296 }
15297 }
15298
15299 next_offset += envelope_size;
15300 _next_ordinal_to_read += 1;
15301 if next_offset >= end_offset {
15302 return Ok(());
15303 }
15304
15305 while _next_ordinal_to_read < 5 {
15307 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15308 _next_ordinal_to_read += 1;
15309 next_offset += envelope_size;
15310 }
15311
15312 let next_out_of_line = decoder.next_out_of_line();
15313 let handles_before = decoder.remaining_handles();
15314 if let Some((inlined, num_bytes, num_handles)) =
15315 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15316 {
15317 let member_inline_size =
15318 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15319 if inlined != (member_inline_size <= 4) {
15320 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15321 }
15322 let inner_offset;
15323 let mut inner_depth = depth.clone();
15324 if inlined {
15325 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15326 inner_offset = next_offset;
15327 } else {
15328 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15329 inner_depth.increment()?;
15330 }
15331 let val_ref = self.tx_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
15332 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15333 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15334 {
15335 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15336 }
15337 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15338 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15339 }
15340 }
15341
15342 next_offset += envelope_size;
15343
15344 while next_offset < end_offset {
15346 _next_ordinal_to_read += 1;
15347 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15348 next_offset += envelope_size;
15349 }
15350
15351 Ok(())
15352 }
15353 }
15354
15355 impl TrelPeersInfo {
15356 #[inline(always)]
15357 fn max_ordinal_present(&self) -> u64 {
15358 if let Some(_) = self.num_trel_peers {
15359 return 1;
15360 }
15361 0
15362 }
15363 }
15364
15365 impl fidl::encoding::ValueTypeMarker for TrelPeersInfo {
15366 type Borrowed<'a> = &'a Self;
15367 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15368 value
15369 }
15370 }
15371
15372 unsafe impl fidl::encoding::TypeMarker for TrelPeersInfo {
15373 type Owned = Self;
15374
15375 #[inline(always)]
15376 fn inline_align(_context: fidl::encoding::Context) -> usize {
15377 8
15378 }
15379
15380 #[inline(always)]
15381 fn inline_size(_context: fidl::encoding::Context) -> usize {
15382 16
15383 }
15384 }
15385
15386 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TrelPeersInfo, D>
15387 for &TrelPeersInfo
15388 {
15389 unsafe fn encode(
15390 self,
15391 encoder: &mut fidl::encoding::Encoder<'_, D>,
15392 offset: usize,
15393 mut depth: fidl::encoding::Depth,
15394 ) -> fidl::Result<()> {
15395 encoder.debug_check_bounds::<TrelPeersInfo>(offset);
15396 let max_ordinal: u64 = self.max_ordinal_present();
15398 encoder.write_num(max_ordinal, offset);
15399 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15400 if max_ordinal == 0 {
15402 return Ok(());
15403 }
15404 depth.increment()?;
15405 let envelope_size = 8;
15406 let bytes_len = max_ordinal as usize * envelope_size;
15407 #[allow(unused_variables)]
15408 let offset = encoder.out_of_line_offset(bytes_len);
15409 let mut _prev_end_offset: usize = 0;
15410 if 1 > max_ordinal {
15411 return Ok(());
15412 }
15413
15414 let cur_offset: usize = (1 - 1) * envelope_size;
15417
15418 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15420
15421 fidl::encoding::encode_in_envelope_optional::<u16, D>(
15426 self.num_trel_peers.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
15427 encoder,
15428 offset + cur_offset,
15429 depth,
15430 )?;
15431
15432 _prev_end_offset = cur_offset + envelope_size;
15433
15434 Ok(())
15435 }
15436 }
15437
15438 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TrelPeersInfo {
15439 #[inline(always)]
15440 fn new_empty() -> Self {
15441 Self::default()
15442 }
15443
15444 unsafe fn decode(
15445 &mut self,
15446 decoder: &mut fidl::encoding::Decoder<'_, D>,
15447 offset: usize,
15448 mut depth: fidl::encoding::Depth,
15449 ) -> fidl::Result<()> {
15450 decoder.debug_check_bounds::<Self>(offset);
15451 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15452 None => return Err(fidl::Error::NotNullable),
15453 Some(len) => len,
15454 };
15455 if len == 0 {
15457 return Ok(());
15458 };
15459 depth.increment()?;
15460 let envelope_size = 8;
15461 let bytes_len = len * envelope_size;
15462 let offset = decoder.out_of_line_offset(bytes_len)?;
15463 let mut _next_ordinal_to_read = 0;
15465 let mut next_offset = offset;
15466 let end_offset = offset + bytes_len;
15467 _next_ordinal_to_read += 1;
15468 if next_offset >= end_offset {
15469 return Ok(());
15470 }
15471
15472 while _next_ordinal_to_read < 1 {
15474 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15475 _next_ordinal_to_read += 1;
15476 next_offset += envelope_size;
15477 }
15478
15479 let next_out_of_line = decoder.next_out_of_line();
15480 let handles_before = decoder.remaining_handles();
15481 if let Some((inlined, num_bytes, num_handles)) =
15482 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15483 {
15484 let member_inline_size =
15485 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15486 if inlined != (member_inline_size <= 4) {
15487 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15488 }
15489 let inner_offset;
15490 let mut inner_depth = depth.clone();
15491 if inlined {
15492 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15493 inner_offset = next_offset;
15494 } else {
15495 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15496 inner_depth.increment()?;
15497 }
15498 let val_ref = self.num_trel_peers.get_or_insert_with(|| fidl::new_empty!(u16, D));
15499 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
15500 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15501 {
15502 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15503 }
15504 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15505 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15506 }
15507 }
15508
15509 next_offset += envelope_size;
15510
15511 while next_offset < end_offset {
15513 _next_ordinal_to_read += 1;
15514 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15515 next_offset += envelope_size;
15516 }
15517
15518 Ok(())
15519 }
15520 }
15521
15522 impl UpstreamDnsCounters {
15523 #[inline(always)]
15524 fn max_ordinal_present(&self) -> u64 {
15525 if let Some(_) = self.failures {
15526 return 3;
15527 }
15528 if let Some(_) = self.responses {
15529 return 2;
15530 }
15531 if let Some(_) = self.queries {
15532 return 1;
15533 }
15534 0
15535 }
15536 }
15537
15538 impl fidl::encoding::ValueTypeMarker for UpstreamDnsCounters {
15539 type Borrowed<'a> = &'a Self;
15540 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15541 value
15542 }
15543 }
15544
15545 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsCounters {
15546 type Owned = Self;
15547
15548 #[inline(always)]
15549 fn inline_align(_context: fidl::encoding::Context) -> usize {
15550 8
15551 }
15552
15553 #[inline(always)]
15554 fn inline_size(_context: fidl::encoding::Context) -> usize {
15555 16
15556 }
15557 }
15558
15559 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UpstreamDnsCounters, D>
15560 for &UpstreamDnsCounters
15561 {
15562 unsafe fn encode(
15563 self,
15564 encoder: &mut fidl::encoding::Encoder<'_, D>,
15565 offset: usize,
15566 mut depth: fidl::encoding::Depth,
15567 ) -> fidl::Result<()> {
15568 encoder.debug_check_bounds::<UpstreamDnsCounters>(offset);
15569 let max_ordinal: u64 = self.max_ordinal_present();
15571 encoder.write_num(max_ordinal, offset);
15572 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15573 if max_ordinal == 0 {
15575 return Ok(());
15576 }
15577 depth.increment()?;
15578 let envelope_size = 8;
15579 let bytes_len = max_ordinal as usize * envelope_size;
15580 #[allow(unused_variables)]
15581 let offset = encoder.out_of_line_offset(bytes_len);
15582 let mut _prev_end_offset: usize = 0;
15583 if 1 > max_ordinal {
15584 return Ok(());
15585 }
15586
15587 let cur_offset: usize = (1 - 1) * envelope_size;
15590
15591 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15593
15594 fidl::encoding::encode_in_envelope_optional::<u32, D>(
15599 self.queries.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
15600 encoder,
15601 offset + cur_offset,
15602 depth,
15603 )?;
15604
15605 _prev_end_offset = cur_offset + envelope_size;
15606 if 2 > max_ordinal {
15607 return Ok(());
15608 }
15609
15610 let cur_offset: usize = (2 - 1) * envelope_size;
15613
15614 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15616
15617 fidl::encoding::encode_in_envelope_optional::<u32, D>(
15622 self.responses.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
15623 encoder,
15624 offset + cur_offset,
15625 depth,
15626 )?;
15627
15628 _prev_end_offset = cur_offset + envelope_size;
15629 if 3 > max_ordinal {
15630 return Ok(());
15631 }
15632
15633 let cur_offset: usize = (3 - 1) * envelope_size;
15636
15637 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15639
15640 fidl::encoding::encode_in_envelope_optional::<u32, D>(
15645 self.failures.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
15646 encoder,
15647 offset + cur_offset,
15648 depth,
15649 )?;
15650
15651 _prev_end_offset = cur_offset + envelope_size;
15652
15653 Ok(())
15654 }
15655 }
15656
15657 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsCounters {
15658 #[inline(always)]
15659 fn new_empty() -> Self {
15660 Self::default()
15661 }
15662
15663 unsafe fn decode(
15664 &mut self,
15665 decoder: &mut fidl::encoding::Decoder<'_, D>,
15666 offset: usize,
15667 mut depth: fidl::encoding::Depth,
15668 ) -> fidl::Result<()> {
15669 decoder.debug_check_bounds::<Self>(offset);
15670 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15671 None => return Err(fidl::Error::NotNullable),
15672 Some(len) => len,
15673 };
15674 if len == 0 {
15676 return Ok(());
15677 };
15678 depth.increment()?;
15679 let envelope_size = 8;
15680 let bytes_len = len * envelope_size;
15681 let offset = decoder.out_of_line_offset(bytes_len)?;
15682 let mut _next_ordinal_to_read = 0;
15684 let mut next_offset = offset;
15685 let end_offset = offset + bytes_len;
15686 _next_ordinal_to_read += 1;
15687 if next_offset >= end_offset {
15688 return Ok(());
15689 }
15690
15691 while _next_ordinal_to_read < 1 {
15693 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15694 _next_ordinal_to_read += 1;
15695 next_offset += envelope_size;
15696 }
15697
15698 let next_out_of_line = decoder.next_out_of_line();
15699 let handles_before = decoder.remaining_handles();
15700 if let Some((inlined, num_bytes, num_handles)) =
15701 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15702 {
15703 let member_inline_size =
15704 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15705 if inlined != (member_inline_size <= 4) {
15706 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15707 }
15708 let inner_offset;
15709 let mut inner_depth = depth.clone();
15710 if inlined {
15711 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15712 inner_offset = next_offset;
15713 } else {
15714 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15715 inner_depth.increment()?;
15716 }
15717 let val_ref = self.queries.get_or_insert_with(|| fidl::new_empty!(u32, D));
15718 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
15719 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15720 {
15721 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15722 }
15723 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15724 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15725 }
15726 }
15727
15728 next_offset += envelope_size;
15729 _next_ordinal_to_read += 1;
15730 if next_offset >= end_offset {
15731 return Ok(());
15732 }
15733
15734 while _next_ordinal_to_read < 2 {
15736 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15737 _next_ordinal_to_read += 1;
15738 next_offset += envelope_size;
15739 }
15740
15741 let next_out_of_line = decoder.next_out_of_line();
15742 let handles_before = decoder.remaining_handles();
15743 if let Some((inlined, num_bytes, num_handles)) =
15744 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15745 {
15746 let member_inline_size =
15747 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15748 if inlined != (member_inline_size <= 4) {
15749 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15750 }
15751 let inner_offset;
15752 let mut inner_depth = depth.clone();
15753 if inlined {
15754 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15755 inner_offset = next_offset;
15756 } else {
15757 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15758 inner_depth.increment()?;
15759 }
15760 let val_ref = self.responses.get_or_insert_with(|| fidl::new_empty!(u32, D));
15761 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
15762 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15763 {
15764 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15765 }
15766 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15767 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15768 }
15769 }
15770
15771 next_offset += envelope_size;
15772 _next_ordinal_to_read += 1;
15773 if next_offset >= end_offset {
15774 return Ok(());
15775 }
15776
15777 while _next_ordinal_to_read < 3 {
15779 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15780 _next_ordinal_to_read += 1;
15781 next_offset += envelope_size;
15782 }
15783
15784 let next_out_of_line = decoder.next_out_of_line();
15785 let handles_before = decoder.remaining_handles();
15786 if let Some((inlined, num_bytes, num_handles)) =
15787 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15788 {
15789 let member_inline_size =
15790 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15791 if inlined != (member_inline_size <= 4) {
15792 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15793 }
15794 let inner_offset;
15795 let mut inner_depth = depth.clone();
15796 if inlined {
15797 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15798 inner_offset = next_offset;
15799 } else {
15800 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15801 inner_depth.increment()?;
15802 }
15803 let val_ref = self.failures.get_or_insert_with(|| fidl::new_empty!(u32, D));
15804 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
15805 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15806 {
15807 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15808 }
15809 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15810 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15811 }
15812 }
15813
15814 next_offset += envelope_size;
15815
15816 while next_offset < end_offset {
15818 _next_ordinal_to_read += 1;
15819 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15820 next_offset += envelope_size;
15821 }
15822
15823 Ok(())
15824 }
15825 }
15826
15827 impl UpstreamDnsInfo {
15828 #[inline(always)]
15829 fn max_ordinal_present(&self) -> u64 {
15830 if let Some(_) = self.upstream_dns_query_state {
15831 return 1;
15832 }
15833 0
15834 }
15835 }
15836
15837 impl fidl::encoding::ValueTypeMarker for UpstreamDnsInfo {
15838 type Borrowed<'a> = &'a Self;
15839 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15840 value
15841 }
15842 }
15843
15844 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsInfo {
15845 type Owned = Self;
15846
15847 #[inline(always)]
15848 fn inline_align(_context: fidl::encoding::Context) -> usize {
15849 8
15850 }
15851
15852 #[inline(always)]
15853 fn inline_size(_context: fidl::encoding::Context) -> usize {
15854 16
15855 }
15856 }
15857
15858 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UpstreamDnsInfo, D>
15859 for &UpstreamDnsInfo
15860 {
15861 unsafe fn encode(
15862 self,
15863 encoder: &mut fidl::encoding::Encoder<'_, D>,
15864 offset: usize,
15865 mut depth: fidl::encoding::Depth,
15866 ) -> fidl::Result<()> {
15867 encoder.debug_check_bounds::<UpstreamDnsInfo>(offset);
15868 let max_ordinal: u64 = self.max_ordinal_present();
15870 encoder.write_num(max_ordinal, offset);
15871 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15872 if max_ordinal == 0 {
15874 return Ok(());
15875 }
15876 depth.increment()?;
15877 let envelope_size = 8;
15878 let bytes_len = max_ordinal as usize * envelope_size;
15879 #[allow(unused_variables)]
15880 let offset = encoder.out_of_line_offset(bytes_len);
15881 let mut _prev_end_offset: usize = 0;
15882 if 1 > max_ordinal {
15883 return Ok(());
15884 }
15885
15886 let cur_offset: usize = (1 - 1) * envelope_size;
15889
15890 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15892
15893 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsQueryState, D>(
15898 self.upstream_dns_query_state
15899 .as_ref()
15900 .map(<UpstreamDnsQueryState as fidl::encoding::ValueTypeMarker>::borrow),
15901 encoder,
15902 offset + cur_offset,
15903 depth,
15904 )?;
15905
15906 _prev_end_offset = cur_offset + envelope_size;
15907
15908 Ok(())
15909 }
15910 }
15911
15912 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsInfo {
15913 #[inline(always)]
15914 fn new_empty() -> Self {
15915 Self::default()
15916 }
15917
15918 unsafe fn decode(
15919 &mut self,
15920 decoder: &mut fidl::encoding::Decoder<'_, D>,
15921 offset: usize,
15922 mut depth: fidl::encoding::Depth,
15923 ) -> fidl::Result<()> {
15924 decoder.debug_check_bounds::<Self>(offset);
15925 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15926 None => return Err(fidl::Error::NotNullable),
15927 Some(len) => len,
15928 };
15929 if len == 0 {
15931 return Ok(());
15932 };
15933 depth.increment()?;
15934 let envelope_size = 8;
15935 let bytes_len = len * envelope_size;
15936 let offset = decoder.out_of_line_offset(bytes_len)?;
15937 let mut _next_ordinal_to_read = 0;
15939 let mut next_offset = offset;
15940 let end_offset = offset + bytes_len;
15941 _next_ordinal_to_read += 1;
15942 if next_offset >= end_offset {
15943 return Ok(());
15944 }
15945
15946 while _next_ordinal_to_read < 1 {
15948 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15949 _next_ordinal_to_read += 1;
15950 next_offset += envelope_size;
15951 }
15952
15953 let next_out_of_line = decoder.next_out_of_line();
15954 let handles_before = decoder.remaining_handles();
15955 if let Some((inlined, num_bytes, num_handles)) =
15956 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15957 {
15958 let member_inline_size =
15959 <UpstreamDnsQueryState as fidl::encoding::TypeMarker>::inline_size(
15960 decoder.context,
15961 );
15962 if inlined != (member_inline_size <= 4) {
15963 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15964 }
15965 let inner_offset;
15966 let mut inner_depth = depth.clone();
15967 if inlined {
15968 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15969 inner_offset = next_offset;
15970 } else {
15971 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15972 inner_depth.increment()?;
15973 }
15974 let val_ref = self
15975 .upstream_dns_query_state
15976 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsQueryState, D));
15977 fidl::decode!(
15978 UpstreamDnsQueryState,
15979 D,
15980 val_ref,
15981 decoder,
15982 inner_offset,
15983 inner_depth
15984 )?;
15985 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15986 {
15987 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15988 }
15989 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15990 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15991 }
15992 }
15993
15994 next_offset += envelope_size;
15995
15996 while next_offset < end_offset {
15998 _next_ordinal_to_read += 1;
15999 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16000 next_offset += envelope_size;
16001 }
16002
16003 Ok(())
16004 }
16005 }
16006
16007 impl fidl::encoding::ValueTypeMarker for JoinParams {
16008 type Borrowed<'a> = &'a Self;
16009 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16010 value
16011 }
16012 }
16013
16014 unsafe impl fidl::encoding::TypeMarker for JoinParams {
16015 type Owned = Self;
16016
16017 #[inline(always)]
16018 fn inline_align(_context: fidl::encoding::Context) -> usize {
16019 8
16020 }
16021
16022 #[inline(always)]
16023 fn inline_size(_context: fidl::encoding::Context) -> usize {
16024 16
16025 }
16026 }
16027
16028 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<JoinParams, D>
16029 for &JoinParams
16030 {
16031 #[inline]
16032 unsafe fn encode(
16033 self,
16034 encoder: &mut fidl::encoding::Encoder<'_, D>,
16035 offset: usize,
16036 _depth: fidl::encoding::Depth,
16037 ) -> fidl::Result<()> {
16038 encoder.debug_check_bounds::<JoinParams>(offset);
16039 encoder.write_num::<u64>(self.ordinal(), offset);
16040 match self {
16041 JoinParams::ProvisioningParameter(ref val) => {
16042 fidl::encoding::encode_in_envelope::<fidl_fuchsia_lowpan_device__common::ProvisioningParams, D>(
16043 <fidl_fuchsia_lowpan_device__common::ProvisioningParams as fidl::encoding::ValueTypeMarker>::borrow(val),
16044 encoder, offset + 8, _depth
16045 )
16046 }
16047 JoinParams::JoinerParameter(ref val) => {
16048 fidl::encoding::encode_in_envelope::<JoinerCommissioningParams, D>(
16049 <JoinerCommissioningParams as fidl::encoding::ValueTypeMarker>::borrow(val),
16050 encoder, offset + 8, _depth
16051 )
16052 }
16053 JoinParams::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
16054 }
16055 }
16056 }
16057
16058 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for JoinParams {
16059 #[inline(always)]
16060 fn new_empty() -> Self {
16061 Self::__SourceBreaking { unknown_ordinal: 0 }
16062 }
16063
16064 #[inline]
16065 unsafe fn decode(
16066 &mut self,
16067 decoder: &mut fidl::encoding::Decoder<'_, D>,
16068 offset: usize,
16069 mut depth: fidl::encoding::Depth,
16070 ) -> fidl::Result<()> {
16071 decoder.debug_check_bounds::<Self>(offset);
16072 #[allow(unused_variables)]
16073 let next_out_of_line = decoder.next_out_of_line();
16074 let handles_before = decoder.remaining_handles();
16075 let (ordinal, inlined, num_bytes, num_handles) =
16076 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
16077
16078 let member_inline_size = match ordinal {
16079 1 => <fidl_fuchsia_lowpan_device__common::ProvisioningParams as fidl::encoding::TypeMarker>::inline_size(decoder.context),
16080 2 => <JoinerCommissioningParams as fidl::encoding::TypeMarker>::inline_size(decoder.context),
16081 0 => return Err(fidl::Error::UnknownUnionTag),
16082 _ => num_bytes as usize,
16083 };
16084
16085 if inlined != (member_inline_size <= 4) {
16086 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16087 }
16088 let _inner_offset;
16089 if inlined {
16090 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
16091 _inner_offset = offset + 8;
16092 } else {
16093 depth.increment()?;
16094 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16095 }
16096 match ordinal {
16097 1 => {
16098 #[allow(irrefutable_let_patterns)]
16099 if let JoinParams::ProvisioningParameter(_) = self {
16100 } else {
16102 *self = JoinParams::ProvisioningParameter(fidl::new_empty!(
16104 fidl_fuchsia_lowpan_device__common::ProvisioningParams,
16105 D
16106 ));
16107 }
16108 #[allow(irrefutable_let_patterns)]
16109 if let JoinParams::ProvisioningParameter(ref mut val) = self {
16110 fidl::decode!(
16111 fidl_fuchsia_lowpan_device__common::ProvisioningParams,
16112 D,
16113 val,
16114 decoder,
16115 _inner_offset,
16116 depth
16117 )?;
16118 } else {
16119 unreachable!()
16120 }
16121 }
16122 2 => {
16123 #[allow(irrefutable_let_patterns)]
16124 if let JoinParams::JoinerParameter(_) = self {
16125 } else {
16127 *self = JoinParams::JoinerParameter(fidl::new_empty!(
16129 JoinerCommissioningParams,
16130 D
16131 ));
16132 }
16133 #[allow(irrefutable_let_patterns)]
16134 if let JoinParams::JoinerParameter(ref mut val) = self {
16135 fidl::decode!(
16136 JoinerCommissioningParams,
16137 D,
16138 val,
16139 decoder,
16140 _inner_offset,
16141 depth
16142 )?;
16143 } else {
16144 unreachable!()
16145 }
16146 }
16147 #[allow(deprecated)]
16148 ordinal => {
16149 for _ in 0..num_handles {
16150 decoder.drop_next_handle()?;
16151 }
16152 *self = JoinParams::__SourceBreaking { unknown_ordinal: ordinal };
16153 }
16154 }
16155 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
16156 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16157 }
16158 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16159 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16160 }
16161 Ok(())
16162 }
16163 }
16164
16165 impl fidl::encoding::ValueTypeMarker for ProvisioningProgress {
16166 type Borrowed<'a> = &'a Self;
16167 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16168 value
16169 }
16170 }
16171
16172 unsafe impl fidl::encoding::TypeMarker for ProvisioningProgress {
16173 type Owned = Self;
16174
16175 #[inline(always)]
16176 fn inline_align(_context: fidl::encoding::Context) -> usize {
16177 8
16178 }
16179
16180 #[inline(always)]
16181 fn inline_size(_context: fidl::encoding::Context) -> usize {
16182 16
16183 }
16184 }
16185
16186 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProvisioningProgress, D>
16187 for &ProvisioningProgress
16188 {
16189 #[inline]
16190 unsafe fn encode(
16191 self,
16192 encoder: &mut fidl::encoding::Encoder<'_, D>,
16193 offset: usize,
16194 _depth: fidl::encoding::Depth,
16195 ) -> fidl::Result<()> {
16196 encoder.debug_check_bounds::<ProvisioningProgress>(offset);
16197 encoder.write_num::<u64>(self.ordinal(), offset);
16198 match self {
16199 ProvisioningProgress::Progress(ref val) => {
16200 fidl::encoding::encode_in_envelope::<f32, D>(
16201 <f32 as fidl::encoding::ValueTypeMarker>::borrow(val),
16202 encoder, offset + 8, _depth
16203 )
16204 }
16205 ProvisioningProgress::Identity(ref val) => {
16206 fidl::encoding::encode_in_envelope::<fidl_fuchsia_lowpan_device__common::Identity, D>(
16207 <fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::ValueTypeMarker>::borrow(val),
16208 encoder, offset + 8, _depth
16209 )
16210 }
16211 ProvisioningProgress::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
16212 }
16213 }
16214 }
16215
16216 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProvisioningProgress {
16217 #[inline(always)]
16218 fn new_empty() -> Self {
16219 Self::__SourceBreaking { unknown_ordinal: 0 }
16220 }
16221
16222 #[inline]
16223 unsafe fn decode(
16224 &mut self,
16225 decoder: &mut fidl::encoding::Decoder<'_, D>,
16226 offset: usize,
16227 mut depth: fidl::encoding::Depth,
16228 ) -> fidl::Result<()> {
16229 decoder.debug_check_bounds::<Self>(offset);
16230 #[allow(unused_variables)]
16231 let next_out_of_line = decoder.next_out_of_line();
16232 let handles_before = decoder.remaining_handles();
16233 let (ordinal, inlined, num_bytes, num_handles) =
16234 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
16235
16236 let member_inline_size = match ordinal {
16237 1 => <f32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
16238 2 => <fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::TypeMarker>::inline_size(decoder.context),
16239 0 => return Err(fidl::Error::UnknownUnionTag),
16240 _ => num_bytes as usize,
16241 };
16242
16243 if inlined != (member_inline_size <= 4) {
16244 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16245 }
16246 let _inner_offset;
16247 if inlined {
16248 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
16249 _inner_offset = offset + 8;
16250 } else {
16251 depth.increment()?;
16252 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16253 }
16254 match ordinal {
16255 1 => {
16256 #[allow(irrefutable_let_patterns)]
16257 if let ProvisioningProgress::Progress(_) = self {
16258 } else {
16260 *self = ProvisioningProgress::Progress(fidl::new_empty!(f32, D));
16262 }
16263 #[allow(irrefutable_let_patterns)]
16264 if let ProvisioningProgress::Progress(ref mut val) = self {
16265 fidl::decode!(f32, D, val, decoder, _inner_offset, depth)?;
16266 } else {
16267 unreachable!()
16268 }
16269 }
16270 2 => {
16271 #[allow(irrefutable_let_patterns)]
16272 if let ProvisioningProgress::Identity(_) = self {
16273 } else {
16275 *self = ProvisioningProgress::Identity(fidl::new_empty!(
16277 fidl_fuchsia_lowpan_device__common::Identity,
16278 D
16279 ));
16280 }
16281 #[allow(irrefutable_let_patterns)]
16282 if let ProvisioningProgress::Identity(ref mut val) = self {
16283 fidl::decode!(
16284 fidl_fuchsia_lowpan_device__common::Identity,
16285 D,
16286 val,
16287 decoder,
16288 _inner_offset,
16289 depth
16290 )?;
16291 } else {
16292 unreachable!()
16293 }
16294 }
16295 #[allow(deprecated)]
16296 ordinal => {
16297 for _ in 0..num_handles {
16298 decoder.drop_next_handle()?;
16299 }
16300 *self = ProvisioningProgress::__SourceBreaking { unknown_ordinal: ordinal };
16301 }
16302 }
16303 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
16304 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16305 }
16306 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16307 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16308 }
16309 Ok(())
16310 }
16311 }
16312}