1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11pub const MAX_EXTERNAL_ROUTES: u32 = 32;
12
13pub const MAX_ON_MESH_PREFIXES: u32 = 32;
14
15pub const MAX_PROVISION_URL_LEN: u16 = 64;
16
17pub const MAX_VENDOR_DATA_LEN: u16 = 64;
18
19pub const MAX_VENDOR_MODEL_LEN: u16 = 32;
20
21pub const MAX_VENDOR_NAME_LEN: u16 = 32;
22
23pub const MAX_VENDOR_SW_VER_LEN: u16 = 16;
24
25pub const PSKD_LEN: u16 = 32;
26
27#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
29pub enum Dhcp6PdState {
30 Dhcp6PdStateUnspecified,
31 Dhcp6PdStateDisabled,
33 Dhcp6PdStateStopped,
35 Dhcp6PdStateRunning,
37 Dhcp6PdStateIdle,
39 #[doc(hidden)]
40 __SourceBreaking {
41 unknown_ordinal: u32,
42 },
43}
44
45#[macro_export]
47macro_rules! Dhcp6PdStateUnknown {
48 () => {
49 _
50 };
51}
52
53impl Dhcp6PdState {
54 #[inline]
55 pub fn from_primitive(prim: u32) -> Option<Self> {
56 match prim {
57 0 => Some(Self::Dhcp6PdStateUnspecified),
58 1 => Some(Self::Dhcp6PdStateDisabled),
59 2 => Some(Self::Dhcp6PdStateStopped),
60 3 => Some(Self::Dhcp6PdStateRunning),
61 4 => Some(Self::Dhcp6PdStateIdle),
62 _ => None,
63 }
64 }
65
66 #[inline]
67 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
68 match prim {
69 0 => Self::Dhcp6PdStateUnspecified,
70 1 => Self::Dhcp6PdStateDisabled,
71 2 => Self::Dhcp6PdStateStopped,
72 3 => Self::Dhcp6PdStateRunning,
73 4 => Self::Dhcp6PdStateIdle,
74 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
75 }
76 }
77
78 #[inline]
79 pub fn unknown() -> Self {
80 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
81 }
82
83 #[inline]
84 pub const fn into_primitive(self) -> u32 {
85 match self {
86 Self::Dhcp6PdStateUnspecified => 0,
87 Self::Dhcp6PdStateDisabled => 1,
88 Self::Dhcp6PdStateStopped => 2,
89 Self::Dhcp6PdStateRunning => 3,
90 Self::Dhcp6PdStateIdle => 4,
91 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
92 }
93 }
94
95 #[inline]
96 pub fn is_unknown(&self) -> bool {
97 match self {
98 Self::__SourceBreaking { unknown_ordinal: _ } => true,
99 _ => false,
100 }
101 }
102}
103
104#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
105pub enum Nat64State {
106 Nat64StateUnspecified,
107 Nat64StateDisabled,
108 Nat64StateNotRunning,
109 Nat64StateIdle,
110 Nat64StateActive,
111 #[doc(hidden)]
112 __SourceBreaking {
113 unknown_ordinal: u32,
114 },
115}
116
117#[macro_export]
119macro_rules! Nat64StateUnknown {
120 () => {
121 _
122 };
123}
124
125impl Nat64State {
126 #[inline]
127 pub fn from_primitive(prim: u32) -> Option<Self> {
128 match prim {
129 0 => Some(Self::Nat64StateUnspecified),
130 1 => Some(Self::Nat64StateDisabled),
131 2 => Some(Self::Nat64StateNotRunning),
132 3 => Some(Self::Nat64StateIdle),
133 4 => Some(Self::Nat64StateActive),
134 _ => None,
135 }
136 }
137
138 #[inline]
139 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
140 match prim {
141 0 => Self::Nat64StateUnspecified,
142 1 => Self::Nat64StateDisabled,
143 2 => Self::Nat64StateNotRunning,
144 3 => Self::Nat64StateIdle,
145 4 => Self::Nat64StateActive,
146 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
147 }
148 }
149
150 #[inline]
151 pub fn unknown() -> Self {
152 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
153 }
154
155 #[inline]
156 pub const fn into_primitive(self) -> u32 {
157 match self {
158 Self::Nat64StateUnspecified => 0,
159 Self::Nat64StateDisabled => 1,
160 Self::Nat64StateNotRunning => 2,
161 Self::Nat64StateIdle => 3,
162 Self::Nat64StateActive => 4,
163 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
164 }
165 }
166
167 #[inline]
168 pub fn is_unknown(&self) -> bool {
169 match self {
170 Self::__SourceBreaking { unknown_ordinal: _ } => true,
171 _ => false,
172 }
173 }
174}
175
176#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
180pub enum ProvisionError {
181 CredentialRejected,
186 NetworkNotFound,
189 NetworkAlreadyExists,
192 Canceled,
195 #[doc(hidden)]
196 __SourceBreaking { unknown_ordinal: i32 },
197}
198
199#[macro_export]
201macro_rules! ProvisionErrorUnknown {
202 () => {
203 _
204 };
205}
206
207impl ProvisionError {
208 #[inline]
209 pub fn from_primitive(prim: i32) -> Option<Self> {
210 match prim {
211 1 => Some(Self::CredentialRejected),
212 2 => Some(Self::NetworkNotFound),
213 3 => Some(Self::NetworkAlreadyExists),
214 4 => Some(Self::Canceled),
215 _ => None,
216 }
217 }
218
219 #[inline]
220 pub fn from_primitive_allow_unknown(prim: i32) -> Self {
221 match prim {
222 1 => Self::CredentialRejected,
223 2 => Self::NetworkNotFound,
224 3 => Self::NetworkAlreadyExists,
225 4 => Self::Canceled,
226 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
227 }
228 }
229
230 #[inline]
231 pub fn unknown() -> Self {
232 Self::__SourceBreaking { unknown_ordinal: 0x7fffffff }
233 }
234
235 #[inline]
236 pub const fn into_primitive(self) -> i32 {
237 match self {
238 Self::CredentialRejected => 1,
239 Self::NetworkNotFound => 2,
240 Self::NetworkAlreadyExists => 3,
241 Self::Canceled => 4,
242 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
243 }
244 }
245
246 #[inline]
247 pub fn is_unknown(&self) -> bool {
248 match self {
249 Self::__SourceBreaking { unknown_ordinal: _ } => true,
250 _ => false,
251 }
252 }
253}
254
255#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
257#[repr(i8)]
258pub enum RoutePreference {
259 Low = -1,
261 Medium = 0,
263 High = 1,
265}
266
267impl RoutePreference {
268 #[inline]
269 pub fn from_primitive(prim: i8) -> Option<Self> {
270 match prim {
271 -1 => Some(Self::Low),
272 0 => Some(Self::Medium),
273 1 => Some(Self::High),
274 _ => None,
275 }
276 }
277
278 #[inline]
279 pub const fn into_primitive(self) -> i8 {
280 self as i8
281 }
282}
283
284#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
285#[repr(u32)]
286pub enum SrpServerAddressMode {
287 Unicast = 1,
289 Anycast = 2,
291}
292
293impl SrpServerAddressMode {
294 #[inline]
295 pub fn from_primitive(prim: u32) -> Option<Self> {
296 match prim {
297 1 => Some(Self::Unicast),
298 2 => Some(Self::Anycast),
299 _ => None,
300 }
301 }
302
303 #[inline]
304 pub const fn into_primitive(self) -> u32 {
305 self as u32
306 }
307}
308
309#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
310#[repr(u32)]
311pub enum SrpServerState {
312 Disabled = 1,
314 Running = 2,
316 Stopped = 3,
318}
319
320impl SrpServerState {
321 #[inline]
322 pub fn from_primitive(prim: u32) -> Option<Self> {
323 match prim {
324 1 => Some(Self::Disabled),
325 2 => Some(Self::Running),
326 3 => Some(Self::Stopped),
327 _ => None,
328 }
329 }
330
331 #[inline]
332 pub const fn into_primitive(self) -> u32 {
333 self as u32
334 }
335}
336
337#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
339pub enum UpstreamDnsQueryState {
340 UpstreamdnsQueryStateUnspecified,
341 UpstreamdnsQueryStateEnabled,
342 UpstreamdnsQueryStateDisabled,
343 #[doc(hidden)]
344 __SourceBreaking {
345 unknown_ordinal: u32,
346 },
347}
348
349#[macro_export]
351macro_rules! UpstreamDnsQueryStateUnknown {
352 () => {
353 _
354 };
355}
356
357impl UpstreamDnsQueryState {
358 #[inline]
359 pub fn from_primitive(prim: u32) -> Option<Self> {
360 match prim {
361 0 => Some(Self::UpstreamdnsQueryStateUnspecified),
362 1 => Some(Self::UpstreamdnsQueryStateEnabled),
363 2 => Some(Self::UpstreamdnsQueryStateDisabled),
364 _ => None,
365 }
366 }
367
368 #[inline]
369 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
370 match prim {
371 0 => Self::UpstreamdnsQueryStateUnspecified,
372 1 => Self::UpstreamdnsQueryStateEnabled,
373 2 => Self::UpstreamdnsQueryStateDisabled,
374 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
375 }
376 }
377
378 #[inline]
379 pub fn unknown() -> Self {
380 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
381 }
382
383 #[inline]
384 pub const fn into_primitive(self) -> u32 {
385 match self {
386 Self::UpstreamdnsQueryStateUnspecified => 0,
387 Self::UpstreamdnsQueryStateEnabled => 1,
388 Self::UpstreamdnsQueryStateDisabled => 2,
389 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
390 }
391 }
392
393 #[inline]
394 pub fn is_unknown(&self) -> bool {
395 match self {
396 Self::__SourceBreaking { unknown_ordinal: _ } => true,
397 _ => false,
398 }
399 }
400}
401
402#[derive(Clone, Debug, PartialEq)]
403pub struct BeaconInfoStreamNextResponse {
404 pub beacons: Vec<BeaconInfo>,
405}
406
407impl fidl::Persistable for BeaconInfoStreamNextResponse {}
408
409#[derive(Clone, Debug, PartialEq)]
410pub struct DeviceGetSupportedChannelsResponse {
411 pub channels_info: Vec<ChannelInfo>,
412}
413
414impl fidl::Persistable for DeviceGetSupportedChannelsResponse {}
415
416#[derive(Clone, Debug, PartialEq)]
417pub struct DeviceRouteExtraGetLocalExternalRoutesResponse {
418 pub external_routes: Vec<ExternalRoute>,
419}
420
421impl fidl::Persistable for DeviceRouteExtraGetLocalExternalRoutesResponse {}
422
423#[derive(Clone, Debug, PartialEq)]
424pub struct DeviceRouteExtraGetLocalOnMeshPrefixesResponse {
425 pub prefixes: Vec<OnMeshPrefix>,
426}
427
428impl fidl::Persistable for DeviceRouteExtraGetLocalOnMeshPrefixesResponse {}
429
430#[derive(Clone, Debug, PartialEq)]
431pub struct DeviceRouteRegisterExternalRouteRequest {
432 pub external_route: ExternalRoute,
433}
434
435impl fidl::Persistable for DeviceRouteRegisterExternalRouteRequest {}
436
437#[derive(Clone, Debug, PartialEq)]
438pub struct DeviceRouteRegisterOnMeshPrefixRequest {
439 pub prefix: OnMeshPrefix,
440}
441
442impl fidl::Persistable for DeviceRouteRegisterOnMeshPrefixRequest {}
443
444#[derive(Clone, Debug, PartialEq)]
445pub struct DeviceRouteUnregisterExternalRouteRequest {
446 pub subnet: fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
447}
448
449impl fidl::Persistable for DeviceRouteUnregisterExternalRouteRequest {}
450
451#[derive(Clone, Debug, PartialEq)]
452pub struct DeviceRouteUnregisterOnMeshPrefixRequest {
453 pub subnet: fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
454}
455
456impl fidl::Persistable for DeviceRouteUnregisterOnMeshPrefixRequest {}
457
458#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
459#[repr(C)]
460pub struct LegacyJoiningMakeJoinableRequest {
461 pub duration: i64,
462 pub port: u16,
463}
464
465impl fidl::Persistable for LegacyJoiningMakeJoinableRequest {}
466
467#[derive(Clone, Debug, PartialEq)]
468pub struct ProvisioningMonitorWatchProgressResponse {
469 pub progress: ProvisioningProgress,
470}
471
472impl fidl::Persistable for ProvisioningMonitorWatchProgressResponse {}
473
474#[derive(Clone, Debug, PartialEq)]
475pub struct TelemetryProviderGetTelemetryResponse {
476 pub telemetry: Telemetry,
477}
478
479impl fidl::Persistable for TelemetryProviderGetTelemetryResponse {}
480
481#[derive(Clone, Debug, Default, PartialEq)]
482pub struct BeaconInfo {
483 pub address: Option<fidl_fuchsia_lowpan__common::MacAddress>,
485 pub identity: Option<fidl_fuchsia_lowpan_device__common::Identity>,
488 pub rssi: Option<i8>,
493 pub lqi: Option<u8>,
507 #[doc(hidden)]
508 pub __source_breaking: fidl::marker::SourceBreaking,
509}
510
511impl fidl::Persistable for BeaconInfo {}
512
513#[derive(Clone, Debug, Default, PartialEq)]
515pub struct BorderRoutingCounters {
516 pub inbound_unicast_packets: Option<u64>,
520 pub inbound_unicast_bytes: Option<u64>,
524 pub inbound_multicast_packets: Option<u64>,
528 pub inbound_multicast_bytes: Option<u64>,
532 pub outbound_unicast_packets: Option<u64>,
536 pub outbound_unicast_bytes: Option<u64>,
540 pub outbound_multicast_packets: Option<u64>,
544 pub outbound_multicast_bytes: Option<u64>,
548 pub ra_rx: Option<u32>,
552 pub ra_tx_success: Option<u32>,
556 pub ra_tx_failure: Option<u32>,
560 pub rs_rx: Option<u32>,
564 pub rs_tx_success: Option<u32>,
568 pub rs_tx_failure: Option<u32>,
572 pub inbound_internet_packets: Option<u64>,
576 pub inbound_internet_bytes: Option<u64>,
580 pub outbound_internet_packets: Option<u64>,
584 pub outbound_internet_bytes: Option<u64>,
588 #[doc(hidden)]
589 pub __source_breaking: fidl::marker::SourceBreaking,
590}
591
592impl fidl::Persistable for BorderRoutingCounters {}
593
594#[derive(Clone, Debug, Default, PartialEq)]
596pub struct BorderRoutingNat64State {
597 pub prefix_manager_state: Option<Nat64State>,
599 pub translator_state: Option<Nat64State>,
601 #[doc(hidden)]
602 pub __source_breaking: fidl::marker::SourceBreaking,
603}
604
605impl fidl::Persistable for BorderRoutingNat64State {}
606
607#[derive(Clone, Debug, Default, PartialEq)]
608pub struct ChannelInfo {
609 pub index: Option<u16>,
612 pub id: Option<String>,
628 pub max_transmit_power_dbm: Option<i8>,
631 pub spectrum_center_frequency_hz: Option<u64>,
654 pub spectrum_bandwidth_hz: Option<u64>,
661 pub masked_by_regulatory_domain: Option<bool>,
665 #[doc(hidden)]
666 pub __source_breaking: fidl::marker::SourceBreaking,
667}
668
669impl fidl::Persistable for ChannelInfo {}
670
671#[derive(Clone, Debug, Default, PartialEq)]
673pub struct Dhcp6PdInfo {
674 pub dhcp6pd_state: Option<Dhcp6PdState>,
678 pub pd_processed_ra_info: Option<PdProcessedRaInfo>,
682 pub hashed_pd_prefix: Option<Vec<u8>>,
686 #[doc(hidden)]
687 pub __source_breaking: fidl::marker::SourceBreaking,
688}
689
690impl fidl::Persistable for Dhcp6PdInfo {}
691
692#[derive(Clone, Debug, Default, PartialEq)]
694pub struct DnssdCounters {
695 pub success_response: Option<u32>,
699 pub server_failure_response: Option<u32>,
703 pub format_error_response: Option<u32>,
707 pub name_error_response: Option<u32>,
711 pub not_implemented_response: Option<u32>,
715 pub other_response: Option<u32>,
719 pub resolved_by_srp: Option<u32>,
723 pub upstream_dns_counters: Option<UpstreamDnsCounters>,
727 #[doc(hidden)]
728 pub __source_breaking: fidl::marker::SourceBreaking,
729}
730
731impl fidl::Persistable for DnssdCounters {}
732
733#[derive(Clone, Debug, Default, PartialEq)]
737pub struct ExternalRoute {
738 pub subnet: Option<fidl_fuchsia_net__common::Ipv6AddressWithPrefix>,
740 pub route_preference: Option<RoutePreference>,
747 pub stable: Option<bool>,
756 #[doc(hidden)]
757 pub __source_breaking: fidl::marker::SourceBreaking,
758}
759
760impl fidl::Persistable for ExternalRoute {}
761
762#[derive(Clone, Debug, Default, PartialEq)]
767pub struct JoinerCommissioningParams {
768 pub pskd: Option<String>,
770 pub provisioning_url: Option<String>,
772 pub vendor_name: Option<String>,
774 pub vendor_model: Option<String>,
776 pub vendor_sw_version: Option<String>,
778 pub vendor_data_string: Option<String>,
780 #[doc(hidden)]
781 pub __source_breaking: fidl::marker::SourceBreaking,
782}
783
784impl fidl::Persistable for JoinerCommissioningParams {}
785
786#[derive(Clone, Debug, Default, PartialEq)]
788pub struct LeaderData {
789 pub partition_id: Option<u32>,
793 pub weight: Option<u8>,
797 pub network_data_version: Option<u8>,
801 pub stable_network_data_version: Option<u8>,
805 pub router_id: Option<u8>,
809 #[doc(hidden)]
810 pub __source_breaking: fidl::marker::SourceBreaking,
811}
812
813impl fidl::Persistable for LeaderData {}
814
815#[derive(Clone, Debug, Default, PartialEq)]
817pub struct LinkMetricsEntry {
818 pub link_margin: Option<u8>,
820 pub rssi: Option<i8>,
822 #[doc(hidden)]
823 pub __source_breaking: fidl::marker::SourceBreaking,
824}
825
826impl fidl::Persistable for LinkMetricsEntry {}
827
828#[derive(Clone, Debug, Default, PartialEq)]
829pub struct Nat64ErrorCounters {
830 pub unknown: Option<Nat64PacketCounters>,
832 pub illegal_packet: Option<Nat64PacketCounters>,
834 pub unsupported_protocol: Option<Nat64PacketCounters>,
836 pub no_mapping: Option<Nat64PacketCounters>,
838 #[doc(hidden)]
839 pub __source_breaking: fidl::marker::SourceBreaking,
840}
841
842impl fidl::Persistable for Nat64ErrorCounters {}
843
844#[derive(Clone, Debug, Default, PartialEq)]
845pub struct Nat64Info {
846 pub nat64_state: Option<BorderRoutingNat64State>,
848 pub nat64_mappings: Option<Vec<Nat64Mapping>>,
850 pub nat64_error_counters: Option<Nat64ErrorCounters>,
852 pub nat64_protocol_counters: Option<Nat64ProtocolCounters>,
854 #[doc(hidden)]
855 pub __source_breaking: fidl::marker::SourceBreaking,
856}
857
858impl fidl::Persistable for Nat64Info {}
859
860#[derive(Clone, Debug, Default, PartialEq)]
862pub struct Nat64Mapping {
863 pub mapping_id: Option<u64>,
865 pub ip4_addr: Option<Vec<u8>>,
867 pub ip6_addr: Option<Vec<u8>>,
869 pub remaining_time_ms: Option<u32>,
871 pub counters: Option<Nat64ProtocolCounters>,
873 #[doc(hidden)]
874 pub __source_breaking: fidl::marker::SourceBreaking,
875}
876
877impl fidl::Persistable for Nat64Mapping {}
878
879#[derive(Clone, Debug, Default, PartialEq)]
880pub struct Nat64PacketCounters {
881 pub ipv4_to_ipv6_packets: Option<u64>,
883 pub ipv6_to_ipv4_packets: Option<u64>,
885 #[doc(hidden)]
886 pub __source_breaking: fidl::marker::SourceBreaking,
887}
888
889impl fidl::Persistable for Nat64PacketCounters {}
890
891#[derive(Clone, Debug, Default, PartialEq)]
892pub struct Nat64ProtocolCounters {
893 pub tcp: Option<Nat64TrafficCounters>,
895 pub udp: Option<Nat64TrafficCounters>,
897 pub icmp: Option<Nat64TrafficCounters>,
899 pub total: Option<Nat64TrafficCounters>,
901 #[doc(hidden)]
902 pub __source_breaking: fidl::marker::SourceBreaking,
903}
904
905impl fidl::Persistable for Nat64ProtocolCounters {}
906
907#[derive(Clone, Debug, Default, PartialEq)]
908pub struct Nat64TrafficCounters {
909 pub ipv4_to_ipv6_packets: Option<u64>,
911 pub ipv4_to_ipv6_bytes: Option<u64>,
913 pub ipv6_to_ipv4_packets: Option<u64>,
915 pub ipv6_to_ipv4_bytes: Option<u64>,
917 #[doc(hidden)]
918 pub __source_breaking: fidl::marker::SourceBreaking,
919}
920
921impl fidl::Persistable for Nat64TrafficCounters {}
922
923#[derive(Clone, Debug, Default, PartialEq)]
925pub struct NetworkScanParameters {
926 pub channels: Option<Vec<u16>>,
930 pub tx_power_dbm: Option<i8>,
941 #[doc(hidden)]
942 pub __source_breaking: fidl::marker::SourceBreaking,
943}
944
945impl fidl::Persistable for NetworkScanParameters {}
946
947#[derive(Clone, Debug, Default, PartialEq)]
951pub struct OnMeshPrefix {
952 pub subnet: Option<fidl_fuchsia_net__common::Ipv6AddressWithPrefix>,
954 pub default_route_preference: Option<RoutePreference>,
962 pub stable: Option<bool>,
971 pub slaac_preferred: Option<bool>,
980 pub slaac_valid: Option<bool>,
989 #[doc(hidden)]
990 pub __source_breaking: fidl::marker::SourceBreaking,
991}
992
993impl fidl::Persistable for OnMeshPrefix {}
994
995#[derive(Clone, Debug, Default, PartialEq)]
997pub struct PdProcessedRaInfo {
998 pub num_platform_ra_received: Option<u32>,
1002 pub num_platform_pio_processed: Option<u32>,
1006 pub last_platform_ra_msec: Option<u32>,
1010 #[doc(hidden)]
1011 pub __source_breaking: fidl::marker::SourceBreaking,
1012}
1013
1014impl fidl::Persistable for PdProcessedRaInfo {}
1015
1016#[derive(Clone, Debug, Default, PartialEq)]
1018pub struct SrpServerInfo {
1019 pub state: Option<SrpServerState>,
1023 pub port: Option<u16>,
1027 pub address_mode: Option<SrpServerAddressMode>,
1031 pub response_counters: Option<SrpServerResponseCounters>,
1035 pub hosts_registration: Option<SrpServerRegistration>,
1039 pub services_registration: Option<SrpServerRegistration>,
1043 #[doc(hidden)]
1044 pub __source_breaking: fidl::marker::SourceBreaking,
1045}
1046
1047impl fidl::Persistable for SrpServerInfo {}
1048
1049#[derive(Clone, Debug, Default, PartialEq)]
1051pub struct SrpServerRegistration {
1052 pub fresh_count: Option<u32>,
1056 pub deleted_count: Option<u32>,
1060 pub lease_time_total: Option<i64>,
1064 pub key_lease_time_total: Option<i64>,
1068 pub remaining_lease_time_total: Option<i64>,
1072 pub remaining_key_lease_time_total: Option<i64>,
1076 #[doc(hidden)]
1077 pub __source_breaking: fidl::marker::SourceBreaking,
1078}
1079
1080impl fidl::Persistable for SrpServerRegistration {}
1081
1082#[derive(Clone, Debug, Default, PartialEq)]
1083pub struct SrpServerResponseCounters {
1084 pub success_response: Option<u32>,
1088 pub server_failure_response: Option<u32>,
1092 pub format_error_response: Option<u32>,
1096 pub name_exists_response: Option<u32>,
1100 pub refused_response: Option<u32>,
1104 pub other_response: Option<u32>,
1108 #[doc(hidden)]
1109 pub __source_breaking: fidl::marker::SourceBreaking,
1110}
1111
1112impl fidl::Persistable for SrpServerResponseCounters {}
1113
1114#[derive(Clone, Debug, Default, PartialEq)]
1121pub struct Telemetry {
1122 pub rssi: Option<i8>,
1124 pub tx_power: Option<i8>,
1126 pub channel_index: Option<u16>,
1128 pub partition_id: Option<u32>,
1130 pub stack_version: Option<String>,
1132 pub rcp_version: Option<String>,
1134 pub thread_link_mode: Option<u8>,
1140 pub thread_router_id: Option<u8>,
1144 pub thread_rloc: Option<u16>,
1148 pub thread_network_data_version: Option<u8>,
1152 pub thread_stable_network_data_version: Option<u8>,
1156 pub thread_network_data: Option<Vec<u8>>,
1161 pub thread_stable_network_data: Option<Vec<u8>>,
1166 pub thread_border_routing_counters: Option<BorderRoutingCounters>,
1170 pub srp_server_info: Option<SrpServerInfo>,
1174 pub dnssd_counters: Option<DnssdCounters>,
1178 pub leader_data: Option<LeaderData>,
1182 pub uptime: Option<i64>,
1186 pub nat64_info: Option<Nat64Info>,
1190 pub trel_counters: Option<TrelCounters>,
1194 pub trel_peers_info: Option<TrelPeersInfo>,
1198 pub upstream_dns_info: Option<UpstreamDnsInfo>,
1202 pub dhcp6pd_info: Option<Dhcp6PdInfo>,
1206 pub link_metrics_entries: Option<Vec<LinkMetricsEntry>>,
1210 pub border_agent_counters: Option<fidl_fuchsia_lowpan_device__common::BorderAgentCounters>,
1214 pub multi_ail_detected: Option<bool>,
1218 #[doc(hidden)]
1219 pub __source_breaking: fidl::marker::SourceBreaking,
1220}
1221
1222impl fidl::Persistable for Telemetry {}
1223
1224#[derive(Clone, Debug, Default, PartialEq)]
1228pub struct TrelCounters {
1229 pub rx_bytes: Option<u64>,
1231 pub rx_packets: Option<u64>,
1233 pub tx_bytes: Option<u64>,
1235 pub tx_failure: Option<u64>,
1237 pub tx_packets: Option<u64>,
1239 #[doc(hidden)]
1240 pub __source_breaking: fidl::marker::SourceBreaking,
1241}
1242
1243impl fidl::Persistable for TrelCounters {}
1244
1245#[derive(Clone, Debug, Default, PartialEq)]
1250pub struct TrelPeersInfo {
1251 pub num_trel_peers: Option<u16>,
1255 #[doc(hidden)]
1256 pub __source_breaking: fidl::marker::SourceBreaking,
1257}
1258
1259impl fidl::Persistable for TrelPeersInfo {}
1260
1261#[derive(Clone, Debug, Default, PartialEq)]
1265pub struct UpstreamDnsCounters {
1266 pub queries: Option<u32>,
1270 pub responses: Option<u32>,
1274 pub failures: Option<u32>,
1278 #[doc(hidden)]
1279 pub __source_breaking: fidl::marker::SourceBreaking,
1280}
1281
1282impl fidl::Persistable for UpstreamDnsCounters {}
1283
1284#[derive(Clone, Debug, Default, PartialEq)]
1289pub struct UpstreamDnsInfo {
1290 pub upstream_dns_query_state: Option<UpstreamDnsQueryState>,
1294 #[doc(hidden)]
1295 pub __source_breaking: fidl::marker::SourceBreaking,
1296}
1297
1298impl fidl::Persistable for UpstreamDnsInfo {}
1299
1300#[derive(Clone, Debug)]
1302pub enum JoinParams {
1303 ProvisioningParameter(fidl_fuchsia_lowpan_device__common::ProvisioningParams),
1305 JoinerParameter(JoinerCommissioningParams),
1311 #[doc(hidden)]
1312 __SourceBreaking { unknown_ordinal: u64 },
1313}
1314
1315#[macro_export]
1317macro_rules! JoinParamsUnknown {
1318 () => {
1319 _
1320 };
1321}
1322
1323impl PartialEq for JoinParams {
1325 fn eq(&self, other: &Self) -> bool {
1326 match (self, other) {
1327 (Self::ProvisioningParameter(x), Self::ProvisioningParameter(y)) => *x == *y,
1328 (Self::JoinerParameter(x), Self::JoinerParameter(y)) => *x == *y,
1329 _ => false,
1330 }
1331 }
1332}
1333
1334impl JoinParams {
1335 #[inline]
1336 pub fn ordinal(&self) -> u64 {
1337 match *self {
1338 Self::ProvisioningParameter(_) => 1,
1339 Self::JoinerParameter(_) => 2,
1340 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1341 }
1342 }
1343
1344 #[inline]
1345 pub fn unknown_variant_for_testing() -> Self {
1346 Self::__SourceBreaking { unknown_ordinal: 0 }
1347 }
1348
1349 #[inline]
1350 pub fn is_unknown(&self) -> bool {
1351 match self {
1352 Self::__SourceBreaking { .. } => true,
1353 _ => false,
1354 }
1355 }
1356}
1357
1358impl fidl::Persistable for JoinParams {}
1359
1360#[derive(Clone, Debug)]
1364pub enum ProvisioningProgress {
1365 Progress(f32),
1367 Identity(fidl_fuchsia_lowpan_device__common::Identity),
1369 #[doc(hidden)]
1370 __SourceBreaking { unknown_ordinal: u64 },
1371}
1372
1373#[macro_export]
1375macro_rules! ProvisioningProgressUnknown {
1376 () => {
1377 _
1378 };
1379}
1380
1381impl PartialEq for ProvisioningProgress {
1383 fn eq(&self, other: &Self) -> bool {
1384 match (self, other) {
1385 (Self::Progress(x), Self::Progress(y)) => *x == *y,
1386 (Self::Identity(x), Self::Identity(y)) => *x == *y,
1387 _ => false,
1388 }
1389 }
1390}
1391
1392impl ProvisioningProgress {
1393 #[inline]
1394 pub fn ordinal(&self) -> u64 {
1395 match *self {
1396 Self::Progress(_) => 1,
1397 Self::Identity(_) => 2,
1398 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1399 }
1400 }
1401
1402 #[inline]
1403 pub fn unknown_variant_for_testing() -> Self {
1404 Self::__SourceBreaking { unknown_ordinal: 0 }
1405 }
1406
1407 #[inline]
1408 pub fn is_unknown(&self) -> bool {
1409 match self {
1410 Self::__SourceBreaking { .. } => true,
1411 _ => false,
1412 }
1413 }
1414}
1415
1416impl fidl::Persistable for ProvisioningProgress {}
1417
1418pub mod beacon_info_stream_ordinals {
1419 pub const NEXT: u64 = 0x367a557363a340b6;
1420}
1421
1422pub mod device_ordinals {
1423 pub const GET_SUPPORTED_CHANNELS: u64 = 0x2d8b969a9bd70f23;
1424}
1425
1426pub mod device_connector_ordinals {
1427 pub const CONNECT: u64 = 0x296896c9304836cd;
1428}
1429
1430pub mod device_extra_ordinals {
1431 pub const FORM_NETWORK: u64 = 0x6a8135f84bfc90e;
1432 pub const JOIN_NETWORK: u64 = 0x3ea583bab79f81c0;
1433 pub const START_NETWORK_SCAN: u64 = 0x6288c73b79188b40;
1434}
1435
1436pub mod device_extra_connector_ordinals {
1437 pub const CONNECT: u64 = 0x3fcb37e4226c81e9;
1438}
1439
1440pub mod device_route_ordinals {
1441 pub const REGISTER_ON_MESH_PREFIX: u64 = 0x2c4135231eb97f61;
1442 pub const UNREGISTER_ON_MESH_PREFIX: u64 = 0x82d5184028b797f;
1443 pub const REGISTER_EXTERNAL_ROUTE: u64 = 0x75f70f0fc34a5a73;
1444 pub const UNREGISTER_EXTERNAL_ROUTE: u64 = 0x3769be353b1d7088;
1445}
1446
1447pub mod device_route_connector_ordinals {
1448 pub const CONNECT: u64 = 0x19cd5fdcb971f4ac;
1449}
1450
1451pub mod device_route_extra_ordinals {
1452 pub const GET_LOCAL_ON_MESH_PREFIXES: u64 = 0xf192c43311c811;
1453 pub const GET_LOCAL_EXTERNAL_ROUTES: u64 = 0x5a688c2e62c766a6;
1454}
1455
1456pub mod device_route_extra_connector_ordinals {
1457 pub const CONNECT: u64 = 0x12f72df7b1348fe2;
1458}
1459
1460pub mod legacy_joining_ordinals {
1461 pub const MAKE_JOINABLE: u64 = 0x1739a6ae36d5c5aa;
1462}
1463
1464pub mod legacy_joining_connector_ordinals {
1465 pub const CONNECT: u64 = 0x3c8dfeb943bb8d06;
1466}
1467
1468pub mod provisioning_monitor_ordinals {
1469 pub const WATCH_PROGRESS: u64 = 0xc35336fc43ac0c;
1470}
1471
1472pub mod telemetry_provider_ordinals {
1473 pub const GET_TELEMETRY: u64 = 0xc34f2fff7dacc41;
1474}
1475
1476pub mod telemetry_provider_connector_ordinals {
1477 pub const CONNECT: u64 = 0x24a5bf1be73e2fad;
1478}
1479
1480mod internal {
1481 use super::*;
1482 unsafe impl fidl::encoding::TypeMarker for Dhcp6PdState {
1483 type Owned = Self;
1484
1485 #[inline(always)]
1486 fn inline_align(_context: fidl::encoding::Context) -> usize {
1487 std::mem::align_of::<u32>()
1488 }
1489
1490 #[inline(always)]
1491 fn inline_size(_context: fidl::encoding::Context) -> usize {
1492 std::mem::size_of::<u32>()
1493 }
1494
1495 #[inline(always)]
1496 fn encode_is_copy() -> bool {
1497 false
1498 }
1499
1500 #[inline(always)]
1501 fn decode_is_copy() -> bool {
1502 false
1503 }
1504 }
1505
1506 impl fidl::encoding::ValueTypeMarker for Dhcp6PdState {
1507 type Borrowed<'a> = Self;
1508 #[inline(always)]
1509 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1510 *value
1511 }
1512 }
1513
1514 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Dhcp6PdState {
1515 #[inline]
1516 unsafe fn encode(
1517 self,
1518 encoder: &mut fidl::encoding::Encoder<'_, D>,
1519 offset: usize,
1520 _depth: fidl::encoding::Depth,
1521 ) -> fidl::Result<()> {
1522 encoder.debug_check_bounds::<Self>(offset);
1523 encoder.write_num(self.into_primitive(), offset);
1524 Ok(())
1525 }
1526 }
1527
1528 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dhcp6PdState {
1529 #[inline(always)]
1530 fn new_empty() -> Self {
1531 Self::unknown()
1532 }
1533
1534 #[inline]
1535 unsafe fn decode(
1536 &mut self,
1537 decoder: &mut fidl::encoding::Decoder<'_, D>,
1538 offset: usize,
1539 _depth: fidl::encoding::Depth,
1540 ) -> fidl::Result<()> {
1541 decoder.debug_check_bounds::<Self>(offset);
1542 let prim = decoder.read_num::<u32>(offset);
1543
1544 *self = Self::from_primitive_allow_unknown(prim);
1545 Ok(())
1546 }
1547 }
1548 unsafe impl fidl::encoding::TypeMarker for Nat64State {
1549 type Owned = Self;
1550
1551 #[inline(always)]
1552 fn inline_align(_context: fidl::encoding::Context) -> usize {
1553 std::mem::align_of::<u32>()
1554 }
1555
1556 #[inline(always)]
1557 fn inline_size(_context: fidl::encoding::Context) -> usize {
1558 std::mem::size_of::<u32>()
1559 }
1560
1561 #[inline(always)]
1562 fn encode_is_copy() -> bool {
1563 false
1564 }
1565
1566 #[inline(always)]
1567 fn decode_is_copy() -> bool {
1568 false
1569 }
1570 }
1571
1572 impl fidl::encoding::ValueTypeMarker for Nat64State {
1573 type Borrowed<'a> = Self;
1574 #[inline(always)]
1575 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1576 *value
1577 }
1578 }
1579
1580 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Nat64State {
1581 #[inline]
1582 unsafe fn encode(
1583 self,
1584 encoder: &mut fidl::encoding::Encoder<'_, D>,
1585 offset: usize,
1586 _depth: fidl::encoding::Depth,
1587 ) -> fidl::Result<()> {
1588 encoder.debug_check_bounds::<Self>(offset);
1589 encoder.write_num(self.into_primitive(), offset);
1590 Ok(())
1591 }
1592 }
1593
1594 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64State {
1595 #[inline(always)]
1596 fn new_empty() -> Self {
1597 Self::unknown()
1598 }
1599
1600 #[inline]
1601 unsafe fn decode(
1602 &mut self,
1603 decoder: &mut fidl::encoding::Decoder<'_, D>,
1604 offset: usize,
1605 _depth: fidl::encoding::Depth,
1606 ) -> fidl::Result<()> {
1607 decoder.debug_check_bounds::<Self>(offset);
1608 let prim = decoder.read_num::<u32>(offset);
1609
1610 *self = Self::from_primitive_allow_unknown(prim);
1611 Ok(())
1612 }
1613 }
1614 unsafe impl fidl::encoding::TypeMarker for ProvisionError {
1615 type Owned = Self;
1616
1617 #[inline(always)]
1618 fn inline_align(_context: fidl::encoding::Context) -> usize {
1619 std::mem::align_of::<i32>()
1620 }
1621
1622 #[inline(always)]
1623 fn inline_size(_context: fidl::encoding::Context) -> usize {
1624 std::mem::size_of::<i32>()
1625 }
1626
1627 #[inline(always)]
1628 fn encode_is_copy() -> bool {
1629 false
1630 }
1631
1632 #[inline(always)]
1633 fn decode_is_copy() -> bool {
1634 false
1635 }
1636 }
1637
1638 impl fidl::encoding::ValueTypeMarker for ProvisionError {
1639 type Borrowed<'a> = Self;
1640 #[inline(always)]
1641 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1642 *value
1643 }
1644 }
1645
1646 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ProvisionError {
1647 #[inline]
1648 unsafe fn encode(
1649 self,
1650 encoder: &mut fidl::encoding::Encoder<'_, D>,
1651 offset: usize,
1652 _depth: fidl::encoding::Depth,
1653 ) -> fidl::Result<()> {
1654 encoder.debug_check_bounds::<Self>(offset);
1655 encoder.write_num(self.into_primitive(), offset);
1656 Ok(())
1657 }
1658 }
1659
1660 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProvisionError {
1661 #[inline(always)]
1662 fn new_empty() -> Self {
1663 Self::unknown()
1664 }
1665
1666 #[inline]
1667 unsafe fn decode(
1668 &mut self,
1669 decoder: &mut fidl::encoding::Decoder<'_, D>,
1670 offset: usize,
1671 _depth: fidl::encoding::Depth,
1672 ) -> fidl::Result<()> {
1673 decoder.debug_check_bounds::<Self>(offset);
1674 let prim = decoder.read_num::<i32>(offset);
1675
1676 *self = Self::from_primitive_allow_unknown(prim);
1677 Ok(())
1678 }
1679 }
1680 unsafe impl fidl::encoding::TypeMarker for RoutePreference {
1681 type Owned = Self;
1682
1683 #[inline(always)]
1684 fn inline_align(_context: fidl::encoding::Context) -> usize {
1685 std::mem::align_of::<i8>()
1686 }
1687
1688 #[inline(always)]
1689 fn inline_size(_context: fidl::encoding::Context) -> usize {
1690 std::mem::size_of::<i8>()
1691 }
1692
1693 #[inline(always)]
1694 fn encode_is_copy() -> bool {
1695 true
1696 }
1697
1698 #[inline(always)]
1699 fn decode_is_copy() -> bool {
1700 false
1701 }
1702 }
1703
1704 impl fidl::encoding::ValueTypeMarker for RoutePreference {
1705 type Borrowed<'a> = Self;
1706 #[inline(always)]
1707 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1708 *value
1709 }
1710 }
1711
1712 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1713 for RoutePreference
1714 {
1715 #[inline]
1716 unsafe fn encode(
1717 self,
1718 encoder: &mut fidl::encoding::Encoder<'_, D>,
1719 offset: usize,
1720 _depth: fidl::encoding::Depth,
1721 ) -> fidl::Result<()> {
1722 encoder.debug_check_bounds::<Self>(offset);
1723 encoder.write_num(self.into_primitive(), offset);
1724 Ok(())
1725 }
1726 }
1727
1728 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoutePreference {
1729 #[inline(always)]
1730 fn new_empty() -> Self {
1731 Self::Low
1732 }
1733
1734 #[inline]
1735 unsafe fn decode(
1736 &mut self,
1737 decoder: &mut fidl::encoding::Decoder<'_, D>,
1738 offset: usize,
1739 _depth: fidl::encoding::Depth,
1740 ) -> fidl::Result<()> {
1741 decoder.debug_check_bounds::<Self>(offset);
1742 let prim = decoder.read_num::<i8>(offset);
1743
1744 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1745 Ok(())
1746 }
1747 }
1748 unsafe impl fidl::encoding::TypeMarker for SrpServerAddressMode {
1749 type Owned = Self;
1750
1751 #[inline(always)]
1752 fn inline_align(_context: fidl::encoding::Context) -> usize {
1753 std::mem::align_of::<u32>()
1754 }
1755
1756 #[inline(always)]
1757 fn inline_size(_context: fidl::encoding::Context) -> usize {
1758 std::mem::size_of::<u32>()
1759 }
1760
1761 #[inline(always)]
1762 fn encode_is_copy() -> bool {
1763 true
1764 }
1765
1766 #[inline(always)]
1767 fn decode_is_copy() -> bool {
1768 false
1769 }
1770 }
1771
1772 impl fidl::encoding::ValueTypeMarker for SrpServerAddressMode {
1773 type Borrowed<'a> = Self;
1774 #[inline(always)]
1775 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1776 *value
1777 }
1778 }
1779
1780 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1781 for SrpServerAddressMode
1782 {
1783 #[inline]
1784 unsafe fn encode(
1785 self,
1786 encoder: &mut fidl::encoding::Encoder<'_, D>,
1787 offset: usize,
1788 _depth: fidl::encoding::Depth,
1789 ) -> fidl::Result<()> {
1790 encoder.debug_check_bounds::<Self>(offset);
1791 encoder.write_num(self.into_primitive(), offset);
1792 Ok(())
1793 }
1794 }
1795
1796 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerAddressMode {
1797 #[inline(always)]
1798 fn new_empty() -> Self {
1799 Self::Unicast
1800 }
1801
1802 #[inline]
1803 unsafe fn decode(
1804 &mut self,
1805 decoder: &mut fidl::encoding::Decoder<'_, D>,
1806 offset: usize,
1807 _depth: fidl::encoding::Depth,
1808 ) -> fidl::Result<()> {
1809 decoder.debug_check_bounds::<Self>(offset);
1810 let prim = decoder.read_num::<u32>(offset);
1811
1812 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1813 Ok(())
1814 }
1815 }
1816 unsafe impl fidl::encoding::TypeMarker for SrpServerState {
1817 type Owned = Self;
1818
1819 #[inline(always)]
1820 fn inline_align(_context: fidl::encoding::Context) -> usize {
1821 std::mem::align_of::<u32>()
1822 }
1823
1824 #[inline(always)]
1825 fn inline_size(_context: fidl::encoding::Context) -> usize {
1826 std::mem::size_of::<u32>()
1827 }
1828
1829 #[inline(always)]
1830 fn encode_is_copy() -> bool {
1831 true
1832 }
1833
1834 #[inline(always)]
1835 fn decode_is_copy() -> bool {
1836 false
1837 }
1838 }
1839
1840 impl fidl::encoding::ValueTypeMarker for SrpServerState {
1841 type Borrowed<'a> = Self;
1842 #[inline(always)]
1843 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1844 *value
1845 }
1846 }
1847
1848 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for SrpServerState {
1849 #[inline]
1850 unsafe fn encode(
1851 self,
1852 encoder: &mut fidl::encoding::Encoder<'_, D>,
1853 offset: usize,
1854 _depth: fidl::encoding::Depth,
1855 ) -> fidl::Result<()> {
1856 encoder.debug_check_bounds::<Self>(offset);
1857 encoder.write_num(self.into_primitive(), offset);
1858 Ok(())
1859 }
1860 }
1861
1862 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerState {
1863 #[inline(always)]
1864 fn new_empty() -> Self {
1865 Self::Disabled
1866 }
1867
1868 #[inline]
1869 unsafe fn decode(
1870 &mut self,
1871 decoder: &mut fidl::encoding::Decoder<'_, D>,
1872 offset: usize,
1873 _depth: fidl::encoding::Depth,
1874 ) -> fidl::Result<()> {
1875 decoder.debug_check_bounds::<Self>(offset);
1876 let prim = decoder.read_num::<u32>(offset);
1877
1878 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1879 Ok(())
1880 }
1881 }
1882 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsQueryState {
1883 type Owned = Self;
1884
1885 #[inline(always)]
1886 fn inline_align(_context: fidl::encoding::Context) -> usize {
1887 std::mem::align_of::<u32>()
1888 }
1889
1890 #[inline(always)]
1891 fn inline_size(_context: fidl::encoding::Context) -> usize {
1892 std::mem::size_of::<u32>()
1893 }
1894
1895 #[inline(always)]
1896 fn encode_is_copy() -> bool {
1897 false
1898 }
1899
1900 #[inline(always)]
1901 fn decode_is_copy() -> bool {
1902 false
1903 }
1904 }
1905
1906 impl fidl::encoding::ValueTypeMarker for UpstreamDnsQueryState {
1907 type Borrowed<'a> = Self;
1908 #[inline(always)]
1909 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1910 *value
1911 }
1912 }
1913
1914 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1915 for UpstreamDnsQueryState
1916 {
1917 #[inline]
1918 unsafe fn encode(
1919 self,
1920 encoder: &mut fidl::encoding::Encoder<'_, D>,
1921 offset: usize,
1922 _depth: fidl::encoding::Depth,
1923 ) -> fidl::Result<()> {
1924 encoder.debug_check_bounds::<Self>(offset);
1925 encoder.write_num(self.into_primitive(), offset);
1926 Ok(())
1927 }
1928 }
1929
1930 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsQueryState {
1931 #[inline(always)]
1932 fn new_empty() -> Self {
1933 Self::unknown()
1934 }
1935
1936 #[inline]
1937 unsafe fn decode(
1938 &mut self,
1939 decoder: &mut fidl::encoding::Decoder<'_, D>,
1940 offset: usize,
1941 _depth: fidl::encoding::Depth,
1942 ) -> fidl::Result<()> {
1943 decoder.debug_check_bounds::<Self>(offset);
1944 let prim = decoder.read_num::<u32>(offset);
1945
1946 *self = Self::from_primitive_allow_unknown(prim);
1947 Ok(())
1948 }
1949 }
1950
1951 impl fidl::encoding::ValueTypeMarker for BeaconInfoStreamNextResponse {
1952 type Borrowed<'a> = &'a Self;
1953 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1954 value
1955 }
1956 }
1957
1958 unsafe impl fidl::encoding::TypeMarker for BeaconInfoStreamNextResponse {
1959 type Owned = Self;
1960
1961 #[inline(always)]
1962 fn inline_align(_context: fidl::encoding::Context) -> usize {
1963 8
1964 }
1965
1966 #[inline(always)]
1967 fn inline_size(_context: fidl::encoding::Context) -> usize {
1968 16
1969 }
1970 }
1971
1972 unsafe impl<D: fidl::encoding::ResourceDialect>
1973 fidl::encoding::Encode<BeaconInfoStreamNextResponse, D> for &BeaconInfoStreamNextResponse
1974 {
1975 #[inline]
1976 unsafe fn encode(
1977 self,
1978 encoder: &mut fidl::encoding::Encoder<'_, D>,
1979 offset: usize,
1980 _depth: fidl::encoding::Depth,
1981 ) -> fidl::Result<()> {
1982 encoder.debug_check_bounds::<BeaconInfoStreamNextResponse>(offset);
1983 fidl::encoding::Encode::<BeaconInfoStreamNextResponse, D>::encode(
1985 (
1986 <fidl::encoding::Vector<BeaconInfo, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.beacons),
1987 ),
1988 encoder, offset, _depth
1989 )
1990 }
1991 }
1992 unsafe impl<
1993 D: fidl::encoding::ResourceDialect,
1994 T0: fidl::encoding::Encode<fidl::encoding::Vector<BeaconInfo, 32>, D>,
1995 > fidl::encoding::Encode<BeaconInfoStreamNextResponse, D> for (T0,)
1996 {
1997 #[inline]
1998 unsafe fn encode(
1999 self,
2000 encoder: &mut fidl::encoding::Encoder<'_, D>,
2001 offset: usize,
2002 depth: fidl::encoding::Depth,
2003 ) -> fidl::Result<()> {
2004 encoder.debug_check_bounds::<BeaconInfoStreamNextResponse>(offset);
2005 self.0.encode(encoder, offset + 0, depth)?;
2009 Ok(())
2010 }
2011 }
2012
2013 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2014 for BeaconInfoStreamNextResponse
2015 {
2016 #[inline(always)]
2017 fn new_empty() -> Self {
2018 Self { beacons: fidl::new_empty!(fidl::encoding::Vector<BeaconInfo, 32>, D) }
2019 }
2020
2021 #[inline]
2022 unsafe fn decode(
2023 &mut self,
2024 decoder: &mut fidl::encoding::Decoder<'_, D>,
2025 offset: usize,
2026 _depth: fidl::encoding::Depth,
2027 ) -> fidl::Result<()> {
2028 decoder.debug_check_bounds::<Self>(offset);
2029 fidl::decode!(fidl::encoding::Vector<BeaconInfo, 32>, D, &mut self.beacons, decoder, offset + 0, _depth)?;
2031 Ok(())
2032 }
2033 }
2034
2035 impl fidl::encoding::ValueTypeMarker for DeviceGetSupportedChannelsResponse {
2036 type Borrowed<'a> = &'a Self;
2037 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2038 value
2039 }
2040 }
2041
2042 unsafe impl fidl::encoding::TypeMarker for DeviceGetSupportedChannelsResponse {
2043 type Owned = Self;
2044
2045 #[inline(always)]
2046 fn inline_align(_context: fidl::encoding::Context) -> usize {
2047 8
2048 }
2049
2050 #[inline(always)]
2051 fn inline_size(_context: fidl::encoding::Context) -> usize {
2052 16
2053 }
2054 }
2055
2056 unsafe impl<D: fidl::encoding::ResourceDialect>
2057 fidl::encoding::Encode<DeviceGetSupportedChannelsResponse, D>
2058 for &DeviceGetSupportedChannelsResponse
2059 {
2060 #[inline]
2061 unsafe fn encode(
2062 self,
2063 encoder: &mut fidl::encoding::Encoder<'_, D>,
2064 offset: usize,
2065 _depth: fidl::encoding::Depth,
2066 ) -> fidl::Result<()> {
2067 encoder.debug_check_bounds::<DeviceGetSupportedChannelsResponse>(offset);
2068 fidl::encoding::Encode::<DeviceGetSupportedChannelsResponse, D>::encode(
2070 (
2071 <fidl::encoding::Vector<ChannelInfo, 200> as fidl::encoding::ValueTypeMarker>::borrow(&self.channels_info),
2072 ),
2073 encoder, offset, _depth
2074 )
2075 }
2076 }
2077 unsafe impl<
2078 D: fidl::encoding::ResourceDialect,
2079 T0: fidl::encoding::Encode<fidl::encoding::Vector<ChannelInfo, 200>, D>,
2080 > fidl::encoding::Encode<DeviceGetSupportedChannelsResponse, D> for (T0,)
2081 {
2082 #[inline]
2083 unsafe fn encode(
2084 self,
2085 encoder: &mut fidl::encoding::Encoder<'_, D>,
2086 offset: usize,
2087 depth: fidl::encoding::Depth,
2088 ) -> fidl::Result<()> {
2089 encoder.debug_check_bounds::<DeviceGetSupportedChannelsResponse>(offset);
2090 self.0.encode(encoder, offset + 0, depth)?;
2094 Ok(())
2095 }
2096 }
2097
2098 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2099 for DeviceGetSupportedChannelsResponse
2100 {
2101 #[inline(always)]
2102 fn new_empty() -> Self {
2103 Self { channels_info: fidl::new_empty!(fidl::encoding::Vector<ChannelInfo, 200>, D) }
2104 }
2105
2106 #[inline]
2107 unsafe fn decode(
2108 &mut self,
2109 decoder: &mut fidl::encoding::Decoder<'_, D>,
2110 offset: usize,
2111 _depth: fidl::encoding::Depth,
2112 ) -> fidl::Result<()> {
2113 decoder.debug_check_bounds::<Self>(offset);
2114 fidl::decode!(fidl::encoding::Vector<ChannelInfo, 200>, D, &mut self.channels_info, decoder, offset + 0, _depth)?;
2116 Ok(())
2117 }
2118 }
2119
2120 impl fidl::encoding::ValueTypeMarker for DeviceRouteExtraGetLocalExternalRoutesResponse {
2121 type Borrowed<'a> = &'a Self;
2122 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2123 value
2124 }
2125 }
2126
2127 unsafe impl fidl::encoding::TypeMarker for DeviceRouteExtraGetLocalExternalRoutesResponse {
2128 type Owned = Self;
2129
2130 #[inline(always)]
2131 fn inline_align(_context: fidl::encoding::Context) -> usize {
2132 8
2133 }
2134
2135 #[inline(always)]
2136 fn inline_size(_context: fidl::encoding::Context) -> usize {
2137 16
2138 }
2139 }
2140
2141 unsafe impl<D: fidl::encoding::ResourceDialect>
2142 fidl::encoding::Encode<DeviceRouteExtraGetLocalExternalRoutesResponse, D>
2143 for &DeviceRouteExtraGetLocalExternalRoutesResponse
2144 {
2145 #[inline]
2146 unsafe fn encode(
2147 self,
2148 encoder: &mut fidl::encoding::Encoder<'_, D>,
2149 offset: usize,
2150 _depth: fidl::encoding::Depth,
2151 ) -> fidl::Result<()> {
2152 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalExternalRoutesResponse>(offset);
2153 fidl::encoding::Encode::<DeviceRouteExtraGetLocalExternalRoutesResponse, D>::encode(
2155 (
2156 <fidl::encoding::Vector<ExternalRoute, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.external_routes),
2157 ),
2158 encoder, offset, _depth
2159 )
2160 }
2161 }
2162 unsafe impl<
2163 D: fidl::encoding::ResourceDialect,
2164 T0: fidl::encoding::Encode<fidl::encoding::Vector<ExternalRoute, 32>, D>,
2165 > fidl::encoding::Encode<DeviceRouteExtraGetLocalExternalRoutesResponse, D> for (T0,)
2166 {
2167 #[inline]
2168 unsafe fn encode(
2169 self,
2170 encoder: &mut fidl::encoding::Encoder<'_, D>,
2171 offset: usize,
2172 depth: fidl::encoding::Depth,
2173 ) -> fidl::Result<()> {
2174 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalExternalRoutesResponse>(offset);
2175 self.0.encode(encoder, offset + 0, depth)?;
2179 Ok(())
2180 }
2181 }
2182
2183 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2184 for DeviceRouteExtraGetLocalExternalRoutesResponse
2185 {
2186 #[inline(always)]
2187 fn new_empty() -> Self {
2188 Self { external_routes: fidl::new_empty!(fidl::encoding::Vector<ExternalRoute, 32>, D) }
2189 }
2190
2191 #[inline]
2192 unsafe fn decode(
2193 &mut self,
2194 decoder: &mut fidl::encoding::Decoder<'_, D>,
2195 offset: usize,
2196 _depth: fidl::encoding::Depth,
2197 ) -> fidl::Result<()> {
2198 decoder.debug_check_bounds::<Self>(offset);
2199 fidl::decode!(fidl::encoding::Vector<ExternalRoute, 32>, D, &mut self.external_routes, decoder, offset + 0, _depth)?;
2201 Ok(())
2202 }
2203 }
2204
2205 impl fidl::encoding::ValueTypeMarker for DeviceRouteExtraGetLocalOnMeshPrefixesResponse {
2206 type Borrowed<'a> = &'a Self;
2207 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2208 value
2209 }
2210 }
2211
2212 unsafe impl fidl::encoding::TypeMarker for DeviceRouteExtraGetLocalOnMeshPrefixesResponse {
2213 type Owned = Self;
2214
2215 #[inline(always)]
2216 fn inline_align(_context: fidl::encoding::Context) -> usize {
2217 8
2218 }
2219
2220 #[inline(always)]
2221 fn inline_size(_context: fidl::encoding::Context) -> usize {
2222 16
2223 }
2224 }
2225
2226 unsafe impl<D: fidl::encoding::ResourceDialect>
2227 fidl::encoding::Encode<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D>
2228 for &DeviceRouteExtraGetLocalOnMeshPrefixesResponse
2229 {
2230 #[inline]
2231 unsafe fn encode(
2232 self,
2233 encoder: &mut fidl::encoding::Encoder<'_, D>,
2234 offset: usize,
2235 _depth: fidl::encoding::Depth,
2236 ) -> fidl::Result<()> {
2237 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse>(offset);
2238 fidl::encoding::Encode::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D>::encode(
2240 (
2241 <fidl::encoding::Vector<OnMeshPrefix, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.prefixes),
2242 ),
2243 encoder, offset, _depth
2244 )
2245 }
2246 }
2247 unsafe impl<
2248 D: fidl::encoding::ResourceDialect,
2249 T0: fidl::encoding::Encode<fidl::encoding::Vector<OnMeshPrefix, 32>, D>,
2250 > fidl::encoding::Encode<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D> for (T0,)
2251 {
2252 #[inline]
2253 unsafe fn encode(
2254 self,
2255 encoder: &mut fidl::encoding::Encoder<'_, D>,
2256 offset: usize,
2257 depth: fidl::encoding::Depth,
2258 ) -> fidl::Result<()> {
2259 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse>(offset);
2260 self.0.encode(encoder, offset + 0, depth)?;
2264 Ok(())
2265 }
2266 }
2267
2268 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2269 for DeviceRouteExtraGetLocalOnMeshPrefixesResponse
2270 {
2271 #[inline(always)]
2272 fn new_empty() -> Self {
2273 Self { prefixes: fidl::new_empty!(fidl::encoding::Vector<OnMeshPrefix, 32>, D) }
2274 }
2275
2276 #[inline]
2277 unsafe fn decode(
2278 &mut self,
2279 decoder: &mut fidl::encoding::Decoder<'_, D>,
2280 offset: usize,
2281 _depth: fidl::encoding::Depth,
2282 ) -> fidl::Result<()> {
2283 decoder.debug_check_bounds::<Self>(offset);
2284 fidl::decode!(fidl::encoding::Vector<OnMeshPrefix, 32>, D, &mut self.prefixes, decoder, offset + 0, _depth)?;
2286 Ok(())
2287 }
2288 }
2289
2290 impl fidl::encoding::ValueTypeMarker for DeviceRouteRegisterExternalRouteRequest {
2291 type Borrowed<'a> = &'a Self;
2292 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2293 value
2294 }
2295 }
2296
2297 unsafe impl fidl::encoding::TypeMarker for DeviceRouteRegisterExternalRouteRequest {
2298 type Owned = Self;
2299
2300 #[inline(always)]
2301 fn inline_align(_context: fidl::encoding::Context) -> usize {
2302 8
2303 }
2304
2305 #[inline(always)]
2306 fn inline_size(_context: fidl::encoding::Context) -> usize {
2307 16
2308 }
2309 }
2310
2311 unsafe impl<D: fidl::encoding::ResourceDialect>
2312 fidl::encoding::Encode<DeviceRouteRegisterExternalRouteRequest, D>
2313 for &DeviceRouteRegisterExternalRouteRequest
2314 {
2315 #[inline]
2316 unsafe fn encode(
2317 self,
2318 encoder: &mut fidl::encoding::Encoder<'_, D>,
2319 offset: usize,
2320 _depth: fidl::encoding::Depth,
2321 ) -> fidl::Result<()> {
2322 encoder.debug_check_bounds::<DeviceRouteRegisterExternalRouteRequest>(offset);
2323 fidl::encoding::Encode::<DeviceRouteRegisterExternalRouteRequest, D>::encode(
2325 (<ExternalRoute as fidl::encoding::ValueTypeMarker>::borrow(&self.external_route),),
2326 encoder,
2327 offset,
2328 _depth,
2329 )
2330 }
2331 }
2332 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ExternalRoute, D>>
2333 fidl::encoding::Encode<DeviceRouteRegisterExternalRouteRequest, D> for (T0,)
2334 {
2335 #[inline]
2336 unsafe fn encode(
2337 self,
2338 encoder: &mut fidl::encoding::Encoder<'_, D>,
2339 offset: usize,
2340 depth: fidl::encoding::Depth,
2341 ) -> fidl::Result<()> {
2342 encoder.debug_check_bounds::<DeviceRouteRegisterExternalRouteRequest>(offset);
2343 self.0.encode(encoder, offset + 0, depth)?;
2347 Ok(())
2348 }
2349 }
2350
2351 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2352 for DeviceRouteRegisterExternalRouteRequest
2353 {
2354 #[inline(always)]
2355 fn new_empty() -> Self {
2356 Self { external_route: fidl::new_empty!(ExternalRoute, D) }
2357 }
2358
2359 #[inline]
2360 unsafe fn decode(
2361 &mut self,
2362 decoder: &mut fidl::encoding::Decoder<'_, D>,
2363 offset: usize,
2364 _depth: fidl::encoding::Depth,
2365 ) -> fidl::Result<()> {
2366 decoder.debug_check_bounds::<Self>(offset);
2367 fidl::decode!(ExternalRoute, D, &mut self.external_route, decoder, offset + 0, _depth)?;
2369 Ok(())
2370 }
2371 }
2372
2373 impl fidl::encoding::ValueTypeMarker for DeviceRouteRegisterOnMeshPrefixRequest {
2374 type Borrowed<'a> = &'a Self;
2375 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2376 value
2377 }
2378 }
2379
2380 unsafe impl fidl::encoding::TypeMarker for DeviceRouteRegisterOnMeshPrefixRequest {
2381 type Owned = Self;
2382
2383 #[inline(always)]
2384 fn inline_align(_context: fidl::encoding::Context) -> usize {
2385 8
2386 }
2387
2388 #[inline(always)]
2389 fn inline_size(_context: fidl::encoding::Context) -> usize {
2390 16
2391 }
2392 }
2393
2394 unsafe impl<D: fidl::encoding::ResourceDialect>
2395 fidl::encoding::Encode<DeviceRouteRegisterOnMeshPrefixRequest, D>
2396 for &DeviceRouteRegisterOnMeshPrefixRequest
2397 {
2398 #[inline]
2399 unsafe fn encode(
2400 self,
2401 encoder: &mut fidl::encoding::Encoder<'_, D>,
2402 offset: usize,
2403 _depth: fidl::encoding::Depth,
2404 ) -> fidl::Result<()> {
2405 encoder.debug_check_bounds::<DeviceRouteRegisterOnMeshPrefixRequest>(offset);
2406 fidl::encoding::Encode::<DeviceRouteRegisterOnMeshPrefixRequest, D>::encode(
2408 (<OnMeshPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.prefix),),
2409 encoder,
2410 offset,
2411 _depth,
2412 )
2413 }
2414 }
2415 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<OnMeshPrefix, D>>
2416 fidl::encoding::Encode<DeviceRouteRegisterOnMeshPrefixRequest, D> for (T0,)
2417 {
2418 #[inline]
2419 unsafe fn encode(
2420 self,
2421 encoder: &mut fidl::encoding::Encoder<'_, D>,
2422 offset: usize,
2423 depth: fidl::encoding::Depth,
2424 ) -> fidl::Result<()> {
2425 encoder.debug_check_bounds::<DeviceRouteRegisterOnMeshPrefixRequest>(offset);
2426 self.0.encode(encoder, offset + 0, depth)?;
2430 Ok(())
2431 }
2432 }
2433
2434 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2435 for DeviceRouteRegisterOnMeshPrefixRequest
2436 {
2437 #[inline(always)]
2438 fn new_empty() -> Self {
2439 Self { prefix: fidl::new_empty!(OnMeshPrefix, D) }
2440 }
2441
2442 #[inline]
2443 unsafe fn decode(
2444 &mut self,
2445 decoder: &mut fidl::encoding::Decoder<'_, D>,
2446 offset: usize,
2447 _depth: fidl::encoding::Depth,
2448 ) -> fidl::Result<()> {
2449 decoder.debug_check_bounds::<Self>(offset);
2450 fidl::decode!(OnMeshPrefix, D, &mut self.prefix, decoder, offset + 0, _depth)?;
2452 Ok(())
2453 }
2454 }
2455
2456 impl fidl::encoding::ValueTypeMarker for DeviceRouteUnregisterExternalRouteRequest {
2457 type Borrowed<'a> = &'a Self;
2458 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2459 value
2460 }
2461 }
2462
2463 unsafe impl fidl::encoding::TypeMarker for DeviceRouteUnregisterExternalRouteRequest {
2464 type Owned = Self;
2465
2466 #[inline(always)]
2467 fn inline_align(_context: fidl::encoding::Context) -> usize {
2468 1
2469 }
2470
2471 #[inline(always)]
2472 fn inline_size(_context: fidl::encoding::Context) -> usize {
2473 17
2474 }
2475 }
2476
2477 unsafe impl<D: fidl::encoding::ResourceDialect>
2478 fidl::encoding::Encode<DeviceRouteUnregisterExternalRouteRequest, D>
2479 for &DeviceRouteUnregisterExternalRouteRequest
2480 {
2481 #[inline]
2482 unsafe fn encode(
2483 self,
2484 encoder: &mut fidl::encoding::Encoder<'_, D>,
2485 offset: usize,
2486 _depth: fidl::encoding::Depth,
2487 ) -> fidl::Result<()> {
2488 encoder.debug_check_bounds::<DeviceRouteUnregisterExternalRouteRequest>(offset);
2489 fidl::encoding::Encode::<DeviceRouteUnregisterExternalRouteRequest, D>::encode(
2491 (
2492 <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.subnet),
2493 ),
2494 encoder, offset, _depth
2495 )
2496 }
2497 }
2498 unsafe impl<
2499 D: fidl::encoding::ResourceDialect,
2500 T0: fidl::encoding::Encode<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>,
2501 > fidl::encoding::Encode<DeviceRouteUnregisterExternalRouteRequest, D> for (T0,)
2502 {
2503 #[inline]
2504 unsafe fn encode(
2505 self,
2506 encoder: &mut fidl::encoding::Encoder<'_, D>,
2507 offset: usize,
2508 depth: fidl::encoding::Depth,
2509 ) -> fidl::Result<()> {
2510 encoder.debug_check_bounds::<DeviceRouteUnregisterExternalRouteRequest>(offset);
2511 self.0.encode(encoder, offset + 0, depth)?;
2515 Ok(())
2516 }
2517 }
2518
2519 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2520 for DeviceRouteUnregisterExternalRouteRequest
2521 {
2522 #[inline(always)]
2523 fn new_empty() -> Self {
2524 Self { subnet: fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D) }
2525 }
2526
2527 #[inline]
2528 unsafe fn decode(
2529 &mut self,
2530 decoder: &mut fidl::encoding::Decoder<'_, D>,
2531 offset: usize,
2532 _depth: fidl::encoding::Depth,
2533 ) -> fidl::Result<()> {
2534 decoder.debug_check_bounds::<Self>(offset);
2535 fidl::decode!(
2537 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
2538 D,
2539 &mut self.subnet,
2540 decoder,
2541 offset + 0,
2542 _depth
2543 )?;
2544 Ok(())
2545 }
2546 }
2547
2548 impl fidl::encoding::ValueTypeMarker for DeviceRouteUnregisterOnMeshPrefixRequest {
2549 type Borrowed<'a> = &'a Self;
2550 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2551 value
2552 }
2553 }
2554
2555 unsafe impl fidl::encoding::TypeMarker for DeviceRouteUnregisterOnMeshPrefixRequest {
2556 type Owned = Self;
2557
2558 #[inline(always)]
2559 fn inline_align(_context: fidl::encoding::Context) -> usize {
2560 1
2561 }
2562
2563 #[inline(always)]
2564 fn inline_size(_context: fidl::encoding::Context) -> usize {
2565 17
2566 }
2567 }
2568
2569 unsafe impl<D: fidl::encoding::ResourceDialect>
2570 fidl::encoding::Encode<DeviceRouteUnregisterOnMeshPrefixRequest, D>
2571 for &DeviceRouteUnregisterOnMeshPrefixRequest
2572 {
2573 #[inline]
2574 unsafe fn encode(
2575 self,
2576 encoder: &mut fidl::encoding::Encoder<'_, D>,
2577 offset: usize,
2578 _depth: fidl::encoding::Depth,
2579 ) -> fidl::Result<()> {
2580 encoder.debug_check_bounds::<DeviceRouteUnregisterOnMeshPrefixRequest>(offset);
2581 fidl::encoding::Encode::<DeviceRouteUnregisterOnMeshPrefixRequest, D>::encode(
2583 (
2584 <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.subnet),
2585 ),
2586 encoder, offset, _depth
2587 )
2588 }
2589 }
2590 unsafe impl<
2591 D: fidl::encoding::ResourceDialect,
2592 T0: fidl::encoding::Encode<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>,
2593 > fidl::encoding::Encode<DeviceRouteUnregisterOnMeshPrefixRequest, D> for (T0,)
2594 {
2595 #[inline]
2596 unsafe fn encode(
2597 self,
2598 encoder: &mut fidl::encoding::Encoder<'_, D>,
2599 offset: usize,
2600 depth: fidl::encoding::Depth,
2601 ) -> fidl::Result<()> {
2602 encoder.debug_check_bounds::<DeviceRouteUnregisterOnMeshPrefixRequest>(offset);
2603 self.0.encode(encoder, offset + 0, depth)?;
2607 Ok(())
2608 }
2609 }
2610
2611 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2612 for DeviceRouteUnregisterOnMeshPrefixRequest
2613 {
2614 #[inline(always)]
2615 fn new_empty() -> Self {
2616 Self { subnet: fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D) }
2617 }
2618
2619 #[inline]
2620 unsafe fn decode(
2621 &mut self,
2622 decoder: &mut fidl::encoding::Decoder<'_, D>,
2623 offset: usize,
2624 _depth: fidl::encoding::Depth,
2625 ) -> fidl::Result<()> {
2626 decoder.debug_check_bounds::<Self>(offset);
2627 fidl::decode!(
2629 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
2630 D,
2631 &mut self.subnet,
2632 decoder,
2633 offset + 0,
2634 _depth
2635 )?;
2636 Ok(())
2637 }
2638 }
2639
2640 impl fidl::encoding::ValueTypeMarker for LegacyJoiningMakeJoinableRequest {
2641 type Borrowed<'a> = &'a Self;
2642 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2643 value
2644 }
2645 }
2646
2647 unsafe impl fidl::encoding::TypeMarker for LegacyJoiningMakeJoinableRequest {
2648 type Owned = Self;
2649
2650 #[inline(always)]
2651 fn inline_align(_context: fidl::encoding::Context) -> usize {
2652 8
2653 }
2654
2655 #[inline(always)]
2656 fn inline_size(_context: fidl::encoding::Context) -> usize {
2657 16
2658 }
2659 }
2660
2661 unsafe impl<D: fidl::encoding::ResourceDialect>
2662 fidl::encoding::Encode<LegacyJoiningMakeJoinableRequest, D>
2663 for &LegacyJoiningMakeJoinableRequest
2664 {
2665 #[inline]
2666 unsafe fn encode(
2667 self,
2668 encoder: &mut fidl::encoding::Encoder<'_, D>,
2669 offset: usize,
2670 _depth: fidl::encoding::Depth,
2671 ) -> fidl::Result<()> {
2672 encoder.debug_check_bounds::<LegacyJoiningMakeJoinableRequest>(offset);
2673 unsafe {
2674 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2676 (buf_ptr as *mut LegacyJoiningMakeJoinableRequest)
2677 .write_unaligned((self as *const LegacyJoiningMakeJoinableRequest).read());
2678 let padding_ptr = buf_ptr.offset(8) as *mut u64;
2681 let padding_mask = 0xffffffffffff0000u64;
2682 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
2683 }
2684 Ok(())
2685 }
2686 }
2687 unsafe impl<
2688 D: fidl::encoding::ResourceDialect,
2689 T0: fidl::encoding::Encode<i64, D>,
2690 T1: fidl::encoding::Encode<u16, D>,
2691 > fidl::encoding::Encode<LegacyJoiningMakeJoinableRequest, D> for (T0, T1)
2692 {
2693 #[inline]
2694 unsafe fn encode(
2695 self,
2696 encoder: &mut fidl::encoding::Encoder<'_, D>,
2697 offset: usize,
2698 depth: fidl::encoding::Depth,
2699 ) -> fidl::Result<()> {
2700 encoder.debug_check_bounds::<LegacyJoiningMakeJoinableRequest>(offset);
2701 unsafe {
2704 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2705 (ptr as *mut u64).write_unaligned(0);
2706 }
2707 self.0.encode(encoder, offset + 0, depth)?;
2709 self.1.encode(encoder, offset + 8, depth)?;
2710 Ok(())
2711 }
2712 }
2713
2714 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2715 for LegacyJoiningMakeJoinableRequest
2716 {
2717 #[inline(always)]
2718 fn new_empty() -> Self {
2719 Self { duration: fidl::new_empty!(i64, D), port: fidl::new_empty!(u16, D) }
2720 }
2721
2722 #[inline]
2723 unsafe fn decode(
2724 &mut self,
2725 decoder: &mut fidl::encoding::Decoder<'_, D>,
2726 offset: usize,
2727 _depth: fidl::encoding::Depth,
2728 ) -> fidl::Result<()> {
2729 decoder.debug_check_bounds::<Self>(offset);
2730 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2731 let ptr = unsafe { buf_ptr.offset(8) };
2733 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2734 let mask = 0xffffffffffff0000u64;
2735 let maskedval = padval & mask;
2736 if maskedval != 0 {
2737 return Err(fidl::Error::NonZeroPadding {
2738 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2739 });
2740 }
2741 unsafe {
2743 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
2744 }
2745 Ok(())
2746 }
2747 }
2748
2749 impl fidl::encoding::ValueTypeMarker for ProvisioningMonitorWatchProgressResponse {
2750 type Borrowed<'a> = &'a Self;
2751 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2752 value
2753 }
2754 }
2755
2756 unsafe impl fidl::encoding::TypeMarker for ProvisioningMonitorWatchProgressResponse {
2757 type Owned = Self;
2758
2759 #[inline(always)]
2760 fn inline_align(_context: fidl::encoding::Context) -> usize {
2761 8
2762 }
2763
2764 #[inline(always)]
2765 fn inline_size(_context: fidl::encoding::Context) -> usize {
2766 16
2767 }
2768 }
2769
2770 unsafe impl<D: fidl::encoding::ResourceDialect>
2771 fidl::encoding::Encode<ProvisioningMonitorWatchProgressResponse, D>
2772 for &ProvisioningMonitorWatchProgressResponse
2773 {
2774 #[inline]
2775 unsafe fn encode(
2776 self,
2777 encoder: &mut fidl::encoding::Encoder<'_, D>,
2778 offset: usize,
2779 _depth: fidl::encoding::Depth,
2780 ) -> fidl::Result<()> {
2781 encoder.debug_check_bounds::<ProvisioningMonitorWatchProgressResponse>(offset);
2782 fidl::encoding::Encode::<ProvisioningMonitorWatchProgressResponse, D>::encode(
2784 (<ProvisioningProgress as fidl::encoding::ValueTypeMarker>::borrow(&self.progress),),
2785 encoder,
2786 offset,
2787 _depth,
2788 )
2789 }
2790 }
2791 unsafe impl<
2792 D: fidl::encoding::ResourceDialect,
2793 T0: fidl::encoding::Encode<ProvisioningProgress, D>,
2794 > fidl::encoding::Encode<ProvisioningMonitorWatchProgressResponse, D> for (T0,)
2795 {
2796 #[inline]
2797 unsafe fn encode(
2798 self,
2799 encoder: &mut fidl::encoding::Encoder<'_, D>,
2800 offset: usize,
2801 depth: fidl::encoding::Depth,
2802 ) -> fidl::Result<()> {
2803 encoder.debug_check_bounds::<ProvisioningMonitorWatchProgressResponse>(offset);
2804 self.0.encode(encoder, offset + 0, depth)?;
2808 Ok(())
2809 }
2810 }
2811
2812 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2813 for ProvisioningMonitorWatchProgressResponse
2814 {
2815 #[inline(always)]
2816 fn new_empty() -> Self {
2817 Self { progress: fidl::new_empty!(ProvisioningProgress, D) }
2818 }
2819
2820 #[inline]
2821 unsafe fn decode(
2822 &mut self,
2823 decoder: &mut fidl::encoding::Decoder<'_, D>,
2824 offset: usize,
2825 _depth: fidl::encoding::Depth,
2826 ) -> fidl::Result<()> {
2827 decoder.debug_check_bounds::<Self>(offset);
2828 fidl::decode!(
2830 ProvisioningProgress,
2831 D,
2832 &mut self.progress,
2833 decoder,
2834 offset + 0,
2835 _depth
2836 )?;
2837 Ok(())
2838 }
2839 }
2840
2841 impl fidl::encoding::ValueTypeMarker for TelemetryProviderGetTelemetryResponse {
2842 type Borrowed<'a> = &'a Self;
2843 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2844 value
2845 }
2846 }
2847
2848 unsafe impl fidl::encoding::TypeMarker for TelemetryProviderGetTelemetryResponse {
2849 type Owned = Self;
2850
2851 #[inline(always)]
2852 fn inline_align(_context: fidl::encoding::Context) -> usize {
2853 8
2854 }
2855
2856 #[inline(always)]
2857 fn inline_size(_context: fidl::encoding::Context) -> usize {
2858 16
2859 }
2860 }
2861
2862 unsafe impl<D: fidl::encoding::ResourceDialect>
2863 fidl::encoding::Encode<TelemetryProviderGetTelemetryResponse, D>
2864 for &TelemetryProviderGetTelemetryResponse
2865 {
2866 #[inline]
2867 unsafe fn encode(
2868 self,
2869 encoder: &mut fidl::encoding::Encoder<'_, D>,
2870 offset: usize,
2871 _depth: fidl::encoding::Depth,
2872 ) -> fidl::Result<()> {
2873 encoder.debug_check_bounds::<TelemetryProviderGetTelemetryResponse>(offset);
2874 fidl::encoding::Encode::<TelemetryProviderGetTelemetryResponse, D>::encode(
2876 (<Telemetry as fidl::encoding::ValueTypeMarker>::borrow(&self.telemetry),),
2877 encoder,
2878 offset,
2879 _depth,
2880 )
2881 }
2882 }
2883 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Telemetry, D>>
2884 fidl::encoding::Encode<TelemetryProviderGetTelemetryResponse, D> for (T0,)
2885 {
2886 #[inline]
2887 unsafe fn encode(
2888 self,
2889 encoder: &mut fidl::encoding::Encoder<'_, D>,
2890 offset: usize,
2891 depth: fidl::encoding::Depth,
2892 ) -> fidl::Result<()> {
2893 encoder.debug_check_bounds::<TelemetryProviderGetTelemetryResponse>(offset);
2894 self.0.encode(encoder, offset + 0, depth)?;
2898 Ok(())
2899 }
2900 }
2901
2902 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2903 for TelemetryProviderGetTelemetryResponse
2904 {
2905 #[inline(always)]
2906 fn new_empty() -> Self {
2907 Self { telemetry: fidl::new_empty!(Telemetry, D) }
2908 }
2909
2910 #[inline]
2911 unsafe fn decode(
2912 &mut self,
2913 decoder: &mut fidl::encoding::Decoder<'_, D>,
2914 offset: usize,
2915 _depth: fidl::encoding::Depth,
2916 ) -> fidl::Result<()> {
2917 decoder.debug_check_bounds::<Self>(offset);
2918 fidl::decode!(Telemetry, D, &mut self.telemetry, decoder, offset + 0, _depth)?;
2920 Ok(())
2921 }
2922 }
2923
2924 impl BeaconInfo {
2925 #[inline(always)]
2926 fn max_ordinal_present(&self) -> u64 {
2927 if let Some(_) = self.lqi {
2928 return 4;
2929 }
2930 if let Some(_) = self.rssi {
2931 return 3;
2932 }
2933 if let Some(_) = self.identity {
2934 return 2;
2935 }
2936 if let Some(_) = self.address {
2937 return 1;
2938 }
2939 0
2940 }
2941 }
2942
2943 impl fidl::encoding::ValueTypeMarker for BeaconInfo {
2944 type Borrowed<'a> = &'a Self;
2945 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2946 value
2947 }
2948 }
2949
2950 unsafe impl fidl::encoding::TypeMarker for BeaconInfo {
2951 type Owned = Self;
2952
2953 #[inline(always)]
2954 fn inline_align(_context: fidl::encoding::Context) -> usize {
2955 8
2956 }
2957
2958 #[inline(always)]
2959 fn inline_size(_context: fidl::encoding::Context) -> usize {
2960 16
2961 }
2962 }
2963
2964 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BeaconInfo, D>
2965 for &BeaconInfo
2966 {
2967 unsafe fn encode(
2968 self,
2969 encoder: &mut fidl::encoding::Encoder<'_, D>,
2970 offset: usize,
2971 mut depth: fidl::encoding::Depth,
2972 ) -> fidl::Result<()> {
2973 encoder.debug_check_bounds::<BeaconInfo>(offset);
2974 let max_ordinal: u64 = self.max_ordinal_present();
2976 encoder.write_num(max_ordinal, offset);
2977 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2978 if max_ordinal == 0 {
2980 return Ok(());
2981 }
2982 depth.increment()?;
2983 let envelope_size = 8;
2984 let bytes_len = max_ordinal as usize * envelope_size;
2985 #[allow(unused_variables)]
2986 let offset = encoder.out_of_line_offset(bytes_len);
2987 let mut _prev_end_offset: usize = 0;
2988 if 1 > max_ordinal {
2989 return Ok(());
2990 }
2991
2992 let cur_offset: usize = (1 - 1) * envelope_size;
2995
2996 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2998
2999 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan__common::MacAddress, D>(
3004 self.address.as_ref().map(<fidl_fuchsia_lowpan__common::MacAddress as fidl::encoding::ValueTypeMarker>::borrow),
3005 encoder, offset + cur_offset, depth
3006 )?;
3007
3008 _prev_end_offset = cur_offset + envelope_size;
3009 if 2 > max_ordinal {
3010 return Ok(());
3011 }
3012
3013 let cur_offset: usize = (2 - 1) * envelope_size;
3016
3017 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3019
3020 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan_device__common::Identity, D>(
3025 self.identity.as_ref().map(<fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::ValueTypeMarker>::borrow),
3026 encoder, offset + cur_offset, depth
3027 )?;
3028
3029 _prev_end_offset = cur_offset + envelope_size;
3030 if 3 > max_ordinal {
3031 return Ok(());
3032 }
3033
3034 let cur_offset: usize = (3 - 1) * envelope_size;
3037
3038 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3040
3041 fidl::encoding::encode_in_envelope_optional::<i8, D>(
3046 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
3047 encoder,
3048 offset + cur_offset,
3049 depth,
3050 )?;
3051
3052 _prev_end_offset = cur_offset + envelope_size;
3053 if 4 > max_ordinal {
3054 return Ok(());
3055 }
3056
3057 let cur_offset: usize = (4 - 1) * envelope_size;
3060
3061 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3063
3064 fidl::encoding::encode_in_envelope_optional::<u8, D>(
3069 self.lqi.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
3070 encoder,
3071 offset + cur_offset,
3072 depth,
3073 )?;
3074
3075 _prev_end_offset = cur_offset + envelope_size;
3076
3077 Ok(())
3078 }
3079 }
3080
3081 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BeaconInfo {
3082 #[inline(always)]
3083 fn new_empty() -> Self {
3084 Self::default()
3085 }
3086
3087 unsafe fn decode(
3088 &mut self,
3089 decoder: &mut fidl::encoding::Decoder<'_, D>,
3090 offset: usize,
3091 mut depth: fidl::encoding::Depth,
3092 ) -> fidl::Result<()> {
3093 decoder.debug_check_bounds::<Self>(offset);
3094 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3095 None => return Err(fidl::Error::NotNullable),
3096 Some(len) => len,
3097 };
3098 if len == 0 {
3100 return Ok(());
3101 };
3102 depth.increment()?;
3103 let envelope_size = 8;
3104 let bytes_len = len * envelope_size;
3105 let offset = decoder.out_of_line_offset(bytes_len)?;
3106 let mut _next_ordinal_to_read = 0;
3108 let mut next_offset = offset;
3109 let end_offset = offset + bytes_len;
3110 _next_ordinal_to_read += 1;
3111 if next_offset >= end_offset {
3112 return Ok(());
3113 }
3114
3115 while _next_ordinal_to_read < 1 {
3117 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3118 _next_ordinal_to_read += 1;
3119 next_offset += envelope_size;
3120 }
3121
3122 let next_out_of_line = decoder.next_out_of_line();
3123 let handles_before = decoder.remaining_handles();
3124 if let Some((inlined, num_bytes, num_handles)) =
3125 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3126 {
3127 let member_inline_size = <fidl_fuchsia_lowpan__common::MacAddress as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3128 if inlined != (member_inline_size <= 4) {
3129 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3130 }
3131 let inner_offset;
3132 let mut inner_depth = depth.clone();
3133 if inlined {
3134 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3135 inner_offset = next_offset;
3136 } else {
3137 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3138 inner_depth.increment()?;
3139 }
3140 let val_ref = self.address.get_or_insert_with(|| {
3141 fidl::new_empty!(fidl_fuchsia_lowpan__common::MacAddress, D)
3142 });
3143 fidl::decode!(
3144 fidl_fuchsia_lowpan__common::MacAddress,
3145 D,
3146 val_ref,
3147 decoder,
3148 inner_offset,
3149 inner_depth
3150 )?;
3151 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3152 {
3153 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3154 }
3155 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3156 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3157 }
3158 }
3159
3160 next_offset += envelope_size;
3161 _next_ordinal_to_read += 1;
3162 if next_offset >= end_offset {
3163 return Ok(());
3164 }
3165
3166 while _next_ordinal_to_read < 2 {
3168 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3169 _next_ordinal_to_read += 1;
3170 next_offset += envelope_size;
3171 }
3172
3173 let next_out_of_line = decoder.next_out_of_line();
3174 let handles_before = decoder.remaining_handles();
3175 if let Some((inlined, num_bytes, num_handles)) =
3176 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3177 {
3178 let member_inline_size = <fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3179 if inlined != (member_inline_size <= 4) {
3180 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3181 }
3182 let inner_offset;
3183 let mut inner_depth = depth.clone();
3184 if inlined {
3185 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3186 inner_offset = next_offset;
3187 } else {
3188 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3189 inner_depth.increment()?;
3190 }
3191 let val_ref = self.identity.get_or_insert_with(|| {
3192 fidl::new_empty!(fidl_fuchsia_lowpan_device__common::Identity, D)
3193 });
3194 fidl::decode!(
3195 fidl_fuchsia_lowpan_device__common::Identity,
3196 D,
3197 val_ref,
3198 decoder,
3199 inner_offset,
3200 inner_depth
3201 )?;
3202 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3203 {
3204 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3205 }
3206 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3207 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3208 }
3209 }
3210
3211 next_offset += envelope_size;
3212 _next_ordinal_to_read += 1;
3213 if next_offset >= end_offset {
3214 return Ok(());
3215 }
3216
3217 while _next_ordinal_to_read < 3 {
3219 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3220 _next_ordinal_to_read += 1;
3221 next_offset += envelope_size;
3222 }
3223
3224 let next_out_of_line = decoder.next_out_of_line();
3225 let handles_before = decoder.remaining_handles();
3226 if let Some((inlined, num_bytes, num_handles)) =
3227 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3228 {
3229 let member_inline_size =
3230 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3231 if inlined != (member_inline_size <= 4) {
3232 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3233 }
3234 let inner_offset;
3235 let mut inner_depth = depth.clone();
3236 if inlined {
3237 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3238 inner_offset = next_offset;
3239 } else {
3240 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3241 inner_depth.increment()?;
3242 }
3243 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
3244 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
3245 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3246 {
3247 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3248 }
3249 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3250 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3251 }
3252 }
3253
3254 next_offset += envelope_size;
3255 _next_ordinal_to_read += 1;
3256 if next_offset >= end_offset {
3257 return Ok(());
3258 }
3259
3260 while _next_ordinal_to_read < 4 {
3262 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3263 _next_ordinal_to_read += 1;
3264 next_offset += envelope_size;
3265 }
3266
3267 let next_out_of_line = decoder.next_out_of_line();
3268 let handles_before = decoder.remaining_handles();
3269 if let Some((inlined, num_bytes, num_handles)) =
3270 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3271 {
3272 let member_inline_size =
3273 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3274 if inlined != (member_inline_size <= 4) {
3275 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3276 }
3277 let inner_offset;
3278 let mut inner_depth = depth.clone();
3279 if inlined {
3280 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3281 inner_offset = next_offset;
3282 } else {
3283 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3284 inner_depth.increment()?;
3285 }
3286 let val_ref = self.lqi.get_or_insert_with(|| fidl::new_empty!(u8, D));
3287 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
3288 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3289 {
3290 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3291 }
3292 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3293 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3294 }
3295 }
3296
3297 next_offset += envelope_size;
3298
3299 while next_offset < end_offset {
3301 _next_ordinal_to_read += 1;
3302 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3303 next_offset += envelope_size;
3304 }
3305
3306 Ok(())
3307 }
3308 }
3309
3310 impl BorderRoutingCounters {
3311 #[inline(always)]
3312 fn max_ordinal_present(&self) -> u64 {
3313 if let Some(_) = self.outbound_internet_bytes {
3314 return 18;
3315 }
3316 if let Some(_) = self.outbound_internet_packets {
3317 return 17;
3318 }
3319 if let Some(_) = self.inbound_internet_bytes {
3320 return 16;
3321 }
3322 if let Some(_) = self.inbound_internet_packets {
3323 return 15;
3324 }
3325 if let Some(_) = self.rs_tx_failure {
3326 return 14;
3327 }
3328 if let Some(_) = self.rs_tx_success {
3329 return 13;
3330 }
3331 if let Some(_) = self.rs_rx {
3332 return 12;
3333 }
3334 if let Some(_) = self.ra_tx_failure {
3335 return 11;
3336 }
3337 if let Some(_) = self.ra_tx_success {
3338 return 10;
3339 }
3340 if let Some(_) = self.ra_rx {
3341 return 9;
3342 }
3343 if let Some(_) = self.outbound_multicast_bytes {
3344 return 8;
3345 }
3346 if let Some(_) = self.outbound_multicast_packets {
3347 return 7;
3348 }
3349 if let Some(_) = self.outbound_unicast_bytes {
3350 return 6;
3351 }
3352 if let Some(_) = self.outbound_unicast_packets {
3353 return 5;
3354 }
3355 if let Some(_) = self.inbound_multicast_bytes {
3356 return 4;
3357 }
3358 if let Some(_) = self.inbound_multicast_packets {
3359 return 3;
3360 }
3361 if let Some(_) = self.inbound_unicast_bytes {
3362 return 2;
3363 }
3364 if let Some(_) = self.inbound_unicast_packets {
3365 return 1;
3366 }
3367 0
3368 }
3369 }
3370
3371 impl fidl::encoding::ValueTypeMarker for BorderRoutingCounters {
3372 type Borrowed<'a> = &'a Self;
3373 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3374 value
3375 }
3376 }
3377
3378 unsafe impl fidl::encoding::TypeMarker for BorderRoutingCounters {
3379 type Owned = Self;
3380
3381 #[inline(always)]
3382 fn inline_align(_context: fidl::encoding::Context) -> usize {
3383 8
3384 }
3385
3386 #[inline(always)]
3387 fn inline_size(_context: fidl::encoding::Context) -> usize {
3388 16
3389 }
3390 }
3391
3392 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRoutingCounters, D>
3393 for &BorderRoutingCounters
3394 {
3395 unsafe fn encode(
3396 self,
3397 encoder: &mut fidl::encoding::Encoder<'_, D>,
3398 offset: usize,
3399 mut depth: fidl::encoding::Depth,
3400 ) -> fidl::Result<()> {
3401 encoder.debug_check_bounds::<BorderRoutingCounters>(offset);
3402 let max_ordinal: u64 = self.max_ordinal_present();
3404 encoder.write_num(max_ordinal, offset);
3405 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3406 if max_ordinal == 0 {
3408 return Ok(());
3409 }
3410 depth.increment()?;
3411 let envelope_size = 8;
3412 let bytes_len = max_ordinal as usize * envelope_size;
3413 #[allow(unused_variables)]
3414 let offset = encoder.out_of_line_offset(bytes_len);
3415 let mut _prev_end_offset: usize = 0;
3416 if 1 > max_ordinal {
3417 return Ok(());
3418 }
3419
3420 let cur_offset: usize = (1 - 1) * envelope_size;
3423
3424 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3426
3427 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3432 self.inbound_unicast_packets
3433 .as_ref()
3434 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3435 encoder,
3436 offset + cur_offset,
3437 depth,
3438 )?;
3439
3440 _prev_end_offset = cur_offset + envelope_size;
3441 if 2 > max_ordinal {
3442 return Ok(());
3443 }
3444
3445 let cur_offset: usize = (2 - 1) * envelope_size;
3448
3449 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3451
3452 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3457 self.inbound_unicast_bytes
3458 .as_ref()
3459 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3460 encoder,
3461 offset + cur_offset,
3462 depth,
3463 )?;
3464
3465 _prev_end_offset = cur_offset + envelope_size;
3466 if 3 > max_ordinal {
3467 return Ok(());
3468 }
3469
3470 let cur_offset: usize = (3 - 1) * envelope_size;
3473
3474 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3476
3477 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3482 self.inbound_multicast_packets
3483 .as_ref()
3484 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3485 encoder,
3486 offset + cur_offset,
3487 depth,
3488 )?;
3489
3490 _prev_end_offset = cur_offset + envelope_size;
3491 if 4 > max_ordinal {
3492 return Ok(());
3493 }
3494
3495 let cur_offset: usize = (4 - 1) * envelope_size;
3498
3499 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3501
3502 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3507 self.inbound_multicast_bytes
3508 .as_ref()
3509 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3510 encoder,
3511 offset + cur_offset,
3512 depth,
3513 )?;
3514
3515 _prev_end_offset = cur_offset + envelope_size;
3516 if 5 > max_ordinal {
3517 return Ok(());
3518 }
3519
3520 let cur_offset: usize = (5 - 1) * envelope_size;
3523
3524 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3526
3527 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3532 self.outbound_unicast_packets
3533 .as_ref()
3534 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3535 encoder,
3536 offset + cur_offset,
3537 depth,
3538 )?;
3539
3540 _prev_end_offset = cur_offset + envelope_size;
3541 if 6 > max_ordinal {
3542 return Ok(());
3543 }
3544
3545 let cur_offset: usize = (6 - 1) * envelope_size;
3548
3549 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3551
3552 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3557 self.outbound_unicast_bytes
3558 .as_ref()
3559 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3560 encoder,
3561 offset + cur_offset,
3562 depth,
3563 )?;
3564
3565 _prev_end_offset = cur_offset + envelope_size;
3566 if 7 > max_ordinal {
3567 return Ok(());
3568 }
3569
3570 let cur_offset: usize = (7 - 1) * envelope_size;
3573
3574 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3576
3577 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3582 self.outbound_multicast_packets
3583 .as_ref()
3584 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3585 encoder,
3586 offset + cur_offset,
3587 depth,
3588 )?;
3589
3590 _prev_end_offset = cur_offset + envelope_size;
3591 if 8 > max_ordinal {
3592 return Ok(());
3593 }
3594
3595 let cur_offset: usize = (8 - 1) * envelope_size;
3598
3599 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3601
3602 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3607 self.outbound_multicast_bytes
3608 .as_ref()
3609 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3610 encoder,
3611 offset + cur_offset,
3612 depth,
3613 )?;
3614
3615 _prev_end_offset = cur_offset + envelope_size;
3616 if 9 > max_ordinal {
3617 return Ok(());
3618 }
3619
3620 let cur_offset: usize = (9 - 1) * envelope_size;
3623
3624 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3626
3627 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3632 self.ra_rx.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3633 encoder,
3634 offset + cur_offset,
3635 depth,
3636 )?;
3637
3638 _prev_end_offset = cur_offset + envelope_size;
3639 if 10 > max_ordinal {
3640 return Ok(());
3641 }
3642
3643 let cur_offset: usize = (10 - 1) * envelope_size;
3646
3647 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3649
3650 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3655 self.ra_tx_success.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3656 encoder,
3657 offset + cur_offset,
3658 depth,
3659 )?;
3660
3661 _prev_end_offset = cur_offset + envelope_size;
3662 if 11 > max_ordinal {
3663 return Ok(());
3664 }
3665
3666 let cur_offset: usize = (11 - 1) * envelope_size;
3669
3670 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3672
3673 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3678 self.ra_tx_failure.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3679 encoder,
3680 offset + cur_offset,
3681 depth,
3682 )?;
3683
3684 _prev_end_offset = cur_offset + envelope_size;
3685 if 12 > max_ordinal {
3686 return Ok(());
3687 }
3688
3689 let cur_offset: usize = (12 - 1) * envelope_size;
3692
3693 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3695
3696 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3701 self.rs_rx.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3702 encoder,
3703 offset + cur_offset,
3704 depth,
3705 )?;
3706
3707 _prev_end_offset = cur_offset + envelope_size;
3708 if 13 > max_ordinal {
3709 return Ok(());
3710 }
3711
3712 let cur_offset: usize = (13 - 1) * envelope_size;
3715
3716 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3718
3719 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3724 self.rs_tx_success.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3725 encoder,
3726 offset + cur_offset,
3727 depth,
3728 )?;
3729
3730 _prev_end_offset = cur_offset + envelope_size;
3731 if 14 > max_ordinal {
3732 return Ok(());
3733 }
3734
3735 let cur_offset: usize = (14 - 1) * envelope_size;
3738
3739 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3741
3742 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3747 self.rs_tx_failure.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3748 encoder,
3749 offset + cur_offset,
3750 depth,
3751 )?;
3752
3753 _prev_end_offset = cur_offset + envelope_size;
3754 if 15 > max_ordinal {
3755 return Ok(());
3756 }
3757
3758 let cur_offset: usize = (15 - 1) * envelope_size;
3761
3762 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3764
3765 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3770 self.inbound_internet_packets
3771 .as_ref()
3772 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3773 encoder,
3774 offset + cur_offset,
3775 depth,
3776 )?;
3777
3778 _prev_end_offset = cur_offset + envelope_size;
3779 if 16 > max_ordinal {
3780 return Ok(());
3781 }
3782
3783 let cur_offset: usize = (16 - 1) * envelope_size;
3786
3787 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3789
3790 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3795 self.inbound_internet_bytes
3796 .as_ref()
3797 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3798 encoder,
3799 offset + cur_offset,
3800 depth,
3801 )?;
3802
3803 _prev_end_offset = cur_offset + envelope_size;
3804 if 17 > max_ordinal {
3805 return Ok(());
3806 }
3807
3808 let cur_offset: usize = (17 - 1) * envelope_size;
3811
3812 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3814
3815 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3820 self.outbound_internet_packets
3821 .as_ref()
3822 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3823 encoder,
3824 offset + cur_offset,
3825 depth,
3826 )?;
3827
3828 _prev_end_offset = cur_offset + envelope_size;
3829 if 18 > max_ordinal {
3830 return Ok(());
3831 }
3832
3833 let cur_offset: usize = (18 - 1) * envelope_size;
3836
3837 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3839
3840 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3845 self.outbound_internet_bytes
3846 .as_ref()
3847 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3848 encoder,
3849 offset + cur_offset,
3850 depth,
3851 )?;
3852
3853 _prev_end_offset = cur_offset + envelope_size;
3854
3855 Ok(())
3856 }
3857 }
3858
3859 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRoutingCounters {
3860 #[inline(always)]
3861 fn new_empty() -> Self {
3862 Self::default()
3863 }
3864
3865 unsafe fn decode(
3866 &mut self,
3867 decoder: &mut fidl::encoding::Decoder<'_, D>,
3868 offset: usize,
3869 mut depth: fidl::encoding::Depth,
3870 ) -> fidl::Result<()> {
3871 decoder.debug_check_bounds::<Self>(offset);
3872 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3873 None => return Err(fidl::Error::NotNullable),
3874 Some(len) => len,
3875 };
3876 if len == 0 {
3878 return Ok(());
3879 };
3880 depth.increment()?;
3881 let envelope_size = 8;
3882 let bytes_len = len * envelope_size;
3883 let offset = decoder.out_of_line_offset(bytes_len)?;
3884 let mut _next_ordinal_to_read = 0;
3886 let mut next_offset = offset;
3887 let end_offset = offset + bytes_len;
3888 _next_ordinal_to_read += 1;
3889 if next_offset >= end_offset {
3890 return Ok(());
3891 }
3892
3893 while _next_ordinal_to_read < 1 {
3895 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3896 _next_ordinal_to_read += 1;
3897 next_offset += envelope_size;
3898 }
3899
3900 let next_out_of_line = decoder.next_out_of_line();
3901 let handles_before = decoder.remaining_handles();
3902 if let Some((inlined, num_bytes, num_handles)) =
3903 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3904 {
3905 let member_inline_size =
3906 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3907 if inlined != (member_inline_size <= 4) {
3908 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3909 }
3910 let inner_offset;
3911 let mut inner_depth = depth.clone();
3912 if inlined {
3913 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3914 inner_offset = next_offset;
3915 } else {
3916 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3917 inner_depth.increment()?;
3918 }
3919 let val_ref =
3920 self.inbound_unicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
3921 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3922 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3923 {
3924 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3925 }
3926 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3927 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3928 }
3929 }
3930
3931 next_offset += envelope_size;
3932 _next_ordinal_to_read += 1;
3933 if next_offset >= end_offset {
3934 return Ok(());
3935 }
3936
3937 while _next_ordinal_to_read < 2 {
3939 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3940 _next_ordinal_to_read += 1;
3941 next_offset += envelope_size;
3942 }
3943
3944 let next_out_of_line = decoder.next_out_of_line();
3945 let handles_before = decoder.remaining_handles();
3946 if let Some((inlined, num_bytes, num_handles)) =
3947 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3948 {
3949 let member_inline_size =
3950 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3951 if inlined != (member_inline_size <= 4) {
3952 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3953 }
3954 let inner_offset;
3955 let mut inner_depth = depth.clone();
3956 if inlined {
3957 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3958 inner_offset = next_offset;
3959 } else {
3960 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3961 inner_depth.increment()?;
3962 }
3963 let val_ref =
3964 self.inbound_unicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
3965 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3966 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3967 {
3968 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3969 }
3970 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3971 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3972 }
3973 }
3974
3975 next_offset += envelope_size;
3976 _next_ordinal_to_read += 1;
3977 if next_offset >= end_offset {
3978 return Ok(());
3979 }
3980
3981 while _next_ordinal_to_read < 3 {
3983 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3984 _next_ordinal_to_read += 1;
3985 next_offset += envelope_size;
3986 }
3987
3988 let next_out_of_line = decoder.next_out_of_line();
3989 let handles_before = decoder.remaining_handles();
3990 if let Some((inlined, num_bytes, num_handles)) =
3991 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3992 {
3993 let member_inline_size =
3994 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3995 if inlined != (member_inline_size <= 4) {
3996 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3997 }
3998 let inner_offset;
3999 let mut inner_depth = depth.clone();
4000 if inlined {
4001 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4002 inner_offset = next_offset;
4003 } else {
4004 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4005 inner_depth.increment()?;
4006 }
4007 let val_ref =
4008 self.inbound_multicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4009 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4010 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4011 {
4012 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4013 }
4014 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4015 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4016 }
4017 }
4018
4019 next_offset += envelope_size;
4020 _next_ordinal_to_read += 1;
4021 if next_offset >= end_offset {
4022 return Ok(());
4023 }
4024
4025 while _next_ordinal_to_read < 4 {
4027 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4028 _next_ordinal_to_read += 1;
4029 next_offset += envelope_size;
4030 }
4031
4032 let next_out_of_line = decoder.next_out_of_line();
4033 let handles_before = decoder.remaining_handles();
4034 if let Some((inlined, num_bytes, num_handles)) =
4035 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4036 {
4037 let member_inline_size =
4038 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4039 if inlined != (member_inline_size <= 4) {
4040 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4041 }
4042 let inner_offset;
4043 let mut inner_depth = depth.clone();
4044 if inlined {
4045 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4046 inner_offset = next_offset;
4047 } else {
4048 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4049 inner_depth.increment()?;
4050 }
4051 let val_ref =
4052 self.inbound_multicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4053 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4054 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4055 {
4056 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4057 }
4058 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4059 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4060 }
4061 }
4062
4063 next_offset += envelope_size;
4064 _next_ordinal_to_read += 1;
4065 if next_offset >= end_offset {
4066 return Ok(());
4067 }
4068
4069 while _next_ordinal_to_read < 5 {
4071 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4072 _next_ordinal_to_read += 1;
4073 next_offset += envelope_size;
4074 }
4075
4076 let next_out_of_line = decoder.next_out_of_line();
4077 let handles_before = decoder.remaining_handles();
4078 if let Some((inlined, num_bytes, num_handles)) =
4079 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4080 {
4081 let member_inline_size =
4082 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4083 if inlined != (member_inline_size <= 4) {
4084 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4085 }
4086 let inner_offset;
4087 let mut inner_depth = depth.clone();
4088 if inlined {
4089 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4090 inner_offset = next_offset;
4091 } else {
4092 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4093 inner_depth.increment()?;
4094 }
4095 let val_ref =
4096 self.outbound_unicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4097 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4098 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4099 {
4100 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4101 }
4102 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4103 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4104 }
4105 }
4106
4107 next_offset += envelope_size;
4108 _next_ordinal_to_read += 1;
4109 if next_offset >= end_offset {
4110 return Ok(());
4111 }
4112
4113 while _next_ordinal_to_read < 6 {
4115 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4116 _next_ordinal_to_read += 1;
4117 next_offset += envelope_size;
4118 }
4119
4120 let next_out_of_line = decoder.next_out_of_line();
4121 let handles_before = decoder.remaining_handles();
4122 if let Some((inlined, num_bytes, num_handles)) =
4123 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4124 {
4125 let member_inline_size =
4126 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4127 if inlined != (member_inline_size <= 4) {
4128 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4129 }
4130 let inner_offset;
4131 let mut inner_depth = depth.clone();
4132 if inlined {
4133 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4134 inner_offset = next_offset;
4135 } else {
4136 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4137 inner_depth.increment()?;
4138 }
4139 let val_ref =
4140 self.outbound_unicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4141 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4142 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4143 {
4144 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4145 }
4146 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4147 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4148 }
4149 }
4150
4151 next_offset += envelope_size;
4152 _next_ordinal_to_read += 1;
4153 if next_offset >= end_offset {
4154 return Ok(());
4155 }
4156
4157 while _next_ordinal_to_read < 7 {
4159 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4160 _next_ordinal_to_read += 1;
4161 next_offset += envelope_size;
4162 }
4163
4164 let next_out_of_line = decoder.next_out_of_line();
4165 let handles_before = decoder.remaining_handles();
4166 if let Some((inlined, num_bytes, num_handles)) =
4167 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4168 {
4169 let member_inline_size =
4170 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4171 if inlined != (member_inline_size <= 4) {
4172 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4173 }
4174 let inner_offset;
4175 let mut inner_depth = depth.clone();
4176 if inlined {
4177 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4178 inner_offset = next_offset;
4179 } else {
4180 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4181 inner_depth.increment()?;
4182 }
4183 let val_ref =
4184 self.outbound_multicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4185 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4186 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4187 {
4188 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4189 }
4190 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4191 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4192 }
4193 }
4194
4195 next_offset += envelope_size;
4196 _next_ordinal_to_read += 1;
4197 if next_offset >= end_offset {
4198 return Ok(());
4199 }
4200
4201 while _next_ordinal_to_read < 8 {
4203 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4204 _next_ordinal_to_read += 1;
4205 next_offset += envelope_size;
4206 }
4207
4208 let next_out_of_line = decoder.next_out_of_line();
4209 let handles_before = decoder.remaining_handles();
4210 if let Some((inlined, num_bytes, num_handles)) =
4211 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4212 {
4213 let member_inline_size =
4214 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4215 if inlined != (member_inline_size <= 4) {
4216 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4217 }
4218 let inner_offset;
4219 let mut inner_depth = depth.clone();
4220 if inlined {
4221 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4222 inner_offset = next_offset;
4223 } else {
4224 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4225 inner_depth.increment()?;
4226 }
4227 let val_ref =
4228 self.outbound_multicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4229 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4230 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4231 {
4232 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4233 }
4234 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4235 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4236 }
4237 }
4238
4239 next_offset += envelope_size;
4240 _next_ordinal_to_read += 1;
4241 if next_offset >= end_offset {
4242 return Ok(());
4243 }
4244
4245 while _next_ordinal_to_read < 9 {
4247 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4248 _next_ordinal_to_read += 1;
4249 next_offset += envelope_size;
4250 }
4251
4252 let next_out_of_line = decoder.next_out_of_line();
4253 let handles_before = decoder.remaining_handles();
4254 if let Some((inlined, num_bytes, num_handles)) =
4255 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4256 {
4257 let member_inline_size =
4258 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4259 if inlined != (member_inline_size <= 4) {
4260 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4261 }
4262 let inner_offset;
4263 let mut inner_depth = depth.clone();
4264 if inlined {
4265 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4266 inner_offset = next_offset;
4267 } else {
4268 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4269 inner_depth.increment()?;
4270 }
4271 let val_ref = self.ra_rx.get_or_insert_with(|| fidl::new_empty!(u32, D));
4272 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4273 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4274 {
4275 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4276 }
4277 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4278 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4279 }
4280 }
4281
4282 next_offset += envelope_size;
4283 _next_ordinal_to_read += 1;
4284 if next_offset >= end_offset {
4285 return Ok(());
4286 }
4287
4288 while _next_ordinal_to_read < 10 {
4290 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4291 _next_ordinal_to_read += 1;
4292 next_offset += envelope_size;
4293 }
4294
4295 let next_out_of_line = decoder.next_out_of_line();
4296 let handles_before = decoder.remaining_handles();
4297 if let Some((inlined, num_bytes, num_handles)) =
4298 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4299 {
4300 let member_inline_size =
4301 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4302 if inlined != (member_inline_size <= 4) {
4303 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4304 }
4305 let inner_offset;
4306 let mut inner_depth = depth.clone();
4307 if inlined {
4308 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4309 inner_offset = next_offset;
4310 } else {
4311 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4312 inner_depth.increment()?;
4313 }
4314 let val_ref = self.ra_tx_success.get_or_insert_with(|| fidl::new_empty!(u32, D));
4315 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4316 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4317 {
4318 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4319 }
4320 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4321 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4322 }
4323 }
4324
4325 next_offset += envelope_size;
4326 _next_ordinal_to_read += 1;
4327 if next_offset >= end_offset {
4328 return Ok(());
4329 }
4330
4331 while _next_ordinal_to_read < 11 {
4333 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4334 _next_ordinal_to_read += 1;
4335 next_offset += envelope_size;
4336 }
4337
4338 let next_out_of_line = decoder.next_out_of_line();
4339 let handles_before = decoder.remaining_handles();
4340 if let Some((inlined, num_bytes, num_handles)) =
4341 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4342 {
4343 let member_inline_size =
4344 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4345 if inlined != (member_inline_size <= 4) {
4346 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4347 }
4348 let inner_offset;
4349 let mut inner_depth = depth.clone();
4350 if inlined {
4351 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4352 inner_offset = next_offset;
4353 } else {
4354 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4355 inner_depth.increment()?;
4356 }
4357 let val_ref = self.ra_tx_failure.get_or_insert_with(|| fidl::new_empty!(u32, D));
4358 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4359 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4360 {
4361 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4362 }
4363 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4364 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4365 }
4366 }
4367
4368 next_offset += envelope_size;
4369 _next_ordinal_to_read += 1;
4370 if next_offset >= end_offset {
4371 return Ok(());
4372 }
4373
4374 while _next_ordinal_to_read < 12 {
4376 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4377 _next_ordinal_to_read += 1;
4378 next_offset += envelope_size;
4379 }
4380
4381 let next_out_of_line = decoder.next_out_of_line();
4382 let handles_before = decoder.remaining_handles();
4383 if let Some((inlined, num_bytes, num_handles)) =
4384 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4385 {
4386 let member_inline_size =
4387 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4388 if inlined != (member_inline_size <= 4) {
4389 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4390 }
4391 let inner_offset;
4392 let mut inner_depth = depth.clone();
4393 if inlined {
4394 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4395 inner_offset = next_offset;
4396 } else {
4397 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4398 inner_depth.increment()?;
4399 }
4400 let val_ref = self.rs_rx.get_or_insert_with(|| fidl::new_empty!(u32, D));
4401 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4402 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4403 {
4404 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4405 }
4406 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4407 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4408 }
4409 }
4410
4411 next_offset += envelope_size;
4412 _next_ordinal_to_read += 1;
4413 if next_offset >= end_offset {
4414 return Ok(());
4415 }
4416
4417 while _next_ordinal_to_read < 13 {
4419 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4420 _next_ordinal_to_read += 1;
4421 next_offset += envelope_size;
4422 }
4423
4424 let next_out_of_line = decoder.next_out_of_line();
4425 let handles_before = decoder.remaining_handles();
4426 if let Some((inlined, num_bytes, num_handles)) =
4427 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4428 {
4429 let member_inline_size =
4430 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4431 if inlined != (member_inline_size <= 4) {
4432 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4433 }
4434 let inner_offset;
4435 let mut inner_depth = depth.clone();
4436 if inlined {
4437 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4438 inner_offset = next_offset;
4439 } else {
4440 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4441 inner_depth.increment()?;
4442 }
4443 let val_ref = self.rs_tx_success.get_or_insert_with(|| fidl::new_empty!(u32, D));
4444 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4445 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4446 {
4447 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4448 }
4449 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4450 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4451 }
4452 }
4453
4454 next_offset += envelope_size;
4455 _next_ordinal_to_read += 1;
4456 if next_offset >= end_offset {
4457 return Ok(());
4458 }
4459
4460 while _next_ordinal_to_read < 14 {
4462 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4463 _next_ordinal_to_read += 1;
4464 next_offset += envelope_size;
4465 }
4466
4467 let next_out_of_line = decoder.next_out_of_line();
4468 let handles_before = decoder.remaining_handles();
4469 if let Some((inlined, num_bytes, num_handles)) =
4470 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4471 {
4472 let member_inline_size =
4473 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4474 if inlined != (member_inline_size <= 4) {
4475 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4476 }
4477 let inner_offset;
4478 let mut inner_depth = depth.clone();
4479 if inlined {
4480 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4481 inner_offset = next_offset;
4482 } else {
4483 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4484 inner_depth.increment()?;
4485 }
4486 let val_ref = self.rs_tx_failure.get_or_insert_with(|| fidl::new_empty!(u32, D));
4487 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4488 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4489 {
4490 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4491 }
4492 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4493 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4494 }
4495 }
4496
4497 next_offset += envelope_size;
4498 _next_ordinal_to_read += 1;
4499 if next_offset >= end_offset {
4500 return Ok(());
4501 }
4502
4503 while _next_ordinal_to_read < 15 {
4505 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4506 _next_ordinal_to_read += 1;
4507 next_offset += envelope_size;
4508 }
4509
4510 let next_out_of_line = decoder.next_out_of_line();
4511 let handles_before = decoder.remaining_handles();
4512 if let Some((inlined, num_bytes, num_handles)) =
4513 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4514 {
4515 let member_inline_size =
4516 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4517 if inlined != (member_inline_size <= 4) {
4518 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4519 }
4520 let inner_offset;
4521 let mut inner_depth = depth.clone();
4522 if inlined {
4523 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4524 inner_offset = next_offset;
4525 } else {
4526 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4527 inner_depth.increment()?;
4528 }
4529 let val_ref =
4530 self.inbound_internet_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4531 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4532 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4533 {
4534 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4535 }
4536 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4537 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4538 }
4539 }
4540
4541 next_offset += envelope_size;
4542 _next_ordinal_to_read += 1;
4543 if next_offset >= end_offset {
4544 return Ok(());
4545 }
4546
4547 while _next_ordinal_to_read < 16 {
4549 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4550 _next_ordinal_to_read += 1;
4551 next_offset += envelope_size;
4552 }
4553
4554 let next_out_of_line = decoder.next_out_of_line();
4555 let handles_before = decoder.remaining_handles();
4556 if let Some((inlined, num_bytes, num_handles)) =
4557 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4558 {
4559 let member_inline_size =
4560 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4561 if inlined != (member_inline_size <= 4) {
4562 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4563 }
4564 let inner_offset;
4565 let mut inner_depth = depth.clone();
4566 if inlined {
4567 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4568 inner_offset = next_offset;
4569 } else {
4570 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4571 inner_depth.increment()?;
4572 }
4573 let val_ref =
4574 self.inbound_internet_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4575 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4576 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4577 {
4578 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4579 }
4580 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4581 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4582 }
4583 }
4584
4585 next_offset += envelope_size;
4586 _next_ordinal_to_read += 1;
4587 if next_offset >= end_offset {
4588 return Ok(());
4589 }
4590
4591 while _next_ordinal_to_read < 17 {
4593 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4594 _next_ordinal_to_read += 1;
4595 next_offset += envelope_size;
4596 }
4597
4598 let next_out_of_line = decoder.next_out_of_line();
4599 let handles_before = decoder.remaining_handles();
4600 if let Some((inlined, num_bytes, num_handles)) =
4601 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4602 {
4603 let member_inline_size =
4604 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4605 if inlined != (member_inline_size <= 4) {
4606 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4607 }
4608 let inner_offset;
4609 let mut inner_depth = depth.clone();
4610 if inlined {
4611 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4612 inner_offset = next_offset;
4613 } else {
4614 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4615 inner_depth.increment()?;
4616 }
4617 let val_ref =
4618 self.outbound_internet_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4619 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4620 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4621 {
4622 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4623 }
4624 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4625 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4626 }
4627 }
4628
4629 next_offset += envelope_size;
4630 _next_ordinal_to_read += 1;
4631 if next_offset >= end_offset {
4632 return Ok(());
4633 }
4634
4635 while _next_ordinal_to_read < 18 {
4637 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4638 _next_ordinal_to_read += 1;
4639 next_offset += envelope_size;
4640 }
4641
4642 let next_out_of_line = decoder.next_out_of_line();
4643 let handles_before = decoder.remaining_handles();
4644 if let Some((inlined, num_bytes, num_handles)) =
4645 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4646 {
4647 let member_inline_size =
4648 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4649 if inlined != (member_inline_size <= 4) {
4650 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4651 }
4652 let inner_offset;
4653 let mut inner_depth = depth.clone();
4654 if inlined {
4655 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4656 inner_offset = next_offset;
4657 } else {
4658 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4659 inner_depth.increment()?;
4660 }
4661 let val_ref =
4662 self.outbound_internet_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4663 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4664 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4665 {
4666 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4667 }
4668 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4669 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4670 }
4671 }
4672
4673 next_offset += envelope_size;
4674
4675 while next_offset < end_offset {
4677 _next_ordinal_to_read += 1;
4678 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4679 next_offset += envelope_size;
4680 }
4681
4682 Ok(())
4683 }
4684 }
4685
4686 impl BorderRoutingNat64State {
4687 #[inline(always)]
4688 fn max_ordinal_present(&self) -> u64 {
4689 if let Some(_) = self.translator_state {
4690 return 2;
4691 }
4692 if let Some(_) = self.prefix_manager_state {
4693 return 1;
4694 }
4695 0
4696 }
4697 }
4698
4699 impl fidl::encoding::ValueTypeMarker for BorderRoutingNat64State {
4700 type Borrowed<'a> = &'a Self;
4701 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4702 value
4703 }
4704 }
4705
4706 unsafe impl fidl::encoding::TypeMarker for BorderRoutingNat64State {
4707 type Owned = Self;
4708
4709 #[inline(always)]
4710 fn inline_align(_context: fidl::encoding::Context) -> usize {
4711 8
4712 }
4713
4714 #[inline(always)]
4715 fn inline_size(_context: fidl::encoding::Context) -> usize {
4716 16
4717 }
4718 }
4719
4720 unsafe impl<D: fidl::encoding::ResourceDialect>
4721 fidl::encoding::Encode<BorderRoutingNat64State, D> for &BorderRoutingNat64State
4722 {
4723 unsafe fn encode(
4724 self,
4725 encoder: &mut fidl::encoding::Encoder<'_, D>,
4726 offset: usize,
4727 mut depth: fidl::encoding::Depth,
4728 ) -> fidl::Result<()> {
4729 encoder.debug_check_bounds::<BorderRoutingNat64State>(offset);
4730 let max_ordinal: u64 = self.max_ordinal_present();
4732 encoder.write_num(max_ordinal, offset);
4733 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4734 if max_ordinal == 0 {
4736 return Ok(());
4737 }
4738 depth.increment()?;
4739 let envelope_size = 8;
4740 let bytes_len = max_ordinal as usize * envelope_size;
4741 #[allow(unused_variables)]
4742 let offset = encoder.out_of_line_offset(bytes_len);
4743 let mut _prev_end_offset: usize = 0;
4744 if 1 > max_ordinal {
4745 return Ok(());
4746 }
4747
4748 let cur_offset: usize = (1 - 1) * envelope_size;
4751
4752 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4754
4755 fidl::encoding::encode_in_envelope_optional::<Nat64State, D>(
4760 self.prefix_manager_state
4761 .as_ref()
4762 .map(<Nat64State as fidl::encoding::ValueTypeMarker>::borrow),
4763 encoder,
4764 offset + cur_offset,
4765 depth,
4766 )?;
4767
4768 _prev_end_offset = cur_offset + envelope_size;
4769 if 2 > max_ordinal {
4770 return Ok(());
4771 }
4772
4773 let cur_offset: usize = (2 - 1) * envelope_size;
4776
4777 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4779
4780 fidl::encoding::encode_in_envelope_optional::<Nat64State, D>(
4785 self.translator_state
4786 .as_ref()
4787 .map(<Nat64State as fidl::encoding::ValueTypeMarker>::borrow),
4788 encoder,
4789 offset + cur_offset,
4790 depth,
4791 )?;
4792
4793 _prev_end_offset = cur_offset + envelope_size;
4794
4795 Ok(())
4796 }
4797 }
4798
4799 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4800 for BorderRoutingNat64State
4801 {
4802 #[inline(always)]
4803 fn new_empty() -> Self {
4804 Self::default()
4805 }
4806
4807 unsafe fn decode(
4808 &mut self,
4809 decoder: &mut fidl::encoding::Decoder<'_, D>,
4810 offset: usize,
4811 mut depth: fidl::encoding::Depth,
4812 ) -> fidl::Result<()> {
4813 decoder.debug_check_bounds::<Self>(offset);
4814 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4815 None => return Err(fidl::Error::NotNullable),
4816 Some(len) => len,
4817 };
4818 if len == 0 {
4820 return Ok(());
4821 };
4822 depth.increment()?;
4823 let envelope_size = 8;
4824 let bytes_len = len * envelope_size;
4825 let offset = decoder.out_of_line_offset(bytes_len)?;
4826 let mut _next_ordinal_to_read = 0;
4828 let mut next_offset = offset;
4829 let end_offset = offset + bytes_len;
4830 _next_ordinal_to_read += 1;
4831 if next_offset >= end_offset {
4832 return Ok(());
4833 }
4834
4835 while _next_ordinal_to_read < 1 {
4837 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4838 _next_ordinal_to_read += 1;
4839 next_offset += envelope_size;
4840 }
4841
4842 let next_out_of_line = decoder.next_out_of_line();
4843 let handles_before = decoder.remaining_handles();
4844 if let Some((inlined, num_bytes, num_handles)) =
4845 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4846 {
4847 let member_inline_size =
4848 <Nat64State as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4849 if inlined != (member_inline_size <= 4) {
4850 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4851 }
4852 let inner_offset;
4853 let mut inner_depth = depth.clone();
4854 if inlined {
4855 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4856 inner_offset = next_offset;
4857 } else {
4858 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4859 inner_depth.increment()?;
4860 }
4861 let val_ref = self
4862 .prefix_manager_state
4863 .get_or_insert_with(|| fidl::new_empty!(Nat64State, D));
4864 fidl::decode!(Nat64State, D, val_ref, decoder, inner_offset, inner_depth)?;
4865 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4866 {
4867 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4868 }
4869 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4870 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4871 }
4872 }
4873
4874 next_offset += envelope_size;
4875 _next_ordinal_to_read += 1;
4876 if next_offset >= end_offset {
4877 return Ok(());
4878 }
4879
4880 while _next_ordinal_to_read < 2 {
4882 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4883 _next_ordinal_to_read += 1;
4884 next_offset += envelope_size;
4885 }
4886
4887 let next_out_of_line = decoder.next_out_of_line();
4888 let handles_before = decoder.remaining_handles();
4889 if let Some((inlined, num_bytes, num_handles)) =
4890 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4891 {
4892 let member_inline_size =
4893 <Nat64State as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4894 if inlined != (member_inline_size <= 4) {
4895 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4896 }
4897 let inner_offset;
4898 let mut inner_depth = depth.clone();
4899 if inlined {
4900 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4901 inner_offset = next_offset;
4902 } else {
4903 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4904 inner_depth.increment()?;
4905 }
4906 let val_ref =
4907 self.translator_state.get_or_insert_with(|| fidl::new_empty!(Nat64State, D));
4908 fidl::decode!(Nat64State, D, val_ref, decoder, inner_offset, inner_depth)?;
4909 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4910 {
4911 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4912 }
4913 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4914 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4915 }
4916 }
4917
4918 next_offset += envelope_size;
4919
4920 while next_offset < end_offset {
4922 _next_ordinal_to_read += 1;
4923 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4924 next_offset += envelope_size;
4925 }
4926
4927 Ok(())
4928 }
4929 }
4930
4931 impl ChannelInfo {
4932 #[inline(always)]
4933 fn max_ordinal_present(&self) -> u64 {
4934 if let Some(_) = self.masked_by_regulatory_domain {
4935 return 6;
4936 }
4937 if let Some(_) = self.spectrum_bandwidth_hz {
4938 return 5;
4939 }
4940 if let Some(_) = self.spectrum_center_frequency_hz {
4941 return 4;
4942 }
4943 if let Some(_) = self.max_transmit_power_dbm {
4944 return 3;
4945 }
4946 if let Some(_) = self.id {
4947 return 2;
4948 }
4949 if let Some(_) = self.index {
4950 return 1;
4951 }
4952 0
4953 }
4954 }
4955
4956 impl fidl::encoding::ValueTypeMarker for ChannelInfo {
4957 type Borrowed<'a> = &'a Self;
4958 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4959 value
4960 }
4961 }
4962
4963 unsafe impl fidl::encoding::TypeMarker for ChannelInfo {
4964 type Owned = Self;
4965
4966 #[inline(always)]
4967 fn inline_align(_context: fidl::encoding::Context) -> usize {
4968 8
4969 }
4970
4971 #[inline(always)]
4972 fn inline_size(_context: fidl::encoding::Context) -> usize {
4973 16
4974 }
4975 }
4976
4977 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChannelInfo, D>
4978 for &ChannelInfo
4979 {
4980 unsafe fn encode(
4981 self,
4982 encoder: &mut fidl::encoding::Encoder<'_, D>,
4983 offset: usize,
4984 mut depth: fidl::encoding::Depth,
4985 ) -> fidl::Result<()> {
4986 encoder.debug_check_bounds::<ChannelInfo>(offset);
4987 let max_ordinal: u64 = self.max_ordinal_present();
4989 encoder.write_num(max_ordinal, offset);
4990 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4991 if max_ordinal == 0 {
4993 return Ok(());
4994 }
4995 depth.increment()?;
4996 let envelope_size = 8;
4997 let bytes_len = max_ordinal as usize * envelope_size;
4998 #[allow(unused_variables)]
4999 let offset = encoder.out_of_line_offset(bytes_len);
5000 let mut _prev_end_offset: usize = 0;
5001 if 1 > max_ordinal {
5002 return Ok(());
5003 }
5004
5005 let cur_offset: usize = (1 - 1) * envelope_size;
5008
5009 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5011
5012 fidl::encoding::encode_in_envelope_optional::<u16, D>(
5017 self.index.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5018 encoder,
5019 offset + cur_offset,
5020 depth,
5021 )?;
5022
5023 _prev_end_offset = cur_offset + envelope_size;
5024 if 2 > max_ordinal {
5025 return Ok(());
5026 }
5027
5028 let cur_offset: usize = (2 - 1) * envelope_size;
5031
5032 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5034
5035 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<16>, D>(
5040 self.id.as_ref().map(
5041 <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow,
5042 ),
5043 encoder,
5044 offset + cur_offset,
5045 depth,
5046 )?;
5047
5048 _prev_end_offset = cur_offset + envelope_size;
5049 if 3 > max_ordinal {
5050 return Ok(());
5051 }
5052
5053 let cur_offset: usize = (3 - 1) * envelope_size;
5056
5057 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5059
5060 fidl::encoding::encode_in_envelope_optional::<i8, D>(
5065 self.max_transmit_power_dbm
5066 .as_ref()
5067 .map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
5068 encoder,
5069 offset + cur_offset,
5070 depth,
5071 )?;
5072
5073 _prev_end_offset = cur_offset + envelope_size;
5074 if 4 > max_ordinal {
5075 return Ok(());
5076 }
5077
5078 let cur_offset: usize = (4 - 1) * envelope_size;
5081
5082 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5084
5085 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5090 self.spectrum_center_frequency_hz
5091 .as_ref()
5092 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5093 encoder,
5094 offset + cur_offset,
5095 depth,
5096 )?;
5097
5098 _prev_end_offset = cur_offset + envelope_size;
5099 if 5 > max_ordinal {
5100 return Ok(());
5101 }
5102
5103 let cur_offset: usize = (5 - 1) * envelope_size;
5106
5107 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5109
5110 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5115 self.spectrum_bandwidth_hz
5116 .as_ref()
5117 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5118 encoder,
5119 offset + cur_offset,
5120 depth,
5121 )?;
5122
5123 _prev_end_offset = cur_offset + envelope_size;
5124 if 6 > max_ordinal {
5125 return Ok(());
5126 }
5127
5128 let cur_offset: usize = (6 - 1) * envelope_size;
5131
5132 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5134
5135 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5140 self.masked_by_regulatory_domain
5141 .as_ref()
5142 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5143 encoder,
5144 offset + cur_offset,
5145 depth,
5146 )?;
5147
5148 _prev_end_offset = cur_offset + envelope_size;
5149
5150 Ok(())
5151 }
5152 }
5153
5154 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChannelInfo {
5155 #[inline(always)]
5156 fn new_empty() -> Self {
5157 Self::default()
5158 }
5159
5160 unsafe fn decode(
5161 &mut self,
5162 decoder: &mut fidl::encoding::Decoder<'_, D>,
5163 offset: usize,
5164 mut depth: fidl::encoding::Depth,
5165 ) -> fidl::Result<()> {
5166 decoder.debug_check_bounds::<Self>(offset);
5167 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5168 None => return Err(fidl::Error::NotNullable),
5169 Some(len) => len,
5170 };
5171 if len == 0 {
5173 return Ok(());
5174 };
5175 depth.increment()?;
5176 let envelope_size = 8;
5177 let bytes_len = len * envelope_size;
5178 let offset = decoder.out_of_line_offset(bytes_len)?;
5179 let mut _next_ordinal_to_read = 0;
5181 let mut next_offset = offset;
5182 let end_offset = offset + bytes_len;
5183 _next_ordinal_to_read += 1;
5184 if next_offset >= end_offset {
5185 return Ok(());
5186 }
5187
5188 while _next_ordinal_to_read < 1 {
5190 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5191 _next_ordinal_to_read += 1;
5192 next_offset += envelope_size;
5193 }
5194
5195 let next_out_of_line = decoder.next_out_of_line();
5196 let handles_before = decoder.remaining_handles();
5197 if let Some((inlined, num_bytes, num_handles)) =
5198 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5199 {
5200 let member_inline_size =
5201 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5202 if inlined != (member_inline_size <= 4) {
5203 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5204 }
5205 let inner_offset;
5206 let mut inner_depth = depth.clone();
5207 if inlined {
5208 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5209 inner_offset = next_offset;
5210 } else {
5211 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5212 inner_depth.increment()?;
5213 }
5214 let val_ref = self.index.get_or_insert_with(|| fidl::new_empty!(u16, D));
5215 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5216 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5217 {
5218 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5219 }
5220 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5221 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5222 }
5223 }
5224
5225 next_offset += envelope_size;
5226 _next_ordinal_to_read += 1;
5227 if next_offset >= end_offset {
5228 return Ok(());
5229 }
5230
5231 while _next_ordinal_to_read < 2 {
5233 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5234 _next_ordinal_to_read += 1;
5235 next_offset += envelope_size;
5236 }
5237
5238 let next_out_of_line = decoder.next_out_of_line();
5239 let handles_before = decoder.remaining_handles();
5240 if let Some((inlined, num_bytes, num_handles)) =
5241 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5242 {
5243 let member_inline_size =
5244 <fidl::encoding::BoundedString<16> as fidl::encoding::TypeMarker>::inline_size(
5245 decoder.context,
5246 );
5247 if inlined != (member_inline_size <= 4) {
5248 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5249 }
5250 let inner_offset;
5251 let mut inner_depth = depth.clone();
5252 if inlined {
5253 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5254 inner_offset = next_offset;
5255 } else {
5256 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5257 inner_depth.increment()?;
5258 }
5259 let val_ref = self
5260 .id
5261 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<16>, D));
5262 fidl::decode!(
5263 fidl::encoding::BoundedString<16>,
5264 D,
5265 val_ref,
5266 decoder,
5267 inner_offset,
5268 inner_depth
5269 )?;
5270 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5271 {
5272 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5273 }
5274 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5275 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5276 }
5277 }
5278
5279 next_offset += envelope_size;
5280 _next_ordinal_to_read += 1;
5281 if next_offset >= end_offset {
5282 return Ok(());
5283 }
5284
5285 while _next_ordinal_to_read < 3 {
5287 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5288 _next_ordinal_to_read += 1;
5289 next_offset += envelope_size;
5290 }
5291
5292 let next_out_of_line = decoder.next_out_of_line();
5293 let handles_before = decoder.remaining_handles();
5294 if let Some((inlined, num_bytes, num_handles)) =
5295 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5296 {
5297 let member_inline_size =
5298 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5299 if inlined != (member_inline_size <= 4) {
5300 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5301 }
5302 let inner_offset;
5303 let mut inner_depth = depth.clone();
5304 if inlined {
5305 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5306 inner_offset = next_offset;
5307 } else {
5308 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5309 inner_depth.increment()?;
5310 }
5311 let val_ref =
5312 self.max_transmit_power_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
5313 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
5314 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5315 {
5316 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5317 }
5318 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5319 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5320 }
5321 }
5322
5323 next_offset += envelope_size;
5324 _next_ordinal_to_read += 1;
5325 if next_offset >= end_offset {
5326 return Ok(());
5327 }
5328
5329 while _next_ordinal_to_read < 4 {
5331 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5332 _next_ordinal_to_read += 1;
5333 next_offset += envelope_size;
5334 }
5335
5336 let next_out_of_line = decoder.next_out_of_line();
5337 let handles_before = decoder.remaining_handles();
5338 if let Some((inlined, num_bytes, num_handles)) =
5339 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5340 {
5341 let member_inline_size =
5342 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5343 if inlined != (member_inline_size <= 4) {
5344 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5345 }
5346 let inner_offset;
5347 let mut inner_depth = depth.clone();
5348 if inlined {
5349 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5350 inner_offset = next_offset;
5351 } else {
5352 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5353 inner_depth.increment()?;
5354 }
5355 let val_ref = self
5356 .spectrum_center_frequency_hz
5357 .get_or_insert_with(|| fidl::new_empty!(u64, D));
5358 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5359 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5360 {
5361 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5362 }
5363 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5364 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5365 }
5366 }
5367
5368 next_offset += envelope_size;
5369 _next_ordinal_to_read += 1;
5370 if next_offset >= end_offset {
5371 return Ok(());
5372 }
5373
5374 while _next_ordinal_to_read < 5 {
5376 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5377 _next_ordinal_to_read += 1;
5378 next_offset += envelope_size;
5379 }
5380
5381 let next_out_of_line = decoder.next_out_of_line();
5382 let handles_before = decoder.remaining_handles();
5383 if let Some((inlined, num_bytes, num_handles)) =
5384 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5385 {
5386 let member_inline_size =
5387 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5388 if inlined != (member_inline_size <= 4) {
5389 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5390 }
5391 let inner_offset;
5392 let mut inner_depth = depth.clone();
5393 if inlined {
5394 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5395 inner_offset = next_offset;
5396 } else {
5397 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5398 inner_depth.increment()?;
5399 }
5400 let val_ref =
5401 self.spectrum_bandwidth_hz.get_or_insert_with(|| fidl::new_empty!(u64, D));
5402 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5403 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5404 {
5405 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5406 }
5407 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5408 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5409 }
5410 }
5411
5412 next_offset += envelope_size;
5413 _next_ordinal_to_read += 1;
5414 if next_offset >= end_offset {
5415 return Ok(());
5416 }
5417
5418 while _next_ordinal_to_read < 6 {
5420 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5421 _next_ordinal_to_read += 1;
5422 next_offset += envelope_size;
5423 }
5424
5425 let next_out_of_line = decoder.next_out_of_line();
5426 let handles_before = decoder.remaining_handles();
5427 if let Some((inlined, num_bytes, num_handles)) =
5428 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5429 {
5430 let member_inline_size =
5431 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5432 if inlined != (member_inline_size <= 4) {
5433 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5434 }
5435 let inner_offset;
5436 let mut inner_depth = depth.clone();
5437 if inlined {
5438 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5439 inner_offset = next_offset;
5440 } else {
5441 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5442 inner_depth.increment()?;
5443 }
5444 let val_ref = self
5445 .masked_by_regulatory_domain
5446 .get_or_insert_with(|| fidl::new_empty!(bool, D));
5447 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5448 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5449 {
5450 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5451 }
5452 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5453 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5454 }
5455 }
5456
5457 next_offset += envelope_size;
5458
5459 while next_offset < end_offset {
5461 _next_ordinal_to_read += 1;
5462 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5463 next_offset += envelope_size;
5464 }
5465
5466 Ok(())
5467 }
5468 }
5469
5470 impl Dhcp6PdInfo {
5471 #[inline(always)]
5472 fn max_ordinal_present(&self) -> u64 {
5473 if let Some(_) = self.hashed_pd_prefix {
5474 return 3;
5475 }
5476 if let Some(_) = self.pd_processed_ra_info {
5477 return 2;
5478 }
5479 if let Some(_) = self.dhcp6pd_state {
5480 return 1;
5481 }
5482 0
5483 }
5484 }
5485
5486 impl fidl::encoding::ValueTypeMarker for Dhcp6PdInfo {
5487 type Borrowed<'a> = &'a Self;
5488 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5489 value
5490 }
5491 }
5492
5493 unsafe impl fidl::encoding::TypeMarker for Dhcp6PdInfo {
5494 type Owned = Self;
5495
5496 #[inline(always)]
5497 fn inline_align(_context: fidl::encoding::Context) -> usize {
5498 8
5499 }
5500
5501 #[inline(always)]
5502 fn inline_size(_context: fidl::encoding::Context) -> usize {
5503 16
5504 }
5505 }
5506
5507 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Dhcp6PdInfo, D>
5508 for &Dhcp6PdInfo
5509 {
5510 unsafe fn encode(
5511 self,
5512 encoder: &mut fidl::encoding::Encoder<'_, D>,
5513 offset: usize,
5514 mut depth: fidl::encoding::Depth,
5515 ) -> fidl::Result<()> {
5516 encoder.debug_check_bounds::<Dhcp6PdInfo>(offset);
5517 let max_ordinal: u64 = self.max_ordinal_present();
5519 encoder.write_num(max_ordinal, offset);
5520 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5521 if max_ordinal == 0 {
5523 return Ok(());
5524 }
5525 depth.increment()?;
5526 let envelope_size = 8;
5527 let bytes_len = max_ordinal as usize * envelope_size;
5528 #[allow(unused_variables)]
5529 let offset = encoder.out_of_line_offset(bytes_len);
5530 let mut _prev_end_offset: usize = 0;
5531 if 1 > max_ordinal {
5532 return Ok(());
5533 }
5534
5535 let cur_offset: usize = (1 - 1) * envelope_size;
5538
5539 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5541
5542 fidl::encoding::encode_in_envelope_optional::<Dhcp6PdState, D>(
5547 self.dhcp6pd_state
5548 .as_ref()
5549 .map(<Dhcp6PdState as fidl::encoding::ValueTypeMarker>::borrow),
5550 encoder,
5551 offset + cur_offset,
5552 depth,
5553 )?;
5554
5555 _prev_end_offset = cur_offset + envelope_size;
5556 if 2 > max_ordinal {
5557 return Ok(());
5558 }
5559
5560 let cur_offset: usize = (2 - 1) * envelope_size;
5563
5564 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5566
5567 fidl::encoding::encode_in_envelope_optional::<PdProcessedRaInfo, D>(
5572 self.pd_processed_ra_info
5573 .as_ref()
5574 .map(<PdProcessedRaInfo as fidl::encoding::ValueTypeMarker>::borrow),
5575 encoder,
5576 offset + cur_offset,
5577 depth,
5578 )?;
5579
5580 _prev_end_offset = cur_offset + envelope_size;
5581 if 3 > max_ordinal {
5582 return Ok(());
5583 }
5584
5585 let cur_offset: usize = (3 - 1) * envelope_size;
5588
5589 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5591
5592 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
5597 self.hashed_pd_prefix.as_ref().map(
5598 <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
5599 ),
5600 encoder,
5601 offset + cur_offset,
5602 depth,
5603 )?;
5604
5605 _prev_end_offset = cur_offset + envelope_size;
5606
5607 Ok(())
5608 }
5609 }
5610
5611 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dhcp6PdInfo {
5612 #[inline(always)]
5613 fn new_empty() -> Self {
5614 Self::default()
5615 }
5616
5617 unsafe fn decode(
5618 &mut self,
5619 decoder: &mut fidl::encoding::Decoder<'_, D>,
5620 offset: usize,
5621 mut depth: fidl::encoding::Depth,
5622 ) -> fidl::Result<()> {
5623 decoder.debug_check_bounds::<Self>(offset);
5624 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5625 None => return Err(fidl::Error::NotNullable),
5626 Some(len) => len,
5627 };
5628 if len == 0 {
5630 return Ok(());
5631 };
5632 depth.increment()?;
5633 let envelope_size = 8;
5634 let bytes_len = len * envelope_size;
5635 let offset = decoder.out_of_line_offset(bytes_len)?;
5636 let mut _next_ordinal_to_read = 0;
5638 let mut next_offset = offset;
5639 let end_offset = offset + bytes_len;
5640 _next_ordinal_to_read += 1;
5641 if next_offset >= end_offset {
5642 return Ok(());
5643 }
5644
5645 while _next_ordinal_to_read < 1 {
5647 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5648 _next_ordinal_to_read += 1;
5649 next_offset += envelope_size;
5650 }
5651
5652 let next_out_of_line = decoder.next_out_of_line();
5653 let handles_before = decoder.remaining_handles();
5654 if let Some((inlined, num_bytes, num_handles)) =
5655 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5656 {
5657 let member_inline_size =
5658 <Dhcp6PdState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5659 if inlined != (member_inline_size <= 4) {
5660 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5661 }
5662 let inner_offset;
5663 let mut inner_depth = depth.clone();
5664 if inlined {
5665 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5666 inner_offset = next_offset;
5667 } else {
5668 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5669 inner_depth.increment()?;
5670 }
5671 let val_ref =
5672 self.dhcp6pd_state.get_or_insert_with(|| fidl::new_empty!(Dhcp6PdState, D));
5673 fidl::decode!(Dhcp6PdState, D, val_ref, decoder, inner_offset, inner_depth)?;
5674 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5675 {
5676 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5677 }
5678 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5679 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5680 }
5681 }
5682
5683 next_offset += envelope_size;
5684 _next_ordinal_to_read += 1;
5685 if next_offset >= end_offset {
5686 return Ok(());
5687 }
5688
5689 while _next_ordinal_to_read < 2 {
5691 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5692 _next_ordinal_to_read += 1;
5693 next_offset += envelope_size;
5694 }
5695
5696 let next_out_of_line = decoder.next_out_of_line();
5697 let handles_before = decoder.remaining_handles();
5698 if let Some((inlined, num_bytes, num_handles)) =
5699 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5700 {
5701 let member_inline_size =
5702 <PdProcessedRaInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5703 if inlined != (member_inline_size <= 4) {
5704 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5705 }
5706 let inner_offset;
5707 let mut inner_depth = depth.clone();
5708 if inlined {
5709 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5710 inner_offset = next_offset;
5711 } else {
5712 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5713 inner_depth.increment()?;
5714 }
5715 let val_ref = self
5716 .pd_processed_ra_info
5717 .get_or_insert_with(|| fidl::new_empty!(PdProcessedRaInfo, D));
5718 fidl::decode!(PdProcessedRaInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
5719 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5720 {
5721 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5722 }
5723 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5724 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5725 }
5726 }
5727
5728 next_offset += envelope_size;
5729 _next_ordinal_to_read += 1;
5730 if next_offset >= end_offset {
5731 return Ok(());
5732 }
5733
5734 while _next_ordinal_to_read < 3 {
5736 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5737 _next_ordinal_to_read += 1;
5738 next_offset += envelope_size;
5739 }
5740
5741 let next_out_of_line = decoder.next_out_of_line();
5742 let handles_before = decoder.remaining_handles();
5743 if let Some((inlined, num_bytes, num_handles)) =
5744 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5745 {
5746 let member_inline_size =
5747 <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
5748 decoder.context,
5749 );
5750 if inlined != (member_inline_size <= 4) {
5751 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5752 }
5753 let inner_offset;
5754 let mut inner_depth = depth.clone();
5755 if inlined {
5756 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5757 inner_offset = next_offset;
5758 } else {
5759 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5760 inner_depth.increment()?;
5761 }
5762 let val_ref = self
5763 .hashed_pd_prefix
5764 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
5765 fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
5766 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5767 {
5768 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5769 }
5770 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5771 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5772 }
5773 }
5774
5775 next_offset += envelope_size;
5776
5777 while next_offset < end_offset {
5779 _next_ordinal_to_read += 1;
5780 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5781 next_offset += envelope_size;
5782 }
5783
5784 Ok(())
5785 }
5786 }
5787
5788 impl DnssdCounters {
5789 #[inline(always)]
5790 fn max_ordinal_present(&self) -> u64 {
5791 if let Some(_) = self.upstream_dns_counters {
5792 return 8;
5793 }
5794 if let Some(_) = self.resolved_by_srp {
5795 return 7;
5796 }
5797 if let Some(_) = self.other_response {
5798 return 6;
5799 }
5800 if let Some(_) = self.not_implemented_response {
5801 return 5;
5802 }
5803 if let Some(_) = self.name_error_response {
5804 return 4;
5805 }
5806 if let Some(_) = self.format_error_response {
5807 return 3;
5808 }
5809 if let Some(_) = self.server_failure_response {
5810 return 2;
5811 }
5812 if let Some(_) = self.success_response {
5813 return 1;
5814 }
5815 0
5816 }
5817 }
5818
5819 impl fidl::encoding::ValueTypeMarker for DnssdCounters {
5820 type Borrowed<'a> = &'a Self;
5821 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5822 value
5823 }
5824 }
5825
5826 unsafe impl fidl::encoding::TypeMarker for DnssdCounters {
5827 type Owned = Self;
5828
5829 #[inline(always)]
5830 fn inline_align(_context: fidl::encoding::Context) -> usize {
5831 8
5832 }
5833
5834 #[inline(always)]
5835 fn inline_size(_context: fidl::encoding::Context) -> usize {
5836 16
5837 }
5838 }
5839
5840 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DnssdCounters, D>
5841 for &DnssdCounters
5842 {
5843 unsafe fn encode(
5844 self,
5845 encoder: &mut fidl::encoding::Encoder<'_, D>,
5846 offset: usize,
5847 mut depth: fidl::encoding::Depth,
5848 ) -> fidl::Result<()> {
5849 encoder.debug_check_bounds::<DnssdCounters>(offset);
5850 let max_ordinal: u64 = self.max_ordinal_present();
5852 encoder.write_num(max_ordinal, offset);
5853 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5854 if max_ordinal == 0 {
5856 return Ok(());
5857 }
5858 depth.increment()?;
5859 let envelope_size = 8;
5860 let bytes_len = max_ordinal as usize * envelope_size;
5861 #[allow(unused_variables)]
5862 let offset = encoder.out_of_line_offset(bytes_len);
5863 let mut _prev_end_offset: usize = 0;
5864 if 1 > max_ordinal {
5865 return Ok(());
5866 }
5867
5868 let cur_offset: usize = (1 - 1) * envelope_size;
5871
5872 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5874
5875 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5880 self.success_response
5881 .as_ref()
5882 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5883 encoder,
5884 offset + cur_offset,
5885 depth,
5886 )?;
5887
5888 _prev_end_offset = cur_offset + envelope_size;
5889 if 2 > max_ordinal {
5890 return Ok(());
5891 }
5892
5893 let cur_offset: usize = (2 - 1) * envelope_size;
5896
5897 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5899
5900 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5905 self.server_failure_response
5906 .as_ref()
5907 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5908 encoder,
5909 offset + cur_offset,
5910 depth,
5911 )?;
5912
5913 _prev_end_offset = cur_offset + envelope_size;
5914 if 3 > max_ordinal {
5915 return Ok(());
5916 }
5917
5918 let cur_offset: usize = (3 - 1) * envelope_size;
5921
5922 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5924
5925 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5930 self.format_error_response
5931 .as_ref()
5932 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5933 encoder,
5934 offset + cur_offset,
5935 depth,
5936 )?;
5937
5938 _prev_end_offset = cur_offset + envelope_size;
5939 if 4 > max_ordinal {
5940 return Ok(());
5941 }
5942
5943 let cur_offset: usize = (4 - 1) * envelope_size;
5946
5947 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5949
5950 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5955 self.name_error_response
5956 .as_ref()
5957 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5958 encoder,
5959 offset + cur_offset,
5960 depth,
5961 )?;
5962
5963 _prev_end_offset = cur_offset + envelope_size;
5964 if 5 > max_ordinal {
5965 return Ok(());
5966 }
5967
5968 let cur_offset: usize = (5 - 1) * envelope_size;
5971
5972 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5974
5975 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5980 self.not_implemented_response
5981 .as_ref()
5982 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5983 encoder,
5984 offset + cur_offset,
5985 depth,
5986 )?;
5987
5988 _prev_end_offset = cur_offset + envelope_size;
5989 if 6 > max_ordinal {
5990 return Ok(());
5991 }
5992
5993 let cur_offset: usize = (6 - 1) * envelope_size;
5996
5997 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5999
6000 fidl::encoding::encode_in_envelope_optional::<u32, D>(
6005 self.other_response.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6006 encoder,
6007 offset + cur_offset,
6008 depth,
6009 )?;
6010
6011 _prev_end_offset = cur_offset + envelope_size;
6012 if 7 > max_ordinal {
6013 return Ok(());
6014 }
6015
6016 let cur_offset: usize = (7 - 1) * envelope_size;
6019
6020 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6022
6023 fidl::encoding::encode_in_envelope_optional::<u32, D>(
6028 self.resolved_by_srp.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6029 encoder,
6030 offset + cur_offset,
6031 depth,
6032 )?;
6033
6034 _prev_end_offset = cur_offset + envelope_size;
6035 if 8 > max_ordinal {
6036 return Ok(());
6037 }
6038
6039 let cur_offset: usize = (8 - 1) * envelope_size;
6042
6043 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6045
6046 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsCounters, D>(
6051 self.upstream_dns_counters
6052 .as_ref()
6053 .map(<UpstreamDnsCounters as fidl::encoding::ValueTypeMarker>::borrow),
6054 encoder,
6055 offset + cur_offset,
6056 depth,
6057 )?;
6058
6059 _prev_end_offset = cur_offset + envelope_size;
6060
6061 Ok(())
6062 }
6063 }
6064
6065 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DnssdCounters {
6066 #[inline(always)]
6067 fn new_empty() -> Self {
6068 Self::default()
6069 }
6070
6071 unsafe fn decode(
6072 &mut self,
6073 decoder: &mut fidl::encoding::Decoder<'_, D>,
6074 offset: usize,
6075 mut depth: fidl::encoding::Depth,
6076 ) -> fidl::Result<()> {
6077 decoder.debug_check_bounds::<Self>(offset);
6078 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6079 None => return Err(fidl::Error::NotNullable),
6080 Some(len) => len,
6081 };
6082 if len == 0 {
6084 return Ok(());
6085 };
6086 depth.increment()?;
6087 let envelope_size = 8;
6088 let bytes_len = len * envelope_size;
6089 let offset = decoder.out_of_line_offset(bytes_len)?;
6090 let mut _next_ordinal_to_read = 0;
6092 let mut next_offset = offset;
6093 let end_offset = offset + bytes_len;
6094 _next_ordinal_to_read += 1;
6095 if next_offset >= end_offset {
6096 return Ok(());
6097 }
6098
6099 while _next_ordinal_to_read < 1 {
6101 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6102 _next_ordinal_to_read += 1;
6103 next_offset += envelope_size;
6104 }
6105
6106 let next_out_of_line = decoder.next_out_of_line();
6107 let handles_before = decoder.remaining_handles();
6108 if let Some((inlined, num_bytes, num_handles)) =
6109 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6110 {
6111 let member_inline_size =
6112 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6113 if inlined != (member_inline_size <= 4) {
6114 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6115 }
6116 let inner_offset;
6117 let mut inner_depth = depth.clone();
6118 if inlined {
6119 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6120 inner_offset = next_offset;
6121 } else {
6122 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6123 inner_depth.increment()?;
6124 }
6125 let val_ref = self.success_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
6126 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6127 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6128 {
6129 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6130 }
6131 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6132 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6133 }
6134 }
6135
6136 next_offset += envelope_size;
6137 _next_ordinal_to_read += 1;
6138 if next_offset >= end_offset {
6139 return Ok(());
6140 }
6141
6142 while _next_ordinal_to_read < 2 {
6144 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6145 _next_ordinal_to_read += 1;
6146 next_offset += envelope_size;
6147 }
6148
6149 let next_out_of_line = decoder.next_out_of_line();
6150 let handles_before = decoder.remaining_handles();
6151 if let Some((inlined, num_bytes, num_handles)) =
6152 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6153 {
6154 let member_inline_size =
6155 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6156 if inlined != (member_inline_size <= 4) {
6157 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6158 }
6159 let inner_offset;
6160 let mut inner_depth = depth.clone();
6161 if inlined {
6162 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6163 inner_offset = next_offset;
6164 } else {
6165 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6166 inner_depth.increment()?;
6167 }
6168 let val_ref =
6169 self.server_failure_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
6170 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6171 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6172 {
6173 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6174 }
6175 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6176 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6177 }
6178 }
6179
6180 next_offset += envelope_size;
6181 _next_ordinal_to_read += 1;
6182 if next_offset >= end_offset {
6183 return Ok(());
6184 }
6185
6186 while _next_ordinal_to_read < 3 {
6188 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6189 _next_ordinal_to_read += 1;
6190 next_offset += envelope_size;
6191 }
6192
6193 let next_out_of_line = decoder.next_out_of_line();
6194 let handles_before = decoder.remaining_handles();
6195 if let Some((inlined, num_bytes, num_handles)) =
6196 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6197 {
6198 let member_inline_size =
6199 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6200 if inlined != (member_inline_size <= 4) {
6201 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6202 }
6203 let inner_offset;
6204 let mut inner_depth = depth.clone();
6205 if inlined {
6206 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6207 inner_offset = next_offset;
6208 } else {
6209 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6210 inner_depth.increment()?;
6211 }
6212 let val_ref =
6213 self.format_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
6214 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6215 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6216 {
6217 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6218 }
6219 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6220 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6221 }
6222 }
6223
6224 next_offset += envelope_size;
6225 _next_ordinal_to_read += 1;
6226 if next_offset >= end_offset {
6227 return Ok(());
6228 }
6229
6230 while _next_ordinal_to_read < 4 {
6232 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6233 _next_ordinal_to_read += 1;
6234 next_offset += envelope_size;
6235 }
6236
6237 let next_out_of_line = decoder.next_out_of_line();
6238 let handles_before = decoder.remaining_handles();
6239 if let Some((inlined, num_bytes, num_handles)) =
6240 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6241 {
6242 let member_inline_size =
6243 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6244 if inlined != (member_inline_size <= 4) {
6245 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6246 }
6247 let inner_offset;
6248 let mut inner_depth = depth.clone();
6249 if inlined {
6250 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6251 inner_offset = next_offset;
6252 } else {
6253 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6254 inner_depth.increment()?;
6255 }
6256 let val_ref =
6257 self.name_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
6258 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6259 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6260 {
6261 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6262 }
6263 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6264 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6265 }
6266 }
6267
6268 next_offset += envelope_size;
6269 _next_ordinal_to_read += 1;
6270 if next_offset >= end_offset {
6271 return Ok(());
6272 }
6273
6274 while _next_ordinal_to_read < 5 {
6276 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6277 _next_ordinal_to_read += 1;
6278 next_offset += envelope_size;
6279 }
6280
6281 let next_out_of_line = decoder.next_out_of_line();
6282 let handles_before = decoder.remaining_handles();
6283 if let Some((inlined, num_bytes, num_handles)) =
6284 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6285 {
6286 let member_inline_size =
6287 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6288 if inlined != (member_inline_size <= 4) {
6289 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6290 }
6291 let inner_offset;
6292 let mut inner_depth = depth.clone();
6293 if inlined {
6294 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6295 inner_offset = next_offset;
6296 } else {
6297 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6298 inner_depth.increment()?;
6299 }
6300 let val_ref =
6301 self.not_implemented_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
6302 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6303 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6304 {
6305 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6306 }
6307 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6308 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6309 }
6310 }
6311
6312 next_offset += envelope_size;
6313 _next_ordinal_to_read += 1;
6314 if next_offset >= end_offset {
6315 return Ok(());
6316 }
6317
6318 while _next_ordinal_to_read < 6 {
6320 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6321 _next_ordinal_to_read += 1;
6322 next_offset += envelope_size;
6323 }
6324
6325 let next_out_of_line = decoder.next_out_of_line();
6326 let handles_before = decoder.remaining_handles();
6327 if let Some((inlined, num_bytes, num_handles)) =
6328 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6329 {
6330 let member_inline_size =
6331 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6332 if inlined != (member_inline_size <= 4) {
6333 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6334 }
6335 let inner_offset;
6336 let mut inner_depth = depth.clone();
6337 if inlined {
6338 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6339 inner_offset = next_offset;
6340 } else {
6341 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6342 inner_depth.increment()?;
6343 }
6344 let val_ref = self.other_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
6345 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6346 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6347 {
6348 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6349 }
6350 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6351 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6352 }
6353 }
6354
6355 next_offset += envelope_size;
6356 _next_ordinal_to_read += 1;
6357 if next_offset >= end_offset {
6358 return Ok(());
6359 }
6360
6361 while _next_ordinal_to_read < 7 {
6363 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6364 _next_ordinal_to_read += 1;
6365 next_offset += envelope_size;
6366 }
6367
6368 let next_out_of_line = decoder.next_out_of_line();
6369 let handles_before = decoder.remaining_handles();
6370 if let Some((inlined, num_bytes, num_handles)) =
6371 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6372 {
6373 let member_inline_size =
6374 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6375 if inlined != (member_inline_size <= 4) {
6376 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6377 }
6378 let inner_offset;
6379 let mut inner_depth = depth.clone();
6380 if inlined {
6381 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6382 inner_offset = next_offset;
6383 } else {
6384 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6385 inner_depth.increment()?;
6386 }
6387 let val_ref = self.resolved_by_srp.get_or_insert_with(|| fidl::new_empty!(u32, D));
6388 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6389 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6390 {
6391 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6392 }
6393 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6394 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6395 }
6396 }
6397
6398 next_offset += envelope_size;
6399 _next_ordinal_to_read += 1;
6400 if next_offset >= end_offset {
6401 return Ok(());
6402 }
6403
6404 while _next_ordinal_to_read < 8 {
6406 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6407 _next_ordinal_to_read += 1;
6408 next_offset += envelope_size;
6409 }
6410
6411 let next_out_of_line = decoder.next_out_of_line();
6412 let handles_before = decoder.remaining_handles();
6413 if let Some((inlined, num_bytes, num_handles)) =
6414 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6415 {
6416 let member_inline_size =
6417 <UpstreamDnsCounters as fidl::encoding::TypeMarker>::inline_size(
6418 decoder.context,
6419 );
6420 if inlined != (member_inline_size <= 4) {
6421 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6422 }
6423 let inner_offset;
6424 let mut inner_depth = depth.clone();
6425 if inlined {
6426 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6427 inner_offset = next_offset;
6428 } else {
6429 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6430 inner_depth.increment()?;
6431 }
6432 let val_ref = self
6433 .upstream_dns_counters
6434 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsCounters, D));
6435 fidl::decode!(UpstreamDnsCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
6436 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6437 {
6438 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6439 }
6440 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6441 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6442 }
6443 }
6444
6445 next_offset += envelope_size;
6446
6447 while next_offset < end_offset {
6449 _next_ordinal_to_read += 1;
6450 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6451 next_offset += envelope_size;
6452 }
6453
6454 Ok(())
6455 }
6456 }
6457
6458 impl ExternalRoute {
6459 #[inline(always)]
6460 fn max_ordinal_present(&self) -> u64 {
6461 if let Some(_) = self.stable {
6462 return 3;
6463 }
6464 if let Some(_) = self.route_preference {
6465 return 2;
6466 }
6467 if let Some(_) = self.subnet {
6468 return 1;
6469 }
6470 0
6471 }
6472 }
6473
6474 impl fidl::encoding::ValueTypeMarker for ExternalRoute {
6475 type Borrowed<'a> = &'a Self;
6476 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6477 value
6478 }
6479 }
6480
6481 unsafe impl fidl::encoding::TypeMarker for ExternalRoute {
6482 type Owned = Self;
6483
6484 #[inline(always)]
6485 fn inline_align(_context: fidl::encoding::Context) -> usize {
6486 8
6487 }
6488
6489 #[inline(always)]
6490 fn inline_size(_context: fidl::encoding::Context) -> usize {
6491 16
6492 }
6493 }
6494
6495 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExternalRoute, D>
6496 for &ExternalRoute
6497 {
6498 unsafe fn encode(
6499 self,
6500 encoder: &mut fidl::encoding::Encoder<'_, D>,
6501 offset: usize,
6502 mut depth: fidl::encoding::Depth,
6503 ) -> fidl::Result<()> {
6504 encoder.debug_check_bounds::<ExternalRoute>(offset);
6505 let max_ordinal: u64 = self.max_ordinal_present();
6507 encoder.write_num(max_ordinal, offset);
6508 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6509 if max_ordinal == 0 {
6511 return Ok(());
6512 }
6513 depth.increment()?;
6514 let envelope_size = 8;
6515 let bytes_len = max_ordinal as usize * envelope_size;
6516 #[allow(unused_variables)]
6517 let offset = encoder.out_of_line_offset(bytes_len);
6518 let mut _prev_end_offset: usize = 0;
6519 if 1 > max_ordinal {
6520 return Ok(());
6521 }
6522
6523 let cur_offset: usize = (1 - 1) * envelope_size;
6526
6527 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6529
6530 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>(
6535 self.subnet.as_ref().map(<fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow),
6536 encoder, offset + cur_offset, depth
6537 )?;
6538
6539 _prev_end_offset = cur_offset + envelope_size;
6540 if 2 > max_ordinal {
6541 return Ok(());
6542 }
6543
6544 let cur_offset: usize = (2 - 1) * envelope_size;
6547
6548 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6550
6551 fidl::encoding::encode_in_envelope_optional::<RoutePreference, D>(
6556 self.route_preference
6557 .as_ref()
6558 .map(<RoutePreference as fidl::encoding::ValueTypeMarker>::borrow),
6559 encoder,
6560 offset + cur_offset,
6561 depth,
6562 )?;
6563
6564 _prev_end_offset = cur_offset + envelope_size;
6565 if 3 > max_ordinal {
6566 return Ok(());
6567 }
6568
6569 let cur_offset: usize = (3 - 1) * envelope_size;
6572
6573 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6575
6576 fidl::encoding::encode_in_envelope_optional::<bool, D>(
6581 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6582 encoder,
6583 offset + cur_offset,
6584 depth,
6585 )?;
6586
6587 _prev_end_offset = cur_offset + envelope_size;
6588
6589 Ok(())
6590 }
6591 }
6592
6593 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExternalRoute {
6594 #[inline(always)]
6595 fn new_empty() -> Self {
6596 Self::default()
6597 }
6598
6599 unsafe fn decode(
6600 &mut self,
6601 decoder: &mut fidl::encoding::Decoder<'_, D>,
6602 offset: usize,
6603 mut depth: fidl::encoding::Depth,
6604 ) -> fidl::Result<()> {
6605 decoder.debug_check_bounds::<Self>(offset);
6606 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6607 None => return Err(fidl::Error::NotNullable),
6608 Some(len) => len,
6609 };
6610 if len == 0 {
6612 return Ok(());
6613 };
6614 depth.increment()?;
6615 let envelope_size = 8;
6616 let bytes_len = len * envelope_size;
6617 let offset = decoder.out_of_line_offset(bytes_len)?;
6618 let mut _next_ordinal_to_read = 0;
6620 let mut next_offset = offset;
6621 let end_offset = offset + bytes_len;
6622 _next_ordinal_to_read += 1;
6623 if next_offset >= end_offset {
6624 return Ok(());
6625 }
6626
6627 while _next_ordinal_to_read < 1 {
6629 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6630 _next_ordinal_to_read += 1;
6631 next_offset += envelope_size;
6632 }
6633
6634 let next_out_of_line = decoder.next_out_of_line();
6635 let handles_before = decoder.remaining_handles();
6636 if let Some((inlined, num_bytes, num_handles)) =
6637 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6638 {
6639 let member_inline_size = <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6640 if inlined != (member_inline_size <= 4) {
6641 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6642 }
6643 let inner_offset;
6644 let mut inner_depth = depth.clone();
6645 if inlined {
6646 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6647 inner_offset = next_offset;
6648 } else {
6649 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6650 inner_depth.increment()?;
6651 }
6652 let val_ref = self.subnet.get_or_insert_with(|| {
6653 fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D)
6654 });
6655 fidl::decode!(
6656 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
6657 D,
6658 val_ref,
6659 decoder,
6660 inner_offset,
6661 inner_depth
6662 )?;
6663 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6664 {
6665 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6666 }
6667 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6668 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6669 }
6670 }
6671
6672 next_offset += envelope_size;
6673 _next_ordinal_to_read += 1;
6674 if next_offset >= end_offset {
6675 return Ok(());
6676 }
6677
6678 while _next_ordinal_to_read < 2 {
6680 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6681 _next_ordinal_to_read += 1;
6682 next_offset += envelope_size;
6683 }
6684
6685 let next_out_of_line = decoder.next_out_of_line();
6686 let handles_before = decoder.remaining_handles();
6687 if let Some((inlined, num_bytes, num_handles)) =
6688 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6689 {
6690 let member_inline_size =
6691 <RoutePreference as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6692 if inlined != (member_inline_size <= 4) {
6693 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6694 }
6695 let inner_offset;
6696 let mut inner_depth = depth.clone();
6697 if inlined {
6698 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6699 inner_offset = next_offset;
6700 } else {
6701 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6702 inner_depth.increment()?;
6703 }
6704 let val_ref = self
6705 .route_preference
6706 .get_or_insert_with(|| fidl::new_empty!(RoutePreference, D));
6707 fidl::decode!(RoutePreference, D, val_ref, decoder, inner_offset, inner_depth)?;
6708 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6709 {
6710 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6711 }
6712 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6713 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6714 }
6715 }
6716
6717 next_offset += envelope_size;
6718 _next_ordinal_to_read += 1;
6719 if next_offset >= end_offset {
6720 return Ok(());
6721 }
6722
6723 while _next_ordinal_to_read < 3 {
6725 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6726 _next_ordinal_to_read += 1;
6727 next_offset += envelope_size;
6728 }
6729
6730 let next_out_of_line = decoder.next_out_of_line();
6731 let handles_before = decoder.remaining_handles();
6732 if let Some((inlined, num_bytes, num_handles)) =
6733 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6734 {
6735 let member_inline_size =
6736 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6737 if inlined != (member_inline_size <= 4) {
6738 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6739 }
6740 let inner_offset;
6741 let mut inner_depth = depth.clone();
6742 if inlined {
6743 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6744 inner_offset = next_offset;
6745 } else {
6746 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6747 inner_depth.increment()?;
6748 }
6749 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
6750 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6751 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6752 {
6753 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6754 }
6755 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6756 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6757 }
6758 }
6759
6760 next_offset += envelope_size;
6761
6762 while next_offset < end_offset {
6764 _next_ordinal_to_read += 1;
6765 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6766 next_offset += envelope_size;
6767 }
6768
6769 Ok(())
6770 }
6771 }
6772
6773 impl JoinerCommissioningParams {
6774 #[inline(always)]
6775 fn max_ordinal_present(&self) -> u64 {
6776 if let Some(_) = self.vendor_data_string {
6777 return 6;
6778 }
6779 if let Some(_) = self.vendor_sw_version {
6780 return 5;
6781 }
6782 if let Some(_) = self.vendor_model {
6783 return 4;
6784 }
6785 if let Some(_) = self.vendor_name {
6786 return 3;
6787 }
6788 if let Some(_) = self.provisioning_url {
6789 return 2;
6790 }
6791 if let Some(_) = self.pskd {
6792 return 1;
6793 }
6794 0
6795 }
6796 }
6797
6798 impl fidl::encoding::ValueTypeMarker for JoinerCommissioningParams {
6799 type Borrowed<'a> = &'a Self;
6800 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6801 value
6802 }
6803 }
6804
6805 unsafe impl fidl::encoding::TypeMarker for JoinerCommissioningParams {
6806 type Owned = Self;
6807
6808 #[inline(always)]
6809 fn inline_align(_context: fidl::encoding::Context) -> usize {
6810 8
6811 }
6812
6813 #[inline(always)]
6814 fn inline_size(_context: fidl::encoding::Context) -> usize {
6815 16
6816 }
6817 }
6818
6819 unsafe impl<D: fidl::encoding::ResourceDialect>
6820 fidl::encoding::Encode<JoinerCommissioningParams, D> for &JoinerCommissioningParams
6821 {
6822 unsafe fn encode(
6823 self,
6824 encoder: &mut fidl::encoding::Encoder<'_, D>,
6825 offset: usize,
6826 mut depth: fidl::encoding::Depth,
6827 ) -> fidl::Result<()> {
6828 encoder.debug_check_bounds::<JoinerCommissioningParams>(offset);
6829 let max_ordinal: u64 = self.max_ordinal_present();
6831 encoder.write_num(max_ordinal, offset);
6832 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6833 if max_ordinal == 0 {
6835 return Ok(());
6836 }
6837 depth.increment()?;
6838 let envelope_size = 8;
6839 let bytes_len = max_ordinal as usize * envelope_size;
6840 #[allow(unused_variables)]
6841 let offset = encoder.out_of_line_offset(bytes_len);
6842 let mut _prev_end_offset: usize = 0;
6843 if 1 > max_ordinal {
6844 return Ok(());
6845 }
6846
6847 let cur_offset: usize = (1 - 1) * envelope_size;
6850
6851 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6853
6854 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
6859 self.pskd.as_ref().map(
6860 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
6861 ),
6862 encoder,
6863 offset + cur_offset,
6864 depth,
6865 )?;
6866
6867 _prev_end_offset = cur_offset + envelope_size;
6868 if 2 > max_ordinal {
6869 return Ok(());
6870 }
6871
6872 let cur_offset: usize = (2 - 1) * envelope_size;
6875
6876 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6878
6879 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
6884 self.provisioning_url.as_ref().map(
6885 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
6886 ),
6887 encoder,
6888 offset + cur_offset,
6889 depth,
6890 )?;
6891
6892 _prev_end_offset = cur_offset + envelope_size;
6893 if 3 > max_ordinal {
6894 return Ok(());
6895 }
6896
6897 let cur_offset: usize = (3 - 1) * envelope_size;
6900
6901 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6903
6904 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
6909 self.vendor_name.as_ref().map(
6910 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
6911 ),
6912 encoder,
6913 offset + cur_offset,
6914 depth,
6915 )?;
6916
6917 _prev_end_offset = cur_offset + envelope_size;
6918 if 4 > max_ordinal {
6919 return Ok(());
6920 }
6921
6922 let cur_offset: usize = (4 - 1) * envelope_size;
6925
6926 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6928
6929 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
6934 self.vendor_model.as_ref().map(
6935 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
6936 ),
6937 encoder,
6938 offset + cur_offset,
6939 depth,
6940 )?;
6941
6942 _prev_end_offset = cur_offset + envelope_size;
6943 if 5 > max_ordinal {
6944 return Ok(());
6945 }
6946
6947 let cur_offset: usize = (5 - 1) * envelope_size;
6950
6951 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6953
6954 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<16>, D>(
6959 self.vendor_sw_version.as_ref().map(
6960 <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow,
6961 ),
6962 encoder,
6963 offset + cur_offset,
6964 depth,
6965 )?;
6966
6967 _prev_end_offset = cur_offset + envelope_size;
6968 if 6 > max_ordinal {
6969 return Ok(());
6970 }
6971
6972 let cur_offset: usize = (6 - 1) * envelope_size;
6975
6976 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6978
6979 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
6984 self.vendor_data_string.as_ref().map(
6985 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
6986 ),
6987 encoder,
6988 offset + cur_offset,
6989 depth,
6990 )?;
6991
6992 _prev_end_offset = cur_offset + envelope_size;
6993
6994 Ok(())
6995 }
6996 }
6997
6998 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6999 for JoinerCommissioningParams
7000 {
7001 #[inline(always)]
7002 fn new_empty() -> Self {
7003 Self::default()
7004 }
7005
7006 unsafe fn decode(
7007 &mut self,
7008 decoder: &mut fidl::encoding::Decoder<'_, D>,
7009 offset: usize,
7010 mut depth: fidl::encoding::Depth,
7011 ) -> fidl::Result<()> {
7012 decoder.debug_check_bounds::<Self>(offset);
7013 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7014 None => return Err(fidl::Error::NotNullable),
7015 Some(len) => len,
7016 };
7017 if len == 0 {
7019 return Ok(());
7020 };
7021 depth.increment()?;
7022 let envelope_size = 8;
7023 let bytes_len = len * envelope_size;
7024 let offset = decoder.out_of_line_offset(bytes_len)?;
7025 let mut _next_ordinal_to_read = 0;
7027 let mut next_offset = offset;
7028 let end_offset = offset + bytes_len;
7029 _next_ordinal_to_read += 1;
7030 if next_offset >= end_offset {
7031 return Ok(());
7032 }
7033
7034 while _next_ordinal_to_read < 1 {
7036 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7037 _next_ordinal_to_read += 1;
7038 next_offset += envelope_size;
7039 }
7040
7041 let next_out_of_line = decoder.next_out_of_line();
7042 let handles_before = decoder.remaining_handles();
7043 if let Some((inlined, num_bytes, num_handles)) =
7044 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7045 {
7046 let member_inline_size =
7047 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
7048 decoder.context,
7049 );
7050 if inlined != (member_inline_size <= 4) {
7051 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7052 }
7053 let inner_offset;
7054 let mut inner_depth = depth.clone();
7055 if inlined {
7056 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7057 inner_offset = next_offset;
7058 } else {
7059 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7060 inner_depth.increment()?;
7061 }
7062 let val_ref = self
7063 .pskd
7064 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
7065 fidl::decode!(
7066 fidl::encoding::BoundedString<32>,
7067 D,
7068 val_ref,
7069 decoder,
7070 inner_offset,
7071 inner_depth
7072 )?;
7073 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7074 {
7075 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7076 }
7077 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7078 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7079 }
7080 }
7081
7082 next_offset += envelope_size;
7083 _next_ordinal_to_read += 1;
7084 if next_offset >= end_offset {
7085 return Ok(());
7086 }
7087
7088 while _next_ordinal_to_read < 2 {
7090 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7091 _next_ordinal_to_read += 1;
7092 next_offset += envelope_size;
7093 }
7094
7095 let next_out_of_line = decoder.next_out_of_line();
7096 let handles_before = decoder.remaining_handles();
7097 if let Some((inlined, num_bytes, num_handles)) =
7098 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7099 {
7100 let member_inline_size =
7101 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
7102 decoder.context,
7103 );
7104 if inlined != (member_inline_size <= 4) {
7105 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7106 }
7107 let inner_offset;
7108 let mut inner_depth = depth.clone();
7109 if inlined {
7110 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7111 inner_offset = next_offset;
7112 } else {
7113 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7114 inner_depth.increment()?;
7115 }
7116 let val_ref = self
7117 .provisioning_url
7118 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
7119 fidl::decode!(
7120 fidl::encoding::BoundedString<64>,
7121 D,
7122 val_ref,
7123 decoder,
7124 inner_offset,
7125 inner_depth
7126 )?;
7127 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7128 {
7129 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7130 }
7131 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7132 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7133 }
7134 }
7135
7136 next_offset += envelope_size;
7137 _next_ordinal_to_read += 1;
7138 if next_offset >= end_offset {
7139 return Ok(());
7140 }
7141
7142 while _next_ordinal_to_read < 3 {
7144 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7145 _next_ordinal_to_read += 1;
7146 next_offset += envelope_size;
7147 }
7148
7149 let next_out_of_line = decoder.next_out_of_line();
7150 let handles_before = decoder.remaining_handles();
7151 if let Some((inlined, num_bytes, num_handles)) =
7152 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7153 {
7154 let member_inline_size =
7155 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
7156 decoder.context,
7157 );
7158 if inlined != (member_inline_size <= 4) {
7159 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7160 }
7161 let inner_offset;
7162 let mut inner_depth = depth.clone();
7163 if inlined {
7164 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7165 inner_offset = next_offset;
7166 } else {
7167 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7168 inner_depth.increment()?;
7169 }
7170 let val_ref = self
7171 .vendor_name
7172 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
7173 fidl::decode!(
7174 fidl::encoding::BoundedString<32>,
7175 D,
7176 val_ref,
7177 decoder,
7178 inner_offset,
7179 inner_depth
7180 )?;
7181 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7182 {
7183 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7184 }
7185 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7186 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7187 }
7188 }
7189
7190 next_offset += envelope_size;
7191 _next_ordinal_to_read += 1;
7192 if next_offset >= end_offset {
7193 return Ok(());
7194 }
7195
7196 while _next_ordinal_to_read < 4 {
7198 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7199 _next_ordinal_to_read += 1;
7200 next_offset += envelope_size;
7201 }
7202
7203 let next_out_of_line = decoder.next_out_of_line();
7204 let handles_before = decoder.remaining_handles();
7205 if let Some((inlined, num_bytes, num_handles)) =
7206 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7207 {
7208 let member_inline_size =
7209 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
7210 decoder.context,
7211 );
7212 if inlined != (member_inline_size <= 4) {
7213 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7214 }
7215 let inner_offset;
7216 let mut inner_depth = depth.clone();
7217 if inlined {
7218 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7219 inner_offset = next_offset;
7220 } else {
7221 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7222 inner_depth.increment()?;
7223 }
7224 let val_ref = self
7225 .vendor_model
7226 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
7227 fidl::decode!(
7228 fidl::encoding::BoundedString<32>,
7229 D,
7230 val_ref,
7231 decoder,
7232 inner_offset,
7233 inner_depth
7234 )?;
7235 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7236 {
7237 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7238 }
7239 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7240 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7241 }
7242 }
7243
7244 next_offset += envelope_size;
7245 _next_ordinal_to_read += 1;
7246 if next_offset >= end_offset {
7247 return Ok(());
7248 }
7249
7250 while _next_ordinal_to_read < 5 {
7252 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7253 _next_ordinal_to_read += 1;
7254 next_offset += envelope_size;
7255 }
7256
7257 let next_out_of_line = decoder.next_out_of_line();
7258 let handles_before = decoder.remaining_handles();
7259 if let Some((inlined, num_bytes, num_handles)) =
7260 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7261 {
7262 let member_inline_size =
7263 <fidl::encoding::BoundedString<16> as fidl::encoding::TypeMarker>::inline_size(
7264 decoder.context,
7265 );
7266 if inlined != (member_inline_size <= 4) {
7267 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7268 }
7269 let inner_offset;
7270 let mut inner_depth = depth.clone();
7271 if inlined {
7272 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7273 inner_offset = next_offset;
7274 } else {
7275 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7276 inner_depth.increment()?;
7277 }
7278 let val_ref = self
7279 .vendor_sw_version
7280 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<16>, D));
7281 fidl::decode!(
7282 fidl::encoding::BoundedString<16>,
7283 D,
7284 val_ref,
7285 decoder,
7286 inner_offset,
7287 inner_depth
7288 )?;
7289 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7290 {
7291 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7292 }
7293 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7294 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7295 }
7296 }
7297
7298 next_offset += envelope_size;
7299 _next_ordinal_to_read += 1;
7300 if next_offset >= end_offset {
7301 return Ok(());
7302 }
7303
7304 while _next_ordinal_to_read < 6 {
7306 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7307 _next_ordinal_to_read += 1;
7308 next_offset += envelope_size;
7309 }
7310
7311 let next_out_of_line = decoder.next_out_of_line();
7312 let handles_before = decoder.remaining_handles();
7313 if let Some((inlined, num_bytes, num_handles)) =
7314 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7315 {
7316 let member_inline_size =
7317 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
7318 decoder.context,
7319 );
7320 if inlined != (member_inline_size <= 4) {
7321 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7322 }
7323 let inner_offset;
7324 let mut inner_depth = depth.clone();
7325 if inlined {
7326 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7327 inner_offset = next_offset;
7328 } else {
7329 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7330 inner_depth.increment()?;
7331 }
7332 let val_ref = self
7333 .vendor_data_string
7334 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
7335 fidl::decode!(
7336 fidl::encoding::BoundedString<64>,
7337 D,
7338 val_ref,
7339 decoder,
7340 inner_offset,
7341 inner_depth
7342 )?;
7343 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7344 {
7345 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7346 }
7347 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7348 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7349 }
7350 }
7351
7352 next_offset += envelope_size;
7353
7354 while next_offset < end_offset {
7356 _next_ordinal_to_read += 1;
7357 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7358 next_offset += envelope_size;
7359 }
7360
7361 Ok(())
7362 }
7363 }
7364
7365 impl LeaderData {
7366 #[inline(always)]
7367 fn max_ordinal_present(&self) -> u64 {
7368 if let Some(_) = self.router_id {
7369 return 5;
7370 }
7371 if let Some(_) = self.stable_network_data_version {
7372 return 4;
7373 }
7374 if let Some(_) = self.network_data_version {
7375 return 3;
7376 }
7377 if let Some(_) = self.weight {
7378 return 2;
7379 }
7380 if let Some(_) = self.partition_id {
7381 return 1;
7382 }
7383 0
7384 }
7385 }
7386
7387 impl fidl::encoding::ValueTypeMarker for LeaderData {
7388 type Borrowed<'a> = &'a Self;
7389 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7390 value
7391 }
7392 }
7393
7394 unsafe impl fidl::encoding::TypeMarker for LeaderData {
7395 type Owned = Self;
7396
7397 #[inline(always)]
7398 fn inline_align(_context: fidl::encoding::Context) -> usize {
7399 8
7400 }
7401
7402 #[inline(always)]
7403 fn inline_size(_context: fidl::encoding::Context) -> usize {
7404 16
7405 }
7406 }
7407
7408 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LeaderData, D>
7409 for &LeaderData
7410 {
7411 unsafe fn encode(
7412 self,
7413 encoder: &mut fidl::encoding::Encoder<'_, D>,
7414 offset: usize,
7415 mut depth: fidl::encoding::Depth,
7416 ) -> fidl::Result<()> {
7417 encoder.debug_check_bounds::<LeaderData>(offset);
7418 let max_ordinal: u64 = self.max_ordinal_present();
7420 encoder.write_num(max_ordinal, offset);
7421 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7422 if max_ordinal == 0 {
7424 return Ok(());
7425 }
7426 depth.increment()?;
7427 let envelope_size = 8;
7428 let bytes_len = max_ordinal as usize * envelope_size;
7429 #[allow(unused_variables)]
7430 let offset = encoder.out_of_line_offset(bytes_len);
7431 let mut _prev_end_offset: usize = 0;
7432 if 1 > max_ordinal {
7433 return Ok(());
7434 }
7435
7436 let cur_offset: usize = (1 - 1) * envelope_size;
7439
7440 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7442
7443 fidl::encoding::encode_in_envelope_optional::<u32, D>(
7448 self.partition_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7449 encoder,
7450 offset + cur_offset,
7451 depth,
7452 )?;
7453
7454 _prev_end_offset = cur_offset + envelope_size;
7455 if 2 > max_ordinal {
7456 return Ok(());
7457 }
7458
7459 let cur_offset: usize = (2 - 1) * envelope_size;
7462
7463 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7465
7466 fidl::encoding::encode_in_envelope_optional::<u8, D>(
7471 self.weight.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
7472 encoder,
7473 offset + cur_offset,
7474 depth,
7475 )?;
7476
7477 _prev_end_offset = cur_offset + envelope_size;
7478 if 3 > max_ordinal {
7479 return Ok(());
7480 }
7481
7482 let cur_offset: usize = (3 - 1) * envelope_size;
7485
7486 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7488
7489 fidl::encoding::encode_in_envelope_optional::<u8, D>(
7494 self.network_data_version
7495 .as_ref()
7496 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
7497 encoder,
7498 offset + cur_offset,
7499 depth,
7500 )?;
7501
7502 _prev_end_offset = cur_offset + envelope_size;
7503 if 4 > max_ordinal {
7504 return Ok(());
7505 }
7506
7507 let cur_offset: usize = (4 - 1) * envelope_size;
7510
7511 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7513
7514 fidl::encoding::encode_in_envelope_optional::<u8, D>(
7519 self.stable_network_data_version
7520 .as_ref()
7521 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
7522 encoder,
7523 offset + cur_offset,
7524 depth,
7525 )?;
7526
7527 _prev_end_offset = cur_offset + envelope_size;
7528 if 5 > max_ordinal {
7529 return Ok(());
7530 }
7531
7532 let cur_offset: usize = (5 - 1) * envelope_size;
7535
7536 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7538
7539 fidl::encoding::encode_in_envelope_optional::<u8, D>(
7544 self.router_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
7545 encoder,
7546 offset + cur_offset,
7547 depth,
7548 )?;
7549
7550 _prev_end_offset = cur_offset + envelope_size;
7551
7552 Ok(())
7553 }
7554 }
7555
7556 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LeaderData {
7557 #[inline(always)]
7558 fn new_empty() -> Self {
7559 Self::default()
7560 }
7561
7562 unsafe fn decode(
7563 &mut self,
7564 decoder: &mut fidl::encoding::Decoder<'_, D>,
7565 offset: usize,
7566 mut depth: fidl::encoding::Depth,
7567 ) -> fidl::Result<()> {
7568 decoder.debug_check_bounds::<Self>(offset);
7569 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7570 None => return Err(fidl::Error::NotNullable),
7571 Some(len) => len,
7572 };
7573 if len == 0 {
7575 return Ok(());
7576 };
7577 depth.increment()?;
7578 let envelope_size = 8;
7579 let bytes_len = len * envelope_size;
7580 let offset = decoder.out_of_line_offset(bytes_len)?;
7581 let mut _next_ordinal_to_read = 0;
7583 let mut next_offset = offset;
7584 let end_offset = offset + bytes_len;
7585 _next_ordinal_to_read += 1;
7586 if next_offset >= end_offset {
7587 return Ok(());
7588 }
7589
7590 while _next_ordinal_to_read < 1 {
7592 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7593 _next_ordinal_to_read += 1;
7594 next_offset += envelope_size;
7595 }
7596
7597 let next_out_of_line = decoder.next_out_of_line();
7598 let handles_before = decoder.remaining_handles();
7599 if let Some((inlined, num_bytes, num_handles)) =
7600 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7601 {
7602 let member_inline_size =
7603 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7604 if inlined != (member_inline_size <= 4) {
7605 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7606 }
7607 let inner_offset;
7608 let mut inner_depth = depth.clone();
7609 if inlined {
7610 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7611 inner_offset = next_offset;
7612 } else {
7613 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7614 inner_depth.increment()?;
7615 }
7616 let val_ref = self.partition_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
7617 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7618 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7619 {
7620 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7621 }
7622 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7623 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7624 }
7625 }
7626
7627 next_offset += envelope_size;
7628 _next_ordinal_to_read += 1;
7629 if next_offset >= end_offset {
7630 return Ok(());
7631 }
7632
7633 while _next_ordinal_to_read < 2 {
7635 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7636 _next_ordinal_to_read += 1;
7637 next_offset += envelope_size;
7638 }
7639
7640 let next_out_of_line = decoder.next_out_of_line();
7641 let handles_before = decoder.remaining_handles();
7642 if let Some((inlined, num_bytes, num_handles)) =
7643 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7644 {
7645 let member_inline_size =
7646 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7647 if inlined != (member_inline_size <= 4) {
7648 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7649 }
7650 let inner_offset;
7651 let mut inner_depth = depth.clone();
7652 if inlined {
7653 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7654 inner_offset = next_offset;
7655 } else {
7656 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7657 inner_depth.increment()?;
7658 }
7659 let val_ref = self.weight.get_or_insert_with(|| fidl::new_empty!(u8, D));
7660 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
7661 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7662 {
7663 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7664 }
7665 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7666 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7667 }
7668 }
7669
7670 next_offset += envelope_size;
7671 _next_ordinal_to_read += 1;
7672 if next_offset >= end_offset {
7673 return Ok(());
7674 }
7675
7676 while _next_ordinal_to_read < 3 {
7678 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7679 _next_ordinal_to_read += 1;
7680 next_offset += envelope_size;
7681 }
7682
7683 let next_out_of_line = decoder.next_out_of_line();
7684 let handles_before = decoder.remaining_handles();
7685 if let Some((inlined, num_bytes, num_handles)) =
7686 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7687 {
7688 let member_inline_size =
7689 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7690 if inlined != (member_inline_size <= 4) {
7691 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7692 }
7693 let inner_offset;
7694 let mut inner_depth = depth.clone();
7695 if inlined {
7696 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7697 inner_offset = next_offset;
7698 } else {
7699 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7700 inner_depth.increment()?;
7701 }
7702 let val_ref =
7703 self.network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
7704 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
7705 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7706 {
7707 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7708 }
7709 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7710 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7711 }
7712 }
7713
7714 next_offset += envelope_size;
7715 _next_ordinal_to_read += 1;
7716 if next_offset >= end_offset {
7717 return Ok(());
7718 }
7719
7720 while _next_ordinal_to_read < 4 {
7722 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7723 _next_ordinal_to_read += 1;
7724 next_offset += envelope_size;
7725 }
7726
7727 let next_out_of_line = decoder.next_out_of_line();
7728 let handles_before = decoder.remaining_handles();
7729 if let Some((inlined, num_bytes, num_handles)) =
7730 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7731 {
7732 let member_inline_size =
7733 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7734 if inlined != (member_inline_size <= 4) {
7735 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7736 }
7737 let inner_offset;
7738 let mut inner_depth = depth.clone();
7739 if inlined {
7740 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7741 inner_offset = next_offset;
7742 } else {
7743 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7744 inner_depth.increment()?;
7745 }
7746 let val_ref =
7747 self.stable_network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
7748 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
7749 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7750 {
7751 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7752 }
7753 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7754 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7755 }
7756 }
7757
7758 next_offset += envelope_size;
7759 _next_ordinal_to_read += 1;
7760 if next_offset >= end_offset {
7761 return Ok(());
7762 }
7763
7764 while _next_ordinal_to_read < 5 {
7766 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7767 _next_ordinal_to_read += 1;
7768 next_offset += envelope_size;
7769 }
7770
7771 let next_out_of_line = decoder.next_out_of_line();
7772 let handles_before = decoder.remaining_handles();
7773 if let Some((inlined, num_bytes, num_handles)) =
7774 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7775 {
7776 let member_inline_size =
7777 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7778 if inlined != (member_inline_size <= 4) {
7779 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7780 }
7781 let inner_offset;
7782 let mut inner_depth = depth.clone();
7783 if inlined {
7784 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7785 inner_offset = next_offset;
7786 } else {
7787 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7788 inner_depth.increment()?;
7789 }
7790 let val_ref = self.router_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
7791 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
7792 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7793 {
7794 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7795 }
7796 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7797 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7798 }
7799 }
7800
7801 next_offset += envelope_size;
7802
7803 while next_offset < end_offset {
7805 _next_ordinal_to_read += 1;
7806 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7807 next_offset += envelope_size;
7808 }
7809
7810 Ok(())
7811 }
7812 }
7813
7814 impl LinkMetricsEntry {
7815 #[inline(always)]
7816 fn max_ordinal_present(&self) -> u64 {
7817 if let Some(_) = self.rssi {
7818 return 2;
7819 }
7820 if let Some(_) = self.link_margin {
7821 return 1;
7822 }
7823 0
7824 }
7825 }
7826
7827 impl fidl::encoding::ValueTypeMarker for LinkMetricsEntry {
7828 type Borrowed<'a> = &'a Self;
7829 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7830 value
7831 }
7832 }
7833
7834 unsafe impl fidl::encoding::TypeMarker for LinkMetricsEntry {
7835 type Owned = Self;
7836
7837 #[inline(always)]
7838 fn inline_align(_context: fidl::encoding::Context) -> usize {
7839 8
7840 }
7841
7842 #[inline(always)]
7843 fn inline_size(_context: fidl::encoding::Context) -> usize {
7844 16
7845 }
7846 }
7847
7848 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LinkMetricsEntry, D>
7849 for &LinkMetricsEntry
7850 {
7851 unsafe fn encode(
7852 self,
7853 encoder: &mut fidl::encoding::Encoder<'_, D>,
7854 offset: usize,
7855 mut depth: fidl::encoding::Depth,
7856 ) -> fidl::Result<()> {
7857 encoder.debug_check_bounds::<LinkMetricsEntry>(offset);
7858 let max_ordinal: u64 = self.max_ordinal_present();
7860 encoder.write_num(max_ordinal, offset);
7861 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7862 if max_ordinal == 0 {
7864 return Ok(());
7865 }
7866 depth.increment()?;
7867 let envelope_size = 8;
7868 let bytes_len = max_ordinal as usize * envelope_size;
7869 #[allow(unused_variables)]
7870 let offset = encoder.out_of_line_offset(bytes_len);
7871 let mut _prev_end_offset: usize = 0;
7872 if 1 > max_ordinal {
7873 return Ok(());
7874 }
7875
7876 let cur_offset: usize = (1 - 1) * envelope_size;
7879
7880 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7882
7883 fidl::encoding::encode_in_envelope_optional::<u8, D>(
7888 self.link_margin.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
7889 encoder,
7890 offset + cur_offset,
7891 depth,
7892 )?;
7893
7894 _prev_end_offset = cur_offset + envelope_size;
7895 if 2 > max_ordinal {
7896 return Ok(());
7897 }
7898
7899 let cur_offset: usize = (2 - 1) * envelope_size;
7902
7903 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7905
7906 fidl::encoding::encode_in_envelope_optional::<i8, D>(
7911 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
7912 encoder,
7913 offset + cur_offset,
7914 depth,
7915 )?;
7916
7917 _prev_end_offset = cur_offset + envelope_size;
7918
7919 Ok(())
7920 }
7921 }
7922
7923 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LinkMetricsEntry {
7924 #[inline(always)]
7925 fn new_empty() -> Self {
7926 Self::default()
7927 }
7928
7929 unsafe fn decode(
7930 &mut self,
7931 decoder: &mut fidl::encoding::Decoder<'_, D>,
7932 offset: usize,
7933 mut depth: fidl::encoding::Depth,
7934 ) -> fidl::Result<()> {
7935 decoder.debug_check_bounds::<Self>(offset);
7936 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7937 None => return Err(fidl::Error::NotNullable),
7938 Some(len) => len,
7939 };
7940 if len == 0 {
7942 return Ok(());
7943 };
7944 depth.increment()?;
7945 let envelope_size = 8;
7946 let bytes_len = len * envelope_size;
7947 let offset = decoder.out_of_line_offset(bytes_len)?;
7948 let mut _next_ordinal_to_read = 0;
7950 let mut next_offset = offset;
7951 let end_offset = offset + bytes_len;
7952 _next_ordinal_to_read += 1;
7953 if next_offset >= end_offset {
7954 return Ok(());
7955 }
7956
7957 while _next_ordinal_to_read < 1 {
7959 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7960 _next_ordinal_to_read += 1;
7961 next_offset += envelope_size;
7962 }
7963
7964 let next_out_of_line = decoder.next_out_of_line();
7965 let handles_before = decoder.remaining_handles();
7966 if let Some((inlined, num_bytes, num_handles)) =
7967 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7968 {
7969 let member_inline_size =
7970 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7971 if inlined != (member_inline_size <= 4) {
7972 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7973 }
7974 let inner_offset;
7975 let mut inner_depth = depth.clone();
7976 if inlined {
7977 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7978 inner_offset = next_offset;
7979 } else {
7980 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7981 inner_depth.increment()?;
7982 }
7983 let val_ref = self.link_margin.get_or_insert_with(|| fidl::new_empty!(u8, D));
7984 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
7985 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7986 {
7987 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7988 }
7989 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7990 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7991 }
7992 }
7993
7994 next_offset += envelope_size;
7995 _next_ordinal_to_read += 1;
7996 if next_offset >= end_offset {
7997 return Ok(());
7998 }
7999
8000 while _next_ordinal_to_read < 2 {
8002 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8003 _next_ordinal_to_read += 1;
8004 next_offset += envelope_size;
8005 }
8006
8007 let next_out_of_line = decoder.next_out_of_line();
8008 let handles_before = decoder.remaining_handles();
8009 if let Some((inlined, num_bytes, num_handles)) =
8010 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8011 {
8012 let member_inline_size =
8013 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8014 if inlined != (member_inline_size <= 4) {
8015 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8016 }
8017 let inner_offset;
8018 let mut inner_depth = depth.clone();
8019 if inlined {
8020 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8021 inner_offset = next_offset;
8022 } else {
8023 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8024 inner_depth.increment()?;
8025 }
8026 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
8027 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
8028 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8029 {
8030 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8031 }
8032 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8033 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8034 }
8035 }
8036
8037 next_offset += envelope_size;
8038
8039 while next_offset < end_offset {
8041 _next_ordinal_to_read += 1;
8042 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8043 next_offset += envelope_size;
8044 }
8045
8046 Ok(())
8047 }
8048 }
8049
8050 impl Nat64ErrorCounters {
8051 #[inline(always)]
8052 fn max_ordinal_present(&self) -> u64 {
8053 if let Some(_) = self.no_mapping {
8054 return 4;
8055 }
8056 if let Some(_) = self.unsupported_protocol {
8057 return 3;
8058 }
8059 if let Some(_) = self.illegal_packet {
8060 return 2;
8061 }
8062 if let Some(_) = self.unknown {
8063 return 1;
8064 }
8065 0
8066 }
8067 }
8068
8069 impl fidl::encoding::ValueTypeMarker for Nat64ErrorCounters {
8070 type Borrowed<'a> = &'a Self;
8071 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8072 value
8073 }
8074 }
8075
8076 unsafe impl fidl::encoding::TypeMarker for Nat64ErrorCounters {
8077 type Owned = Self;
8078
8079 #[inline(always)]
8080 fn inline_align(_context: fidl::encoding::Context) -> usize {
8081 8
8082 }
8083
8084 #[inline(always)]
8085 fn inline_size(_context: fidl::encoding::Context) -> usize {
8086 16
8087 }
8088 }
8089
8090 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64ErrorCounters, D>
8091 for &Nat64ErrorCounters
8092 {
8093 unsafe fn encode(
8094 self,
8095 encoder: &mut fidl::encoding::Encoder<'_, D>,
8096 offset: usize,
8097 mut depth: fidl::encoding::Depth,
8098 ) -> fidl::Result<()> {
8099 encoder.debug_check_bounds::<Nat64ErrorCounters>(offset);
8100 let max_ordinal: u64 = self.max_ordinal_present();
8102 encoder.write_num(max_ordinal, offset);
8103 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8104 if max_ordinal == 0 {
8106 return Ok(());
8107 }
8108 depth.increment()?;
8109 let envelope_size = 8;
8110 let bytes_len = max_ordinal as usize * envelope_size;
8111 #[allow(unused_variables)]
8112 let offset = encoder.out_of_line_offset(bytes_len);
8113 let mut _prev_end_offset: usize = 0;
8114 if 1 > max_ordinal {
8115 return Ok(());
8116 }
8117
8118 let cur_offset: usize = (1 - 1) * envelope_size;
8121
8122 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8124
8125 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
8130 self.unknown
8131 .as_ref()
8132 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
8133 encoder,
8134 offset + cur_offset,
8135 depth,
8136 )?;
8137
8138 _prev_end_offset = cur_offset + envelope_size;
8139 if 2 > max_ordinal {
8140 return Ok(());
8141 }
8142
8143 let cur_offset: usize = (2 - 1) * envelope_size;
8146
8147 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8149
8150 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
8155 self.illegal_packet
8156 .as_ref()
8157 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
8158 encoder,
8159 offset + cur_offset,
8160 depth,
8161 )?;
8162
8163 _prev_end_offset = cur_offset + envelope_size;
8164 if 3 > max_ordinal {
8165 return Ok(());
8166 }
8167
8168 let cur_offset: usize = (3 - 1) * envelope_size;
8171
8172 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8174
8175 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
8180 self.unsupported_protocol
8181 .as_ref()
8182 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
8183 encoder,
8184 offset + cur_offset,
8185 depth,
8186 )?;
8187
8188 _prev_end_offset = cur_offset + envelope_size;
8189 if 4 > max_ordinal {
8190 return Ok(());
8191 }
8192
8193 let cur_offset: usize = (4 - 1) * envelope_size;
8196
8197 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8199
8200 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
8205 self.no_mapping
8206 .as_ref()
8207 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
8208 encoder,
8209 offset + cur_offset,
8210 depth,
8211 )?;
8212
8213 _prev_end_offset = cur_offset + envelope_size;
8214
8215 Ok(())
8216 }
8217 }
8218
8219 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64ErrorCounters {
8220 #[inline(always)]
8221 fn new_empty() -> Self {
8222 Self::default()
8223 }
8224
8225 unsafe fn decode(
8226 &mut self,
8227 decoder: &mut fidl::encoding::Decoder<'_, D>,
8228 offset: usize,
8229 mut depth: fidl::encoding::Depth,
8230 ) -> fidl::Result<()> {
8231 decoder.debug_check_bounds::<Self>(offset);
8232 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8233 None => return Err(fidl::Error::NotNullable),
8234 Some(len) => len,
8235 };
8236 if len == 0 {
8238 return Ok(());
8239 };
8240 depth.increment()?;
8241 let envelope_size = 8;
8242 let bytes_len = len * envelope_size;
8243 let offset = decoder.out_of_line_offset(bytes_len)?;
8244 let mut _next_ordinal_to_read = 0;
8246 let mut next_offset = offset;
8247 let end_offset = offset + bytes_len;
8248 _next_ordinal_to_read += 1;
8249 if next_offset >= end_offset {
8250 return Ok(());
8251 }
8252
8253 while _next_ordinal_to_read < 1 {
8255 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8256 _next_ordinal_to_read += 1;
8257 next_offset += envelope_size;
8258 }
8259
8260 let next_out_of_line = decoder.next_out_of_line();
8261 let handles_before = decoder.remaining_handles();
8262 if let Some((inlined, num_bytes, num_handles)) =
8263 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8264 {
8265 let member_inline_size =
8266 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
8267 decoder.context,
8268 );
8269 if inlined != (member_inline_size <= 4) {
8270 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8271 }
8272 let inner_offset;
8273 let mut inner_depth = depth.clone();
8274 if inlined {
8275 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8276 inner_offset = next_offset;
8277 } else {
8278 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8279 inner_depth.increment()?;
8280 }
8281 let val_ref =
8282 self.unknown.get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
8283 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
8284 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8285 {
8286 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8287 }
8288 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8289 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8290 }
8291 }
8292
8293 next_offset += envelope_size;
8294 _next_ordinal_to_read += 1;
8295 if next_offset >= end_offset {
8296 return Ok(());
8297 }
8298
8299 while _next_ordinal_to_read < 2 {
8301 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8302 _next_ordinal_to_read += 1;
8303 next_offset += envelope_size;
8304 }
8305
8306 let next_out_of_line = decoder.next_out_of_line();
8307 let handles_before = decoder.remaining_handles();
8308 if let Some((inlined, num_bytes, num_handles)) =
8309 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8310 {
8311 let member_inline_size =
8312 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
8313 decoder.context,
8314 );
8315 if inlined != (member_inline_size <= 4) {
8316 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8317 }
8318 let inner_offset;
8319 let mut inner_depth = depth.clone();
8320 if inlined {
8321 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8322 inner_offset = next_offset;
8323 } else {
8324 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8325 inner_depth.increment()?;
8326 }
8327 let val_ref = self
8328 .illegal_packet
8329 .get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
8330 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
8331 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8332 {
8333 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8334 }
8335 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8336 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8337 }
8338 }
8339
8340 next_offset += envelope_size;
8341 _next_ordinal_to_read += 1;
8342 if next_offset >= end_offset {
8343 return Ok(());
8344 }
8345
8346 while _next_ordinal_to_read < 3 {
8348 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8349 _next_ordinal_to_read += 1;
8350 next_offset += envelope_size;
8351 }
8352
8353 let next_out_of_line = decoder.next_out_of_line();
8354 let handles_before = decoder.remaining_handles();
8355 if let Some((inlined, num_bytes, num_handles)) =
8356 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8357 {
8358 let member_inline_size =
8359 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
8360 decoder.context,
8361 );
8362 if inlined != (member_inline_size <= 4) {
8363 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8364 }
8365 let inner_offset;
8366 let mut inner_depth = depth.clone();
8367 if inlined {
8368 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8369 inner_offset = next_offset;
8370 } else {
8371 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8372 inner_depth.increment()?;
8373 }
8374 let val_ref = self
8375 .unsupported_protocol
8376 .get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
8377 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
8378 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8379 {
8380 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8381 }
8382 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8383 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8384 }
8385 }
8386
8387 next_offset += envelope_size;
8388 _next_ordinal_to_read += 1;
8389 if next_offset >= end_offset {
8390 return Ok(());
8391 }
8392
8393 while _next_ordinal_to_read < 4 {
8395 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8396 _next_ordinal_to_read += 1;
8397 next_offset += envelope_size;
8398 }
8399
8400 let next_out_of_line = decoder.next_out_of_line();
8401 let handles_before = decoder.remaining_handles();
8402 if let Some((inlined, num_bytes, num_handles)) =
8403 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8404 {
8405 let member_inline_size =
8406 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
8407 decoder.context,
8408 );
8409 if inlined != (member_inline_size <= 4) {
8410 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8411 }
8412 let inner_offset;
8413 let mut inner_depth = depth.clone();
8414 if inlined {
8415 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8416 inner_offset = next_offset;
8417 } else {
8418 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8419 inner_depth.increment()?;
8420 }
8421 let val_ref =
8422 self.no_mapping.get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
8423 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
8424 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8425 {
8426 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8427 }
8428 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8429 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8430 }
8431 }
8432
8433 next_offset += envelope_size;
8434
8435 while next_offset < end_offset {
8437 _next_ordinal_to_read += 1;
8438 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8439 next_offset += envelope_size;
8440 }
8441
8442 Ok(())
8443 }
8444 }
8445
8446 impl Nat64Info {
8447 #[inline(always)]
8448 fn max_ordinal_present(&self) -> u64 {
8449 if let Some(_) = self.nat64_protocol_counters {
8450 return 4;
8451 }
8452 if let Some(_) = self.nat64_error_counters {
8453 return 3;
8454 }
8455 if let Some(_) = self.nat64_mappings {
8456 return 2;
8457 }
8458 if let Some(_) = self.nat64_state {
8459 return 1;
8460 }
8461 0
8462 }
8463 }
8464
8465 impl fidl::encoding::ValueTypeMarker for Nat64Info {
8466 type Borrowed<'a> = &'a Self;
8467 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8468 value
8469 }
8470 }
8471
8472 unsafe impl fidl::encoding::TypeMarker for Nat64Info {
8473 type Owned = Self;
8474
8475 #[inline(always)]
8476 fn inline_align(_context: fidl::encoding::Context) -> usize {
8477 8
8478 }
8479
8480 #[inline(always)]
8481 fn inline_size(_context: fidl::encoding::Context) -> usize {
8482 16
8483 }
8484 }
8485
8486 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64Info, D>
8487 for &Nat64Info
8488 {
8489 unsafe fn encode(
8490 self,
8491 encoder: &mut fidl::encoding::Encoder<'_, D>,
8492 offset: usize,
8493 mut depth: fidl::encoding::Depth,
8494 ) -> fidl::Result<()> {
8495 encoder.debug_check_bounds::<Nat64Info>(offset);
8496 let max_ordinal: u64 = self.max_ordinal_present();
8498 encoder.write_num(max_ordinal, offset);
8499 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8500 if max_ordinal == 0 {
8502 return Ok(());
8503 }
8504 depth.increment()?;
8505 let envelope_size = 8;
8506 let bytes_len = max_ordinal as usize * envelope_size;
8507 #[allow(unused_variables)]
8508 let offset = encoder.out_of_line_offset(bytes_len);
8509 let mut _prev_end_offset: usize = 0;
8510 if 1 > max_ordinal {
8511 return Ok(());
8512 }
8513
8514 let cur_offset: usize = (1 - 1) * envelope_size;
8517
8518 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8520
8521 fidl::encoding::encode_in_envelope_optional::<BorderRoutingNat64State, D>(
8526 self.nat64_state
8527 .as_ref()
8528 .map(<BorderRoutingNat64State as fidl::encoding::ValueTypeMarker>::borrow),
8529 encoder,
8530 offset + cur_offset,
8531 depth,
8532 )?;
8533
8534 _prev_end_offset = cur_offset + envelope_size;
8535 if 2 > max_ordinal {
8536 return Ok(());
8537 }
8538
8539 let cur_offset: usize = (2 - 1) * envelope_size;
8542
8543 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8545
8546 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Nat64Mapping>, D>(
8551 self.nat64_mappings.as_ref().map(<fidl::encoding::UnboundedVector<Nat64Mapping> as fidl::encoding::ValueTypeMarker>::borrow),
8552 encoder, offset + cur_offset, depth
8553 )?;
8554
8555 _prev_end_offset = cur_offset + envelope_size;
8556 if 3 > max_ordinal {
8557 return Ok(());
8558 }
8559
8560 let cur_offset: usize = (3 - 1) * envelope_size;
8563
8564 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8566
8567 fidl::encoding::encode_in_envelope_optional::<Nat64ErrorCounters, D>(
8572 self.nat64_error_counters
8573 .as_ref()
8574 .map(<Nat64ErrorCounters as fidl::encoding::ValueTypeMarker>::borrow),
8575 encoder,
8576 offset + cur_offset,
8577 depth,
8578 )?;
8579
8580 _prev_end_offset = cur_offset + envelope_size;
8581 if 4 > max_ordinal {
8582 return Ok(());
8583 }
8584
8585 let cur_offset: usize = (4 - 1) * envelope_size;
8588
8589 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8591
8592 fidl::encoding::encode_in_envelope_optional::<Nat64ProtocolCounters, D>(
8597 self.nat64_protocol_counters
8598 .as_ref()
8599 .map(<Nat64ProtocolCounters as fidl::encoding::ValueTypeMarker>::borrow),
8600 encoder,
8601 offset + cur_offset,
8602 depth,
8603 )?;
8604
8605 _prev_end_offset = cur_offset + envelope_size;
8606
8607 Ok(())
8608 }
8609 }
8610
8611 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64Info {
8612 #[inline(always)]
8613 fn new_empty() -> Self {
8614 Self::default()
8615 }
8616
8617 unsafe fn decode(
8618 &mut self,
8619 decoder: &mut fidl::encoding::Decoder<'_, D>,
8620 offset: usize,
8621 mut depth: fidl::encoding::Depth,
8622 ) -> fidl::Result<()> {
8623 decoder.debug_check_bounds::<Self>(offset);
8624 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8625 None => return Err(fidl::Error::NotNullable),
8626 Some(len) => len,
8627 };
8628 if len == 0 {
8630 return Ok(());
8631 };
8632 depth.increment()?;
8633 let envelope_size = 8;
8634 let bytes_len = len * envelope_size;
8635 let offset = decoder.out_of_line_offset(bytes_len)?;
8636 let mut _next_ordinal_to_read = 0;
8638 let mut next_offset = offset;
8639 let end_offset = offset + bytes_len;
8640 _next_ordinal_to_read += 1;
8641 if next_offset >= end_offset {
8642 return Ok(());
8643 }
8644
8645 while _next_ordinal_to_read < 1 {
8647 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8648 _next_ordinal_to_read += 1;
8649 next_offset += envelope_size;
8650 }
8651
8652 let next_out_of_line = decoder.next_out_of_line();
8653 let handles_before = decoder.remaining_handles();
8654 if let Some((inlined, num_bytes, num_handles)) =
8655 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8656 {
8657 let member_inline_size =
8658 <BorderRoutingNat64State as fidl::encoding::TypeMarker>::inline_size(
8659 decoder.context,
8660 );
8661 if inlined != (member_inline_size <= 4) {
8662 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8663 }
8664 let inner_offset;
8665 let mut inner_depth = depth.clone();
8666 if inlined {
8667 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8668 inner_offset = next_offset;
8669 } else {
8670 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8671 inner_depth.increment()?;
8672 }
8673 let val_ref = self
8674 .nat64_state
8675 .get_or_insert_with(|| fidl::new_empty!(BorderRoutingNat64State, D));
8676 fidl::decode!(
8677 BorderRoutingNat64State,
8678 D,
8679 val_ref,
8680 decoder,
8681 inner_offset,
8682 inner_depth
8683 )?;
8684 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8685 {
8686 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8687 }
8688 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8689 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8690 }
8691 }
8692
8693 next_offset += envelope_size;
8694 _next_ordinal_to_read += 1;
8695 if next_offset >= end_offset {
8696 return Ok(());
8697 }
8698
8699 while _next_ordinal_to_read < 2 {
8701 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8702 _next_ordinal_to_read += 1;
8703 next_offset += envelope_size;
8704 }
8705
8706 let next_out_of_line = decoder.next_out_of_line();
8707 let handles_before = decoder.remaining_handles();
8708 if let Some((inlined, num_bytes, num_handles)) =
8709 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8710 {
8711 let member_inline_size = <fidl::encoding::UnboundedVector<Nat64Mapping> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8712 if inlined != (member_inline_size <= 4) {
8713 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8714 }
8715 let inner_offset;
8716 let mut inner_depth = depth.clone();
8717 if inlined {
8718 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8719 inner_offset = next_offset;
8720 } else {
8721 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8722 inner_depth.increment()?;
8723 }
8724 let val_ref = self.nat64_mappings.get_or_insert_with(|| {
8725 fidl::new_empty!(fidl::encoding::UnboundedVector<Nat64Mapping>, D)
8726 });
8727 fidl::decode!(
8728 fidl::encoding::UnboundedVector<Nat64Mapping>,
8729 D,
8730 val_ref,
8731 decoder,
8732 inner_offset,
8733 inner_depth
8734 )?;
8735 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8736 {
8737 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8738 }
8739 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8740 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8741 }
8742 }
8743
8744 next_offset += envelope_size;
8745 _next_ordinal_to_read += 1;
8746 if next_offset >= end_offset {
8747 return Ok(());
8748 }
8749
8750 while _next_ordinal_to_read < 3 {
8752 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8753 _next_ordinal_to_read += 1;
8754 next_offset += envelope_size;
8755 }
8756
8757 let next_out_of_line = decoder.next_out_of_line();
8758 let handles_before = decoder.remaining_handles();
8759 if let Some((inlined, num_bytes, num_handles)) =
8760 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8761 {
8762 let member_inline_size =
8763 <Nat64ErrorCounters as fidl::encoding::TypeMarker>::inline_size(
8764 decoder.context,
8765 );
8766 if inlined != (member_inline_size <= 4) {
8767 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8768 }
8769 let inner_offset;
8770 let mut inner_depth = depth.clone();
8771 if inlined {
8772 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8773 inner_offset = next_offset;
8774 } else {
8775 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8776 inner_depth.increment()?;
8777 }
8778 let val_ref = self
8779 .nat64_error_counters
8780 .get_or_insert_with(|| fidl::new_empty!(Nat64ErrorCounters, D));
8781 fidl::decode!(Nat64ErrorCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
8782 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8783 {
8784 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8785 }
8786 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8787 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8788 }
8789 }
8790
8791 next_offset += envelope_size;
8792 _next_ordinal_to_read += 1;
8793 if next_offset >= end_offset {
8794 return Ok(());
8795 }
8796
8797 while _next_ordinal_to_read < 4 {
8799 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8800 _next_ordinal_to_read += 1;
8801 next_offset += envelope_size;
8802 }
8803
8804 let next_out_of_line = decoder.next_out_of_line();
8805 let handles_before = decoder.remaining_handles();
8806 if let Some((inlined, num_bytes, num_handles)) =
8807 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8808 {
8809 let member_inline_size =
8810 <Nat64ProtocolCounters as fidl::encoding::TypeMarker>::inline_size(
8811 decoder.context,
8812 );
8813 if inlined != (member_inline_size <= 4) {
8814 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8815 }
8816 let inner_offset;
8817 let mut inner_depth = depth.clone();
8818 if inlined {
8819 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8820 inner_offset = next_offset;
8821 } else {
8822 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8823 inner_depth.increment()?;
8824 }
8825 let val_ref = self
8826 .nat64_protocol_counters
8827 .get_or_insert_with(|| fidl::new_empty!(Nat64ProtocolCounters, D));
8828 fidl::decode!(
8829 Nat64ProtocolCounters,
8830 D,
8831 val_ref,
8832 decoder,
8833 inner_offset,
8834 inner_depth
8835 )?;
8836 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8837 {
8838 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8839 }
8840 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8841 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8842 }
8843 }
8844
8845 next_offset += envelope_size;
8846
8847 while next_offset < end_offset {
8849 _next_ordinal_to_read += 1;
8850 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8851 next_offset += envelope_size;
8852 }
8853
8854 Ok(())
8855 }
8856 }
8857
8858 impl Nat64Mapping {
8859 #[inline(always)]
8860 fn max_ordinal_present(&self) -> u64 {
8861 if let Some(_) = self.counters {
8862 return 5;
8863 }
8864 if let Some(_) = self.remaining_time_ms {
8865 return 4;
8866 }
8867 if let Some(_) = self.ip6_addr {
8868 return 3;
8869 }
8870 if let Some(_) = self.ip4_addr {
8871 return 2;
8872 }
8873 if let Some(_) = self.mapping_id {
8874 return 1;
8875 }
8876 0
8877 }
8878 }
8879
8880 impl fidl::encoding::ValueTypeMarker for Nat64Mapping {
8881 type Borrowed<'a> = &'a Self;
8882 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8883 value
8884 }
8885 }
8886
8887 unsafe impl fidl::encoding::TypeMarker for Nat64Mapping {
8888 type Owned = Self;
8889
8890 #[inline(always)]
8891 fn inline_align(_context: fidl::encoding::Context) -> usize {
8892 8
8893 }
8894
8895 #[inline(always)]
8896 fn inline_size(_context: fidl::encoding::Context) -> usize {
8897 16
8898 }
8899 }
8900
8901 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64Mapping, D>
8902 for &Nat64Mapping
8903 {
8904 unsafe fn encode(
8905 self,
8906 encoder: &mut fidl::encoding::Encoder<'_, D>,
8907 offset: usize,
8908 mut depth: fidl::encoding::Depth,
8909 ) -> fidl::Result<()> {
8910 encoder.debug_check_bounds::<Nat64Mapping>(offset);
8911 let max_ordinal: u64 = self.max_ordinal_present();
8913 encoder.write_num(max_ordinal, offset);
8914 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8915 if max_ordinal == 0 {
8917 return Ok(());
8918 }
8919 depth.increment()?;
8920 let envelope_size = 8;
8921 let bytes_len = max_ordinal as usize * envelope_size;
8922 #[allow(unused_variables)]
8923 let offset = encoder.out_of_line_offset(bytes_len);
8924 let mut _prev_end_offset: usize = 0;
8925 if 1 > max_ordinal {
8926 return Ok(());
8927 }
8928
8929 let cur_offset: usize = (1 - 1) * envelope_size;
8932
8933 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8935
8936 fidl::encoding::encode_in_envelope_optional::<u64, D>(
8941 self.mapping_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
8942 encoder,
8943 offset + cur_offset,
8944 depth,
8945 )?;
8946
8947 _prev_end_offset = cur_offset + envelope_size;
8948 if 2 > max_ordinal {
8949 return Ok(());
8950 }
8951
8952 let cur_offset: usize = (2 - 1) * envelope_size;
8955
8956 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8958
8959 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8964 self.ip4_addr.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8965 encoder, offset + cur_offset, depth
8966 )?;
8967
8968 _prev_end_offset = cur_offset + envelope_size;
8969 if 3 > max_ordinal {
8970 return Ok(());
8971 }
8972
8973 let cur_offset: usize = (3 - 1) * envelope_size;
8976
8977 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8979
8980 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8985 self.ip6_addr.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8986 encoder, offset + cur_offset, depth
8987 )?;
8988
8989 _prev_end_offset = cur_offset + envelope_size;
8990 if 4 > max_ordinal {
8991 return Ok(());
8992 }
8993
8994 let cur_offset: usize = (4 - 1) * envelope_size;
8997
8998 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9000
9001 fidl::encoding::encode_in_envelope_optional::<u32, D>(
9006 self.remaining_time_ms
9007 .as_ref()
9008 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
9009 encoder,
9010 offset + cur_offset,
9011 depth,
9012 )?;
9013
9014 _prev_end_offset = cur_offset + envelope_size;
9015 if 5 > max_ordinal {
9016 return Ok(());
9017 }
9018
9019 let cur_offset: usize = (5 - 1) * envelope_size;
9022
9023 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9025
9026 fidl::encoding::encode_in_envelope_optional::<Nat64ProtocolCounters, D>(
9031 self.counters
9032 .as_ref()
9033 .map(<Nat64ProtocolCounters as fidl::encoding::ValueTypeMarker>::borrow),
9034 encoder,
9035 offset + cur_offset,
9036 depth,
9037 )?;
9038
9039 _prev_end_offset = cur_offset + envelope_size;
9040
9041 Ok(())
9042 }
9043 }
9044
9045 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64Mapping {
9046 #[inline(always)]
9047 fn new_empty() -> Self {
9048 Self::default()
9049 }
9050
9051 unsafe fn decode(
9052 &mut self,
9053 decoder: &mut fidl::encoding::Decoder<'_, D>,
9054 offset: usize,
9055 mut depth: fidl::encoding::Depth,
9056 ) -> fidl::Result<()> {
9057 decoder.debug_check_bounds::<Self>(offset);
9058 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9059 None => return Err(fidl::Error::NotNullable),
9060 Some(len) => len,
9061 };
9062 if len == 0 {
9064 return Ok(());
9065 };
9066 depth.increment()?;
9067 let envelope_size = 8;
9068 let bytes_len = len * envelope_size;
9069 let offset = decoder.out_of_line_offset(bytes_len)?;
9070 let mut _next_ordinal_to_read = 0;
9072 let mut next_offset = offset;
9073 let end_offset = offset + bytes_len;
9074 _next_ordinal_to_read += 1;
9075 if next_offset >= end_offset {
9076 return Ok(());
9077 }
9078
9079 while _next_ordinal_to_read < 1 {
9081 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9082 _next_ordinal_to_read += 1;
9083 next_offset += envelope_size;
9084 }
9085
9086 let next_out_of_line = decoder.next_out_of_line();
9087 let handles_before = decoder.remaining_handles();
9088 if let Some((inlined, num_bytes, num_handles)) =
9089 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9090 {
9091 let member_inline_size =
9092 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9093 if inlined != (member_inline_size <= 4) {
9094 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9095 }
9096 let inner_offset;
9097 let mut inner_depth = depth.clone();
9098 if inlined {
9099 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9100 inner_offset = next_offset;
9101 } else {
9102 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9103 inner_depth.increment()?;
9104 }
9105 let val_ref = self.mapping_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9106 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9107 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9108 {
9109 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9110 }
9111 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9112 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9113 }
9114 }
9115
9116 next_offset += envelope_size;
9117 _next_ordinal_to_read += 1;
9118 if next_offset >= end_offset {
9119 return Ok(());
9120 }
9121
9122 while _next_ordinal_to_read < 2 {
9124 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9125 _next_ordinal_to_read += 1;
9126 next_offset += envelope_size;
9127 }
9128
9129 let next_out_of_line = decoder.next_out_of_line();
9130 let handles_before = decoder.remaining_handles();
9131 if let Some((inlined, num_bytes, num_handles)) =
9132 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9133 {
9134 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9135 if inlined != (member_inline_size <= 4) {
9136 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9137 }
9138 let inner_offset;
9139 let mut inner_depth = depth.clone();
9140 if inlined {
9141 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9142 inner_offset = next_offset;
9143 } else {
9144 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9145 inner_depth.increment()?;
9146 }
9147 let val_ref = self.ip4_addr.get_or_insert_with(|| {
9148 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
9149 });
9150 fidl::decode!(
9151 fidl::encoding::UnboundedVector<u8>,
9152 D,
9153 val_ref,
9154 decoder,
9155 inner_offset,
9156 inner_depth
9157 )?;
9158 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9159 {
9160 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9161 }
9162 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9163 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9164 }
9165 }
9166
9167 next_offset += envelope_size;
9168 _next_ordinal_to_read += 1;
9169 if next_offset >= end_offset {
9170 return Ok(());
9171 }
9172
9173 while _next_ordinal_to_read < 3 {
9175 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9176 _next_ordinal_to_read += 1;
9177 next_offset += envelope_size;
9178 }
9179
9180 let next_out_of_line = decoder.next_out_of_line();
9181 let handles_before = decoder.remaining_handles();
9182 if let Some((inlined, num_bytes, num_handles)) =
9183 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9184 {
9185 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9186 if inlined != (member_inline_size <= 4) {
9187 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9188 }
9189 let inner_offset;
9190 let mut inner_depth = depth.clone();
9191 if inlined {
9192 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9193 inner_offset = next_offset;
9194 } else {
9195 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9196 inner_depth.increment()?;
9197 }
9198 let val_ref = self.ip6_addr.get_or_insert_with(|| {
9199 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
9200 });
9201 fidl::decode!(
9202 fidl::encoding::UnboundedVector<u8>,
9203 D,
9204 val_ref,
9205 decoder,
9206 inner_offset,
9207 inner_depth
9208 )?;
9209 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9210 {
9211 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9212 }
9213 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9214 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9215 }
9216 }
9217
9218 next_offset += envelope_size;
9219 _next_ordinal_to_read += 1;
9220 if next_offset >= end_offset {
9221 return Ok(());
9222 }
9223
9224 while _next_ordinal_to_read < 4 {
9226 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9227 _next_ordinal_to_read += 1;
9228 next_offset += envelope_size;
9229 }
9230
9231 let next_out_of_line = decoder.next_out_of_line();
9232 let handles_before = decoder.remaining_handles();
9233 if let Some((inlined, num_bytes, num_handles)) =
9234 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9235 {
9236 let member_inline_size =
9237 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9238 if inlined != (member_inline_size <= 4) {
9239 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9240 }
9241 let inner_offset;
9242 let mut inner_depth = depth.clone();
9243 if inlined {
9244 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9245 inner_offset = next_offset;
9246 } else {
9247 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9248 inner_depth.increment()?;
9249 }
9250 let val_ref =
9251 self.remaining_time_ms.get_or_insert_with(|| fidl::new_empty!(u32, D));
9252 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
9253 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9254 {
9255 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9256 }
9257 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9258 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9259 }
9260 }
9261
9262 next_offset += envelope_size;
9263 _next_ordinal_to_read += 1;
9264 if next_offset >= end_offset {
9265 return Ok(());
9266 }
9267
9268 while _next_ordinal_to_read < 5 {
9270 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9271 _next_ordinal_to_read += 1;
9272 next_offset += envelope_size;
9273 }
9274
9275 let next_out_of_line = decoder.next_out_of_line();
9276 let handles_before = decoder.remaining_handles();
9277 if let Some((inlined, num_bytes, num_handles)) =
9278 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9279 {
9280 let member_inline_size =
9281 <Nat64ProtocolCounters as fidl::encoding::TypeMarker>::inline_size(
9282 decoder.context,
9283 );
9284 if inlined != (member_inline_size <= 4) {
9285 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9286 }
9287 let inner_offset;
9288 let mut inner_depth = depth.clone();
9289 if inlined {
9290 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9291 inner_offset = next_offset;
9292 } else {
9293 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9294 inner_depth.increment()?;
9295 }
9296 let val_ref =
9297 self.counters.get_or_insert_with(|| fidl::new_empty!(Nat64ProtocolCounters, D));
9298 fidl::decode!(
9299 Nat64ProtocolCounters,
9300 D,
9301 val_ref,
9302 decoder,
9303 inner_offset,
9304 inner_depth
9305 )?;
9306 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9307 {
9308 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9309 }
9310 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9311 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9312 }
9313 }
9314
9315 next_offset += envelope_size;
9316
9317 while next_offset < end_offset {
9319 _next_ordinal_to_read += 1;
9320 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9321 next_offset += envelope_size;
9322 }
9323
9324 Ok(())
9325 }
9326 }
9327
9328 impl Nat64PacketCounters {
9329 #[inline(always)]
9330 fn max_ordinal_present(&self) -> u64 {
9331 if let Some(_) = self.ipv6_to_ipv4_packets {
9332 return 2;
9333 }
9334 if let Some(_) = self.ipv4_to_ipv6_packets {
9335 return 1;
9336 }
9337 0
9338 }
9339 }
9340
9341 impl fidl::encoding::ValueTypeMarker for Nat64PacketCounters {
9342 type Borrowed<'a> = &'a Self;
9343 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9344 value
9345 }
9346 }
9347
9348 unsafe impl fidl::encoding::TypeMarker for Nat64PacketCounters {
9349 type Owned = Self;
9350
9351 #[inline(always)]
9352 fn inline_align(_context: fidl::encoding::Context) -> usize {
9353 8
9354 }
9355
9356 #[inline(always)]
9357 fn inline_size(_context: fidl::encoding::Context) -> usize {
9358 16
9359 }
9360 }
9361
9362 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64PacketCounters, D>
9363 for &Nat64PacketCounters
9364 {
9365 unsafe fn encode(
9366 self,
9367 encoder: &mut fidl::encoding::Encoder<'_, D>,
9368 offset: usize,
9369 mut depth: fidl::encoding::Depth,
9370 ) -> fidl::Result<()> {
9371 encoder.debug_check_bounds::<Nat64PacketCounters>(offset);
9372 let max_ordinal: u64 = self.max_ordinal_present();
9374 encoder.write_num(max_ordinal, offset);
9375 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9376 if max_ordinal == 0 {
9378 return Ok(());
9379 }
9380 depth.increment()?;
9381 let envelope_size = 8;
9382 let bytes_len = max_ordinal as usize * envelope_size;
9383 #[allow(unused_variables)]
9384 let offset = encoder.out_of_line_offset(bytes_len);
9385 let mut _prev_end_offset: usize = 0;
9386 if 1 > max_ordinal {
9387 return Ok(());
9388 }
9389
9390 let cur_offset: usize = (1 - 1) * envelope_size;
9393
9394 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9396
9397 fidl::encoding::encode_in_envelope_optional::<u64, D>(
9402 self.ipv4_to_ipv6_packets
9403 .as_ref()
9404 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9405 encoder,
9406 offset + cur_offset,
9407 depth,
9408 )?;
9409
9410 _prev_end_offset = cur_offset + envelope_size;
9411 if 2 > max_ordinal {
9412 return Ok(());
9413 }
9414
9415 let cur_offset: usize = (2 - 1) * envelope_size;
9418
9419 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9421
9422 fidl::encoding::encode_in_envelope_optional::<u64, D>(
9427 self.ipv6_to_ipv4_packets
9428 .as_ref()
9429 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9430 encoder,
9431 offset + cur_offset,
9432 depth,
9433 )?;
9434
9435 _prev_end_offset = cur_offset + envelope_size;
9436
9437 Ok(())
9438 }
9439 }
9440
9441 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64PacketCounters {
9442 #[inline(always)]
9443 fn new_empty() -> Self {
9444 Self::default()
9445 }
9446
9447 unsafe fn decode(
9448 &mut self,
9449 decoder: &mut fidl::encoding::Decoder<'_, D>,
9450 offset: usize,
9451 mut depth: fidl::encoding::Depth,
9452 ) -> fidl::Result<()> {
9453 decoder.debug_check_bounds::<Self>(offset);
9454 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9455 None => return Err(fidl::Error::NotNullable),
9456 Some(len) => len,
9457 };
9458 if len == 0 {
9460 return Ok(());
9461 };
9462 depth.increment()?;
9463 let envelope_size = 8;
9464 let bytes_len = len * envelope_size;
9465 let offset = decoder.out_of_line_offset(bytes_len)?;
9466 let mut _next_ordinal_to_read = 0;
9468 let mut next_offset = offset;
9469 let end_offset = offset + bytes_len;
9470 _next_ordinal_to_read += 1;
9471 if next_offset >= end_offset {
9472 return Ok(());
9473 }
9474
9475 while _next_ordinal_to_read < 1 {
9477 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9478 _next_ordinal_to_read += 1;
9479 next_offset += envelope_size;
9480 }
9481
9482 let next_out_of_line = decoder.next_out_of_line();
9483 let handles_before = decoder.remaining_handles();
9484 if let Some((inlined, num_bytes, num_handles)) =
9485 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9486 {
9487 let member_inline_size =
9488 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9489 if inlined != (member_inline_size <= 4) {
9490 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9491 }
9492 let inner_offset;
9493 let mut inner_depth = depth.clone();
9494 if inlined {
9495 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9496 inner_offset = next_offset;
9497 } else {
9498 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9499 inner_depth.increment()?;
9500 }
9501 let val_ref =
9502 self.ipv4_to_ipv6_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
9503 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9504 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9505 {
9506 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9507 }
9508 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9509 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9510 }
9511 }
9512
9513 next_offset += envelope_size;
9514 _next_ordinal_to_read += 1;
9515 if next_offset >= end_offset {
9516 return Ok(());
9517 }
9518
9519 while _next_ordinal_to_read < 2 {
9521 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9522 _next_ordinal_to_read += 1;
9523 next_offset += envelope_size;
9524 }
9525
9526 let next_out_of_line = decoder.next_out_of_line();
9527 let handles_before = decoder.remaining_handles();
9528 if let Some((inlined, num_bytes, num_handles)) =
9529 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9530 {
9531 let member_inline_size =
9532 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9533 if inlined != (member_inline_size <= 4) {
9534 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9535 }
9536 let inner_offset;
9537 let mut inner_depth = depth.clone();
9538 if inlined {
9539 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9540 inner_offset = next_offset;
9541 } else {
9542 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9543 inner_depth.increment()?;
9544 }
9545 let val_ref =
9546 self.ipv6_to_ipv4_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
9547 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9548 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9549 {
9550 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9551 }
9552 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9553 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9554 }
9555 }
9556
9557 next_offset += envelope_size;
9558
9559 while next_offset < end_offset {
9561 _next_ordinal_to_read += 1;
9562 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9563 next_offset += envelope_size;
9564 }
9565
9566 Ok(())
9567 }
9568 }
9569
9570 impl Nat64ProtocolCounters {
9571 #[inline(always)]
9572 fn max_ordinal_present(&self) -> u64 {
9573 if let Some(_) = self.total {
9574 return 4;
9575 }
9576 if let Some(_) = self.icmp {
9577 return 3;
9578 }
9579 if let Some(_) = self.udp {
9580 return 2;
9581 }
9582 if let Some(_) = self.tcp {
9583 return 1;
9584 }
9585 0
9586 }
9587 }
9588
9589 impl fidl::encoding::ValueTypeMarker for Nat64ProtocolCounters {
9590 type Borrowed<'a> = &'a Self;
9591 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9592 value
9593 }
9594 }
9595
9596 unsafe impl fidl::encoding::TypeMarker for Nat64ProtocolCounters {
9597 type Owned = Self;
9598
9599 #[inline(always)]
9600 fn inline_align(_context: fidl::encoding::Context) -> usize {
9601 8
9602 }
9603
9604 #[inline(always)]
9605 fn inline_size(_context: fidl::encoding::Context) -> usize {
9606 16
9607 }
9608 }
9609
9610 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64ProtocolCounters, D>
9611 for &Nat64ProtocolCounters
9612 {
9613 unsafe fn encode(
9614 self,
9615 encoder: &mut fidl::encoding::Encoder<'_, D>,
9616 offset: usize,
9617 mut depth: fidl::encoding::Depth,
9618 ) -> fidl::Result<()> {
9619 encoder.debug_check_bounds::<Nat64ProtocolCounters>(offset);
9620 let max_ordinal: u64 = self.max_ordinal_present();
9622 encoder.write_num(max_ordinal, offset);
9623 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9624 if max_ordinal == 0 {
9626 return Ok(());
9627 }
9628 depth.increment()?;
9629 let envelope_size = 8;
9630 let bytes_len = max_ordinal as usize * envelope_size;
9631 #[allow(unused_variables)]
9632 let offset = encoder.out_of_line_offset(bytes_len);
9633 let mut _prev_end_offset: usize = 0;
9634 if 1 > max_ordinal {
9635 return Ok(());
9636 }
9637
9638 let cur_offset: usize = (1 - 1) * envelope_size;
9641
9642 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9644
9645 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
9650 self.tcp
9651 .as_ref()
9652 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
9653 encoder,
9654 offset + cur_offset,
9655 depth,
9656 )?;
9657
9658 _prev_end_offset = cur_offset + envelope_size;
9659 if 2 > max_ordinal {
9660 return Ok(());
9661 }
9662
9663 let cur_offset: usize = (2 - 1) * envelope_size;
9666
9667 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9669
9670 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
9675 self.udp
9676 .as_ref()
9677 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
9678 encoder,
9679 offset + cur_offset,
9680 depth,
9681 )?;
9682
9683 _prev_end_offset = cur_offset + envelope_size;
9684 if 3 > max_ordinal {
9685 return Ok(());
9686 }
9687
9688 let cur_offset: usize = (3 - 1) * envelope_size;
9691
9692 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9694
9695 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
9700 self.icmp
9701 .as_ref()
9702 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
9703 encoder,
9704 offset + cur_offset,
9705 depth,
9706 )?;
9707
9708 _prev_end_offset = cur_offset + envelope_size;
9709 if 4 > max_ordinal {
9710 return Ok(());
9711 }
9712
9713 let cur_offset: usize = (4 - 1) * envelope_size;
9716
9717 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9719
9720 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
9725 self.total
9726 .as_ref()
9727 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
9728 encoder,
9729 offset + cur_offset,
9730 depth,
9731 )?;
9732
9733 _prev_end_offset = cur_offset + envelope_size;
9734
9735 Ok(())
9736 }
9737 }
9738
9739 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64ProtocolCounters {
9740 #[inline(always)]
9741 fn new_empty() -> Self {
9742 Self::default()
9743 }
9744
9745 unsafe fn decode(
9746 &mut self,
9747 decoder: &mut fidl::encoding::Decoder<'_, D>,
9748 offset: usize,
9749 mut depth: fidl::encoding::Depth,
9750 ) -> fidl::Result<()> {
9751 decoder.debug_check_bounds::<Self>(offset);
9752 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9753 None => return Err(fidl::Error::NotNullable),
9754 Some(len) => len,
9755 };
9756 if len == 0 {
9758 return Ok(());
9759 };
9760 depth.increment()?;
9761 let envelope_size = 8;
9762 let bytes_len = len * envelope_size;
9763 let offset = decoder.out_of_line_offset(bytes_len)?;
9764 let mut _next_ordinal_to_read = 0;
9766 let mut next_offset = offset;
9767 let end_offset = offset + bytes_len;
9768 _next_ordinal_to_read += 1;
9769 if next_offset >= end_offset {
9770 return Ok(());
9771 }
9772
9773 while _next_ordinal_to_read < 1 {
9775 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9776 _next_ordinal_to_read += 1;
9777 next_offset += envelope_size;
9778 }
9779
9780 let next_out_of_line = decoder.next_out_of_line();
9781 let handles_before = decoder.remaining_handles();
9782 if let Some((inlined, num_bytes, num_handles)) =
9783 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9784 {
9785 let member_inline_size =
9786 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
9787 decoder.context,
9788 );
9789 if inlined != (member_inline_size <= 4) {
9790 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9791 }
9792 let inner_offset;
9793 let mut inner_depth = depth.clone();
9794 if inlined {
9795 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9796 inner_offset = next_offset;
9797 } else {
9798 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9799 inner_depth.increment()?;
9800 }
9801 let val_ref =
9802 self.tcp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
9803 fidl::decode!(
9804 Nat64TrafficCounters,
9805 D,
9806 val_ref,
9807 decoder,
9808 inner_offset,
9809 inner_depth
9810 )?;
9811 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9812 {
9813 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9814 }
9815 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9816 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9817 }
9818 }
9819
9820 next_offset += envelope_size;
9821 _next_ordinal_to_read += 1;
9822 if next_offset >= end_offset {
9823 return Ok(());
9824 }
9825
9826 while _next_ordinal_to_read < 2 {
9828 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9829 _next_ordinal_to_read += 1;
9830 next_offset += envelope_size;
9831 }
9832
9833 let next_out_of_line = decoder.next_out_of_line();
9834 let handles_before = decoder.remaining_handles();
9835 if let Some((inlined, num_bytes, num_handles)) =
9836 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9837 {
9838 let member_inline_size =
9839 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
9840 decoder.context,
9841 );
9842 if inlined != (member_inline_size <= 4) {
9843 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9844 }
9845 let inner_offset;
9846 let mut inner_depth = depth.clone();
9847 if inlined {
9848 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9849 inner_offset = next_offset;
9850 } else {
9851 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9852 inner_depth.increment()?;
9853 }
9854 let val_ref =
9855 self.udp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
9856 fidl::decode!(
9857 Nat64TrafficCounters,
9858 D,
9859 val_ref,
9860 decoder,
9861 inner_offset,
9862 inner_depth
9863 )?;
9864 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9865 {
9866 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9867 }
9868 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9869 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9870 }
9871 }
9872
9873 next_offset += envelope_size;
9874 _next_ordinal_to_read += 1;
9875 if next_offset >= end_offset {
9876 return Ok(());
9877 }
9878
9879 while _next_ordinal_to_read < 3 {
9881 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9882 _next_ordinal_to_read += 1;
9883 next_offset += envelope_size;
9884 }
9885
9886 let next_out_of_line = decoder.next_out_of_line();
9887 let handles_before = decoder.remaining_handles();
9888 if let Some((inlined, num_bytes, num_handles)) =
9889 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9890 {
9891 let member_inline_size =
9892 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
9893 decoder.context,
9894 );
9895 if inlined != (member_inline_size <= 4) {
9896 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9897 }
9898 let inner_offset;
9899 let mut inner_depth = depth.clone();
9900 if inlined {
9901 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9902 inner_offset = next_offset;
9903 } else {
9904 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9905 inner_depth.increment()?;
9906 }
9907 let val_ref =
9908 self.icmp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
9909 fidl::decode!(
9910 Nat64TrafficCounters,
9911 D,
9912 val_ref,
9913 decoder,
9914 inner_offset,
9915 inner_depth
9916 )?;
9917 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9918 {
9919 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9920 }
9921 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9922 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9923 }
9924 }
9925
9926 next_offset += envelope_size;
9927 _next_ordinal_to_read += 1;
9928 if next_offset >= end_offset {
9929 return Ok(());
9930 }
9931
9932 while _next_ordinal_to_read < 4 {
9934 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9935 _next_ordinal_to_read += 1;
9936 next_offset += envelope_size;
9937 }
9938
9939 let next_out_of_line = decoder.next_out_of_line();
9940 let handles_before = decoder.remaining_handles();
9941 if let Some((inlined, num_bytes, num_handles)) =
9942 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9943 {
9944 let member_inline_size =
9945 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
9946 decoder.context,
9947 );
9948 if inlined != (member_inline_size <= 4) {
9949 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9950 }
9951 let inner_offset;
9952 let mut inner_depth = depth.clone();
9953 if inlined {
9954 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9955 inner_offset = next_offset;
9956 } else {
9957 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9958 inner_depth.increment()?;
9959 }
9960 let val_ref =
9961 self.total.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
9962 fidl::decode!(
9963 Nat64TrafficCounters,
9964 D,
9965 val_ref,
9966 decoder,
9967 inner_offset,
9968 inner_depth
9969 )?;
9970 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9971 {
9972 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9973 }
9974 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9975 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9976 }
9977 }
9978
9979 next_offset += envelope_size;
9980
9981 while next_offset < end_offset {
9983 _next_ordinal_to_read += 1;
9984 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9985 next_offset += envelope_size;
9986 }
9987
9988 Ok(())
9989 }
9990 }
9991
9992 impl Nat64TrafficCounters {
9993 #[inline(always)]
9994 fn max_ordinal_present(&self) -> u64 {
9995 if let Some(_) = self.ipv6_to_ipv4_bytes {
9996 return 4;
9997 }
9998 if let Some(_) = self.ipv6_to_ipv4_packets {
9999 return 3;
10000 }
10001 if let Some(_) = self.ipv4_to_ipv6_bytes {
10002 return 2;
10003 }
10004 if let Some(_) = self.ipv4_to_ipv6_packets {
10005 return 1;
10006 }
10007 0
10008 }
10009 }
10010
10011 impl fidl::encoding::ValueTypeMarker for Nat64TrafficCounters {
10012 type Borrowed<'a> = &'a Self;
10013 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10014 value
10015 }
10016 }
10017
10018 unsafe impl fidl::encoding::TypeMarker for Nat64TrafficCounters {
10019 type Owned = Self;
10020
10021 #[inline(always)]
10022 fn inline_align(_context: fidl::encoding::Context) -> usize {
10023 8
10024 }
10025
10026 #[inline(always)]
10027 fn inline_size(_context: fidl::encoding::Context) -> usize {
10028 16
10029 }
10030 }
10031
10032 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64TrafficCounters, D>
10033 for &Nat64TrafficCounters
10034 {
10035 unsafe fn encode(
10036 self,
10037 encoder: &mut fidl::encoding::Encoder<'_, D>,
10038 offset: usize,
10039 mut depth: fidl::encoding::Depth,
10040 ) -> fidl::Result<()> {
10041 encoder.debug_check_bounds::<Nat64TrafficCounters>(offset);
10042 let max_ordinal: u64 = self.max_ordinal_present();
10044 encoder.write_num(max_ordinal, offset);
10045 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10046 if max_ordinal == 0 {
10048 return Ok(());
10049 }
10050 depth.increment()?;
10051 let envelope_size = 8;
10052 let bytes_len = max_ordinal as usize * envelope_size;
10053 #[allow(unused_variables)]
10054 let offset = encoder.out_of_line_offset(bytes_len);
10055 let mut _prev_end_offset: usize = 0;
10056 if 1 > max_ordinal {
10057 return Ok(());
10058 }
10059
10060 let cur_offset: usize = (1 - 1) * envelope_size;
10063
10064 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10066
10067 fidl::encoding::encode_in_envelope_optional::<u64, D>(
10072 self.ipv4_to_ipv6_packets
10073 .as_ref()
10074 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
10075 encoder,
10076 offset + cur_offset,
10077 depth,
10078 )?;
10079
10080 _prev_end_offset = cur_offset + envelope_size;
10081 if 2 > max_ordinal {
10082 return Ok(());
10083 }
10084
10085 let cur_offset: usize = (2 - 1) * envelope_size;
10088
10089 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10091
10092 fidl::encoding::encode_in_envelope_optional::<u64, D>(
10097 self.ipv4_to_ipv6_bytes
10098 .as_ref()
10099 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
10100 encoder,
10101 offset + cur_offset,
10102 depth,
10103 )?;
10104
10105 _prev_end_offset = cur_offset + envelope_size;
10106 if 3 > max_ordinal {
10107 return Ok(());
10108 }
10109
10110 let cur_offset: usize = (3 - 1) * envelope_size;
10113
10114 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10116
10117 fidl::encoding::encode_in_envelope_optional::<u64, D>(
10122 self.ipv6_to_ipv4_packets
10123 .as_ref()
10124 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
10125 encoder,
10126 offset + cur_offset,
10127 depth,
10128 )?;
10129
10130 _prev_end_offset = cur_offset + envelope_size;
10131 if 4 > max_ordinal {
10132 return Ok(());
10133 }
10134
10135 let cur_offset: usize = (4 - 1) * envelope_size;
10138
10139 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10141
10142 fidl::encoding::encode_in_envelope_optional::<u64, D>(
10147 self.ipv6_to_ipv4_bytes
10148 .as_ref()
10149 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
10150 encoder,
10151 offset + cur_offset,
10152 depth,
10153 )?;
10154
10155 _prev_end_offset = cur_offset + envelope_size;
10156
10157 Ok(())
10158 }
10159 }
10160
10161 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64TrafficCounters {
10162 #[inline(always)]
10163 fn new_empty() -> Self {
10164 Self::default()
10165 }
10166
10167 unsafe fn decode(
10168 &mut self,
10169 decoder: &mut fidl::encoding::Decoder<'_, D>,
10170 offset: usize,
10171 mut depth: fidl::encoding::Depth,
10172 ) -> fidl::Result<()> {
10173 decoder.debug_check_bounds::<Self>(offset);
10174 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10175 None => return Err(fidl::Error::NotNullable),
10176 Some(len) => len,
10177 };
10178 if len == 0 {
10180 return Ok(());
10181 };
10182 depth.increment()?;
10183 let envelope_size = 8;
10184 let bytes_len = len * envelope_size;
10185 let offset = decoder.out_of_line_offset(bytes_len)?;
10186 let mut _next_ordinal_to_read = 0;
10188 let mut next_offset = offset;
10189 let end_offset = offset + bytes_len;
10190 _next_ordinal_to_read += 1;
10191 if next_offset >= end_offset {
10192 return Ok(());
10193 }
10194
10195 while _next_ordinal_to_read < 1 {
10197 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10198 _next_ordinal_to_read += 1;
10199 next_offset += envelope_size;
10200 }
10201
10202 let next_out_of_line = decoder.next_out_of_line();
10203 let handles_before = decoder.remaining_handles();
10204 if let Some((inlined, num_bytes, num_handles)) =
10205 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10206 {
10207 let member_inline_size =
10208 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10209 if inlined != (member_inline_size <= 4) {
10210 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10211 }
10212 let inner_offset;
10213 let mut inner_depth = depth.clone();
10214 if inlined {
10215 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10216 inner_offset = next_offset;
10217 } else {
10218 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10219 inner_depth.increment()?;
10220 }
10221 let val_ref =
10222 self.ipv4_to_ipv6_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
10223 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
10224 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10225 {
10226 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10227 }
10228 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10229 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10230 }
10231 }
10232
10233 next_offset += envelope_size;
10234 _next_ordinal_to_read += 1;
10235 if next_offset >= end_offset {
10236 return Ok(());
10237 }
10238
10239 while _next_ordinal_to_read < 2 {
10241 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10242 _next_ordinal_to_read += 1;
10243 next_offset += envelope_size;
10244 }
10245
10246 let next_out_of_line = decoder.next_out_of_line();
10247 let handles_before = decoder.remaining_handles();
10248 if let Some((inlined, num_bytes, num_handles)) =
10249 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10250 {
10251 let member_inline_size =
10252 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10253 if inlined != (member_inline_size <= 4) {
10254 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10255 }
10256 let inner_offset;
10257 let mut inner_depth = depth.clone();
10258 if inlined {
10259 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10260 inner_offset = next_offset;
10261 } else {
10262 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10263 inner_depth.increment()?;
10264 }
10265 let val_ref =
10266 self.ipv4_to_ipv6_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
10267 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
10268 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10269 {
10270 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10271 }
10272 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10273 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10274 }
10275 }
10276
10277 next_offset += envelope_size;
10278 _next_ordinal_to_read += 1;
10279 if next_offset >= end_offset {
10280 return Ok(());
10281 }
10282
10283 while _next_ordinal_to_read < 3 {
10285 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10286 _next_ordinal_to_read += 1;
10287 next_offset += envelope_size;
10288 }
10289
10290 let next_out_of_line = decoder.next_out_of_line();
10291 let handles_before = decoder.remaining_handles();
10292 if let Some((inlined, num_bytes, num_handles)) =
10293 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10294 {
10295 let member_inline_size =
10296 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10297 if inlined != (member_inline_size <= 4) {
10298 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10299 }
10300 let inner_offset;
10301 let mut inner_depth = depth.clone();
10302 if inlined {
10303 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10304 inner_offset = next_offset;
10305 } else {
10306 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10307 inner_depth.increment()?;
10308 }
10309 let val_ref =
10310 self.ipv6_to_ipv4_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
10311 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
10312 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10313 {
10314 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10315 }
10316 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10317 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10318 }
10319 }
10320
10321 next_offset += envelope_size;
10322 _next_ordinal_to_read += 1;
10323 if next_offset >= end_offset {
10324 return Ok(());
10325 }
10326
10327 while _next_ordinal_to_read < 4 {
10329 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10330 _next_ordinal_to_read += 1;
10331 next_offset += envelope_size;
10332 }
10333
10334 let next_out_of_line = decoder.next_out_of_line();
10335 let handles_before = decoder.remaining_handles();
10336 if let Some((inlined, num_bytes, num_handles)) =
10337 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10338 {
10339 let member_inline_size =
10340 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10341 if inlined != (member_inline_size <= 4) {
10342 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10343 }
10344 let inner_offset;
10345 let mut inner_depth = depth.clone();
10346 if inlined {
10347 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10348 inner_offset = next_offset;
10349 } else {
10350 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10351 inner_depth.increment()?;
10352 }
10353 let val_ref =
10354 self.ipv6_to_ipv4_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
10355 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
10356 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10357 {
10358 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10359 }
10360 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10361 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10362 }
10363 }
10364
10365 next_offset += envelope_size;
10366
10367 while next_offset < end_offset {
10369 _next_ordinal_to_read += 1;
10370 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10371 next_offset += envelope_size;
10372 }
10373
10374 Ok(())
10375 }
10376 }
10377
10378 impl NetworkScanParameters {
10379 #[inline(always)]
10380 fn max_ordinal_present(&self) -> u64 {
10381 if let Some(_) = self.tx_power_dbm {
10382 return 2;
10383 }
10384 if let Some(_) = self.channels {
10385 return 1;
10386 }
10387 0
10388 }
10389 }
10390
10391 impl fidl::encoding::ValueTypeMarker for NetworkScanParameters {
10392 type Borrowed<'a> = &'a Self;
10393 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10394 value
10395 }
10396 }
10397
10398 unsafe impl fidl::encoding::TypeMarker for NetworkScanParameters {
10399 type Owned = Self;
10400
10401 #[inline(always)]
10402 fn inline_align(_context: fidl::encoding::Context) -> usize {
10403 8
10404 }
10405
10406 #[inline(always)]
10407 fn inline_size(_context: fidl::encoding::Context) -> usize {
10408 16
10409 }
10410 }
10411
10412 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetworkScanParameters, D>
10413 for &NetworkScanParameters
10414 {
10415 unsafe fn encode(
10416 self,
10417 encoder: &mut fidl::encoding::Encoder<'_, D>,
10418 offset: usize,
10419 mut depth: fidl::encoding::Depth,
10420 ) -> fidl::Result<()> {
10421 encoder.debug_check_bounds::<NetworkScanParameters>(offset);
10422 let max_ordinal: u64 = self.max_ordinal_present();
10424 encoder.write_num(max_ordinal, offset);
10425 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10426 if max_ordinal == 0 {
10428 return Ok(());
10429 }
10430 depth.increment()?;
10431 let envelope_size = 8;
10432 let bytes_len = max_ordinal as usize * envelope_size;
10433 #[allow(unused_variables)]
10434 let offset = encoder.out_of_line_offset(bytes_len);
10435 let mut _prev_end_offset: usize = 0;
10436 if 1 > max_ordinal {
10437 return Ok(());
10438 }
10439
10440 let cur_offset: usize = (1 - 1) * envelope_size;
10443
10444 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10446
10447 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u16, 200>, D>(
10452 self.channels.as_ref().map(
10453 <fidl::encoding::Vector<u16, 200> as fidl::encoding::ValueTypeMarker>::borrow,
10454 ),
10455 encoder,
10456 offset + cur_offset,
10457 depth,
10458 )?;
10459
10460 _prev_end_offset = cur_offset + envelope_size;
10461 if 2 > max_ordinal {
10462 return Ok(());
10463 }
10464
10465 let cur_offset: usize = (2 - 1) * envelope_size;
10468
10469 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10471
10472 fidl::encoding::encode_in_envelope_optional::<i8, D>(
10477 self.tx_power_dbm.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
10478 encoder,
10479 offset + cur_offset,
10480 depth,
10481 )?;
10482
10483 _prev_end_offset = cur_offset + envelope_size;
10484
10485 Ok(())
10486 }
10487 }
10488
10489 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkScanParameters {
10490 #[inline(always)]
10491 fn new_empty() -> Self {
10492 Self::default()
10493 }
10494
10495 unsafe fn decode(
10496 &mut self,
10497 decoder: &mut fidl::encoding::Decoder<'_, D>,
10498 offset: usize,
10499 mut depth: fidl::encoding::Depth,
10500 ) -> fidl::Result<()> {
10501 decoder.debug_check_bounds::<Self>(offset);
10502 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10503 None => return Err(fidl::Error::NotNullable),
10504 Some(len) => len,
10505 };
10506 if len == 0 {
10508 return Ok(());
10509 };
10510 depth.increment()?;
10511 let envelope_size = 8;
10512 let bytes_len = len * envelope_size;
10513 let offset = decoder.out_of_line_offset(bytes_len)?;
10514 let mut _next_ordinal_to_read = 0;
10516 let mut next_offset = offset;
10517 let end_offset = offset + bytes_len;
10518 _next_ordinal_to_read += 1;
10519 if next_offset >= end_offset {
10520 return Ok(());
10521 }
10522
10523 while _next_ordinal_to_read < 1 {
10525 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10526 _next_ordinal_to_read += 1;
10527 next_offset += envelope_size;
10528 }
10529
10530 let next_out_of_line = decoder.next_out_of_line();
10531 let handles_before = decoder.remaining_handles();
10532 if let Some((inlined, num_bytes, num_handles)) =
10533 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10534 {
10535 let member_inline_size =
10536 <fidl::encoding::Vector<u16, 200> as fidl::encoding::TypeMarker>::inline_size(
10537 decoder.context,
10538 );
10539 if inlined != (member_inline_size <= 4) {
10540 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10541 }
10542 let inner_offset;
10543 let mut inner_depth = depth.clone();
10544 if inlined {
10545 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10546 inner_offset = next_offset;
10547 } else {
10548 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10549 inner_depth.increment()?;
10550 }
10551 let val_ref = self
10552 .channels
10553 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u16, 200>, D));
10554 fidl::decode!(fidl::encoding::Vector<u16, 200>, D, val_ref, decoder, inner_offset, inner_depth)?;
10555 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10556 {
10557 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10558 }
10559 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10560 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10561 }
10562 }
10563
10564 next_offset += envelope_size;
10565 _next_ordinal_to_read += 1;
10566 if next_offset >= end_offset {
10567 return Ok(());
10568 }
10569
10570 while _next_ordinal_to_read < 2 {
10572 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10573 _next_ordinal_to_read += 1;
10574 next_offset += envelope_size;
10575 }
10576
10577 let next_out_of_line = decoder.next_out_of_line();
10578 let handles_before = decoder.remaining_handles();
10579 if let Some((inlined, num_bytes, num_handles)) =
10580 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10581 {
10582 let member_inline_size =
10583 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10584 if inlined != (member_inline_size <= 4) {
10585 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10586 }
10587 let inner_offset;
10588 let mut inner_depth = depth.clone();
10589 if inlined {
10590 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10591 inner_offset = next_offset;
10592 } else {
10593 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10594 inner_depth.increment()?;
10595 }
10596 let val_ref = self.tx_power_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
10597 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
10598 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10599 {
10600 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10601 }
10602 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10603 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10604 }
10605 }
10606
10607 next_offset += envelope_size;
10608
10609 while next_offset < end_offset {
10611 _next_ordinal_to_read += 1;
10612 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10613 next_offset += envelope_size;
10614 }
10615
10616 Ok(())
10617 }
10618 }
10619
10620 impl OnMeshPrefix {
10621 #[inline(always)]
10622 fn max_ordinal_present(&self) -> u64 {
10623 if let Some(_) = self.slaac_valid {
10624 return 5;
10625 }
10626 if let Some(_) = self.slaac_preferred {
10627 return 4;
10628 }
10629 if let Some(_) = self.stable {
10630 return 3;
10631 }
10632 if let Some(_) = self.default_route_preference {
10633 return 2;
10634 }
10635 if let Some(_) = self.subnet {
10636 return 1;
10637 }
10638 0
10639 }
10640 }
10641
10642 impl fidl::encoding::ValueTypeMarker for OnMeshPrefix {
10643 type Borrowed<'a> = &'a Self;
10644 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10645 value
10646 }
10647 }
10648
10649 unsafe impl fidl::encoding::TypeMarker for OnMeshPrefix {
10650 type Owned = Self;
10651
10652 #[inline(always)]
10653 fn inline_align(_context: fidl::encoding::Context) -> usize {
10654 8
10655 }
10656
10657 #[inline(always)]
10658 fn inline_size(_context: fidl::encoding::Context) -> usize {
10659 16
10660 }
10661 }
10662
10663 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OnMeshPrefix, D>
10664 for &OnMeshPrefix
10665 {
10666 unsafe fn encode(
10667 self,
10668 encoder: &mut fidl::encoding::Encoder<'_, D>,
10669 offset: usize,
10670 mut depth: fidl::encoding::Depth,
10671 ) -> fidl::Result<()> {
10672 encoder.debug_check_bounds::<OnMeshPrefix>(offset);
10673 let max_ordinal: u64 = self.max_ordinal_present();
10675 encoder.write_num(max_ordinal, offset);
10676 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10677 if max_ordinal == 0 {
10679 return Ok(());
10680 }
10681 depth.increment()?;
10682 let envelope_size = 8;
10683 let bytes_len = max_ordinal as usize * envelope_size;
10684 #[allow(unused_variables)]
10685 let offset = encoder.out_of_line_offset(bytes_len);
10686 let mut _prev_end_offset: usize = 0;
10687 if 1 > max_ordinal {
10688 return Ok(());
10689 }
10690
10691 let cur_offset: usize = (1 - 1) * envelope_size;
10694
10695 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10697
10698 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>(
10703 self.subnet.as_ref().map(<fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow),
10704 encoder, offset + cur_offset, depth
10705 )?;
10706
10707 _prev_end_offset = cur_offset + envelope_size;
10708 if 2 > max_ordinal {
10709 return Ok(());
10710 }
10711
10712 let cur_offset: usize = (2 - 1) * envelope_size;
10715
10716 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10718
10719 fidl::encoding::encode_in_envelope_optional::<RoutePreference, D>(
10724 self.default_route_preference
10725 .as_ref()
10726 .map(<RoutePreference as fidl::encoding::ValueTypeMarker>::borrow),
10727 encoder,
10728 offset + cur_offset,
10729 depth,
10730 )?;
10731
10732 _prev_end_offset = cur_offset + envelope_size;
10733 if 3 > max_ordinal {
10734 return Ok(());
10735 }
10736
10737 let cur_offset: usize = (3 - 1) * envelope_size;
10740
10741 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10743
10744 fidl::encoding::encode_in_envelope_optional::<bool, D>(
10749 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10750 encoder,
10751 offset + cur_offset,
10752 depth,
10753 )?;
10754
10755 _prev_end_offset = cur_offset + envelope_size;
10756 if 4 > max_ordinal {
10757 return Ok(());
10758 }
10759
10760 let cur_offset: usize = (4 - 1) * envelope_size;
10763
10764 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10766
10767 fidl::encoding::encode_in_envelope_optional::<bool, D>(
10772 self.slaac_preferred
10773 .as_ref()
10774 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10775 encoder,
10776 offset + cur_offset,
10777 depth,
10778 )?;
10779
10780 _prev_end_offset = cur_offset + envelope_size;
10781 if 5 > max_ordinal {
10782 return Ok(());
10783 }
10784
10785 let cur_offset: usize = (5 - 1) * envelope_size;
10788
10789 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10791
10792 fidl::encoding::encode_in_envelope_optional::<bool, D>(
10797 self.slaac_valid.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10798 encoder,
10799 offset + cur_offset,
10800 depth,
10801 )?;
10802
10803 _prev_end_offset = cur_offset + envelope_size;
10804
10805 Ok(())
10806 }
10807 }
10808
10809 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OnMeshPrefix {
10810 #[inline(always)]
10811 fn new_empty() -> Self {
10812 Self::default()
10813 }
10814
10815 unsafe fn decode(
10816 &mut self,
10817 decoder: &mut fidl::encoding::Decoder<'_, D>,
10818 offset: usize,
10819 mut depth: fidl::encoding::Depth,
10820 ) -> fidl::Result<()> {
10821 decoder.debug_check_bounds::<Self>(offset);
10822 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10823 None => return Err(fidl::Error::NotNullable),
10824 Some(len) => len,
10825 };
10826 if len == 0 {
10828 return Ok(());
10829 };
10830 depth.increment()?;
10831 let envelope_size = 8;
10832 let bytes_len = len * envelope_size;
10833 let offset = decoder.out_of_line_offset(bytes_len)?;
10834 let mut _next_ordinal_to_read = 0;
10836 let mut next_offset = offset;
10837 let end_offset = offset + bytes_len;
10838 _next_ordinal_to_read += 1;
10839 if next_offset >= end_offset {
10840 return Ok(());
10841 }
10842
10843 while _next_ordinal_to_read < 1 {
10845 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10846 _next_ordinal_to_read += 1;
10847 next_offset += envelope_size;
10848 }
10849
10850 let next_out_of_line = decoder.next_out_of_line();
10851 let handles_before = decoder.remaining_handles();
10852 if let Some((inlined, num_bytes, num_handles)) =
10853 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10854 {
10855 let member_inline_size = <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10856 if inlined != (member_inline_size <= 4) {
10857 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10858 }
10859 let inner_offset;
10860 let mut inner_depth = depth.clone();
10861 if inlined {
10862 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10863 inner_offset = next_offset;
10864 } else {
10865 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10866 inner_depth.increment()?;
10867 }
10868 let val_ref = self.subnet.get_or_insert_with(|| {
10869 fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D)
10870 });
10871 fidl::decode!(
10872 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
10873 D,
10874 val_ref,
10875 decoder,
10876 inner_offset,
10877 inner_depth
10878 )?;
10879 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10880 {
10881 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10882 }
10883 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10884 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10885 }
10886 }
10887
10888 next_offset += envelope_size;
10889 _next_ordinal_to_read += 1;
10890 if next_offset >= end_offset {
10891 return Ok(());
10892 }
10893
10894 while _next_ordinal_to_read < 2 {
10896 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10897 _next_ordinal_to_read += 1;
10898 next_offset += envelope_size;
10899 }
10900
10901 let next_out_of_line = decoder.next_out_of_line();
10902 let handles_before = decoder.remaining_handles();
10903 if let Some((inlined, num_bytes, num_handles)) =
10904 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10905 {
10906 let member_inline_size =
10907 <RoutePreference as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10908 if inlined != (member_inline_size <= 4) {
10909 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10910 }
10911 let inner_offset;
10912 let mut inner_depth = depth.clone();
10913 if inlined {
10914 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10915 inner_offset = next_offset;
10916 } else {
10917 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10918 inner_depth.increment()?;
10919 }
10920 let val_ref = self
10921 .default_route_preference
10922 .get_or_insert_with(|| fidl::new_empty!(RoutePreference, D));
10923 fidl::decode!(RoutePreference, D, val_ref, decoder, inner_offset, inner_depth)?;
10924 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10925 {
10926 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10927 }
10928 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10929 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10930 }
10931 }
10932
10933 next_offset += envelope_size;
10934 _next_ordinal_to_read += 1;
10935 if next_offset >= end_offset {
10936 return Ok(());
10937 }
10938
10939 while _next_ordinal_to_read < 3 {
10941 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10942 _next_ordinal_to_read += 1;
10943 next_offset += envelope_size;
10944 }
10945
10946 let next_out_of_line = decoder.next_out_of_line();
10947 let handles_before = decoder.remaining_handles();
10948 if let Some((inlined, num_bytes, num_handles)) =
10949 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10950 {
10951 let member_inline_size =
10952 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10953 if inlined != (member_inline_size <= 4) {
10954 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10955 }
10956 let inner_offset;
10957 let mut inner_depth = depth.clone();
10958 if inlined {
10959 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10960 inner_offset = next_offset;
10961 } else {
10962 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10963 inner_depth.increment()?;
10964 }
10965 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
10966 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10967 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10968 {
10969 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10970 }
10971 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10972 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10973 }
10974 }
10975
10976 next_offset += envelope_size;
10977 _next_ordinal_to_read += 1;
10978 if next_offset >= end_offset {
10979 return Ok(());
10980 }
10981
10982 while _next_ordinal_to_read < 4 {
10984 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10985 _next_ordinal_to_read += 1;
10986 next_offset += envelope_size;
10987 }
10988
10989 let next_out_of_line = decoder.next_out_of_line();
10990 let handles_before = decoder.remaining_handles();
10991 if let Some((inlined, num_bytes, num_handles)) =
10992 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10993 {
10994 let member_inline_size =
10995 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10996 if inlined != (member_inline_size <= 4) {
10997 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10998 }
10999 let inner_offset;
11000 let mut inner_depth = depth.clone();
11001 if inlined {
11002 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11003 inner_offset = next_offset;
11004 } else {
11005 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11006 inner_depth.increment()?;
11007 }
11008 let val_ref = self.slaac_preferred.get_or_insert_with(|| fidl::new_empty!(bool, D));
11009 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11010 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11011 {
11012 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11013 }
11014 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11015 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11016 }
11017 }
11018
11019 next_offset += envelope_size;
11020 _next_ordinal_to_read += 1;
11021 if next_offset >= end_offset {
11022 return Ok(());
11023 }
11024
11025 while _next_ordinal_to_read < 5 {
11027 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11028 _next_ordinal_to_read += 1;
11029 next_offset += envelope_size;
11030 }
11031
11032 let next_out_of_line = decoder.next_out_of_line();
11033 let handles_before = decoder.remaining_handles();
11034 if let Some((inlined, num_bytes, num_handles)) =
11035 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11036 {
11037 let member_inline_size =
11038 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11039 if inlined != (member_inline_size <= 4) {
11040 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11041 }
11042 let inner_offset;
11043 let mut inner_depth = depth.clone();
11044 if inlined {
11045 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11046 inner_offset = next_offset;
11047 } else {
11048 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11049 inner_depth.increment()?;
11050 }
11051 let val_ref = self.slaac_valid.get_or_insert_with(|| fidl::new_empty!(bool, D));
11052 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11053 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11054 {
11055 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11056 }
11057 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11058 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11059 }
11060 }
11061
11062 next_offset += envelope_size;
11063
11064 while next_offset < end_offset {
11066 _next_ordinal_to_read += 1;
11067 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11068 next_offset += envelope_size;
11069 }
11070
11071 Ok(())
11072 }
11073 }
11074
11075 impl PdProcessedRaInfo {
11076 #[inline(always)]
11077 fn max_ordinal_present(&self) -> u64 {
11078 if let Some(_) = self.last_platform_ra_msec {
11079 return 3;
11080 }
11081 if let Some(_) = self.num_platform_pio_processed {
11082 return 2;
11083 }
11084 if let Some(_) = self.num_platform_ra_received {
11085 return 1;
11086 }
11087 0
11088 }
11089 }
11090
11091 impl fidl::encoding::ValueTypeMarker for PdProcessedRaInfo {
11092 type Borrowed<'a> = &'a Self;
11093 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11094 value
11095 }
11096 }
11097
11098 unsafe impl fidl::encoding::TypeMarker for PdProcessedRaInfo {
11099 type Owned = Self;
11100
11101 #[inline(always)]
11102 fn inline_align(_context: fidl::encoding::Context) -> usize {
11103 8
11104 }
11105
11106 #[inline(always)]
11107 fn inline_size(_context: fidl::encoding::Context) -> usize {
11108 16
11109 }
11110 }
11111
11112 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PdProcessedRaInfo, D>
11113 for &PdProcessedRaInfo
11114 {
11115 unsafe fn encode(
11116 self,
11117 encoder: &mut fidl::encoding::Encoder<'_, D>,
11118 offset: usize,
11119 mut depth: fidl::encoding::Depth,
11120 ) -> fidl::Result<()> {
11121 encoder.debug_check_bounds::<PdProcessedRaInfo>(offset);
11122 let max_ordinal: u64 = self.max_ordinal_present();
11124 encoder.write_num(max_ordinal, offset);
11125 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11126 if max_ordinal == 0 {
11128 return Ok(());
11129 }
11130 depth.increment()?;
11131 let envelope_size = 8;
11132 let bytes_len = max_ordinal as usize * envelope_size;
11133 #[allow(unused_variables)]
11134 let offset = encoder.out_of_line_offset(bytes_len);
11135 let mut _prev_end_offset: usize = 0;
11136 if 1 > max_ordinal {
11137 return Ok(());
11138 }
11139
11140 let cur_offset: usize = (1 - 1) * envelope_size;
11143
11144 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11146
11147 fidl::encoding::encode_in_envelope_optional::<u32, D>(
11152 self.num_platform_ra_received
11153 .as_ref()
11154 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
11155 encoder,
11156 offset + cur_offset,
11157 depth,
11158 )?;
11159
11160 _prev_end_offset = cur_offset + envelope_size;
11161 if 2 > max_ordinal {
11162 return Ok(());
11163 }
11164
11165 let cur_offset: usize = (2 - 1) * envelope_size;
11168
11169 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11171
11172 fidl::encoding::encode_in_envelope_optional::<u32, D>(
11177 self.num_platform_pio_processed
11178 .as_ref()
11179 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
11180 encoder,
11181 offset + cur_offset,
11182 depth,
11183 )?;
11184
11185 _prev_end_offset = cur_offset + envelope_size;
11186 if 3 > max_ordinal {
11187 return Ok(());
11188 }
11189
11190 let cur_offset: usize = (3 - 1) * envelope_size;
11193
11194 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11196
11197 fidl::encoding::encode_in_envelope_optional::<u32, D>(
11202 self.last_platform_ra_msec
11203 .as_ref()
11204 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
11205 encoder,
11206 offset + cur_offset,
11207 depth,
11208 )?;
11209
11210 _prev_end_offset = cur_offset + envelope_size;
11211
11212 Ok(())
11213 }
11214 }
11215
11216 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PdProcessedRaInfo {
11217 #[inline(always)]
11218 fn new_empty() -> Self {
11219 Self::default()
11220 }
11221
11222 unsafe fn decode(
11223 &mut self,
11224 decoder: &mut fidl::encoding::Decoder<'_, D>,
11225 offset: usize,
11226 mut depth: fidl::encoding::Depth,
11227 ) -> fidl::Result<()> {
11228 decoder.debug_check_bounds::<Self>(offset);
11229 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11230 None => return Err(fidl::Error::NotNullable),
11231 Some(len) => len,
11232 };
11233 if len == 0 {
11235 return Ok(());
11236 };
11237 depth.increment()?;
11238 let envelope_size = 8;
11239 let bytes_len = len * envelope_size;
11240 let offset = decoder.out_of_line_offset(bytes_len)?;
11241 let mut _next_ordinal_to_read = 0;
11243 let mut next_offset = offset;
11244 let end_offset = offset + bytes_len;
11245 _next_ordinal_to_read += 1;
11246 if next_offset >= end_offset {
11247 return Ok(());
11248 }
11249
11250 while _next_ordinal_to_read < 1 {
11252 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11253 _next_ordinal_to_read += 1;
11254 next_offset += envelope_size;
11255 }
11256
11257 let next_out_of_line = decoder.next_out_of_line();
11258 let handles_before = decoder.remaining_handles();
11259 if let Some((inlined, num_bytes, num_handles)) =
11260 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11261 {
11262 let member_inline_size =
11263 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11264 if inlined != (member_inline_size <= 4) {
11265 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11266 }
11267 let inner_offset;
11268 let mut inner_depth = depth.clone();
11269 if inlined {
11270 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11271 inner_offset = next_offset;
11272 } else {
11273 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11274 inner_depth.increment()?;
11275 }
11276 let val_ref =
11277 self.num_platform_ra_received.get_or_insert_with(|| fidl::new_empty!(u32, D));
11278 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
11279 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11280 {
11281 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11282 }
11283 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11284 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11285 }
11286 }
11287
11288 next_offset += envelope_size;
11289 _next_ordinal_to_read += 1;
11290 if next_offset >= end_offset {
11291 return Ok(());
11292 }
11293
11294 while _next_ordinal_to_read < 2 {
11296 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11297 _next_ordinal_to_read += 1;
11298 next_offset += envelope_size;
11299 }
11300
11301 let next_out_of_line = decoder.next_out_of_line();
11302 let handles_before = decoder.remaining_handles();
11303 if let Some((inlined, num_bytes, num_handles)) =
11304 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11305 {
11306 let member_inline_size =
11307 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11308 if inlined != (member_inline_size <= 4) {
11309 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11310 }
11311 let inner_offset;
11312 let mut inner_depth = depth.clone();
11313 if inlined {
11314 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11315 inner_offset = next_offset;
11316 } else {
11317 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11318 inner_depth.increment()?;
11319 }
11320 let val_ref =
11321 self.num_platform_pio_processed.get_or_insert_with(|| fidl::new_empty!(u32, D));
11322 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
11323 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11324 {
11325 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11326 }
11327 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11328 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11329 }
11330 }
11331
11332 next_offset += envelope_size;
11333 _next_ordinal_to_read += 1;
11334 if next_offset >= end_offset {
11335 return Ok(());
11336 }
11337
11338 while _next_ordinal_to_read < 3 {
11340 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11341 _next_ordinal_to_read += 1;
11342 next_offset += envelope_size;
11343 }
11344
11345 let next_out_of_line = decoder.next_out_of_line();
11346 let handles_before = decoder.remaining_handles();
11347 if let Some((inlined, num_bytes, num_handles)) =
11348 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11349 {
11350 let member_inline_size =
11351 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11352 if inlined != (member_inline_size <= 4) {
11353 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11354 }
11355 let inner_offset;
11356 let mut inner_depth = depth.clone();
11357 if inlined {
11358 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11359 inner_offset = next_offset;
11360 } else {
11361 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11362 inner_depth.increment()?;
11363 }
11364 let val_ref =
11365 self.last_platform_ra_msec.get_or_insert_with(|| fidl::new_empty!(u32, D));
11366 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
11367 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11368 {
11369 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11370 }
11371 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11372 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11373 }
11374 }
11375
11376 next_offset += envelope_size;
11377
11378 while next_offset < end_offset {
11380 _next_ordinal_to_read += 1;
11381 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11382 next_offset += envelope_size;
11383 }
11384
11385 Ok(())
11386 }
11387 }
11388
11389 impl SrpServerInfo {
11390 #[inline(always)]
11391 fn max_ordinal_present(&self) -> u64 {
11392 if let Some(_) = self.services_registration {
11393 return 6;
11394 }
11395 if let Some(_) = self.hosts_registration {
11396 return 5;
11397 }
11398 if let Some(_) = self.response_counters {
11399 return 4;
11400 }
11401 if let Some(_) = self.address_mode {
11402 return 3;
11403 }
11404 if let Some(_) = self.port {
11405 return 2;
11406 }
11407 if let Some(_) = self.state {
11408 return 1;
11409 }
11410 0
11411 }
11412 }
11413
11414 impl fidl::encoding::ValueTypeMarker for SrpServerInfo {
11415 type Borrowed<'a> = &'a Self;
11416 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11417 value
11418 }
11419 }
11420
11421 unsafe impl fidl::encoding::TypeMarker for SrpServerInfo {
11422 type Owned = Self;
11423
11424 #[inline(always)]
11425 fn inline_align(_context: fidl::encoding::Context) -> usize {
11426 8
11427 }
11428
11429 #[inline(always)]
11430 fn inline_size(_context: fidl::encoding::Context) -> usize {
11431 16
11432 }
11433 }
11434
11435 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerInfo, D>
11436 for &SrpServerInfo
11437 {
11438 unsafe fn encode(
11439 self,
11440 encoder: &mut fidl::encoding::Encoder<'_, D>,
11441 offset: usize,
11442 mut depth: fidl::encoding::Depth,
11443 ) -> fidl::Result<()> {
11444 encoder.debug_check_bounds::<SrpServerInfo>(offset);
11445 let max_ordinal: u64 = self.max_ordinal_present();
11447 encoder.write_num(max_ordinal, offset);
11448 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11449 if max_ordinal == 0 {
11451 return Ok(());
11452 }
11453 depth.increment()?;
11454 let envelope_size = 8;
11455 let bytes_len = max_ordinal as usize * envelope_size;
11456 #[allow(unused_variables)]
11457 let offset = encoder.out_of_line_offset(bytes_len);
11458 let mut _prev_end_offset: usize = 0;
11459 if 1 > max_ordinal {
11460 return Ok(());
11461 }
11462
11463 let cur_offset: usize = (1 - 1) * envelope_size;
11466
11467 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11469
11470 fidl::encoding::encode_in_envelope_optional::<SrpServerState, D>(
11475 self.state
11476 .as_ref()
11477 .map(<SrpServerState as fidl::encoding::ValueTypeMarker>::borrow),
11478 encoder,
11479 offset + cur_offset,
11480 depth,
11481 )?;
11482
11483 _prev_end_offset = cur_offset + envelope_size;
11484 if 2 > max_ordinal {
11485 return Ok(());
11486 }
11487
11488 let cur_offset: usize = (2 - 1) * envelope_size;
11491
11492 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11494
11495 fidl::encoding::encode_in_envelope_optional::<u16, D>(
11500 self.port.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
11501 encoder,
11502 offset + cur_offset,
11503 depth,
11504 )?;
11505
11506 _prev_end_offset = cur_offset + envelope_size;
11507 if 3 > max_ordinal {
11508 return Ok(());
11509 }
11510
11511 let cur_offset: usize = (3 - 1) * envelope_size;
11514
11515 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11517
11518 fidl::encoding::encode_in_envelope_optional::<SrpServerAddressMode, D>(
11523 self.address_mode
11524 .as_ref()
11525 .map(<SrpServerAddressMode as fidl::encoding::ValueTypeMarker>::borrow),
11526 encoder,
11527 offset + cur_offset,
11528 depth,
11529 )?;
11530
11531 _prev_end_offset = cur_offset + envelope_size;
11532 if 4 > max_ordinal {
11533 return Ok(());
11534 }
11535
11536 let cur_offset: usize = (4 - 1) * envelope_size;
11539
11540 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11542
11543 fidl::encoding::encode_in_envelope_optional::<SrpServerResponseCounters, D>(
11548 self.response_counters
11549 .as_ref()
11550 .map(<SrpServerResponseCounters as fidl::encoding::ValueTypeMarker>::borrow),
11551 encoder,
11552 offset + cur_offset,
11553 depth,
11554 )?;
11555
11556 _prev_end_offset = cur_offset + envelope_size;
11557 if 5 > max_ordinal {
11558 return Ok(());
11559 }
11560
11561 let cur_offset: usize = (5 - 1) * envelope_size;
11564
11565 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11567
11568 fidl::encoding::encode_in_envelope_optional::<SrpServerRegistration, D>(
11573 self.hosts_registration
11574 .as_ref()
11575 .map(<SrpServerRegistration as fidl::encoding::ValueTypeMarker>::borrow),
11576 encoder,
11577 offset + cur_offset,
11578 depth,
11579 )?;
11580
11581 _prev_end_offset = cur_offset + envelope_size;
11582 if 6 > max_ordinal {
11583 return Ok(());
11584 }
11585
11586 let cur_offset: usize = (6 - 1) * envelope_size;
11589
11590 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11592
11593 fidl::encoding::encode_in_envelope_optional::<SrpServerRegistration, D>(
11598 self.services_registration
11599 .as_ref()
11600 .map(<SrpServerRegistration as fidl::encoding::ValueTypeMarker>::borrow),
11601 encoder,
11602 offset + cur_offset,
11603 depth,
11604 )?;
11605
11606 _prev_end_offset = cur_offset + envelope_size;
11607
11608 Ok(())
11609 }
11610 }
11611
11612 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerInfo {
11613 #[inline(always)]
11614 fn new_empty() -> Self {
11615 Self::default()
11616 }
11617
11618 unsafe fn decode(
11619 &mut self,
11620 decoder: &mut fidl::encoding::Decoder<'_, D>,
11621 offset: usize,
11622 mut depth: fidl::encoding::Depth,
11623 ) -> fidl::Result<()> {
11624 decoder.debug_check_bounds::<Self>(offset);
11625 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11626 None => return Err(fidl::Error::NotNullable),
11627 Some(len) => len,
11628 };
11629 if len == 0 {
11631 return Ok(());
11632 };
11633 depth.increment()?;
11634 let envelope_size = 8;
11635 let bytes_len = len * envelope_size;
11636 let offset = decoder.out_of_line_offset(bytes_len)?;
11637 let mut _next_ordinal_to_read = 0;
11639 let mut next_offset = offset;
11640 let end_offset = offset + bytes_len;
11641 _next_ordinal_to_read += 1;
11642 if next_offset >= end_offset {
11643 return Ok(());
11644 }
11645
11646 while _next_ordinal_to_read < 1 {
11648 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11649 _next_ordinal_to_read += 1;
11650 next_offset += envelope_size;
11651 }
11652
11653 let next_out_of_line = decoder.next_out_of_line();
11654 let handles_before = decoder.remaining_handles();
11655 if let Some((inlined, num_bytes, num_handles)) =
11656 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11657 {
11658 let member_inline_size =
11659 <SrpServerState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11660 if inlined != (member_inline_size <= 4) {
11661 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11662 }
11663 let inner_offset;
11664 let mut inner_depth = depth.clone();
11665 if inlined {
11666 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11667 inner_offset = next_offset;
11668 } else {
11669 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11670 inner_depth.increment()?;
11671 }
11672 let val_ref = self.state.get_or_insert_with(|| fidl::new_empty!(SrpServerState, D));
11673 fidl::decode!(SrpServerState, D, val_ref, decoder, inner_offset, inner_depth)?;
11674 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11675 {
11676 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11677 }
11678 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11679 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11680 }
11681 }
11682
11683 next_offset += envelope_size;
11684 _next_ordinal_to_read += 1;
11685 if next_offset >= end_offset {
11686 return Ok(());
11687 }
11688
11689 while _next_ordinal_to_read < 2 {
11691 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11692 _next_ordinal_to_read += 1;
11693 next_offset += envelope_size;
11694 }
11695
11696 let next_out_of_line = decoder.next_out_of_line();
11697 let handles_before = decoder.remaining_handles();
11698 if let Some((inlined, num_bytes, num_handles)) =
11699 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11700 {
11701 let member_inline_size =
11702 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11703 if inlined != (member_inline_size <= 4) {
11704 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11705 }
11706 let inner_offset;
11707 let mut inner_depth = depth.clone();
11708 if inlined {
11709 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11710 inner_offset = next_offset;
11711 } else {
11712 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11713 inner_depth.increment()?;
11714 }
11715 let val_ref = self.port.get_or_insert_with(|| fidl::new_empty!(u16, D));
11716 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
11717 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11718 {
11719 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11720 }
11721 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11722 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11723 }
11724 }
11725
11726 next_offset += envelope_size;
11727 _next_ordinal_to_read += 1;
11728 if next_offset >= end_offset {
11729 return Ok(());
11730 }
11731
11732 while _next_ordinal_to_read < 3 {
11734 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11735 _next_ordinal_to_read += 1;
11736 next_offset += envelope_size;
11737 }
11738
11739 let next_out_of_line = decoder.next_out_of_line();
11740 let handles_before = decoder.remaining_handles();
11741 if let Some((inlined, num_bytes, num_handles)) =
11742 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11743 {
11744 let member_inline_size =
11745 <SrpServerAddressMode as fidl::encoding::TypeMarker>::inline_size(
11746 decoder.context,
11747 );
11748 if inlined != (member_inline_size <= 4) {
11749 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11750 }
11751 let inner_offset;
11752 let mut inner_depth = depth.clone();
11753 if inlined {
11754 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11755 inner_offset = next_offset;
11756 } else {
11757 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11758 inner_depth.increment()?;
11759 }
11760 let val_ref = self
11761 .address_mode
11762 .get_or_insert_with(|| fidl::new_empty!(SrpServerAddressMode, D));
11763 fidl::decode!(
11764 SrpServerAddressMode,
11765 D,
11766 val_ref,
11767 decoder,
11768 inner_offset,
11769 inner_depth
11770 )?;
11771 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11772 {
11773 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11774 }
11775 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11776 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11777 }
11778 }
11779
11780 next_offset += envelope_size;
11781 _next_ordinal_to_read += 1;
11782 if next_offset >= end_offset {
11783 return Ok(());
11784 }
11785
11786 while _next_ordinal_to_read < 4 {
11788 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11789 _next_ordinal_to_read += 1;
11790 next_offset += envelope_size;
11791 }
11792
11793 let next_out_of_line = decoder.next_out_of_line();
11794 let handles_before = decoder.remaining_handles();
11795 if let Some((inlined, num_bytes, num_handles)) =
11796 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11797 {
11798 let member_inline_size =
11799 <SrpServerResponseCounters as fidl::encoding::TypeMarker>::inline_size(
11800 decoder.context,
11801 );
11802 if inlined != (member_inline_size <= 4) {
11803 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11804 }
11805 let inner_offset;
11806 let mut inner_depth = depth.clone();
11807 if inlined {
11808 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11809 inner_offset = next_offset;
11810 } else {
11811 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11812 inner_depth.increment()?;
11813 }
11814 let val_ref = self
11815 .response_counters
11816 .get_or_insert_with(|| fidl::new_empty!(SrpServerResponseCounters, D));
11817 fidl::decode!(
11818 SrpServerResponseCounters,
11819 D,
11820 val_ref,
11821 decoder,
11822 inner_offset,
11823 inner_depth
11824 )?;
11825 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11826 {
11827 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11828 }
11829 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11830 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11831 }
11832 }
11833
11834 next_offset += envelope_size;
11835 _next_ordinal_to_read += 1;
11836 if next_offset >= end_offset {
11837 return Ok(());
11838 }
11839
11840 while _next_ordinal_to_read < 5 {
11842 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11843 _next_ordinal_to_read += 1;
11844 next_offset += envelope_size;
11845 }
11846
11847 let next_out_of_line = decoder.next_out_of_line();
11848 let handles_before = decoder.remaining_handles();
11849 if let Some((inlined, num_bytes, num_handles)) =
11850 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11851 {
11852 let member_inline_size =
11853 <SrpServerRegistration as fidl::encoding::TypeMarker>::inline_size(
11854 decoder.context,
11855 );
11856 if inlined != (member_inline_size <= 4) {
11857 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11858 }
11859 let inner_offset;
11860 let mut inner_depth = depth.clone();
11861 if inlined {
11862 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11863 inner_offset = next_offset;
11864 } else {
11865 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11866 inner_depth.increment()?;
11867 }
11868 let val_ref = self
11869 .hosts_registration
11870 .get_or_insert_with(|| fidl::new_empty!(SrpServerRegistration, D));
11871 fidl::decode!(
11872 SrpServerRegistration,
11873 D,
11874 val_ref,
11875 decoder,
11876 inner_offset,
11877 inner_depth
11878 )?;
11879 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11880 {
11881 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11882 }
11883 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11884 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11885 }
11886 }
11887
11888 next_offset += envelope_size;
11889 _next_ordinal_to_read += 1;
11890 if next_offset >= end_offset {
11891 return Ok(());
11892 }
11893
11894 while _next_ordinal_to_read < 6 {
11896 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11897 _next_ordinal_to_read += 1;
11898 next_offset += envelope_size;
11899 }
11900
11901 let next_out_of_line = decoder.next_out_of_line();
11902 let handles_before = decoder.remaining_handles();
11903 if let Some((inlined, num_bytes, num_handles)) =
11904 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11905 {
11906 let member_inline_size =
11907 <SrpServerRegistration as fidl::encoding::TypeMarker>::inline_size(
11908 decoder.context,
11909 );
11910 if inlined != (member_inline_size <= 4) {
11911 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11912 }
11913 let inner_offset;
11914 let mut inner_depth = depth.clone();
11915 if inlined {
11916 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11917 inner_offset = next_offset;
11918 } else {
11919 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11920 inner_depth.increment()?;
11921 }
11922 let val_ref = self
11923 .services_registration
11924 .get_or_insert_with(|| fidl::new_empty!(SrpServerRegistration, D));
11925 fidl::decode!(
11926 SrpServerRegistration,
11927 D,
11928 val_ref,
11929 decoder,
11930 inner_offset,
11931 inner_depth
11932 )?;
11933 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11934 {
11935 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11936 }
11937 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11938 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11939 }
11940 }
11941
11942 next_offset += envelope_size;
11943
11944 while next_offset < end_offset {
11946 _next_ordinal_to_read += 1;
11947 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11948 next_offset += envelope_size;
11949 }
11950
11951 Ok(())
11952 }
11953 }
11954
11955 impl SrpServerRegistration {
11956 #[inline(always)]
11957 fn max_ordinal_present(&self) -> u64 {
11958 if let Some(_) = self.remaining_key_lease_time_total {
11959 return 6;
11960 }
11961 if let Some(_) = self.remaining_lease_time_total {
11962 return 5;
11963 }
11964 if let Some(_) = self.key_lease_time_total {
11965 return 4;
11966 }
11967 if let Some(_) = self.lease_time_total {
11968 return 3;
11969 }
11970 if let Some(_) = self.deleted_count {
11971 return 2;
11972 }
11973 if let Some(_) = self.fresh_count {
11974 return 1;
11975 }
11976 0
11977 }
11978 }
11979
11980 impl fidl::encoding::ValueTypeMarker for SrpServerRegistration {
11981 type Borrowed<'a> = &'a Self;
11982 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11983 value
11984 }
11985 }
11986
11987 unsafe impl fidl::encoding::TypeMarker for SrpServerRegistration {
11988 type Owned = Self;
11989
11990 #[inline(always)]
11991 fn inline_align(_context: fidl::encoding::Context) -> usize {
11992 8
11993 }
11994
11995 #[inline(always)]
11996 fn inline_size(_context: fidl::encoding::Context) -> usize {
11997 16
11998 }
11999 }
12000
12001 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerRegistration, D>
12002 for &SrpServerRegistration
12003 {
12004 unsafe fn encode(
12005 self,
12006 encoder: &mut fidl::encoding::Encoder<'_, D>,
12007 offset: usize,
12008 mut depth: fidl::encoding::Depth,
12009 ) -> fidl::Result<()> {
12010 encoder.debug_check_bounds::<SrpServerRegistration>(offset);
12011 let max_ordinal: u64 = self.max_ordinal_present();
12013 encoder.write_num(max_ordinal, offset);
12014 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12015 if max_ordinal == 0 {
12017 return Ok(());
12018 }
12019 depth.increment()?;
12020 let envelope_size = 8;
12021 let bytes_len = max_ordinal as usize * envelope_size;
12022 #[allow(unused_variables)]
12023 let offset = encoder.out_of_line_offset(bytes_len);
12024 let mut _prev_end_offset: usize = 0;
12025 if 1 > max_ordinal {
12026 return Ok(());
12027 }
12028
12029 let cur_offset: usize = (1 - 1) * envelope_size;
12032
12033 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12035
12036 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12041 self.fresh_count.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12042 encoder,
12043 offset + cur_offset,
12044 depth,
12045 )?;
12046
12047 _prev_end_offset = cur_offset + envelope_size;
12048 if 2 > max_ordinal {
12049 return Ok(());
12050 }
12051
12052 let cur_offset: usize = (2 - 1) * envelope_size;
12055
12056 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12058
12059 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12064 self.deleted_count.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12065 encoder,
12066 offset + cur_offset,
12067 depth,
12068 )?;
12069
12070 _prev_end_offset = cur_offset + envelope_size;
12071 if 3 > max_ordinal {
12072 return Ok(());
12073 }
12074
12075 let cur_offset: usize = (3 - 1) * envelope_size;
12078
12079 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12081
12082 fidl::encoding::encode_in_envelope_optional::<i64, D>(
12087 self.lease_time_total
12088 .as_ref()
12089 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12090 encoder,
12091 offset + cur_offset,
12092 depth,
12093 )?;
12094
12095 _prev_end_offset = cur_offset + envelope_size;
12096 if 4 > max_ordinal {
12097 return Ok(());
12098 }
12099
12100 let cur_offset: usize = (4 - 1) * envelope_size;
12103
12104 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12106
12107 fidl::encoding::encode_in_envelope_optional::<i64, D>(
12112 self.key_lease_time_total
12113 .as_ref()
12114 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12115 encoder,
12116 offset + cur_offset,
12117 depth,
12118 )?;
12119
12120 _prev_end_offset = cur_offset + envelope_size;
12121 if 5 > max_ordinal {
12122 return Ok(());
12123 }
12124
12125 let cur_offset: usize = (5 - 1) * envelope_size;
12128
12129 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12131
12132 fidl::encoding::encode_in_envelope_optional::<i64, D>(
12137 self.remaining_lease_time_total
12138 .as_ref()
12139 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12140 encoder,
12141 offset + cur_offset,
12142 depth,
12143 )?;
12144
12145 _prev_end_offset = cur_offset + envelope_size;
12146 if 6 > max_ordinal {
12147 return Ok(());
12148 }
12149
12150 let cur_offset: usize = (6 - 1) * envelope_size;
12153
12154 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12156
12157 fidl::encoding::encode_in_envelope_optional::<i64, D>(
12162 self.remaining_key_lease_time_total
12163 .as_ref()
12164 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12165 encoder,
12166 offset + cur_offset,
12167 depth,
12168 )?;
12169
12170 _prev_end_offset = cur_offset + envelope_size;
12171
12172 Ok(())
12173 }
12174 }
12175
12176 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerRegistration {
12177 #[inline(always)]
12178 fn new_empty() -> Self {
12179 Self::default()
12180 }
12181
12182 unsafe fn decode(
12183 &mut self,
12184 decoder: &mut fidl::encoding::Decoder<'_, D>,
12185 offset: usize,
12186 mut depth: fidl::encoding::Depth,
12187 ) -> fidl::Result<()> {
12188 decoder.debug_check_bounds::<Self>(offset);
12189 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12190 None => return Err(fidl::Error::NotNullable),
12191 Some(len) => len,
12192 };
12193 if len == 0 {
12195 return Ok(());
12196 };
12197 depth.increment()?;
12198 let envelope_size = 8;
12199 let bytes_len = len * envelope_size;
12200 let offset = decoder.out_of_line_offset(bytes_len)?;
12201 let mut _next_ordinal_to_read = 0;
12203 let mut next_offset = offset;
12204 let end_offset = offset + bytes_len;
12205 _next_ordinal_to_read += 1;
12206 if next_offset >= end_offset {
12207 return Ok(());
12208 }
12209
12210 while _next_ordinal_to_read < 1 {
12212 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12213 _next_ordinal_to_read += 1;
12214 next_offset += envelope_size;
12215 }
12216
12217 let next_out_of_line = decoder.next_out_of_line();
12218 let handles_before = decoder.remaining_handles();
12219 if let Some((inlined, num_bytes, num_handles)) =
12220 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12221 {
12222 let member_inline_size =
12223 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12224 if inlined != (member_inline_size <= 4) {
12225 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12226 }
12227 let inner_offset;
12228 let mut inner_depth = depth.clone();
12229 if inlined {
12230 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12231 inner_offset = next_offset;
12232 } else {
12233 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12234 inner_depth.increment()?;
12235 }
12236 let val_ref = self.fresh_count.get_or_insert_with(|| fidl::new_empty!(u32, D));
12237 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12238 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12239 {
12240 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12241 }
12242 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12243 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12244 }
12245 }
12246
12247 next_offset += envelope_size;
12248 _next_ordinal_to_read += 1;
12249 if next_offset >= end_offset {
12250 return Ok(());
12251 }
12252
12253 while _next_ordinal_to_read < 2 {
12255 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12256 _next_ordinal_to_read += 1;
12257 next_offset += envelope_size;
12258 }
12259
12260 let next_out_of_line = decoder.next_out_of_line();
12261 let handles_before = decoder.remaining_handles();
12262 if let Some((inlined, num_bytes, num_handles)) =
12263 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12264 {
12265 let member_inline_size =
12266 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12267 if inlined != (member_inline_size <= 4) {
12268 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12269 }
12270 let inner_offset;
12271 let mut inner_depth = depth.clone();
12272 if inlined {
12273 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12274 inner_offset = next_offset;
12275 } else {
12276 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12277 inner_depth.increment()?;
12278 }
12279 let val_ref = self.deleted_count.get_or_insert_with(|| fidl::new_empty!(u32, D));
12280 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12281 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12282 {
12283 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12284 }
12285 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12286 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12287 }
12288 }
12289
12290 next_offset += envelope_size;
12291 _next_ordinal_to_read += 1;
12292 if next_offset >= end_offset {
12293 return Ok(());
12294 }
12295
12296 while _next_ordinal_to_read < 3 {
12298 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12299 _next_ordinal_to_read += 1;
12300 next_offset += envelope_size;
12301 }
12302
12303 let next_out_of_line = decoder.next_out_of_line();
12304 let handles_before = decoder.remaining_handles();
12305 if let Some((inlined, num_bytes, num_handles)) =
12306 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12307 {
12308 let member_inline_size =
12309 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12310 if inlined != (member_inline_size <= 4) {
12311 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12312 }
12313 let inner_offset;
12314 let mut inner_depth = depth.clone();
12315 if inlined {
12316 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12317 inner_offset = next_offset;
12318 } else {
12319 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12320 inner_depth.increment()?;
12321 }
12322 let val_ref = self.lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
12323 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12324 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12325 {
12326 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12327 }
12328 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12329 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12330 }
12331 }
12332
12333 next_offset += envelope_size;
12334 _next_ordinal_to_read += 1;
12335 if next_offset >= end_offset {
12336 return Ok(());
12337 }
12338
12339 while _next_ordinal_to_read < 4 {
12341 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12342 _next_ordinal_to_read += 1;
12343 next_offset += envelope_size;
12344 }
12345
12346 let next_out_of_line = decoder.next_out_of_line();
12347 let handles_before = decoder.remaining_handles();
12348 if let Some((inlined, num_bytes, num_handles)) =
12349 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12350 {
12351 let member_inline_size =
12352 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12353 if inlined != (member_inline_size <= 4) {
12354 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12355 }
12356 let inner_offset;
12357 let mut inner_depth = depth.clone();
12358 if inlined {
12359 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12360 inner_offset = next_offset;
12361 } else {
12362 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12363 inner_depth.increment()?;
12364 }
12365 let val_ref =
12366 self.key_lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
12367 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12368 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12369 {
12370 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12371 }
12372 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12373 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12374 }
12375 }
12376
12377 next_offset += envelope_size;
12378 _next_ordinal_to_read += 1;
12379 if next_offset >= end_offset {
12380 return Ok(());
12381 }
12382
12383 while _next_ordinal_to_read < 5 {
12385 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12386 _next_ordinal_to_read += 1;
12387 next_offset += envelope_size;
12388 }
12389
12390 let next_out_of_line = decoder.next_out_of_line();
12391 let handles_before = decoder.remaining_handles();
12392 if let Some((inlined, num_bytes, num_handles)) =
12393 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12394 {
12395 let member_inline_size =
12396 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12397 if inlined != (member_inline_size <= 4) {
12398 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12399 }
12400 let inner_offset;
12401 let mut inner_depth = depth.clone();
12402 if inlined {
12403 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12404 inner_offset = next_offset;
12405 } else {
12406 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12407 inner_depth.increment()?;
12408 }
12409 let val_ref =
12410 self.remaining_lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
12411 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12412 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12413 {
12414 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12415 }
12416 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12417 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12418 }
12419 }
12420
12421 next_offset += envelope_size;
12422 _next_ordinal_to_read += 1;
12423 if next_offset >= end_offset {
12424 return Ok(());
12425 }
12426
12427 while _next_ordinal_to_read < 6 {
12429 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12430 _next_ordinal_to_read += 1;
12431 next_offset += envelope_size;
12432 }
12433
12434 let next_out_of_line = decoder.next_out_of_line();
12435 let handles_before = decoder.remaining_handles();
12436 if let Some((inlined, num_bytes, num_handles)) =
12437 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12438 {
12439 let member_inline_size =
12440 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12441 if inlined != (member_inline_size <= 4) {
12442 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12443 }
12444 let inner_offset;
12445 let mut inner_depth = depth.clone();
12446 if inlined {
12447 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12448 inner_offset = next_offset;
12449 } else {
12450 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12451 inner_depth.increment()?;
12452 }
12453 let val_ref = self
12454 .remaining_key_lease_time_total
12455 .get_or_insert_with(|| fidl::new_empty!(i64, D));
12456 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12457 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12458 {
12459 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12460 }
12461 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12462 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12463 }
12464 }
12465
12466 next_offset += envelope_size;
12467
12468 while next_offset < end_offset {
12470 _next_ordinal_to_read += 1;
12471 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12472 next_offset += envelope_size;
12473 }
12474
12475 Ok(())
12476 }
12477 }
12478
12479 impl SrpServerResponseCounters {
12480 #[inline(always)]
12481 fn max_ordinal_present(&self) -> u64 {
12482 if let Some(_) = self.other_response {
12483 return 6;
12484 }
12485 if let Some(_) = self.refused_response {
12486 return 5;
12487 }
12488 if let Some(_) = self.name_exists_response {
12489 return 4;
12490 }
12491 if let Some(_) = self.format_error_response {
12492 return 3;
12493 }
12494 if let Some(_) = self.server_failure_response {
12495 return 2;
12496 }
12497 if let Some(_) = self.success_response {
12498 return 1;
12499 }
12500 0
12501 }
12502 }
12503
12504 impl fidl::encoding::ValueTypeMarker for SrpServerResponseCounters {
12505 type Borrowed<'a> = &'a Self;
12506 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12507 value
12508 }
12509 }
12510
12511 unsafe impl fidl::encoding::TypeMarker for SrpServerResponseCounters {
12512 type Owned = Self;
12513
12514 #[inline(always)]
12515 fn inline_align(_context: fidl::encoding::Context) -> usize {
12516 8
12517 }
12518
12519 #[inline(always)]
12520 fn inline_size(_context: fidl::encoding::Context) -> usize {
12521 16
12522 }
12523 }
12524
12525 unsafe impl<D: fidl::encoding::ResourceDialect>
12526 fidl::encoding::Encode<SrpServerResponseCounters, D> for &SrpServerResponseCounters
12527 {
12528 unsafe fn encode(
12529 self,
12530 encoder: &mut fidl::encoding::Encoder<'_, D>,
12531 offset: usize,
12532 mut depth: fidl::encoding::Depth,
12533 ) -> fidl::Result<()> {
12534 encoder.debug_check_bounds::<SrpServerResponseCounters>(offset);
12535 let max_ordinal: u64 = self.max_ordinal_present();
12537 encoder.write_num(max_ordinal, offset);
12538 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12539 if max_ordinal == 0 {
12541 return Ok(());
12542 }
12543 depth.increment()?;
12544 let envelope_size = 8;
12545 let bytes_len = max_ordinal as usize * envelope_size;
12546 #[allow(unused_variables)]
12547 let offset = encoder.out_of_line_offset(bytes_len);
12548 let mut _prev_end_offset: usize = 0;
12549 if 1 > max_ordinal {
12550 return Ok(());
12551 }
12552
12553 let cur_offset: usize = (1 - 1) * envelope_size;
12556
12557 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12559
12560 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12565 self.success_response
12566 .as_ref()
12567 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12568 encoder,
12569 offset + cur_offset,
12570 depth,
12571 )?;
12572
12573 _prev_end_offset = cur_offset + envelope_size;
12574 if 2 > max_ordinal {
12575 return Ok(());
12576 }
12577
12578 let cur_offset: usize = (2 - 1) * envelope_size;
12581
12582 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12584
12585 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12590 self.server_failure_response
12591 .as_ref()
12592 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12593 encoder,
12594 offset + cur_offset,
12595 depth,
12596 )?;
12597
12598 _prev_end_offset = cur_offset + envelope_size;
12599 if 3 > max_ordinal {
12600 return Ok(());
12601 }
12602
12603 let cur_offset: usize = (3 - 1) * envelope_size;
12606
12607 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12609
12610 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12615 self.format_error_response
12616 .as_ref()
12617 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12618 encoder,
12619 offset + cur_offset,
12620 depth,
12621 )?;
12622
12623 _prev_end_offset = cur_offset + envelope_size;
12624 if 4 > max_ordinal {
12625 return Ok(());
12626 }
12627
12628 let cur_offset: usize = (4 - 1) * envelope_size;
12631
12632 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12634
12635 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12640 self.name_exists_response
12641 .as_ref()
12642 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12643 encoder,
12644 offset + cur_offset,
12645 depth,
12646 )?;
12647
12648 _prev_end_offset = cur_offset + envelope_size;
12649 if 5 > max_ordinal {
12650 return Ok(());
12651 }
12652
12653 let cur_offset: usize = (5 - 1) * envelope_size;
12656
12657 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12659
12660 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12665 self.refused_response
12666 .as_ref()
12667 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12668 encoder,
12669 offset + cur_offset,
12670 depth,
12671 )?;
12672
12673 _prev_end_offset = cur_offset + envelope_size;
12674 if 6 > max_ordinal {
12675 return Ok(());
12676 }
12677
12678 let cur_offset: usize = (6 - 1) * envelope_size;
12681
12682 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12684
12685 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12690 self.other_response.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12691 encoder,
12692 offset + cur_offset,
12693 depth,
12694 )?;
12695
12696 _prev_end_offset = cur_offset + envelope_size;
12697
12698 Ok(())
12699 }
12700 }
12701
12702 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12703 for SrpServerResponseCounters
12704 {
12705 #[inline(always)]
12706 fn new_empty() -> Self {
12707 Self::default()
12708 }
12709
12710 unsafe fn decode(
12711 &mut self,
12712 decoder: &mut fidl::encoding::Decoder<'_, D>,
12713 offset: usize,
12714 mut depth: fidl::encoding::Depth,
12715 ) -> fidl::Result<()> {
12716 decoder.debug_check_bounds::<Self>(offset);
12717 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12718 None => return Err(fidl::Error::NotNullable),
12719 Some(len) => len,
12720 };
12721 if len == 0 {
12723 return Ok(());
12724 };
12725 depth.increment()?;
12726 let envelope_size = 8;
12727 let bytes_len = len * envelope_size;
12728 let offset = decoder.out_of_line_offset(bytes_len)?;
12729 let mut _next_ordinal_to_read = 0;
12731 let mut next_offset = offset;
12732 let end_offset = offset + bytes_len;
12733 _next_ordinal_to_read += 1;
12734 if next_offset >= end_offset {
12735 return Ok(());
12736 }
12737
12738 while _next_ordinal_to_read < 1 {
12740 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12741 _next_ordinal_to_read += 1;
12742 next_offset += envelope_size;
12743 }
12744
12745 let next_out_of_line = decoder.next_out_of_line();
12746 let handles_before = decoder.remaining_handles();
12747 if let Some((inlined, num_bytes, num_handles)) =
12748 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12749 {
12750 let member_inline_size =
12751 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12752 if inlined != (member_inline_size <= 4) {
12753 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12754 }
12755 let inner_offset;
12756 let mut inner_depth = depth.clone();
12757 if inlined {
12758 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12759 inner_offset = next_offset;
12760 } else {
12761 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12762 inner_depth.increment()?;
12763 }
12764 let val_ref = self.success_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
12765 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12766 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12767 {
12768 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12769 }
12770 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12771 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12772 }
12773 }
12774
12775 next_offset += envelope_size;
12776 _next_ordinal_to_read += 1;
12777 if next_offset >= end_offset {
12778 return Ok(());
12779 }
12780
12781 while _next_ordinal_to_read < 2 {
12783 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12784 _next_ordinal_to_read += 1;
12785 next_offset += envelope_size;
12786 }
12787
12788 let next_out_of_line = decoder.next_out_of_line();
12789 let handles_before = decoder.remaining_handles();
12790 if let Some((inlined, num_bytes, num_handles)) =
12791 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12792 {
12793 let member_inline_size =
12794 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12795 if inlined != (member_inline_size <= 4) {
12796 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12797 }
12798 let inner_offset;
12799 let mut inner_depth = depth.clone();
12800 if inlined {
12801 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12802 inner_offset = next_offset;
12803 } else {
12804 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12805 inner_depth.increment()?;
12806 }
12807 let val_ref =
12808 self.server_failure_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
12809 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12810 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12811 {
12812 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12813 }
12814 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12815 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12816 }
12817 }
12818
12819 next_offset += envelope_size;
12820 _next_ordinal_to_read += 1;
12821 if next_offset >= end_offset {
12822 return Ok(());
12823 }
12824
12825 while _next_ordinal_to_read < 3 {
12827 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12828 _next_ordinal_to_read += 1;
12829 next_offset += envelope_size;
12830 }
12831
12832 let next_out_of_line = decoder.next_out_of_line();
12833 let handles_before = decoder.remaining_handles();
12834 if let Some((inlined, num_bytes, num_handles)) =
12835 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12836 {
12837 let member_inline_size =
12838 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12839 if inlined != (member_inline_size <= 4) {
12840 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12841 }
12842 let inner_offset;
12843 let mut inner_depth = depth.clone();
12844 if inlined {
12845 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12846 inner_offset = next_offset;
12847 } else {
12848 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12849 inner_depth.increment()?;
12850 }
12851 let val_ref =
12852 self.format_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
12853 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12854 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12855 {
12856 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12857 }
12858 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12859 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12860 }
12861 }
12862
12863 next_offset += envelope_size;
12864 _next_ordinal_to_read += 1;
12865 if next_offset >= end_offset {
12866 return Ok(());
12867 }
12868
12869 while _next_ordinal_to_read < 4 {
12871 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12872 _next_ordinal_to_read += 1;
12873 next_offset += envelope_size;
12874 }
12875
12876 let next_out_of_line = decoder.next_out_of_line();
12877 let handles_before = decoder.remaining_handles();
12878 if let Some((inlined, num_bytes, num_handles)) =
12879 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12880 {
12881 let member_inline_size =
12882 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12883 if inlined != (member_inline_size <= 4) {
12884 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12885 }
12886 let inner_offset;
12887 let mut inner_depth = depth.clone();
12888 if inlined {
12889 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12890 inner_offset = next_offset;
12891 } else {
12892 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12893 inner_depth.increment()?;
12894 }
12895 let val_ref =
12896 self.name_exists_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
12897 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12898 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12899 {
12900 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12901 }
12902 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12903 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12904 }
12905 }
12906
12907 next_offset += envelope_size;
12908 _next_ordinal_to_read += 1;
12909 if next_offset >= end_offset {
12910 return Ok(());
12911 }
12912
12913 while _next_ordinal_to_read < 5 {
12915 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12916 _next_ordinal_to_read += 1;
12917 next_offset += envelope_size;
12918 }
12919
12920 let next_out_of_line = decoder.next_out_of_line();
12921 let handles_before = decoder.remaining_handles();
12922 if let Some((inlined, num_bytes, num_handles)) =
12923 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12924 {
12925 let member_inline_size =
12926 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12927 if inlined != (member_inline_size <= 4) {
12928 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12929 }
12930 let inner_offset;
12931 let mut inner_depth = depth.clone();
12932 if inlined {
12933 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12934 inner_offset = next_offset;
12935 } else {
12936 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12937 inner_depth.increment()?;
12938 }
12939 let val_ref = self.refused_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
12940 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12941 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12942 {
12943 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12944 }
12945 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12946 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12947 }
12948 }
12949
12950 next_offset += envelope_size;
12951 _next_ordinal_to_read += 1;
12952 if next_offset >= end_offset {
12953 return Ok(());
12954 }
12955
12956 while _next_ordinal_to_read < 6 {
12958 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12959 _next_ordinal_to_read += 1;
12960 next_offset += envelope_size;
12961 }
12962
12963 let next_out_of_line = decoder.next_out_of_line();
12964 let handles_before = decoder.remaining_handles();
12965 if let Some((inlined, num_bytes, num_handles)) =
12966 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12967 {
12968 let member_inline_size =
12969 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12970 if inlined != (member_inline_size <= 4) {
12971 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12972 }
12973 let inner_offset;
12974 let mut inner_depth = depth.clone();
12975 if inlined {
12976 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12977 inner_offset = next_offset;
12978 } else {
12979 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12980 inner_depth.increment()?;
12981 }
12982 let val_ref = self.other_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
12983 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
12984 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12985 {
12986 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12987 }
12988 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12989 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12990 }
12991 }
12992
12993 next_offset += envelope_size;
12994
12995 while next_offset < end_offset {
12997 _next_ordinal_to_read += 1;
12998 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12999 next_offset += envelope_size;
13000 }
13001
13002 Ok(())
13003 }
13004 }
13005
13006 impl Telemetry {
13007 #[inline(always)]
13008 fn max_ordinal_present(&self) -> u64 {
13009 if let Some(_) = self.multi_ail_detected {
13010 return 26;
13011 }
13012 if let Some(_) = self.border_agent_counters {
13013 return 25;
13014 }
13015 if let Some(_) = self.link_metrics_entries {
13016 return 24;
13017 }
13018 if let Some(_) = self.dhcp6pd_info {
13019 return 23;
13020 }
13021 if let Some(_) = self.upstream_dns_info {
13022 return 22;
13023 }
13024 if let Some(_) = self.trel_peers_info {
13025 return 21;
13026 }
13027 if let Some(_) = self.trel_counters {
13028 return 20;
13029 }
13030 if let Some(_) = self.nat64_info {
13031 return 19;
13032 }
13033 if let Some(_) = self.uptime {
13034 return 18;
13035 }
13036 if let Some(_) = self.leader_data {
13037 return 17;
13038 }
13039 if let Some(_) = self.dnssd_counters {
13040 return 16;
13041 }
13042 if let Some(_) = self.srp_server_info {
13043 return 15;
13044 }
13045 if let Some(_) = self.thread_border_routing_counters {
13046 return 14;
13047 }
13048 if let Some(_) = self.thread_stable_network_data {
13049 return 13;
13050 }
13051 if let Some(_) = self.thread_network_data {
13052 return 12;
13053 }
13054 if let Some(_) = self.thread_stable_network_data_version {
13055 return 11;
13056 }
13057 if let Some(_) = self.thread_network_data_version {
13058 return 10;
13059 }
13060 if let Some(_) = self.thread_rloc {
13061 return 9;
13062 }
13063 if let Some(_) = self.thread_router_id {
13064 return 8;
13065 }
13066 if let Some(_) = self.thread_link_mode {
13067 return 7;
13068 }
13069 if let Some(_) = self.rcp_version {
13070 return 6;
13071 }
13072 if let Some(_) = self.stack_version {
13073 return 5;
13074 }
13075 if let Some(_) = self.partition_id {
13076 return 4;
13077 }
13078 if let Some(_) = self.channel_index {
13079 return 3;
13080 }
13081 if let Some(_) = self.tx_power {
13082 return 2;
13083 }
13084 if let Some(_) = self.rssi {
13085 return 1;
13086 }
13087 0
13088 }
13089 }
13090
13091 impl fidl::encoding::ValueTypeMarker for Telemetry {
13092 type Borrowed<'a> = &'a Self;
13093 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13094 value
13095 }
13096 }
13097
13098 unsafe impl fidl::encoding::TypeMarker for Telemetry {
13099 type Owned = Self;
13100
13101 #[inline(always)]
13102 fn inline_align(_context: fidl::encoding::Context) -> usize {
13103 8
13104 }
13105
13106 #[inline(always)]
13107 fn inline_size(_context: fidl::encoding::Context) -> usize {
13108 16
13109 }
13110 }
13111
13112 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Telemetry, D>
13113 for &Telemetry
13114 {
13115 unsafe fn encode(
13116 self,
13117 encoder: &mut fidl::encoding::Encoder<'_, D>,
13118 offset: usize,
13119 mut depth: fidl::encoding::Depth,
13120 ) -> fidl::Result<()> {
13121 encoder.debug_check_bounds::<Telemetry>(offset);
13122 let max_ordinal: u64 = self.max_ordinal_present();
13124 encoder.write_num(max_ordinal, offset);
13125 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13126 if max_ordinal == 0 {
13128 return Ok(());
13129 }
13130 depth.increment()?;
13131 let envelope_size = 8;
13132 let bytes_len = max_ordinal as usize * envelope_size;
13133 #[allow(unused_variables)]
13134 let offset = encoder.out_of_line_offset(bytes_len);
13135 let mut _prev_end_offset: usize = 0;
13136 if 1 > max_ordinal {
13137 return Ok(());
13138 }
13139
13140 let cur_offset: usize = (1 - 1) * envelope_size;
13143
13144 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13146
13147 fidl::encoding::encode_in_envelope_optional::<i8, D>(
13152 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
13153 encoder,
13154 offset + cur_offset,
13155 depth,
13156 )?;
13157
13158 _prev_end_offset = cur_offset + envelope_size;
13159 if 2 > max_ordinal {
13160 return Ok(());
13161 }
13162
13163 let cur_offset: usize = (2 - 1) * envelope_size;
13166
13167 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13169
13170 fidl::encoding::encode_in_envelope_optional::<i8, D>(
13175 self.tx_power.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
13176 encoder,
13177 offset + cur_offset,
13178 depth,
13179 )?;
13180
13181 _prev_end_offset = cur_offset + envelope_size;
13182 if 3 > max_ordinal {
13183 return Ok(());
13184 }
13185
13186 let cur_offset: usize = (3 - 1) * envelope_size;
13189
13190 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13192
13193 fidl::encoding::encode_in_envelope_optional::<u16, D>(
13198 self.channel_index.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
13199 encoder,
13200 offset + cur_offset,
13201 depth,
13202 )?;
13203
13204 _prev_end_offset = cur_offset + envelope_size;
13205 if 4 > max_ordinal {
13206 return Ok(());
13207 }
13208
13209 let cur_offset: usize = (4 - 1) * envelope_size;
13212
13213 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13215
13216 fidl::encoding::encode_in_envelope_optional::<u32, D>(
13221 self.partition_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13222 encoder,
13223 offset + cur_offset,
13224 depth,
13225 )?;
13226
13227 _prev_end_offset = cur_offset + envelope_size;
13228 if 5 > max_ordinal {
13229 return Ok(());
13230 }
13231
13232 let cur_offset: usize = (5 - 1) * envelope_size;
13235
13236 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13238
13239 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
13244 self.stack_version.as_ref().map(
13245 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
13246 ),
13247 encoder,
13248 offset + cur_offset,
13249 depth,
13250 )?;
13251
13252 _prev_end_offset = cur_offset + envelope_size;
13253 if 6 > max_ordinal {
13254 return Ok(());
13255 }
13256
13257 let cur_offset: usize = (6 - 1) * envelope_size;
13260
13261 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13263
13264 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
13269 self.rcp_version.as_ref().map(
13270 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
13271 ),
13272 encoder,
13273 offset + cur_offset,
13274 depth,
13275 )?;
13276
13277 _prev_end_offset = cur_offset + envelope_size;
13278 if 7 > max_ordinal {
13279 return Ok(());
13280 }
13281
13282 let cur_offset: usize = (7 - 1) * envelope_size;
13285
13286 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13288
13289 fidl::encoding::encode_in_envelope_optional::<u8, D>(
13294 self.thread_link_mode.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13295 encoder,
13296 offset + cur_offset,
13297 depth,
13298 )?;
13299
13300 _prev_end_offset = cur_offset + envelope_size;
13301 if 8 > max_ordinal {
13302 return Ok(());
13303 }
13304
13305 let cur_offset: usize = (8 - 1) * envelope_size;
13308
13309 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13311
13312 fidl::encoding::encode_in_envelope_optional::<u8, D>(
13317 self.thread_router_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13318 encoder,
13319 offset + cur_offset,
13320 depth,
13321 )?;
13322
13323 _prev_end_offset = cur_offset + envelope_size;
13324 if 9 > max_ordinal {
13325 return Ok(());
13326 }
13327
13328 let cur_offset: usize = (9 - 1) * envelope_size;
13331
13332 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13334
13335 fidl::encoding::encode_in_envelope_optional::<u16, D>(
13340 self.thread_rloc.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
13341 encoder,
13342 offset + cur_offset,
13343 depth,
13344 )?;
13345
13346 _prev_end_offset = cur_offset + envelope_size;
13347 if 10 > max_ordinal {
13348 return Ok(());
13349 }
13350
13351 let cur_offset: usize = (10 - 1) * envelope_size;
13354
13355 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13357
13358 fidl::encoding::encode_in_envelope_optional::<u8, D>(
13363 self.thread_network_data_version
13364 .as_ref()
13365 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13366 encoder,
13367 offset + cur_offset,
13368 depth,
13369 )?;
13370
13371 _prev_end_offset = cur_offset + envelope_size;
13372 if 11 > max_ordinal {
13373 return Ok(());
13374 }
13375
13376 let cur_offset: usize = (11 - 1) * envelope_size;
13379
13380 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13382
13383 fidl::encoding::encode_in_envelope_optional::<u8, D>(
13388 self.thread_stable_network_data_version
13389 .as_ref()
13390 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13391 encoder,
13392 offset + cur_offset,
13393 depth,
13394 )?;
13395
13396 _prev_end_offset = cur_offset + envelope_size;
13397 if 12 > max_ordinal {
13398 return Ok(());
13399 }
13400
13401 let cur_offset: usize = (12 - 1) * envelope_size;
13404
13405 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13407
13408 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 255>, D>(
13413 self.thread_network_data.as_ref().map(
13414 <fidl::encoding::Vector<u8, 255> as fidl::encoding::ValueTypeMarker>::borrow,
13415 ),
13416 encoder,
13417 offset + cur_offset,
13418 depth,
13419 )?;
13420
13421 _prev_end_offset = cur_offset + envelope_size;
13422 if 13 > max_ordinal {
13423 return Ok(());
13424 }
13425
13426 let cur_offset: usize = (13 - 1) * envelope_size;
13429
13430 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13432
13433 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 255>, D>(
13438 self.thread_stable_network_data.as_ref().map(
13439 <fidl::encoding::Vector<u8, 255> as fidl::encoding::ValueTypeMarker>::borrow,
13440 ),
13441 encoder,
13442 offset + cur_offset,
13443 depth,
13444 )?;
13445
13446 _prev_end_offset = cur_offset + envelope_size;
13447 if 14 > max_ordinal {
13448 return Ok(());
13449 }
13450
13451 let cur_offset: usize = (14 - 1) * envelope_size;
13454
13455 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13457
13458 fidl::encoding::encode_in_envelope_optional::<BorderRoutingCounters, D>(
13463 self.thread_border_routing_counters
13464 .as_ref()
13465 .map(<BorderRoutingCounters as fidl::encoding::ValueTypeMarker>::borrow),
13466 encoder,
13467 offset + cur_offset,
13468 depth,
13469 )?;
13470
13471 _prev_end_offset = cur_offset + envelope_size;
13472 if 15 > max_ordinal {
13473 return Ok(());
13474 }
13475
13476 let cur_offset: usize = (15 - 1) * envelope_size;
13479
13480 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13482
13483 fidl::encoding::encode_in_envelope_optional::<SrpServerInfo, D>(
13488 self.srp_server_info
13489 .as_ref()
13490 .map(<SrpServerInfo as fidl::encoding::ValueTypeMarker>::borrow),
13491 encoder,
13492 offset + cur_offset,
13493 depth,
13494 )?;
13495
13496 _prev_end_offset = cur_offset + envelope_size;
13497 if 16 > max_ordinal {
13498 return Ok(());
13499 }
13500
13501 let cur_offset: usize = (16 - 1) * envelope_size;
13504
13505 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13507
13508 fidl::encoding::encode_in_envelope_optional::<DnssdCounters, D>(
13513 self.dnssd_counters
13514 .as_ref()
13515 .map(<DnssdCounters as fidl::encoding::ValueTypeMarker>::borrow),
13516 encoder,
13517 offset + cur_offset,
13518 depth,
13519 )?;
13520
13521 _prev_end_offset = cur_offset + envelope_size;
13522 if 17 > max_ordinal {
13523 return Ok(());
13524 }
13525
13526 let cur_offset: usize = (17 - 1) * envelope_size;
13529
13530 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13532
13533 fidl::encoding::encode_in_envelope_optional::<LeaderData, D>(
13538 self.leader_data
13539 .as_ref()
13540 .map(<LeaderData as fidl::encoding::ValueTypeMarker>::borrow),
13541 encoder,
13542 offset + cur_offset,
13543 depth,
13544 )?;
13545
13546 _prev_end_offset = cur_offset + envelope_size;
13547 if 18 > max_ordinal {
13548 return Ok(());
13549 }
13550
13551 let cur_offset: usize = (18 - 1) * envelope_size;
13554
13555 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13557
13558 fidl::encoding::encode_in_envelope_optional::<i64, D>(
13563 self.uptime.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
13564 encoder,
13565 offset + cur_offset,
13566 depth,
13567 )?;
13568
13569 _prev_end_offset = cur_offset + envelope_size;
13570 if 19 > max_ordinal {
13571 return Ok(());
13572 }
13573
13574 let cur_offset: usize = (19 - 1) * envelope_size;
13577
13578 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13580
13581 fidl::encoding::encode_in_envelope_optional::<Nat64Info, D>(
13586 self.nat64_info
13587 .as_ref()
13588 .map(<Nat64Info as fidl::encoding::ValueTypeMarker>::borrow),
13589 encoder,
13590 offset + cur_offset,
13591 depth,
13592 )?;
13593
13594 _prev_end_offset = cur_offset + envelope_size;
13595 if 20 > max_ordinal {
13596 return Ok(());
13597 }
13598
13599 let cur_offset: usize = (20 - 1) * envelope_size;
13602
13603 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13605
13606 fidl::encoding::encode_in_envelope_optional::<TrelCounters, D>(
13611 self.trel_counters
13612 .as_ref()
13613 .map(<TrelCounters as fidl::encoding::ValueTypeMarker>::borrow),
13614 encoder,
13615 offset + cur_offset,
13616 depth,
13617 )?;
13618
13619 _prev_end_offset = cur_offset + envelope_size;
13620 if 21 > max_ordinal {
13621 return Ok(());
13622 }
13623
13624 let cur_offset: usize = (21 - 1) * envelope_size;
13627
13628 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13630
13631 fidl::encoding::encode_in_envelope_optional::<TrelPeersInfo, D>(
13636 self.trel_peers_info
13637 .as_ref()
13638 .map(<TrelPeersInfo as fidl::encoding::ValueTypeMarker>::borrow),
13639 encoder,
13640 offset + cur_offset,
13641 depth,
13642 )?;
13643
13644 _prev_end_offset = cur_offset + envelope_size;
13645 if 22 > max_ordinal {
13646 return Ok(());
13647 }
13648
13649 let cur_offset: usize = (22 - 1) * envelope_size;
13652
13653 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13655
13656 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsInfo, D>(
13661 self.upstream_dns_info
13662 .as_ref()
13663 .map(<UpstreamDnsInfo as fidl::encoding::ValueTypeMarker>::borrow),
13664 encoder,
13665 offset + cur_offset,
13666 depth,
13667 )?;
13668
13669 _prev_end_offset = cur_offset + envelope_size;
13670 if 23 > max_ordinal {
13671 return Ok(());
13672 }
13673
13674 let cur_offset: usize = (23 - 1) * envelope_size;
13677
13678 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13680
13681 fidl::encoding::encode_in_envelope_optional::<Dhcp6PdInfo, D>(
13686 self.dhcp6pd_info
13687 .as_ref()
13688 .map(<Dhcp6PdInfo as fidl::encoding::ValueTypeMarker>::borrow),
13689 encoder,
13690 offset + cur_offset,
13691 depth,
13692 )?;
13693
13694 _prev_end_offset = cur_offset + envelope_size;
13695 if 24 > max_ordinal {
13696 return Ok(());
13697 }
13698
13699 let cur_offset: usize = (24 - 1) * envelope_size;
13702
13703 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13705
13706 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<LinkMetricsEntry, 64>, D>(
13711 self.link_metrics_entries.as_ref().map(<fidl::encoding::Vector<LinkMetricsEntry, 64> as fidl::encoding::ValueTypeMarker>::borrow),
13712 encoder, offset + cur_offset, depth
13713 )?;
13714
13715 _prev_end_offset = cur_offset + envelope_size;
13716 if 25 > max_ordinal {
13717 return Ok(());
13718 }
13719
13720 let cur_offset: usize = (25 - 1) * envelope_size;
13723
13724 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13726
13727 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan_device__common::BorderAgentCounters, D>(
13732 self.border_agent_counters.as_ref().map(<fidl_fuchsia_lowpan_device__common::BorderAgentCounters as fidl::encoding::ValueTypeMarker>::borrow),
13733 encoder, offset + cur_offset, depth
13734 )?;
13735
13736 _prev_end_offset = cur_offset + envelope_size;
13737 if 26 > max_ordinal {
13738 return Ok(());
13739 }
13740
13741 let cur_offset: usize = (26 - 1) * envelope_size;
13744
13745 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13747
13748 fidl::encoding::encode_in_envelope_optional::<bool, D>(
13753 self.multi_ail_detected
13754 .as_ref()
13755 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
13756 encoder,
13757 offset + cur_offset,
13758 depth,
13759 )?;
13760
13761 _prev_end_offset = cur_offset + envelope_size;
13762
13763 Ok(())
13764 }
13765 }
13766
13767 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Telemetry {
13768 #[inline(always)]
13769 fn new_empty() -> Self {
13770 Self::default()
13771 }
13772
13773 unsafe fn decode(
13774 &mut self,
13775 decoder: &mut fidl::encoding::Decoder<'_, D>,
13776 offset: usize,
13777 mut depth: fidl::encoding::Depth,
13778 ) -> fidl::Result<()> {
13779 decoder.debug_check_bounds::<Self>(offset);
13780 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13781 None => return Err(fidl::Error::NotNullable),
13782 Some(len) => len,
13783 };
13784 if len == 0 {
13786 return Ok(());
13787 };
13788 depth.increment()?;
13789 let envelope_size = 8;
13790 let bytes_len = len * envelope_size;
13791 let offset = decoder.out_of_line_offset(bytes_len)?;
13792 let mut _next_ordinal_to_read = 0;
13794 let mut next_offset = offset;
13795 let end_offset = offset + bytes_len;
13796 _next_ordinal_to_read += 1;
13797 if next_offset >= end_offset {
13798 return Ok(());
13799 }
13800
13801 while _next_ordinal_to_read < 1 {
13803 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13804 _next_ordinal_to_read += 1;
13805 next_offset += envelope_size;
13806 }
13807
13808 let next_out_of_line = decoder.next_out_of_line();
13809 let handles_before = decoder.remaining_handles();
13810 if let Some((inlined, num_bytes, num_handles)) =
13811 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13812 {
13813 let member_inline_size =
13814 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13815 if inlined != (member_inline_size <= 4) {
13816 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13817 }
13818 let inner_offset;
13819 let mut inner_depth = depth.clone();
13820 if inlined {
13821 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13822 inner_offset = next_offset;
13823 } else {
13824 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13825 inner_depth.increment()?;
13826 }
13827 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
13828 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
13829 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13830 {
13831 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13832 }
13833 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13834 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13835 }
13836 }
13837
13838 next_offset += envelope_size;
13839 _next_ordinal_to_read += 1;
13840 if next_offset >= end_offset {
13841 return Ok(());
13842 }
13843
13844 while _next_ordinal_to_read < 2 {
13846 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13847 _next_ordinal_to_read += 1;
13848 next_offset += envelope_size;
13849 }
13850
13851 let next_out_of_line = decoder.next_out_of_line();
13852 let handles_before = decoder.remaining_handles();
13853 if let Some((inlined, num_bytes, num_handles)) =
13854 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13855 {
13856 let member_inline_size =
13857 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13858 if inlined != (member_inline_size <= 4) {
13859 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13860 }
13861 let inner_offset;
13862 let mut inner_depth = depth.clone();
13863 if inlined {
13864 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13865 inner_offset = next_offset;
13866 } else {
13867 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13868 inner_depth.increment()?;
13869 }
13870 let val_ref = self.tx_power.get_or_insert_with(|| fidl::new_empty!(i8, D));
13871 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
13872 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13873 {
13874 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13875 }
13876 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13877 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13878 }
13879 }
13880
13881 next_offset += envelope_size;
13882 _next_ordinal_to_read += 1;
13883 if next_offset >= end_offset {
13884 return Ok(());
13885 }
13886
13887 while _next_ordinal_to_read < 3 {
13889 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13890 _next_ordinal_to_read += 1;
13891 next_offset += envelope_size;
13892 }
13893
13894 let next_out_of_line = decoder.next_out_of_line();
13895 let handles_before = decoder.remaining_handles();
13896 if let Some((inlined, num_bytes, num_handles)) =
13897 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13898 {
13899 let member_inline_size =
13900 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13901 if inlined != (member_inline_size <= 4) {
13902 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13903 }
13904 let inner_offset;
13905 let mut inner_depth = depth.clone();
13906 if inlined {
13907 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13908 inner_offset = next_offset;
13909 } else {
13910 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13911 inner_depth.increment()?;
13912 }
13913 let val_ref = self.channel_index.get_or_insert_with(|| fidl::new_empty!(u16, D));
13914 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
13915 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13916 {
13917 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13918 }
13919 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13920 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13921 }
13922 }
13923
13924 next_offset += envelope_size;
13925 _next_ordinal_to_read += 1;
13926 if next_offset >= end_offset {
13927 return Ok(());
13928 }
13929
13930 while _next_ordinal_to_read < 4 {
13932 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13933 _next_ordinal_to_read += 1;
13934 next_offset += envelope_size;
13935 }
13936
13937 let next_out_of_line = decoder.next_out_of_line();
13938 let handles_before = decoder.remaining_handles();
13939 if let Some((inlined, num_bytes, num_handles)) =
13940 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13941 {
13942 let member_inline_size =
13943 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13944 if inlined != (member_inline_size <= 4) {
13945 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13946 }
13947 let inner_offset;
13948 let mut inner_depth = depth.clone();
13949 if inlined {
13950 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13951 inner_offset = next_offset;
13952 } else {
13953 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13954 inner_depth.increment()?;
13955 }
13956 let val_ref = self.partition_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
13957 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13958 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13959 {
13960 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13961 }
13962 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13963 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13964 }
13965 }
13966
13967 next_offset += envelope_size;
13968 _next_ordinal_to_read += 1;
13969 if next_offset >= end_offset {
13970 return Ok(());
13971 }
13972
13973 while _next_ordinal_to_read < 5 {
13975 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13976 _next_ordinal_to_read += 1;
13977 next_offset += envelope_size;
13978 }
13979
13980 let next_out_of_line = decoder.next_out_of_line();
13981 let handles_before = decoder.remaining_handles();
13982 if let Some((inlined, num_bytes, num_handles)) =
13983 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13984 {
13985 let member_inline_size =
13986 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
13987 decoder.context,
13988 );
13989 if inlined != (member_inline_size <= 4) {
13990 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13991 }
13992 let inner_offset;
13993 let mut inner_depth = depth.clone();
13994 if inlined {
13995 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13996 inner_offset = next_offset;
13997 } else {
13998 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13999 inner_depth.increment()?;
14000 }
14001 let val_ref = self
14002 .stack_version
14003 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
14004 fidl::decode!(
14005 fidl::encoding::BoundedString<256>,
14006 D,
14007 val_ref,
14008 decoder,
14009 inner_offset,
14010 inner_depth
14011 )?;
14012 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14013 {
14014 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14015 }
14016 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14017 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14018 }
14019 }
14020
14021 next_offset += envelope_size;
14022 _next_ordinal_to_read += 1;
14023 if next_offset >= end_offset {
14024 return Ok(());
14025 }
14026
14027 while _next_ordinal_to_read < 6 {
14029 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14030 _next_ordinal_to_read += 1;
14031 next_offset += envelope_size;
14032 }
14033
14034 let next_out_of_line = decoder.next_out_of_line();
14035 let handles_before = decoder.remaining_handles();
14036 if let Some((inlined, num_bytes, num_handles)) =
14037 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14038 {
14039 let member_inline_size =
14040 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
14041 decoder.context,
14042 );
14043 if inlined != (member_inline_size <= 4) {
14044 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14045 }
14046 let inner_offset;
14047 let mut inner_depth = depth.clone();
14048 if inlined {
14049 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14050 inner_offset = next_offset;
14051 } else {
14052 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14053 inner_depth.increment()?;
14054 }
14055 let val_ref = self
14056 .rcp_version
14057 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
14058 fidl::decode!(
14059 fidl::encoding::BoundedString<256>,
14060 D,
14061 val_ref,
14062 decoder,
14063 inner_offset,
14064 inner_depth
14065 )?;
14066 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14067 {
14068 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14069 }
14070 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14071 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14072 }
14073 }
14074
14075 next_offset += envelope_size;
14076 _next_ordinal_to_read += 1;
14077 if next_offset >= end_offset {
14078 return Ok(());
14079 }
14080
14081 while _next_ordinal_to_read < 7 {
14083 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14084 _next_ordinal_to_read += 1;
14085 next_offset += envelope_size;
14086 }
14087
14088 let next_out_of_line = decoder.next_out_of_line();
14089 let handles_before = decoder.remaining_handles();
14090 if let Some((inlined, num_bytes, num_handles)) =
14091 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14092 {
14093 let member_inline_size =
14094 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14095 if inlined != (member_inline_size <= 4) {
14096 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14097 }
14098 let inner_offset;
14099 let mut inner_depth = depth.clone();
14100 if inlined {
14101 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14102 inner_offset = next_offset;
14103 } else {
14104 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14105 inner_depth.increment()?;
14106 }
14107 let val_ref = self.thread_link_mode.get_or_insert_with(|| fidl::new_empty!(u8, D));
14108 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14109 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14110 {
14111 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14112 }
14113 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14114 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14115 }
14116 }
14117
14118 next_offset += envelope_size;
14119 _next_ordinal_to_read += 1;
14120 if next_offset >= end_offset {
14121 return Ok(());
14122 }
14123
14124 while _next_ordinal_to_read < 8 {
14126 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14127 _next_ordinal_to_read += 1;
14128 next_offset += envelope_size;
14129 }
14130
14131 let next_out_of_line = decoder.next_out_of_line();
14132 let handles_before = decoder.remaining_handles();
14133 if let Some((inlined, num_bytes, num_handles)) =
14134 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14135 {
14136 let member_inline_size =
14137 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14138 if inlined != (member_inline_size <= 4) {
14139 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14140 }
14141 let inner_offset;
14142 let mut inner_depth = depth.clone();
14143 if inlined {
14144 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14145 inner_offset = next_offset;
14146 } else {
14147 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14148 inner_depth.increment()?;
14149 }
14150 let val_ref = self.thread_router_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
14151 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14152 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14153 {
14154 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14155 }
14156 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14157 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14158 }
14159 }
14160
14161 next_offset += envelope_size;
14162 _next_ordinal_to_read += 1;
14163 if next_offset >= end_offset {
14164 return Ok(());
14165 }
14166
14167 while _next_ordinal_to_read < 9 {
14169 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14170 _next_ordinal_to_read += 1;
14171 next_offset += envelope_size;
14172 }
14173
14174 let next_out_of_line = decoder.next_out_of_line();
14175 let handles_before = decoder.remaining_handles();
14176 if let Some((inlined, num_bytes, num_handles)) =
14177 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14178 {
14179 let member_inline_size =
14180 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14181 if inlined != (member_inline_size <= 4) {
14182 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14183 }
14184 let inner_offset;
14185 let mut inner_depth = depth.clone();
14186 if inlined {
14187 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14188 inner_offset = next_offset;
14189 } else {
14190 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14191 inner_depth.increment()?;
14192 }
14193 let val_ref = self.thread_rloc.get_or_insert_with(|| fidl::new_empty!(u16, D));
14194 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
14195 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14196 {
14197 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14198 }
14199 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14200 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14201 }
14202 }
14203
14204 next_offset += envelope_size;
14205 _next_ordinal_to_read += 1;
14206 if next_offset >= end_offset {
14207 return Ok(());
14208 }
14209
14210 while _next_ordinal_to_read < 10 {
14212 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14213 _next_ordinal_to_read += 1;
14214 next_offset += envelope_size;
14215 }
14216
14217 let next_out_of_line = decoder.next_out_of_line();
14218 let handles_before = decoder.remaining_handles();
14219 if let Some((inlined, num_bytes, num_handles)) =
14220 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14221 {
14222 let member_inline_size =
14223 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14224 if inlined != (member_inline_size <= 4) {
14225 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14226 }
14227 let inner_offset;
14228 let mut inner_depth = depth.clone();
14229 if inlined {
14230 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14231 inner_offset = next_offset;
14232 } else {
14233 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14234 inner_depth.increment()?;
14235 }
14236 let val_ref =
14237 self.thread_network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
14238 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14239 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14240 {
14241 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14242 }
14243 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14244 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14245 }
14246 }
14247
14248 next_offset += envelope_size;
14249 _next_ordinal_to_read += 1;
14250 if next_offset >= end_offset {
14251 return Ok(());
14252 }
14253
14254 while _next_ordinal_to_read < 11 {
14256 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14257 _next_ordinal_to_read += 1;
14258 next_offset += envelope_size;
14259 }
14260
14261 let next_out_of_line = decoder.next_out_of_line();
14262 let handles_before = decoder.remaining_handles();
14263 if let Some((inlined, num_bytes, num_handles)) =
14264 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14265 {
14266 let member_inline_size =
14267 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14268 if inlined != (member_inline_size <= 4) {
14269 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14270 }
14271 let inner_offset;
14272 let mut inner_depth = depth.clone();
14273 if inlined {
14274 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14275 inner_offset = next_offset;
14276 } else {
14277 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14278 inner_depth.increment()?;
14279 }
14280 let val_ref = self
14281 .thread_stable_network_data_version
14282 .get_or_insert_with(|| fidl::new_empty!(u8, D));
14283 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14284 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14285 {
14286 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14287 }
14288 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14289 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14290 }
14291 }
14292
14293 next_offset += envelope_size;
14294 _next_ordinal_to_read += 1;
14295 if next_offset >= end_offset {
14296 return Ok(());
14297 }
14298
14299 while _next_ordinal_to_read < 12 {
14301 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14302 _next_ordinal_to_read += 1;
14303 next_offset += envelope_size;
14304 }
14305
14306 let next_out_of_line = decoder.next_out_of_line();
14307 let handles_before = decoder.remaining_handles();
14308 if let Some((inlined, num_bytes, num_handles)) =
14309 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14310 {
14311 let member_inline_size =
14312 <fidl::encoding::Vector<u8, 255> as fidl::encoding::TypeMarker>::inline_size(
14313 decoder.context,
14314 );
14315 if inlined != (member_inline_size <= 4) {
14316 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14317 }
14318 let inner_offset;
14319 let mut inner_depth = depth.clone();
14320 if inlined {
14321 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14322 inner_offset = next_offset;
14323 } else {
14324 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14325 inner_depth.increment()?;
14326 }
14327 let val_ref = self
14328 .thread_network_data
14329 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 255>, D));
14330 fidl::decode!(fidl::encoding::Vector<u8, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
14331 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14332 {
14333 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14334 }
14335 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14336 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14337 }
14338 }
14339
14340 next_offset += envelope_size;
14341 _next_ordinal_to_read += 1;
14342 if next_offset >= end_offset {
14343 return Ok(());
14344 }
14345
14346 while _next_ordinal_to_read < 13 {
14348 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14349 _next_ordinal_to_read += 1;
14350 next_offset += envelope_size;
14351 }
14352
14353 let next_out_of_line = decoder.next_out_of_line();
14354 let handles_before = decoder.remaining_handles();
14355 if let Some((inlined, num_bytes, num_handles)) =
14356 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14357 {
14358 let member_inline_size =
14359 <fidl::encoding::Vector<u8, 255> as fidl::encoding::TypeMarker>::inline_size(
14360 decoder.context,
14361 );
14362 if inlined != (member_inline_size <= 4) {
14363 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14364 }
14365 let inner_offset;
14366 let mut inner_depth = depth.clone();
14367 if inlined {
14368 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14369 inner_offset = next_offset;
14370 } else {
14371 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14372 inner_depth.increment()?;
14373 }
14374 let val_ref = self
14375 .thread_stable_network_data
14376 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 255>, D));
14377 fidl::decode!(fidl::encoding::Vector<u8, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
14378 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14379 {
14380 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14381 }
14382 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14383 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14384 }
14385 }
14386
14387 next_offset += envelope_size;
14388 _next_ordinal_to_read += 1;
14389 if next_offset >= end_offset {
14390 return Ok(());
14391 }
14392
14393 while _next_ordinal_to_read < 14 {
14395 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14396 _next_ordinal_to_read += 1;
14397 next_offset += envelope_size;
14398 }
14399
14400 let next_out_of_line = decoder.next_out_of_line();
14401 let handles_before = decoder.remaining_handles();
14402 if let Some((inlined, num_bytes, num_handles)) =
14403 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14404 {
14405 let member_inline_size =
14406 <BorderRoutingCounters as fidl::encoding::TypeMarker>::inline_size(
14407 decoder.context,
14408 );
14409 if inlined != (member_inline_size <= 4) {
14410 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14411 }
14412 let inner_offset;
14413 let mut inner_depth = depth.clone();
14414 if inlined {
14415 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14416 inner_offset = next_offset;
14417 } else {
14418 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14419 inner_depth.increment()?;
14420 }
14421 let val_ref = self
14422 .thread_border_routing_counters
14423 .get_or_insert_with(|| fidl::new_empty!(BorderRoutingCounters, D));
14424 fidl::decode!(
14425 BorderRoutingCounters,
14426 D,
14427 val_ref,
14428 decoder,
14429 inner_offset,
14430 inner_depth
14431 )?;
14432 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14433 {
14434 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14435 }
14436 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14437 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14438 }
14439 }
14440
14441 next_offset += envelope_size;
14442 _next_ordinal_to_read += 1;
14443 if next_offset >= end_offset {
14444 return Ok(());
14445 }
14446
14447 while _next_ordinal_to_read < 15 {
14449 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14450 _next_ordinal_to_read += 1;
14451 next_offset += envelope_size;
14452 }
14453
14454 let next_out_of_line = decoder.next_out_of_line();
14455 let handles_before = decoder.remaining_handles();
14456 if let Some((inlined, num_bytes, num_handles)) =
14457 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14458 {
14459 let member_inline_size =
14460 <SrpServerInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14461 if inlined != (member_inline_size <= 4) {
14462 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14463 }
14464 let inner_offset;
14465 let mut inner_depth = depth.clone();
14466 if inlined {
14467 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14468 inner_offset = next_offset;
14469 } else {
14470 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14471 inner_depth.increment()?;
14472 }
14473 let val_ref =
14474 self.srp_server_info.get_or_insert_with(|| fidl::new_empty!(SrpServerInfo, D));
14475 fidl::decode!(SrpServerInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
14476 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14477 {
14478 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14479 }
14480 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14481 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14482 }
14483 }
14484
14485 next_offset += envelope_size;
14486 _next_ordinal_to_read += 1;
14487 if next_offset >= end_offset {
14488 return Ok(());
14489 }
14490
14491 while _next_ordinal_to_read < 16 {
14493 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14494 _next_ordinal_to_read += 1;
14495 next_offset += envelope_size;
14496 }
14497
14498 let next_out_of_line = decoder.next_out_of_line();
14499 let handles_before = decoder.remaining_handles();
14500 if let Some((inlined, num_bytes, num_handles)) =
14501 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14502 {
14503 let member_inline_size =
14504 <DnssdCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14505 if inlined != (member_inline_size <= 4) {
14506 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14507 }
14508 let inner_offset;
14509 let mut inner_depth = depth.clone();
14510 if inlined {
14511 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14512 inner_offset = next_offset;
14513 } else {
14514 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14515 inner_depth.increment()?;
14516 }
14517 let val_ref =
14518 self.dnssd_counters.get_or_insert_with(|| fidl::new_empty!(DnssdCounters, D));
14519 fidl::decode!(DnssdCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
14520 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14521 {
14522 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14523 }
14524 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14525 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14526 }
14527 }
14528
14529 next_offset += envelope_size;
14530 _next_ordinal_to_read += 1;
14531 if next_offset >= end_offset {
14532 return Ok(());
14533 }
14534
14535 while _next_ordinal_to_read < 17 {
14537 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14538 _next_ordinal_to_read += 1;
14539 next_offset += envelope_size;
14540 }
14541
14542 let next_out_of_line = decoder.next_out_of_line();
14543 let handles_before = decoder.remaining_handles();
14544 if let Some((inlined, num_bytes, num_handles)) =
14545 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14546 {
14547 let member_inline_size =
14548 <LeaderData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14549 if inlined != (member_inline_size <= 4) {
14550 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14551 }
14552 let inner_offset;
14553 let mut inner_depth = depth.clone();
14554 if inlined {
14555 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14556 inner_offset = next_offset;
14557 } else {
14558 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14559 inner_depth.increment()?;
14560 }
14561 let val_ref =
14562 self.leader_data.get_or_insert_with(|| fidl::new_empty!(LeaderData, D));
14563 fidl::decode!(LeaderData, D, val_ref, decoder, inner_offset, inner_depth)?;
14564 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14565 {
14566 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14567 }
14568 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14569 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14570 }
14571 }
14572
14573 next_offset += envelope_size;
14574 _next_ordinal_to_read += 1;
14575 if next_offset >= end_offset {
14576 return Ok(());
14577 }
14578
14579 while _next_ordinal_to_read < 18 {
14581 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14582 _next_ordinal_to_read += 1;
14583 next_offset += envelope_size;
14584 }
14585
14586 let next_out_of_line = decoder.next_out_of_line();
14587 let handles_before = decoder.remaining_handles();
14588 if let Some((inlined, num_bytes, num_handles)) =
14589 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14590 {
14591 let member_inline_size =
14592 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14593 if inlined != (member_inline_size <= 4) {
14594 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14595 }
14596 let inner_offset;
14597 let mut inner_depth = depth.clone();
14598 if inlined {
14599 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14600 inner_offset = next_offset;
14601 } else {
14602 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14603 inner_depth.increment()?;
14604 }
14605 let val_ref = self.uptime.get_or_insert_with(|| fidl::new_empty!(i64, D));
14606 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
14607 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14608 {
14609 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14610 }
14611 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14612 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14613 }
14614 }
14615
14616 next_offset += envelope_size;
14617 _next_ordinal_to_read += 1;
14618 if next_offset >= end_offset {
14619 return Ok(());
14620 }
14621
14622 while _next_ordinal_to_read < 19 {
14624 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14625 _next_ordinal_to_read += 1;
14626 next_offset += envelope_size;
14627 }
14628
14629 let next_out_of_line = decoder.next_out_of_line();
14630 let handles_before = decoder.remaining_handles();
14631 if let Some((inlined, num_bytes, num_handles)) =
14632 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14633 {
14634 let member_inline_size =
14635 <Nat64Info as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14636 if inlined != (member_inline_size <= 4) {
14637 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14638 }
14639 let inner_offset;
14640 let mut inner_depth = depth.clone();
14641 if inlined {
14642 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14643 inner_offset = next_offset;
14644 } else {
14645 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14646 inner_depth.increment()?;
14647 }
14648 let val_ref = self.nat64_info.get_or_insert_with(|| fidl::new_empty!(Nat64Info, D));
14649 fidl::decode!(Nat64Info, D, val_ref, decoder, inner_offset, inner_depth)?;
14650 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14651 {
14652 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14653 }
14654 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14655 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14656 }
14657 }
14658
14659 next_offset += envelope_size;
14660 _next_ordinal_to_read += 1;
14661 if next_offset >= end_offset {
14662 return Ok(());
14663 }
14664
14665 while _next_ordinal_to_read < 20 {
14667 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14668 _next_ordinal_to_read += 1;
14669 next_offset += envelope_size;
14670 }
14671
14672 let next_out_of_line = decoder.next_out_of_line();
14673 let handles_before = decoder.remaining_handles();
14674 if let Some((inlined, num_bytes, num_handles)) =
14675 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14676 {
14677 let member_inline_size =
14678 <TrelCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14679 if inlined != (member_inline_size <= 4) {
14680 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14681 }
14682 let inner_offset;
14683 let mut inner_depth = depth.clone();
14684 if inlined {
14685 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14686 inner_offset = next_offset;
14687 } else {
14688 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14689 inner_depth.increment()?;
14690 }
14691 let val_ref =
14692 self.trel_counters.get_or_insert_with(|| fidl::new_empty!(TrelCounters, D));
14693 fidl::decode!(TrelCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
14694 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14695 {
14696 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14697 }
14698 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14699 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14700 }
14701 }
14702
14703 next_offset += envelope_size;
14704 _next_ordinal_to_read += 1;
14705 if next_offset >= end_offset {
14706 return Ok(());
14707 }
14708
14709 while _next_ordinal_to_read < 21 {
14711 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14712 _next_ordinal_to_read += 1;
14713 next_offset += envelope_size;
14714 }
14715
14716 let next_out_of_line = decoder.next_out_of_line();
14717 let handles_before = decoder.remaining_handles();
14718 if let Some((inlined, num_bytes, num_handles)) =
14719 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14720 {
14721 let member_inline_size =
14722 <TrelPeersInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14723 if inlined != (member_inline_size <= 4) {
14724 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14725 }
14726 let inner_offset;
14727 let mut inner_depth = depth.clone();
14728 if inlined {
14729 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14730 inner_offset = next_offset;
14731 } else {
14732 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14733 inner_depth.increment()?;
14734 }
14735 let val_ref =
14736 self.trel_peers_info.get_or_insert_with(|| fidl::new_empty!(TrelPeersInfo, D));
14737 fidl::decode!(TrelPeersInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
14738 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14739 {
14740 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14741 }
14742 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14743 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14744 }
14745 }
14746
14747 next_offset += envelope_size;
14748 _next_ordinal_to_read += 1;
14749 if next_offset >= end_offset {
14750 return Ok(());
14751 }
14752
14753 while _next_ordinal_to_read < 22 {
14755 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14756 _next_ordinal_to_read += 1;
14757 next_offset += envelope_size;
14758 }
14759
14760 let next_out_of_line = decoder.next_out_of_line();
14761 let handles_before = decoder.remaining_handles();
14762 if let Some((inlined, num_bytes, num_handles)) =
14763 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14764 {
14765 let member_inline_size =
14766 <UpstreamDnsInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14767 if inlined != (member_inline_size <= 4) {
14768 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14769 }
14770 let inner_offset;
14771 let mut inner_depth = depth.clone();
14772 if inlined {
14773 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14774 inner_offset = next_offset;
14775 } else {
14776 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14777 inner_depth.increment()?;
14778 }
14779 let val_ref = self
14780 .upstream_dns_info
14781 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsInfo, D));
14782 fidl::decode!(UpstreamDnsInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
14783 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14784 {
14785 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14786 }
14787 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14788 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14789 }
14790 }
14791
14792 next_offset += envelope_size;
14793 _next_ordinal_to_read += 1;
14794 if next_offset >= end_offset {
14795 return Ok(());
14796 }
14797
14798 while _next_ordinal_to_read < 23 {
14800 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14801 _next_ordinal_to_read += 1;
14802 next_offset += envelope_size;
14803 }
14804
14805 let next_out_of_line = decoder.next_out_of_line();
14806 let handles_before = decoder.remaining_handles();
14807 if let Some((inlined, num_bytes, num_handles)) =
14808 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14809 {
14810 let member_inline_size =
14811 <Dhcp6PdInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14812 if inlined != (member_inline_size <= 4) {
14813 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14814 }
14815 let inner_offset;
14816 let mut inner_depth = depth.clone();
14817 if inlined {
14818 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14819 inner_offset = next_offset;
14820 } else {
14821 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14822 inner_depth.increment()?;
14823 }
14824 let val_ref =
14825 self.dhcp6pd_info.get_or_insert_with(|| fidl::new_empty!(Dhcp6PdInfo, D));
14826 fidl::decode!(Dhcp6PdInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
14827 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14828 {
14829 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14830 }
14831 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14832 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14833 }
14834 }
14835
14836 next_offset += envelope_size;
14837 _next_ordinal_to_read += 1;
14838 if next_offset >= end_offset {
14839 return Ok(());
14840 }
14841
14842 while _next_ordinal_to_read < 24 {
14844 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14845 _next_ordinal_to_read += 1;
14846 next_offset += envelope_size;
14847 }
14848
14849 let next_out_of_line = decoder.next_out_of_line();
14850 let handles_before = decoder.remaining_handles();
14851 if let Some((inlined, num_bytes, num_handles)) =
14852 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14853 {
14854 let member_inline_size = <fidl::encoding::Vector<LinkMetricsEntry, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14855 if inlined != (member_inline_size <= 4) {
14856 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14857 }
14858 let inner_offset;
14859 let mut inner_depth = depth.clone();
14860 if inlined {
14861 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14862 inner_offset = next_offset;
14863 } else {
14864 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14865 inner_depth.increment()?;
14866 }
14867 let val_ref = self.link_metrics_entries.get_or_insert_with(
14868 || fidl::new_empty!(fidl::encoding::Vector<LinkMetricsEntry, 64>, D),
14869 );
14870 fidl::decode!(fidl::encoding::Vector<LinkMetricsEntry, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
14871 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14872 {
14873 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14874 }
14875 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14876 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14877 }
14878 }
14879
14880 next_offset += envelope_size;
14881 _next_ordinal_to_read += 1;
14882 if next_offset >= end_offset {
14883 return Ok(());
14884 }
14885
14886 while _next_ordinal_to_read < 25 {
14888 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14889 _next_ordinal_to_read += 1;
14890 next_offset += envelope_size;
14891 }
14892
14893 let next_out_of_line = decoder.next_out_of_line();
14894 let handles_before = decoder.remaining_handles();
14895 if let Some((inlined, num_bytes, num_handles)) =
14896 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14897 {
14898 let member_inline_size = <fidl_fuchsia_lowpan_device__common::BorderAgentCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14899 if inlined != (member_inline_size <= 4) {
14900 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14901 }
14902 let inner_offset;
14903 let mut inner_depth = depth.clone();
14904 if inlined {
14905 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14906 inner_offset = next_offset;
14907 } else {
14908 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14909 inner_depth.increment()?;
14910 }
14911 let val_ref = self.border_agent_counters.get_or_insert_with(|| {
14912 fidl::new_empty!(fidl_fuchsia_lowpan_device__common::BorderAgentCounters, D)
14913 });
14914 fidl::decode!(
14915 fidl_fuchsia_lowpan_device__common::BorderAgentCounters,
14916 D,
14917 val_ref,
14918 decoder,
14919 inner_offset,
14920 inner_depth
14921 )?;
14922 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14923 {
14924 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14925 }
14926 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14927 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14928 }
14929 }
14930
14931 next_offset += envelope_size;
14932 _next_ordinal_to_read += 1;
14933 if next_offset >= end_offset {
14934 return Ok(());
14935 }
14936
14937 while _next_ordinal_to_read < 26 {
14939 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14940 _next_ordinal_to_read += 1;
14941 next_offset += envelope_size;
14942 }
14943
14944 let next_out_of_line = decoder.next_out_of_line();
14945 let handles_before = decoder.remaining_handles();
14946 if let Some((inlined, num_bytes, num_handles)) =
14947 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14948 {
14949 let member_inline_size =
14950 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14951 if inlined != (member_inline_size <= 4) {
14952 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14953 }
14954 let inner_offset;
14955 let mut inner_depth = depth.clone();
14956 if inlined {
14957 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14958 inner_offset = next_offset;
14959 } else {
14960 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14961 inner_depth.increment()?;
14962 }
14963 let val_ref =
14964 self.multi_ail_detected.get_or_insert_with(|| fidl::new_empty!(bool, D));
14965 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
14966 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14967 {
14968 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14969 }
14970 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14971 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14972 }
14973 }
14974
14975 next_offset += envelope_size;
14976
14977 while next_offset < end_offset {
14979 _next_ordinal_to_read += 1;
14980 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14981 next_offset += envelope_size;
14982 }
14983
14984 Ok(())
14985 }
14986 }
14987
14988 impl TrelCounters {
14989 #[inline(always)]
14990 fn max_ordinal_present(&self) -> u64 {
14991 if let Some(_) = self.tx_packets {
14992 return 5;
14993 }
14994 if let Some(_) = self.tx_failure {
14995 return 4;
14996 }
14997 if let Some(_) = self.tx_bytes {
14998 return 3;
14999 }
15000 if let Some(_) = self.rx_packets {
15001 return 2;
15002 }
15003 if let Some(_) = self.rx_bytes {
15004 return 1;
15005 }
15006 0
15007 }
15008 }
15009
15010 impl fidl::encoding::ValueTypeMarker for TrelCounters {
15011 type Borrowed<'a> = &'a Self;
15012 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15013 value
15014 }
15015 }
15016
15017 unsafe impl fidl::encoding::TypeMarker for TrelCounters {
15018 type Owned = Self;
15019
15020 #[inline(always)]
15021 fn inline_align(_context: fidl::encoding::Context) -> usize {
15022 8
15023 }
15024
15025 #[inline(always)]
15026 fn inline_size(_context: fidl::encoding::Context) -> usize {
15027 16
15028 }
15029 }
15030
15031 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TrelCounters, D>
15032 for &TrelCounters
15033 {
15034 unsafe fn encode(
15035 self,
15036 encoder: &mut fidl::encoding::Encoder<'_, D>,
15037 offset: usize,
15038 mut depth: fidl::encoding::Depth,
15039 ) -> fidl::Result<()> {
15040 encoder.debug_check_bounds::<TrelCounters>(offset);
15041 let max_ordinal: u64 = self.max_ordinal_present();
15043 encoder.write_num(max_ordinal, offset);
15044 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15045 if max_ordinal == 0 {
15047 return Ok(());
15048 }
15049 depth.increment()?;
15050 let envelope_size = 8;
15051 let bytes_len = max_ordinal as usize * envelope_size;
15052 #[allow(unused_variables)]
15053 let offset = encoder.out_of_line_offset(bytes_len);
15054 let mut _prev_end_offset: usize = 0;
15055 if 1 > max_ordinal {
15056 return Ok(());
15057 }
15058
15059 let cur_offset: usize = (1 - 1) * envelope_size;
15062
15063 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15065
15066 fidl::encoding::encode_in_envelope_optional::<u64, D>(
15071 self.rx_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
15072 encoder,
15073 offset + cur_offset,
15074 depth,
15075 )?;
15076
15077 _prev_end_offset = cur_offset + envelope_size;
15078 if 2 > max_ordinal {
15079 return Ok(());
15080 }
15081
15082 let cur_offset: usize = (2 - 1) * envelope_size;
15085
15086 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15088
15089 fidl::encoding::encode_in_envelope_optional::<u64, D>(
15094 self.rx_packets.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
15095 encoder,
15096 offset + cur_offset,
15097 depth,
15098 )?;
15099
15100 _prev_end_offset = cur_offset + envelope_size;
15101 if 3 > max_ordinal {
15102 return Ok(());
15103 }
15104
15105 let cur_offset: usize = (3 - 1) * envelope_size;
15108
15109 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15111
15112 fidl::encoding::encode_in_envelope_optional::<u64, D>(
15117 self.tx_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
15118 encoder,
15119 offset + cur_offset,
15120 depth,
15121 )?;
15122
15123 _prev_end_offset = cur_offset + envelope_size;
15124 if 4 > max_ordinal {
15125 return Ok(());
15126 }
15127
15128 let cur_offset: usize = (4 - 1) * envelope_size;
15131
15132 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15134
15135 fidl::encoding::encode_in_envelope_optional::<u64, D>(
15140 self.tx_failure.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
15141 encoder,
15142 offset + cur_offset,
15143 depth,
15144 )?;
15145
15146 _prev_end_offset = cur_offset + envelope_size;
15147 if 5 > max_ordinal {
15148 return Ok(());
15149 }
15150
15151 let cur_offset: usize = (5 - 1) * envelope_size;
15154
15155 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15157
15158 fidl::encoding::encode_in_envelope_optional::<u64, D>(
15163 self.tx_packets.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
15164 encoder,
15165 offset + cur_offset,
15166 depth,
15167 )?;
15168
15169 _prev_end_offset = cur_offset + envelope_size;
15170
15171 Ok(())
15172 }
15173 }
15174
15175 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TrelCounters {
15176 #[inline(always)]
15177 fn new_empty() -> Self {
15178 Self::default()
15179 }
15180
15181 unsafe fn decode(
15182 &mut self,
15183 decoder: &mut fidl::encoding::Decoder<'_, D>,
15184 offset: usize,
15185 mut depth: fidl::encoding::Depth,
15186 ) -> fidl::Result<()> {
15187 decoder.debug_check_bounds::<Self>(offset);
15188 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15189 None => return Err(fidl::Error::NotNullable),
15190 Some(len) => len,
15191 };
15192 if len == 0 {
15194 return Ok(());
15195 };
15196 depth.increment()?;
15197 let envelope_size = 8;
15198 let bytes_len = len * envelope_size;
15199 let offset = decoder.out_of_line_offset(bytes_len)?;
15200 let mut _next_ordinal_to_read = 0;
15202 let mut next_offset = offset;
15203 let end_offset = offset + bytes_len;
15204 _next_ordinal_to_read += 1;
15205 if next_offset >= end_offset {
15206 return Ok(());
15207 }
15208
15209 while _next_ordinal_to_read < 1 {
15211 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15212 _next_ordinal_to_read += 1;
15213 next_offset += envelope_size;
15214 }
15215
15216 let next_out_of_line = decoder.next_out_of_line();
15217 let handles_before = decoder.remaining_handles();
15218 if let Some((inlined, num_bytes, num_handles)) =
15219 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15220 {
15221 let member_inline_size =
15222 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15223 if inlined != (member_inline_size <= 4) {
15224 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15225 }
15226 let inner_offset;
15227 let mut inner_depth = depth.clone();
15228 if inlined {
15229 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15230 inner_offset = next_offset;
15231 } else {
15232 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15233 inner_depth.increment()?;
15234 }
15235 let val_ref = self.rx_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
15236 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15237 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15238 {
15239 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15240 }
15241 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15242 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15243 }
15244 }
15245
15246 next_offset += envelope_size;
15247 _next_ordinal_to_read += 1;
15248 if next_offset >= end_offset {
15249 return Ok(());
15250 }
15251
15252 while _next_ordinal_to_read < 2 {
15254 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15255 _next_ordinal_to_read += 1;
15256 next_offset += envelope_size;
15257 }
15258
15259 let next_out_of_line = decoder.next_out_of_line();
15260 let handles_before = decoder.remaining_handles();
15261 if let Some((inlined, num_bytes, num_handles)) =
15262 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15263 {
15264 let member_inline_size =
15265 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15266 if inlined != (member_inline_size <= 4) {
15267 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15268 }
15269 let inner_offset;
15270 let mut inner_depth = depth.clone();
15271 if inlined {
15272 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15273 inner_offset = next_offset;
15274 } else {
15275 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15276 inner_depth.increment()?;
15277 }
15278 let val_ref = self.rx_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
15279 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15280 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15281 {
15282 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15283 }
15284 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15285 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15286 }
15287 }
15288
15289 next_offset += envelope_size;
15290 _next_ordinal_to_read += 1;
15291 if next_offset >= end_offset {
15292 return Ok(());
15293 }
15294
15295 while _next_ordinal_to_read < 3 {
15297 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15298 _next_ordinal_to_read += 1;
15299 next_offset += envelope_size;
15300 }
15301
15302 let next_out_of_line = decoder.next_out_of_line();
15303 let handles_before = decoder.remaining_handles();
15304 if let Some((inlined, num_bytes, num_handles)) =
15305 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15306 {
15307 let member_inline_size =
15308 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15309 if inlined != (member_inline_size <= 4) {
15310 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15311 }
15312 let inner_offset;
15313 let mut inner_depth = depth.clone();
15314 if inlined {
15315 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15316 inner_offset = next_offset;
15317 } else {
15318 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15319 inner_depth.increment()?;
15320 }
15321 let val_ref = self.tx_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
15322 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15323 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15324 {
15325 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15326 }
15327 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15328 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15329 }
15330 }
15331
15332 next_offset += envelope_size;
15333 _next_ordinal_to_read += 1;
15334 if next_offset >= end_offset {
15335 return Ok(());
15336 }
15337
15338 while _next_ordinal_to_read < 4 {
15340 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15341 _next_ordinal_to_read += 1;
15342 next_offset += envelope_size;
15343 }
15344
15345 let next_out_of_line = decoder.next_out_of_line();
15346 let handles_before = decoder.remaining_handles();
15347 if let Some((inlined, num_bytes, num_handles)) =
15348 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15349 {
15350 let member_inline_size =
15351 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15352 if inlined != (member_inline_size <= 4) {
15353 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15354 }
15355 let inner_offset;
15356 let mut inner_depth = depth.clone();
15357 if inlined {
15358 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15359 inner_offset = next_offset;
15360 } else {
15361 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15362 inner_depth.increment()?;
15363 }
15364 let val_ref = self.tx_failure.get_or_insert_with(|| fidl::new_empty!(u64, D));
15365 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15366 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15367 {
15368 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15369 }
15370 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15371 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15372 }
15373 }
15374
15375 next_offset += envelope_size;
15376 _next_ordinal_to_read += 1;
15377 if next_offset >= end_offset {
15378 return Ok(());
15379 }
15380
15381 while _next_ordinal_to_read < 5 {
15383 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15384 _next_ordinal_to_read += 1;
15385 next_offset += envelope_size;
15386 }
15387
15388 let next_out_of_line = decoder.next_out_of_line();
15389 let handles_before = decoder.remaining_handles();
15390 if let Some((inlined, num_bytes, num_handles)) =
15391 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15392 {
15393 let member_inline_size =
15394 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15395 if inlined != (member_inline_size <= 4) {
15396 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15397 }
15398 let inner_offset;
15399 let mut inner_depth = depth.clone();
15400 if inlined {
15401 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15402 inner_offset = next_offset;
15403 } else {
15404 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15405 inner_depth.increment()?;
15406 }
15407 let val_ref = self.tx_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
15408 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15409 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15410 {
15411 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15412 }
15413 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15414 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15415 }
15416 }
15417
15418 next_offset += envelope_size;
15419
15420 while next_offset < end_offset {
15422 _next_ordinal_to_read += 1;
15423 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15424 next_offset += envelope_size;
15425 }
15426
15427 Ok(())
15428 }
15429 }
15430
15431 impl TrelPeersInfo {
15432 #[inline(always)]
15433 fn max_ordinal_present(&self) -> u64 {
15434 if let Some(_) = self.num_trel_peers {
15435 return 1;
15436 }
15437 0
15438 }
15439 }
15440
15441 impl fidl::encoding::ValueTypeMarker for TrelPeersInfo {
15442 type Borrowed<'a> = &'a Self;
15443 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15444 value
15445 }
15446 }
15447
15448 unsafe impl fidl::encoding::TypeMarker for TrelPeersInfo {
15449 type Owned = Self;
15450
15451 #[inline(always)]
15452 fn inline_align(_context: fidl::encoding::Context) -> usize {
15453 8
15454 }
15455
15456 #[inline(always)]
15457 fn inline_size(_context: fidl::encoding::Context) -> usize {
15458 16
15459 }
15460 }
15461
15462 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TrelPeersInfo, D>
15463 for &TrelPeersInfo
15464 {
15465 unsafe fn encode(
15466 self,
15467 encoder: &mut fidl::encoding::Encoder<'_, D>,
15468 offset: usize,
15469 mut depth: fidl::encoding::Depth,
15470 ) -> fidl::Result<()> {
15471 encoder.debug_check_bounds::<TrelPeersInfo>(offset);
15472 let max_ordinal: u64 = self.max_ordinal_present();
15474 encoder.write_num(max_ordinal, offset);
15475 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15476 if max_ordinal == 0 {
15478 return Ok(());
15479 }
15480 depth.increment()?;
15481 let envelope_size = 8;
15482 let bytes_len = max_ordinal as usize * envelope_size;
15483 #[allow(unused_variables)]
15484 let offset = encoder.out_of_line_offset(bytes_len);
15485 let mut _prev_end_offset: usize = 0;
15486 if 1 > max_ordinal {
15487 return Ok(());
15488 }
15489
15490 let cur_offset: usize = (1 - 1) * envelope_size;
15493
15494 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15496
15497 fidl::encoding::encode_in_envelope_optional::<u16, D>(
15502 self.num_trel_peers.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
15503 encoder,
15504 offset + cur_offset,
15505 depth,
15506 )?;
15507
15508 _prev_end_offset = cur_offset + envelope_size;
15509
15510 Ok(())
15511 }
15512 }
15513
15514 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TrelPeersInfo {
15515 #[inline(always)]
15516 fn new_empty() -> Self {
15517 Self::default()
15518 }
15519
15520 unsafe fn decode(
15521 &mut self,
15522 decoder: &mut fidl::encoding::Decoder<'_, D>,
15523 offset: usize,
15524 mut depth: fidl::encoding::Depth,
15525 ) -> fidl::Result<()> {
15526 decoder.debug_check_bounds::<Self>(offset);
15527 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15528 None => return Err(fidl::Error::NotNullable),
15529 Some(len) => len,
15530 };
15531 if len == 0 {
15533 return Ok(());
15534 };
15535 depth.increment()?;
15536 let envelope_size = 8;
15537 let bytes_len = len * envelope_size;
15538 let offset = decoder.out_of_line_offset(bytes_len)?;
15539 let mut _next_ordinal_to_read = 0;
15541 let mut next_offset = offset;
15542 let end_offset = offset + bytes_len;
15543 _next_ordinal_to_read += 1;
15544 if next_offset >= end_offset {
15545 return Ok(());
15546 }
15547
15548 while _next_ordinal_to_read < 1 {
15550 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15551 _next_ordinal_to_read += 1;
15552 next_offset += envelope_size;
15553 }
15554
15555 let next_out_of_line = decoder.next_out_of_line();
15556 let handles_before = decoder.remaining_handles();
15557 if let Some((inlined, num_bytes, num_handles)) =
15558 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15559 {
15560 let member_inline_size =
15561 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15562 if inlined != (member_inline_size <= 4) {
15563 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15564 }
15565 let inner_offset;
15566 let mut inner_depth = depth.clone();
15567 if inlined {
15568 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15569 inner_offset = next_offset;
15570 } else {
15571 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15572 inner_depth.increment()?;
15573 }
15574 let val_ref = self.num_trel_peers.get_or_insert_with(|| fidl::new_empty!(u16, D));
15575 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
15576 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15577 {
15578 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15579 }
15580 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15581 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15582 }
15583 }
15584
15585 next_offset += envelope_size;
15586
15587 while next_offset < end_offset {
15589 _next_ordinal_to_read += 1;
15590 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15591 next_offset += envelope_size;
15592 }
15593
15594 Ok(())
15595 }
15596 }
15597
15598 impl UpstreamDnsCounters {
15599 #[inline(always)]
15600 fn max_ordinal_present(&self) -> u64 {
15601 if let Some(_) = self.failures {
15602 return 3;
15603 }
15604 if let Some(_) = self.responses {
15605 return 2;
15606 }
15607 if let Some(_) = self.queries {
15608 return 1;
15609 }
15610 0
15611 }
15612 }
15613
15614 impl fidl::encoding::ValueTypeMarker for UpstreamDnsCounters {
15615 type Borrowed<'a> = &'a Self;
15616 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15617 value
15618 }
15619 }
15620
15621 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsCounters {
15622 type Owned = Self;
15623
15624 #[inline(always)]
15625 fn inline_align(_context: fidl::encoding::Context) -> usize {
15626 8
15627 }
15628
15629 #[inline(always)]
15630 fn inline_size(_context: fidl::encoding::Context) -> usize {
15631 16
15632 }
15633 }
15634
15635 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UpstreamDnsCounters, D>
15636 for &UpstreamDnsCounters
15637 {
15638 unsafe fn encode(
15639 self,
15640 encoder: &mut fidl::encoding::Encoder<'_, D>,
15641 offset: usize,
15642 mut depth: fidl::encoding::Depth,
15643 ) -> fidl::Result<()> {
15644 encoder.debug_check_bounds::<UpstreamDnsCounters>(offset);
15645 let max_ordinal: u64 = self.max_ordinal_present();
15647 encoder.write_num(max_ordinal, offset);
15648 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15649 if max_ordinal == 0 {
15651 return Ok(());
15652 }
15653 depth.increment()?;
15654 let envelope_size = 8;
15655 let bytes_len = max_ordinal as usize * envelope_size;
15656 #[allow(unused_variables)]
15657 let offset = encoder.out_of_line_offset(bytes_len);
15658 let mut _prev_end_offset: usize = 0;
15659 if 1 > max_ordinal {
15660 return Ok(());
15661 }
15662
15663 let cur_offset: usize = (1 - 1) * envelope_size;
15666
15667 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15669
15670 fidl::encoding::encode_in_envelope_optional::<u32, D>(
15675 self.queries.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
15676 encoder,
15677 offset + cur_offset,
15678 depth,
15679 )?;
15680
15681 _prev_end_offset = cur_offset + envelope_size;
15682 if 2 > max_ordinal {
15683 return Ok(());
15684 }
15685
15686 let cur_offset: usize = (2 - 1) * envelope_size;
15689
15690 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15692
15693 fidl::encoding::encode_in_envelope_optional::<u32, D>(
15698 self.responses.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
15699 encoder,
15700 offset + cur_offset,
15701 depth,
15702 )?;
15703
15704 _prev_end_offset = cur_offset + envelope_size;
15705 if 3 > max_ordinal {
15706 return Ok(());
15707 }
15708
15709 let cur_offset: usize = (3 - 1) * envelope_size;
15712
15713 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15715
15716 fidl::encoding::encode_in_envelope_optional::<u32, D>(
15721 self.failures.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
15722 encoder,
15723 offset + cur_offset,
15724 depth,
15725 )?;
15726
15727 _prev_end_offset = cur_offset + envelope_size;
15728
15729 Ok(())
15730 }
15731 }
15732
15733 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsCounters {
15734 #[inline(always)]
15735 fn new_empty() -> Self {
15736 Self::default()
15737 }
15738
15739 unsafe fn decode(
15740 &mut self,
15741 decoder: &mut fidl::encoding::Decoder<'_, D>,
15742 offset: usize,
15743 mut depth: fidl::encoding::Depth,
15744 ) -> fidl::Result<()> {
15745 decoder.debug_check_bounds::<Self>(offset);
15746 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15747 None => return Err(fidl::Error::NotNullable),
15748 Some(len) => len,
15749 };
15750 if len == 0 {
15752 return Ok(());
15753 };
15754 depth.increment()?;
15755 let envelope_size = 8;
15756 let bytes_len = len * envelope_size;
15757 let offset = decoder.out_of_line_offset(bytes_len)?;
15758 let mut _next_ordinal_to_read = 0;
15760 let mut next_offset = offset;
15761 let end_offset = offset + bytes_len;
15762 _next_ordinal_to_read += 1;
15763 if next_offset >= end_offset {
15764 return Ok(());
15765 }
15766
15767 while _next_ordinal_to_read < 1 {
15769 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15770 _next_ordinal_to_read += 1;
15771 next_offset += envelope_size;
15772 }
15773
15774 let next_out_of_line = decoder.next_out_of_line();
15775 let handles_before = decoder.remaining_handles();
15776 if let Some((inlined, num_bytes, num_handles)) =
15777 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15778 {
15779 let member_inline_size =
15780 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15781 if inlined != (member_inline_size <= 4) {
15782 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15783 }
15784 let inner_offset;
15785 let mut inner_depth = depth.clone();
15786 if inlined {
15787 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15788 inner_offset = next_offset;
15789 } else {
15790 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15791 inner_depth.increment()?;
15792 }
15793 let val_ref = self.queries.get_or_insert_with(|| fidl::new_empty!(u32, D));
15794 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
15795 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15796 {
15797 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15798 }
15799 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15800 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15801 }
15802 }
15803
15804 next_offset += envelope_size;
15805 _next_ordinal_to_read += 1;
15806 if next_offset >= end_offset {
15807 return Ok(());
15808 }
15809
15810 while _next_ordinal_to_read < 2 {
15812 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15813 _next_ordinal_to_read += 1;
15814 next_offset += envelope_size;
15815 }
15816
15817 let next_out_of_line = decoder.next_out_of_line();
15818 let handles_before = decoder.remaining_handles();
15819 if let Some((inlined, num_bytes, num_handles)) =
15820 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15821 {
15822 let member_inline_size =
15823 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15824 if inlined != (member_inline_size <= 4) {
15825 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15826 }
15827 let inner_offset;
15828 let mut inner_depth = depth.clone();
15829 if inlined {
15830 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15831 inner_offset = next_offset;
15832 } else {
15833 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15834 inner_depth.increment()?;
15835 }
15836 let val_ref = self.responses.get_or_insert_with(|| fidl::new_empty!(u32, D));
15837 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
15838 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15839 {
15840 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15841 }
15842 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15843 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15844 }
15845 }
15846
15847 next_offset += envelope_size;
15848 _next_ordinal_to_read += 1;
15849 if next_offset >= end_offset {
15850 return Ok(());
15851 }
15852
15853 while _next_ordinal_to_read < 3 {
15855 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15856 _next_ordinal_to_read += 1;
15857 next_offset += envelope_size;
15858 }
15859
15860 let next_out_of_line = decoder.next_out_of_line();
15861 let handles_before = decoder.remaining_handles();
15862 if let Some((inlined, num_bytes, num_handles)) =
15863 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15864 {
15865 let member_inline_size =
15866 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15867 if inlined != (member_inline_size <= 4) {
15868 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15869 }
15870 let inner_offset;
15871 let mut inner_depth = depth.clone();
15872 if inlined {
15873 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15874 inner_offset = next_offset;
15875 } else {
15876 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15877 inner_depth.increment()?;
15878 }
15879 let val_ref = self.failures.get_or_insert_with(|| fidl::new_empty!(u32, D));
15880 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
15881 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15882 {
15883 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15884 }
15885 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15886 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15887 }
15888 }
15889
15890 next_offset += envelope_size;
15891
15892 while next_offset < end_offset {
15894 _next_ordinal_to_read += 1;
15895 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15896 next_offset += envelope_size;
15897 }
15898
15899 Ok(())
15900 }
15901 }
15902
15903 impl UpstreamDnsInfo {
15904 #[inline(always)]
15905 fn max_ordinal_present(&self) -> u64 {
15906 if let Some(_) = self.upstream_dns_query_state {
15907 return 1;
15908 }
15909 0
15910 }
15911 }
15912
15913 impl fidl::encoding::ValueTypeMarker for UpstreamDnsInfo {
15914 type Borrowed<'a> = &'a Self;
15915 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15916 value
15917 }
15918 }
15919
15920 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsInfo {
15921 type Owned = Self;
15922
15923 #[inline(always)]
15924 fn inline_align(_context: fidl::encoding::Context) -> usize {
15925 8
15926 }
15927
15928 #[inline(always)]
15929 fn inline_size(_context: fidl::encoding::Context) -> usize {
15930 16
15931 }
15932 }
15933
15934 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UpstreamDnsInfo, D>
15935 for &UpstreamDnsInfo
15936 {
15937 unsafe fn encode(
15938 self,
15939 encoder: &mut fidl::encoding::Encoder<'_, D>,
15940 offset: usize,
15941 mut depth: fidl::encoding::Depth,
15942 ) -> fidl::Result<()> {
15943 encoder.debug_check_bounds::<UpstreamDnsInfo>(offset);
15944 let max_ordinal: u64 = self.max_ordinal_present();
15946 encoder.write_num(max_ordinal, offset);
15947 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15948 if max_ordinal == 0 {
15950 return Ok(());
15951 }
15952 depth.increment()?;
15953 let envelope_size = 8;
15954 let bytes_len = max_ordinal as usize * envelope_size;
15955 #[allow(unused_variables)]
15956 let offset = encoder.out_of_line_offset(bytes_len);
15957 let mut _prev_end_offset: usize = 0;
15958 if 1 > max_ordinal {
15959 return Ok(());
15960 }
15961
15962 let cur_offset: usize = (1 - 1) * envelope_size;
15965
15966 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15968
15969 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsQueryState, D>(
15974 self.upstream_dns_query_state
15975 .as_ref()
15976 .map(<UpstreamDnsQueryState as fidl::encoding::ValueTypeMarker>::borrow),
15977 encoder,
15978 offset + cur_offset,
15979 depth,
15980 )?;
15981
15982 _prev_end_offset = cur_offset + envelope_size;
15983
15984 Ok(())
15985 }
15986 }
15987
15988 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsInfo {
15989 #[inline(always)]
15990 fn new_empty() -> Self {
15991 Self::default()
15992 }
15993
15994 unsafe fn decode(
15995 &mut self,
15996 decoder: &mut fidl::encoding::Decoder<'_, D>,
15997 offset: usize,
15998 mut depth: fidl::encoding::Depth,
15999 ) -> fidl::Result<()> {
16000 decoder.debug_check_bounds::<Self>(offset);
16001 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16002 None => return Err(fidl::Error::NotNullable),
16003 Some(len) => len,
16004 };
16005 if len == 0 {
16007 return Ok(());
16008 };
16009 depth.increment()?;
16010 let envelope_size = 8;
16011 let bytes_len = len * envelope_size;
16012 let offset = decoder.out_of_line_offset(bytes_len)?;
16013 let mut _next_ordinal_to_read = 0;
16015 let mut next_offset = offset;
16016 let end_offset = offset + bytes_len;
16017 _next_ordinal_to_read += 1;
16018 if next_offset >= end_offset {
16019 return Ok(());
16020 }
16021
16022 while _next_ordinal_to_read < 1 {
16024 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16025 _next_ordinal_to_read += 1;
16026 next_offset += envelope_size;
16027 }
16028
16029 let next_out_of_line = decoder.next_out_of_line();
16030 let handles_before = decoder.remaining_handles();
16031 if let Some((inlined, num_bytes, num_handles)) =
16032 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16033 {
16034 let member_inline_size =
16035 <UpstreamDnsQueryState as fidl::encoding::TypeMarker>::inline_size(
16036 decoder.context,
16037 );
16038 if inlined != (member_inline_size <= 4) {
16039 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16040 }
16041 let inner_offset;
16042 let mut inner_depth = depth.clone();
16043 if inlined {
16044 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16045 inner_offset = next_offset;
16046 } else {
16047 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16048 inner_depth.increment()?;
16049 }
16050 let val_ref = self
16051 .upstream_dns_query_state
16052 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsQueryState, D));
16053 fidl::decode!(
16054 UpstreamDnsQueryState,
16055 D,
16056 val_ref,
16057 decoder,
16058 inner_offset,
16059 inner_depth
16060 )?;
16061 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16062 {
16063 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16064 }
16065 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16066 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16067 }
16068 }
16069
16070 next_offset += envelope_size;
16071
16072 while next_offset < end_offset {
16074 _next_ordinal_to_read += 1;
16075 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16076 next_offset += envelope_size;
16077 }
16078
16079 Ok(())
16080 }
16081 }
16082
16083 impl fidl::encoding::ValueTypeMarker for JoinParams {
16084 type Borrowed<'a> = &'a Self;
16085 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16086 value
16087 }
16088 }
16089
16090 unsafe impl fidl::encoding::TypeMarker for JoinParams {
16091 type Owned = Self;
16092
16093 #[inline(always)]
16094 fn inline_align(_context: fidl::encoding::Context) -> usize {
16095 8
16096 }
16097
16098 #[inline(always)]
16099 fn inline_size(_context: fidl::encoding::Context) -> usize {
16100 16
16101 }
16102 }
16103
16104 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<JoinParams, D>
16105 for &JoinParams
16106 {
16107 #[inline]
16108 unsafe fn encode(
16109 self,
16110 encoder: &mut fidl::encoding::Encoder<'_, D>,
16111 offset: usize,
16112 _depth: fidl::encoding::Depth,
16113 ) -> fidl::Result<()> {
16114 encoder.debug_check_bounds::<JoinParams>(offset);
16115 encoder.write_num::<u64>(self.ordinal(), offset);
16116 match self {
16117 JoinParams::ProvisioningParameter(ref val) => {
16118 fidl::encoding::encode_in_envelope::<fidl_fuchsia_lowpan_device__common::ProvisioningParams, D>(
16119 <fidl_fuchsia_lowpan_device__common::ProvisioningParams as fidl::encoding::ValueTypeMarker>::borrow(val),
16120 encoder, offset + 8, _depth
16121 )
16122 }
16123 JoinParams::JoinerParameter(ref val) => {
16124 fidl::encoding::encode_in_envelope::<JoinerCommissioningParams, D>(
16125 <JoinerCommissioningParams as fidl::encoding::ValueTypeMarker>::borrow(val),
16126 encoder, offset + 8, _depth
16127 )
16128 }
16129 JoinParams::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
16130 }
16131 }
16132 }
16133
16134 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for JoinParams {
16135 #[inline(always)]
16136 fn new_empty() -> Self {
16137 Self::__SourceBreaking { unknown_ordinal: 0 }
16138 }
16139
16140 #[inline]
16141 unsafe fn decode(
16142 &mut self,
16143 decoder: &mut fidl::encoding::Decoder<'_, D>,
16144 offset: usize,
16145 mut depth: fidl::encoding::Depth,
16146 ) -> fidl::Result<()> {
16147 decoder.debug_check_bounds::<Self>(offset);
16148 #[allow(unused_variables)]
16149 let next_out_of_line = decoder.next_out_of_line();
16150 let handles_before = decoder.remaining_handles();
16151 let (ordinal, inlined, num_bytes, num_handles) =
16152 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
16153
16154 let member_inline_size = match ordinal {
16155 1 => <fidl_fuchsia_lowpan_device__common::ProvisioningParams as fidl::encoding::TypeMarker>::inline_size(decoder.context),
16156 2 => <JoinerCommissioningParams as fidl::encoding::TypeMarker>::inline_size(decoder.context),
16157 0 => return Err(fidl::Error::UnknownUnionTag),
16158 _ => num_bytes as usize,
16159 };
16160
16161 if inlined != (member_inline_size <= 4) {
16162 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16163 }
16164 let _inner_offset;
16165 if inlined {
16166 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
16167 _inner_offset = offset + 8;
16168 } else {
16169 depth.increment()?;
16170 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16171 }
16172 match ordinal {
16173 1 => {
16174 #[allow(irrefutable_let_patterns)]
16175 if let JoinParams::ProvisioningParameter(_) = self {
16176 } else {
16178 *self = JoinParams::ProvisioningParameter(fidl::new_empty!(
16180 fidl_fuchsia_lowpan_device__common::ProvisioningParams,
16181 D
16182 ));
16183 }
16184 #[allow(irrefutable_let_patterns)]
16185 if let JoinParams::ProvisioningParameter(ref mut val) = self {
16186 fidl::decode!(
16187 fidl_fuchsia_lowpan_device__common::ProvisioningParams,
16188 D,
16189 val,
16190 decoder,
16191 _inner_offset,
16192 depth
16193 )?;
16194 } else {
16195 unreachable!()
16196 }
16197 }
16198 2 => {
16199 #[allow(irrefutable_let_patterns)]
16200 if let JoinParams::JoinerParameter(_) = self {
16201 } else {
16203 *self = JoinParams::JoinerParameter(fidl::new_empty!(
16205 JoinerCommissioningParams,
16206 D
16207 ));
16208 }
16209 #[allow(irrefutable_let_patterns)]
16210 if let JoinParams::JoinerParameter(ref mut val) = self {
16211 fidl::decode!(
16212 JoinerCommissioningParams,
16213 D,
16214 val,
16215 decoder,
16216 _inner_offset,
16217 depth
16218 )?;
16219 } else {
16220 unreachable!()
16221 }
16222 }
16223 #[allow(deprecated)]
16224 ordinal => {
16225 for _ in 0..num_handles {
16226 decoder.drop_next_handle()?;
16227 }
16228 *self = JoinParams::__SourceBreaking { unknown_ordinal: ordinal };
16229 }
16230 }
16231 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
16232 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16233 }
16234 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16235 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16236 }
16237 Ok(())
16238 }
16239 }
16240
16241 impl fidl::encoding::ValueTypeMarker for ProvisioningProgress {
16242 type Borrowed<'a> = &'a Self;
16243 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16244 value
16245 }
16246 }
16247
16248 unsafe impl fidl::encoding::TypeMarker for ProvisioningProgress {
16249 type Owned = Self;
16250
16251 #[inline(always)]
16252 fn inline_align(_context: fidl::encoding::Context) -> usize {
16253 8
16254 }
16255
16256 #[inline(always)]
16257 fn inline_size(_context: fidl::encoding::Context) -> usize {
16258 16
16259 }
16260 }
16261
16262 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProvisioningProgress, D>
16263 for &ProvisioningProgress
16264 {
16265 #[inline]
16266 unsafe fn encode(
16267 self,
16268 encoder: &mut fidl::encoding::Encoder<'_, D>,
16269 offset: usize,
16270 _depth: fidl::encoding::Depth,
16271 ) -> fidl::Result<()> {
16272 encoder.debug_check_bounds::<ProvisioningProgress>(offset);
16273 encoder.write_num::<u64>(self.ordinal(), offset);
16274 match self {
16275 ProvisioningProgress::Progress(ref val) => {
16276 fidl::encoding::encode_in_envelope::<f32, D>(
16277 <f32 as fidl::encoding::ValueTypeMarker>::borrow(val),
16278 encoder, offset + 8, _depth
16279 )
16280 }
16281 ProvisioningProgress::Identity(ref val) => {
16282 fidl::encoding::encode_in_envelope::<fidl_fuchsia_lowpan_device__common::Identity, D>(
16283 <fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::ValueTypeMarker>::borrow(val),
16284 encoder, offset + 8, _depth
16285 )
16286 }
16287 ProvisioningProgress::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
16288 }
16289 }
16290 }
16291
16292 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProvisioningProgress {
16293 #[inline(always)]
16294 fn new_empty() -> Self {
16295 Self::__SourceBreaking { unknown_ordinal: 0 }
16296 }
16297
16298 #[inline]
16299 unsafe fn decode(
16300 &mut self,
16301 decoder: &mut fidl::encoding::Decoder<'_, D>,
16302 offset: usize,
16303 mut depth: fidl::encoding::Depth,
16304 ) -> fidl::Result<()> {
16305 decoder.debug_check_bounds::<Self>(offset);
16306 #[allow(unused_variables)]
16307 let next_out_of_line = decoder.next_out_of_line();
16308 let handles_before = decoder.remaining_handles();
16309 let (ordinal, inlined, num_bytes, num_handles) =
16310 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
16311
16312 let member_inline_size = match ordinal {
16313 1 => <f32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
16314 2 => <fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::TypeMarker>::inline_size(decoder.context),
16315 0 => return Err(fidl::Error::UnknownUnionTag),
16316 _ => num_bytes as usize,
16317 };
16318
16319 if inlined != (member_inline_size <= 4) {
16320 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16321 }
16322 let _inner_offset;
16323 if inlined {
16324 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
16325 _inner_offset = offset + 8;
16326 } else {
16327 depth.increment()?;
16328 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16329 }
16330 match ordinal {
16331 1 => {
16332 #[allow(irrefutable_let_patterns)]
16333 if let ProvisioningProgress::Progress(_) = self {
16334 } else {
16336 *self = ProvisioningProgress::Progress(fidl::new_empty!(f32, D));
16338 }
16339 #[allow(irrefutable_let_patterns)]
16340 if let ProvisioningProgress::Progress(ref mut val) = self {
16341 fidl::decode!(f32, D, val, decoder, _inner_offset, depth)?;
16342 } else {
16343 unreachable!()
16344 }
16345 }
16346 2 => {
16347 #[allow(irrefutable_let_patterns)]
16348 if let ProvisioningProgress::Identity(_) = self {
16349 } else {
16351 *self = ProvisioningProgress::Identity(fidl::new_empty!(
16353 fidl_fuchsia_lowpan_device__common::Identity,
16354 D
16355 ));
16356 }
16357 #[allow(irrefutable_let_patterns)]
16358 if let ProvisioningProgress::Identity(ref mut val) = self {
16359 fidl::decode!(
16360 fidl_fuchsia_lowpan_device__common::Identity,
16361 D,
16362 val,
16363 decoder,
16364 _inner_offset,
16365 depth
16366 )?;
16367 } else {
16368 unreachable!()
16369 }
16370 }
16371 #[allow(deprecated)]
16372 ordinal => {
16373 for _ in 0..num_handles {
16374 decoder.drop_next_handle()?;
16375 }
16376 *self = ProvisioningProgress::__SourceBreaking { unknown_ordinal: ordinal };
16377 }
16378 }
16379 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
16380 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16381 }
16382 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16383 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16384 }
16385 Ok(())
16386 }
16387 }
16388}