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_LOWPAN_CONTEXTS: u32 = 32;
16
17pub const MAX_NEIGHBOR_INSPECT_ENTRIES: u32 = 64;
20
21pub const MAX_ON_MESH_PREFIXES: u32 = 32;
22
23pub const MAX_PROVISION_URL_LEN: u16 = 64;
24
25pub const MAX_SERVER_DATA_SIZE: u32 = 252;
29
30pub const MAX_SERVICE_DATA_SIZE: u32 = 252;
33
34pub const MAX_SERVICE_ENTRIES: u32 = 32;
37
38pub const MAX_SRP_INSPECT_ENTRIES: u32 = 64;
41
42pub const MAX_STEERING_DATA_LENGTH: u32 = 16;
45
46pub const MAX_VENDOR_DATA_LEN: u16 = 64;
47
48pub const MAX_VENDOR_MODEL_LEN: u16 = 32;
49
50pub const MAX_VENDOR_NAME_LEN: u16 = 32;
51
52pub const MAX_VENDOR_SW_VER_LEN: u16 = 16;
53
54pub const PSKD_LEN: u16 = 32;
55
56#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
58pub enum Dhcp6PdState {
59 Dhcp6PdStateUnspecified,
60 Dhcp6PdStateDisabled,
62 Dhcp6PdStateStopped,
64 Dhcp6PdStateRunning,
66 Dhcp6PdStateIdle,
68 #[doc(hidden)]
69 __SourceBreaking {
70 unknown_ordinal: u32,
71 },
72}
73
74#[macro_export]
76macro_rules! Dhcp6PdStateUnknown {
77 () => {
78 _
79 };
80}
81
82impl Dhcp6PdState {
83 #[inline]
84 pub fn from_primitive(prim: u32) -> Option<Self> {
85 match prim {
86 0 => Some(Self::Dhcp6PdStateUnspecified),
87 1 => Some(Self::Dhcp6PdStateDisabled),
88 2 => Some(Self::Dhcp6PdStateStopped),
89 3 => Some(Self::Dhcp6PdStateRunning),
90 4 => Some(Self::Dhcp6PdStateIdle),
91 _ => None,
92 }
93 }
94
95 #[inline]
96 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
97 match prim {
98 0 => Self::Dhcp6PdStateUnspecified,
99 1 => Self::Dhcp6PdStateDisabled,
100 2 => Self::Dhcp6PdStateStopped,
101 3 => Self::Dhcp6PdStateRunning,
102 4 => Self::Dhcp6PdStateIdle,
103 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
104 }
105 }
106
107 #[inline]
108 pub fn unknown() -> Self {
109 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
110 }
111
112 #[inline]
113 pub const fn into_primitive(self) -> u32 {
114 match self {
115 Self::Dhcp6PdStateUnspecified => 0,
116 Self::Dhcp6PdStateDisabled => 1,
117 Self::Dhcp6PdStateStopped => 2,
118 Self::Dhcp6PdStateRunning => 3,
119 Self::Dhcp6PdStateIdle => 4,
120 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
121 }
122 }
123
124 #[inline]
125 pub fn is_unknown(&self) -> bool {
126 match self {
127 Self::__SourceBreaking { unknown_ordinal: _ } => true,
128 _ => false,
129 }
130 }
131}
132
133#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
134pub enum Nat64State {
135 Nat64StateUnspecified,
136 Nat64StateDisabled,
137 Nat64StateNotRunning,
138 Nat64StateIdle,
139 Nat64StateActive,
140 #[doc(hidden)]
141 __SourceBreaking {
142 unknown_ordinal: u32,
143 },
144}
145
146#[macro_export]
148macro_rules! Nat64StateUnknown {
149 () => {
150 _
151 };
152}
153
154impl Nat64State {
155 #[inline]
156 pub fn from_primitive(prim: u32) -> Option<Self> {
157 match prim {
158 0 => Some(Self::Nat64StateUnspecified),
159 1 => Some(Self::Nat64StateDisabled),
160 2 => Some(Self::Nat64StateNotRunning),
161 3 => Some(Self::Nat64StateIdle),
162 4 => Some(Self::Nat64StateActive),
163 _ => None,
164 }
165 }
166
167 #[inline]
168 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
169 match prim {
170 0 => Self::Nat64StateUnspecified,
171 1 => Self::Nat64StateDisabled,
172 2 => Self::Nat64StateNotRunning,
173 3 => Self::Nat64StateIdle,
174 4 => Self::Nat64StateActive,
175 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
176 }
177 }
178
179 #[inline]
180 pub fn unknown() -> Self {
181 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
182 }
183
184 #[inline]
185 pub const fn into_primitive(self) -> u32 {
186 match self {
187 Self::Nat64StateUnspecified => 0,
188 Self::Nat64StateDisabled => 1,
189 Self::Nat64StateNotRunning => 2,
190 Self::Nat64StateIdle => 3,
191 Self::Nat64StateActive => 4,
192 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
193 }
194 }
195
196 #[inline]
197 pub fn is_unknown(&self) -> bool {
198 match self {
199 Self::__SourceBreaking { unknown_ordinal: _ } => true,
200 _ => false,
201 }
202 }
203}
204
205#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
209pub enum ProvisionError {
210 CredentialRejected,
215 NetworkNotFound,
218 NetworkAlreadyExists,
221 Canceled,
224 #[doc(hidden)]
225 __SourceBreaking { unknown_ordinal: i32 },
226}
227
228#[macro_export]
230macro_rules! ProvisionErrorUnknown {
231 () => {
232 _
233 };
234}
235
236impl ProvisionError {
237 #[inline]
238 pub fn from_primitive(prim: i32) -> Option<Self> {
239 match prim {
240 1 => Some(Self::CredentialRejected),
241 2 => Some(Self::NetworkNotFound),
242 3 => Some(Self::NetworkAlreadyExists),
243 4 => Some(Self::Canceled),
244 _ => None,
245 }
246 }
247
248 #[inline]
249 pub fn from_primitive_allow_unknown(prim: i32) -> Self {
250 match prim {
251 1 => Self::CredentialRejected,
252 2 => Self::NetworkNotFound,
253 3 => Self::NetworkAlreadyExists,
254 4 => Self::Canceled,
255 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
256 }
257 }
258
259 #[inline]
260 pub fn unknown() -> Self {
261 Self::__SourceBreaking { unknown_ordinal: 0x7fffffff }
262 }
263
264 #[inline]
265 pub const fn into_primitive(self) -> i32 {
266 match self {
267 Self::CredentialRejected => 1,
268 Self::NetworkNotFound => 2,
269 Self::NetworkAlreadyExists => 3,
270 Self::Canceled => 4,
271 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
272 }
273 }
274
275 #[inline]
276 pub fn is_unknown(&self) -> bool {
277 match self {
278 Self::__SourceBreaking { unknown_ordinal: _ } => true,
279 _ => false,
280 }
281 }
282}
283
284#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
286#[repr(i8)]
287pub enum RoutePreference {
288 Low = -1,
290 Medium = 0,
292 High = 1,
294}
295
296impl RoutePreference {
297 #[inline]
298 pub fn from_primitive(prim: i8) -> Option<Self> {
299 match prim {
300 -1 => Some(Self::Low),
301 0 => Some(Self::Medium),
302 1 => Some(Self::High),
303 _ => None,
304 }
305 }
306
307 #[inline]
308 pub const fn into_primitive(self) -> i8 {
309 self as i8
310 }
311}
312
313#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
314#[repr(u32)]
315pub enum SrpServerAddressMode {
316 Unicast = 1,
318 Anycast = 2,
320}
321
322impl SrpServerAddressMode {
323 #[inline]
324 pub fn from_primitive(prim: u32) -> Option<Self> {
325 match prim {
326 1 => Some(Self::Unicast),
327 2 => Some(Self::Anycast),
328 _ => None,
329 }
330 }
331
332 #[inline]
333 pub const fn into_primitive(self) -> u32 {
334 self as u32
335 }
336}
337
338#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
339#[repr(u32)]
340pub enum SrpServerState {
341 Disabled = 1,
343 Running = 2,
345 Stopped = 3,
347}
348
349impl SrpServerState {
350 #[inline]
351 pub fn from_primitive(prim: u32) -> Option<Self> {
352 match prim {
353 1 => Some(Self::Disabled),
354 2 => Some(Self::Running),
355 3 => Some(Self::Stopped),
356 _ => None,
357 }
358 }
359
360 #[inline]
361 pub const fn into_primitive(self) -> u32 {
362 self as u32
363 }
364}
365
366#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
368pub enum UpstreamDnsQueryState {
369 UpstreamdnsQueryStateUnspecified,
370 UpstreamdnsQueryStateEnabled,
371 UpstreamdnsQueryStateDisabled,
372 #[doc(hidden)]
373 __SourceBreaking {
374 unknown_ordinal: u32,
375 },
376}
377
378#[macro_export]
380macro_rules! UpstreamDnsQueryStateUnknown {
381 () => {
382 _
383 };
384}
385
386impl UpstreamDnsQueryState {
387 #[inline]
388 pub fn from_primitive(prim: u32) -> Option<Self> {
389 match prim {
390 0 => Some(Self::UpstreamdnsQueryStateUnspecified),
391 1 => Some(Self::UpstreamdnsQueryStateEnabled),
392 2 => Some(Self::UpstreamdnsQueryStateDisabled),
393 _ => None,
394 }
395 }
396
397 #[inline]
398 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
399 match prim {
400 0 => Self::UpstreamdnsQueryStateUnspecified,
401 1 => Self::UpstreamdnsQueryStateEnabled,
402 2 => Self::UpstreamdnsQueryStateDisabled,
403 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
404 }
405 }
406
407 #[inline]
408 pub fn unknown() -> Self {
409 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
410 }
411
412 #[inline]
413 pub const fn into_primitive(self) -> u32 {
414 match self {
415 Self::UpstreamdnsQueryStateUnspecified => 0,
416 Self::UpstreamdnsQueryStateEnabled => 1,
417 Self::UpstreamdnsQueryStateDisabled => 2,
418 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
419 }
420 }
421
422 #[inline]
423 pub fn is_unknown(&self) -> bool {
424 match self {
425 Self::__SourceBreaking { unknown_ordinal: _ } => true,
426 _ => false,
427 }
428 }
429}
430
431#[derive(Clone, Debug, PartialEq)]
432pub struct BeaconInfoStreamNextResponse {
433 pub beacons: Vec<BeaconInfo>,
434}
435
436impl fidl::Persistable for BeaconInfoStreamNextResponse {}
437
438#[derive(Clone, Debug, PartialEq)]
439pub struct DeviceGetSupportedChannelsResponse {
440 pub channels_info: Vec<ChannelInfo>,
441}
442
443impl fidl::Persistable for DeviceGetSupportedChannelsResponse {}
444
445#[derive(Clone, Debug, PartialEq)]
446pub struct DeviceRouteExtraGetLocalExternalRoutesResponse {
447 pub external_routes: Vec<ExternalRoute>,
448}
449
450impl fidl::Persistable for DeviceRouteExtraGetLocalExternalRoutesResponse {}
451
452#[derive(Clone, Debug, PartialEq)]
453pub struct DeviceRouteExtraGetLocalOnMeshPrefixesResponse {
454 pub prefixes: Vec<OnMeshPrefix>,
455}
456
457impl fidl::Persistable for DeviceRouteExtraGetLocalOnMeshPrefixesResponse {}
458
459#[derive(Clone, Debug, PartialEq)]
460pub struct DeviceRouteRegisterExternalRouteRequest {
461 pub external_route: ExternalRoute,
462}
463
464impl fidl::Persistable for DeviceRouteRegisterExternalRouteRequest {}
465
466#[derive(Clone, Debug, PartialEq)]
467pub struct DeviceRouteRegisterOnMeshPrefixRequest {
468 pub prefix: OnMeshPrefix,
469}
470
471impl fidl::Persistable for DeviceRouteRegisterOnMeshPrefixRequest {}
472
473#[derive(Clone, Debug, PartialEq)]
474pub struct DeviceRouteUnregisterExternalRouteRequest {
475 pub subnet: fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
476}
477
478impl fidl::Persistable for DeviceRouteUnregisterExternalRouteRequest {}
479
480#[derive(Clone, Debug, PartialEq)]
481pub struct DeviceRouteUnregisterOnMeshPrefixRequest {
482 pub subnet: fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
483}
484
485impl fidl::Persistable for DeviceRouteUnregisterOnMeshPrefixRequest {}
486
487#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
488#[repr(C)]
489pub struct LegacyJoiningMakeJoinableRequest {
490 pub duration: i64,
491 pub port: u16,
492}
493
494impl fidl::Persistable for LegacyJoiningMakeJoinableRequest {}
495
496#[derive(Clone, Debug, PartialEq)]
497pub struct ProvisioningMonitorWatchProgressResponse {
498 pub progress: ProvisioningProgress,
499}
500
501impl fidl::Persistable for ProvisioningMonitorWatchProgressResponse {}
502
503#[derive(Clone, Debug, PartialEq)]
504pub struct TelemetryProviderGetTelemetryResponse {
505 pub telemetry: Telemetry,
506}
507
508impl fidl::Persistable for TelemetryProviderGetTelemetryResponse {}
509
510#[derive(Clone, Debug, Default, PartialEq)]
511pub struct BeaconInfo {
512 pub address: Option<fidl_fuchsia_lowpan__common::MacAddress>,
514 pub identity: Option<fidl_fuchsia_lowpan_device__common::Identity>,
517 pub rssi: Option<i8>,
522 pub lqi: Option<u8>,
536 #[doc(hidden)]
537 pub __source_breaking: fidl::marker::SourceBreaking,
538}
539
540impl fidl::Persistable for BeaconInfo {}
541
542#[derive(Clone, Debug, Default, PartialEq)]
546pub struct BorderRouterConfig {
547 pub prefix: Option<String>,
551 pub preference: Option<i8>,
555 pub preferred: Option<bool>,
559 pub slaac: Option<bool>,
563 pub dhcp: Option<bool>,
567 pub configure: Option<bool>,
571 pub default_route: Option<bool>,
575 pub on_mesh: Option<bool>,
579 pub stable: Option<bool>,
583 pub nd_dns: Option<bool>,
587 pub dp: Option<bool>,
591 pub rloc16: Option<u16>,
595 #[doc(hidden)]
596 pub __source_breaking: fidl::marker::SourceBreaking,
597}
598
599impl fidl::Persistable for BorderRouterConfig {}
600
601#[derive(Clone, Debug, Default, PartialEq)]
603pub struct BorderRoutingCounters {
604 pub inbound_unicast_packets: Option<u64>,
608 pub inbound_unicast_bytes: Option<u64>,
612 pub inbound_multicast_packets: Option<u64>,
616 pub inbound_multicast_bytes: Option<u64>,
620 pub outbound_unicast_packets: Option<u64>,
624 pub outbound_unicast_bytes: Option<u64>,
628 pub outbound_multicast_packets: Option<u64>,
632 pub outbound_multicast_bytes: Option<u64>,
636 pub ra_rx: Option<u32>,
640 pub ra_tx_success: Option<u32>,
644 pub ra_tx_failure: Option<u32>,
648 pub rs_rx: Option<u32>,
652 pub rs_tx_success: Option<u32>,
656 pub rs_tx_failure: Option<u32>,
660 pub inbound_internet_packets: Option<u64>,
664 pub inbound_internet_bytes: Option<u64>,
668 pub outbound_internet_packets: Option<u64>,
672 pub outbound_internet_bytes: Option<u64>,
676 #[doc(hidden)]
677 pub __source_breaking: fidl::marker::SourceBreaking,
678}
679
680impl fidl::Persistable for BorderRoutingCounters {}
681
682#[derive(Clone, Debug, Default, PartialEq)]
684pub struct BorderRoutingNat64State {
685 pub prefix_manager_state: Option<Nat64State>,
687 pub translator_state: Option<Nat64State>,
689 #[doc(hidden)]
690 pub __source_breaking: fidl::marker::SourceBreaking,
691}
692
693impl fidl::Persistable for BorderRoutingNat64State {}
694
695#[derive(Clone, Debug, Default, PartialEq)]
697pub struct BorderRoutingPeer {
698 pub thread_rloc: Option<u16>,
702 pub age: Option<i64>,
706 #[doc(hidden)]
707 pub __source_breaking: fidl::marker::SourceBreaking,
708}
709
710impl fidl::Persistable for BorderRoutingPeer {}
711
712#[derive(Clone, Debug, Default, PartialEq)]
714pub struct BorderRoutingRouter {
715 pub address: Option<String>,
719 pub duration_since_last_update: Option<i64>,
723 pub age: Option<i64>,
727 pub managed_address_config_flag: Option<bool>,
731 pub other_config_flag: Option<bool>,
735 pub snac_router_flag: Option<bool>,
739 pub is_local_device: Option<bool>,
743 pub is_reachable: Option<bool>,
747 pub is_peer_br: Option<bool>,
751 #[doc(hidden)]
752 pub __source_breaking: fidl::marker::SourceBreaking,
753}
754
755impl fidl::Persistable for BorderRoutingRouter {}
756
757#[derive(Clone, Debug, Default, PartialEq)]
758pub struct ChannelInfo {
759 pub index: Option<u16>,
762 pub id: Option<String>,
778 pub max_transmit_power_dbm: Option<i8>,
781 pub spectrum_center_frequency_hz: Option<u64>,
804 pub spectrum_bandwidth_hz: Option<u64>,
811 pub masked_by_regulatory_domain: Option<bool>,
815 #[doc(hidden)]
816 pub __source_breaking: fidl::marker::SourceBreaking,
817}
818
819impl fidl::Persistable for ChannelInfo {}
820
821#[derive(Clone, Debug, Default, PartialEq)]
825pub struct CommissioningDataset {
826 pub locator: Option<u16>,
830 pub session_id: Option<u16>,
834 pub steering_data: Option<Vec<u8>>,
838 pub joiner_udp_port: Option<u16>,
842 pub is_locator_set: Option<bool>,
846 pub is_session_id_set: Option<bool>,
850 pub is_steering_data_set: Option<bool>,
854 pub is_joiner_udp_port_set: Option<bool>,
858 pub has_extra_tlv: Option<bool>,
862 #[doc(hidden)]
863 pub __source_breaking: fidl::marker::SourceBreaking,
864}
865
866impl fidl::Persistable for CommissioningDataset {}
867
868#[derive(Clone, Debug, Default, PartialEq)]
870pub struct Dhcp6PdInfo {
871 pub dhcp6pd_state: Option<Dhcp6PdState>,
875 pub pd_processed_ra_info: Option<PdProcessedRaInfo>,
879 pub hashed_pd_prefix: Option<Vec<u8>>,
883 #[doc(hidden)]
884 pub __source_breaking: fidl::marker::SourceBreaking,
885}
886
887impl fidl::Persistable for Dhcp6PdInfo {}
888
889#[derive(Clone, Debug, Default, PartialEq)]
891pub struct DnsTxtEntry {
892 pub key: Option<String>,
899 pub value: Option<Vec<u8>>,
906 #[doc(hidden)]
907 pub __source_breaking: fidl::marker::SourceBreaking,
908}
909
910impl fidl::Persistable for DnsTxtEntry {}
911
912#[derive(Clone, Debug, Default, PartialEq)]
914pub struct DnssdCounters {
915 pub success_response: Option<u32>,
919 pub server_failure_response: Option<u32>,
923 pub format_error_response: Option<u32>,
927 pub name_error_response: Option<u32>,
931 pub not_implemented_response: Option<u32>,
935 pub other_response: Option<u32>,
939 pub resolved_by_srp: Option<u32>,
943 pub upstream_dns_counters: Option<UpstreamDnsCounters>,
947 #[doc(hidden)]
948 pub __source_breaking: fidl::marker::SourceBreaking,
949}
950
951impl fidl::Persistable for DnssdCounters {}
952
953#[derive(Clone, Debug, Default, PartialEq)]
957pub struct ExternalRoute {
958 pub subnet: Option<fidl_fuchsia_net__common::Ipv6AddressWithPrefix>,
960 pub route_preference: Option<RoutePreference>,
967 pub stable: Option<bool>,
976 #[doc(hidden)]
977 pub __source_breaking: fidl::marker::SourceBreaking,
978}
979
980impl fidl::Persistable for ExternalRoute {}
981
982#[derive(Clone, Debug, Default, PartialEq)]
986pub struct ExternalRouteConfig {
987 pub prefix: Option<String>,
991 pub rloc16: Option<u16>,
995 pub preference: Option<i8>,
999 pub nat64: Option<bool>,
1003 pub stable: Option<bool>,
1007 pub next_hop_is_this_device: Option<bool>,
1011 pub adv_pio: Option<bool>,
1015 #[doc(hidden)]
1016 pub __source_breaking: fidl::marker::SourceBreaking,
1017}
1018
1019impl fidl::Persistable for ExternalRouteConfig {}
1020
1021#[derive(Clone, Debug, Default, PartialEq)]
1026pub struct JoinerCommissioningParams {
1027 pub pskd: Option<String>,
1029 pub provisioning_url: Option<String>,
1031 pub vendor_name: Option<String>,
1033 pub vendor_model: Option<String>,
1035 pub vendor_sw_version: Option<String>,
1037 pub vendor_data_string: Option<String>,
1039 #[doc(hidden)]
1040 pub __source_breaking: fidl::marker::SourceBreaking,
1041}
1042
1043impl fidl::Persistable for JoinerCommissioningParams {}
1044
1045#[derive(Clone, Debug, Default, PartialEq)]
1047pub struct LeaderData {
1048 pub partition_id: Option<u32>,
1052 pub weight: Option<u8>,
1056 pub network_data_version: Option<u8>,
1060 pub stable_network_data_version: Option<u8>,
1064 pub router_id: Option<u8>,
1068 #[doc(hidden)]
1069 pub __source_breaking: fidl::marker::SourceBreaking,
1070}
1071
1072impl fidl::Persistable for LeaderData {}
1073
1074#[derive(Clone, Debug, Default, PartialEq)]
1076pub struct LinkMetricsEntry {
1077 pub link_margin: Option<u8>,
1079 pub rssi: Option<i8>,
1081 #[doc(hidden)]
1082 pub __source_breaking: fidl::marker::SourceBreaking,
1083}
1084
1085impl fidl::Persistable for LinkMetricsEntry {}
1086
1087#[derive(Clone, Debug, Default, PartialEq)]
1091pub struct LowpanContextInfo {
1092 pub context_id: Option<u8>,
1096 pub compress_flag: Option<bool>,
1100 pub stable: Option<bool>,
1104 pub prefix: Option<String>,
1108 #[doc(hidden)]
1109 pub __source_breaking: fidl::marker::SourceBreaking,
1110}
1111
1112impl fidl::Persistable for LowpanContextInfo {}
1113
1114#[derive(Clone, Debug, Default, PartialEq)]
1116pub struct MultiRadioNeighborInfo {
1117 pub extended_address: Option<Vec<u8>>,
1121 pub thread_rloc: Option<u16>,
1125 pub radio_link_info: Option<Vec<RadioLinkInfo>>,
1131 #[doc(hidden)]
1132 pub __source_breaking: fidl::marker::SourceBreaking,
1133}
1134
1135impl fidl::Persistable for MultiRadioNeighborInfo {}
1136
1137#[derive(Clone, Debug, Default, PartialEq)]
1138pub struct Nat64ErrorCounters {
1139 pub unknown: Option<Nat64PacketCounters>,
1141 pub illegal_packet: Option<Nat64PacketCounters>,
1143 pub unsupported_protocol: Option<Nat64PacketCounters>,
1145 pub no_mapping: Option<Nat64PacketCounters>,
1147 #[doc(hidden)]
1148 pub __source_breaking: fidl::marker::SourceBreaking,
1149}
1150
1151impl fidl::Persistable for Nat64ErrorCounters {}
1152
1153#[derive(Clone, Debug, Default, PartialEq)]
1154pub struct Nat64Info {
1155 pub nat64_state: Option<BorderRoutingNat64State>,
1157 pub nat64_mappings: Option<Vec<Nat64Mapping>>,
1159 pub nat64_error_counters: Option<Nat64ErrorCounters>,
1161 pub nat64_protocol_counters: Option<Nat64ProtocolCounters>,
1163 #[doc(hidden)]
1164 pub __source_breaking: fidl::marker::SourceBreaking,
1165}
1166
1167impl fidl::Persistable for Nat64Info {}
1168
1169#[derive(Clone, Debug, Default, PartialEq)]
1171pub struct Nat64Mapping {
1172 pub mapping_id: Option<u64>,
1174 pub ip4_addr: Option<Vec<u8>>,
1176 pub ip6_addr: Option<Vec<u8>>,
1178 pub remaining_time_ms: Option<u32>,
1180 pub counters: Option<Nat64ProtocolCounters>,
1182 #[doc(hidden)]
1183 pub __source_breaking: fidl::marker::SourceBreaking,
1184}
1185
1186impl fidl::Persistable for Nat64Mapping {}
1187
1188#[derive(Clone, Debug, Default, PartialEq)]
1189pub struct Nat64PacketCounters {
1190 pub ipv4_to_ipv6_packets: Option<u64>,
1192 pub ipv6_to_ipv4_packets: Option<u64>,
1194 #[doc(hidden)]
1195 pub __source_breaking: fidl::marker::SourceBreaking,
1196}
1197
1198impl fidl::Persistable for Nat64PacketCounters {}
1199
1200#[derive(Clone, Debug, Default, PartialEq)]
1201pub struct Nat64ProtocolCounters {
1202 pub tcp: Option<Nat64TrafficCounters>,
1204 pub udp: Option<Nat64TrafficCounters>,
1206 pub icmp: Option<Nat64TrafficCounters>,
1208 pub total: Option<Nat64TrafficCounters>,
1210 #[doc(hidden)]
1211 pub __source_breaking: fidl::marker::SourceBreaking,
1212}
1213
1214impl fidl::Persistable for Nat64ProtocolCounters {}
1215
1216#[derive(Clone, Debug, Default, PartialEq)]
1217pub struct Nat64TrafficCounters {
1218 pub ipv4_to_ipv6_packets: Option<u64>,
1220 pub ipv4_to_ipv6_bytes: Option<u64>,
1222 pub ipv6_to_ipv4_packets: Option<u64>,
1224 pub ipv6_to_ipv4_bytes: Option<u64>,
1226 #[doc(hidden)]
1227 pub __source_breaking: fidl::marker::SourceBreaking,
1228}
1229
1230impl fidl::Persistable for Nat64TrafficCounters {}
1231
1232#[derive(Clone, Debug, Default, PartialEq)]
1234pub struct NetworkData {
1235 pub on_mesh_prefixes: Option<Vec<BorderRouterConfig>>,
1239 pub external_routes: Option<Vec<ExternalRouteConfig>>,
1243 pub services: Option<Vec<ServiceConfig>>,
1247 pub contexts: Option<Vec<LowpanContextInfo>>,
1251 pub commissioning_dataset: Option<CommissioningDataset>,
1255 #[doc(hidden)]
1256 pub __source_breaking: fidl::marker::SourceBreaking,
1257}
1258
1259impl fidl::Persistable for NetworkData {}
1260
1261#[derive(Clone, Debug, Default, PartialEq)]
1263pub struct NetworkScanParameters {
1264 pub channels: Option<Vec<u16>>,
1268 pub tx_power_dbm: Option<i8>,
1279 #[doc(hidden)]
1280 pub __source_breaking: fidl::marker::SourceBreaking,
1281}
1282
1283impl fidl::Persistable for NetworkScanParameters {}
1284
1285#[derive(Clone, Debug, Default, PartialEq)]
1289pub struct OnMeshPrefix {
1290 pub subnet: Option<fidl_fuchsia_net__common::Ipv6AddressWithPrefix>,
1292 pub default_route_preference: Option<RoutePreference>,
1300 pub stable: Option<bool>,
1309 pub slaac_preferred: Option<bool>,
1318 pub slaac_valid: Option<bool>,
1327 #[doc(hidden)]
1328 pub __source_breaking: fidl::marker::SourceBreaking,
1329}
1330
1331impl fidl::Persistable for OnMeshPrefix {}
1332
1333#[derive(Clone, Debug, Default, PartialEq)]
1335pub struct OperationalDataset {
1336 pub active_timestamp: Option<i64>,
1340 pub pending_timestamp: Option<i64>,
1344 pub network_key: Option<Vec<u8>>,
1348 pub network_name: Option<Vec<u8>>,
1352 pub extended_pan_id: Option<Vec<u8>>,
1356 pub mesh_local_prefix: Option<Vec<u8>>,
1360 pub delay: Option<u32>,
1364 pub pan_id: Option<u16>,
1368 pub channel: Option<u16>,
1372 pub wakeup_channel: Option<u16>,
1376 pub pskc: Option<Vec<u8>>,
1380 pub security_policy: Option<SecurityPolicy>,
1384 pub channel_mask: Option<u32>,
1388 #[doc(hidden)]
1389 pub __source_breaking: fidl::marker::SourceBreaking,
1390}
1391
1392impl fidl::Persistable for OperationalDataset {}
1393
1394#[derive(Clone, Debug, Default, PartialEq)]
1396pub struct PdProcessedRaInfo {
1397 pub num_platform_ra_received: Option<u32>,
1401 pub num_platform_pio_processed: Option<u32>,
1405 pub last_platform_ra_msec: Option<u32>,
1409 #[doc(hidden)]
1410 pub __source_breaking: fidl::marker::SourceBreaking,
1411}
1412
1413impl fidl::Persistable for PdProcessedRaInfo {}
1414
1415#[derive(Clone, Debug, Default, PartialEq)]
1417pub struct RadioLinkInfo {
1418 pub link_type: Option<String>,
1424 pub preference: Option<u8>,
1428 #[doc(hidden)]
1429 pub __source_breaking: fidl::marker::SourceBreaking,
1430}
1431
1432impl fidl::Persistable for RadioLinkInfo {}
1433
1434#[derive(Clone, Debug, Default, PartialEq)]
1436pub struct RouterInfo {
1437 pub extended_address: Option<Vec<u8>>,
1441 pub thread_rloc: Option<u16>,
1445 pub router_id: Option<u8>,
1449 pub next_hop: Option<u8>,
1453 pub path_cost: Option<u8>,
1457 pub link_quality_in: Option<u8>,
1461 pub link_quality_out: Option<u8>,
1465 pub age: Option<i64>,
1469 pub link_established: Option<bool>,
1473 #[doc(hidden)]
1474 pub __source_breaking: fidl::marker::SourceBreaking,
1475}
1476
1477impl fidl::Persistable for RouterInfo {}
1478
1479#[derive(Clone, Debug, Default, PartialEq)]
1481pub struct SecurityPolicy {
1482 pub rotation_time: Option<u16>,
1486 pub obtain_network_key_enabled: Option<bool>,
1490 pub native_commissioning_enabled: Option<bool>,
1494 pub routers_enabled: Option<bool>,
1498 pub external_commissioning_enabled: Option<bool>,
1502 pub autonomous_enrollment_enabled: Option<bool>,
1506 pub network_key_provisioning_enabled: Option<bool>,
1510 pub toble_link_enabled: Option<bool>,
1514 pub nonccm_routers_enabled: Option<bool>,
1518 pub version_threshold_for_routing: Option<u8>,
1522 #[doc(hidden)]
1523 pub __source_breaking: fidl::marker::SourceBreaking,
1524}
1525
1526impl fidl::Persistable for SecurityPolicy {}
1527
1528#[derive(Clone, Debug, Default, PartialEq)]
1532pub struct ServerConfig {
1533 pub stable: Option<bool>,
1537 pub server_data_length: Option<u8>,
1541 pub server_data: Option<Vec<u8>>,
1545 pub rloc16: Option<u16>,
1549 #[doc(hidden)]
1550 pub __source_breaking: fidl::marker::SourceBreaking,
1551}
1552
1553impl fidl::Persistable for ServerConfig {}
1554
1555#[derive(Clone, Debug, Default, PartialEq)]
1559pub struct ServiceConfig {
1560 pub service_id: Option<u8>,
1564 pub enterprise_number: Option<u32>,
1568 pub service_data_length: Option<u8>,
1572 pub service_data: Option<Vec<u8>>,
1576 pub server_config: Option<ServerConfig>,
1580 #[doc(hidden)]
1581 pub __source_breaking: fidl::marker::SourceBreaking,
1582}
1583
1584impl fidl::Persistable for ServiceConfig {}
1585
1586#[derive(Clone, Debug, Default, PartialEq)]
1588pub struct SrpServerHost {
1589 pub name: Option<String>,
1593 pub deleted: Option<bool>,
1597 pub addresses: Option<Vec<fidl_fuchsia_net__common::Ipv6Address>>,
1601 #[doc(hidden)]
1602 pub __source_breaking: fidl::marker::SourceBreaking,
1603}
1604
1605impl fidl::Persistable for SrpServerHost {}
1606
1607#[derive(Clone, Debug, Default, PartialEq)]
1609pub struct SrpServerInfo {
1610 pub state: Option<SrpServerState>,
1614 pub port: Option<u16>,
1618 pub address_mode: Option<SrpServerAddressMode>,
1622 pub response_counters: Option<SrpServerResponseCounters>,
1626 pub hosts_registration: Option<SrpServerRegistration>,
1630 pub services_registration: Option<SrpServerRegistration>,
1634 pub hosts: Option<Vec<SrpServerHost>>,
1638 pub services: Option<Vec<SrpServerService>>,
1642 #[doc(hidden)]
1643 pub __source_breaking: fidl::marker::SourceBreaking,
1644}
1645
1646impl fidl::Persistable for SrpServerInfo {}
1647
1648#[derive(Clone, Debug, Default, PartialEq)]
1650pub struct SrpServerRegistration {
1651 pub fresh_count: Option<u32>,
1655 pub deleted_count: Option<u32>,
1659 pub lease_time_total: Option<i64>,
1663 pub key_lease_time_total: Option<i64>,
1667 pub remaining_lease_time_total: Option<i64>,
1671 pub remaining_key_lease_time_total: Option<i64>,
1675 #[doc(hidden)]
1676 pub __source_breaking: fidl::marker::SourceBreaking,
1677}
1678
1679impl fidl::Persistable for SrpServerRegistration {}
1680
1681#[derive(Clone, Debug, Default, PartialEq)]
1682pub struct SrpServerResponseCounters {
1683 pub success_response: Option<u32>,
1687 pub server_failure_response: Option<u32>,
1691 pub format_error_response: Option<u32>,
1695 pub name_exists_response: Option<u32>,
1699 pub refused_response: Option<u32>,
1703 pub other_response: Option<u32>,
1707 #[doc(hidden)]
1708 pub __source_breaking: fidl::marker::SourceBreaking,
1709}
1710
1711impl fidl::Persistable for SrpServerResponseCounters {}
1712
1713#[derive(Clone, Debug, Default, PartialEq)]
1715pub struct SrpServerService {
1716 pub instance_name: Option<String>,
1720 pub deleted: Option<bool>,
1724 pub subtypes: Option<Vec<String>>,
1733 pub port: Option<u16>,
1737 pub priority: Option<u16>,
1741 pub weight: Option<u16>,
1745 pub ttl: Option<i64>,
1749 pub lease: Option<i64>,
1753 pub key_lease: Option<i64>,
1757 pub txt_data: Option<Vec<DnsTxtEntry>>,
1761 pub host: Option<SrpServerHost>,
1765 #[doc(hidden)]
1766 pub __source_breaking: fidl::marker::SourceBreaking,
1767}
1768
1769impl fidl::Persistable for SrpServerService {}
1770
1771#[derive(Clone, Debug, Default, PartialEq)]
1778pub struct Telemetry {
1779 pub rssi: Option<i8>,
1781 pub tx_power: Option<i8>,
1783 pub channel_index: Option<u16>,
1785 pub partition_id: Option<u32>,
1787 pub stack_version: Option<String>,
1789 pub rcp_version: Option<String>,
1791 pub thread_link_mode: Option<u8>,
1797 pub thread_router_id: Option<u8>,
1801 pub thread_rloc: Option<u16>,
1805 pub thread_network_data_version: Option<u8>,
1809 pub thread_stable_network_data_version: Option<u8>,
1813 pub thread_network_data: Option<Vec<u8>>,
1818 pub thread_stable_network_data: Option<Vec<u8>>,
1823 pub thread_border_routing_counters: Option<BorderRoutingCounters>,
1827 pub srp_server_info: Option<SrpServerInfo>,
1831 pub dnssd_counters: Option<DnssdCounters>,
1835 pub leader_data: Option<LeaderData>,
1839 pub uptime: Option<i64>,
1843 pub nat64_info: Option<Nat64Info>,
1847 pub trel_counters: Option<TrelCounters>,
1851 pub trel_peers_info: Option<TrelPeersInfo>,
1855 pub upstream_dns_info: Option<UpstreamDnsInfo>,
1859 pub dhcp6pd_info: Option<Dhcp6PdInfo>,
1863 pub link_metrics_entries: Option<Vec<LinkMetricsEntry>>,
1867 pub border_agent_counters: Option<fidl_fuchsia_lowpan_device__common::BorderAgentCounters>,
1871 pub multi_ail_detected: Option<bool>,
1875 pub extended_pan_id: Option<u64>,
1880 pub border_routing_peers: Option<Vec<BorderRoutingPeer>>,
1884 pub border_routing_routers: Option<Vec<BorderRoutingRouter>>,
1888 pub active_dataset: Option<OperationalDataset>,
1892 pub multiradio_neighbor_info: Option<Vec<MultiRadioNeighborInfo>>,
1896 pub router_info: Option<Vec<RouterInfo>>,
1900 pub network_data: Option<NetworkData>,
1904 #[doc(hidden)]
1905 pub __source_breaking: fidl::marker::SourceBreaking,
1906}
1907
1908impl fidl::Persistable for Telemetry {}
1909
1910#[derive(Clone, Debug, Default, PartialEq)]
1914pub struct TrelCounters {
1915 pub rx_bytes: Option<u64>,
1917 pub rx_packets: Option<u64>,
1919 pub tx_bytes: Option<u64>,
1921 pub tx_failure: Option<u64>,
1923 pub tx_packets: Option<u64>,
1925 #[doc(hidden)]
1926 pub __source_breaking: fidl::marker::SourceBreaking,
1927}
1928
1929impl fidl::Persistable for TrelCounters {}
1930
1931#[derive(Clone, Debug, Default, PartialEq)]
1936pub struct TrelPeersInfo {
1937 pub num_trel_peers: Option<u16>,
1941 #[doc(hidden)]
1942 pub __source_breaking: fidl::marker::SourceBreaking,
1943}
1944
1945impl fidl::Persistable for TrelPeersInfo {}
1946
1947#[derive(Clone, Debug, Default, PartialEq)]
1951pub struct UpstreamDnsCounters {
1952 pub queries: Option<u32>,
1956 pub responses: Option<u32>,
1960 pub failures: Option<u32>,
1964 #[doc(hidden)]
1965 pub __source_breaking: fidl::marker::SourceBreaking,
1966}
1967
1968impl fidl::Persistable for UpstreamDnsCounters {}
1969
1970#[derive(Clone, Debug, Default, PartialEq)]
1975pub struct UpstreamDnsInfo {
1976 pub upstream_dns_query_state: Option<UpstreamDnsQueryState>,
1980 #[doc(hidden)]
1981 pub __source_breaking: fidl::marker::SourceBreaking,
1982}
1983
1984impl fidl::Persistable for UpstreamDnsInfo {}
1985
1986#[derive(Clone, Debug)]
1988pub enum JoinParams {
1989 ProvisioningParameter(fidl_fuchsia_lowpan_device__common::ProvisioningParams),
1991 JoinerParameter(JoinerCommissioningParams),
1997 #[doc(hidden)]
1998 __SourceBreaking { unknown_ordinal: u64 },
1999}
2000
2001#[macro_export]
2003macro_rules! JoinParamsUnknown {
2004 () => {
2005 _
2006 };
2007}
2008
2009impl PartialEq for JoinParams {
2011 fn eq(&self, other: &Self) -> bool {
2012 match (self, other) {
2013 (Self::ProvisioningParameter(x), Self::ProvisioningParameter(y)) => *x == *y,
2014 (Self::JoinerParameter(x), Self::JoinerParameter(y)) => *x == *y,
2015 _ => false,
2016 }
2017 }
2018}
2019
2020impl JoinParams {
2021 #[inline]
2022 pub fn ordinal(&self) -> u64 {
2023 match *self {
2024 Self::ProvisioningParameter(_) => 1,
2025 Self::JoinerParameter(_) => 2,
2026 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2027 }
2028 }
2029
2030 #[inline]
2031 pub fn unknown_variant_for_testing() -> Self {
2032 Self::__SourceBreaking { unknown_ordinal: 0 }
2033 }
2034
2035 #[inline]
2036 pub fn is_unknown(&self) -> bool {
2037 match self {
2038 Self::__SourceBreaking { .. } => true,
2039 _ => false,
2040 }
2041 }
2042}
2043
2044impl fidl::Persistable for JoinParams {}
2045
2046#[derive(Clone, Debug)]
2050pub enum ProvisioningProgress {
2051 Progress(f32),
2053 Identity(fidl_fuchsia_lowpan_device__common::Identity),
2055 #[doc(hidden)]
2056 __SourceBreaking { unknown_ordinal: u64 },
2057}
2058
2059#[macro_export]
2061macro_rules! ProvisioningProgressUnknown {
2062 () => {
2063 _
2064 };
2065}
2066
2067impl PartialEq for ProvisioningProgress {
2069 fn eq(&self, other: &Self) -> bool {
2070 match (self, other) {
2071 (Self::Progress(x), Self::Progress(y)) => *x == *y,
2072 (Self::Identity(x), Self::Identity(y)) => *x == *y,
2073 _ => false,
2074 }
2075 }
2076}
2077
2078impl ProvisioningProgress {
2079 #[inline]
2080 pub fn ordinal(&self) -> u64 {
2081 match *self {
2082 Self::Progress(_) => 1,
2083 Self::Identity(_) => 2,
2084 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2085 }
2086 }
2087
2088 #[inline]
2089 pub fn unknown_variant_for_testing() -> Self {
2090 Self::__SourceBreaking { unknown_ordinal: 0 }
2091 }
2092
2093 #[inline]
2094 pub fn is_unknown(&self) -> bool {
2095 match self {
2096 Self::__SourceBreaking { .. } => true,
2097 _ => false,
2098 }
2099 }
2100}
2101
2102impl fidl::Persistable for ProvisioningProgress {}
2103
2104pub mod beacon_info_stream_ordinals {
2105 pub const NEXT: u64 = 0x367a557363a340b6;
2106}
2107
2108pub mod device_ordinals {
2109 pub const GET_SUPPORTED_CHANNELS: u64 = 0x2d8b969a9bd70f23;
2110}
2111
2112pub mod device_connector_ordinals {
2113 pub const CONNECT: u64 = 0x296896c9304836cd;
2114}
2115
2116pub mod device_extra_ordinals {
2117 pub const FORM_NETWORK: u64 = 0x6a8135f84bfc90e;
2118 pub const JOIN_NETWORK: u64 = 0x3ea583bab79f81c0;
2119 pub const START_NETWORK_SCAN: u64 = 0x6288c73b79188b40;
2120}
2121
2122pub mod device_extra_connector_ordinals {
2123 pub const CONNECT: u64 = 0x3fcb37e4226c81e9;
2124}
2125
2126pub mod device_route_ordinals {
2127 pub const REGISTER_ON_MESH_PREFIX: u64 = 0x2c4135231eb97f61;
2128 pub const UNREGISTER_ON_MESH_PREFIX: u64 = 0x82d5184028b797f;
2129 pub const REGISTER_EXTERNAL_ROUTE: u64 = 0x75f70f0fc34a5a73;
2130 pub const UNREGISTER_EXTERNAL_ROUTE: u64 = 0x3769be353b1d7088;
2131}
2132
2133pub mod device_route_connector_ordinals {
2134 pub const CONNECT: u64 = 0x19cd5fdcb971f4ac;
2135}
2136
2137pub mod device_route_extra_ordinals {
2138 pub const GET_LOCAL_ON_MESH_PREFIXES: u64 = 0xf192c43311c811;
2139 pub const GET_LOCAL_EXTERNAL_ROUTES: u64 = 0x5a688c2e62c766a6;
2140}
2141
2142pub mod device_route_extra_connector_ordinals {
2143 pub const CONNECT: u64 = 0x12f72df7b1348fe2;
2144}
2145
2146pub mod legacy_joining_ordinals {
2147 pub const MAKE_JOINABLE: u64 = 0x1739a6ae36d5c5aa;
2148}
2149
2150pub mod legacy_joining_connector_ordinals {
2151 pub const CONNECT: u64 = 0x3c8dfeb943bb8d06;
2152}
2153
2154pub mod provisioning_monitor_ordinals {
2155 pub const WATCH_PROGRESS: u64 = 0xc35336fc43ac0c;
2156}
2157
2158pub mod telemetry_provider_ordinals {
2159 pub const GET_TELEMETRY: u64 = 0xc34f2fff7dacc41;
2160}
2161
2162pub mod telemetry_provider_connector_ordinals {
2163 pub const CONNECT: u64 = 0x24a5bf1be73e2fad;
2164}
2165
2166mod internal {
2167 use super::*;
2168 unsafe impl fidl::encoding::TypeMarker for Dhcp6PdState {
2169 type Owned = Self;
2170
2171 #[inline(always)]
2172 fn inline_align(_context: fidl::encoding::Context) -> usize {
2173 std::mem::align_of::<u32>()
2174 }
2175
2176 #[inline(always)]
2177 fn inline_size(_context: fidl::encoding::Context) -> usize {
2178 std::mem::size_of::<u32>()
2179 }
2180
2181 #[inline(always)]
2182 fn encode_is_copy() -> bool {
2183 false
2184 }
2185
2186 #[inline(always)]
2187 fn decode_is_copy() -> bool {
2188 false
2189 }
2190 }
2191
2192 impl fidl::encoding::ValueTypeMarker for Dhcp6PdState {
2193 type Borrowed<'a> = Self;
2194 #[inline(always)]
2195 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2196 *value
2197 }
2198 }
2199
2200 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Dhcp6PdState {
2201 #[inline]
2202 unsafe fn encode(
2203 self,
2204 encoder: &mut fidl::encoding::Encoder<'_, D>,
2205 offset: usize,
2206 _depth: fidl::encoding::Depth,
2207 ) -> fidl::Result<()> {
2208 encoder.debug_check_bounds::<Self>(offset);
2209 encoder.write_num(self.into_primitive(), offset);
2210 Ok(())
2211 }
2212 }
2213
2214 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dhcp6PdState {
2215 #[inline(always)]
2216 fn new_empty() -> Self {
2217 Self::unknown()
2218 }
2219
2220 #[inline]
2221 unsafe fn decode(
2222 &mut self,
2223 decoder: &mut fidl::encoding::Decoder<'_, D>,
2224 offset: usize,
2225 _depth: fidl::encoding::Depth,
2226 ) -> fidl::Result<()> {
2227 decoder.debug_check_bounds::<Self>(offset);
2228 let prim = decoder.read_num::<u32>(offset);
2229
2230 *self = Self::from_primitive_allow_unknown(prim);
2231 Ok(())
2232 }
2233 }
2234 unsafe impl fidl::encoding::TypeMarker for Nat64State {
2235 type Owned = Self;
2236
2237 #[inline(always)]
2238 fn inline_align(_context: fidl::encoding::Context) -> usize {
2239 std::mem::align_of::<u32>()
2240 }
2241
2242 #[inline(always)]
2243 fn inline_size(_context: fidl::encoding::Context) -> usize {
2244 std::mem::size_of::<u32>()
2245 }
2246
2247 #[inline(always)]
2248 fn encode_is_copy() -> bool {
2249 false
2250 }
2251
2252 #[inline(always)]
2253 fn decode_is_copy() -> bool {
2254 false
2255 }
2256 }
2257
2258 impl fidl::encoding::ValueTypeMarker for Nat64State {
2259 type Borrowed<'a> = Self;
2260 #[inline(always)]
2261 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2262 *value
2263 }
2264 }
2265
2266 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Nat64State {
2267 #[inline]
2268 unsafe fn encode(
2269 self,
2270 encoder: &mut fidl::encoding::Encoder<'_, D>,
2271 offset: usize,
2272 _depth: fidl::encoding::Depth,
2273 ) -> fidl::Result<()> {
2274 encoder.debug_check_bounds::<Self>(offset);
2275 encoder.write_num(self.into_primitive(), offset);
2276 Ok(())
2277 }
2278 }
2279
2280 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64State {
2281 #[inline(always)]
2282 fn new_empty() -> Self {
2283 Self::unknown()
2284 }
2285
2286 #[inline]
2287 unsafe fn decode(
2288 &mut self,
2289 decoder: &mut fidl::encoding::Decoder<'_, D>,
2290 offset: usize,
2291 _depth: fidl::encoding::Depth,
2292 ) -> fidl::Result<()> {
2293 decoder.debug_check_bounds::<Self>(offset);
2294 let prim = decoder.read_num::<u32>(offset);
2295
2296 *self = Self::from_primitive_allow_unknown(prim);
2297 Ok(())
2298 }
2299 }
2300 unsafe impl fidl::encoding::TypeMarker for ProvisionError {
2301 type Owned = Self;
2302
2303 #[inline(always)]
2304 fn inline_align(_context: fidl::encoding::Context) -> usize {
2305 std::mem::align_of::<i32>()
2306 }
2307
2308 #[inline(always)]
2309 fn inline_size(_context: fidl::encoding::Context) -> usize {
2310 std::mem::size_of::<i32>()
2311 }
2312
2313 #[inline(always)]
2314 fn encode_is_copy() -> bool {
2315 false
2316 }
2317
2318 #[inline(always)]
2319 fn decode_is_copy() -> bool {
2320 false
2321 }
2322 }
2323
2324 impl fidl::encoding::ValueTypeMarker for ProvisionError {
2325 type Borrowed<'a> = Self;
2326 #[inline(always)]
2327 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2328 *value
2329 }
2330 }
2331
2332 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ProvisionError {
2333 #[inline]
2334 unsafe fn encode(
2335 self,
2336 encoder: &mut fidl::encoding::Encoder<'_, D>,
2337 offset: usize,
2338 _depth: fidl::encoding::Depth,
2339 ) -> fidl::Result<()> {
2340 encoder.debug_check_bounds::<Self>(offset);
2341 encoder.write_num(self.into_primitive(), offset);
2342 Ok(())
2343 }
2344 }
2345
2346 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProvisionError {
2347 #[inline(always)]
2348 fn new_empty() -> Self {
2349 Self::unknown()
2350 }
2351
2352 #[inline]
2353 unsafe fn decode(
2354 &mut self,
2355 decoder: &mut fidl::encoding::Decoder<'_, D>,
2356 offset: usize,
2357 _depth: fidl::encoding::Depth,
2358 ) -> fidl::Result<()> {
2359 decoder.debug_check_bounds::<Self>(offset);
2360 let prim = decoder.read_num::<i32>(offset);
2361
2362 *self = Self::from_primitive_allow_unknown(prim);
2363 Ok(())
2364 }
2365 }
2366 unsafe impl fidl::encoding::TypeMarker for RoutePreference {
2367 type Owned = Self;
2368
2369 #[inline(always)]
2370 fn inline_align(_context: fidl::encoding::Context) -> usize {
2371 std::mem::align_of::<i8>()
2372 }
2373
2374 #[inline(always)]
2375 fn inline_size(_context: fidl::encoding::Context) -> usize {
2376 std::mem::size_of::<i8>()
2377 }
2378
2379 #[inline(always)]
2380 fn encode_is_copy() -> bool {
2381 true
2382 }
2383
2384 #[inline(always)]
2385 fn decode_is_copy() -> bool {
2386 false
2387 }
2388 }
2389
2390 impl fidl::encoding::ValueTypeMarker for RoutePreference {
2391 type Borrowed<'a> = Self;
2392 #[inline(always)]
2393 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2394 *value
2395 }
2396 }
2397
2398 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2399 for RoutePreference
2400 {
2401 #[inline]
2402 unsafe fn encode(
2403 self,
2404 encoder: &mut fidl::encoding::Encoder<'_, D>,
2405 offset: usize,
2406 _depth: fidl::encoding::Depth,
2407 ) -> fidl::Result<()> {
2408 encoder.debug_check_bounds::<Self>(offset);
2409 encoder.write_num(self.into_primitive(), offset);
2410 Ok(())
2411 }
2412 }
2413
2414 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoutePreference {
2415 #[inline(always)]
2416 fn new_empty() -> Self {
2417 Self::Low
2418 }
2419
2420 #[inline]
2421 unsafe fn decode(
2422 &mut self,
2423 decoder: &mut fidl::encoding::Decoder<'_, D>,
2424 offset: usize,
2425 _depth: fidl::encoding::Depth,
2426 ) -> fidl::Result<()> {
2427 decoder.debug_check_bounds::<Self>(offset);
2428 let prim = decoder.read_num::<i8>(offset);
2429
2430 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2431 Ok(())
2432 }
2433 }
2434 unsafe impl fidl::encoding::TypeMarker for SrpServerAddressMode {
2435 type Owned = Self;
2436
2437 #[inline(always)]
2438 fn inline_align(_context: fidl::encoding::Context) -> usize {
2439 std::mem::align_of::<u32>()
2440 }
2441
2442 #[inline(always)]
2443 fn inline_size(_context: fidl::encoding::Context) -> usize {
2444 std::mem::size_of::<u32>()
2445 }
2446
2447 #[inline(always)]
2448 fn encode_is_copy() -> bool {
2449 true
2450 }
2451
2452 #[inline(always)]
2453 fn decode_is_copy() -> bool {
2454 false
2455 }
2456 }
2457
2458 impl fidl::encoding::ValueTypeMarker for SrpServerAddressMode {
2459 type Borrowed<'a> = Self;
2460 #[inline(always)]
2461 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2462 *value
2463 }
2464 }
2465
2466 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2467 for SrpServerAddressMode
2468 {
2469 #[inline]
2470 unsafe fn encode(
2471 self,
2472 encoder: &mut fidl::encoding::Encoder<'_, D>,
2473 offset: usize,
2474 _depth: fidl::encoding::Depth,
2475 ) -> fidl::Result<()> {
2476 encoder.debug_check_bounds::<Self>(offset);
2477 encoder.write_num(self.into_primitive(), offset);
2478 Ok(())
2479 }
2480 }
2481
2482 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerAddressMode {
2483 #[inline(always)]
2484 fn new_empty() -> Self {
2485 Self::Unicast
2486 }
2487
2488 #[inline]
2489 unsafe fn decode(
2490 &mut self,
2491 decoder: &mut fidl::encoding::Decoder<'_, D>,
2492 offset: usize,
2493 _depth: fidl::encoding::Depth,
2494 ) -> fidl::Result<()> {
2495 decoder.debug_check_bounds::<Self>(offset);
2496 let prim = decoder.read_num::<u32>(offset);
2497
2498 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2499 Ok(())
2500 }
2501 }
2502 unsafe impl fidl::encoding::TypeMarker for SrpServerState {
2503 type Owned = Self;
2504
2505 #[inline(always)]
2506 fn inline_align(_context: fidl::encoding::Context) -> usize {
2507 std::mem::align_of::<u32>()
2508 }
2509
2510 #[inline(always)]
2511 fn inline_size(_context: fidl::encoding::Context) -> usize {
2512 std::mem::size_of::<u32>()
2513 }
2514
2515 #[inline(always)]
2516 fn encode_is_copy() -> bool {
2517 true
2518 }
2519
2520 #[inline(always)]
2521 fn decode_is_copy() -> bool {
2522 false
2523 }
2524 }
2525
2526 impl fidl::encoding::ValueTypeMarker for SrpServerState {
2527 type Borrowed<'a> = Self;
2528 #[inline(always)]
2529 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2530 *value
2531 }
2532 }
2533
2534 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for SrpServerState {
2535 #[inline]
2536 unsafe fn encode(
2537 self,
2538 encoder: &mut fidl::encoding::Encoder<'_, D>,
2539 offset: usize,
2540 _depth: fidl::encoding::Depth,
2541 ) -> fidl::Result<()> {
2542 encoder.debug_check_bounds::<Self>(offset);
2543 encoder.write_num(self.into_primitive(), offset);
2544 Ok(())
2545 }
2546 }
2547
2548 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerState {
2549 #[inline(always)]
2550 fn new_empty() -> Self {
2551 Self::Disabled
2552 }
2553
2554 #[inline]
2555 unsafe fn decode(
2556 &mut self,
2557 decoder: &mut fidl::encoding::Decoder<'_, D>,
2558 offset: usize,
2559 _depth: fidl::encoding::Depth,
2560 ) -> fidl::Result<()> {
2561 decoder.debug_check_bounds::<Self>(offset);
2562 let prim = decoder.read_num::<u32>(offset);
2563
2564 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2565 Ok(())
2566 }
2567 }
2568 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsQueryState {
2569 type Owned = Self;
2570
2571 #[inline(always)]
2572 fn inline_align(_context: fidl::encoding::Context) -> usize {
2573 std::mem::align_of::<u32>()
2574 }
2575
2576 #[inline(always)]
2577 fn inline_size(_context: fidl::encoding::Context) -> usize {
2578 std::mem::size_of::<u32>()
2579 }
2580
2581 #[inline(always)]
2582 fn encode_is_copy() -> bool {
2583 false
2584 }
2585
2586 #[inline(always)]
2587 fn decode_is_copy() -> bool {
2588 false
2589 }
2590 }
2591
2592 impl fidl::encoding::ValueTypeMarker for UpstreamDnsQueryState {
2593 type Borrowed<'a> = Self;
2594 #[inline(always)]
2595 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2596 *value
2597 }
2598 }
2599
2600 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2601 for UpstreamDnsQueryState
2602 {
2603 #[inline]
2604 unsafe fn encode(
2605 self,
2606 encoder: &mut fidl::encoding::Encoder<'_, D>,
2607 offset: usize,
2608 _depth: fidl::encoding::Depth,
2609 ) -> fidl::Result<()> {
2610 encoder.debug_check_bounds::<Self>(offset);
2611 encoder.write_num(self.into_primitive(), offset);
2612 Ok(())
2613 }
2614 }
2615
2616 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsQueryState {
2617 #[inline(always)]
2618 fn new_empty() -> Self {
2619 Self::unknown()
2620 }
2621
2622 #[inline]
2623 unsafe fn decode(
2624 &mut self,
2625 decoder: &mut fidl::encoding::Decoder<'_, D>,
2626 offset: usize,
2627 _depth: fidl::encoding::Depth,
2628 ) -> fidl::Result<()> {
2629 decoder.debug_check_bounds::<Self>(offset);
2630 let prim = decoder.read_num::<u32>(offset);
2631
2632 *self = Self::from_primitive_allow_unknown(prim);
2633 Ok(())
2634 }
2635 }
2636
2637 impl fidl::encoding::ValueTypeMarker for BeaconInfoStreamNextResponse {
2638 type Borrowed<'a> = &'a Self;
2639 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2640 value
2641 }
2642 }
2643
2644 unsafe impl fidl::encoding::TypeMarker for BeaconInfoStreamNextResponse {
2645 type Owned = Self;
2646
2647 #[inline(always)]
2648 fn inline_align(_context: fidl::encoding::Context) -> usize {
2649 8
2650 }
2651
2652 #[inline(always)]
2653 fn inline_size(_context: fidl::encoding::Context) -> usize {
2654 16
2655 }
2656 }
2657
2658 unsafe impl<D: fidl::encoding::ResourceDialect>
2659 fidl::encoding::Encode<BeaconInfoStreamNextResponse, D> for &BeaconInfoStreamNextResponse
2660 {
2661 #[inline]
2662 unsafe fn encode(
2663 self,
2664 encoder: &mut fidl::encoding::Encoder<'_, D>,
2665 offset: usize,
2666 _depth: fidl::encoding::Depth,
2667 ) -> fidl::Result<()> {
2668 encoder.debug_check_bounds::<BeaconInfoStreamNextResponse>(offset);
2669 fidl::encoding::Encode::<BeaconInfoStreamNextResponse, D>::encode(
2671 (
2672 <fidl::encoding::Vector<BeaconInfo, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.beacons),
2673 ),
2674 encoder, offset, _depth
2675 )
2676 }
2677 }
2678 unsafe impl<
2679 D: fidl::encoding::ResourceDialect,
2680 T0: fidl::encoding::Encode<fidl::encoding::Vector<BeaconInfo, 32>, D>,
2681 > fidl::encoding::Encode<BeaconInfoStreamNextResponse, D> for (T0,)
2682 {
2683 #[inline]
2684 unsafe fn encode(
2685 self,
2686 encoder: &mut fidl::encoding::Encoder<'_, D>,
2687 offset: usize,
2688 depth: fidl::encoding::Depth,
2689 ) -> fidl::Result<()> {
2690 encoder.debug_check_bounds::<BeaconInfoStreamNextResponse>(offset);
2691 self.0.encode(encoder, offset + 0, depth)?;
2695 Ok(())
2696 }
2697 }
2698
2699 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2700 for BeaconInfoStreamNextResponse
2701 {
2702 #[inline(always)]
2703 fn new_empty() -> Self {
2704 Self { beacons: fidl::new_empty!(fidl::encoding::Vector<BeaconInfo, 32>, D) }
2705 }
2706
2707 #[inline]
2708 unsafe fn decode(
2709 &mut self,
2710 decoder: &mut fidl::encoding::Decoder<'_, D>,
2711 offset: usize,
2712 _depth: fidl::encoding::Depth,
2713 ) -> fidl::Result<()> {
2714 decoder.debug_check_bounds::<Self>(offset);
2715 fidl::decode!(fidl::encoding::Vector<BeaconInfo, 32>, D, &mut self.beacons, decoder, offset + 0, _depth)?;
2717 Ok(())
2718 }
2719 }
2720
2721 impl fidl::encoding::ValueTypeMarker for DeviceGetSupportedChannelsResponse {
2722 type Borrowed<'a> = &'a Self;
2723 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2724 value
2725 }
2726 }
2727
2728 unsafe impl fidl::encoding::TypeMarker for DeviceGetSupportedChannelsResponse {
2729 type Owned = Self;
2730
2731 #[inline(always)]
2732 fn inline_align(_context: fidl::encoding::Context) -> usize {
2733 8
2734 }
2735
2736 #[inline(always)]
2737 fn inline_size(_context: fidl::encoding::Context) -> usize {
2738 16
2739 }
2740 }
2741
2742 unsafe impl<D: fidl::encoding::ResourceDialect>
2743 fidl::encoding::Encode<DeviceGetSupportedChannelsResponse, D>
2744 for &DeviceGetSupportedChannelsResponse
2745 {
2746 #[inline]
2747 unsafe fn encode(
2748 self,
2749 encoder: &mut fidl::encoding::Encoder<'_, D>,
2750 offset: usize,
2751 _depth: fidl::encoding::Depth,
2752 ) -> fidl::Result<()> {
2753 encoder.debug_check_bounds::<DeviceGetSupportedChannelsResponse>(offset);
2754 fidl::encoding::Encode::<DeviceGetSupportedChannelsResponse, D>::encode(
2756 (
2757 <fidl::encoding::Vector<ChannelInfo, 200> as fidl::encoding::ValueTypeMarker>::borrow(&self.channels_info),
2758 ),
2759 encoder, offset, _depth
2760 )
2761 }
2762 }
2763 unsafe impl<
2764 D: fidl::encoding::ResourceDialect,
2765 T0: fidl::encoding::Encode<fidl::encoding::Vector<ChannelInfo, 200>, D>,
2766 > fidl::encoding::Encode<DeviceGetSupportedChannelsResponse, D> for (T0,)
2767 {
2768 #[inline]
2769 unsafe fn encode(
2770 self,
2771 encoder: &mut fidl::encoding::Encoder<'_, D>,
2772 offset: usize,
2773 depth: fidl::encoding::Depth,
2774 ) -> fidl::Result<()> {
2775 encoder.debug_check_bounds::<DeviceGetSupportedChannelsResponse>(offset);
2776 self.0.encode(encoder, offset + 0, depth)?;
2780 Ok(())
2781 }
2782 }
2783
2784 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2785 for DeviceGetSupportedChannelsResponse
2786 {
2787 #[inline(always)]
2788 fn new_empty() -> Self {
2789 Self { channels_info: fidl::new_empty!(fidl::encoding::Vector<ChannelInfo, 200>, D) }
2790 }
2791
2792 #[inline]
2793 unsafe fn decode(
2794 &mut self,
2795 decoder: &mut fidl::encoding::Decoder<'_, D>,
2796 offset: usize,
2797 _depth: fidl::encoding::Depth,
2798 ) -> fidl::Result<()> {
2799 decoder.debug_check_bounds::<Self>(offset);
2800 fidl::decode!(fidl::encoding::Vector<ChannelInfo, 200>, D, &mut self.channels_info, decoder, offset + 0, _depth)?;
2802 Ok(())
2803 }
2804 }
2805
2806 impl fidl::encoding::ValueTypeMarker for DeviceRouteExtraGetLocalExternalRoutesResponse {
2807 type Borrowed<'a> = &'a Self;
2808 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2809 value
2810 }
2811 }
2812
2813 unsafe impl fidl::encoding::TypeMarker for DeviceRouteExtraGetLocalExternalRoutesResponse {
2814 type Owned = Self;
2815
2816 #[inline(always)]
2817 fn inline_align(_context: fidl::encoding::Context) -> usize {
2818 8
2819 }
2820
2821 #[inline(always)]
2822 fn inline_size(_context: fidl::encoding::Context) -> usize {
2823 16
2824 }
2825 }
2826
2827 unsafe impl<D: fidl::encoding::ResourceDialect>
2828 fidl::encoding::Encode<DeviceRouteExtraGetLocalExternalRoutesResponse, D>
2829 for &DeviceRouteExtraGetLocalExternalRoutesResponse
2830 {
2831 #[inline]
2832 unsafe fn encode(
2833 self,
2834 encoder: &mut fidl::encoding::Encoder<'_, D>,
2835 offset: usize,
2836 _depth: fidl::encoding::Depth,
2837 ) -> fidl::Result<()> {
2838 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalExternalRoutesResponse>(offset);
2839 fidl::encoding::Encode::<DeviceRouteExtraGetLocalExternalRoutesResponse, D>::encode(
2841 (
2842 <fidl::encoding::Vector<ExternalRoute, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.external_routes),
2843 ),
2844 encoder, offset, _depth
2845 )
2846 }
2847 }
2848 unsafe impl<
2849 D: fidl::encoding::ResourceDialect,
2850 T0: fidl::encoding::Encode<fidl::encoding::Vector<ExternalRoute, 32>, D>,
2851 > fidl::encoding::Encode<DeviceRouteExtraGetLocalExternalRoutesResponse, D> for (T0,)
2852 {
2853 #[inline]
2854 unsafe fn encode(
2855 self,
2856 encoder: &mut fidl::encoding::Encoder<'_, D>,
2857 offset: usize,
2858 depth: fidl::encoding::Depth,
2859 ) -> fidl::Result<()> {
2860 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalExternalRoutesResponse>(offset);
2861 self.0.encode(encoder, offset + 0, depth)?;
2865 Ok(())
2866 }
2867 }
2868
2869 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2870 for DeviceRouteExtraGetLocalExternalRoutesResponse
2871 {
2872 #[inline(always)]
2873 fn new_empty() -> Self {
2874 Self { external_routes: fidl::new_empty!(fidl::encoding::Vector<ExternalRoute, 32>, D) }
2875 }
2876
2877 #[inline]
2878 unsafe fn decode(
2879 &mut self,
2880 decoder: &mut fidl::encoding::Decoder<'_, D>,
2881 offset: usize,
2882 _depth: fidl::encoding::Depth,
2883 ) -> fidl::Result<()> {
2884 decoder.debug_check_bounds::<Self>(offset);
2885 fidl::decode!(fidl::encoding::Vector<ExternalRoute, 32>, D, &mut self.external_routes, decoder, offset + 0, _depth)?;
2887 Ok(())
2888 }
2889 }
2890
2891 impl fidl::encoding::ValueTypeMarker for DeviceRouteExtraGetLocalOnMeshPrefixesResponse {
2892 type Borrowed<'a> = &'a Self;
2893 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2894 value
2895 }
2896 }
2897
2898 unsafe impl fidl::encoding::TypeMarker for DeviceRouteExtraGetLocalOnMeshPrefixesResponse {
2899 type Owned = Self;
2900
2901 #[inline(always)]
2902 fn inline_align(_context: fidl::encoding::Context) -> usize {
2903 8
2904 }
2905
2906 #[inline(always)]
2907 fn inline_size(_context: fidl::encoding::Context) -> usize {
2908 16
2909 }
2910 }
2911
2912 unsafe impl<D: fidl::encoding::ResourceDialect>
2913 fidl::encoding::Encode<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D>
2914 for &DeviceRouteExtraGetLocalOnMeshPrefixesResponse
2915 {
2916 #[inline]
2917 unsafe fn encode(
2918 self,
2919 encoder: &mut fidl::encoding::Encoder<'_, D>,
2920 offset: usize,
2921 _depth: fidl::encoding::Depth,
2922 ) -> fidl::Result<()> {
2923 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse>(offset);
2924 fidl::encoding::Encode::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D>::encode(
2926 (
2927 <fidl::encoding::Vector<OnMeshPrefix, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.prefixes),
2928 ),
2929 encoder, offset, _depth
2930 )
2931 }
2932 }
2933 unsafe impl<
2934 D: fidl::encoding::ResourceDialect,
2935 T0: fidl::encoding::Encode<fidl::encoding::Vector<OnMeshPrefix, 32>, D>,
2936 > fidl::encoding::Encode<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D> for (T0,)
2937 {
2938 #[inline]
2939 unsafe fn encode(
2940 self,
2941 encoder: &mut fidl::encoding::Encoder<'_, D>,
2942 offset: usize,
2943 depth: fidl::encoding::Depth,
2944 ) -> fidl::Result<()> {
2945 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse>(offset);
2946 self.0.encode(encoder, offset + 0, depth)?;
2950 Ok(())
2951 }
2952 }
2953
2954 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2955 for DeviceRouteExtraGetLocalOnMeshPrefixesResponse
2956 {
2957 #[inline(always)]
2958 fn new_empty() -> Self {
2959 Self { prefixes: fidl::new_empty!(fidl::encoding::Vector<OnMeshPrefix, 32>, D) }
2960 }
2961
2962 #[inline]
2963 unsafe fn decode(
2964 &mut self,
2965 decoder: &mut fidl::encoding::Decoder<'_, D>,
2966 offset: usize,
2967 _depth: fidl::encoding::Depth,
2968 ) -> fidl::Result<()> {
2969 decoder.debug_check_bounds::<Self>(offset);
2970 fidl::decode!(fidl::encoding::Vector<OnMeshPrefix, 32>, D, &mut self.prefixes, decoder, offset + 0, _depth)?;
2972 Ok(())
2973 }
2974 }
2975
2976 impl fidl::encoding::ValueTypeMarker for DeviceRouteRegisterExternalRouteRequest {
2977 type Borrowed<'a> = &'a Self;
2978 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2979 value
2980 }
2981 }
2982
2983 unsafe impl fidl::encoding::TypeMarker for DeviceRouteRegisterExternalRouteRequest {
2984 type Owned = Self;
2985
2986 #[inline(always)]
2987 fn inline_align(_context: fidl::encoding::Context) -> usize {
2988 8
2989 }
2990
2991 #[inline(always)]
2992 fn inline_size(_context: fidl::encoding::Context) -> usize {
2993 16
2994 }
2995 }
2996
2997 unsafe impl<D: fidl::encoding::ResourceDialect>
2998 fidl::encoding::Encode<DeviceRouteRegisterExternalRouteRequest, D>
2999 for &DeviceRouteRegisterExternalRouteRequest
3000 {
3001 #[inline]
3002 unsafe fn encode(
3003 self,
3004 encoder: &mut fidl::encoding::Encoder<'_, D>,
3005 offset: usize,
3006 _depth: fidl::encoding::Depth,
3007 ) -> fidl::Result<()> {
3008 encoder.debug_check_bounds::<DeviceRouteRegisterExternalRouteRequest>(offset);
3009 fidl::encoding::Encode::<DeviceRouteRegisterExternalRouteRequest, D>::encode(
3011 (<ExternalRoute as fidl::encoding::ValueTypeMarker>::borrow(&self.external_route),),
3012 encoder,
3013 offset,
3014 _depth,
3015 )
3016 }
3017 }
3018 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ExternalRoute, D>>
3019 fidl::encoding::Encode<DeviceRouteRegisterExternalRouteRequest, D> for (T0,)
3020 {
3021 #[inline]
3022 unsafe fn encode(
3023 self,
3024 encoder: &mut fidl::encoding::Encoder<'_, D>,
3025 offset: usize,
3026 depth: fidl::encoding::Depth,
3027 ) -> fidl::Result<()> {
3028 encoder.debug_check_bounds::<DeviceRouteRegisterExternalRouteRequest>(offset);
3029 self.0.encode(encoder, offset + 0, depth)?;
3033 Ok(())
3034 }
3035 }
3036
3037 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3038 for DeviceRouteRegisterExternalRouteRequest
3039 {
3040 #[inline(always)]
3041 fn new_empty() -> Self {
3042 Self { external_route: fidl::new_empty!(ExternalRoute, D) }
3043 }
3044
3045 #[inline]
3046 unsafe fn decode(
3047 &mut self,
3048 decoder: &mut fidl::encoding::Decoder<'_, D>,
3049 offset: usize,
3050 _depth: fidl::encoding::Depth,
3051 ) -> fidl::Result<()> {
3052 decoder.debug_check_bounds::<Self>(offset);
3053 fidl::decode!(ExternalRoute, D, &mut self.external_route, decoder, offset + 0, _depth)?;
3055 Ok(())
3056 }
3057 }
3058
3059 impl fidl::encoding::ValueTypeMarker for DeviceRouteRegisterOnMeshPrefixRequest {
3060 type Borrowed<'a> = &'a Self;
3061 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3062 value
3063 }
3064 }
3065
3066 unsafe impl fidl::encoding::TypeMarker for DeviceRouteRegisterOnMeshPrefixRequest {
3067 type Owned = Self;
3068
3069 #[inline(always)]
3070 fn inline_align(_context: fidl::encoding::Context) -> usize {
3071 8
3072 }
3073
3074 #[inline(always)]
3075 fn inline_size(_context: fidl::encoding::Context) -> usize {
3076 16
3077 }
3078 }
3079
3080 unsafe impl<D: fidl::encoding::ResourceDialect>
3081 fidl::encoding::Encode<DeviceRouteRegisterOnMeshPrefixRequest, D>
3082 for &DeviceRouteRegisterOnMeshPrefixRequest
3083 {
3084 #[inline]
3085 unsafe fn encode(
3086 self,
3087 encoder: &mut fidl::encoding::Encoder<'_, D>,
3088 offset: usize,
3089 _depth: fidl::encoding::Depth,
3090 ) -> fidl::Result<()> {
3091 encoder.debug_check_bounds::<DeviceRouteRegisterOnMeshPrefixRequest>(offset);
3092 fidl::encoding::Encode::<DeviceRouteRegisterOnMeshPrefixRequest, D>::encode(
3094 (<OnMeshPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.prefix),),
3095 encoder,
3096 offset,
3097 _depth,
3098 )
3099 }
3100 }
3101 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<OnMeshPrefix, D>>
3102 fidl::encoding::Encode<DeviceRouteRegisterOnMeshPrefixRequest, D> for (T0,)
3103 {
3104 #[inline]
3105 unsafe fn encode(
3106 self,
3107 encoder: &mut fidl::encoding::Encoder<'_, D>,
3108 offset: usize,
3109 depth: fidl::encoding::Depth,
3110 ) -> fidl::Result<()> {
3111 encoder.debug_check_bounds::<DeviceRouteRegisterOnMeshPrefixRequest>(offset);
3112 self.0.encode(encoder, offset + 0, depth)?;
3116 Ok(())
3117 }
3118 }
3119
3120 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3121 for DeviceRouteRegisterOnMeshPrefixRequest
3122 {
3123 #[inline(always)]
3124 fn new_empty() -> Self {
3125 Self { prefix: fidl::new_empty!(OnMeshPrefix, D) }
3126 }
3127
3128 #[inline]
3129 unsafe fn decode(
3130 &mut self,
3131 decoder: &mut fidl::encoding::Decoder<'_, D>,
3132 offset: usize,
3133 _depth: fidl::encoding::Depth,
3134 ) -> fidl::Result<()> {
3135 decoder.debug_check_bounds::<Self>(offset);
3136 fidl::decode!(OnMeshPrefix, D, &mut self.prefix, decoder, offset + 0, _depth)?;
3138 Ok(())
3139 }
3140 }
3141
3142 impl fidl::encoding::ValueTypeMarker for DeviceRouteUnregisterExternalRouteRequest {
3143 type Borrowed<'a> = &'a Self;
3144 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3145 value
3146 }
3147 }
3148
3149 unsafe impl fidl::encoding::TypeMarker for DeviceRouteUnregisterExternalRouteRequest {
3150 type Owned = Self;
3151
3152 #[inline(always)]
3153 fn inline_align(_context: fidl::encoding::Context) -> usize {
3154 1
3155 }
3156
3157 #[inline(always)]
3158 fn inline_size(_context: fidl::encoding::Context) -> usize {
3159 17
3160 }
3161 }
3162
3163 unsafe impl<D: fidl::encoding::ResourceDialect>
3164 fidl::encoding::Encode<DeviceRouteUnregisterExternalRouteRequest, D>
3165 for &DeviceRouteUnregisterExternalRouteRequest
3166 {
3167 #[inline]
3168 unsafe fn encode(
3169 self,
3170 encoder: &mut fidl::encoding::Encoder<'_, D>,
3171 offset: usize,
3172 _depth: fidl::encoding::Depth,
3173 ) -> fidl::Result<()> {
3174 encoder.debug_check_bounds::<DeviceRouteUnregisterExternalRouteRequest>(offset);
3175 fidl::encoding::Encode::<DeviceRouteUnregisterExternalRouteRequest, D>::encode(
3177 (
3178 <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.subnet),
3179 ),
3180 encoder, offset, _depth
3181 )
3182 }
3183 }
3184 unsafe impl<
3185 D: fidl::encoding::ResourceDialect,
3186 T0: fidl::encoding::Encode<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>,
3187 > fidl::encoding::Encode<DeviceRouteUnregisterExternalRouteRequest, D> for (T0,)
3188 {
3189 #[inline]
3190 unsafe fn encode(
3191 self,
3192 encoder: &mut fidl::encoding::Encoder<'_, D>,
3193 offset: usize,
3194 depth: fidl::encoding::Depth,
3195 ) -> fidl::Result<()> {
3196 encoder.debug_check_bounds::<DeviceRouteUnregisterExternalRouteRequest>(offset);
3197 self.0.encode(encoder, offset + 0, depth)?;
3201 Ok(())
3202 }
3203 }
3204
3205 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3206 for DeviceRouteUnregisterExternalRouteRequest
3207 {
3208 #[inline(always)]
3209 fn new_empty() -> Self {
3210 Self { subnet: fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D) }
3211 }
3212
3213 #[inline]
3214 unsafe fn decode(
3215 &mut self,
3216 decoder: &mut fidl::encoding::Decoder<'_, D>,
3217 offset: usize,
3218 _depth: fidl::encoding::Depth,
3219 ) -> fidl::Result<()> {
3220 decoder.debug_check_bounds::<Self>(offset);
3221 fidl::decode!(
3223 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
3224 D,
3225 &mut self.subnet,
3226 decoder,
3227 offset + 0,
3228 _depth
3229 )?;
3230 Ok(())
3231 }
3232 }
3233
3234 impl fidl::encoding::ValueTypeMarker for DeviceRouteUnregisterOnMeshPrefixRequest {
3235 type Borrowed<'a> = &'a Self;
3236 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3237 value
3238 }
3239 }
3240
3241 unsafe impl fidl::encoding::TypeMarker for DeviceRouteUnregisterOnMeshPrefixRequest {
3242 type Owned = Self;
3243
3244 #[inline(always)]
3245 fn inline_align(_context: fidl::encoding::Context) -> usize {
3246 1
3247 }
3248
3249 #[inline(always)]
3250 fn inline_size(_context: fidl::encoding::Context) -> usize {
3251 17
3252 }
3253 }
3254
3255 unsafe impl<D: fidl::encoding::ResourceDialect>
3256 fidl::encoding::Encode<DeviceRouteUnregisterOnMeshPrefixRequest, D>
3257 for &DeviceRouteUnregisterOnMeshPrefixRequest
3258 {
3259 #[inline]
3260 unsafe fn encode(
3261 self,
3262 encoder: &mut fidl::encoding::Encoder<'_, D>,
3263 offset: usize,
3264 _depth: fidl::encoding::Depth,
3265 ) -> fidl::Result<()> {
3266 encoder.debug_check_bounds::<DeviceRouteUnregisterOnMeshPrefixRequest>(offset);
3267 fidl::encoding::Encode::<DeviceRouteUnregisterOnMeshPrefixRequest, D>::encode(
3269 (
3270 <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.subnet),
3271 ),
3272 encoder, offset, _depth
3273 )
3274 }
3275 }
3276 unsafe impl<
3277 D: fidl::encoding::ResourceDialect,
3278 T0: fidl::encoding::Encode<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>,
3279 > fidl::encoding::Encode<DeviceRouteUnregisterOnMeshPrefixRequest, D> for (T0,)
3280 {
3281 #[inline]
3282 unsafe fn encode(
3283 self,
3284 encoder: &mut fidl::encoding::Encoder<'_, D>,
3285 offset: usize,
3286 depth: fidl::encoding::Depth,
3287 ) -> fidl::Result<()> {
3288 encoder.debug_check_bounds::<DeviceRouteUnregisterOnMeshPrefixRequest>(offset);
3289 self.0.encode(encoder, offset + 0, depth)?;
3293 Ok(())
3294 }
3295 }
3296
3297 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3298 for DeviceRouteUnregisterOnMeshPrefixRequest
3299 {
3300 #[inline(always)]
3301 fn new_empty() -> Self {
3302 Self { subnet: fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D) }
3303 }
3304
3305 #[inline]
3306 unsafe fn decode(
3307 &mut self,
3308 decoder: &mut fidl::encoding::Decoder<'_, D>,
3309 offset: usize,
3310 _depth: fidl::encoding::Depth,
3311 ) -> fidl::Result<()> {
3312 decoder.debug_check_bounds::<Self>(offset);
3313 fidl::decode!(
3315 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
3316 D,
3317 &mut self.subnet,
3318 decoder,
3319 offset + 0,
3320 _depth
3321 )?;
3322 Ok(())
3323 }
3324 }
3325
3326 impl fidl::encoding::ValueTypeMarker for LegacyJoiningMakeJoinableRequest {
3327 type Borrowed<'a> = &'a Self;
3328 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3329 value
3330 }
3331 }
3332
3333 unsafe impl fidl::encoding::TypeMarker for LegacyJoiningMakeJoinableRequest {
3334 type Owned = Self;
3335
3336 #[inline(always)]
3337 fn inline_align(_context: fidl::encoding::Context) -> usize {
3338 8
3339 }
3340
3341 #[inline(always)]
3342 fn inline_size(_context: fidl::encoding::Context) -> usize {
3343 16
3344 }
3345 }
3346
3347 unsafe impl<D: fidl::encoding::ResourceDialect>
3348 fidl::encoding::Encode<LegacyJoiningMakeJoinableRequest, D>
3349 for &LegacyJoiningMakeJoinableRequest
3350 {
3351 #[inline]
3352 unsafe fn encode(
3353 self,
3354 encoder: &mut fidl::encoding::Encoder<'_, D>,
3355 offset: usize,
3356 _depth: fidl::encoding::Depth,
3357 ) -> fidl::Result<()> {
3358 encoder.debug_check_bounds::<LegacyJoiningMakeJoinableRequest>(offset);
3359 unsafe {
3360 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3362 (buf_ptr as *mut LegacyJoiningMakeJoinableRequest)
3363 .write_unaligned((self as *const LegacyJoiningMakeJoinableRequest).read());
3364 let padding_ptr = buf_ptr.offset(8) as *mut u64;
3367 let padding_mask = 0xffffffffffff0000u64;
3368 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
3369 }
3370 Ok(())
3371 }
3372 }
3373 unsafe impl<
3374 D: fidl::encoding::ResourceDialect,
3375 T0: fidl::encoding::Encode<i64, D>,
3376 T1: fidl::encoding::Encode<u16, D>,
3377 > fidl::encoding::Encode<LegacyJoiningMakeJoinableRequest, D> for (T0, T1)
3378 {
3379 #[inline]
3380 unsafe fn encode(
3381 self,
3382 encoder: &mut fidl::encoding::Encoder<'_, D>,
3383 offset: usize,
3384 depth: fidl::encoding::Depth,
3385 ) -> fidl::Result<()> {
3386 encoder.debug_check_bounds::<LegacyJoiningMakeJoinableRequest>(offset);
3387 unsafe {
3390 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
3391 (ptr as *mut u64).write_unaligned(0);
3392 }
3393 self.0.encode(encoder, offset + 0, depth)?;
3395 self.1.encode(encoder, offset + 8, depth)?;
3396 Ok(())
3397 }
3398 }
3399
3400 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3401 for LegacyJoiningMakeJoinableRequest
3402 {
3403 #[inline(always)]
3404 fn new_empty() -> Self {
3405 Self { duration: fidl::new_empty!(i64, D), port: fidl::new_empty!(u16, D) }
3406 }
3407
3408 #[inline]
3409 unsafe fn decode(
3410 &mut self,
3411 decoder: &mut fidl::encoding::Decoder<'_, D>,
3412 offset: usize,
3413 _depth: fidl::encoding::Depth,
3414 ) -> fidl::Result<()> {
3415 decoder.debug_check_bounds::<Self>(offset);
3416 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3417 let ptr = unsafe { buf_ptr.offset(8) };
3419 let padval = unsafe { (ptr as *const u64).read_unaligned() };
3420 let mask = 0xffffffffffff0000u64;
3421 let maskedval = padval & mask;
3422 if maskedval != 0 {
3423 return Err(fidl::Error::NonZeroPadding {
3424 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
3425 });
3426 }
3427 unsafe {
3429 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
3430 }
3431 Ok(())
3432 }
3433 }
3434
3435 impl fidl::encoding::ValueTypeMarker for ProvisioningMonitorWatchProgressResponse {
3436 type Borrowed<'a> = &'a Self;
3437 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3438 value
3439 }
3440 }
3441
3442 unsafe impl fidl::encoding::TypeMarker for ProvisioningMonitorWatchProgressResponse {
3443 type Owned = Self;
3444
3445 #[inline(always)]
3446 fn inline_align(_context: fidl::encoding::Context) -> usize {
3447 8
3448 }
3449
3450 #[inline(always)]
3451 fn inline_size(_context: fidl::encoding::Context) -> usize {
3452 16
3453 }
3454 }
3455
3456 unsafe impl<D: fidl::encoding::ResourceDialect>
3457 fidl::encoding::Encode<ProvisioningMonitorWatchProgressResponse, D>
3458 for &ProvisioningMonitorWatchProgressResponse
3459 {
3460 #[inline]
3461 unsafe fn encode(
3462 self,
3463 encoder: &mut fidl::encoding::Encoder<'_, D>,
3464 offset: usize,
3465 _depth: fidl::encoding::Depth,
3466 ) -> fidl::Result<()> {
3467 encoder.debug_check_bounds::<ProvisioningMonitorWatchProgressResponse>(offset);
3468 fidl::encoding::Encode::<ProvisioningMonitorWatchProgressResponse, D>::encode(
3470 (<ProvisioningProgress as fidl::encoding::ValueTypeMarker>::borrow(&self.progress),),
3471 encoder,
3472 offset,
3473 _depth,
3474 )
3475 }
3476 }
3477 unsafe impl<
3478 D: fidl::encoding::ResourceDialect,
3479 T0: fidl::encoding::Encode<ProvisioningProgress, D>,
3480 > fidl::encoding::Encode<ProvisioningMonitorWatchProgressResponse, D> for (T0,)
3481 {
3482 #[inline]
3483 unsafe fn encode(
3484 self,
3485 encoder: &mut fidl::encoding::Encoder<'_, D>,
3486 offset: usize,
3487 depth: fidl::encoding::Depth,
3488 ) -> fidl::Result<()> {
3489 encoder.debug_check_bounds::<ProvisioningMonitorWatchProgressResponse>(offset);
3490 self.0.encode(encoder, offset + 0, depth)?;
3494 Ok(())
3495 }
3496 }
3497
3498 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3499 for ProvisioningMonitorWatchProgressResponse
3500 {
3501 #[inline(always)]
3502 fn new_empty() -> Self {
3503 Self { progress: fidl::new_empty!(ProvisioningProgress, D) }
3504 }
3505
3506 #[inline]
3507 unsafe fn decode(
3508 &mut self,
3509 decoder: &mut fidl::encoding::Decoder<'_, D>,
3510 offset: usize,
3511 _depth: fidl::encoding::Depth,
3512 ) -> fidl::Result<()> {
3513 decoder.debug_check_bounds::<Self>(offset);
3514 fidl::decode!(
3516 ProvisioningProgress,
3517 D,
3518 &mut self.progress,
3519 decoder,
3520 offset + 0,
3521 _depth
3522 )?;
3523 Ok(())
3524 }
3525 }
3526
3527 impl fidl::encoding::ValueTypeMarker for TelemetryProviderGetTelemetryResponse {
3528 type Borrowed<'a> = &'a Self;
3529 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3530 value
3531 }
3532 }
3533
3534 unsafe impl fidl::encoding::TypeMarker for TelemetryProviderGetTelemetryResponse {
3535 type Owned = Self;
3536
3537 #[inline(always)]
3538 fn inline_align(_context: fidl::encoding::Context) -> usize {
3539 8
3540 }
3541
3542 #[inline(always)]
3543 fn inline_size(_context: fidl::encoding::Context) -> usize {
3544 16
3545 }
3546 }
3547
3548 unsafe impl<D: fidl::encoding::ResourceDialect>
3549 fidl::encoding::Encode<TelemetryProviderGetTelemetryResponse, D>
3550 for &TelemetryProviderGetTelemetryResponse
3551 {
3552 #[inline]
3553 unsafe fn encode(
3554 self,
3555 encoder: &mut fidl::encoding::Encoder<'_, D>,
3556 offset: usize,
3557 _depth: fidl::encoding::Depth,
3558 ) -> fidl::Result<()> {
3559 encoder.debug_check_bounds::<TelemetryProviderGetTelemetryResponse>(offset);
3560 fidl::encoding::Encode::<TelemetryProviderGetTelemetryResponse, D>::encode(
3562 (<Telemetry as fidl::encoding::ValueTypeMarker>::borrow(&self.telemetry),),
3563 encoder,
3564 offset,
3565 _depth,
3566 )
3567 }
3568 }
3569 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Telemetry, D>>
3570 fidl::encoding::Encode<TelemetryProviderGetTelemetryResponse, D> for (T0,)
3571 {
3572 #[inline]
3573 unsafe fn encode(
3574 self,
3575 encoder: &mut fidl::encoding::Encoder<'_, D>,
3576 offset: usize,
3577 depth: fidl::encoding::Depth,
3578 ) -> fidl::Result<()> {
3579 encoder.debug_check_bounds::<TelemetryProviderGetTelemetryResponse>(offset);
3580 self.0.encode(encoder, offset + 0, depth)?;
3584 Ok(())
3585 }
3586 }
3587
3588 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3589 for TelemetryProviderGetTelemetryResponse
3590 {
3591 #[inline(always)]
3592 fn new_empty() -> Self {
3593 Self { telemetry: fidl::new_empty!(Telemetry, D) }
3594 }
3595
3596 #[inline]
3597 unsafe fn decode(
3598 &mut self,
3599 decoder: &mut fidl::encoding::Decoder<'_, D>,
3600 offset: usize,
3601 _depth: fidl::encoding::Depth,
3602 ) -> fidl::Result<()> {
3603 decoder.debug_check_bounds::<Self>(offset);
3604 fidl::decode!(Telemetry, D, &mut self.telemetry, decoder, offset + 0, _depth)?;
3606 Ok(())
3607 }
3608 }
3609
3610 impl BeaconInfo {
3611 #[inline(always)]
3612 fn max_ordinal_present(&self) -> u64 {
3613 if let Some(_) = self.lqi {
3614 return 4;
3615 }
3616 if let Some(_) = self.rssi {
3617 return 3;
3618 }
3619 if let Some(_) = self.identity {
3620 return 2;
3621 }
3622 if let Some(_) = self.address {
3623 return 1;
3624 }
3625 0
3626 }
3627 }
3628
3629 impl fidl::encoding::ValueTypeMarker for BeaconInfo {
3630 type Borrowed<'a> = &'a Self;
3631 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3632 value
3633 }
3634 }
3635
3636 unsafe impl fidl::encoding::TypeMarker for BeaconInfo {
3637 type Owned = Self;
3638
3639 #[inline(always)]
3640 fn inline_align(_context: fidl::encoding::Context) -> usize {
3641 8
3642 }
3643
3644 #[inline(always)]
3645 fn inline_size(_context: fidl::encoding::Context) -> usize {
3646 16
3647 }
3648 }
3649
3650 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BeaconInfo, D>
3651 for &BeaconInfo
3652 {
3653 unsafe fn encode(
3654 self,
3655 encoder: &mut fidl::encoding::Encoder<'_, D>,
3656 offset: usize,
3657 mut depth: fidl::encoding::Depth,
3658 ) -> fidl::Result<()> {
3659 encoder.debug_check_bounds::<BeaconInfo>(offset);
3660 let max_ordinal: u64 = self.max_ordinal_present();
3662 encoder.write_num(max_ordinal, offset);
3663 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3664 if max_ordinal == 0 {
3666 return Ok(());
3667 }
3668 depth.increment()?;
3669 let envelope_size = 8;
3670 let bytes_len = max_ordinal as usize * envelope_size;
3671 #[allow(unused_variables)]
3672 let offset = encoder.out_of_line_offset(bytes_len);
3673 let mut _prev_end_offset: usize = 0;
3674 if 1 > max_ordinal {
3675 return Ok(());
3676 }
3677
3678 let cur_offset: usize = (1 - 1) * envelope_size;
3681
3682 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3684
3685 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan__common::MacAddress, D>(
3690 self.address.as_ref().map(<fidl_fuchsia_lowpan__common::MacAddress as fidl::encoding::ValueTypeMarker>::borrow),
3691 encoder, offset + cur_offset, depth
3692 )?;
3693
3694 _prev_end_offset = cur_offset + envelope_size;
3695 if 2 > max_ordinal {
3696 return Ok(());
3697 }
3698
3699 let cur_offset: usize = (2 - 1) * envelope_size;
3702
3703 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3705
3706 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan_device__common::Identity, D>(
3711 self.identity.as_ref().map(<fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::ValueTypeMarker>::borrow),
3712 encoder, offset + cur_offset, depth
3713 )?;
3714
3715 _prev_end_offset = cur_offset + envelope_size;
3716 if 3 > max_ordinal {
3717 return Ok(());
3718 }
3719
3720 let cur_offset: usize = (3 - 1) * envelope_size;
3723
3724 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3726
3727 fidl::encoding::encode_in_envelope_optional::<i8, D>(
3732 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
3733 encoder,
3734 offset + cur_offset,
3735 depth,
3736 )?;
3737
3738 _prev_end_offset = cur_offset + envelope_size;
3739 if 4 > max_ordinal {
3740 return Ok(());
3741 }
3742
3743 let cur_offset: usize = (4 - 1) * envelope_size;
3746
3747 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3749
3750 fidl::encoding::encode_in_envelope_optional::<u8, D>(
3755 self.lqi.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
3756 encoder,
3757 offset + cur_offset,
3758 depth,
3759 )?;
3760
3761 _prev_end_offset = cur_offset + envelope_size;
3762
3763 Ok(())
3764 }
3765 }
3766
3767 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BeaconInfo {
3768 #[inline(always)]
3769 fn new_empty() -> Self {
3770 Self::default()
3771 }
3772
3773 unsafe fn decode(
3774 &mut self,
3775 decoder: &mut fidl::encoding::Decoder<'_, D>,
3776 offset: usize,
3777 mut depth: fidl::encoding::Depth,
3778 ) -> fidl::Result<()> {
3779 decoder.debug_check_bounds::<Self>(offset);
3780 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3781 None => return Err(fidl::Error::NotNullable),
3782 Some(len) => len,
3783 };
3784 if len == 0 {
3786 return Ok(());
3787 };
3788 depth.increment()?;
3789 let envelope_size = 8;
3790 let bytes_len = len * envelope_size;
3791 let offset = decoder.out_of_line_offset(bytes_len)?;
3792 let mut _next_ordinal_to_read = 0;
3794 let mut next_offset = offset;
3795 let end_offset = offset + bytes_len;
3796 _next_ordinal_to_read += 1;
3797 if next_offset >= end_offset {
3798 return Ok(());
3799 }
3800
3801 while _next_ordinal_to_read < 1 {
3803 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3804 _next_ordinal_to_read += 1;
3805 next_offset += envelope_size;
3806 }
3807
3808 let next_out_of_line = decoder.next_out_of_line();
3809 let handles_before = decoder.remaining_handles();
3810 if let Some((inlined, num_bytes, num_handles)) =
3811 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3812 {
3813 let member_inline_size = <fidl_fuchsia_lowpan__common::MacAddress as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3814 if inlined != (member_inline_size <= 4) {
3815 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3816 }
3817 let inner_offset;
3818 let mut inner_depth = depth.clone();
3819 if inlined {
3820 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3821 inner_offset = next_offset;
3822 } else {
3823 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3824 inner_depth.increment()?;
3825 }
3826 let val_ref = self.address.get_or_insert_with(|| {
3827 fidl::new_empty!(fidl_fuchsia_lowpan__common::MacAddress, D)
3828 });
3829 fidl::decode!(
3830 fidl_fuchsia_lowpan__common::MacAddress,
3831 D,
3832 val_ref,
3833 decoder,
3834 inner_offset,
3835 inner_depth
3836 )?;
3837 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3838 {
3839 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3840 }
3841 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3842 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3843 }
3844 }
3845
3846 next_offset += envelope_size;
3847 _next_ordinal_to_read += 1;
3848 if next_offset >= end_offset {
3849 return Ok(());
3850 }
3851
3852 while _next_ordinal_to_read < 2 {
3854 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3855 _next_ordinal_to_read += 1;
3856 next_offset += envelope_size;
3857 }
3858
3859 let next_out_of_line = decoder.next_out_of_line();
3860 let handles_before = decoder.remaining_handles();
3861 if let Some((inlined, num_bytes, num_handles)) =
3862 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3863 {
3864 let member_inline_size = <fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3865 if inlined != (member_inline_size <= 4) {
3866 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3867 }
3868 let inner_offset;
3869 let mut inner_depth = depth.clone();
3870 if inlined {
3871 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3872 inner_offset = next_offset;
3873 } else {
3874 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3875 inner_depth.increment()?;
3876 }
3877 let val_ref = self.identity.get_or_insert_with(|| {
3878 fidl::new_empty!(fidl_fuchsia_lowpan_device__common::Identity, D)
3879 });
3880 fidl::decode!(
3881 fidl_fuchsia_lowpan_device__common::Identity,
3882 D,
3883 val_ref,
3884 decoder,
3885 inner_offset,
3886 inner_depth
3887 )?;
3888 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3889 {
3890 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3891 }
3892 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3893 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3894 }
3895 }
3896
3897 next_offset += envelope_size;
3898 _next_ordinal_to_read += 1;
3899 if next_offset >= end_offset {
3900 return Ok(());
3901 }
3902
3903 while _next_ordinal_to_read < 3 {
3905 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3906 _next_ordinal_to_read += 1;
3907 next_offset += envelope_size;
3908 }
3909
3910 let next_out_of_line = decoder.next_out_of_line();
3911 let handles_before = decoder.remaining_handles();
3912 if let Some((inlined, num_bytes, num_handles)) =
3913 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3914 {
3915 let member_inline_size =
3916 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3917 if inlined != (member_inline_size <= 4) {
3918 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3919 }
3920 let inner_offset;
3921 let mut inner_depth = depth.clone();
3922 if inlined {
3923 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3924 inner_offset = next_offset;
3925 } else {
3926 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3927 inner_depth.increment()?;
3928 }
3929 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
3930 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
3931 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3932 {
3933 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3934 }
3935 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3936 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3937 }
3938 }
3939
3940 next_offset += envelope_size;
3941 _next_ordinal_to_read += 1;
3942 if next_offset >= end_offset {
3943 return Ok(());
3944 }
3945
3946 while _next_ordinal_to_read < 4 {
3948 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3949 _next_ordinal_to_read += 1;
3950 next_offset += envelope_size;
3951 }
3952
3953 let next_out_of_line = decoder.next_out_of_line();
3954 let handles_before = decoder.remaining_handles();
3955 if let Some((inlined, num_bytes, num_handles)) =
3956 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3957 {
3958 let member_inline_size =
3959 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3960 if inlined != (member_inline_size <= 4) {
3961 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3962 }
3963 let inner_offset;
3964 let mut inner_depth = depth.clone();
3965 if inlined {
3966 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3967 inner_offset = next_offset;
3968 } else {
3969 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3970 inner_depth.increment()?;
3971 }
3972 let val_ref = self.lqi.get_or_insert_with(|| fidl::new_empty!(u8, D));
3973 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
3974 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3975 {
3976 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3977 }
3978 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3979 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3980 }
3981 }
3982
3983 next_offset += envelope_size;
3984
3985 while next_offset < end_offset {
3987 _next_ordinal_to_read += 1;
3988 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3989 next_offset += envelope_size;
3990 }
3991
3992 Ok(())
3993 }
3994 }
3995
3996 impl BorderRouterConfig {
3997 #[inline(always)]
3998 fn max_ordinal_present(&self) -> u64 {
3999 if let Some(_) = self.rloc16 {
4000 return 12;
4001 }
4002 if let Some(_) = self.dp {
4003 return 11;
4004 }
4005 if let Some(_) = self.nd_dns {
4006 return 10;
4007 }
4008 if let Some(_) = self.stable {
4009 return 9;
4010 }
4011 if let Some(_) = self.on_mesh {
4012 return 8;
4013 }
4014 if let Some(_) = self.default_route {
4015 return 7;
4016 }
4017 if let Some(_) = self.configure {
4018 return 6;
4019 }
4020 if let Some(_) = self.dhcp {
4021 return 5;
4022 }
4023 if let Some(_) = self.slaac {
4024 return 4;
4025 }
4026 if let Some(_) = self.preferred {
4027 return 3;
4028 }
4029 if let Some(_) = self.preference {
4030 return 2;
4031 }
4032 if let Some(_) = self.prefix {
4033 return 1;
4034 }
4035 0
4036 }
4037 }
4038
4039 impl fidl::encoding::ValueTypeMarker for BorderRouterConfig {
4040 type Borrowed<'a> = &'a Self;
4041 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4042 value
4043 }
4044 }
4045
4046 unsafe impl fidl::encoding::TypeMarker for BorderRouterConfig {
4047 type Owned = Self;
4048
4049 #[inline(always)]
4050 fn inline_align(_context: fidl::encoding::Context) -> usize {
4051 8
4052 }
4053
4054 #[inline(always)]
4055 fn inline_size(_context: fidl::encoding::Context) -> usize {
4056 16
4057 }
4058 }
4059
4060 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRouterConfig, D>
4061 for &BorderRouterConfig
4062 {
4063 unsafe fn encode(
4064 self,
4065 encoder: &mut fidl::encoding::Encoder<'_, D>,
4066 offset: usize,
4067 mut depth: fidl::encoding::Depth,
4068 ) -> fidl::Result<()> {
4069 encoder.debug_check_bounds::<BorderRouterConfig>(offset);
4070 let max_ordinal: u64 = self.max_ordinal_present();
4072 encoder.write_num(max_ordinal, offset);
4073 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4074 if max_ordinal == 0 {
4076 return Ok(());
4077 }
4078 depth.increment()?;
4079 let envelope_size = 8;
4080 let bytes_len = max_ordinal as usize * envelope_size;
4081 #[allow(unused_variables)]
4082 let offset = encoder.out_of_line_offset(bytes_len);
4083 let mut _prev_end_offset: usize = 0;
4084 if 1 > max_ordinal {
4085 return Ok(());
4086 }
4087
4088 let cur_offset: usize = (1 - 1) * envelope_size;
4091
4092 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4094
4095 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
4100 self.prefix.as_ref().map(
4101 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
4102 ),
4103 encoder,
4104 offset + cur_offset,
4105 depth,
4106 )?;
4107
4108 _prev_end_offset = cur_offset + envelope_size;
4109 if 2 > max_ordinal {
4110 return Ok(());
4111 }
4112
4113 let cur_offset: usize = (2 - 1) * envelope_size;
4116
4117 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4119
4120 fidl::encoding::encode_in_envelope_optional::<i8, D>(
4125 self.preference.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
4126 encoder,
4127 offset + cur_offset,
4128 depth,
4129 )?;
4130
4131 _prev_end_offset = cur_offset + envelope_size;
4132 if 3 > max_ordinal {
4133 return Ok(());
4134 }
4135
4136 let cur_offset: usize = (3 - 1) * envelope_size;
4139
4140 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4142
4143 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4148 self.preferred.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4149 encoder,
4150 offset + cur_offset,
4151 depth,
4152 )?;
4153
4154 _prev_end_offset = cur_offset + envelope_size;
4155 if 4 > max_ordinal {
4156 return Ok(());
4157 }
4158
4159 let cur_offset: usize = (4 - 1) * envelope_size;
4162
4163 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4165
4166 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4171 self.slaac.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4172 encoder,
4173 offset + cur_offset,
4174 depth,
4175 )?;
4176
4177 _prev_end_offset = cur_offset + envelope_size;
4178 if 5 > max_ordinal {
4179 return Ok(());
4180 }
4181
4182 let cur_offset: usize = (5 - 1) * envelope_size;
4185
4186 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4188
4189 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4194 self.dhcp.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4195 encoder,
4196 offset + cur_offset,
4197 depth,
4198 )?;
4199
4200 _prev_end_offset = cur_offset + envelope_size;
4201 if 6 > max_ordinal {
4202 return Ok(());
4203 }
4204
4205 let cur_offset: usize = (6 - 1) * envelope_size;
4208
4209 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4211
4212 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4217 self.configure.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4218 encoder,
4219 offset + cur_offset,
4220 depth,
4221 )?;
4222
4223 _prev_end_offset = cur_offset + envelope_size;
4224 if 7 > max_ordinal {
4225 return Ok(());
4226 }
4227
4228 let cur_offset: usize = (7 - 1) * envelope_size;
4231
4232 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4234
4235 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4240 self.default_route.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4241 encoder,
4242 offset + cur_offset,
4243 depth,
4244 )?;
4245
4246 _prev_end_offset = cur_offset + envelope_size;
4247 if 8 > max_ordinal {
4248 return Ok(());
4249 }
4250
4251 let cur_offset: usize = (8 - 1) * envelope_size;
4254
4255 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4257
4258 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4263 self.on_mesh.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4264 encoder,
4265 offset + cur_offset,
4266 depth,
4267 )?;
4268
4269 _prev_end_offset = cur_offset + envelope_size;
4270 if 9 > max_ordinal {
4271 return Ok(());
4272 }
4273
4274 let cur_offset: usize = (9 - 1) * envelope_size;
4277
4278 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4280
4281 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4286 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4287 encoder,
4288 offset + cur_offset,
4289 depth,
4290 )?;
4291
4292 _prev_end_offset = cur_offset + envelope_size;
4293 if 10 > max_ordinal {
4294 return Ok(());
4295 }
4296
4297 let cur_offset: usize = (10 - 1) * envelope_size;
4300
4301 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4303
4304 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4309 self.nd_dns.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4310 encoder,
4311 offset + cur_offset,
4312 depth,
4313 )?;
4314
4315 _prev_end_offset = cur_offset + envelope_size;
4316 if 11 > max_ordinal {
4317 return Ok(());
4318 }
4319
4320 let cur_offset: usize = (11 - 1) * envelope_size;
4323
4324 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4326
4327 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4332 self.dp.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4333 encoder,
4334 offset + cur_offset,
4335 depth,
4336 )?;
4337
4338 _prev_end_offset = cur_offset + envelope_size;
4339 if 12 > max_ordinal {
4340 return Ok(());
4341 }
4342
4343 let cur_offset: usize = (12 - 1) * envelope_size;
4346
4347 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4349
4350 fidl::encoding::encode_in_envelope_optional::<u16, D>(
4355 self.rloc16.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
4356 encoder,
4357 offset + cur_offset,
4358 depth,
4359 )?;
4360
4361 _prev_end_offset = cur_offset + envelope_size;
4362
4363 Ok(())
4364 }
4365 }
4366
4367 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRouterConfig {
4368 #[inline(always)]
4369 fn new_empty() -> Self {
4370 Self::default()
4371 }
4372
4373 unsafe fn decode(
4374 &mut self,
4375 decoder: &mut fidl::encoding::Decoder<'_, D>,
4376 offset: usize,
4377 mut depth: fidl::encoding::Depth,
4378 ) -> fidl::Result<()> {
4379 decoder.debug_check_bounds::<Self>(offset);
4380 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4381 None => return Err(fidl::Error::NotNullable),
4382 Some(len) => len,
4383 };
4384 if len == 0 {
4386 return Ok(());
4387 };
4388 depth.increment()?;
4389 let envelope_size = 8;
4390 let bytes_len = len * envelope_size;
4391 let offset = decoder.out_of_line_offset(bytes_len)?;
4392 let mut _next_ordinal_to_read = 0;
4394 let mut next_offset = offset;
4395 let end_offset = offset + bytes_len;
4396 _next_ordinal_to_read += 1;
4397 if next_offset >= end_offset {
4398 return Ok(());
4399 }
4400
4401 while _next_ordinal_to_read < 1 {
4403 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4404 _next_ordinal_to_read += 1;
4405 next_offset += envelope_size;
4406 }
4407
4408 let next_out_of_line = decoder.next_out_of_line();
4409 let handles_before = decoder.remaining_handles();
4410 if let Some((inlined, num_bytes, num_handles)) =
4411 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4412 {
4413 let member_inline_size =
4414 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
4415 decoder.context,
4416 );
4417 if inlined != (member_inline_size <= 4) {
4418 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4419 }
4420 let inner_offset;
4421 let mut inner_depth = depth.clone();
4422 if inlined {
4423 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4424 inner_offset = next_offset;
4425 } else {
4426 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4427 inner_depth.increment()?;
4428 }
4429 let val_ref = self
4430 .prefix
4431 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
4432 fidl::decode!(
4433 fidl::encoding::BoundedString<64>,
4434 D,
4435 val_ref,
4436 decoder,
4437 inner_offset,
4438 inner_depth
4439 )?;
4440 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4441 {
4442 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4443 }
4444 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4445 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4446 }
4447 }
4448
4449 next_offset += envelope_size;
4450 _next_ordinal_to_read += 1;
4451 if next_offset >= end_offset {
4452 return Ok(());
4453 }
4454
4455 while _next_ordinal_to_read < 2 {
4457 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4458 _next_ordinal_to_read += 1;
4459 next_offset += envelope_size;
4460 }
4461
4462 let next_out_of_line = decoder.next_out_of_line();
4463 let handles_before = decoder.remaining_handles();
4464 if let Some((inlined, num_bytes, num_handles)) =
4465 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4466 {
4467 let member_inline_size =
4468 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4469 if inlined != (member_inline_size <= 4) {
4470 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4471 }
4472 let inner_offset;
4473 let mut inner_depth = depth.clone();
4474 if inlined {
4475 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4476 inner_offset = next_offset;
4477 } else {
4478 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4479 inner_depth.increment()?;
4480 }
4481 let val_ref = self.preference.get_or_insert_with(|| fidl::new_empty!(i8, D));
4482 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
4483 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4484 {
4485 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4486 }
4487 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4488 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4489 }
4490 }
4491
4492 next_offset += envelope_size;
4493 _next_ordinal_to_read += 1;
4494 if next_offset >= end_offset {
4495 return Ok(());
4496 }
4497
4498 while _next_ordinal_to_read < 3 {
4500 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4501 _next_ordinal_to_read += 1;
4502 next_offset += envelope_size;
4503 }
4504
4505 let next_out_of_line = decoder.next_out_of_line();
4506 let handles_before = decoder.remaining_handles();
4507 if let Some((inlined, num_bytes, num_handles)) =
4508 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4509 {
4510 let member_inline_size =
4511 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4512 if inlined != (member_inline_size <= 4) {
4513 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4514 }
4515 let inner_offset;
4516 let mut inner_depth = depth.clone();
4517 if inlined {
4518 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4519 inner_offset = next_offset;
4520 } else {
4521 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4522 inner_depth.increment()?;
4523 }
4524 let val_ref = self.preferred.get_or_insert_with(|| fidl::new_empty!(bool, D));
4525 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4526 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4527 {
4528 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4529 }
4530 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4531 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4532 }
4533 }
4534
4535 next_offset += envelope_size;
4536 _next_ordinal_to_read += 1;
4537 if next_offset >= end_offset {
4538 return Ok(());
4539 }
4540
4541 while _next_ordinal_to_read < 4 {
4543 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4544 _next_ordinal_to_read += 1;
4545 next_offset += envelope_size;
4546 }
4547
4548 let next_out_of_line = decoder.next_out_of_line();
4549 let handles_before = decoder.remaining_handles();
4550 if let Some((inlined, num_bytes, num_handles)) =
4551 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4552 {
4553 let member_inline_size =
4554 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4555 if inlined != (member_inline_size <= 4) {
4556 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4557 }
4558 let inner_offset;
4559 let mut inner_depth = depth.clone();
4560 if inlined {
4561 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4562 inner_offset = next_offset;
4563 } else {
4564 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4565 inner_depth.increment()?;
4566 }
4567 let val_ref = self.slaac.get_or_insert_with(|| fidl::new_empty!(bool, D));
4568 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4569 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4570 {
4571 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4572 }
4573 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4574 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4575 }
4576 }
4577
4578 next_offset += envelope_size;
4579 _next_ordinal_to_read += 1;
4580 if next_offset >= end_offset {
4581 return Ok(());
4582 }
4583
4584 while _next_ordinal_to_read < 5 {
4586 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4587 _next_ordinal_to_read += 1;
4588 next_offset += envelope_size;
4589 }
4590
4591 let next_out_of_line = decoder.next_out_of_line();
4592 let handles_before = decoder.remaining_handles();
4593 if let Some((inlined, num_bytes, num_handles)) =
4594 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4595 {
4596 let member_inline_size =
4597 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4598 if inlined != (member_inline_size <= 4) {
4599 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4600 }
4601 let inner_offset;
4602 let mut inner_depth = depth.clone();
4603 if inlined {
4604 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4605 inner_offset = next_offset;
4606 } else {
4607 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4608 inner_depth.increment()?;
4609 }
4610 let val_ref = self.dhcp.get_or_insert_with(|| fidl::new_empty!(bool, D));
4611 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4612 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4613 {
4614 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4615 }
4616 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4617 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4618 }
4619 }
4620
4621 next_offset += envelope_size;
4622 _next_ordinal_to_read += 1;
4623 if next_offset >= end_offset {
4624 return Ok(());
4625 }
4626
4627 while _next_ordinal_to_read < 6 {
4629 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4630 _next_ordinal_to_read += 1;
4631 next_offset += envelope_size;
4632 }
4633
4634 let next_out_of_line = decoder.next_out_of_line();
4635 let handles_before = decoder.remaining_handles();
4636 if let Some((inlined, num_bytes, num_handles)) =
4637 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4638 {
4639 let member_inline_size =
4640 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4641 if inlined != (member_inline_size <= 4) {
4642 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4643 }
4644 let inner_offset;
4645 let mut inner_depth = depth.clone();
4646 if inlined {
4647 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4648 inner_offset = next_offset;
4649 } else {
4650 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4651 inner_depth.increment()?;
4652 }
4653 let val_ref = self.configure.get_or_insert_with(|| fidl::new_empty!(bool, D));
4654 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4655 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4656 {
4657 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4658 }
4659 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4660 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4661 }
4662 }
4663
4664 next_offset += envelope_size;
4665 _next_ordinal_to_read += 1;
4666 if next_offset >= end_offset {
4667 return Ok(());
4668 }
4669
4670 while _next_ordinal_to_read < 7 {
4672 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4673 _next_ordinal_to_read += 1;
4674 next_offset += envelope_size;
4675 }
4676
4677 let next_out_of_line = decoder.next_out_of_line();
4678 let handles_before = decoder.remaining_handles();
4679 if let Some((inlined, num_bytes, num_handles)) =
4680 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4681 {
4682 let member_inline_size =
4683 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4684 if inlined != (member_inline_size <= 4) {
4685 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4686 }
4687 let inner_offset;
4688 let mut inner_depth = depth.clone();
4689 if inlined {
4690 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4691 inner_offset = next_offset;
4692 } else {
4693 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4694 inner_depth.increment()?;
4695 }
4696 let val_ref = self.default_route.get_or_insert_with(|| fidl::new_empty!(bool, D));
4697 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4698 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4699 {
4700 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4701 }
4702 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4703 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4704 }
4705 }
4706
4707 next_offset += envelope_size;
4708 _next_ordinal_to_read += 1;
4709 if next_offset >= end_offset {
4710 return Ok(());
4711 }
4712
4713 while _next_ordinal_to_read < 8 {
4715 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4716 _next_ordinal_to_read += 1;
4717 next_offset += envelope_size;
4718 }
4719
4720 let next_out_of_line = decoder.next_out_of_line();
4721 let handles_before = decoder.remaining_handles();
4722 if let Some((inlined, num_bytes, num_handles)) =
4723 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4724 {
4725 let member_inline_size =
4726 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4727 if inlined != (member_inline_size <= 4) {
4728 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4729 }
4730 let inner_offset;
4731 let mut inner_depth = depth.clone();
4732 if inlined {
4733 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4734 inner_offset = next_offset;
4735 } else {
4736 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4737 inner_depth.increment()?;
4738 }
4739 let val_ref = self.on_mesh.get_or_insert_with(|| fidl::new_empty!(bool, D));
4740 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4741 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4742 {
4743 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4744 }
4745 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4746 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4747 }
4748 }
4749
4750 next_offset += envelope_size;
4751 _next_ordinal_to_read += 1;
4752 if next_offset >= end_offset {
4753 return Ok(());
4754 }
4755
4756 while _next_ordinal_to_read < 9 {
4758 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4759 _next_ordinal_to_read += 1;
4760 next_offset += envelope_size;
4761 }
4762
4763 let next_out_of_line = decoder.next_out_of_line();
4764 let handles_before = decoder.remaining_handles();
4765 if let Some((inlined, num_bytes, num_handles)) =
4766 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4767 {
4768 let member_inline_size =
4769 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4770 if inlined != (member_inline_size <= 4) {
4771 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4772 }
4773 let inner_offset;
4774 let mut inner_depth = depth.clone();
4775 if inlined {
4776 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4777 inner_offset = next_offset;
4778 } else {
4779 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4780 inner_depth.increment()?;
4781 }
4782 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
4783 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4784 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4785 {
4786 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4787 }
4788 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4789 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4790 }
4791 }
4792
4793 next_offset += envelope_size;
4794 _next_ordinal_to_read += 1;
4795 if next_offset >= end_offset {
4796 return Ok(());
4797 }
4798
4799 while _next_ordinal_to_read < 10 {
4801 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4802 _next_ordinal_to_read += 1;
4803 next_offset += envelope_size;
4804 }
4805
4806 let next_out_of_line = decoder.next_out_of_line();
4807 let handles_before = decoder.remaining_handles();
4808 if let Some((inlined, num_bytes, num_handles)) =
4809 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4810 {
4811 let member_inline_size =
4812 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4813 if inlined != (member_inline_size <= 4) {
4814 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4815 }
4816 let inner_offset;
4817 let mut inner_depth = depth.clone();
4818 if inlined {
4819 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4820 inner_offset = next_offset;
4821 } else {
4822 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4823 inner_depth.increment()?;
4824 }
4825 let val_ref = self.nd_dns.get_or_insert_with(|| fidl::new_empty!(bool, D));
4826 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4827 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4828 {
4829 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4830 }
4831 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4832 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4833 }
4834 }
4835
4836 next_offset += envelope_size;
4837 _next_ordinal_to_read += 1;
4838 if next_offset >= end_offset {
4839 return Ok(());
4840 }
4841
4842 while _next_ordinal_to_read < 11 {
4844 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4845 _next_ordinal_to_read += 1;
4846 next_offset += envelope_size;
4847 }
4848
4849 let next_out_of_line = decoder.next_out_of_line();
4850 let handles_before = decoder.remaining_handles();
4851 if let Some((inlined, num_bytes, num_handles)) =
4852 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4853 {
4854 let member_inline_size =
4855 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4856 if inlined != (member_inline_size <= 4) {
4857 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4858 }
4859 let inner_offset;
4860 let mut inner_depth = depth.clone();
4861 if inlined {
4862 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4863 inner_offset = next_offset;
4864 } else {
4865 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4866 inner_depth.increment()?;
4867 }
4868 let val_ref = self.dp.get_or_insert_with(|| fidl::new_empty!(bool, D));
4869 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4870 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4871 {
4872 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4873 }
4874 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4875 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4876 }
4877 }
4878
4879 next_offset += envelope_size;
4880 _next_ordinal_to_read += 1;
4881 if next_offset >= end_offset {
4882 return Ok(());
4883 }
4884
4885 while _next_ordinal_to_read < 12 {
4887 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4888 _next_ordinal_to_read += 1;
4889 next_offset += envelope_size;
4890 }
4891
4892 let next_out_of_line = decoder.next_out_of_line();
4893 let handles_before = decoder.remaining_handles();
4894 if let Some((inlined, num_bytes, num_handles)) =
4895 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4896 {
4897 let member_inline_size =
4898 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4899 if inlined != (member_inline_size <= 4) {
4900 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4901 }
4902 let inner_offset;
4903 let mut inner_depth = depth.clone();
4904 if inlined {
4905 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4906 inner_offset = next_offset;
4907 } else {
4908 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4909 inner_depth.increment()?;
4910 }
4911 let val_ref = self.rloc16.get_or_insert_with(|| fidl::new_empty!(u16, D));
4912 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
4913 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4914 {
4915 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4916 }
4917 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4918 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4919 }
4920 }
4921
4922 next_offset += envelope_size;
4923
4924 while next_offset < end_offset {
4926 _next_ordinal_to_read += 1;
4927 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4928 next_offset += envelope_size;
4929 }
4930
4931 Ok(())
4932 }
4933 }
4934
4935 impl BorderRoutingCounters {
4936 #[inline(always)]
4937 fn max_ordinal_present(&self) -> u64 {
4938 if let Some(_) = self.outbound_internet_bytes {
4939 return 18;
4940 }
4941 if let Some(_) = self.outbound_internet_packets {
4942 return 17;
4943 }
4944 if let Some(_) = self.inbound_internet_bytes {
4945 return 16;
4946 }
4947 if let Some(_) = self.inbound_internet_packets {
4948 return 15;
4949 }
4950 if let Some(_) = self.rs_tx_failure {
4951 return 14;
4952 }
4953 if let Some(_) = self.rs_tx_success {
4954 return 13;
4955 }
4956 if let Some(_) = self.rs_rx {
4957 return 12;
4958 }
4959 if let Some(_) = self.ra_tx_failure {
4960 return 11;
4961 }
4962 if let Some(_) = self.ra_tx_success {
4963 return 10;
4964 }
4965 if let Some(_) = self.ra_rx {
4966 return 9;
4967 }
4968 if let Some(_) = self.outbound_multicast_bytes {
4969 return 8;
4970 }
4971 if let Some(_) = self.outbound_multicast_packets {
4972 return 7;
4973 }
4974 if let Some(_) = self.outbound_unicast_bytes {
4975 return 6;
4976 }
4977 if let Some(_) = self.outbound_unicast_packets {
4978 return 5;
4979 }
4980 if let Some(_) = self.inbound_multicast_bytes {
4981 return 4;
4982 }
4983 if let Some(_) = self.inbound_multicast_packets {
4984 return 3;
4985 }
4986 if let Some(_) = self.inbound_unicast_bytes {
4987 return 2;
4988 }
4989 if let Some(_) = self.inbound_unicast_packets {
4990 return 1;
4991 }
4992 0
4993 }
4994 }
4995
4996 impl fidl::encoding::ValueTypeMarker for BorderRoutingCounters {
4997 type Borrowed<'a> = &'a Self;
4998 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4999 value
5000 }
5001 }
5002
5003 unsafe impl fidl::encoding::TypeMarker for BorderRoutingCounters {
5004 type Owned = Self;
5005
5006 #[inline(always)]
5007 fn inline_align(_context: fidl::encoding::Context) -> usize {
5008 8
5009 }
5010
5011 #[inline(always)]
5012 fn inline_size(_context: fidl::encoding::Context) -> usize {
5013 16
5014 }
5015 }
5016
5017 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRoutingCounters, D>
5018 for &BorderRoutingCounters
5019 {
5020 unsafe fn encode(
5021 self,
5022 encoder: &mut fidl::encoding::Encoder<'_, D>,
5023 offset: usize,
5024 mut depth: fidl::encoding::Depth,
5025 ) -> fidl::Result<()> {
5026 encoder.debug_check_bounds::<BorderRoutingCounters>(offset);
5027 let max_ordinal: u64 = self.max_ordinal_present();
5029 encoder.write_num(max_ordinal, offset);
5030 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5031 if max_ordinal == 0 {
5033 return Ok(());
5034 }
5035 depth.increment()?;
5036 let envelope_size = 8;
5037 let bytes_len = max_ordinal as usize * envelope_size;
5038 #[allow(unused_variables)]
5039 let offset = encoder.out_of_line_offset(bytes_len);
5040 let mut _prev_end_offset: usize = 0;
5041 if 1 > max_ordinal {
5042 return Ok(());
5043 }
5044
5045 let cur_offset: usize = (1 - 1) * envelope_size;
5048
5049 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5051
5052 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5057 self.inbound_unicast_packets
5058 .as_ref()
5059 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5060 encoder,
5061 offset + cur_offset,
5062 depth,
5063 )?;
5064
5065 _prev_end_offset = cur_offset + envelope_size;
5066 if 2 > max_ordinal {
5067 return Ok(());
5068 }
5069
5070 let cur_offset: usize = (2 - 1) * envelope_size;
5073
5074 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5076
5077 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5082 self.inbound_unicast_bytes
5083 .as_ref()
5084 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5085 encoder,
5086 offset + cur_offset,
5087 depth,
5088 )?;
5089
5090 _prev_end_offset = cur_offset + envelope_size;
5091 if 3 > max_ordinal {
5092 return Ok(());
5093 }
5094
5095 let cur_offset: usize = (3 - 1) * envelope_size;
5098
5099 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5101
5102 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5107 self.inbound_multicast_packets
5108 .as_ref()
5109 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5110 encoder,
5111 offset + cur_offset,
5112 depth,
5113 )?;
5114
5115 _prev_end_offset = cur_offset + envelope_size;
5116 if 4 > max_ordinal {
5117 return Ok(());
5118 }
5119
5120 let cur_offset: usize = (4 - 1) * envelope_size;
5123
5124 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5126
5127 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5132 self.inbound_multicast_bytes
5133 .as_ref()
5134 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5135 encoder,
5136 offset + cur_offset,
5137 depth,
5138 )?;
5139
5140 _prev_end_offset = cur_offset + envelope_size;
5141 if 5 > max_ordinal {
5142 return Ok(());
5143 }
5144
5145 let cur_offset: usize = (5 - 1) * envelope_size;
5148
5149 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5151
5152 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5157 self.outbound_unicast_packets
5158 .as_ref()
5159 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5160 encoder,
5161 offset + cur_offset,
5162 depth,
5163 )?;
5164
5165 _prev_end_offset = cur_offset + envelope_size;
5166 if 6 > max_ordinal {
5167 return Ok(());
5168 }
5169
5170 let cur_offset: usize = (6 - 1) * envelope_size;
5173
5174 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5176
5177 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5182 self.outbound_unicast_bytes
5183 .as_ref()
5184 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5185 encoder,
5186 offset + cur_offset,
5187 depth,
5188 )?;
5189
5190 _prev_end_offset = cur_offset + envelope_size;
5191 if 7 > max_ordinal {
5192 return Ok(());
5193 }
5194
5195 let cur_offset: usize = (7 - 1) * envelope_size;
5198
5199 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5201
5202 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5207 self.outbound_multicast_packets
5208 .as_ref()
5209 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5210 encoder,
5211 offset + cur_offset,
5212 depth,
5213 )?;
5214
5215 _prev_end_offset = cur_offset + envelope_size;
5216 if 8 > max_ordinal {
5217 return Ok(());
5218 }
5219
5220 let cur_offset: usize = (8 - 1) * envelope_size;
5223
5224 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5226
5227 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5232 self.outbound_multicast_bytes
5233 .as_ref()
5234 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5235 encoder,
5236 offset + cur_offset,
5237 depth,
5238 )?;
5239
5240 _prev_end_offset = cur_offset + envelope_size;
5241 if 9 > max_ordinal {
5242 return Ok(());
5243 }
5244
5245 let cur_offset: usize = (9 - 1) * envelope_size;
5248
5249 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5251
5252 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5257 self.ra_rx.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5258 encoder,
5259 offset + cur_offset,
5260 depth,
5261 )?;
5262
5263 _prev_end_offset = cur_offset + envelope_size;
5264 if 10 > max_ordinal {
5265 return Ok(());
5266 }
5267
5268 let cur_offset: usize = (10 - 1) * envelope_size;
5271
5272 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5274
5275 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5280 self.ra_tx_success.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5281 encoder,
5282 offset + cur_offset,
5283 depth,
5284 )?;
5285
5286 _prev_end_offset = cur_offset + envelope_size;
5287 if 11 > max_ordinal {
5288 return Ok(());
5289 }
5290
5291 let cur_offset: usize = (11 - 1) * envelope_size;
5294
5295 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5297
5298 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5303 self.ra_tx_failure.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5304 encoder,
5305 offset + cur_offset,
5306 depth,
5307 )?;
5308
5309 _prev_end_offset = cur_offset + envelope_size;
5310 if 12 > max_ordinal {
5311 return Ok(());
5312 }
5313
5314 let cur_offset: usize = (12 - 1) * envelope_size;
5317
5318 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5320
5321 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5326 self.rs_rx.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5327 encoder,
5328 offset + cur_offset,
5329 depth,
5330 )?;
5331
5332 _prev_end_offset = cur_offset + envelope_size;
5333 if 13 > max_ordinal {
5334 return Ok(());
5335 }
5336
5337 let cur_offset: usize = (13 - 1) * envelope_size;
5340
5341 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5343
5344 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5349 self.rs_tx_success.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5350 encoder,
5351 offset + cur_offset,
5352 depth,
5353 )?;
5354
5355 _prev_end_offset = cur_offset + envelope_size;
5356 if 14 > max_ordinal {
5357 return Ok(());
5358 }
5359
5360 let cur_offset: usize = (14 - 1) * envelope_size;
5363
5364 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5366
5367 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5372 self.rs_tx_failure.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5373 encoder,
5374 offset + cur_offset,
5375 depth,
5376 )?;
5377
5378 _prev_end_offset = cur_offset + envelope_size;
5379 if 15 > max_ordinal {
5380 return Ok(());
5381 }
5382
5383 let cur_offset: usize = (15 - 1) * envelope_size;
5386
5387 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5389
5390 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5395 self.inbound_internet_packets
5396 .as_ref()
5397 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5398 encoder,
5399 offset + cur_offset,
5400 depth,
5401 )?;
5402
5403 _prev_end_offset = cur_offset + envelope_size;
5404 if 16 > max_ordinal {
5405 return Ok(());
5406 }
5407
5408 let cur_offset: usize = (16 - 1) * envelope_size;
5411
5412 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5414
5415 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5420 self.inbound_internet_bytes
5421 .as_ref()
5422 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5423 encoder,
5424 offset + cur_offset,
5425 depth,
5426 )?;
5427
5428 _prev_end_offset = cur_offset + envelope_size;
5429 if 17 > max_ordinal {
5430 return Ok(());
5431 }
5432
5433 let cur_offset: usize = (17 - 1) * envelope_size;
5436
5437 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5439
5440 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5445 self.outbound_internet_packets
5446 .as_ref()
5447 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5448 encoder,
5449 offset + cur_offset,
5450 depth,
5451 )?;
5452
5453 _prev_end_offset = cur_offset + envelope_size;
5454 if 18 > max_ordinal {
5455 return Ok(());
5456 }
5457
5458 let cur_offset: usize = (18 - 1) * envelope_size;
5461
5462 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5464
5465 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5470 self.outbound_internet_bytes
5471 .as_ref()
5472 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5473 encoder,
5474 offset + cur_offset,
5475 depth,
5476 )?;
5477
5478 _prev_end_offset = cur_offset + envelope_size;
5479
5480 Ok(())
5481 }
5482 }
5483
5484 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRoutingCounters {
5485 #[inline(always)]
5486 fn new_empty() -> Self {
5487 Self::default()
5488 }
5489
5490 unsafe fn decode(
5491 &mut self,
5492 decoder: &mut fidl::encoding::Decoder<'_, D>,
5493 offset: usize,
5494 mut depth: fidl::encoding::Depth,
5495 ) -> fidl::Result<()> {
5496 decoder.debug_check_bounds::<Self>(offset);
5497 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5498 None => return Err(fidl::Error::NotNullable),
5499 Some(len) => len,
5500 };
5501 if len == 0 {
5503 return Ok(());
5504 };
5505 depth.increment()?;
5506 let envelope_size = 8;
5507 let bytes_len = len * envelope_size;
5508 let offset = decoder.out_of_line_offset(bytes_len)?;
5509 let mut _next_ordinal_to_read = 0;
5511 let mut next_offset = offset;
5512 let end_offset = offset + bytes_len;
5513 _next_ordinal_to_read += 1;
5514 if next_offset >= end_offset {
5515 return Ok(());
5516 }
5517
5518 while _next_ordinal_to_read < 1 {
5520 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5521 _next_ordinal_to_read += 1;
5522 next_offset += envelope_size;
5523 }
5524
5525 let next_out_of_line = decoder.next_out_of_line();
5526 let handles_before = decoder.remaining_handles();
5527 if let Some((inlined, num_bytes, num_handles)) =
5528 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5529 {
5530 let member_inline_size =
5531 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5532 if inlined != (member_inline_size <= 4) {
5533 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5534 }
5535 let inner_offset;
5536 let mut inner_depth = depth.clone();
5537 if inlined {
5538 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5539 inner_offset = next_offset;
5540 } else {
5541 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5542 inner_depth.increment()?;
5543 }
5544 let val_ref =
5545 self.inbound_unicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
5546 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5547 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5548 {
5549 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5550 }
5551 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5552 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5553 }
5554 }
5555
5556 next_offset += envelope_size;
5557 _next_ordinal_to_read += 1;
5558 if next_offset >= end_offset {
5559 return Ok(());
5560 }
5561
5562 while _next_ordinal_to_read < 2 {
5564 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5565 _next_ordinal_to_read += 1;
5566 next_offset += envelope_size;
5567 }
5568
5569 let next_out_of_line = decoder.next_out_of_line();
5570 let handles_before = decoder.remaining_handles();
5571 if let Some((inlined, num_bytes, num_handles)) =
5572 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5573 {
5574 let member_inline_size =
5575 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5576 if inlined != (member_inline_size <= 4) {
5577 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5578 }
5579 let inner_offset;
5580 let mut inner_depth = depth.clone();
5581 if inlined {
5582 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5583 inner_offset = next_offset;
5584 } else {
5585 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5586 inner_depth.increment()?;
5587 }
5588 let val_ref =
5589 self.inbound_unicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
5590 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5591 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5592 {
5593 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5594 }
5595 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5596 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5597 }
5598 }
5599
5600 next_offset += envelope_size;
5601 _next_ordinal_to_read += 1;
5602 if next_offset >= end_offset {
5603 return Ok(());
5604 }
5605
5606 while _next_ordinal_to_read < 3 {
5608 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5609 _next_ordinal_to_read += 1;
5610 next_offset += envelope_size;
5611 }
5612
5613 let next_out_of_line = decoder.next_out_of_line();
5614 let handles_before = decoder.remaining_handles();
5615 if let Some((inlined, num_bytes, num_handles)) =
5616 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5617 {
5618 let member_inline_size =
5619 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5620 if inlined != (member_inline_size <= 4) {
5621 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5622 }
5623 let inner_offset;
5624 let mut inner_depth = depth.clone();
5625 if inlined {
5626 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5627 inner_offset = next_offset;
5628 } else {
5629 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5630 inner_depth.increment()?;
5631 }
5632 let val_ref =
5633 self.inbound_multicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
5634 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5635 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5636 {
5637 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5638 }
5639 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5640 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5641 }
5642 }
5643
5644 next_offset += envelope_size;
5645 _next_ordinal_to_read += 1;
5646 if next_offset >= end_offset {
5647 return Ok(());
5648 }
5649
5650 while _next_ordinal_to_read < 4 {
5652 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5653 _next_ordinal_to_read += 1;
5654 next_offset += envelope_size;
5655 }
5656
5657 let next_out_of_line = decoder.next_out_of_line();
5658 let handles_before = decoder.remaining_handles();
5659 if let Some((inlined, num_bytes, num_handles)) =
5660 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5661 {
5662 let member_inline_size =
5663 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5664 if inlined != (member_inline_size <= 4) {
5665 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5666 }
5667 let inner_offset;
5668 let mut inner_depth = depth.clone();
5669 if inlined {
5670 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5671 inner_offset = next_offset;
5672 } else {
5673 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5674 inner_depth.increment()?;
5675 }
5676 let val_ref =
5677 self.inbound_multicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
5678 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5679 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5680 {
5681 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5682 }
5683 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5684 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5685 }
5686 }
5687
5688 next_offset += envelope_size;
5689 _next_ordinal_to_read += 1;
5690 if next_offset >= end_offset {
5691 return Ok(());
5692 }
5693
5694 while _next_ordinal_to_read < 5 {
5696 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5697 _next_ordinal_to_read += 1;
5698 next_offset += envelope_size;
5699 }
5700
5701 let next_out_of_line = decoder.next_out_of_line();
5702 let handles_before = decoder.remaining_handles();
5703 if let Some((inlined, num_bytes, num_handles)) =
5704 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5705 {
5706 let member_inline_size =
5707 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5708 if inlined != (member_inline_size <= 4) {
5709 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5710 }
5711 let inner_offset;
5712 let mut inner_depth = depth.clone();
5713 if inlined {
5714 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5715 inner_offset = next_offset;
5716 } else {
5717 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5718 inner_depth.increment()?;
5719 }
5720 let val_ref =
5721 self.outbound_unicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
5722 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5723 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5724 {
5725 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5726 }
5727 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5728 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5729 }
5730 }
5731
5732 next_offset += envelope_size;
5733 _next_ordinal_to_read += 1;
5734 if next_offset >= end_offset {
5735 return Ok(());
5736 }
5737
5738 while _next_ordinal_to_read < 6 {
5740 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5741 _next_ordinal_to_read += 1;
5742 next_offset += envelope_size;
5743 }
5744
5745 let next_out_of_line = decoder.next_out_of_line();
5746 let handles_before = decoder.remaining_handles();
5747 if let Some((inlined, num_bytes, num_handles)) =
5748 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5749 {
5750 let member_inline_size =
5751 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5752 if inlined != (member_inline_size <= 4) {
5753 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5754 }
5755 let inner_offset;
5756 let mut inner_depth = depth.clone();
5757 if inlined {
5758 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5759 inner_offset = next_offset;
5760 } else {
5761 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5762 inner_depth.increment()?;
5763 }
5764 let val_ref =
5765 self.outbound_unicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
5766 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5767 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5768 {
5769 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5770 }
5771 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5772 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5773 }
5774 }
5775
5776 next_offset += envelope_size;
5777 _next_ordinal_to_read += 1;
5778 if next_offset >= end_offset {
5779 return Ok(());
5780 }
5781
5782 while _next_ordinal_to_read < 7 {
5784 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5785 _next_ordinal_to_read += 1;
5786 next_offset += envelope_size;
5787 }
5788
5789 let next_out_of_line = decoder.next_out_of_line();
5790 let handles_before = decoder.remaining_handles();
5791 if let Some((inlined, num_bytes, num_handles)) =
5792 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5793 {
5794 let member_inline_size =
5795 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5796 if inlined != (member_inline_size <= 4) {
5797 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5798 }
5799 let inner_offset;
5800 let mut inner_depth = depth.clone();
5801 if inlined {
5802 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5803 inner_offset = next_offset;
5804 } else {
5805 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5806 inner_depth.increment()?;
5807 }
5808 let val_ref =
5809 self.outbound_multicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
5810 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5811 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5812 {
5813 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5814 }
5815 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5816 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5817 }
5818 }
5819
5820 next_offset += envelope_size;
5821 _next_ordinal_to_read += 1;
5822 if next_offset >= end_offset {
5823 return Ok(());
5824 }
5825
5826 while _next_ordinal_to_read < 8 {
5828 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5829 _next_ordinal_to_read += 1;
5830 next_offset += envelope_size;
5831 }
5832
5833 let next_out_of_line = decoder.next_out_of_line();
5834 let handles_before = decoder.remaining_handles();
5835 if let Some((inlined, num_bytes, num_handles)) =
5836 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5837 {
5838 let member_inline_size =
5839 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5840 if inlined != (member_inline_size <= 4) {
5841 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5842 }
5843 let inner_offset;
5844 let mut inner_depth = depth.clone();
5845 if inlined {
5846 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5847 inner_offset = next_offset;
5848 } else {
5849 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5850 inner_depth.increment()?;
5851 }
5852 let val_ref =
5853 self.outbound_multicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
5854 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5855 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5856 {
5857 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5858 }
5859 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5860 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5861 }
5862 }
5863
5864 next_offset += envelope_size;
5865 _next_ordinal_to_read += 1;
5866 if next_offset >= end_offset {
5867 return Ok(());
5868 }
5869
5870 while _next_ordinal_to_read < 9 {
5872 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5873 _next_ordinal_to_read += 1;
5874 next_offset += envelope_size;
5875 }
5876
5877 let next_out_of_line = decoder.next_out_of_line();
5878 let handles_before = decoder.remaining_handles();
5879 if let Some((inlined, num_bytes, num_handles)) =
5880 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5881 {
5882 let member_inline_size =
5883 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5884 if inlined != (member_inline_size <= 4) {
5885 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5886 }
5887 let inner_offset;
5888 let mut inner_depth = depth.clone();
5889 if inlined {
5890 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5891 inner_offset = next_offset;
5892 } else {
5893 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5894 inner_depth.increment()?;
5895 }
5896 let val_ref = self.ra_rx.get_or_insert_with(|| fidl::new_empty!(u32, D));
5897 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
5898 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5899 {
5900 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5901 }
5902 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5903 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5904 }
5905 }
5906
5907 next_offset += envelope_size;
5908 _next_ordinal_to_read += 1;
5909 if next_offset >= end_offset {
5910 return Ok(());
5911 }
5912
5913 while _next_ordinal_to_read < 10 {
5915 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5916 _next_ordinal_to_read += 1;
5917 next_offset += envelope_size;
5918 }
5919
5920 let next_out_of_line = decoder.next_out_of_line();
5921 let handles_before = decoder.remaining_handles();
5922 if let Some((inlined, num_bytes, num_handles)) =
5923 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5924 {
5925 let member_inline_size =
5926 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5927 if inlined != (member_inline_size <= 4) {
5928 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5929 }
5930 let inner_offset;
5931 let mut inner_depth = depth.clone();
5932 if inlined {
5933 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5934 inner_offset = next_offset;
5935 } else {
5936 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5937 inner_depth.increment()?;
5938 }
5939 let val_ref = self.ra_tx_success.get_or_insert_with(|| fidl::new_empty!(u32, D));
5940 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
5941 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5942 {
5943 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5944 }
5945 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5946 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5947 }
5948 }
5949
5950 next_offset += envelope_size;
5951 _next_ordinal_to_read += 1;
5952 if next_offset >= end_offset {
5953 return Ok(());
5954 }
5955
5956 while _next_ordinal_to_read < 11 {
5958 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5959 _next_ordinal_to_read += 1;
5960 next_offset += envelope_size;
5961 }
5962
5963 let next_out_of_line = decoder.next_out_of_line();
5964 let handles_before = decoder.remaining_handles();
5965 if let Some((inlined, num_bytes, num_handles)) =
5966 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5967 {
5968 let member_inline_size =
5969 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5970 if inlined != (member_inline_size <= 4) {
5971 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5972 }
5973 let inner_offset;
5974 let mut inner_depth = depth.clone();
5975 if inlined {
5976 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5977 inner_offset = next_offset;
5978 } else {
5979 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5980 inner_depth.increment()?;
5981 }
5982 let val_ref = self.ra_tx_failure.get_or_insert_with(|| fidl::new_empty!(u32, D));
5983 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
5984 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5985 {
5986 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5987 }
5988 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5989 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5990 }
5991 }
5992
5993 next_offset += envelope_size;
5994 _next_ordinal_to_read += 1;
5995 if next_offset >= end_offset {
5996 return Ok(());
5997 }
5998
5999 while _next_ordinal_to_read < 12 {
6001 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6002 _next_ordinal_to_read += 1;
6003 next_offset += envelope_size;
6004 }
6005
6006 let next_out_of_line = decoder.next_out_of_line();
6007 let handles_before = decoder.remaining_handles();
6008 if let Some((inlined, num_bytes, num_handles)) =
6009 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6010 {
6011 let member_inline_size =
6012 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6013 if inlined != (member_inline_size <= 4) {
6014 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6015 }
6016 let inner_offset;
6017 let mut inner_depth = depth.clone();
6018 if inlined {
6019 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6020 inner_offset = next_offset;
6021 } else {
6022 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6023 inner_depth.increment()?;
6024 }
6025 let val_ref = self.rs_rx.get_or_insert_with(|| fidl::new_empty!(u32, D));
6026 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6027 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6028 {
6029 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6030 }
6031 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6032 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6033 }
6034 }
6035
6036 next_offset += envelope_size;
6037 _next_ordinal_to_read += 1;
6038 if next_offset >= end_offset {
6039 return Ok(());
6040 }
6041
6042 while _next_ordinal_to_read < 13 {
6044 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6045 _next_ordinal_to_read += 1;
6046 next_offset += envelope_size;
6047 }
6048
6049 let next_out_of_line = decoder.next_out_of_line();
6050 let handles_before = decoder.remaining_handles();
6051 if let Some((inlined, num_bytes, num_handles)) =
6052 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6053 {
6054 let member_inline_size =
6055 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6056 if inlined != (member_inline_size <= 4) {
6057 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6058 }
6059 let inner_offset;
6060 let mut inner_depth = depth.clone();
6061 if inlined {
6062 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6063 inner_offset = next_offset;
6064 } else {
6065 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6066 inner_depth.increment()?;
6067 }
6068 let val_ref = self.rs_tx_success.get_or_insert_with(|| fidl::new_empty!(u32, D));
6069 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6070 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6071 {
6072 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6073 }
6074 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6075 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6076 }
6077 }
6078
6079 next_offset += envelope_size;
6080 _next_ordinal_to_read += 1;
6081 if next_offset >= end_offset {
6082 return Ok(());
6083 }
6084
6085 while _next_ordinal_to_read < 14 {
6087 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6088 _next_ordinal_to_read += 1;
6089 next_offset += envelope_size;
6090 }
6091
6092 let next_out_of_line = decoder.next_out_of_line();
6093 let handles_before = decoder.remaining_handles();
6094 if let Some((inlined, num_bytes, num_handles)) =
6095 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6096 {
6097 let member_inline_size =
6098 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6099 if inlined != (member_inline_size <= 4) {
6100 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6101 }
6102 let inner_offset;
6103 let mut inner_depth = depth.clone();
6104 if inlined {
6105 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6106 inner_offset = next_offset;
6107 } else {
6108 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6109 inner_depth.increment()?;
6110 }
6111 let val_ref = self.rs_tx_failure.get_or_insert_with(|| fidl::new_empty!(u32, D));
6112 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6113 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6114 {
6115 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6116 }
6117 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6118 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6119 }
6120 }
6121
6122 next_offset += envelope_size;
6123 _next_ordinal_to_read += 1;
6124 if next_offset >= end_offset {
6125 return Ok(());
6126 }
6127
6128 while _next_ordinal_to_read < 15 {
6130 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6131 _next_ordinal_to_read += 1;
6132 next_offset += envelope_size;
6133 }
6134
6135 let next_out_of_line = decoder.next_out_of_line();
6136 let handles_before = decoder.remaining_handles();
6137 if let Some((inlined, num_bytes, num_handles)) =
6138 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6139 {
6140 let member_inline_size =
6141 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6142 if inlined != (member_inline_size <= 4) {
6143 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6144 }
6145 let inner_offset;
6146 let mut inner_depth = depth.clone();
6147 if inlined {
6148 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6149 inner_offset = next_offset;
6150 } else {
6151 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6152 inner_depth.increment()?;
6153 }
6154 let val_ref =
6155 self.inbound_internet_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
6156 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6157 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6158 {
6159 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6160 }
6161 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6162 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6163 }
6164 }
6165
6166 next_offset += envelope_size;
6167 _next_ordinal_to_read += 1;
6168 if next_offset >= end_offset {
6169 return Ok(());
6170 }
6171
6172 while _next_ordinal_to_read < 16 {
6174 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6175 _next_ordinal_to_read += 1;
6176 next_offset += envelope_size;
6177 }
6178
6179 let next_out_of_line = decoder.next_out_of_line();
6180 let handles_before = decoder.remaining_handles();
6181 if let Some((inlined, num_bytes, num_handles)) =
6182 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6183 {
6184 let member_inline_size =
6185 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6186 if inlined != (member_inline_size <= 4) {
6187 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6188 }
6189 let inner_offset;
6190 let mut inner_depth = depth.clone();
6191 if inlined {
6192 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6193 inner_offset = next_offset;
6194 } else {
6195 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6196 inner_depth.increment()?;
6197 }
6198 let val_ref =
6199 self.inbound_internet_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
6200 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6201 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6202 {
6203 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6204 }
6205 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6206 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6207 }
6208 }
6209
6210 next_offset += envelope_size;
6211 _next_ordinal_to_read += 1;
6212 if next_offset >= end_offset {
6213 return Ok(());
6214 }
6215
6216 while _next_ordinal_to_read < 17 {
6218 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6219 _next_ordinal_to_read += 1;
6220 next_offset += envelope_size;
6221 }
6222
6223 let next_out_of_line = decoder.next_out_of_line();
6224 let handles_before = decoder.remaining_handles();
6225 if let Some((inlined, num_bytes, num_handles)) =
6226 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6227 {
6228 let member_inline_size =
6229 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6230 if inlined != (member_inline_size <= 4) {
6231 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6232 }
6233 let inner_offset;
6234 let mut inner_depth = depth.clone();
6235 if inlined {
6236 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6237 inner_offset = next_offset;
6238 } else {
6239 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6240 inner_depth.increment()?;
6241 }
6242 let val_ref =
6243 self.outbound_internet_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
6244 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6245 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6246 {
6247 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6248 }
6249 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6250 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6251 }
6252 }
6253
6254 next_offset += envelope_size;
6255 _next_ordinal_to_read += 1;
6256 if next_offset >= end_offset {
6257 return Ok(());
6258 }
6259
6260 while _next_ordinal_to_read < 18 {
6262 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6263 _next_ordinal_to_read += 1;
6264 next_offset += envelope_size;
6265 }
6266
6267 let next_out_of_line = decoder.next_out_of_line();
6268 let handles_before = decoder.remaining_handles();
6269 if let Some((inlined, num_bytes, num_handles)) =
6270 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6271 {
6272 let member_inline_size =
6273 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6274 if inlined != (member_inline_size <= 4) {
6275 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6276 }
6277 let inner_offset;
6278 let mut inner_depth = depth.clone();
6279 if inlined {
6280 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6281 inner_offset = next_offset;
6282 } else {
6283 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6284 inner_depth.increment()?;
6285 }
6286 let val_ref =
6287 self.outbound_internet_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
6288 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6289 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6290 {
6291 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6292 }
6293 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6294 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6295 }
6296 }
6297
6298 next_offset += envelope_size;
6299
6300 while next_offset < end_offset {
6302 _next_ordinal_to_read += 1;
6303 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6304 next_offset += envelope_size;
6305 }
6306
6307 Ok(())
6308 }
6309 }
6310
6311 impl BorderRoutingNat64State {
6312 #[inline(always)]
6313 fn max_ordinal_present(&self) -> u64 {
6314 if let Some(_) = self.translator_state {
6315 return 2;
6316 }
6317 if let Some(_) = self.prefix_manager_state {
6318 return 1;
6319 }
6320 0
6321 }
6322 }
6323
6324 impl fidl::encoding::ValueTypeMarker for BorderRoutingNat64State {
6325 type Borrowed<'a> = &'a Self;
6326 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6327 value
6328 }
6329 }
6330
6331 unsafe impl fidl::encoding::TypeMarker for BorderRoutingNat64State {
6332 type Owned = Self;
6333
6334 #[inline(always)]
6335 fn inline_align(_context: fidl::encoding::Context) -> usize {
6336 8
6337 }
6338
6339 #[inline(always)]
6340 fn inline_size(_context: fidl::encoding::Context) -> usize {
6341 16
6342 }
6343 }
6344
6345 unsafe impl<D: fidl::encoding::ResourceDialect>
6346 fidl::encoding::Encode<BorderRoutingNat64State, D> for &BorderRoutingNat64State
6347 {
6348 unsafe fn encode(
6349 self,
6350 encoder: &mut fidl::encoding::Encoder<'_, D>,
6351 offset: usize,
6352 mut depth: fidl::encoding::Depth,
6353 ) -> fidl::Result<()> {
6354 encoder.debug_check_bounds::<BorderRoutingNat64State>(offset);
6355 let max_ordinal: u64 = self.max_ordinal_present();
6357 encoder.write_num(max_ordinal, offset);
6358 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6359 if max_ordinal == 0 {
6361 return Ok(());
6362 }
6363 depth.increment()?;
6364 let envelope_size = 8;
6365 let bytes_len = max_ordinal as usize * envelope_size;
6366 #[allow(unused_variables)]
6367 let offset = encoder.out_of_line_offset(bytes_len);
6368 let mut _prev_end_offset: usize = 0;
6369 if 1 > max_ordinal {
6370 return Ok(());
6371 }
6372
6373 let cur_offset: usize = (1 - 1) * envelope_size;
6376
6377 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6379
6380 fidl::encoding::encode_in_envelope_optional::<Nat64State, D>(
6385 self.prefix_manager_state
6386 .as_ref()
6387 .map(<Nat64State as fidl::encoding::ValueTypeMarker>::borrow),
6388 encoder,
6389 offset + cur_offset,
6390 depth,
6391 )?;
6392
6393 _prev_end_offset = cur_offset + envelope_size;
6394 if 2 > max_ordinal {
6395 return Ok(());
6396 }
6397
6398 let cur_offset: usize = (2 - 1) * envelope_size;
6401
6402 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6404
6405 fidl::encoding::encode_in_envelope_optional::<Nat64State, D>(
6410 self.translator_state
6411 .as_ref()
6412 .map(<Nat64State as fidl::encoding::ValueTypeMarker>::borrow),
6413 encoder,
6414 offset + cur_offset,
6415 depth,
6416 )?;
6417
6418 _prev_end_offset = cur_offset + envelope_size;
6419
6420 Ok(())
6421 }
6422 }
6423
6424 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6425 for BorderRoutingNat64State
6426 {
6427 #[inline(always)]
6428 fn new_empty() -> Self {
6429 Self::default()
6430 }
6431
6432 unsafe fn decode(
6433 &mut self,
6434 decoder: &mut fidl::encoding::Decoder<'_, D>,
6435 offset: usize,
6436 mut depth: fidl::encoding::Depth,
6437 ) -> fidl::Result<()> {
6438 decoder.debug_check_bounds::<Self>(offset);
6439 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6440 None => return Err(fidl::Error::NotNullable),
6441 Some(len) => len,
6442 };
6443 if len == 0 {
6445 return Ok(());
6446 };
6447 depth.increment()?;
6448 let envelope_size = 8;
6449 let bytes_len = len * envelope_size;
6450 let offset = decoder.out_of_line_offset(bytes_len)?;
6451 let mut _next_ordinal_to_read = 0;
6453 let mut next_offset = offset;
6454 let end_offset = offset + bytes_len;
6455 _next_ordinal_to_read += 1;
6456 if next_offset >= end_offset {
6457 return Ok(());
6458 }
6459
6460 while _next_ordinal_to_read < 1 {
6462 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6463 _next_ordinal_to_read += 1;
6464 next_offset += envelope_size;
6465 }
6466
6467 let next_out_of_line = decoder.next_out_of_line();
6468 let handles_before = decoder.remaining_handles();
6469 if let Some((inlined, num_bytes, num_handles)) =
6470 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6471 {
6472 let member_inline_size =
6473 <Nat64State as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6474 if inlined != (member_inline_size <= 4) {
6475 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6476 }
6477 let inner_offset;
6478 let mut inner_depth = depth.clone();
6479 if inlined {
6480 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6481 inner_offset = next_offset;
6482 } else {
6483 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6484 inner_depth.increment()?;
6485 }
6486 let val_ref = self
6487 .prefix_manager_state
6488 .get_or_insert_with(|| fidl::new_empty!(Nat64State, D));
6489 fidl::decode!(Nat64State, D, val_ref, decoder, inner_offset, inner_depth)?;
6490 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6491 {
6492 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6493 }
6494 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6495 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6496 }
6497 }
6498
6499 next_offset += envelope_size;
6500 _next_ordinal_to_read += 1;
6501 if next_offset >= end_offset {
6502 return Ok(());
6503 }
6504
6505 while _next_ordinal_to_read < 2 {
6507 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6508 _next_ordinal_to_read += 1;
6509 next_offset += envelope_size;
6510 }
6511
6512 let next_out_of_line = decoder.next_out_of_line();
6513 let handles_before = decoder.remaining_handles();
6514 if let Some((inlined, num_bytes, num_handles)) =
6515 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6516 {
6517 let member_inline_size =
6518 <Nat64State as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6519 if inlined != (member_inline_size <= 4) {
6520 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6521 }
6522 let inner_offset;
6523 let mut inner_depth = depth.clone();
6524 if inlined {
6525 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6526 inner_offset = next_offset;
6527 } else {
6528 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6529 inner_depth.increment()?;
6530 }
6531 let val_ref =
6532 self.translator_state.get_or_insert_with(|| fidl::new_empty!(Nat64State, D));
6533 fidl::decode!(Nat64State, D, val_ref, decoder, inner_offset, inner_depth)?;
6534 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6535 {
6536 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6537 }
6538 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6539 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6540 }
6541 }
6542
6543 next_offset += envelope_size;
6544
6545 while next_offset < end_offset {
6547 _next_ordinal_to_read += 1;
6548 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6549 next_offset += envelope_size;
6550 }
6551
6552 Ok(())
6553 }
6554 }
6555
6556 impl BorderRoutingPeer {
6557 #[inline(always)]
6558 fn max_ordinal_present(&self) -> u64 {
6559 if let Some(_) = self.age {
6560 return 2;
6561 }
6562 if let Some(_) = self.thread_rloc {
6563 return 1;
6564 }
6565 0
6566 }
6567 }
6568
6569 impl fidl::encoding::ValueTypeMarker for BorderRoutingPeer {
6570 type Borrowed<'a> = &'a Self;
6571 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6572 value
6573 }
6574 }
6575
6576 unsafe impl fidl::encoding::TypeMarker for BorderRoutingPeer {
6577 type Owned = Self;
6578
6579 #[inline(always)]
6580 fn inline_align(_context: fidl::encoding::Context) -> usize {
6581 8
6582 }
6583
6584 #[inline(always)]
6585 fn inline_size(_context: fidl::encoding::Context) -> usize {
6586 16
6587 }
6588 }
6589
6590 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRoutingPeer, D>
6591 for &BorderRoutingPeer
6592 {
6593 unsafe fn encode(
6594 self,
6595 encoder: &mut fidl::encoding::Encoder<'_, D>,
6596 offset: usize,
6597 mut depth: fidl::encoding::Depth,
6598 ) -> fidl::Result<()> {
6599 encoder.debug_check_bounds::<BorderRoutingPeer>(offset);
6600 let max_ordinal: u64 = self.max_ordinal_present();
6602 encoder.write_num(max_ordinal, offset);
6603 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6604 if max_ordinal == 0 {
6606 return Ok(());
6607 }
6608 depth.increment()?;
6609 let envelope_size = 8;
6610 let bytes_len = max_ordinal as usize * envelope_size;
6611 #[allow(unused_variables)]
6612 let offset = encoder.out_of_line_offset(bytes_len);
6613 let mut _prev_end_offset: usize = 0;
6614 if 1 > max_ordinal {
6615 return Ok(());
6616 }
6617
6618 let cur_offset: usize = (1 - 1) * envelope_size;
6621
6622 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6624
6625 fidl::encoding::encode_in_envelope_optional::<u16, D>(
6630 self.thread_rloc.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6631 encoder,
6632 offset + cur_offset,
6633 depth,
6634 )?;
6635
6636 _prev_end_offset = cur_offset + envelope_size;
6637 if 2 > max_ordinal {
6638 return Ok(());
6639 }
6640
6641 let cur_offset: usize = (2 - 1) * envelope_size;
6644
6645 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6647
6648 fidl::encoding::encode_in_envelope_optional::<i64, D>(
6653 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
6654 encoder,
6655 offset + cur_offset,
6656 depth,
6657 )?;
6658
6659 _prev_end_offset = cur_offset + envelope_size;
6660
6661 Ok(())
6662 }
6663 }
6664
6665 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRoutingPeer {
6666 #[inline(always)]
6667 fn new_empty() -> Self {
6668 Self::default()
6669 }
6670
6671 unsafe fn decode(
6672 &mut self,
6673 decoder: &mut fidl::encoding::Decoder<'_, D>,
6674 offset: usize,
6675 mut depth: fidl::encoding::Depth,
6676 ) -> fidl::Result<()> {
6677 decoder.debug_check_bounds::<Self>(offset);
6678 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6679 None => return Err(fidl::Error::NotNullable),
6680 Some(len) => len,
6681 };
6682 if len == 0 {
6684 return Ok(());
6685 };
6686 depth.increment()?;
6687 let envelope_size = 8;
6688 let bytes_len = len * envelope_size;
6689 let offset = decoder.out_of_line_offset(bytes_len)?;
6690 let mut _next_ordinal_to_read = 0;
6692 let mut next_offset = offset;
6693 let end_offset = offset + bytes_len;
6694 _next_ordinal_to_read += 1;
6695 if next_offset >= end_offset {
6696 return Ok(());
6697 }
6698
6699 while _next_ordinal_to_read < 1 {
6701 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6702 _next_ordinal_to_read += 1;
6703 next_offset += envelope_size;
6704 }
6705
6706 let next_out_of_line = decoder.next_out_of_line();
6707 let handles_before = decoder.remaining_handles();
6708 if let Some((inlined, num_bytes, num_handles)) =
6709 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6710 {
6711 let member_inline_size =
6712 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6713 if inlined != (member_inline_size <= 4) {
6714 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6715 }
6716 let inner_offset;
6717 let mut inner_depth = depth.clone();
6718 if inlined {
6719 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6720 inner_offset = next_offset;
6721 } else {
6722 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6723 inner_depth.increment()?;
6724 }
6725 let val_ref = self.thread_rloc.get_or_insert_with(|| fidl::new_empty!(u16, D));
6726 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6727 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6728 {
6729 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6730 }
6731 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6732 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6733 }
6734 }
6735
6736 next_offset += envelope_size;
6737 _next_ordinal_to_read += 1;
6738 if next_offset >= end_offset {
6739 return Ok(());
6740 }
6741
6742 while _next_ordinal_to_read < 2 {
6744 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6745 _next_ordinal_to_read += 1;
6746 next_offset += envelope_size;
6747 }
6748
6749 let next_out_of_line = decoder.next_out_of_line();
6750 let handles_before = decoder.remaining_handles();
6751 if let Some((inlined, num_bytes, num_handles)) =
6752 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6753 {
6754 let member_inline_size =
6755 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6756 if inlined != (member_inline_size <= 4) {
6757 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6758 }
6759 let inner_offset;
6760 let mut inner_depth = depth.clone();
6761 if inlined {
6762 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6763 inner_offset = next_offset;
6764 } else {
6765 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6766 inner_depth.increment()?;
6767 }
6768 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
6769 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
6770 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6771 {
6772 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6773 }
6774 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6775 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6776 }
6777 }
6778
6779 next_offset += envelope_size;
6780
6781 while next_offset < end_offset {
6783 _next_ordinal_to_read += 1;
6784 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6785 next_offset += envelope_size;
6786 }
6787
6788 Ok(())
6789 }
6790 }
6791
6792 impl BorderRoutingRouter {
6793 #[inline(always)]
6794 fn max_ordinal_present(&self) -> u64 {
6795 if let Some(_) = self.is_peer_br {
6796 return 9;
6797 }
6798 if let Some(_) = self.is_reachable {
6799 return 8;
6800 }
6801 if let Some(_) = self.is_local_device {
6802 return 7;
6803 }
6804 if let Some(_) = self.snac_router_flag {
6805 return 6;
6806 }
6807 if let Some(_) = self.other_config_flag {
6808 return 5;
6809 }
6810 if let Some(_) = self.managed_address_config_flag {
6811 return 4;
6812 }
6813 if let Some(_) = self.age {
6814 return 3;
6815 }
6816 if let Some(_) = self.duration_since_last_update {
6817 return 2;
6818 }
6819 if let Some(_) = self.address {
6820 return 1;
6821 }
6822 0
6823 }
6824 }
6825
6826 impl fidl::encoding::ValueTypeMarker for BorderRoutingRouter {
6827 type Borrowed<'a> = &'a Self;
6828 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6829 value
6830 }
6831 }
6832
6833 unsafe impl fidl::encoding::TypeMarker for BorderRoutingRouter {
6834 type Owned = Self;
6835
6836 #[inline(always)]
6837 fn inline_align(_context: fidl::encoding::Context) -> usize {
6838 8
6839 }
6840
6841 #[inline(always)]
6842 fn inline_size(_context: fidl::encoding::Context) -> usize {
6843 16
6844 }
6845 }
6846
6847 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRoutingRouter, D>
6848 for &BorderRoutingRouter
6849 {
6850 unsafe fn encode(
6851 self,
6852 encoder: &mut fidl::encoding::Encoder<'_, D>,
6853 offset: usize,
6854 mut depth: fidl::encoding::Depth,
6855 ) -> fidl::Result<()> {
6856 encoder.debug_check_bounds::<BorderRoutingRouter>(offset);
6857 let max_ordinal: u64 = self.max_ordinal_present();
6859 encoder.write_num(max_ordinal, offset);
6860 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6861 if max_ordinal == 0 {
6863 return Ok(());
6864 }
6865 depth.increment()?;
6866 let envelope_size = 8;
6867 let bytes_len = max_ordinal as usize * envelope_size;
6868 #[allow(unused_variables)]
6869 let offset = encoder.out_of_line_offset(bytes_len);
6870 let mut _prev_end_offset: usize = 0;
6871 if 1 > max_ordinal {
6872 return Ok(());
6873 }
6874
6875 let cur_offset: usize = (1 - 1) * envelope_size;
6878
6879 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6881
6882 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
6887 self.address.as_ref().map(
6888 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
6889 ),
6890 encoder,
6891 offset + cur_offset,
6892 depth,
6893 )?;
6894
6895 _prev_end_offset = cur_offset + envelope_size;
6896 if 2 > max_ordinal {
6897 return Ok(());
6898 }
6899
6900 let cur_offset: usize = (2 - 1) * envelope_size;
6903
6904 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6906
6907 fidl::encoding::encode_in_envelope_optional::<i64, D>(
6912 self.duration_since_last_update
6913 .as_ref()
6914 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
6915 encoder,
6916 offset + cur_offset,
6917 depth,
6918 )?;
6919
6920 _prev_end_offset = cur_offset + envelope_size;
6921 if 3 > max_ordinal {
6922 return Ok(());
6923 }
6924
6925 let cur_offset: usize = (3 - 1) * envelope_size;
6928
6929 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6931
6932 fidl::encoding::encode_in_envelope_optional::<i64, D>(
6937 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
6938 encoder,
6939 offset + cur_offset,
6940 depth,
6941 )?;
6942
6943 _prev_end_offset = cur_offset + envelope_size;
6944 if 4 > max_ordinal {
6945 return Ok(());
6946 }
6947
6948 let cur_offset: usize = (4 - 1) * envelope_size;
6951
6952 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6954
6955 fidl::encoding::encode_in_envelope_optional::<bool, D>(
6960 self.managed_address_config_flag
6961 .as_ref()
6962 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6963 encoder,
6964 offset + cur_offset,
6965 depth,
6966 )?;
6967
6968 _prev_end_offset = cur_offset + envelope_size;
6969 if 5 > max_ordinal {
6970 return Ok(());
6971 }
6972
6973 let cur_offset: usize = (5 - 1) * envelope_size;
6976
6977 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6979
6980 fidl::encoding::encode_in_envelope_optional::<bool, D>(
6985 self.other_config_flag
6986 .as_ref()
6987 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6988 encoder,
6989 offset + cur_offset,
6990 depth,
6991 )?;
6992
6993 _prev_end_offset = cur_offset + envelope_size;
6994 if 6 > max_ordinal {
6995 return Ok(());
6996 }
6997
6998 let cur_offset: usize = (6 - 1) * envelope_size;
7001
7002 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7004
7005 fidl::encoding::encode_in_envelope_optional::<bool, D>(
7010 self.snac_router_flag
7011 .as_ref()
7012 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7013 encoder,
7014 offset + cur_offset,
7015 depth,
7016 )?;
7017
7018 _prev_end_offset = cur_offset + envelope_size;
7019 if 7 > max_ordinal {
7020 return Ok(());
7021 }
7022
7023 let cur_offset: usize = (7 - 1) * envelope_size;
7026
7027 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7029
7030 fidl::encoding::encode_in_envelope_optional::<bool, D>(
7035 self.is_local_device
7036 .as_ref()
7037 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7038 encoder,
7039 offset + cur_offset,
7040 depth,
7041 )?;
7042
7043 _prev_end_offset = cur_offset + envelope_size;
7044 if 8 > max_ordinal {
7045 return Ok(());
7046 }
7047
7048 let cur_offset: usize = (8 - 1) * envelope_size;
7051
7052 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7054
7055 fidl::encoding::encode_in_envelope_optional::<bool, D>(
7060 self.is_reachable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7061 encoder,
7062 offset + cur_offset,
7063 depth,
7064 )?;
7065
7066 _prev_end_offset = cur_offset + envelope_size;
7067 if 9 > max_ordinal {
7068 return Ok(());
7069 }
7070
7071 let cur_offset: usize = (9 - 1) * envelope_size;
7074
7075 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7077
7078 fidl::encoding::encode_in_envelope_optional::<bool, D>(
7083 self.is_peer_br.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7084 encoder,
7085 offset + cur_offset,
7086 depth,
7087 )?;
7088
7089 _prev_end_offset = cur_offset + envelope_size;
7090
7091 Ok(())
7092 }
7093 }
7094
7095 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRoutingRouter {
7096 #[inline(always)]
7097 fn new_empty() -> Self {
7098 Self::default()
7099 }
7100
7101 unsafe fn decode(
7102 &mut self,
7103 decoder: &mut fidl::encoding::Decoder<'_, D>,
7104 offset: usize,
7105 mut depth: fidl::encoding::Depth,
7106 ) -> fidl::Result<()> {
7107 decoder.debug_check_bounds::<Self>(offset);
7108 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7109 None => return Err(fidl::Error::NotNullable),
7110 Some(len) => len,
7111 };
7112 if len == 0 {
7114 return Ok(());
7115 };
7116 depth.increment()?;
7117 let envelope_size = 8;
7118 let bytes_len = len * envelope_size;
7119 let offset = decoder.out_of_line_offset(bytes_len)?;
7120 let mut _next_ordinal_to_read = 0;
7122 let mut next_offset = offset;
7123 let end_offset = offset + bytes_len;
7124 _next_ordinal_to_read += 1;
7125 if next_offset >= end_offset {
7126 return Ok(());
7127 }
7128
7129 while _next_ordinal_to_read < 1 {
7131 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7132 _next_ordinal_to_read += 1;
7133 next_offset += envelope_size;
7134 }
7135
7136 let next_out_of_line = decoder.next_out_of_line();
7137 let handles_before = decoder.remaining_handles();
7138 if let Some((inlined, num_bytes, num_handles)) =
7139 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7140 {
7141 let member_inline_size =
7142 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
7143 decoder.context,
7144 );
7145 if inlined != (member_inline_size <= 4) {
7146 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7147 }
7148 let inner_offset;
7149 let mut inner_depth = depth.clone();
7150 if inlined {
7151 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7152 inner_offset = next_offset;
7153 } else {
7154 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7155 inner_depth.increment()?;
7156 }
7157 let val_ref = self
7158 .address
7159 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
7160 fidl::decode!(
7161 fidl::encoding::BoundedString<64>,
7162 D,
7163 val_ref,
7164 decoder,
7165 inner_offset,
7166 inner_depth
7167 )?;
7168 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7169 {
7170 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7171 }
7172 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7173 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7174 }
7175 }
7176
7177 next_offset += envelope_size;
7178 _next_ordinal_to_read += 1;
7179 if next_offset >= end_offset {
7180 return Ok(());
7181 }
7182
7183 while _next_ordinal_to_read < 2 {
7185 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7186 _next_ordinal_to_read += 1;
7187 next_offset += envelope_size;
7188 }
7189
7190 let next_out_of_line = decoder.next_out_of_line();
7191 let handles_before = decoder.remaining_handles();
7192 if let Some((inlined, num_bytes, num_handles)) =
7193 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7194 {
7195 let member_inline_size =
7196 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7197 if inlined != (member_inline_size <= 4) {
7198 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7199 }
7200 let inner_offset;
7201 let mut inner_depth = depth.clone();
7202 if inlined {
7203 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7204 inner_offset = next_offset;
7205 } else {
7206 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7207 inner_depth.increment()?;
7208 }
7209 let val_ref =
7210 self.duration_since_last_update.get_or_insert_with(|| fidl::new_empty!(i64, D));
7211 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
7212 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7213 {
7214 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7215 }
7216 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7217 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7218 }
7219 }
7220
7221 next_offset += envelope_size;
7222 _next_ordinal_to_read += 1;
7223 if next_offset >= end_offset {
7224 return Ok(());
7225 }
7226
7227 while _next_ordinal_to_read < 3 {
7229 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7230 _next_ordinal_to_read += 1;
7231 next_offset += envelope_size;
7232 }
7233
7234 let next_out_of_line = decoder.next_out_of_line();
7235 let handles_before = decoder.remaining_handles();
7236 if let Some((inlined, num_bytes, num_handles)) =
7237 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7238 {
7239 let member_inline_size =
7240 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7241 if inlined != (member_inline_size <= 4) {
7242 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7243 }
7244 let inner_offset;
7245 let mut inner_depth = depth.clone();
7246 if inlined {
7247 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7248 inner_offset = next_offset;
7249 } else {
7250 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7251 inner_depth.increment()?;
7252 }
7253 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
7254 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
7255 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7256 {
7257 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7258 }
7259 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7260 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7261 }
7262 }
7263
7264 next_offset += envelope_size;
7265 _next_ordinal_to_read += 1;
7266 if next_offset >= end_offset {
7267 return Ok(());
7268 }
7269
7270 while _next_ordinal_to_read < 4 {
7272 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7273 _next_ordinal_to_read += 1;
7274 next_offset += envelope_size;
7275 }
7276
7277 let next_out_of_line = decoder.next_out_of_line();
7278 let handles_before = decoder.remaining_handles();
7279 if let Some((inlined, num_bytes, num_handles)) =
7280 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7281 {
7282 let member_inline_size =
7283 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7284 if inlined != (member_inline_size <= 4) {
7285 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7286 }
7287 let inner_offset;
7288 let mut inner_depth = depth.clone();
7289 if inlined {
7290 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7291 inner_offset = next_offset;
7292 } else {
7293 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7294 inner_depth.increment()?;
7295 }
7296 let val_ref = self
7297 .managed_address_config_flag
7298 .get_or_insert_with(|| fidl::new_empty!(bool, D));
7299 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7300 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7301 {
7302 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7303 }
7304 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7305 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7306 }
7307 }
7308
7309 next_offset += envelope_size;
7310 _next_ordinal_to_read += 1;
7311 if next_offset >= end_offset {
7312 return Ok(());
7313 }
7314
7315 while _next_ordinal_to_read < 5 {
7317 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7318 _next_ordinal_to_read += 1;
7319 next_offset += envelope_size;
7320 }
7321
7322 let next_out_of_line = decoder.next_out_of_line();
7323 let handles_before = decoder.remaining_handles();
7324 if let Some((inlined, num_bytes, num_handles)) =
7325 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7326 {
7327 let member_inline_size =
7328 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7329 if inlined != (member_inline_size <= 4) {
7330 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7331 }
7332 let inner_offset;
7333 let mut inner_depth = depth.clone();
7334 if inlined {
7335 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7336 inner_offset = next_offset;
7337 } else {
7338 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7339 inner_depth.increment()?;
7340 }
7341 let val_ref =
7342 self.other_config_flag.get_or_insert_with(|| fidl::new_empty!(bool, D));
7343 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7344 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7345 {
7346 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7347 }
7348 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7349 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7350 }
7351 }
7352
7353 next_offset += envelope_size;
7354 _next_ordinal_to_read += 1;
7355 if next_offset >= end_offset {
7356 return Ok(());
7357 }
7358
7359 while _next_ordinal_to_read < 6 {
7361 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7362 _next_ordinal_to_read += 1;
7363 next_offset += envelope_size;
7364 }
7365
7366 let next_out_of_line = decoder.next_out_of_line();
7367 let handles_before = decoder.remaining_handles();
7368 if let Some((inlined, num_bytes, num_handles)) =
7369 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7370 {
7371 let member_inline_size =
7372 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7373 if inlined != (member_inline_size <= 4) {
7374 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7375 }
7376 let inner_offset;
7377 let mut inner_depth = depth.clone();
7378 if inlined {
7379 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7380 inner_offset = next_offset;
7381 } else {
7382 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7383 inner_depth.increment()?;
7384 }
7385 let val_ref =
7386 self.snac_router_flag.get_or_insert_with(|| fidl::new_empty!(bool, D));
7387 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7388 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7389 {
7390 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7391 }
7392 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7393 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7394 }
7395 }
7396
7397 next_offset += envelope_size;
7398 _next_ordinal_to_read += 1;
7399 if next_offset >= end_offset {
7400 return Ok(());
7401 }
7402
7403 while _next_ordinal_to_read < 7 {
7405 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7406 _next_ordinal_to_read += 1;
7407 next_offset += envelope_size;
7408 }
7409
7410 let next_out_of_line = decoder.next_out_of_line();
7411 let handles_before = decoder.remaining_handles();
7412 if let Some((inlined, num_bytes, num_handles)) =
7413 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7414 {
7415 let member_inline_size =
7416 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7417 if inlined != (member_inline_size <= 4) {
7418 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7419 }
7420 let inner_offset;
7421 let mut inner_depth = depth.clone();
7422 if inlined {
7423 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7424 inner_offset = next_offset;
7425 } else {
7426 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7427 inner_depth.increment()?;
7428 }
7429 let val_ref = self.is_local_device.get_or_insert_with(|| fidl::new_empty!(bool, D));
7430 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7431 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7432 {
7433 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7434 }
7435 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7436 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7437 }
7438 }
7439
7440 next_offset += envelope_size;
7441 _next_ordinal_to_read += 1;
7442 if next_offset >= end_offset {
7443 return Ok(());
7444 }
7445
7446 while _next_ordinal_to_read < 8 {
7448 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7449 _next_ordinal_to_read += 1;
7450 next_offset += envelope_size;
7451 }
7452
7453 let next_out_of_line = decoder.next_out_of_line();
7454 let handles_before = decoder.remaining_handles();
7455 if let Some((inlined, num_bytes, num_handles)) =
7456 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7457 {
7458 let member_inline_size =
7459 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7460 if inlined != (member_inline_size <= 4) {
7461 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7462 }
7463 let inner_offset;
7464 let mut inner_depth = depth.clone();
7465 if inlined {
7466 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7467 inner_offset = next_offset;
7468 } else {
7469 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7470 inner_depth.increment()?;
7471 }
7472 let val_ref = self.is_reachable.get_or_insert_with(|| fidl::new_empty!(bool, D));
7473 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7474 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7475 {
7476 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7477 }
7478 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7479 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7480 }
7481 }
7482
7483 next_offset += envelope_size;
7484 _next_ordinal_to_read += 1;
7485 if next_offset >= end_offset {
7486 return Ok(());
7487 }
7488
7489 while _next_ordinal_to_read < 9 {
7491 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7492 _next_ordinal_to_read += 1;
7493 next_offset += envelope_size;
7494 }
7495
7496 let next_out_of_line = decoder.next_out_of_line();
7497 let handles_before = decoder.remaining_handles();
7498 if let Some((inlined, num_bytes, num_handles)) =
7499 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7500 {
7501 let member_inline_size =
7502 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7503 if inlined != (member_inline_size <= 4) {
7504 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7505 }
7506 let inner_offset;
7507 let mut inner_depth = depth.clone();
7508 if inlined {
7509 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7510 inner_offset = next_offset;
7511 } else {
7512 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7513 inner_depth.increment()?;
7514 }
7515 let val_ref = self.is_peer_br.get_or_insert_with(|| fidl::new_empty!(bool, D));
7516 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7517 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7518 {
7519 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7520 }
7521 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7522 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7523 }
7524 }
7525
7526 next_offset += envelope_size;
7527
7528 while next_offset < end_offset {
7530 _next_ordinal_to_read += 1;
7531 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7532 next_offset += envelope_size;
7533 }
7534
7535 Ok(())
7536 }
7537 }
7538
7539 impl ChannelInfo {
7540 #[inline(always)]
7541 fn max_ordinal_present(&self) -> u64 {
7542 if let Some(_) = self.masked_by_regulatory_domain {
7543 return 6;
7544 }
7545 if let Some(_) = self.spectrum_bandwidth_hz {
7546 return 5;
7547 }
7548 if let Some(_) = self.spectrum_center_frequency_hz {
7549 return 4;
7550 }
7551 if let Some(_) = self.max_transmit_power_dbm {
7552 return 3;
7553 }
7554 if let Some(_) = self.id {
7555 return 2;
7556 }
7557 if let Some(_) = self.index {
7558 return 1;
7559 }
7560 0
7561 }
7562 }
7563
7564 impl fidl::encoding::ValueTypeMarker for ChannelInfo {
7565 type Borrowed<'a> = &'a Self;
7566 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7567 value
7568 }
7569 }
7570
7571 unsafe impl fidl::encoding::TypeMarker for ChannelInfo {
7572 type Owned = Self;
7573
7574 #[inline(always)]
7575 fn inline_align(_context: fidl::encoding::Context) -> usize {
7576 8
7577 }
7578
7579 #[inline(always)]
7580 fn inline_size(_context: fidl::encoding::Context) -> usize {
7581 16
7582 }
7583 }
7584
7585 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChannelInfo, D>
7586 for &ChannelInfo
7587 {
7588 unsafe fn encode(
7589 self,
7590 encoder: &mut fidl::encoding::Encoder<'_, D>,
7591 offset: usize,
7592 mut depth: fidl::encoding::Depth,
7593 ) -> fidl::Result<()> {
7594 encoder.debug_check_bounds::<ChannelInfo>(offset);
7595 let max_ordinal: u64 = self.max_ordinal_present();
7597 encoder.write_num(max_ordinal, offset);
7598 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7599 if max_ordinal == 0 {
7601 return Ok(());
7602 }
7603 depth.increment()?;
7604 let envelope_size = 8;
7605 let bytes_len = max_ordinal as usize * envelope_size;
7606 #[allow(unused_variables)]
7607 let offset = encoder.out_of_line_offset(bytes_len);
7608 let mut _prev_end_offset: usize = 0;
7609 if 1 > max_ordinal {
7610 return Ok(());
7611 }
7612
7613 let cur_offset: usize = (1 - 1) * envelope_size;
7616
7617 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7619
7620 fidl::encoding::encode_in_envelope_optional::<u16, D>(
7625 self.index.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
7626 encoder,
7627 offset + cur_offset,
7628 depth,
7629 )?;
7630
7631 _prev_end_offset = cur_offset + envelope_size;
7632 if 2 > max_ordinal {
7633 return Ok(());
7634 }
7635
7636 let cur_offset: usize = (2 - 1) * envelope_size;
7639
7640 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7642
7643 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<16>, D>(
7648 self.id.as_ref().map(
7649 <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow,
7650 ),
7651 encoder,
7652 offset + cur_offset,
7653 depth,
7654 )?;
7655
7656 _prev_end_offset = cur_offset + envelope_size;
7657 if 3 > max_ordinal {
7658 return Ok(());
7659 }
7660
7661 let cur_offset: usize = (3 - 1) * envelope_size;
7664
7665 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7667
7668 fidl::encoding::encode_in_envelope_optional::<i8, D>(
7673 self.max_transmit_power_dbm
7674 .as_ref()
7675 .map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
7676 encoder,
7677 offset + cur_offset,
7678 depth,
7679 )?;
7680
7681 _prev_end_offset = cur_offset + envelope_size;
7682 if 4 > max_ordinal {
7683 return Ok(());
7684 }
7685
7686 let cur_offset: usize = (4 - 1) * envelope_size;
7689
7690 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7692
7693 fidl::encoding::encode_in_envelope_optional::<u64, D>(
7698 self.spectrum_center_frequency_hz
7699 .as_ref()
7700 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
7701 encoder,
7702 offset + cur_offset,
7703 depth,
7704 )?;
7705
7706 _prev_end_offset = cur_offset + envelope_size;
7707 if 5 > max_ordinal {
7708 return Ok(());
7709 }
7710
7711 let cur_offset: usize = (5 - 1) * envelope_size;
7714
7715 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7717
7718 fidl::encoding::encode_in_envelope_optional::<u64, D>(
7723 self.spectrum_bandwidth_hz
7724 .as_ref()
7725 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
7726 encoder,
7727 offset + cur_offset,
7728 depth,
7729 )?;
7730
7731 _prev_end_offset = cur_offset + envelope_size;
7732 if 6 > max_ordinal {
7733 return Ok(());
7734 }
7735
7736 let cur_offset: usize = (6 - 1) * envelope_size;
7739
7740 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7742
7743 fidl::encoding::encode_in_envelope_optional::<bool, D>(
7748 self.masked_by_regulatory_domain
7749 .as_ref()
7750 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7751 encoder,
7752 offset + cur_offset,
7753 depth,
7754 )?;
7755
7756 _prev_end_offset = cur_offset + envelope_size;
7757
7758 Ok(())
7759 }
7760 }
7761
7762 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChannelInfo {
7763 #[inline(always)]
7764 fn new_empty() -> Self {
7765 Self::default()
7766 }
7767
7768 unsafe fn decode(
7769 &mut self,
7770 decoder: &mut fidl::encoding::Decoder<'_, D>,
7771 offset: usize,
7772 mut depth: fidl::encoding::Depth,
7773 ) -> fidl::Result<()> {
7774 decoder.debug_check_bounds::<Self>(offset);
7775 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7776 None => return Err(fidl::Error::NotNullable),
7777 Some(len) => len,
7778 };
7779 if len == 0 {
7781 return Ok(());
7782 };
7783 depth.increment()?;
7784 let envelope_size = 8;
7785 let bytes_len = len * envelope_size;
7786 let offset = decoder.out_of_line_offset(bytes_len)?;
7787 let mut _next_ordinal_to_read = 0;
7789 let mut next_offset = offset;
7790 let end_offset = offset + bytes_len;
7791 _next_ordinal_to_read += 1;
7792 if next_offset >= end_offset {
7793 return Ok(());
7794 }
7795
7796 while _next_ordinal_to_read < 1 {
7798 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7799 _next_ordinal_to_read += 1;
7800 next_offset += envelope_size;
7801 }
7802
7803 let next_out_of_line = decoder.next_out_of_line();
7804 let handles_before = decoder.remaining_handles();
7805 if let Some((inlined, num_bytes, num_handles)) =
7806 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7807 {
7808 let member_inline_size =
7809 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7810 if inlined != (member_inline_size <= 4) {
7811 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7812 }
7813 let inner_offset;
7814 let mut inner_depth = depth.clone();
7815 if inlined {
7816 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7817 inner_offset = next_offset;
7818 } else {
7819 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7820 inner_depth.increment()?;
7821 }
7822 let val_ref = self.index.get_or_insert_with(|| fidl::new_empty!(u16, D));
7823 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7824 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7825 {
7826 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7827 }
7828 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7829 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7830 }
7831 }
7832
7833 next_offset += envelope_size;
7834 _next_ordinal_to_read += 1;
7835 if next_offset >= end_offset {
7836 return Ok(());
7837 }
7838
7839 while _next_ordinal_to_read < 2 {
7841 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7842 _next_ordinal_to_read += 1;
7843 next_offset += envelope_size;
7844 }
7845
7846 let next_out_of_line = decoder.next_out_of_line();
7847 let handles_before = decoder.remaining_handles();
7848 if let Some((inlined, num_bytes, num_handles)) =
7849 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7850 {
7851 let member_inline_size =
7852 <fidl::encoding::BoundedString<16> as fidl::encoding::TypeMarker>::inline_size(
7853 decoder.context,
7854 );
7855 if inlined != (member_inline_size <= 4) {
7856 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7857 }
7858 let inner_offset;
7859 let mut inner_depth = depth.clone();
7860 if inlined {
7861 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7862 inner_offset = next_offset;
7863 } else {
7864 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7865 inner_depth.increment()?;
7866 }
7867 let val_ref = self
7868 .id
7869 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<16>, D));
7870 fidl::decode!(
7871 fidl::encoding::BoundedString<16>,
7872 D,
7873 val_ref,
7874 decoder,
7875 inner_offset,
7876 inner_depth
7877 )?;
7878 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7879 {
7880 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7881 }
7882 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7883 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7884 }
7885 }
7886
7887 next_offset += envelope_size;
7888 _next_ordinal_to_read += 1;
7889 if next_offset >= end_offset {
7890 return Ok(());
7891 }
7892
7893 while _next_ordinal_to_read < 3 {
7895 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7896 _next_ordinal_to_read += 1;
7897 next_offset += envelope_size;
7898 }
7899
7900 let next_out_of_line = decoder.next_out_of_line();
7901 let handles_before = decoder.remaining_handles();
7902 if let Some((inlined, num_bytes, num_handles)) =
7903 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7904 {
7905 let member_inline_size =
7906 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7907 if inlined != (member_inline_size <= 4) {
7908 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7909 }
7910 let inner_offset;
7911 let mut inner_depth = depth.clone();
7912 if inlined {
7913 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7914 inner_offset = next_offset;
7915 } else {
7916 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7917 inner_depth.increment()?;
7918 }
7919 let val_ref =
7920 self.max_transmit_power_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
7921 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
7922 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7923 {
7924 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7925 }
7926 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7927 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7928 }
7929 }
7930
7931 next_offset += envelope_size;
7932 _next_ordinal_to_read += 1;
7933 if next_offset >= end_offset {
7934 return Ok(());
7935 }
7936
7937 while _next_ordinal_to_read < 4 {
7939 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7940 _next_ordinal_to_read += 1;
7941 next_offset += envelope_size;
7942 }
7943
7944 let next_out_of_line = decoder.next_out_of_line();
7945 let handles_before = decoder.remaining_handles();
7946 if let Some((inlined, num_bytes, num_handles)) =
7947 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7948 {
7949 let member_inline_size =
7950 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7951 if inlined != (member_inline_size <= 4) {
7952 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7953 }
7954 let inner_offset;
7955 let mut inner_depth = depth.clone();
7956 if inlined {
7957 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7958 inner_offset = next_offset;
7959 } else {
7960 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7961 inner_depth.increment()?;
7962 }
7963 let val_ref = self
7964 .spectrum_center_frequency_hz
7965 .get_or_insert_with(|| fidl::new_empty!(u64, D));
7966 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
7967 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7968 {
7969 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7970 }
7971 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7972 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7973 }
7974 }
7975
7976 next_offset += envelope_size;
7977 _next_ordinal_to_read += 1;
7978 if next_offset >= end_offset {
7979 return Ok(());
7980 }
7981
7982 while _next_ordinal_to_read < 5 {
7984 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7985 _next_ordinal_to_read += 1;
7986 next_offset += envelope_size;
7987 }
7988
7989 let next_out_of_line = decoder.next_out_of_line();
7990 let handles_before = decoder.remaining_handles();
7991 if let Some((inlined, num_bytes, num_handles)) =
7992 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7993 {
7994 let member_inline_size =
7995 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7996 if inlined != (member_inline_size <= 4) {
7997 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7998 }
7999 let inner_offset;
8000 let mut inner_depth = depth.clone();
8001 if inlined {
8002 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8003 inner_offset = next_offset;
8004 } else {
8005 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8006 inner_depth.increment()?;
8007 }
8008 let val_ref =
8009 self.spectrum_bandwidth_hz.get_or_insert_with(|| fidl::new_empty!(u64, D));
8010 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
8011 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8012 {
8013 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8014 }
8015 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8016 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8017 }
8018 }
8019
8020 next_offset += envelope_size;
8021 _next_ordinal_to_read += 1;
8022 if next_offset >= end_offset {
8023 return Ok(());
8024 }
8025
8026 while _next_ordinal_to_read < 6 {
8028 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8029 _next_ordinal_to_read += 1;
8030 next_offset += envelope_size;
8031 }
8032
8033 let next_out_of_line = decoder.next_out_of_line();
8034 let handles_before = decoder.remaining_handles();
8035 if let Some((inlined, num_bytes, num_handles)) =
8036 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8037 {
8038 let member_inline_size =
8039 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8040 if inlined != (member_inline_size <= 4) {
8041 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8042 }
8043 let inner_offset;
8044 let mut inner_depth = depth.clone();
8045 if inlined {
8046 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8047 inner_offset = next_offset;
8048 } else {
8049 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8050 inner_depth.increment()?;
8051 }
8052 let val_ref = self
8053 .masked_by_regulatory_domain
8054 .get_or_insert_with(|| fidl::new_empty!(bool, D));
8055 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
8056 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8057 {
8058 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8059 }
8060 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8061 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8062 }
8063 }
8064
8065 next_offset += envelope_size;
8066
8067 while next_offset < end_offset {
8069 _next_ordinal_to_read += 1;
8070 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8071 next_offset += envelope_size;
8072 }
8073
8074 Ok(())
8075 }
8076 }
8077
8078 impl CommissioningDataset {
8079 #[inline(always)]
8080 fn max_ordinal_present(&self) -> u64 {
8081 if let Some(_) = self.has_extra_tlv {
8082 return 9;
8083 }
8084 if let Some(_) = self.is_joiner_udp_port_set {
8085 return 8;
8086 }
8087 if let Some(_) = self.is_steering_data_set {
8088 return 7;
8089 }
8090 if let Some(_) = self.is_session_id_set {
8091 return 6;
8092 }
8093 if let Some(_) = self.is_locator_set {
8094 return 5;
8095 }
8096 if let Some(_) = self.joiner_udp_port {
8097 return 4;
8098 }
8099 if let Some(_) = self.steering_data {
8100 return 3;
8101 }
8102 if let Some(_) = self.session_id {
8103 return 2;
8104 }
8105 if let Some(_) = self.locator {
8106 return 1;
8107 }
8108 0
8109 }
8110 }
8111
8112 impl fidl::encoding::ValueTypeMarker for CommissioningDataset {
8113 type Borrowed<'a> = &'a Self;
8114 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8115 value
8116 }
8117 }
8118
8119 unsafe impl fidl::encoding::TypeMarker for CommissioningDataset {
8120 type Owned = Self;
8121
8122 #[inline(always)]
8123 fn inline_align(_context: fidl::encoding::Context) -> usize {
8124 8
8125 }
8126
8127 #[inline(always)]
8128 fn inline_size(_context: fidl::encoding::Context) -> usize {
8129 16
8130 }
8131 }
8132
8133 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CommissioningDataset, D>
8134 for &CommissioningDataset
8135 {
8136 unsafe fn encode(
8137 self,
8138 encoder: &mut fidl::encoding::Encoder<'_, D>,
8139 offset: usize,
8140 mut depth: fidl::encoding::Depth,
8141 ) -> fidl::Result<()> {
8142 encoder.debug_check_bounds::<CommissioningDataset>(offset);
8143 let max_ordinal: u64 = self.max_ordinal_present();
8145 encoder.write_num(max_ordinal, offset);
8146 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8147 if max_ordinal == 0 {
8149 return Ok(());
8150 }
8151 depth.increment()?;
8152 let envelope_size = 8;
8153 let bytes_len = max_ordinal as usize * envelope_size;
8154 #[allow(unused_variables)]
8155 let offset = encoder.out_of_line_offset(bytes_len);
8156 let mut _prev_end_offset: usize = 0;
8157 if 1 > max_ordinal {
8158 return Ok(());
8159 }
8160
8161 let cur_offset: usize = (1 - 1) * envelope_size;
8164
8165 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8167
8168 fidl::encoding::encode_in_envelope_optional::<u16, D>(
8173 self.locator.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
8174 encoder,
8175 offset + cur_offset,
8176 depth,
8177 )?;
8178
8179 _prev_end_offset = cur_offset + envelope_size;
8180 if 2 > max_ordinal {
8181 return Ok(());
8182 }
8183
8184 let cur_offset: usize = (2 - 1) * envelope_size;
8187
8188 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8190
8191 fidl::encoding::encode_in_envelope_optional::<u16, D>(
8196 self.session_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
8197 encoder,
8198 offset + cur_offset,
8199 depth,
8200 )?;
8201
8202 _prev_end_offset = cur_offset + envelope_size;
8203 if 3 > max_ordinal {
8204 return Ok(());
8205 }
8206
8207 let cur_offset: usize = (3 - 1) * envelope_size;
8210
8211 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8213
8214 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 16>, D>(
8219 self.steering_data.as_ref().map(
8220 <fidl::encoding::Vector<u8, 16> as fidl::encoding::ValueTypeMarker>::borrow,
8221 ),
8222 encoder,
8223 offset + cur_offset,
8224 depth,
8225 )?;
8226
8227 _prev_end_offset = cur_offset + envelope_size;
8228 if 4 > max_ordinal {
8229 return Ok(());
8230 }
8231
8232 let cur_offset: usize = (4 - 1) * envelope_size;
8235
8236 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8238
8239 fidl::encoding::encode_in_envelope_optional::<u16, D>(
8244 self.joiner_udp_port.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
8245 encoder,
8246 offset + cur_offset,
8247 depth,
8248 )?;
8249
8250 _prev_end_offset = cur_offset + envelope_size;
8251 if 5 > max_ordinal {
8252 return Ok(());
8253 }
8254
8255 let cur_offset: usize = (5 - 1) * envelope_size;
8258
8259 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8261
8262 fidl::encoding::encode_in_envelope_optional::<bool, D>(
8267 self.is_locator_set.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
8268 encoder,
8269 offset + cur_offset,
8270 depth,
8271 )?;
8272
8273 _prev_end_offset = cur_offset + envelope_size;
8274 if 6 > max_ordinal {
8275 return Ok(());
8276 }
8277
8278 let cur_offset: usize = (6 - 1) * envelope_size;
8281
8282 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8284
8285 fidl::encoding::encode_in_envelope_optional::<bool, D>(
8290 self.is_session_id_set
8291 .as_ref()
8292 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
8293 encoder,
8294 offset + cur_offset,
8295 depth,
8296 )?;
8297
8298 _prev_end_offset = cur_offset + envelope_size;
8299 if 7 > max_ordinal {
8300 return Ok(());
8301 }
8302
8303 let cur_offset: usize = (7 - 1) * envelope_size;
8306
8307 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8309
8310 fidl::encoding::encode_in_envelope_optional::<bool, D>(
8315 self.is_steering_data_set
8316 .as_ref()
8317 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
8318 encoder,
8319 offset + cur_offset,
8320 depth,
8321 )?;
8322
8323 _prev_end_offset = cur_offset + envelope_size;
8324 if 8 > max_ordinal {
8325 return Ok(());
8326 }
8327
8328 let cur_offset: usize = (8 - 1) * envelope_size;
8331
8332 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8334
8335 fidl::encoding::encode_in_envelope_optional::<bool, D>(
8340 self.is_joiner_udp_port_set
8341 .as_ref()
8342 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
8343 encoder,
8344 offset + cur_offset,
8345 depth,
8346 )?;
8347
8348 _prev_end_offset = cur_offset + envelope_size;
8349 if 9 > max_ordinal {
8350 return Ok(());
8351 }
8352
8353 let cur_offset: usize = (9 - 1) * envelope_size;
8356
8357 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8359
8360 fidl::encoding::encode_in_envelope_optional::<bool, D>(
8365 self.has_extra_tlv.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
8366 encoder,
8367 offset + cur_offset,
8368 depth,
8369 )?;
8370
8371 _prev_end_offset = cur_offset + envelope_size;
8372
8373 Ok(())
8374 }
8375 }
8376
8377 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CommissioningDataset {
8378 #[inline(always)]
8379 fn new_empty() -> Self {
8380 Self::default()
8381 }
8382
8383 unsafe fn decode(
8384 &mut self,
8385 decoder: &mut fidl::encoding::Decoder<'_, D>,
8386 offset: usize,
8387 mut depth: fidl::encoding::Depth,
8388 ) -> fidl::Result<()> {
8389 decoder.debug_check_bounds::<Self>(offset);
8390 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8391 None => return Err(fidl::Error::NotNullable),
8392 Some(len) => len,
8393 };
8394 if len == 0 {
8396 return Ok(());
8397 };
8398 depth.increment()?;
8399 let envelope_size = 8;
8400 let bytes_len = len * envelope_size;
8401 let offset = decoder.out_of_line_offset(bytes_len)?;
8402 let mut _next_ordinal_to_read = 0;
8404 let mut next_offset = offset;
8405 let end_offset = offset + bytes_len;
8406 _next_ordinal_to_read += 1;
8407 if next_offset >= end_offset {
8408 return Ok(());
8409 }
8410
8411 while _next_ordinal_to_read < 1 {
8413 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8414 _next_ordinal_to_read += 1;
8415 next_offset += envelope_size;
8416 }
8417
8418 let next_out_of_line = decoder.next_out_of_line();
8419 let handles_before = decoder.remaining_handles();
8420 if let Some((inlined, num_bytes, num_handles)) =
8421 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8422 {
8423 let member_inline_size =
8424 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8425 if inlined != (member_inline_size <= 4) {
8426 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8427 }
8428 let inner_offset;
8429 let mut inner_depth = depth.clone();
8430 if inlined {
8431 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8432 inner_offset = next_offset;
8433 } else {
8434 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8435 inner_depth.increment()?;
8436 }
8437 let val_ref = self.locator.get_or_insert_with(|| fidl::new_empty!(u16, D));
8438 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
8439 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8440 {
8441 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8442 }
8443 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8444 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8445 }
8446 }
8447
8448 next_offset += envelope_size;
8449 _next_ordinal_to_read += 1;
8450 if next_offset >= end_offset {
8451 return Ok(());
8452 }
8453
8454 while _next_ordinal_to_read < 2 {
8456 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8457 _next_ordinal_to_read += 1;
8458 next_offset += envelope_size;
8459 }
8460
8461 let next_out_of_line = decoder.next_out_of_line();
8462 let handles_before = decoder.remaining_handles();
8463 if let Some((inlined, num_bytes, num_handles)) =
8464 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8465 {
8466 let member_inline_size =
8467 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8468 if inlined != (member_inline_size <= 4) {
8469 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8470 }
8471 let inner_offset;
8472 let mut inner_depth = depth.clone();
8473 if inlined {
8474 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8475 inner_offset = next_offset;
8476 } else {
8477 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8478 inner_depth.increment()?;
8479 }
8480 let val_ref = self.session_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
8481 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
8482 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8483 {
8484 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8485 }
8486 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8487 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8488 }
8489 }
8490
8491 next_offset += envelope_size;
8492 _next_ordinal_to_read += 1;
8493 if next_offset >= end_offset {
8494 return Ok(());
8495 }
8496
8497 while _next_ordinal_to_read < 3 {
8499 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8500 _next_ordinal_to_read += 1;
8501 next_offset += envelope_size;
8502 }
8503
8504 let next_out_of_line = decoder.next_out_of_line();
8505 let handles_before = decoder.remaining_handles();
8506 if let Some((inlined, num_bytes, num_handles)) =
8507 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8508 {
8509 let member_inline_size =
8510 <fidl::encoding::Vector<u8, 16> as fidl::encoding::TypeMarker>::inline_size(
8511 decoder.context,
8512 );
8513 if inlined != (member_inline_size <= 4) {
8514 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8515 }
8516 let inner_offset;
8517 let mut inner_depth = depth.clone();
8518 if inlined {
8519 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8520 inner_offset = next_offset;
8521 } else {
8522 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8523 inner_depth.increment()?;
8524 }
8525 let val_ref = self
8526 .steering_data
8527 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 16>, D));
8528 fidl::decode!(fidl::encoding::Vector<u8, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
8529 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8530 {
8531 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8532 }
8533 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8534 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8535 }
8536 }
8537
8538 next_offset += envelope_size;
8539 _next_ordinal_to_read += 1;
8540 if next_offset >= end_offset {
8541 return Ok(());
8542 }
8543
8544 while _next_ordinal_to_read < 4 {
8546 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8547 _next_ordinal_to_read += 1;
8548 next_offset += envelope_size;
8549 }
8550
8551 let next_out_of_line = decoder.next_out_of_line();
8552 let handles_before = decoder.remaining_handles();
8553 if let Some((inlined, num_bytes, num_handles)) =
8554 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8555 {
8556 let member_inline_size =
8557 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8558 if inlined != (member_inline_size <= 4) {
8559 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8560 }
8561 let inner_offset;
8562 let mut inner_depth = depth.clone();
8563 if inlined {
8564 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8565 inner_offset = next_offset;
8566 } else {
8567 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8568 inner_depth.increment()?;
8569 }
8570 let val_ref = self.joiner_udp_port.get_or_insert_with(|| fidl::new_empty!(u16, D));
8571 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
8572 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8573 {
8574 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8575 }
8576 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8577 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8578 }
8579 }
8580
8581 next_offset += envelope_size;
8582 _next_ordinal_to_read += 1;
8583 if next_offset >= end_offset {
8584 return Ok(());
8585 }
8586
8587 while _next_ordinal_to_read < 5 {
8589 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8590 _next_ordinal_to_read += 1;
8591 next_offset += envelope_size;
8592 }
8593
8594 let next_out_of_line = decoder.next_out_of_line();
8595 let handles_before = decoder.remaining_handles();
8596 if let Some((inlined, num_bytes, num_handles)) =
8597 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8598 {
8599 let member_inline_size =
8600 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8601 if inlined != (member_inline_size <= 4) {
8602 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8603 }
8604 let inner_offset;
8605 let mut inner_depth = depth.clone();
8606 if inlined {
8607 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8608 inner_offset = next_offset;
8609 } else {
8610 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8611 inner_depth.increment()?;
8612 }
8613 let val_ref = self.is_locator_set.get_or_insert_with(|| fidl::new_empty!(bool, D));
8614 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
8615 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8616 {
8617 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8618 }
8619 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8620 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8621 }
8622 }
8623
8624 next_offset += envelope_size;
8625 _next_ordinal_to_read += 1;
8626 if next_offset >= end_offset {
8627 return Ok(());
8628 }
8629
8630 while _next_ordinal_to_read < 6 {
8632 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8633 _next_ordinal_to_read += 1;
8634 next_offset += envelope_size;
8635 }
8636
8637 let next_out_of_line = decoder.next_out_of_line();
8638 let handles_before = decoder.remaining_handles();
8639 if let Some((inlined, num_bytes, num_handles)) =
8640 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8641 {
8642 let member_inline_size =
8643 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8644 if inlined != (member_inline_size <= 4) {
8645 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8646 }
8647 let inner_offset;
8648 let mut inner_depth = depth.clone();
8649 if inlined {
8650 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8651 inner_offset = next_offset;
8652 } else {
8653 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8654 inner_depth.increment()?;
8655 }
8656 let val_ref =
8657 self.is_session_id_set.get_or_insert_with(|| fidl::new_empty!(bool, D));
8658 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
8659 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8660 {
8661 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8662 }
8663 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8664 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8665 }
8666 }
8667
8668 next_offset += envelope_size;
8669 _next_ordinal_to_read += 1;
8670 if next_offset >= end_offset {
8671 return Ok(());
8672 }
8673
8674 while _next_ordinal_to_read < 7 {
8676 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8677 _next_ordinal_to_read += 1;
8678 next_offset += envelope_size;
8679 }
8680
8681 let next_out_of_line = decoder.next_out_of_line();
8682 let handles_before = decoder.remaining_handles();
8683 if let Some((inlined, num_bytes, num_handles)) =
8684 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8685 {
8686 let member_inline_size =
8687 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8688 if inlined != (member_inline_size <= 4) {
8689 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8690 }
8691 let inner_offset;
8692 let mut inner_depth = depth.clone();
8693 if inlined {
8694 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8695 inner_offset = next_offset;
8696 } else {
8697 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8698 inner_depth.increment()?;
8699 }
8700 let val_ref =
8701 self.is_steering_data_set.get_or_insert_with(|| fidl::new_empty!(bool, D));
8702 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
8703 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8704 {
8705 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8706 }
8707 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8708 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8709 }
8710 }
8711
8712 next_offset += envelope_size;
8713 _next_ordinal_to_read += 1;
8714 if next_offset >= end_offset {
8715 return Ok(());
8716 }
8717
8718 while _next_ordinal_to_read < 8 {
8720 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8721 _next_ordinal_to_read += 1;
8722 next_offset += envelope_size;
8723 }
8724
8725 let next_out_of_line = decoder.next_out_of_line();
8726 let handles_before = decoder.remaining_handles();
8727 if let Some((inlined, num_bytes, num_handles)) =
8728 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8729 {
8730 let member_inline_size =
8731 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8732 if inlined != (member_inline_size <= 4) {
8733 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8734 }
8735 let inner_offset;
8736 let mut inner_depth = depth.clone();
8737 if inlined {
8738 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8739 inner_offset = next_offset;
8740 } else {
8741 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8742 inner_depth.increment()?;
8743 }
8744 let val_ref =
8745 self.is_joiner_udp_port_set.get_or_insert_with(|| fidl::new_empty!(bool, D));
8746 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
8747 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8748 {
8749 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8750 }
8751 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8752 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8753 }
8754 }
8755
8756 next_offset += envelope_size;
8757 _next_ordinal_to_read += 1;
8758 if next_offset >= end_offset {
8759 return Ok(());
8760 }
8761
8762 while _next_ordinal_to_read < 9 {
8764 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8765 _next_ordinal_to_read += 1;
8766 next_offset += envelope_size;
8767 }
8768
8769 let next_out_of_line = decoder.next_out_of_line();
8770 let handles_before = decoder.remaining_handles();
8771 if let Some((inlined, num_bytes, num_handles)) =
8772 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8773 {
8774 let member_inline_size =
8775 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8776 if inlined != (member_inline_size <= 4) {
8777 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8778 }
8779 let inner_offset;
8780 let mut inner_depth = depth.clone();
8781 if inlined {
8782 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8783 inner_offset = next_offset;
8784 } else {
8785 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8786 inner_depth.increment()?;
8787 }
8788 let val_ref = self.has_extra_tlv.get_or_insert_with(|| fidl::new_empty!(bool, D));
8789 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
8790 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8791 {
8792 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8793 }
8794 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8795 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8796 }
8797 }
8798
8799 next_offset += envelope_size;
8800
8801 while next_offset < end_offset {
8803 _next_ordinal_to_read += 1;
8804 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8805 next_offset += envelope_size;
8806 }
8807
8808 Ok(())
8809 }
8810 }
8811
8812 impl Dhcp6PdInfo {
8813 #[inline(always)]
8814 fn max_ordinal_present(&self) -> u64 {
8815 if let Some(_) = self.hashed_pd_prefix {
8816 return 3;
8817 }
8818 if let Some(_) = self.pd_processed_ra_info {
8819 return 2;
8820 }
8821 if let Some(_) = self.dhcp6pd_state {
8822 return 1;
8823 }
8824 0
8825 }
8826 }
8827
8828 impl fidl::encoding::ValueTypeMarker for Dhcp6PdInfo {
8829 type Borrowed<'a> = &'a Self;
8830 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8831 value
8832 }
8833 }
8834
8835 unsafe impl fidl::encoding::TypeMarker for Dhcp6PdInfo {
8836 type Owned = Self;
8837
8838 #[inline(always)]
8839 fn inline_align(_context: fidl::encoding::Context) -> usize {
8840 8
8841 }
8842
8843 #[inline(always)]
8844 fn inline_size(_context: fidl::encoding::Context) -> usize {
8845 16
8846 }
8847 }
8848
8849 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Dhcp6PdInfo, D>
8850 for &Dhcp6PdInfo
8851 {
8852 unsafe fn encode(
8853 self,
8854 encoder: &mut fidl::encoding::Encoder<'_, D>,
8855 offset: usize,
8856 mut depth: fidl::encoding::Depth,
8857 ) -> fidl::Result<()> {
8858 encoder.debug_check_bounds::<Dhcp6PdInfo>(offset);
8859 let max_ordinal: u64 = self.max_ordinal_present();
8861 encoder.write_num(max_ordinal, offset);
8862 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8863 if max_ordinal == 0 {
8865 return Ok(());
8866 }
8867 depth.increment()?;
8868 let envelope_size = 8;
8869 let bytes_len = max_ordinal as usize * envelope_size;
8870 #[allow(unused_variables)]
8871 let offset = encoder.out_of_line_offset(bytes_len);
8872 let mut _prev_end_offset: usize = 0;
8873 if 1 > max_ordinal {
8874 return Ok(());
8875 }
8876
8877 let cur_offset: usize = (1 - 1) * envelope_size;
8880
8881 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8883
8884 fidl::encoding::encode_in_envelope_optional::<Dhcp6PdState, D>(
8889 self.dhcp6pd_state
8890 .as_ref()
8891 .map(<Dhcp6PdState as fidl::encoding::ValueTypeMarker>::borrow),
8892 encoder,
8893 offset + cur_offset,
8894 depth,
8895 )?;
8896
8897 _prev_end_offset = cur_offset + envelope_size;
8898 if 2 > max_ordinal {
8899 return Ok(());
8900 }
8901
8902 let cur_offset: usize = (2 - 1) * envelope_size;
8905
8906 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8908
8909 fidl::encoding::encode_in_envelope_optional::<PdProcessedRaInfo, D>(
8914 self.pd_processed_ra_info
8915 .as_ref()
8916 .map(<PdProcessedRaInfo as fidl::encoding::ValueTypeMarker>::borrow),
8917 encoder,
8918 offset + cur_offset,
8919 depth,
8920 )?;
8921
8922 _prev_end_offset = cur_offset + envelope_size;
8923 if 3 > max_ordinal {
8924 return Ok(());
8925 }
8926
8927 let cur_offset: usize = (3 - 1) * envelope_size;
8930
8931 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8933
8934 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
8939 self.hashed_pd_prefix.as_ref().map(
8940 <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
8941 ),
8942 encoder,
8943 offset + cur_offset,
8944 depth,
8945 )?;
8946
8947 _prev_end_offset = cur_offset + envelope_size;
8948
8949 Ok(())
8950 }
8951 }
8952
8953 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dhcp6PdInfo {
8954 #[inline(always)]
8955 fn new_empty() -> Self {
8956 Self::default()
8957 }
8958
8959 unsafe fn decode(
8960 &mut self,
8961 decoder: &mut fidl::encoding::Decoder<'_, D>,
8962 offset: usize,
8963 mut depth: fidl::encoding::Depth,
8964 ) -> fidl::Result<()> {
8965 decoder.debug_check_bounds::<Self>(offset);
8966 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8967 None => return Err(fidl::Error::NotNullable),
8968 Some(len) => len,
8969 };
8970 if len == 0 {
8972 return Ok(());
8973 };
8974 depth.increment()?;
8975 let envelope_size = 8;
8976 let bytes_len = len * envelope_size;
8977 let offset = decoder.out_of_line_offset(bytes_len)?;
8978 let mut _next_ordinal_to_read = 0;
8980 let mut next_offset = offset;
8981 let end_offset = offset + bytes_len;
8982 _next_ordinal_to_read += 1;
8983 if next_offset >= end_offset {
8984 return Ok(());
8985 }
8986
8987 while _next_ordinal_to_read < 1 {
8989 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8990 _next_ordinal_to_read += 1;
8991 next_offset += envelope_size;
8992 }
8993
8994 let next_out_of_line = decoder.next_out_of_line();
8995 let handles_before = decoder.remaining_handles();
8996 if let Some((inlined, num_bytes, num_handles)) =
8997 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8998 {
8999 let member_inline_size =
9000 <Dhcp6PdState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9001 if inlined != (member_inline_size <= 4) {
9002 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9003 }
9004 let inner_offset;
9005 let mut inner_depth = depth.clone();
9006 if inlined {
9007 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9008 inner_offset = next_offset;
9009 } else {
9010 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9011 inner_depth.increment()?;
9012 }
9013 let val_ref =
9014 self.dhcp6pd_state.get_or_insert_with(|| fidl::new_empty!(Dhcp6PdState, D));
9015 fidl::decode!(Dhcp6PdState, D, val_ref, decoder, inner_offset, inner_depth)?;
9016 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9017 {
9018 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9019 }
9020 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9021 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9022 }
9023 }
9024
9025 next_offset += envelope_size;
9026 _next_ordinal_to_read += 1;
9027 if next_offset >= end_offset {
9028 return Ok(());
9029 }
9030
9031 while _next_ordinal_to_read < 2 {
9033 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9034 _next_ordinal_to_read += 1;
9035 next_offset += envelope_size;
9036 }
9037
9038 let next_out_of_line = decoder.next_out_of_line();
9039 let handles_before = decoder.remaining_handles();
9040 if let Some((inlined, num_bytes, num_handles)) =
9041 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9042 {
9043 let member_inline_size =
9044 <PdProcessedRaInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9045 if inlined != (member_inline_size <= 4) {
9046 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9047 }
9048 let inner_offset;
9049 let mut inner_depth = depth.clone();
9050 if inlined {
9051 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9052 inner_offset = next_offset;
9053 } else {
9054 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9055 inner_depth.increment()?;
9056 }
9057 let val_ref = self
9058 .pd_processed_ra_info
9059 .get_or_insert_with(|| fidl::new_empty!(PdProcessedRaInfo, D));
9060 fidl::decode!(PdProcessedRaInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
9061 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9062 {
9063 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9064 }
9065 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9066 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9067 }
9068 }
9069
9070 next_offset += envelope_size;
9071 _next_ordinal_to_read += 1;
9072 if next_offset >= end_offset {
9073 return Ok(());
9074 }
9075
9076 while _next_ordinal_to_read < 3 {
9078 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9079 _next_ordinal_to_read += 1;
9080 next_offset += envelope_size;
9081 }
9082
9083 let next_out_of_line = decoder.next_out_of_line();
9084 let handles_before = decoder.remaining_handles();
9085 if let Some((inlined, num_bytes, num_handles)) =
9086 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9087 {
9088 let member_inline_size =
9089 <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
9090 decoder.context,
9091 );
9092 if inlined != (member_inline_size <= 4) {
9093 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9094 }
9095 let inner_offset;
9096 let mut inner_depth = depth.clone();
9097 if inlined {
9098 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9099 inner_offset = next_offset;
9100 } else {
9101 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9102 inner_depth.increment()?;
9103 }
9104 let val_ref = self
9105 .hashed_pd_prefix
9106 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
9107 fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
9108 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9109 {
9110 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9111 }
9112 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9113 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9114 }
9115 }
9116
9117 next_offset += envelope_size;
9118
9119 while next_offset < end_offset {
9121 _next_ordinal_to_read += 1;
9122 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9123 next_offset += envelope_size;
9124 }
9125
9126 Ok(())
9127 }
9128 }
9129
9130 impl DnsTxtEntry {
9131 #[inline(always)]
9132 fn max_ordinal_present(&self) -> u64 {
9133 if let Some(_) = self.value {
9134 return 2;
9135 }
9136 if let Some(_) = self.key {
9137 return 1;
9138 }
9139 0
9140 }
9141 }
9142
9143 impl fidl::encoding::ValueTypeMarker for DnsTxtEntry {
9144 type Borrowed<'a> = &'a Self;
9145 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9146 value
9147 }
9148 }
9149
9150 unsafe impl fidl::encoding::TypeMarker for DnsTxtEntry {
9151 type Owned = Self;
9152
9153 #[inline(always)]
9154 fn inline_align(_context: fidl::encoding::Context) -> usize {
9155 8
9156 }
9157
9158 #[inline(always)]
9159 fn inline_size(_context: fidl::encoding::Context) -> usize {
9160 16
9161 }
9162 }
9163
9164 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DnsTxtEntry, D>
9165 for &DnsTxtEntry
9166 {
9167 unsafe fn encode(
9168 self,
9169 encoder: &mut fidl::encoding::Encoder<'_, D>,
9170 offset: usize,
9171 mut depth: fidl::encoding::Depth,
9172 ) -> fidl::Result<()> {
9173 encoder.debug_check_bounds::<DnsTxtEntry>(offset);
9174 let max_ordinal: u64 = self.max_ordinal_present();
9176 encoder.write_num(max_ordinal, offset);
9177 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9178 if max_ordinal == 0 {
9180 return Ok(());
9181 }
9182 depth.increment()?;
9183 let envelope_size = 8;
9184 let bytes_len = max_ordinal as usize * envelope_size;
9185 #[allow(unused_variables)]
9186 let offset = encoder.out_of_line_offset(bytes_len);
9187 let mut _prev_end_offset: usize = 0;
9188 if 1 > max_ordinal {
9189 return Ok(());
9190 }
9191
9192 let cur_offset: usize = (1 - 1) * envelope_size;
9195
9196 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9198
9199 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
9204 self.key.as_ref().map(
9205 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
9206 ),
9207 encoder,
9208 offset + cur_offset,
9209 depth,
9210 )?;
9211
9212 _prev_end_offset = cur_offset + envelope_size;
9213 if 2 > max_ordinal {
9214 return Ok(());
9215 }
9216
9217 let cur_offset: usize = (2 - 1) * envelope_size;
9220
9221 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9223
9224 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 253>, D>(
9229 self.value.as_ref().map(
9230 <fidl::encoding::Vector<u8, 253> as fidl::encoding::ValueTypeMarker>::borrow,
9231 ),
9232 encoder,
9233 offset + cur_offset,
9234 depth,
9235 )?;
9236
9237 _prev_end_offset = cur_offset + envelope_size;
9238
9239 Ok(())
9240 }
9241 }
9242
9243 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DnsTxtEntry {
9244 #[inline(always)]
9245 fn new_empty() -> Self {
9246 Self::default()
9247 }
9248
9249 unsafe fn decode(
9250 &mut self,
9251 decoder: &mut fidl::encoding::Decoder<'_, D>,
9252 offset: usize,
9253 mut depth: fidl::encoding::Depth,
9254 ) -> fidl::Result<()> {
9255 decoder.debug_check_bounds::<Self>(offset);
9256 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9257 None => return Err(fidl::Error::NotNullable),
9258 Some(len) => len,
9259 };
9260 if len == 0 {
9262 return Ok(());
9263 };
9264 depth.increment()?;
9265 let envelope_size = 8;
9266 let bytes_len = len * envelope_size;
9267 let offset = decoder.out_of_line_offset(bytes_len)?;
9268 let mut _next_ordinal_to_read = 0;
9270 let mut next_offset = offset;
9271 let end_offset = offset + bytes_len;
9272 _next_ordinal_to_read += 1;
9273 if next_offset >= end_offset {
9274 return Ok(());
9275 }
9276
9277 while _next_ordinal_to_read < 1 {
9279 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9280 _next_ordinal_to_read += 1;
9281 next_offset += envelope_size;
9282 }
9283
9284 let next_out_of_line = decoder.next_out_of_line();
9285 let handles_before = decoder.remaining_handles();
9286 if let Some((inlined, num_bytes, num_handles)) =
9287 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9288 {
9289 let member_inline_size =
9290 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
9291 decoder.context,
9292 );
9293 if inlined != (member_inline_size <= 4) {
9294 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9295 }
9296 let inner_offset;
9297 let mut inner_depth = depth.clone();
9298 if inlined {
9299 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9300 inner_offset = next_offset;
9301 } else {
9302 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9303 inner_depth.increment()?;
9304 }
9305 let val_ref = self
9306 .key
9307 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
9308 fidl::decode!(
9309 fidl::encoding::BoundedString<64>,
9310 D,
9311 val_ref,
9312 decoder,
9313 inner_offset,
9314 inner_depth
9315 )?;
9316 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9317 {
9318 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9319 }
9320 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9321 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9322 }
9323 }
9324
9325 next_offset += envelope_size;
9326 _next_ordinal_to_read += 1;
9327 if next_offset >= end_offset {
9328 return Ok(());
9329 }
9330
9331 while _next_ordinal_to_read < 2 {
9333 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9334 _next_ordinal_to_read += 1;
9335 next_offset += envelope_size;
9336 }
9337
9338 let next_out_of_line = decoder.next_out_of_line();
9339 let handles_before = decoder.remaining_handles();
9340 if let Some((inlined, num_bytes, num_handles)) =
9341 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9342 {
9343 let member_inline_size =
9344 <fidl::encoding::Vector<u8, 253> as fidl::encoding::TypeMarker>::inline_size(
9345 decoder.context,
9346 );
9347 if inlined != (member_inline_size <= 4) {
9348 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9349 }
9350 let inner_offset;
9351 let mut inner_depth = depth.clone();
9352 if inlined {
9353 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9354 inner_offset = next_offset;
9355 } else {
9356 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9357 inner_depth.increment()?;
9358 }
9359 let val_ref = self
9360 .value
9361 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 253>, D));
9362 fidl::decode!(fidl::encoding::Vector<u8, 253>, D, val_ref, decoder, inner_offset, inner_depth)?;
9363 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9364 {
9365 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9366 }
9367 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9368 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9369 }
9370 }
9371
9372 next_offset += envelope_size;
9373
9374 while next_offset < end_offset {
9376 _next_ordinal_to_read += 1;
9377 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9378 next_offset += envelope_size;
9379 }
9380
9381 Ok(())
9382 }
9383 }
9384
9385 impl DnssdCounters {
9386 #[inline(always)]
9387 fn max_ordinal_present(&self) -> u64 {
9388 if let Some(_) = self.upstream_dns_counters {
9389 return 8;
9390 }
9391 if let Some(_) = self.resolved_by_srp {
9392 return 7;
9393 }
9394 if let Some(_) = self.other_response {
9395 return 6;
9396 }
9397 if let Some(_) = self.not_implemented_response {
9398 return 5;
9399 }
9400 if let Some(_) = self.name_error_response {
9401 return 4;
9402 }
9403 if let Some(_) = self.format_error_response {
9404 return 3;
9405 }
9406 if let Some(_) = self.server_failure_response {
9407 return 2;
9408 }
9409 if let Some(_) = self.success_response {
9410 return 1;
9411 }
9412 0
9413 }
9414 }
9415
9416 impl fidl::encoding::ValueTypeMarker for DnssdCounters {
9417 type Borrowed<'a> = &'a Self;
9418 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9419 value
9420 }
9421 }
9422
9423 unsafe impl fidl::encoding::TypeMarker for DnssdCounters {
9424 type Owned = Self;
9425
9426 #[inline(always)]
9427 fn inline_align(_context: fidl::encoding::Context) -> usize {
9428 8
9429 }
9430
9431 #[inline(always)]
9432 fn inline_size(_context: fidl::encoding::Context) -> usize {
9433 16
9434 }
9435 }
9436
9437 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DnssdCounters, D>
9438 for &DnssdCounters
9439 {
9440 unsafe fn encode(
9441 self,
9442 encoder: &mut fidl::encoding::Encoder<'_, D>,
9443 offset: usize,
9444 mut depth: fidl::encoding::Depth,
9445 ) -> fidl::Result<()> {
9446 encoder.debug_check_bounds::<DnssdCounters>(offset);
9447 let max_ordinal: u64 = self.max_ordinal_present();
9449 encoder.write_num(max_ordinal, offset);
9450 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9451 if max_ordinal == 0 {
9453 return Ok(());
9454 }
9455 depth.increment()?;
9456 let envelope_size = 8;
9457 let bytes_len = max_ordinal as usize * envelope_size;
9458 #[allow(unused_variables)]
9459 let offset = encoder.out_of_line_offset(bytes_len);
9460 let mut _prev_end_offset: usize = 0;
9461 if 1 > max_ordinal {
9462 return Ok(());
9463 }
9464
9465 let cur_offset: usize = (1 - 1) * envelope_size;
9468
9469 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9471
9472 fidl::encoding::encode_in_envelope_optional::<u32, D>(
9477 self.success_response
9478 .as_ref()
9479 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
9480 encoder,
9481 offset + cur_offset,
9482 depth,
9483 )?;
9484
9485 _prev_end_offset = cur_offset + envelope_size;
9486 if 2 > max_ordinal {
9487 return Ok(());
9488 }
9489
9490 let cur_offset: usize = (2 - 1) * envelope_size;
9493
9494 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9496
9497 fidl::encoding::encode_in_envelope_optional::<u32, D>(
9502 self.server_failure_response
9503 .as_ref()
9504 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
9505 encoder,
9506 offset + cur_offset,
9507 depth,
9508 )?;
9509
9510 _prev_end_offset = cur_offset + envelope_size;
9511 if 3 > max_ordinal {
9512 return Ok(());
9513 }
9514
9515 let cur_offset: usize = (3 - 1) * envelope_size;
9518
9519 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9521
9522 fidl::encoding::encode_in_envelope_optional::<u32, D>(
9527 self.format_error_response
9528 .as_ref()
9529 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
9530 encoder,
9531 offset + cur_offset,
9532 depth,
9533 )?;
9534
9535 _prev_end_offset = cur_offset + envelope_size;
9536 if 4 > max_ordinal {
9537 return Ok(());
9538 }
9539
9540 let cur_offset: usize = (4 - 1) * envelope_size;
9543
9544 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9546
9547 fidl::encoding::encode_in_envelope_optional::<u32, D>(
9552 self.name_error_response
9553 .as_ref()
9554 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
9555 encoder,
9556 offset + cur_offset,
9557 depth,
9558 )?;
9559
9560 _prev_end_offset = cur_offset + envelope_size;
9561 if 5 > max_ordinal {
9562 return Ok(());
9563 }
9564
9565 let cur_offset: usize = (5 - 1) * envelope_size;
9568
9569 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9571
9572 fidl::encoding::encode_in_envelope_optional::<u32, D>(
9577 self.not_implemented_response
9578 .as_ref()
9579 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
9580 encoder,
9581 offset + cur_offset,
9582 depth,
9583 )?;
9584
9585 _prev_end_offset = cur_offset + envelope_size;
9586 if 6 > max_ordinal {
9587 return Ok(());
9588 }
9589
9590 let cur_offset: usize = (6 - 1) * envelope_size;
9593
9594 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9596
9597 fidl::encoding::encode_in_envelope_optional::<u32, D>(
9602 self.other_response.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
9603 encoder,
9604 offset + cur_offset,
9605 depth,
9606 )?;
9607
9608 _prev_end_offset = cur_offset + envelope_size;
9609 if 7 > max_ordinal {
9610 return Ok(());
9611 }
9612
9613 let cur_offset: usize = (7 - 1) * envelope_size;
9616
9617 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9619
9620 fidl::encoding::encode_in_envelope_optional::<u32, D>(
9625 self.resolved_by_srp.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
9626 encoder,
9627 offset + cur_offset,
9628 depth,
9629 )?;
9630
9631 _prev_end_offset = cur_offset + envelope_size;
9632 if 8 > max_ordinal {
9633 return Ok(());
9634 }
9635
9636 let cur_offset: usize = (8 - 1) * envelope_size;
9639
9640 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9642
9643 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsCounters, D>(
9648 self.upstream_dns_counters
9649 .as_ref()
9650 .map(<UpstreamDnsCounters as fidl::encoding::ValueTypeMarker>::borrow),
9651 encoder,
9652 offset + cur_offset,
9653 depth,
9654 )?;
9655
9656 _prev_end_offset = cur_offset + envelope_size;
9657
9658 Ok(())
9659 }
9660 }
9661
9662 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DnssdCounters {
9663 #[inline(always)]
9664 fn new_empty() -> Self {
9665 Self::default()
9666 }
9667
9668 unsafe fn decode(
9669 &mut self,
9670 decoder: &mut fidl::encoding::Decoder<'_, D>,
9671 offset: usize,
9672 mut depth: fidl::encoding::Depth,
9673 ) -> fidl::Result<()> {
9674 decoder.debug_check_bounds::<Self>(offset);
9675 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9676 None => return Err(fidl::Error::NotNullable),
9677 Some(len) => len,
9678 };
9679 if len == 0 {
9681 return Ok(());
9682 };
9683 depth.increment()?;
9684 let envelope_size = 8;
9685 let bytes_len = len * envelope_size;
9686 let offset = decoder.out_of_line_offset(bytes_len)?;
9687 let mut _next_ordinal_to_read = 0;
9689 let mut next_offset = offset;
9690 let end_offset = offset + bytes_len;
9691 _next_ordinal_to_read += 1;
9692 if next_offset >= end_offset {
9693 return Ok(());
9694 }
9695
9696 while _next_ordinal_to_read < 1 {
9698 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9699 _next_ordinal_to_read += 1;
9700 next_offset += envelope_size;
9701 }
9702
9703 let next_out_of_line = decoder.next_out_of_line();
9704 let handles_before = decoder.remaining_handles();
9705 if let Some((inlined, num_bytes, num_handles)) =
9706 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9707 {
9708 let member_inline_size =
9709 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9710 if inlined != (member_inline_size <= 4) {
9711 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9712 }
9713 let inner_offset;
9714 let mut inner_depth = depth.clone();
9715 if inlined {
9716 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9717 inner_offset = next_offset;
9718 } else {
9719 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9720 inner_depth.increment()?;
9721 }
9722 let val_ref = self.success_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
9723 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
9724 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9725 {
9726 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9727 }
9728 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9729 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9730 }
9731 }
9732
9733 next_offset += envelope_size;
9734 _next_ordinal_to_read += 1;
9735 if next_offset >= end_offset {
9736 return Ok(());
9737 }
9738
9739 while _next_ordinal_to_read < 2 {
9741 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9742 _next_ordinal_to_read += 1;
9743 next_offset += envelope_size;
9744 }
9745
9746 let next_out_of_line = decoder.next_out_of_line();
9747 let handles_before = decoder.remaining_handles();
9748 if let Some((inlined, num_bytes, num_handles)) =
9749 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9750 {
9751 let member_inline_size =
9752 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9753 if inlined != (member_inline_size <= 4) {
9754 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9755 }
9756 let inner_offset;
9757 let mut inner_depth = depth.clone();
9758 if inlined {
9759 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9760 inner_offset = next_offset;
9761 } else {
9762 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9763 inner_depth.increment()?;
9764 }
9765 let val_ref =
9766 self.server_failure_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
9767 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
9768 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9769 {
9770 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9771 }
9772 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9773 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9774 }
9775 }
9776
9777 next_offset += envelope_size;
9778 _next_ordinal_to_read += 1;
9779 if next_offset >= end_offset {
9780 return Ok(());
9781 }
9782
9783 while _next_ordinal_to_read < 3 {
9785 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9786 _next_ordinal_to_read += 1;
9787 next_offset += envelope_size;
9788 }
9789
9790 let next_out_of_line = decoder.next_out_of_line();
9791 let handles_before = decoder.remaining_handles();
9792 if let Some((inlined, num_bytes, num_handles)) =
9793 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9794 {
9795 let member_inline_size =
9796 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9797 if inlined != (member_inline_size <= 4) {
9798 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9799 }
9800 let inner_offset;
9801 let mut inner_depth = depth.clone();
9802 if inlined {
9803 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9804 inner_offset = next_offset;
9805 } else {
9806 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9807 inner_depth.increment()?;
9808 }
9809 let val_ref =
9810 self.format_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
9811 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
9812 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9813 {
9814 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9815 }
9816 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9817 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9818 }
9819 }
9820
9821 next_offset += envelope_size;
9822 _next_ordinal_to_read += 1;
9823 if next_offset >= end_offset {
9824 return Ok(());
9825 }
9826
9827 while _next_ordinal_to_read < 4 {
9829 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9830 _next_ordinal_to_read += 1;
9831 next_offset += envelope_size;
9832 }
9833
9834 let next_out_of_line = decoder.next_out_of_line();
9835 let handles_before = decoder.remaining_handles();
9836 if let Some((inlined, num_bytes, num_handles)) =
9837 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9838 {
9839 let member_inline_size =
9840 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9841 if inlined != (member_inline_size <= 4) {
9842 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9843 }
9844 let inner_offset;
9845 let mut inner_depth = depth.clone();
9846 if inlined {
9847 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9848 inner_offset = next_offset;
9849 } else {
9850 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9851 inner_depth.increment()?;
9852 }
9853 let val_ref =
9854 self.name_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
9855 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
9856 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9857 {
9858 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9859 }
9860 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9861 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9862 }
9863 }
9864
9865 next_offset += envelope_size;
9866 _next_ordinal_to_read += 1;
9867 if next_offset >= end_offset {
9868 return Ok(());
9869 }
9870
9871 while _next_ordinal_to_read < 5 {
9873 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9874 _next_ordinal_to_read += 1;
9875 next_offset += envelope_size;
9876 }
9877
9878 let next_out_of_line = decoder.next_out_of_line();
9879 let handles_before = decoder.remaining_handles();
9880 if let Some((inlined, num_bytes, num_handles)) =
9881 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9882 {
9883 let member_inline_size =
9884 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9885 if inlined != (member_inline_size <= 4) {
9886 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9887 }
9888 let inner_offset;
9889 let mut inner_depth = depth.clone();
9890 if inlined {
9891 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9892 inner_offset = next_offset;
9893 } else {
9894 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9895 inner_depth.increment()?;
9896 }
9897 let val_ref =
9898 self.not_implemented_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
9899 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
9900 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9901 {
9902 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9903 }
9904 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9905 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9906 }
9907 }
9908
9909 next_offset += envelope_size;
9910 _next_ordinal_to_read += 1;
9911 if next_offset >= end_offset {
9912 return Ok(());
9913 }
9914
9915 while _next_ordinal_to_read < 6 {
9917 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9918 _next_ordinal_to_read += 1;
9919 next_offset += envelope_size;
9920 }
9921
9922 let next_out_of_line = decoder.next_out_of_line();
9923 let handles_before = decoder.remaining_handles();
9924 if let Some((inlined, num_bytes, num_handles)) =
9925 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9926 {
9927 let member_inline_size =
9928 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9929 if inlined != (member_inline_size <= 4) {
9930 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9931 }
9932 let inner_offset;
9933 let mut inner_depth = depth.clone();
9934 if inlined {
9935 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9936 inner_offset = next_offset;
9937 } else {
9938 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9939 inner_depth.increment()?;
9940 }
9941 let val_ref = self.other_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
9942 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
9943 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9944 {
9945 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9946 }
9947 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9948 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9949 }
9950 }
9951
9952 next_offset += envelope_size;
9953 _next_ordinal_to_read += 1;
9954 if next_offset >= end_offset {
9955 return Ok(());
9956 }
9957
9958 while _next_ordinal_to_read < 7 {
9960 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9961 _next_ordinal_to_read += 1;
9962 next_offset += envelope_size;
9963 }
9964
9965 let next_out_of_line = decoder.next_out_of_line();
9966 let handles_before = decoder.remaining_handles();
9967 if let Some((inlined, num_bytes, num_handles)) =
9968 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9969 {
9970 let member_inline_size =
9971 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9972 if inlined != (member_inline_size <= 4) {
9973 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9974 }
9975 let inner_offset;
9976 let mut inner_depth = depth.clone();
9977 if inlined {
9978 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9979 inner_offset = next_offset;
9980 } else {
9981 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9982 inner_depth.increment()?;
9983 }
9984 let val_ref = self.resolved_by_srp.get_or_insert_with(|| fidl::new_empty!(u32, D));
9985 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
9986 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9987 {
9988 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9989 }
9990 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9991 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9992 }
9993 }
9994
9995 next_offset += envelope_size;
9996 _next_ordinal_to_read += 1;
9997 if next_offset >= end_offset {
9998 return Ok(());
9999 }
10000
10001 while _next_ordinal_to_read < 8 {
10003 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10004 _next_ordinal_to_read += 1;
10005 next_offset += envelope_size;
10006 }
10007
10008 let next_out_of_line = decoder.next_out_of_line();
10009 let handles_before = decoder.remaining_handles();
10010 if let Some((inlined, num_bytes, num_handles)) =
10011 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10012 {
10013 let member_inline_size =
10014 <UpstreamDnsCounters as fidl::encoding::TypeMarker>::inline_size(
10015 decoder.context,
10016 );
10017 if inlined != (member_inline_size <= 4) {
10018 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10019 }
10020 let inner_offset;
10021 let mut inner_depth = depth.clone();
10022 if inlined {
10023 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10024 inner_offset = next_offset;
10025 } else {
10026 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10027 inner_depth.increment()?;
10028 }
10029 let val_ref = self
10030 .upstream_dns_counters
10031 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsCounters, D));
10032 fidl::decode!(UpstreamDnsCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
10033 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10034 {
10035 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10036 }
10037 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10038 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10039 }
10040 }
10041
10042 next_offset += envelope_size;
10043
10044 while next_offset < end_offset {
10046 _next_ordinal_to_read += 1;
10047 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10048 next_offset += envelope_size;
10049 }
10050
10051 Ok(())
10052 }
10053 }
10054
10055 impl ExternalRoute {
10056 #[inline(always)]
10057 fn max_ordinal_present(&self) -> u64 {
10058 if let Some(_) = self.stable {
10059 return 3;
10060 }
10061 if let Some(_) = self.route_preference {
10062 return 2;
10063 }
10064 if let Some(_) = self.subnet {
10065 return 1;
10066 }
10067 0
10068 }
10069 }
10070
10071 impl fidl::encoding::ValueTypeMarker for ExternalRoute {
10072 type Borrowed<'a> = &'a Self;
10073 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10074 value
10075 }
10076 }
10077
10078 unsafe impl fidl::encoding::TypeMarker for ExternalRoute {
10079 type Owned = Self;
10080
10081 #[inline(always)]
10082 fn inline_align(_context: fidl::encoding::Context) -> usize {
10083 8
10084 }
10085
10086 #[inline(always)]
10087 fn inline_size(_context: fidl::encoding::Context) -> usize {
10088 16
10089 }
10090 }
10091
10092 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExternalRoute, D>
10093 for &ExternalRoute
10094 {
10095 unsafe fn encode(
10096 self,
10097 encoder: &mut fidl::encoding::Encoder<'_, D>,
10098 offset: usize,
10099 mut depth: fidl::encoding::Depth,
10100 ) -> fidl::Result<()> {
10101 encoder.debug_check_bounds::<ExternalRoute>(offset);
10102 let max_ordinal: u64 = self.max_ordinal_present();
10104 encoder.write_num(max_ordinal, offset);
10105 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10106 if max_ordinal == 0 {
10108 return Ok(());
10109 }
10110 depth.increment()?;
10111 let envelope_size = 8;
10112 let bytes_len = max_ordinal as usize * envelope_size;
10113 #[allow(unused_variables)]
10114 let offset = encoder.out_of_line_offset(bytes_len);
10115 let mut _prev_end_offset: usize = 0;
10116 if 1 > max_ordinal {
10117 return Ok(());
10118 }
10119
10120 let cur_offset: usize = (1 - 1) * envelope_size;
10123
10124 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10126
10127 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>(
10132 self.subnet.as_ref().map(<fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow),
10133 encoder, offset + cur_offset, depth
10134 )?;
10135
10136 _prev_end_offset = cur_offset + envelope_size;
10137 if 2 > max_ordinal {
10138 return Ok(());
10139 }
10140
10141 let cur_offset: usize = (2 - 1) * envelope_size;
10144
10145 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10147
10148 fidl::encoding::encode_in_envelope_optional::<RoutePreference, D>(
10153 self.route_preference
10154 .as_ref()
10155 .map(<RoutePreference as fidl::encoding::ValueTypeMarker>::borrow),
10156 encoder,
10157 offset + cur_offset,
10158 depth,
10159 )?;
10160
10161 _prev_end_offset = cur_offset + envelope_size;
10162 if 3 > max_ordinal {
10163 return Ok(());
10164 }
10165
10166 let cur_offset: usize = (3 - 1) * envelope_size;
10169
10170 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10172
10173 fidl::encoding::encode_in_envelope_optional::<bool, D>(
10178 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10179 encoder,
10180 offset + cur_offset,
10181 depth,
10182 )?;
10183
10184 _prev_end_offset = cur_offset + envelope_size;
10185
10186 Ok(())
10187 }
10188 }
10189
10190 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExternalRoute {
10191 #[inline(always)]
10192 fn new_empty() -> Self {
10193 Self::default()
10194 }
10195
10196 unsafe fn decode(
10197 &mut self,
10198 decoder: &mut fidl::encoding::Decoder<'_, D>,
10199 offset: usize,
10200 mut depth: fidl::encoding::Depth,
10201 ) -> fidl::Result<()> {
10202 decoder.debug_check_bounds::<Self>(offset);
10203 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10204 None => return Err(fidl::Error::NotNullable),
10205 Some(len) => len,
10206 };
10207 if len == 0 {
10209 return Ok(());
10210 };
10211 depth.increment()?;
10212 let envelope_size = 8;
10213 let bytes_len = len * envelope_size;
10214 let offset = decoder.out_of_line_offset(bytes_len)?;
10215 let mut _next_ordinal_to_read = 0;
10217 let mut next_offset = offset;
10218 let end_offset = offset + bytes_len;
10219 _next_ordinal_to_read += 1;
10220 if next_offset >= end_offset {
10221 return Ok(());
10222 }
10223
10224 while _next_ordinal_to_read < 1 {
10226 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10227 _next_ordinal_to_read += 1;
10228 next_offset += envelope_size;
10229 }
10230
10231 let next_out_of_line = decoder.next_out_of_line();
10232 let handles_before = decoder.remaining_handles();
10233 if let Some((inlined, num_bytes, num_handles)) =
10234 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10235 {
10236 let member_inline_size = <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10237 if inlined != (member_inline_size <= 4) {
10238 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10239 }
10240 let inner_offset;
10241 let mut inner_depth = depth.clone();
10242 if inlined {
10243 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10244 inner_offset = next_offset;
10245 } else {
10246 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10247 inner_depth.increment()?;
10248 }
10249 let val_ref = self.subnet.get_or_insert_with(|| {
10250 fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D)
10251 });
10252 fidl::decode!(
10253 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
10254 D,
10255 val_ref,
10256 decoder,
10257 inner_offset,
10258 inner_depth
10259 )?;
10260 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10261 {
10262 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10263 }
10264 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10265 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10266 }
10267 }
10268
10269 next_offset += envelope_size;
10270 _next_ordinal_to_read += 1;
10271 if next_offset >= end_offset {
10272 return Ok(());
10273 }
10274
10275 while _next_ordinal_to_read < 2 {
10277 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10278 _next_ordinal_to_read += 1;
10279 next_offset += envelope_size;
10280 }
10281
10282 let next_out_of_line = decoder.next_out_of_line();
10283 let handles_before = decoder.remaining_handles();
10284 if let Some((inlined, num_bytes, num_handles)) =
10285 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10286 {
10287 let member_inline_size =
10288 <RoutePreference as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10289 if inlined != (member_inline_size <= 4) {
10290 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10291 }
10292 let inner_offset;
10293 let mut inner_depth = depth.clone();
10294 if inlined {
10295 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10296 inner_offset = next_offset;
10297 } else {
10298 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10299 inner_depth.increment()?;
10300 }
10301 let val_ref = self
10302 .route_preference
10303 .get_or_insert_with(|| fidl::new_empty!(RoutePreference, D));
10304 fidl::decode!(RoutePreference, D, val_ref, decoder, inner_offset, inner_depth)?;
10305 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10306 {
10307 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10308 }
10309 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10310 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10311 }
10312 }
10313
10314 next_offset += envelope_size;
10315 _next_ordinal_to_read += 1;
10316 if next_offset >= end_offset {
10317 return Ok(());
10318 }
10319
10320 while _next_ordinal_to_read < 3 {
10322 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10323 _next_ordinal_to_read += 1;
10324 next_offset += envelope_size;
10325 }
10326
10327 let next_out_of_line = decoder.next_out_of_line();
10328 let handles_before = decoder.remaining_handles();
10329 if let Some((inlined, num_bytes, num_handles)) =
10330 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10331 {
10332 let member_inline_size =
10333 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10334 if inlined != (member_inline_size <= 4) {
10335 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10336 }
10337 let inner_offset;
10338 let mut inner_depth = depth.clone();
10339 if inlined {
10340 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10341 inner_offset = next_offset;
10342 } else {
10343 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10344 inner_depth.increment()?;
10345 }
10346 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
10347 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10348 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10349 {
10350 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10351 }
10352 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10353 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10354 }
10355 }
10356
10357 next_offset += envelope_size;
10358
10359 while next_offset < end_offset {
10361 _next_ordinal_to_read += 1;
10362 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10363 next_offset += envelope_size;
10364 }
10365
10366 Ok(())
10367 }
10368 }
10369
10370 impl ExternalRouteConfig {
10371 #[inline(always)]
10372 fn max_ordinal_present(&self) -> u64 {
10373 if let Some(_) = self.adv_pio {
10374 return 7;
10375 }
10376 if let Some(_) = self.next_hop_is_this_device {
10377 return 6;
10378 }
10379 if let Some(_) = self.stable {
10380 return 5;
10381 }
10382 if let Some(_) = self.nat64 {
10383 return 4;
10384 }
10385 if let Some(_) = self.preference {
10386 return 3;
10387 }
10388 if let Some(_) = self.rloc16 {
10389 return 2;
10390 }
10391 if let Some(_) = self.prefix {
10392 return 1;
10393 }
10394 0
10395 }
10396 }
10397
10398 impl fidl::encoding::ValueTypeMarker for ExternalRouteConfig {
10399 type Borrowed<'a> = &'a Self;
10400 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10401 value
10402 }
10403 }
10404
10405 unsafe impl fidl::encoding::TypeMarker for ExternalRouteConfig {
10406 type Owned = Self;
10407
10408 #[inline(always)]
10409 fn inline_align(_context: fidl::encoding::Context) -> usize {
10410 8
10411 }
10412
10413 #[inline(always)]
10414 fn inline_size(_context: fidl::encoding::Context) -> usize {
10415 16
10416 }
10417 }
10418
10419 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExternalRouteConfig, D>
10420 for &ExternalRouteConfig
10421 {
10422 unsafe fn encode(
10423 self,
10424 encoder: &mut fidl::encoding::Encoder<'_, D>,
10425 offset: usize,
10426 mut depth: fidl::encoding::Depth,
10427 ) -> fidl::Result<()> {
10428 encoder.debug_check_bounds::<ExternalRouteConfig>(offset);
10429 let max_ordinal: u64 = self.max_ordinal_present();
10431 encoder.write_num(max_ordinal, offset);
10432 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10433 if max_ordinal == 0 {
10435 return Ok(());
10436 }
10437 depth.increment()?;
10438 let envelope_size = 8;
10439 let bytes_len = max_ordinal as usize * envelope_size;
10440 #[allow(unused_variables)]
10441 let offset = encoder.out_of_line_offset(bytes_len);
10442 let mut _prev_end_offset: usize = 0;
10443 if 1 > max_ordinal {
10444 return Ok(());
10445 }
10446
10447 let cur_offset: usize = (1 - 1) * envelope_size;
10450
10451 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10453
10454 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
10459 self.prefix.as_ref().map(
10460 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
10461 ),
10462 encoder,
10463 offset + cur_offset,
10464 depth,
10465 )?;
10466
10467 _prev_end_offset = cur_offset + envelope_size;
10468 if 2 > max_ordinal {
10469 return Ok(());
10470 }
10471
10472 let cur_offset: usize = (2 - 1) * envelope_size;
10475
10476 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10478
10479 fidl::encoding::encode_in_envelope_optional::<u16, D>(
10484 self.rloc16.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10485 encoder,
10486 offset + cur_offset,
10487 depth,
10488 )?;
10489
10490 _prev_end_offset = cur_offset + envelope_size;
10491 if 3 > max_ordinal {
10492 return Ok(());
10493 }
10494
10495 let cur_offset: usize = (3 - 1) * envelope_size;
10498
10499 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10501
10502 fidl::encoding::encode_in_envelope_optional::<i8, D>(
10507 self.preference.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
10508 encoder,
10509 offset + cur_offset,
10510 depth,
10511 )?;
10512
10513 _prev_end_offset = cur_offset + envelope_size;
10514 if 4 > max_ordinal {
10515 return Ok(());
10516 }
10517
10518 let cur_offset: usize = (4 - 1) * envelope_size;
10521
10522 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10524
10525 fidl::encoding::encode_in_envelope_optional::<bool, D>(
10530 self.nat64.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10531 encoder,
10532 offset + cur_offset,
10533 depth,
10534 )?;
10535
10536 _prev_end_offset = cur_offset + envelope_size;
10537 if 5 > max_ordinal {
10538 return Ok(());
10539 }
10540
10541 let cur_offset: usize = (5 - 1) * envelope_size;
10544
10545 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10547
10548 fidl::encoding::encode_in_envelope_optional::<bool, D>(
10553 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10554 encoder,
10555 offset + cur_offset,
10556 depth,
10557 )?;
10558
10559 _prev_end_offset = cur_offset + envelope_size;
10560 if 6 > max_ordinal {
10561 return Ok(());
10562 }
10563
10564 let cur_offset: usize = (6 - 1) * envelope_size;
10567
10568 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10570
10571 fidl::encoding::encode_in_envelope_optional::<bool, D>(
10576 self.next_hop_is_this_device
10577 .as_ref()
10578 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10579 encoder,
10580 offset + cur_offset,
10581 depth,
10582 )?;
10583
10584 _prev_end_offset = cur_offset + envelope_size;
10585 if 7 > max_ordinal {
10586 return Ok(());
10587 }
10588
10589 let cur_offset: usize = (7 - 1) * envelope_size;
10592
10593 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10595
10596 fidl::encoding::encode_in_envelope_optional::<bool, D>(
10601 self.adv_pio.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10602 encoder,
10603 offset + cur_offset,
10604 depth,
10605 )?;
10606
10607 _prev_end_offset = cur_offset + envelope_size;
10608
10609 Ok(())
10610 }
10611 }
10612
10613 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExternalRouteConfig {
10614 #[inline(always)]
10615 fn new_empty() -> Self {
10616 Self::default()
10617 }
10618
10619 unsafe fn decode(
10620 &mut self,
10621 decoder: &mut fidl::encoding::Decoder<'_, D>,
10622 offset: usize,
10623 mut depth: fidl::encoding::Depth,
10624 ) -> fidl::Result<()> {
10625 decoder.debug_check_bounds::<Self>(offset);
10626 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10627 None => return Err(fidl::Error::NotNullable),
10628 Some(len) => len,
10629 };
10630 if len == 0 {
10632 return Ok(());
10633 };
10634 depth.increment()?;
10635 let envelope_size = 8;
10636 let bytes_len = len * envelope_size;
10637 let offset = decoder.out_of_line_offset(bytes_len)?;
10638 let mut _next_ordinal_to_read = 0;
10640 let mut next_offset = offset;
10641 let end_offset = offset + bytes_len;
10642 _next_ordinal_to_read += 1;
10643 if next_offset >= end_offset {
10644 return Ok(());
10645 }
10646
10647 while _next_ordinal_to_read < 1 {
10649 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10650 _next_ordinal_to_read += 1;
10651 next_offset += envelope_size;
10652 }
10653
10654 let next_out_of_line = decoder.next_out_of_line();
10655 let handles_before = decoder.remaining_handles();
10656 if let Some((inlined, num_bytes, num_handles)) =
10657 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10658 {
10659 let member_inline_size =
10660 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
10661 decoder.context,
10662 );
10663 if inlined != (member_inline_size <= 4) {
10664 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10665 }
10666 let inner_offset;
10667 let mut inner_depth = depth.clone();
10668 if inlined {
10669 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10670 inner_offset = next_offset;
10671 } else {
10672 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10673 inner_depth.increment()?;
10674 }
10675 let val_ref = self
10676 .prefix
10677 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
10678 fidl::decode!(
10679 fidl::encoding::BoundedString<64>,
10680 D,
10681 val_ref,
10682 decoder,
10683 inner_offset,
10684 inner_depth
10685 )?;
10686 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10687 {
10688 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10689 }
10690 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10691 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10692 }
10693 }
10694
10695 next_offset += envelope_size;
10696 _next_ordinal_to_read += 1;
10697 if next_offset >= end_offset {
10698 return Ok(());
10699 }
10700
10701 while _next_ordinal_to_read < 2 {
10703 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10704 _next_ordinal_to_read += 1;
10705 next_offset += envelope_size;
10706 }
10707
10708 let next_out_of_line = decoder.next_out_of_line();
10709 let handles_before = decoder.remaining_handles();
10710 if let Some((inlined, num_bytes, num_handles)) =
10711 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10712 {
10713 let member_inline_size =
10714 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10715 if inlined != (member_inline_size <= 4) {
10716 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10717 }
10718 let inner_offset;
10719 let mut inner_depth = depth.clone();
10720 if inlined {
10721 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10722 inner_offset = next_offset;
10723 } else {
10724 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10725 inner_depth.increment()?;
10726 }
10727 let val_ref = self.rloc16.get_or_insert_with(|| fidl::new_empty!(u16, D));
10728 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10729 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10730 {
10731 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10732 }
10733 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10734 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10735 }
10736 }
10737
10738 next_offset += envelope_size;
10739 _next_ordinal_to_read += 1;
10740 if next_offset >= end_offset {
10741 return Ok(());
10742 }
10743
10744 while _next_ordinal_to_read < 3 {
10746 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10747 _next_ordinal_to_read += 1;
10748 next_offset += envelope_size;
10749 }
10750
10751 let next_out_of_line = decoder.next_out_of_line();
10752 let handles_before = decoder.remaining_handles();
10753 if let Some((inlined, num_bytes, num_handles)) =
10754 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10755 {
10756 let member_inline_size =
10757 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10758 if inlined != (member_inline_size <= 4) {
10759 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10760 }
10761 let inner_offset;
10762 let mut inner_depth = depth.clone();
10763 if inlined {
10764 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10765 inner_offset = next_offset;
10766 } else {
10767 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10768 inner_depth.increment()?;
10769 }
10770 let val_ref = self.preference.get_or_insert_with(|| fidl::new_empty!(i8, D));
10771 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
10772 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10773 {
10774 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10775 }
10776 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10777 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10778 }
10779 }
10780
10781 next_offset += envelope_size;
10782 _next_ordinal_to_read += 1;
10783 if next_offset >= end_offset {
10784 return Ok(());
10785 }
10786
10787 while _next_ordinal_to_read < 4 {
10789 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10790 _next_ordinal_to_read += 1;
10791 next_offset += envelope_size;
10792 }
10793
10794 let next_out_of_line = decoder.next_out_of_line();
10795 let handles_before = decoder.remaining_handles();
10796 if let Some((inlined, num_bytes, num_handles)) =
10797 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10798 {
10799 let member_inline_size =
10800 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10801 if inlined != (member_inline_size <= 4) {
10802 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10803 }
10804 let inner_offset;
10805 let mut inner_depth = depth.clone();
10806 if inlined {
10807 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10808 inner_offset = next_offset;
10809 } else {
10810 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10811 inner_depth.increment()?;
10812 }
10813 let val_ref = self.nat64.get_or_insert_with(|| fidl::new_empty!(bool, D));
10814 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10815 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10816 {
10817 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10818 }
10819 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10820 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10821 }
10822 }
10823
10824 next_offset += envelope_size;
10825 _next_ordinal_to_read += 1;
10826 if next_offset >= end_offset {
10827 return Ok(());
10828 }
10829
10830 while _next_ordinal_to_read < 5 {
10832 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10833 _next_ordinal_to_read += 1;
10834 next_offset += envelope_size;
10835 }
10836
10837 let next_out_of_line = decoder.next_out_of_line();
10838 let handles_before = decoder.remaining_handles();
10839 if let Some((inlined, num_bytes, num_handles)) =
10840 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10841 {
10842 let member_inline_size =
10843 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10844 if inlined != (member_inline_size <= 4) {
10845 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10846 }
10847 let inner_offset;
10848 let mut inner_depth = depth.clone();
10849 if inlined {
10850 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10851 inner_offset = next_offset;
10852 } else {
10853 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10854 inner_depth.increment()?;
10855 }
10856 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
10857 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10858 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10859 {
10860 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10861 }
10862 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10863 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10864 }
10865 }
10866
10867 next_offset += envelope_size;
10868 _next_ordinal_to_read += 1;
10869 if next_offset >= end_offset {
10870 return Ok(());
10871 }
10872
10873 while _next_ordinal_to_read < 6 {
10875 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10876 _next_ordinal_to_read += 1;
10877 next_offset += envelope_size;
10878 }
10879
10880 let next_out_of_line = decoder.next_out_of_line();
10881 let handles_before = decoder.remaining_handles();
10882 if let Some((inlined, num_bytes, num_handles)) =
10883 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10884 {
10885 let member_inline_size =
10886 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10887 if inlined != (member_inline_size <= 4) {
10888 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10889 }
10890 let inner_offset;
10891 let mut inner_depth = depth.clone();
10892 if inlined {
10893 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10894 inner_offset = next_offset;
10895 } else {
10896 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10897 inner_depth.increment()?;
10898 }
10899 let val_ref =
10900 self.next_hop_is_this_device.get_or_insert_with(|| fidl::new_empty!(bool, D));
10901 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10902 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10903 {
10904 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10905 }
10906 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10907 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10908 }
10909 }
10910
10911 next_offset += envelope_size;
10912 _next_ordinal_to_read += 1;
10913 if next_offset >= end_offset {
10914 return Ok(());
10915 }
10916
10917 while _next_ordinal_to_read < 7 {
10919 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10920 _next_ordinal_to_read += 1;
10921 next_offset += envelope_size;
10922 }
10923
10924 let next_out_of_line = decoder.next_out_of_line();
10925 let handles_before = decoder.remaining_handles();
10926 if let Some((inlined, num_bytes, num_handles)) =
10927 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10928 {
10929 let member_inline_size =
10930 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10931 if inlined != (member_inline_size <= 4) {
10932 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10933 }
10934 let inner_offset;
10935 let mut inner_depth = depth.clone();
10936 if inlined {
10937 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10938 inner_offset = next_offset;
10939 } else {
10940 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10941 inner_depth.increment()?;
10942 }
10943 let val_ref = self.adv_pio.get_or_insert_with(|| fidl::new_empty!(bool, D));
10944 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10945 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10946 {
10947 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10948 }
10949 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10950 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10951 }
10952 }
10953
10954 next_offset += envelope_size;
10955
10956 while next_offset < end_offset {
10958 _next_ordinal_to_read += 1;
10959 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10960 next_offset += envelope_size;
10961 }
10962
10963 Ok(())
10964 }
10965 }
10966
10967 impl JoinerCommissioningParams {
10968 #[inline(always)]
10969 fn max_ordinal_present(&self) -> u64 {
10970 if let Some(_) = self.vendor_data_string {
10971 return 6;
10972 }
10973 if let Some(_) = self.vendor_sw_version {
10974 return 5;
10975 }
10976 if let Some(_) = self.vendor_model {
10977 return 4;
10978 }
10979 if let Some(_) = self.vendor_name {
10980 return 3;
10981 }
10982 if let Some(_) = self.provisioning_url {
10983 return 2;
10984 }
10985 if let Some(_) = self.pskd {
10986 return 1;
10987 }
10988 0
10989 }
10990 }
10991
10992 impl fidl::encoding::ValueTypeMarker for JoinerCommissioningParams {
10993 type Borrowed<'a> = &'a Self;
10994 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10995 value
10996 }
10997 }
10998
10999 unsafe impl fidl::encoding::TypeMarker for JoinerCommissioningParams {
11000 type Owned = Self;
11001
11002 #[inline(always)]
11003 fn inline_align(_context: fidl::encoding::Context) -> usize {
11004 8
11005 }
11006
11007 #[inline(always)]
11008 fn inline_size(_context: fidl::encoding::Context) -> usize {
11009 16
11010 }
11011 }
11012
11013 unsafe impl<D: fidl::encoding::ResourceDialect>
11014 fidl::encoding::Encode<JoinerCommissioningParams, D> for &JoinerCommissioningParams
11015 {
11016 unsafe fn encode(
11017 self,
11018 encoder: &mut fidl::encoding::Encoder<'_, D>,
11019 offset: usize,
11020 mut depth: fidl::encoding::Depth,
11021 ) -> fidl::Result<()> {
11022 encoder.debug_check_bounds::<JoinerCommissioningParams>(offset);
11023 let max_ordinal: u64 = self.max_ordinal_present();
11025 encoder.write_num(max_ordinal, offset);
11026 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11027 if max_ordinal == 0 {
11029 return Ok(());
11030 }
11031 depth.increment()?;
11032 let envelope_size = 8;
11033 let bytes_len = max_ordinal as usize * envelope_size;
11034 #[allow(unused_variables)]
11035 let offset = encoder.out_of_line_offset(bytes_len);
11036 let mut _prev_end_offset: usize = 0;
11037 if 1 > max_ordinal {
11038 return Ok(());
11039 }
11040
11041 let cur_offset: usize = (1 - 1) * envelope_size;
11044
11045 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11047
11048 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
11053 self.pskd.as_ref().map(
11054 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
11055 ),
11056 encoder,
11057 offset + cur_offset,
11058 depth,
11059 )?;
11060
11061 _prev_end_offset = cur_offset + envelope_size;
11062 if 2 > max_ordinal {
11063 return Ok(());
11064 }
11065
11066 let cur_offset: usize = (2 - 1) * envelope_size;
11069
11070 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11072
11073 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
11078 self.provisioning_url.as_ref().map(
11079 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
11080 ),
11081 encoder,
11082 offset + cur_offset,
11083 depth,
11084 )?;
11085
11086 _prev_end_offset = cur_offset + envelope_size;
11087 if 3 > max_ordinal {
11088 return Ok(());
11089 }
11090
11091 let cur_offset: usize = (3 - 1) * envelope_size;
11094
11095 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11097
11098 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
11103 self.vendor_name.as_ref().map(
11104 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
11105 ),
11106 encoder,
11107 offset + cur_offset,
11108 depth,
11109 )?;
11110
11111 _prev_end_offset = cur_offset + envelope_size;
11112 if 4 > max_ordinal {
11113 return Ok(());
11114 }
11115
11116 let cur_offset: usize = (4 - 1) * envelope_size;
11119
11120 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11122
11123 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
11128 self.vendor_model.as_ref().map(
11129 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
11130 ),
11131 encoder,
11132 offset + cur_offset,
11133 depth,
11134 )?;
11135
11136 _prev_end_offset = cur_offset + envelope_size;
11137 if 5 > max_ordinal {
11138 return Ok(());
11139 }
11140
11141 let cur_offset: usize = (5 - 1) * envelope_size;
11144
11145 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11147
11148 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<16>, D>(
11153 self.vendor_sw_version.as_ref().map(
11154 <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow,
11155 ),
11156 encoder,
11157 offset + cur_offset,
11158 depth,
11159 )?;
11160
11161 _prev_end_offset = cur_offset + envelope_size;
11162 if 6 > max_ordinal {
11163 return Ok(());
11164 }
11165
11166 let cur_offset: usize = (6 - 1) * envelope_size;
11169
11170 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11172
11173 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
11178 self.vendor_data_string.as_ref().map(
11179 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
11180 ),
11181 encoder,
11182 offset + cur_offset,
11183 depth,
11184 )?;
11185
11186 _prev_end_offset = cur_offset + envelope_size;
11187
11188 Ok(())
11189 }
11190 }
11191
11192 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11193 for JoinerCommissioningParams
11194 {
11195 #[inline(always)]
11196 fn new_empty() -> Self {
11197 Self::default()
11198 }
11199
11200 unsafe fn decode(
11201 &mut self,
11202 decoder: &mut fidl::encoding::Decoder<'_, D>,
11203 offset: usize,
11204 mut depth: fidl::encoding::Depth,
11205 ) -> fidl::Result<()> {
11206 decoder.debug_check_bounds::<Self>(offset);
11207 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11208 None => return Err(fidl::Error::NotNullable),
11209 Some(len) => len,
11210 };
11211 if len == 0 {
11213 return Ok(());
11214 };
11215 depth.increment()?;
11216 let envelope_size = 8;
11217 let bytes_len = len * envelope_size;
11218 let offset = decoder.out_of_line_offset(bytes_len)?;
11219 let mut _next_ordinal_to_read = 0;
11221 let mut next_offset = offset;
11222 let end_offset = offset + bytes_len;
11223 _next_ordinal_to_read += 1;
11224 if next_offset >= end_offset {
11225 return Ok(());
11226 }
11227
11228 while _next_ordinal_to_read < 1 {
11230 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11231 _next_ordinal_to_read += 1;
11232 next_offset += envelope_size;
11233 }
11234
11235 let next_out_of_line = decoder.next_out_of_line();
11236 let handles_before = decoder.remaining_handles();
11237 if let Some((inlined, num_bytes, num_handles)) =
11238 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11239 {
11240 let member_inline_size =
11241 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
11242 decoder.context,
11243 );
11244 if inlined != (member_inline_size <= 4) {
11245 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11246 }
11247 let inner_offset;
11248 let mut inner_depth = depth.clone();
11249 if inlined {
11250 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11251 inner_offset = next_offset;
11252 } else {
11253 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11254 inner_depth.increment()?;
11255 }
11256 let val_ref = self
11257 .pskd
11258 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
11259 fidl::decode!(
11260 fidl::encoding::BoundedString<32>,
11261 D,
11262 val_ref,
11263 decoder,
11264 inner_offset,
11265 inner_depth
11266 )?;
11267 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11268 {
11269 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11270 }
11271 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11272 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11273 }
11274 }
11275
11276 next_offset += envelope_size;
11277 _next_ordinal_to_read += 1;
11278 if next_offset >= end_offset {
11279 return Ok(());
11280 }
11281
11282 while _next_ordinal_to_read < 2 {
11284 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11285 _next_ordinal_to_read += 1;
11286 next_offset += envelope_size;
11287 }
11288
11289 let next_out_of_line = decoder.next_out_of_line();
11290 let handles_before = decoder.remaining_handles();
11291 if let Some((inlined, num_bytes, num_handles)) =
11292 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11293 {
11294 let member_inline_size =
11295 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
11296 decoder.context,
11297 );
11298 if inlined != (member_inline_size <= 4) {
11299 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11300 }
11301 let inner_offset;
11302 let mut inner_depth = depth.clone();
11303 if inlined {
11304 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11305 inner_offset = next_offset;
11306 } else {
11307 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11308 inner_depth.increment()?;
11309 }
11310 let val_ref = self
11311 .provisioning_url
11312 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
11313 fidl::decode!(
11314 fidl::encoding::BoundedString<64>,
11315 D,
11316 val_ref,
11317 decoder,
11318 inner_offset,
11319 inner_depth
11320 )?;
11321 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11322 {
11323 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11324 }
11325 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11326 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11327 }
11328 }
11329
11330 next_offset += envelope_size;
11331 _next_ordinal_to_read += 1;
11332 if next_offset >= end_offset {
11333 return Ok(());
11334 }
11335
11336 while _next_ordinal_to_read < 3 {
11338 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11339 _next_ordinal_to_read += 1;
11340 next_offset += envelope_size;
11341 }
11342
11343 let next_out_of_line = decoder.next_out_of_line();
11344 let handles_before = decoder.remaining_handles();
11345 if let Some((inlined, num_bytes, num_handles)) =
11346 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11347 {
11348 let member_inline_size =
11349 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
11350 decoder.context,
11351 );
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 = self
11365 .vendor_name
11366 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
11367 fidl::decode!(
11368 fidl::encoding::BoundedString<32>,
11369 D,
11370 val_ref,
11371 decoder,
11372 inner_offset,
11373 inner_depth
11374 )?;
11375 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11376 {
11377 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11378 }
11379 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11380 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11381 }
11382 }
11383
11384 next_offset += envelope_size;
11385 _next_ordinal_to_read += 1;
11386 if next_offset >= end_offset {
11387 return Ok(());
11388 }
11389
11390 while _next_ordinal_to_read < 4 {
11392 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11393 _next_ordinal_to_read += 1;
11394 next_offset += envelope_size;
11395 }
11396
11397 let next_out_of_line = decoder.next_out_of_line();
11398 let handles_before = decoder.remaining_handles();
11399 if let Some((inlined, num_bytes, num_handles)) =
11400 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11401 {
11402 let member_inline_size =
11403 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
11404 decoder.context,
11405 );
11406 if inlined != (member_inline_size <= 4) {
11407 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11408 }
11409 let inner_offset;
11410 let mut inner_depth = depth.clone();
11411 if inlined {
11412 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11413 inner_offset = next_offset;
11414 } else {
11415 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11416 inner_depth.increment()?;
11417 }
11418 let val_ref = self
11419 .vendor_model
11420 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
11421 fidl::decode!(
11422 fidl::encoding::BoundedString<32>,
11423 D,
11424 val_ref,
11425 decoder,
11426 inner_offset,
11427 inner_depth
11428 )?;
11429 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11430 {
11431 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11432 }
11433 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11434 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11435 }
11436 }
11437
11438 next_offset += envelope_size;
11439 _next_ordinal_to_read += 1;
11440 if next_offset >= end_offset {
11441 return Ok(());
11442 }
11443
11444 while _next_ordinal_to_read < 5 {
11446 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11447 _next_ordinal_to_read += 1;
11448 next_offset += envelope_size;
11449 }
11450
11451 let next_out_of_line = decoder.next_out_of_line();
11452 let handles_before = decoder.remaining_handles();
11453 if let Some((inlined, num_bytes, num_handles)) =
11454 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11455 {
11456 let member_inline_size =
11457 <fidl::encoding::BoundedString<16> as fidl::encoding::TypeMarker>::inline_size(
11458 decoder.context,
11459 );
11460 if inlined != (member_inline_size <= 4) {
11461 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11462 }
11463 let inner_offset;
11464 let mut inner_depth = depth.clone();
11465 if inlined {
11466 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11467 inner_offset = next_offset;
11468 } else {
11469 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11470 inner_depth.increment()?;
11471 }
11472 let val_ref = self
11473 .vendor_sw_version
11474 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<16>, D));
11475 fidl::decode!(
11476 fidl::encoding::BoundedString<16>,
11477 D,
11478 val_ref,
11479 decoder,
11480 inner_offset,
11481 inner_depth
11482 )?;
11483 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11484 {
11485 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11486 }
11487 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11488 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11489 }
11490 }
11491
11492 next_offset += envelope_size;
11493 _next_ordinal_to_read += 1;
11494 if next_offset >= end_offset {
11495 return Ok(());
11496 }
11497
11498 while _next_ordinal_to_read < 6 {
11500 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11501 _next_ordinal_to_read += 1;
11502 next_offset += envelope_size;
11503 }
11504
11505 let next_out_of_line = decoder.next_out_of_line();
11506 let handles_before = decoder.remaining_handles();
11507 if let Some((inlined, num_bytes, num_handles)) =
11508 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11509 {
11510 let member_inline_size =
11511 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
11512 decoder.context,
11513 );
11514 if inlined != (member_inline_size <= 4) {
11515 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11516 }
11517 let inner_offset;
11518 let mut inner_depth = depth.clone();
11519 if inlined {
11520 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11521 inner_offset = next_offset;
11522 } else {
11523 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11524 inner_depth.increment()?;
11525 }
11526 let val_ref = self
11527 .vendor_data_string
11528 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
11529 fidl::decode!(
11530 fidl::encoding::BoundedString<64>,
11531 D,
11532 val_ref,
11533 decoder,
11534 inner_offset,
11535 inner_depth
11536 )?;
11537 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11538 {
11539 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11540 }
11541 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11542 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11543 }
11544 }
11545
11546 next_offset += envelope_size;
11547
11548 while next_offset < end_offset {
11550 _next_ordinal_to_read += 1;
11551 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11552 next_offset += envelope_size;
11553 }
11554
11555 Ok(())
11556 }
11557 }
11558
11559 impl LeaderData {
11560 #[inline(always)]
11561 fn max_ordinal_present(&self) -> u64 {
11562 if let Some(_) = self.router_id {
11563 return 5;
11564 }
11565 if let Some(_) = self.stable_network_data_version {
11566 return 4;
11567 }
11568 if let Some(_) = self.network_data_version {
11569 return 3;
11570 }
11571 if let Some(_) = self.weight {
11572 return 2;
11573 }
11574 if let Some(_) = self.partition_id {
11575 return 1;
11576 }
11577 0
11578 }
11579 }
11580
11581 impl fidl::encoding::ValueTypeMarker for LeaderData {
11582 type Borrowed<'a> = &'a Self;
11583 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11584 value
11585 }
11586 }
11587
11588 unsafe impl fidl::encoding::TypeMarker for LeaderData {
11589 type Owned = Self;
11590
11591 #[inline(always)]
11592 fn inline_align(_context: fidl::encoding::Context) -> usize {
11593 8
11594 }
11595
11596 #[inline(always)]
11597 fn inline_size(_context: fidl::encoding::Context) -> usize {
11598 16
11599 }
11600 }
11601
11602 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LeaderData, D>
11603 for &LeaderData
11604 {
11605 unsafe fn encode(
11606 self,
11607 encoder: &mut fidl::encoding::Encoder<'_, D>,
11608 offset: usize,
11609 mut depth: fidl::encoding::Depth,
11610 ) -> fidl::Result<()> {
11611 encoder.debug_check_bounds::<LeaderData>(offset);
11612 let max_ordinal: u64 = self.max_ordinal_present();
11614 encoder.write_num(max_ordinal, offset);
11615 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11616 if max_ordinal == 0 {
11618 return Ok(());
11619 }
11620 depth.increment()?;
11621 let envelope_size = 8;
11622 let bytes_len = max_ordinal as usize * envelope_size;
11623 #[allow(unused_variables)]
11624 let offset = encoder.out_of_line_offset(bytes_len);
11625 let mut _prev_end_offset: usize = 0;
11626 if 1 > max_ordinal {
11627 return Ok(());
11628 }
11629
11630 let cur_offset: usize = (1 - 1) * envelope_size;
11633
11634 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11636
11637 fidl::encoding::encode_in_envelope_optional::<u32, D>(
11642 self.partition_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
11643 encoder,
11644 offset + cur_offset,
11645 depth,
11646 )?;
11647
11648 _prev_end_offset = cur_offset + envelope_size;
11649 if 2 > max_ordinal {
11650 return Ok(());
11651 }
11652
11653 let cur_offset: usize = (2 - 1) * envelope_size;
11656
11657 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11659
11660 fidl::encoding::encode_in_envelope_optional::<u8, D>(
11665 self.weight.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
11666 encoder,
11667 offset + cur_offset,
11668 depth,
11669 )?;
11670
11671 _prev_end_offset = cur_offset + envelope_size;
11672 if 3 > max_ordinal {
11673 return Ok(());
11674 }
11675
11676 let cur_offset: usize = (3 - 1) * envelope_size;
11679
11680 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11682
11683 fidl::encoding::encode_in_envelope_optional::<u8, D>(
11688 self.network_data_version
11689 .as_ref()
11690 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
11691 encoder,
11692 offset + cur_offset,
11693 depth,
11694 )?;
11695
11696 _prev_end_offset = cur_offset + envelope_size;
11697 if 4 > max_ordinal {
11698 return Ok(());
11699 }
11700
11701 let cur_offset: usize = (4 - 1) * envelope_size;
11704
11705 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11707
11708 fidl::encoding::encode_in_envelope_optional::<u8, D>(
11713 self.stable_network_data_version
11714 .as_ref()
11715 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
11716 encoder,
11717 offset + cur_offset,
11718 depth,
11719 )?;
11720
11721 _prev_end_offset = cur_offset + envelope_size;
11722 if 5 > max_ordinal {
11723 return Ok(());
11724 }
11725
11726 let cur_offset: usize = (5 - 1) * envelope_size;
11729
11730 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11732
11733 fidl::encoding::encode_in_envelope_optional::<u8, D>(
11738 self.router_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
11739 encoder,
11740 offset + cur_offset,
11741 depth,
11742 )?;
11743
11744 _prev_end_offset = cur_offset + envelope_size;
11745
11746 Ok(())
11747 }
11748 }
11749
11750 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LeaderData {
11751 #[inline(always)]
11752 fn new_empty() -> Self {
11753 Self::default()
11754 }
11755
11756 unsafe fn decode(
11757 &mut self,
11758 decoder: &mut fidl::encoding::Decoder<'_, D>,
11759 offset: usize,
11760 mut depth: fidl::encoding::Depth,
11761 ) -> fidl::Result<()> {
11762 decoder.debug_check_bounds::<Self>(offset);
11763 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11764 None => return Err(fidl::Error::NotNullable),
11765 Some(len) => len,
11766 };
11767 if len == 0 {
11769 return Ok(());
11770 };
11771 depth.increment()?;
11772 let envelope_size = 8;
11773 let bytes_len = len * envelope_size;
11774 let offset = decoder.out_of_line_offset(bytes_len)?;
11775 let mut _next_ordinal_to_read = 0;
11777 let mut next_offset = offset;
11778 let end_offset = offset + bytes_len;
11779 _next_ordinal_to_read += 1;
11780 if next_offset >= end_offset {
11781 return Ok(());
11782 }
11783
11784 while _next_ordinal_to_read < 1 {
11786 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11787 _next_ordinal_to_read += 1;
11788 next_offset += envelope_size;
11789 }
11790
11791 let next_out_of_line = decoder.next_out_of_line();
11792 let handles_before = decoder.remaining_handles();
11793 if let Some((inlined, num_bytes, num_handles)) =
11794 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11795 {
11796 let member_inline_size =
11797 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11798 if inlined != (member_inline_size <= 4) {
11799 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11800 }
11801 let inner_offset;
11802 let mut inner_depth = depth.clone();
11803 if inlined {
11804 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11805 inner_offset = next_offset;
11806 } else {
11807 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11808 inner_depth.increment()?;
11809 }
11810 let val_ref = self.partition_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
11811 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
11812 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11813 {
11814 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11815 }
11816 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11817 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11818 }
11819 }
11820
11821 next_offset += envelope_size;
11822 _next_ordinal_to_read += 1;
11823 if next_offset >= end_offset {
11824 return Ok(());
11825 }
11826
11827 while _next_ordinal_to_read < 2 {
11829 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11830 _next_ordinal_to_read += 1;
11831 next_offset += envelope_size;
11832 }
11833
11834 let next_out_of_line = decoder.next_out_of_line();
11835 let handles_before = decoder.remaining_handles();
11836 if let Some((inlined, num_bytes, num_handles)) =
11837 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11838 {
11839 let member_inline_size =
11840 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11841 if inlined != (member_inline_size <= 4) {
11842 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11843 }
11844 let inner_offset;
11845 let mut inner_depth = depth.clone();
11846 if inlined {
11847 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11848 inner_offset = next_offset;
11849 } else {
11850 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11851 inner_depth.increment()?;
11852 }
11853 let val_ref = self.weight.get_or_insert_with(|| fidl::new_empty!(u8, D));
11854 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
11855 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11856 {
11857 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11858 }
11859 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11860 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11861 }
11862 }
11863
11864 next_offset += envelope_size;
11865 _next_ordinal_to_read += 1;
11866 if next_offset >= end_offset {
11867 return Ok(());
11868 }
11869
11870 while _next_ordinal_to_read < 3 {
11872 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11873 _next_ordinal_to_read += 1;
11874 next_offset += envelope_size;
11875 }
11876
11877 let next_out_of_line = decoder.next_out_of_line();
11878 let handles_before = decoder.remaining_handles();
11879 if let Some((inlined, num_bytes, num_handles)) =
11880 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11881 {
11882 let member_inline_size =
11883 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11884 if inlined != (member_inline_size <= 4) {
11885 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11886 }
11887 let inner_offset;
11888 let mut inner_depth = depth.clone();
11889 if inlined {
11890 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11891 inner_offset = next_offset;
11892 } else {
11893 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11894 inner_depth.increment()?;
11895 }
11896 let val_ref =
11897 self.network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
11898 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
11899 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11900 {
11901 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11902 }
11903 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11904 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11905 }
11906 }
11907
11908 next_offset += envelope_size;
11909 _next_ordinal_to_read += 1;
11910 if next_offset >= end_offset {
11911 return Ok(());
11912 }
11913
11914 while _next_ordinal_to_read < 4 {
11916 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11917 _next_ordinal_to_read += 1;
11918 next_offset += envelope_size;
11919 }
11920
11921 let next_out_of_line = decoder.next_out_of_line();
11922 let handles_before = decoder.remaining_handles();
11923 if let Some((inlined, num_bytes, num_handles)) =
11924 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11925 {
11926 let member_inline_size =
11927 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11928 if inlined != (member_inline_size <= 4) {
11929 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11930 }
11931 let inner_offset;
11932 let mut inner_depth = depth.clone();
11933 if inlined {
11934 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11935 inner_offset = next_offset;
11936 } else {
11937 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11938 inner_depth.increment()?;
11939 }
11940 let val_ref =
11941 self.stable_network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
11942 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
11943 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11944 {
11945 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11946 }
11947 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11948 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11949 }
11950 }
11951
11952 next_offset += envelope_size;
11953 _next_ordinal_to_read += 1;
11954 if next_offset >= end_offset {
11955 return Ok(());
11956 }
11957
11958 while _next_ordinal_to_read < 5 {
11960 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11961 _next_ordinal_to_read += 1;
11962 next_offset += envelope_size;
11963 }
11964
11965 let next_out_of_line = decoder.next_out_of_line();
11966 let handles_before = decoder.remaining_handles();
11967 if let Some((inlined, num_bytes, num_handles)) =
11968 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11969 {
11970 let member_inline_size =
11971 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11972 if inlined != (member_inline_size <= 4) {
11973 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11974 }
11975 let inner_offset;
11976 let mut inner_depth = depth.clone();
11977 if inlined {
11978 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11979 inner_offset = next_offset;
11980 } else {
11981 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11982 inner_depth.increment()?;
11983 }
11984 let val_ref = self.router_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
11985 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
11986 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11987 {
11988 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11989 }
11990 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11991 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11992 }
11993 }
11994
11995 next_offset += envelope_size;
11996
11997 while next_offset < end_offset {
11999 _next_ordinal_to_read += 1;
12000 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12001 next_offset += envelope_size;
12002 }
12003
12004 Ok(())
12005 }
12006 }
12007
12008 impl LinkMetricsEntry {
12009 #[inline(always)]
12010 fn max_ordinal_present(&self) -> u64 {
12011 if let Some(_) = self.rssi {
12012 return 2;
12013 }
12014 if let Some(_) = self.link_margin {
12015 return 1;
12016 }
12017 0
12018 }
12019 }
12020
12021 impl fidl::encoding::ValueTypeMarker for LinkMetricsEntry {
12022 type Borrowed<'a> = &'a Self;
12023 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12024 value
12025 }
12026 }
12027
12028 unsafe impl fidl::encoding::TypeMarker for LinkMetricsEntry {
12029 type Owned = Self;
12030
12031 #[inline(always)]
12032 fn inline_align(_context: fidl::encoding::Context) -> usize {
12033 8
12034 }
12035
12036 #[inline(always)]
12037 fn inline_size(_context: fidl::encoding::Context) -> usize {
12038 16
12039 }
12040 }
12041
12042 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LinkMetricsEntry, D>
12043 for &LinkMetricsEntry
12044 {
12045 unsafe fn encode(
12046 self,
12047 encoder: &mut fidl::encoding::Encoder<'_, D>,
12048 offset: usize,
12049 mut depth: fidl::encoding::Depth,
12050 ) -> fidl::Result<()> {
12051 encoder.debug_check_bounds::<LinkMetricsEntry>(offset);
12052 let max_ordinal: u64 = self.max_ordinal_present();
12054 encoder.write_num(max_ordinal, offset);
12055 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12056 if max_ordinal == 0 {
12058 return Ok(());
12059 }
12060 depth.increment()?;
12061 let envelope_size = 8;
12062 let bytes_len = max_ordinal as usize * envelope_size;
12063 #[allow(unused_variables)]
12064 let offset = encoder.out_of_line_offset(bytes_len);
12065 let mut _prev_end_offset: usize = 0;
12066 if 1 > max_ordinal {
12067 return Ok(());
12068 }
12069
12070 let cur_offset: usize = (1 - 1) * envelope_size;
12073
12074 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12076
12077 fidl::encoding::encode_in_envelope_optional::<u8, D>(
12082 self.link_margin.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
12083 encoder,
12084 offset + cur_offset,
12085 depth,
12086 )?;
12087
12088 _prev_end_offset = cur_offset + envelope_size;
12089 if 2 > max_ordinal {
12090 return Ok(());
12091 }
12092
12093 let cur_offset: usize = (2 - 1) * envelope_size;
12096
12097 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12099
12100 fidl::encoding::encode_in_envelope_optional::<i8, D>(
12105 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
12106 encoder,
12107 offset + cur_offset,
12108 depth,
12109 )?;
12110
12111 _prev_end_offset = cur_offset + envelope_size;
12112
12113 Ok(())
12114 }
12115 }
12116
12117 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LinkMetricsEntry {
12118 #[inline(always)]
12119 fn new_empty() -> Self {
12120 Self::default()
12121 }
12122
12123 unsafe fn decode(
12124 &mut self,
12125 decoder: &mut fidl::encoding::Decoder<'_, D>,
12126 offset: usize,
12127 mut depth: fidl::encoding::Depth,
12128 ) -> fidl::Result<()> {
12129 decoder.debug_check_bounds::<Self>(offset);
12130 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12131 None => return Err(fidl::Error::NotNullable),
12132 Some(len) => len,
12133 };
12134 if len == 0 {
12136 return Ok(());
12137 };
12138 depth.increment()?;
12139 let envelope_size = 8;
12140 let bytes_len = len * envelope_size;
12141 let offset = decoder.out_of_line_offset(bytes_len)?;
12142 let mut _next_ordinal_to_read = 0;
12144 let mut next_offset = offset;
12145 let end_offset = offset + bytes_len;
12146 _next_ordinal_to_read += 1;
12147 if next_offset >= end_offset {
12148 return Ok(());
12149 }
12150
12151 while _next_ordinal_to_read < 1 {
12153 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12154 _next_ordinal_to_read += 1;
12155 next_offset += envelope_size;
12156 }
12157
12158 let next_out_of_line = decoder.next_out_of_line();
12159 let handles_before = decoder.remaining_handles();
12160 if let Some((inlined, num_bytes, num_handles)) =
12161 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12162 {
12163 let member_inline_size =
12164 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12165 if inlined != (member_inline_size <= 4) {
12166 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12167 }
12168 let inner_offset;
12169 let mut inner_depth = depth.clone();
12170 if inlined {
12171 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12172 inner_offset = next_offset;
12173 } else {
12174 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12175 inner_depth.increment()?;
12176 }
12177 let val_ref = self.link_margin.get_or_insert_with(|| fidl::new_empty!(u8, D));
12178 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
12179 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12180 {
12181 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12182 }
12183 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12184 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12185 }
12186 }
12187
12188 next_offset += envelope_size;
12189 _next_ordinal_to_read += 1;
12190 if next_offset >= end_offset {
12191 return Ok(());
12192 }
12193
12194 while _next_ordinal_to_read < 2 {
12196 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12197 _next_ordinal_to_read += 1;
12198 next_offset += envelope_size;
12199 }
12200
12201 let next_out_of_line = decoder.next_out_of_line();
12202 let handles_before = decoder.remaining_handles();
12203 if let Some((inlined, num_bytes, num_handles)) =
12204 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12205 {
12206 let member_inline_size =
12207 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12208 if inlined != (member_inline_size <= 4) {
12209 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12210 }
12211 let inner_offset;
12212 let mut inner_depth = depth.clone();
12213 if inlined {
12214 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12215 inner_offset = next_offset;
12216 } else {
12217 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12218 inner_depth.increment()?;
12219 }
12220 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
12221 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
12222 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12223 {
12224 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12225 }
12226 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12227 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12228 }
12229 }
12230
12231 next_offset += envelope_size;
12232
12233 while next_offset < end_offset {
12235 _next_ordinal_to_read += 1;
12236 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12237 next_offset += envelope_size;
12238 }
12239
12240 Ok(())
12241 }
12242 }
12243
12244 impl LowpanContextInfo {
12245 #[inline(always)]
12246 fn max_ordinal_present(&self) -> u64 {
12247 if let Some(_) = self.prefix {
12248 return 4;
12249 }
12250 if let Some(_) = self.stable {
12251 return 3;
12252 }
12253 if let Some(_) = self.compress_flag {
12254 return 2;
12255 }
12256 if let Some(_) = self.context_id {
12257 return 1;
12258 }
12259 0
12260 }
12261 }
12262
12263 impl fidl::encoding::ValueTypeMarker for LowpanContextInfo {
12264 type Borrowed<'a> = &'a Self;
12265 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12266 value
12267 }
12268 }
12269
12270 unsafe impl fidl::encoding::TypeMarker for LowpanContextInfo {
12271 type Owned = Self;
12272
12273 #[inline(always)]
12274 fn inline_align(_context: fidl::encoding::Context) -> usize {
12275 8
12276 }
12277
12278 #[inline(always)]
12279 fn inline_size(_context: fidl::encoding::Context) -> usize {
12280 16
12281 }
12282 }
12283
12284 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LowpanContextInfo, D>
12285 for &LowpanContextInfo
12286 {
12287 unsafe fn encode(
12288 self,
12289 encoder: &mut fidl::encoding::Encoder<'_, D>,
12290 offset: usize,
12291 mut depth: fidl::encoding::Depth,
12292 ) -> fidl::Result<()> {
12293 encoder.debug_check_bounds::<LowpanContextInfo>(offset);
12294 let max_ordinal: u64 = self.max_ordinal_present();
12296 encoder.write_num(max_ordinal, offset);
12297 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12298 if max_ordinal == 0 {
12300 return Ok(());
12301 }
12302 depth.increment()?;
12303 let envelope_size = 8;
12304 let bytes_len = max_ordinal as usize * envelope_size;
12305 #[allow(unused_variables)]
12306 let offset = encoder.out_of_line_offset(bytes_len);
12307 let mut _prev_end_offset: usize = 0;
12308 if 1 > max_ordinal {
12309 return Ok(());
12310 }
12311
12312 let cur_offset: usize = (1 - 1) * envelope_size;
12315
12316 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12318
12319 fidl::encoding::encode_in_envelope_optional::<u8, D>(
12324 self.context_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
12325 encoder,
12326 offset + cur_offset,
12327 depth,
12328 )?;
12329
12330 _prev_end_offset = cur_offset + envelope_size;
12331 if 2 > max_ordinal {
12332 return Ok(());
12333 }
12334
12335 let cur_offset: usize = (2 - 1) * envelope_size;
12338
12339 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12341
12342 fidl::encoding::encode_in_envelope_optional::<bool, D>(
12347 self.compress_flag.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12348 encoder,
12349 offset + cur_offset,
12350 depth,
12351 )?;
12352
12353 _prev_end_offset = cur_offset + envelope_size;
12354 if 3 > max_ordinal {
12355 return Ok(());
12356 }
12357
12358 let cur_offset: usize = (3 - 1) * envelope_size;
12361
12362 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12364
12365 fidl::encoding::encode_in_envelope_optional::<bool, D>(
12370 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12371 encoder,
12372 offset + cur_offset,
12373 depth,
12374 )?;
12375
12376 _prev_end_offset = cur_offset + envelope_size;
12377 if 4 > max_ordinal {
12378 return Ok(());
12379 }
12380
12381 let cur_offset: usize = (4 - 1) * envelope_size;
12384
12385 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12387
12388 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
12393 self.prefix.as_ref().map(
12394 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
12395 ),
12396 encoder,
12397 offset + cur_offset,
12398 depth,
12399 )?;
12400
12401 _prev_end_offset = cur_offset + envelope_size;
12402
12403 Ok(())
12404 }
12405 }
12406
12407 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LowpanContextInfo {
12408 #[inline(always)]
12409 fn new_empty() -> Self {
12410 Self::default()
12411 }
12412
12413 unsafe fn decode(
12414 &mut self,
12415 decoder: &mut fidl::encoding::Decoder<'_, D>,
12416 offset: usize,
12417 mut depth: fidl::encoding::Depth,
12418 ) -> fidl::Result<()> {
12419 decoder.debug_check_bounds::<Self>(offset);
12420 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12421 None => return Err(fidl::Error::NotNullable),
12422 Some(len) => len,
12423 };
12424 if len == 0 {
12426 return Ok(());
12427 };
12428 depth.increment()?;
12429 let envelope_size = 8;
12430 let bytes_len = len * envelope_size;
12431 let offset = decoder.out_of_line_offset(bytes_len)?;
12432 let mut _next_ordinal_to_read = 0;
12434 let mut next_offset = offset;
12435 let end_offset = offset + bytes_len;
12436 _next_ordinal_to_read += 1;
12437 if next_offset >= end_offset {
12438 return Ok(());
12439 }
12440
12441 while _next_ordinal_to_read < 1 {
12443 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12444 _next_ordinal_to_read += 1;
12445 next_offset += envelope_size;
12446 }
12447
12448 let next_out_of_line = decoder.next_out_of_line();
12449 let handles_before = decoder.remaining_handles();
12450 if let Some((inlined, num_bytes, num_handles)) =
12451 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12452 {
12453 let member_inline_size =
12454 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12455 if inlined != (member_inline_size <= 4) {
12456 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12457 }
12458 let inner_offset;
12459 let mut inner_depth = depth.clone();
12460 if inlined {
12461 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12462 inner_offset = next_offset;
12463 } else {
12464 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12465 inner_depth.increment()?;
12466 }
12467 let val_ref = self.context_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
12468 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
12469 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12470 {
12471 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12472 }
12473 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12474 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12475 }
12476 }
12477
12478 next_offset += envelope_size;
12479 _next_ordinal_to_read += 1;
12480 if next_offset >= end_offset {
12481 return Ok(());
12482 }
12483
12484 while _next_ordinal_to_read < 2 {
12486 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12487 _next_ordinal_to_read += 1;
12488 next_offset += envelope_size;
12489 }
12490
12491 let next_out_of_line = decoder.next_out_of_line();
12492 let handles_before = decoder.remaining_handles();
12493 if let Some((inlined, num_bytes, num_handles)) =
12494 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12495 {
12496 let member_inline_size =
12497 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12498 if inlined != (member_inline_size <= 4) {
12499 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12500 }
12501 let inner_offset;
12502 let mut inner_depth = depth.clone();
12503 if inlined {
12504 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12505 inner_offset = next_offset;
12506 } else {
12507 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12508 inner_depth.increment()?;
12509 }
12510 let val_ref = self.compress_flag.get_or_insert_with(|| fidl::new_empty!(bool, D));
12511 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
12512 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12513 {
12514 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12515 }
12516 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12517 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12518 }
12519 }
12520
12521 next_offset += envelope_size;
12522 _next_ordinal_to_read += 1;
12523 if next_offset >= end_offset {
12524 return Ok(());
12525 }
12526
12527 while _next_ordinal_to_read < 3 {
12529 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12530 _next_ordinal_to_read += 1;
12531 next_offset += envelope_size;
12532 }
12533
12534 let next_out_of_line = decoder.next_out_of_line();
12535 let handles_before = decoder.remaining_handles();
12536 if let Some((inlined, num_bytes, num_handles)) =
12537 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12538 {
12539 let member_inline_size =
12540 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12541 if inlined != (member_inline_size <= 4) {
12542 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12543 }
12544 let inner_offset;
12545 let mut inner_depth = depth.clone();
12546 if inlined {
12547 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12548 inner_offset = next_offset;
12549 } else {
12550 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12551 inner_depth.increment()?;
12552 }
12553 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
12554 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
12555 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12556 {
12557 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12558 }
12559 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12560 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12561 }
12562 }
12563
12564 next_offset += envelope_size;
12565 _next_ordinal_to_read += 1;
12566 if next_offset >= end_offset {
12567 return Ok(());
12568 }
12569
12570 while _next_ordinal_to_read < 4 {
12572 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12573 _next_ordinal_to_read += 1;
12574 next_offset += envelope_size;
12575 }
12576
12577 let next_out_of_line = decoder.next_out_of_line();
12578 let handles_before = decoder.remaining_handles();
12579 if let Some((inlined, num_bytes, num_handles)) =
12580 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12581 {
12582 let member_inline_size =
12583 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
12584 decoder.context,
12585 );
12586 if inlined != (member_inline_size <= 4) {
12587 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12588 }
12589 let inner_offset;
12590 let mut inner_depth = depth.clone();
12591 if inlined {
12592 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12593 inner_offset = next_offset;
12594 } else {
12595 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12596 inner_depth.increment()?;
12597 }
12598 let val_ref = self
12599 .prefix
12600 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
12601 fidl::decode!(
12602 fidl::encoding::BoundedString<64>,
12603 D,
12604 val_ref,
12605 decoder,
12606 inner_offset,
12607 inner_depth
12608 )?;
12609 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12610 {
12611 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12612 }
12613 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12614 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12615 }
12616 }
12617
12618 next_offset += envelope_size;
12619
12620 while next_offset < end_offset {
12622 _next_ordinal_to_read += 1;
12623 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12624 next_offset += envelope_size;
12625 }
12626
12627 Ok(())
12628 }
12629 }
12630
12631 impl MultiRadioNeighborInfo {
12632 #[inline(always)]
12633 fn max_ordinal_present(&self) -> u64 {
12634 if let Some(_) = self.radio_link_info {
12635 return 3;
12636 }
12637 if let Some(_) = self.thread_rloc {
12638 return 2;
12639 }
12640 if let Some(_) = self.extended_address {
12641 return 1;
12642 }
12643 0
12644 }
12645 }
12646
12647 impl fidl::encoding::ValueTypeMarker for MultiRadioNeighborInfo {
12648 type Borrowed<'a> = &'a Self;
12649 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12650 value
12651 }
12652 }
12653
12654 unsafe impl fidl::encoding::TypeMarker for MultiRadioNeighborInfo {
12655 type Owned = Self;
12656
12657 #[inline(always)]
12658 fn inline_align(_context: fidl::encoding::Context) -> usize {
12659 8
12660 }
12661
12662 #[inline(always)]
12663 fn inline_size(_context: fidl::encoding::Context) -> usize {
12664 16
12665 }
12666 }
12667
12668 unsafe impl<D: fidl::encoding::ResourceDialect>
12669 fidl::encoding::Encode<MultiRadioNeighborInfo, D> for &MultiRadioNeighborInfo
12670 {
12671 unsafe fn encode(
12672 self,
12673 encoder: &mut fidl::encoding::Encoder<'_, D>,
12674 offset: usize,
12675 mut depth: fidl::encoding::Depth,
12676 ) -> fidl::Result<()> {
12677 encoder.debug_check_bounds::<MultiRadioNeighborInfo>(offset);
12678 let max_ordinal: u64 = self.max_ordinal_present();
12680 encoder.write_num(max_ordinal, offset);
12681 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12682 if max_ordinal == 0 {
12684 return Ok(());
12685 }
12686 depth.increment()?;
12687 let envelope_size = 8;
12688 let bytes_len = max_ordinal as usize * envelope_size;
12689 #[allow(unused_variables)]
12690 let offset = encoder.out_of_line_offset(bytes_len);
12691 let mut _prev_end_offset: usize = 0;
12692 if 1 > max_ordinal {
12693 return Ok(());
12694 }
12695
12696 let cur_offset: usize = (1 - 1) * envelope_size;
12699
12700 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12702
12703 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
12708 self.extended_address.as_ref().map(
12709 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
12710 ),
12711 encoder,
12712 offset + cur_offset,
12713 depth,
12714 )?;
12715
12716 _prev_end_offset = cur_offset + envelope_size;
12717 if 2 > max_ordinal {
12718 return Ok(());
12719 }
12720
12721 let cur_offset: usize = (2 - 1) * envelope_size;
12724
12725 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12727
12728 fidl::encoding::encode_in_envelope_optional::<u16, D>(
12733 self.thread_rloc.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
12734 encoder,
12735 offset + cur_offset,
12736 depth,
12737 )?;
12738
12739 _prev_end_offset = cur_offset + envelope_size;
12740 if 3 > max_ordinal {
12741 return Ok(());
12742 }
12743
12744 let cur_offset: usize = (3 - 1) * envelope_size;
12747
12748 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12750
12751 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<RadioLinkInfo, 5>, D>(
12756 self.radio_link_info.as_ref().map(<fidl::encoding::Vector<RadioLinkInfo, 5> as fidl::encoding::ValueTypeMarker>::borrow),
12757 encoder, offset + cur_offset, depth
12758 )?;
12759
12760 _prev_end_offset = cur_offset + envelope_size;
12761
12762 Ok(())
12763 }
12764 }
12765
12766 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12767 for MultiRadioNeighborInfo
12768 {
12769 #[inline(always)]
12770 fn new_empty() -> Self {
12771 Self::default()
12772 }
12773
12774 unsafe fn decode(
12775 &mut self,
12776 decoder: &mut fidl::encoding::Decoder<'_, D>,
12777 offset: usize,
12778 mut depth: fidl::encoding::Depth,
12779 ) -> fidl::Result<()> {
12780 decoder.debug_check_bounds::<Self>(offset);
12781 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12782 None => return Err(fidl::Error::NotNullable),
12783 Some(len) => len,
12784 };
12785 if len == 0 {
12787 return Ok(());
12788 };
12789 depth.increment()?;
12790 let envelope_size = 8;
12791 let bytes_len = len * envelope_size;
12792 let offset = decoder.out_of_line_offset(bytes_len)?;
12793 let mut _next_ordinal_to_read = 0;
12795 let mut next_offset = offset;
12796 let end_offset = offset + bytes_len;
12797 _next_ordinal_to_read += 1;
12798 if next_offset >= end_offset {
12799 return Ok(());
12800 }
12801
12802 while _next_ordinal_to_read < 1 {
12804 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12805 _next_ordinal_to_read += 1;
12806 next_offset += envelope_size;
12807 }
12808
12809 let next_out_of_line = decoder.next_out_of_line();
12810 let handles_before = decoder.remaining_handles();
12811 if let Some((inlined, num_bytes, num_handles)) =
12812 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12813 {
12814 let member_inline_size =
12815 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
12816 decoder.context,
12817 );
12818 if inlined != (member_inline_size <= 4) {
12819 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12820 }
12821 let inner_offset;
12822 let mut inner_depth = depth.clone();
12823 if inlined {
12824 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12825 inner_offset = next_offset;
12826 } else {
12827 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12828 inner_depth.increment()?;
12829 }
12830 let val_ref = self
12831 .extended_address
12832 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
12833 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
12834 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12835 {
12836 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12837 }
12838 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12839 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12840 }
12841 }
12842
12843 next_offset += envelope_size;
12844 _next_ordinal_to_read += 1;
12845 if next_offset >= end_offset {
12846 return Ok(());
12847 }
12848
12849 while _next_ordinal_to_read < 2 {
12851 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12852 _next_ordinal_to_read += 1;
12853 next_offset += envelope_size;
12854 }
12855
12856 let next_out_of_line = decoder.next_out_of_line();
12857 let handles_before = decoder.remaining_handles();
12858 if let Some((inlined, num_bytes, num_handles)) =
12859 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12860 {
12861 let member_inline_size =
12862 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12863 if inlined != (member_inline_size <= 4) {
12864 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12865 }
12866 let inner_offset;
12867 let mut inner_depth = depth.clone();
12868 if inlined {
12869 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12870 inner_offset = next_offset;
12871 } else {
12872 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12873 inner_depth.increment()?;
12874 }
12875 let val_ref = self.thread_rloc.get_or_insert_with(|| fidl::new_empty!(u16, D));
12876 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
12877 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12878 {
12879 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12880 }
12881 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12882 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12883 }
12884 }
12885
12886 next_offset += envelope_size;
12887 _next_ordinal_to_read += 1;
12888 if next_offset >= end_offset {
12889 return Ok(());
12890 }
12891
12892 while _next_ordinal_to_read < 3 {
12894 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12895 _next_ordinal_to_read += 1;
12896 next_offset += envelope_size;
12897 }
12898
12899 let next_out_of_line = decoder.next_out_of_line();
12900 let handles_before = decoder.remaining_handles();
12901 if let Some((inlined, num_bytes, num_handles)) =
12902 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12903 {
12904 let member_inline_size = <fidl::encoding::Vector<RadioLinkInfo, 5> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12905 if inlined != (member_inline_size <= 4) {
12906 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12907 }
12908 let inner_offset;
12909 let mut inner_depth = depth.clone();
12910 if inlined {
12911 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12912 inner_offset = next_offset;
12913 } else {
12914 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12915 inner_depth.increment()?;
12916 }
12917 let val_ref = self.radio_link_info.get_or_insert_with(
12918 || fidl::new_empty!(fidl::encoding::Vector<RadioLinkInfo, 5>, D),
12919 );
12920 fidl::decode!(fidl::encoding::Vector<RadioLinkInfo, 5>, D, val_ref, decoder, inner_offset, inner_depth)?;
12921 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12922 {
12923 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12924 }
12925 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12926 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12927 }
12928 }
12929
12930 next_offset += envelope_size;
12931
12932 while next_offset < end_offset {
12934 _next_ordinal_to_read += 1;
12935 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12936 next_offset += envelope_size;
12937 }
12938
12939 Ok(())
12940 }
12941 }
12942
12943 impl Nat64ErrorCounters {
12944 #[inline(always)]
12945 fn max_ordinal_present(&self) -> u64 {
12946 if let Some(_) = self.no_mapping {
12947 return 4;
12948 }
12949 if let Some(_) = self.unsupported_protocol {
12950 return 3;
12951 }
12952 if let Some(_) = self.illegal_packet {
12953 return 2;
12954 }
12955 if let Some(_) = self.unknown {
12956 return 1;
12957 }
12958 0
12959 }
12960 }
12961
12962 impl fidl::encoding::ValueTypeMarker for Nat64ErrorCounters {
12963 type Borrowed<'a> = &'a Self;
12964 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12965 value
12966 }
12967 }
12968
12969 unsafe impl fidl::encoding::TypeMarker for Nat64ErrorCounters {
12970 type Owned = Self;
12971
12972 #[inline(always)]
12973 fn inline_align(_context: fidl::encoding::Context) -> usize {
12974 8
12975 }
12976
12977 #[inline(always)]
12978 fn inline_size(_context: fidl::encoding::Context) -> usize {
12979 16
12980 }
12981 }
12982
12983 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64ErrorCounters, D>
12984 for &Nat64ErrorCounters
12985 {
12986 unsafe fn encode(
12987 self,
12988 encoder: &mut fidl::encoding::Encoder<'_, D>,
12989 offset: usize,
12990 mut depth: fidl::encoding::Depth,
12991 ) -> fidl::Result<()> {
12992 encoder.debug_check_bounds::<Nat64ErrorCounters>(offset);
12993 let max_ordinal: u64 = self.max_ordinal_present();
12995 encoder.write_num(max_ordinal, offset);
12996 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12997 if max_ordinal == 0 {
12999 return Ok(());
13000 }
13001 depth.increment()?;
13002 let envelope_size = 8;
13003 let bytes_len = max_ordinal as usize * envelope_size;
13004 #[allow(unused_variables)]
13005 let offset = encoder.out_of_line_offset(bytes_len);
13006 let mut _prev_end_offset: usize = 0;
13007 if 1 > max_ordinal {
13008 return Ok(());
13009 }
13010
13011 let cur_offset: usize = (1 - 1) * envelope_size;
13014
13015 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13017
13018 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
13023 self.unknown
13024 .as_ref()
13025 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
13026 encoder,
13027 offset + cur_offset,
13028 depth,
13029 )?;
13030
13031 _prev_end_offset = cur_offset + envelope_size;
13032 if 2 > max_ordinal {
13033 return Ok(());
13034 }
13035
13036 let cur_offset: usize = (2 - 1) * envelope_size;
13039
13040 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13042
13043 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
13048 self.illegal_packet
13049 .as_ref()
13050 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
13051 encoder,
13052 offset + cur_offset,
13053 depth,
13054 )?;
13055
13056 _prev_end_offset = cur_offset + envelope_size;
13057 if 3 > max_ordinal {
13058 return Ok(());
13059 }
13060
13061 let cur_offset: usize = (3 - 1) * envelope_size;
13064
13065 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13067
13068 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
13073 self.unsupported_protocol
13074 .as_ref()
13075 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
13076 encoder,
13077 offset + cur_offset,
13078 depth,
13079 )?;
13080
13081 _prev_end_offset = cur_offset + envelope_size;
13082 if 4 > max_ordinal {
13083 return Ok(());
13084 }
13085
13086 let cur_offset: usize = (4 - 1) * envelope_size;
13089
13090 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13092
13093 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
13098 self.no_mapping
13099 .as_ref()
13100 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
13101 encoder,
13102 offset + cur_offset,
13103 depth,
13104 )?;
13105
13106 _prev_end_offset = cur_offset + envelope_size;
13107
13108 Ok(())
13109 }
13110 }
13111
13112 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64ErrorCounters {
13113 #[inline(always)]
13114 fn new_empty() -> Self {
13115 Self::default()
13116 }
13117
13118 unsafe fn decode(
13119 &mut self,
13120 decoder: &mut fidl::encoding::Decoder<'_, D>,
13121 offset: usize,
13122 mut depth: fidl::encoding::Depth,
13123 ) -> fidl::Result<()> {
13124 decoder.debug_check_bounds::<Self>(offset);
13125 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13126 None => return Err(fidl::Error::NotNullable),
13127 Some(len) => len,
13128 };
13129 if len == 0 {
13131 return Ok(());
13132 };
13133 depth.increment()?;
13134 let envelope_size = 8;
13135 let bytes_len = len * envelope_size;
13136 let offset = decoder.out_of_line_offset(bytes_len)?;
13137 let mut _next_ordinal_to_read = 0;
13139 let mut next_offset = offset;
13140 let end_offset = offset + bytes_len;
13141 _next_ordinal_to_read += 1;
13142 if next_offset >= end_offset {
13143 return Ok(());
13144 }
13145
13146 while _next_ordinal_to_read < 1 {
13148 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13149 _next_ordinal_to_read += 1;
13150 next_offset += envelope_size;
13151 }
13152
13153 let next_out_of_line = decoder.next_out_of_line();
13154 let handles_before = decoder.remaining_handles();
13155 if let Some((inlined, num_bytes, num_handles)) =
13156 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13157 {
13158 let member_inline_size =
13159 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
13160 decoder.context,
13161 );
13162 if inlined != (member_inline_size <= 4) {
13163 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13164 }
13165 let inner_offset;
13166 let mut inner_depth = depth.clone();
13167 if inlined {
13168 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13169 inner_offset = next_offset;
13170 } else {
13171 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13172 inner_depth.increment()?;
13173 }
13174 let val_ref =
13175 self.unknown.get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
13176 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
13177 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13178 {
13179 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13180 }
13181 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13182 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13183 }
13184 }
13185
13186 next_offset += envelope_size;
13187 _next_ordinal_to_read += 1;
13188 if next_offset >= end_offset {
13189 return Ok(());
13190 }
13191
13192 while _next_ordinal_to_read < 2 {
13194 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13195 _next_ordinal_to_read += 1;
13196 next_offset += envelope_size;
13197 }
13198
13199 let next_out_of_line = decoder.next_out_of_line();
13200 let handles_before = decoder.remaining_handles();
13201 if let Some((inlined, num_bytes, num_handles)) =
13202 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13203 {
13204 let member_inline_size =
13205 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
13206 decoder.context,
13207 );
13208 if inlined != (member_inline_size <= 4) {
13209 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13210 }
13211 let inner_offset;
13212 let mut inner_depth = depth.clone();
13213 if inlined {
13214 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13215 inner_offset = next_offset;
13216 } else {
13217 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13218 inner_depth.increment()?;
13219 }
13220 let val_ref = self
13221 .illegal_packet
13222 .get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
13223 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
13224 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13225 {
13226 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13227 }
13228 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13229 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13230 }
13231 }
13232
13233 next_offset += envelope_size;
13234 _next_ordinal_to_read += 1;
13235 if next_offset >= end_offset {
13236 return Ok(());
13237 }
13238
13239 while _next_ordinal_to_read < 3 {
13241 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13242 _next_ordinal_to_read += 1;
13243 next_offset += envelope_size;
13244 }
13245
13246 let next_out_of_line = decoder.next_out_of_line();
13247 let handles_before = decoder.remaining_handles();
13248 if let Some((inlined, num_bytes, num_handles)) =
13249 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13250 {
13251 let member_inline_size =
13252 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
13253 decoder.context,
13254 );
13255 if inlined != (member_inline_size <= 4) {
13256 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13257 }
13258 let inner_offset;
13259 let mut inner_depth = depth.clone();
13260 if inlined {
13261 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13262 inner_offset = next_offset;
13263 } else {
13264 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13265 inner_depth.increment()?;
13266 }
13267 let val_ref = self
13268 .unsupported_protocol
13269 .get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
13270 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
13271 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13272 {
13273 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13274 }
13275 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13276 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13277 }
13278 }
13279
13280 next_offset += envelope_size;
13281 _next_ordinal_to_read += 1;
13282 if next_offset >= end_offset {
13283 return Ok(());
13284 }
13285
13286 while _next_ordinal_to_read < 4 {
13288 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13289 _next_ordinal_to_read += 1;
13290 next_offset += envelope_size;
13291 }
13292
13293 let next_out_of_line = decoder.next_out_of_line();
13294 let handles_before = decoder.remaining_handles();
13295 if let Some((inlined, num_bytes, num_handles)) =
13296 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13297 {
13298 let member_inline_size =
13299 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
13300 decoder.context,
13301 );
13302 if inlined != (member_inline_size <= 4) {
13303 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13304 }
13305 let inner_offset;
13306 let mut inner_depth = depth.clone();
13307 if inlined {
13308 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13309 inner_offset = next_offset;
13310 } else {
13311 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13312 inner_depth.increment()?;
13313 }
13314 let val_ref =
13315 self.no_mapping.get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
13316 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
13317 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13318 {
13319 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13320 }
13321 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13322 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13323 }
13324 }
13325
13326 next_offset += envelope_size;
13327
13328 while next_offset < end_offset {
13330 _next_ordinal_to_read += 1;
13331 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13332 next_offset += envelope_size;
13333 }
13334
13335 Ok(())
13336 }
13337 }
13338
13339 impl Nat64Info {
13340 #[inline(always)]
13341 fn max_ordinal_present(&self) -> u64 {
13342 if let Some(_) = self.nat64_protocol_counters {
13343 return 4;
13344 }
13345 if let Some(_) = self.nat64_error_counters {
13346 return 3;
13347 }
13348 if let Some(_) = self.nat64_mappings {
13349 return 2;
13350 }
13351 if let Some(_) = self.nat64_state {
13352 return 1;
13353 }
13354 0
13355 }
13356 }
13357
13358 impl fidl::encoding::ValueTypeMarker for Nat64Info {
13359 type Borrowed<'a> = &'a Self;
13360 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13361 value
13362 }
13363 }
13364
13365 unsafe impl fidl::encoding::TypeMarker for Nat64Info {
13366 type Owned = Self;
13367
13368 #[inline(always)]
13369 fn inline_align(_context: fidl::encoding::Context) -> usize {
13370 8
13371 }
13372
13373 #[inline(always)]
13374 fn inline_size(_context: fidl::encoding::Context) -> usize {
13375 16
13376 }
13377 }
13378
13379 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64Info, D>
13380 for &Nat64Info
13381 {
13382 unsafe fn encode(
13383 self,
13384 encoder: &mut fidl::encoding::Encoder<'_, D>,
13385 offset: usize,
13386 mut depth: fidl::encoding::Depth,
13387 ) -> fidl::Result<()> {
13388 encoder.debug_check_bounds::<Nat64Info>(offset);
13389 let max_ordinal: u64 = self.max_ordinal_present();
13391 encoder.write_num(max_ordinal, offset);
13392 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13393 if max_ordinal == 0 {
13395 return Ok(());
13396 }
13397 depth.increment()?;
13398 let envelope_size = 8;
13399 let bytes_len = max_ordinal as usize * envelope_size;
13400 #[allow(unused_variables)]
13401 let offset = encoder.out_of_line_offset(bytes_len);
13402 let mut _prev_end_offset: usize = 0;
13403 if 1 > max_ordinal {
13404 return Ok(());
13405 }
13406
13407 let cur_offset: usize = (1 - 1) * envelope_size;
13410
13411 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13413
13414 fidl::encoding::encode_in_envelope_optional::<BorderRoutingNat64State, D>(
13419 self.nat64_state
13420 .as_ref()
13421 .map(<BorderRoutingNat64State as fidl::encoding::ValueTypeMarker>::borrow),
13422 encoder,
13423 offset + cur_offset,
13424 depth,
13425 )?;
13426
13427 _prev_end_offset = cur_offset + envelope_size;
13428 if 2 > max_ordinal {
13429 return Ok(());
13430 }
13431
13432 let cur_offset: usize = (2 - 1) * envelope_size;
13435
13436 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13438
13439 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Nat64Mapping>, D>(
13444 self.nat64_mappings.as_ref().map(<fidl::encoding::UnboundedVector<Nat64Mapping> as fidl::encoding::ValueTypeMarker>::borrow),
13445 encoder, offset + cur_offset, depth
13446 )?;
13447
13448 _prev_end_offset = cur_offset + envelope_size;
13449 if 3 > max_ordinal {
13450 return Ok(());
13451 }
13452
13453 let cur_offset: usize = (3 - 1) * envelope_size;
13456
13457 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13459
13460 fidl::encoding::encode_in_envelope_optional::<Nat64ErrorCounters, D>(
13465 self.nat64_error_counters
13466 .as_ref()
13467 .map(<Nat64ErrorCounters as fidl::encoding::ValueTypeMarker>::borrow),
13468 encoder,
13469 offset + cur_offset,
13470 depth,
13471 )?;
13472
13473 _prev_end_offset = cur_offset + envelope_size;
13474 if 4 > max_ordinal {
13475 return Ok(());
13476 }
13477
13478 let cur_offset: usize = (4 - 1) * envelope_size;
13481
13482 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13484
13485 fidl::encoding::encode_in_envelope_optional::<Nat64ProtocolCounters, D>(
13490 self.nat64_protocol_counters
13491 .as_ref()
13492 .map(<Nat64ProtocolCounters as fidl::encoding::ValueTypeMarker>::borrow),
13493 encoder,
13494 offset + cur_offset,
13495 depth,
13496 )?;
13497
13498 _prev_end_offset = cur_offset + envelope_size;
13499
13500 Ok(())
13501 }
13502 }
13503
13504 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64Info {
13505 #[inline(always)]
13506 fn new_empty() -> Self {
13507 Self::default()
13508 }
13509
13510 unsafe fn decode(
13511 &mut self,
13512 decoder: &mut fidl::encoding::Decoder<'_, D>,
13513 offset: usize,
13514 mut depth: fidl::encoding::Depth,
13515 ) -> fidl::Result<()> {
13516 decoder.debug_check_bounds::<Self>(offset);
13517 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13518 None => return Err(fidl::Error::NotNullable),
13519 Some(len) => len,
13520 };
13521 if len == 0 {
13523 return Ok(());
13524 };
13525 depth.increment()?;
13526 let envelope_size = 8;
13527 let bytes_len = len * envelope_size;
13528 let offset = decoder.out_of_line_offset(bytes_len)?;
13529 let mut _next_ordinal_to_read = 0;
13531 let mut next_offset = offset;
13532 let end_offset = offset + bytes_len;
13533 _next_ordinal_to_read += 1;
13534 if next_offset >= end_offset {
13535 return Ok(());
13536 }
13537
13538 while _next_ordinal_to_read < 1 {
13540 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13541 _next_ordinal_to_read += 1;
13542 next_offset += envelope_size;
13543 }
13544
13545 let next_out_of_line = decoder.next_out_of_line();
13546 let handles_before = decoder.remaining_handles();
13547 if let Some((inlined, num_bytes, num_handles)) =
13548 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13549 {
13550 let member_inline_size =
13551 <BorderRoutingNat64State as fidl::encoding::TypeMarker>::inline_size(
13552 decoder.context,
13553 );
13554 if inlined != (member_inline_size <= 4) {
13555 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13556 }
13557 let inner_offset;
13558 let mut inner_depth = depth.clone();
13559 if inlined {
13560 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13561 inner_offset = next_offset;
13562 } else {
13563 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13564 inner_depth.increment()?;
13565 }
13566 let val_ref = self
13567 .nat64_state
13568 .get_or_insert_with(|| fidl::new_empty!(BorderRoutingNat64State, D));
13569 fidl::decode!(
13570 BorderRoutingNat64State,
13571 D,
13572 val_ref,
13573 decoder,
13574 inner_offset,
13575 inner_depth
13576 )?;
13577 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13578 {
13579 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13580 }
13581 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13582 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13583 }
13584 }
13585
13586 next_offset += envelope_size;
13587 _next_ordinal_to_read += 1;
13588 if next_offset >= end_offset {
13589 return Ok(());
13590 }
13591
13592 while _next_ordinal_to_read < 2 {
13594 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13595 _next_ordinal_to_read += 1;
13596 next_offset += envelope_size;
13597 }
13598
13599 let next_out_of_line = decoder.next_out_of_line();
13600 let handles_before = decoder.remaining_handles();
13601 if let Some((inlined, num_bytes, num_handles)) =
13602 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13603 {
13604 let member_inline_size = <fidl::encoding::UnboundedVector<Nat64Mapping> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13605 if inlined != (member_inline_size <= 4) {
13606 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13607 }
13608 let inner_offset;
13609 let mut inner_depth = depth.clone();
13610 if inlined {
13611 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13612 inner_offset = next_offset;
13613 } else {
13614 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13615 inner_depth.increment()?;
13616 }
13617 let val_ref = self.nat64_mappings.get_or_insert_with(|| {
13618 fidl::new_empty!(fidl::encoding::UnboundedVector<Nat64Mapping>, D)
13619 });
13620 fidl::decode!(
13621 fidl::encoding::UnboundedVector<Nat64Mapping>,
13622 D,
13623 val_ref,
13624 decoder,
13625 inner_offset,
13626 inner_depth
13627 )?;
13628 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13629 {
13630 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13631 }
13632 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13633 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13634 }
13635 }
13636
13637 next_offset += envelope_size;
13638 _next_ordinal_to_read += 1;
13639 if next_offset >= end_offset {
13640 return Ok(());
13641 }
13642
13643 while _next_ordinal_to_read < 3 {
13645 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13646 _next_ordinal_to_read += 1;
13647 next_offset += envelope_size;
13648 }
13649
13650 let next_out_of_line = decoder.next_out_of_line();
13651 let handles_before = decoder.remaining_handles();
13652 if let Some((inlined, num_bytes, num_handles)) =
13653 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13654 {
13655 let member_inline_size =
13656 <Nat64ErrorCounters as fidl::encoding::TypeMarker>::inline_size(
13657 decoder.context,
13658 );
13659 if inlined != (member_inline_size <= 4) {
13660 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13661 }
13662 let inner_offset;
13663 let mut inner_depth = depth.clone();
13664 if inlined {
13665 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13666 inner_offset = next_offset;
13667 } else {
13668 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13669 inner_depth.increment()?;
13670 }
13671 let val_ref = self
13672 .nat64_error_counters
13673 .get_or_insert_with(|| fidl::new_empty!(Nat64ErrorCounters, D));
13674 fidl::decode!(Nat64ErrorCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
13675 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13676 {
13677 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13678 }
13679 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13680 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13681 }
13682 }
13683
13684 next_offset += envelope_size;
13685 _next_ordinal_to_read += 1;
13686 if next_offset >= end_offset {
13687 return Ok(());
13688 }
13689
13690 while _next_ordinal_to_read < 4 {
13692 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13693 _next_ordinal_to_read += 1;
13694 next_offset += envelope_size;
13695 }
13696
13697 let next_out_of_line = decoder.next_out_of_line();
13698 let handles_before = decoder.remaining_handles();
13699 if let Some((inlined, num_bytes, num_handles)) =
13700 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13701 {
13702 let member_inline_size =
13703 <Nat64ProtocolCounters as fidl::encoding::TypeMarker>::inline_size(
13704 decoder.context,
13705 );
13706 if inlined != (member_inline_size <= 4) {
13707 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13708 }
13709 let inner_offset;
13710 let mut inner_depth = depth.clone();
13711 if inlined {
13712 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13713 inner_offset = next_offset;
13714 } else {
13715 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13716 inner_depth.increment()?;
13717 }
13718 let val_ref = self
13719 .nat64_protocol_counters
13720 .get_or_insert_with(|| fidl::new_empty!(Nat64ProtocolCounters, D));
13721 fidl::decode!(
13722 Nat64ProtocolCounters,
13723 D,
13724 val_ref,
13725 decoder,
13726 inner_offset,
13727 inner_depth
13728 )?;
13729 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13730 {
13731 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13732 }
13733 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13734 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13735 }
13736 }
13737
13738 next_offset += envelope_size;
13739
13740 while next_offset < end_offset {
13742 _next_ordinal_to_read += 1;
13743 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13744 next_offset += envelope_size;
13745 }
13746
13747 Ok(())
13748 }
13749 }
13750
13751 impl Nat64Mapping {
13752 #[inline(always)]
13753 fn max_ordinal_present(&self) -> u64 {
13754 if let Some(_) = self.counters {
13755 return 5;
13756 }
13757 if let Some(_) = self.remaining_time_ms {
13758 return 4;
13759 }
13760 if let Some(_) = self.ip6_addr {
13761 return 3;
13762 }
13763 if let Some(_) = self.ip4_addr {
13764 return 2;
13765 }
13766 if let Some(_) = self.mapping_id {
13767 return 1;
13768 }
13769 0
13770 }
13771 }
13772
13773 impl fidl::encoding::ValueTypeMarker for Nat64Mapping {
13774 type Borrowed<'a> = &'a Self;
13775 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13776 value
13777 }
13778 }
13779
13780 unsafe impl fidl::encoding::TypeMarker for Nat64Mapping {
13781 type Owned = Self;
13782
13783 #[inline(always)]
13784 fn inline_align(_context: fidl::encoding::Context) -> usize {
13785 8
13786 }
13787
13788 #[inline(always)]
13789 fn inline_size(_context: fidl::encoding::Context) -> usize {
13790 16
13791 }
13792 }
13793
13794 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64Mapping, D>
13795 for &Nat64Mapping
13796 {
13797 unsafe fn encode(
13798 self,
13799 encoder: &mut fidl::encoding::Encoder<'_, D>,
13800 offset: usize,
13801 mut depth: fidl::encoding::Depth,
13802 ) -> fidl::Result<()> {
13803 encoder.debug_check_bounds::<Nat64Mapping>(offset);
13804 let max_ordinal: u64 = self.max_ordinal_present();
13806 encoder.write_num(max_ordinal, offset);
13807 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13808 if max_ordinal == 0 {
13810 return Ok(());
13811 }
13812 depth.increment()?;
13813 let envelope_size = 8;
13814 let bytes_len = max_ordinal as usize * envelope_size;
13815 #[allow(unused_variables)]
13816 let offset = encoder.out_of_line_offset(bytes_len);
13817 let mut _prev_end_offset: usize = 0;
13818 if 1 > max_ordinal {
13819 return Ok(());
13820 }
13821
13822 let cur_offset: usize = (1 - 1) * envelope_size;
13825
13826 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13828
13829 fidl::encoding::encode_in_envelope_optional::<u64, D>(
13834 self.mapping_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
13835 encoder,
13836 offset + cur_offset,
13837 depth,
13838 )?;
13839
13840 _prev_end_offset = cur_offset + envelope_size;
13841 if 2 > max_ordinal {
13842 return Ok(());
13843 }
13844
13845 let cur_offset: usize = (2 - 1) * envelope_size;
13848
13849 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13851
13852 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
13857 self.ip4_addr.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
13858 encoder, offset + cur_offset, depth
13859 )?;
13860
13861 _prev_end_offset = cur_offset + envelope_size;
13862 if 3 > max_ordinal {
13863 return Ok(());
13864 }
13865
13866 let cur_offset: usize = (3 - 1) * envelope_size;
13869
13870 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13872
13873 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
13878 self.ip6_addr.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
13879 encoder, offset + cur_offset, depth
13880 )?;
13881
13882 _prev_end_offset = cur_offset + envelope_size;
13883 if 4 > max_ordinal {
13884 return Ok(());
13885 }
13886
13887 let cur_offset: usize = (4 - 1) * envelope_size;
13890
13891 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13893
13894 fidl::encoding::encode_in_envelope_optional::<u32, D>(
13899 self.remaining_time_ms
13900 .as_ref()
13901 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13902 encoder,
13903 offset + cur_offset,
13904 depth,
13905 )?;
13906
13907 _prev_end_offset = cur_offset + envelope_size;
13908 if 5 > max_ordinal {
13909 return Ok(());
13910 }
13911
13912 let cur_offset: usize = (5 - 1) * envelope_size;
13915
13916 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13918
13919 fidl::encoding::encode_in_envelope_optional::<Nat64ProtocolCounters, D>(
13924 self.counters
13925 .as_ref()
13926 .map(<Nat64ProtocolCounters as fidl::encoding::ValueTypeMarker>::borrow),
13927 encoder,
13928 offset + cur_offset,
13929 depth,
13930 )?;
13931
13932 _prev_end_offset = cur_offset + envelope_size;
13933
13934 Ok(())
13935 }
13936 }
13937
13938 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64Mapping {
13939 #[inline(always)]
13940 fn new_empty() -> Self {
13941 Self::default()
13942 }
13943
13944 unsafe fn decode(
13945 &mut self,
13946 decoder: &mut fidl::encoding::Decoder<'_, D>,
13947 offset: usize,
13948 mut depth: fidl::encoding::Depth,
13949 ) -> fidl::Result<()> {
13950 decoder.debug_check_bounds::<Self>(offset);
13951 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13952 None => return Err(fidl::Error::NotNullable),
13953 Some(len) => len,
13954 };
13955 if len == 0 {
13957 return Ok(());
13958 };
13959 depth.increment()?;
13960 let envelope_size = 8;
13961 let bytes_len = len * envelope_size;
13962 let offset = decoder.out_of_line_offset(bytes_len)?;
13963 let mut _next_ordinal_to_read = 0;
13965 let mut next_offset = offset;
13966 let end_offset = offset + bytes_len;
13967 _next_ordinal_to_read += 1;
13968 if next_offset >= end_offset {
13969 return Ok(());
13970 }
13971
13972 while _next_ordinal_to_read < 1 {
13974 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13975 _next_ordinal_to_read += 1;
13976 next_offset += envelope_size;
13977 }
13978
13979 let next_out_of_line = decoder.next_out_of_line();
13980 let handles_before = decoder.remaining_handles();
13981 if let Some((inlined, num_bytes, num_handles)) =
13982 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13983 {
13984 let member_inline_size =
13985 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13986 if inlined != (member_inline_size <= 4) {
13987 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13988 }
13989 let inner_offset;
13990 let mut inner_depth = depth.clone();
13991 if inlined {
13992 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13993 inner_offset = next_offset;
13994 } else {
13995 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13996 inner_depth.increment()?;
13997 }
13998 let val_ref = self.mapping_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
13999 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
14000 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14001 {
14002 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14003 }
14004 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14005 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14006 }
14007 }
14008
14009 next_offset += envelope_size;
14010 _next_ordinal_to_read += 1;
14011 if next_offset >= end_offset {
14012 return Ok(());
14013 }
14014
14015 while _next_ordinal_to_read < 2 {
14017 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14018 _next_ordinal_to_read += 1;
14019 next_offset += envelope_size;
14020 }
14021
14022 let next_out_of_line = decoder.next_out_of_line();
14023 let handles_before = decoder.remaining_handles();
14024 if let Some((inlined, num_bytes, num_handles)) =
14025 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14026 {
14027 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14028 if inlined != (member_inline_size <= 4) {
14029 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14030 }
14031 let inner_offset;
14032 let mut inner_depth = depth.clone();
14033 if inlined {
14034 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14035 inner_offset = next_offset;
14036 } else {
14037 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14038 inner_depth.increment()?;
14039 }
14040 let val_ref = self.ip4_addr.get_or_insert_with(|| {
14041 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
14042 });
14043 fidl::decode!(
14044 fidl::encoding::UnboundedVector<u8>,
14045 D,
14046 val_ref,
14047 decoder,
14048 inner_offset,
14049 inner_depth
14050 )?;
14051 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14052 {
14053 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14054 }
14055 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14056 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14057 }
14058 }
14059
14060 next_offset += envelope_size;
14061 _next_ordinal_to_read += 1;
14062 if next_offset >= end_offset {
14063 return Ok(());
14064 }
14065
14066 while _next_ordinal_to_read < 3 {
14068 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14069 _next_ordinal_to_read += 1;
14070 next_offset += envelope_size;
14071 }
14072
14073 let next_out_of_line = decoder.next_out_of_line();
14074 let handles_before = decoder.remaining_handles();
14075 if let Some((inlined, num_bytes, num_handles)) =
14076 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14077 {
14078 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14079 if inlined != (member_inline_size <= 4) {
14080 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14081 }
14082 let inner_offset;
14083 let mut inner_depth = depth.clone();
14084 if inlined {
14085 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14086 inner_offset = next_offset;
14087 } else {
14088 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14089 inner_depth.increment()?;
14090 }
14091 let val_ref = self.ip6_addr.get_or_insert_with(|| {
14092 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
14093 });
14094 fidl::decode!(
14095 fidl::encoding::UnboundedVector<u8>,
14096 D,
14097 val_ref,
14098 decoder,
14099 inner_offset,
14100 inner_depth
14101 )?;
14102 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14103 {
14104 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14105 }
14106 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14107 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14108 }
14109 }
14110
14111 next_offset += envelope_size;
14112 _next_ordinal_to_read += 1;
14113 if next_offset >= end_offset {
14114 return Ok(());
14115 }
14116
14117 while _next_ordinal_to_read < 4 {
14119 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14120 _next_ordinal_to_read += 1;
14121 next_offset += envelope_size;
14122 }
14123
14124 let next_out_of_line = decoder.next_out_of_line();
14125 let handles_before = decoder.remaining_handles();
14126 if let Some((inlined, num_bytes, num_handles)) =
14127 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14128 {
14129 let member_inline_size =
14130 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14131 if inlined != (member_inline_size <= 4) {
14132 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14133 }
14134 let inner_offset;
14135 let mut inner_depth = depth.clone();
14136 if inlined {
14137 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14138 inner_offset = next_offset;
14139 } else {
14140 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14141 inner_depth.increment()?;
14142 }
14143 let val_ref =
14144 self.remaining_time_ms.get_or_insert_with(|| fidl::new_empty!(u32, D));
14145 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
14146 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14147 {
14148 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14149 }
14150 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14151 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14152 }
14153 }
14154
14155 next_offset += envelope_size;
14156 _next_ordinal_to_read += 1;
14157 if next_offset >= end_offset {
14158 return Ok(());
14159 }
14160
14161 while _next_ordinal_to_read < 5 {
14163 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14164 _next_ordinal_to_read += 1;
14165 next_offset += envelope_size;
14166 }
14167
14168 let next_out_of_line = decoder.next_out_of_line();
14169 let handles_before = decoder.remaining_handles();
14170 if let Some((inlined, num_bytes, num_handles)) =
14171 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14172 {
14173 let member_inline_size =
14174 <Nat64ProtocolCounters as fidl::encoding::TypeMarker>::inline_size(
14175 decoder.context,
14176 );
14177 if inlined != (member_inline_size <= 4) {
14178 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14179 }
14180 let inner_offset;
14181 let mut inner_depth = depth.clone();
14182 if inlined {
14183 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14184 inner_offset = next_offset;
14185 } else {
14186 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14187 inner_depth.increment()?;
14188 }
14189 let val_ref =
14190 self.counters.get_or_insert_with(|| fidl::new_empty!(Nat64ProtocolCounters, D));
14191 fidl::decode!(
14192 Nat64ProtocolCounters,
14193 D,
14194 val_ref,
14195 decoder,
14196 inner_offset,
14197 inner_depth
14198 )?;
14199 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14200 {
14201 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14202 }
14203 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14204 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14205 }
14206 }
14207
14208 next_offset += envelope_size;
14209
14210 while next_offset < end_offset {
14212 _next_ordinal_to_read += 1;
14213 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14214 next_offset += envelope_size;
14215 }
14216
14217 Ok(())
14218 }
14219 }
14220
14221 impl Nat64PacketCounters {
14222 #[inline(always)]
14223 fn max_ordinal_present(&self) -> u64 {
14224 if let Some(_) = self.ipv6_to_ipv4_packets {
14225 return 2;
14226 }
14227 if let Some(_) = self.ipv4_to_ipv6_packets {
14228 return 1;
14229 }
14230 0
14231 }
14232 }
14233
14234 impl fidl::encoding::ValueTypeMarker for Nat64PacketCounters {
14235 type Borrowed<'a> = &'a Self;
14236 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14237 value
14238 }
14239 }
14240
14241 unsafe impl fidl::encoding::TypeMarker for Nat64PacketCounters {
14242 type Owned = Self;
14243
14244 #[inline(always)]
14245 fn inline_align(_context: fidl::encoding::Context) -> usize {
14246 8
14247 }
14248
14249 #[inline(always)]
14250 fn inline_size(_context: fidl::encoding::Context) -> usize {
14251 16
14252 }
14253 }
14254
14255 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64PacketCounters, D>
14256 for &Nat64PacketCounters
14257 {
14258 unsafe fn encode(
14259 self,
14260 encoder: &mut fidl::encoding::Encoder<'_, D>,
14261 offset: usize,
14262 mut depth: fidl::encoding::Depth,
14263 ) -> fidl::Result<()> {
14264 encoder.debug_check_bounds::<Nat64PacketCounters>(offset);
14265 let max_ordinal: u64 = self.max_ordinal_present();
14267 encoder.write_num(max_ordinal, offset);
14268 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14269 if max_ordinal == 0 {
14271 return Ok(());
14272 }
14273 depth.increment()?;
14274 let envelope_size = 8;
14275 let bytes_len = max_ordinal as usize * envelope_size;
14276 #[allow(unused_variables)]
14277 let offset = encoder.out_of_line_offset(bytes_len);
14278 let mut _prev_end_offset: usize = 0;
14279 if 1 > max_ordinal {
14280 return Ok(());
14281 }
14282
14283 let cur_offset: usize = (1 - 1) * envelope_size;
14286
14287 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14289
14290 fidl::encoding::encode_in_envelope_optional::<u64, D>(
14295 self.ipv4_to_ipv6_packets
14296 .as_ref()
14297 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
14298 encoder,
14299 offset + cur_offset,
14300 depth,
14301 )?;
14302
14303 _prev_end_offset = cur_offset + envelope_size;
14304 if 2 > max_ordinal {
14305 return Ok(());
14306 }
14307
14308 let cur_offset: usize = (2 - 1) * envelope_size;
14311
14312 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14314
14315 fidl::encoding::encode_in_envelope_optional::<u64, D>(
14320 self.ipv6_to_ipv4_packets
14321 .as_ref()
14322 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
14323 encoder,
14324 offset + cur_offset,
14325 depth,
14326 )?;
14327
14328 _prev_end_offset = cur_offset + envelope_size;
14329
14330 Ok(())
14331 }
14332 }
14333
14334 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64PacketCounters {
14335 #[inline(always)]
14336 fn new_empty() -> Self {
14337 Self::default()
14338 }
14339
14340 unsafe fn decode(
14341 &mut self,
14342 decoder: &mut fidl::encoding::Decoder<'_, D>,
14343 offset: usize,
14344 mut depth: fidl::encoding::Depth,
14345 ) -> fidl::Result<()> {
14346 decoder.debug_check_bounds::<Self>(offset);
14347 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14348 None => return Err(fidl::Error::NotNullable),
14349 Some(len) => len,
14350 };
14351 if len == 0 {
14353 return Ok(());
14354 };
14355 depth.increment()?;
14356 let envelope_size = 8;
14357 let bytes_len = len * envelope_size;
14358 let offset = decoder.out_of_line_offset(bytes_len)?;
14359 let mut _next_ordinal_to_read = 0;
14361 let mut next_offset = offset;
14362 let end_offset = offset + bytes_len;
14363 _next_ordinal_to_read += 1;
14364 if next_offset >= end_offset {
14365 return Ok(());
14366 }
14367
14368 while _next_ordinal_to_read < 1 {
14370 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14371 _next_ordinal_to_read += 1;
14372 next_offset += envelope_size;
14373 }
14374
14375 let next_out_of_line = decoder.next_out_of_line();
14376 let handles_before = decoder.remaining_handles();
14377 if let Some((inlined, num_bytes, num_handles)) =
14378 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14379 {
14380 let member_inline_size =
14381 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14382 if inlined != (member_inline_size <= 4) {
14383 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14384 }
14385 let inner_offset;
14386 let mut inner_depth = depth.clone();
14387 if inlined {
14388 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14389 inner_offset = next_offset;
14390 } else {
14391 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14392 inner_depth.increment()?;
14393 }
14394 let val_ref =
14395 self.ipv4_to_ipv6_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
14396 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
14397 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14398 {
14399 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14400 }
14401 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14402 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14403 }
14404 }
14405
14406 next_offset += envelope_size;
14407 _next_ordinal_to_read += 1;
14408 if next_offset >= end_offset {
14409 return Ok(());
14410 }
14411
14412 while _next_ordinal_to_read < 2 {
14414 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14415 _next_ordinal_to_read += 1;
14416 next_offset += envelope_size;
14417 }
14418
14419 let next_out_of_line = decoder.next_out_of_line();
14420 let handles_before = decoder.remaining_handles();
14421 if let Some((inlined, num_bytes, num_handles)) =
14422 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14423 {
14424 let member_inline_size =
14425 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14426 if inlined != (member_inline_size <= 4) {
14427 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14428 }
14429 let inner_offset;
14430 let mut inner_depth = depth.clone();
14431 if inlined {
14432 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14433 inner_offset = next_offset;
14434 } else {
14435 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14436 inner_depth.increment()?;
14437 }
14438 let val_ref =
14439 self.ipv6_to_ipv4_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
14440 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
14441 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14442 {
14443 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14444 }
14445 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14446 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14447 }
14448 }
14449
14450 next_offset += envelope_size;
14451
14452 while next_offset < end_offset {
14454 _next_ordinal_to_read += 1;
14455 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14456 next_offset += envelope_size;
14457 }
14458
14459 Ok(())
14460 }
14461 }
14462
14463 impl Nat64ProtocolCounters {
14464 #[inline(always)]
14465 fn max_ordinal_present(&self) -> u64 {
14466 if let Some(_) = self.total {
14467 return 4;
14468 }
14469 if let Some(_) = self.icmp {
14470 return 3;
14471 }
14472 if let Some(_) = self.udp {
14473 return 2;
14474 }
14475 if let Some(_) = self.tcp {
14476 return 1;
14477 }
14478 0
14479 }
14480 }
14481
14482 impl fidl::encoding::ValueTypeMarker for Nat64ProtocolCounters {
14483 type Borrowed<'a> = &'a Self;
14484 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14485 value
14486 }
14487 }
14488
14489 unsafe impl fidl::encoding::TypeMarker for Nat64ProtocolCounters {
14490 type Owned = Self;
14491
14492 #[inline(always)]
14493 fn inline_align(_context: fidl::encoding::Context) -> usize {
14494 8
14495 }
14496
14497 #[inline(always)]
14498 fn inline_size(_context: fidl::encoding::Context) -> usize {
14499 16
14500 }
14501 }
14502
14503 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64ProtocolCounters, D>
14504 for &Nat64ProtocolCounters
14505 {
14506 unsafe fn encode(
14507 self,
14508 encoder: &mut fidl::encoding::Encoder<'_, D>,
14509 offset: usize,
14510 mut depth: fidl::encoding::Depth,
14511 ) -> fidl::Result<()> {
14512 encoder.debug_check_bounds::<Nat64ProtocolCounters>(offset);
14513 let max_ordinal: u64 = self.max_ordinal_present();
14515 encoder.write_num(max_ordinal, offset);
14516 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14517 if max_ordinal == 0 {
14519 return Ok(());
14520 }
14521 depth.increment()?;
14522 let envelope_size = 8;
14523 let bytes_len = max_ordinal as usize * envelope_size;
14524 #[allow(unused_variables)]
14525 let offset = encoder.out_of_line_offset(bytes_len);
14526 let mut _prev_end_offset: usize = 0;
14527 if 1 > max_ordinal {
14528 return Ok(());
14529 }
14530
14531 let cur_offset: usize = (1 - 1) * envelope_size;
14534
14535 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14537
14538 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
14543 self.tcp
14544 .as_ref()
14545 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
14546 encoder,
14547 offset + cur_offset,
14548 depth,
14549 )?;
14550
14551 _prev_end_offset = cur_offset + envelope_size;
14552 if 2 > max_ordinal {
14553 return Ok(());
14554 }
14555
14556 let cur_offset: usize = (2 - 1) * envelope_size;
14559
14560 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14562
14563 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
14568 self.udp
14569 .as_ref()
14570 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
14571 encoder,
14572 offset + cur_offset,
14573 depth,
14574 )?;
14575
14576 _prev_end_offset = cur_offset + envelope_size;
14577 if 3 > max_ordinal {
14578 return Ok(());
14579 }
14580
14581 let cur_offset: usize = (3 - 1) * envelope_size;
14584
14585 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14587
14588 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
14593 self.icmp
14594 .as_ref()
14595 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
14596 encoder,
14597 offset + cur_offset,
14598 depth,
14599 )?;
14600
14601 _prev_end_offset = cur_offset + envelope_size;
14602 if 4 > max_ordinal {
14603 return Ok(());
14604 }
14605
14606 let cur_offset: usize = (4 - 1) * envelope_size;
14609
14610 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14612
14613 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
14618 self.total
14619 .as_ref()
14620 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
14621 encoder,
14622 offset + cur_offset,
14623 depth,
14624 )?;
14625
14626 _prev_end_offset = cur_offset + envelope_size;
14627
14628 Ok(())
14629 }
14630 }
14631
14632 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64ProtocolCounters {
14633 #[inline(always)]
14634 fn new_empty() -> Self {
14635 Self::default()
14636 }
14637
14638 unsafe fn decode(
14639 &mut self,
14640 decoder: &mut fidl::encoding::Decoder<'_, D>,
14641 offset: usize,
14642 mut depth: fidl::encoding::Depth,
14643 ) -> fidl::Result<()> {
14644 decoder.debug_check_bounds::<Self>(offset);
14645 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14646 None => return Err(fidl::Error::NotNullable),
14647 Some(len) => len,
14648 };
14649 if len == 0 {
14651 return Ok(());
14652 };
14653 depth.increment()?;
14654 let envelope_size = 8;
14655 let bytes_len = len * envelope_size;
14656 let offset = decoder.out_of_line_offset(bytes_len)?;
14657 let mut _next_ordinal_to_read = 0;
14659 let mut next_offset = offset;
14660 let end_offset = offset + bytes_len;
14661 _next_ordinal_to_read += 1;
14662 if next_offset >= end_offset {
14663 return Ok(());
14664 }
14665
14666 while _next_ordinal_to_read < 1 {
14668 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14669 _next_ordinal_to_read += 1;
14670 next_offset += envelope_size;
14671 }
14672
14673 let next_out_of_line = decoder.next_out_of_line();
14674 let handles_before = decoder.remaining_handles();
14675 if let Some((inlined, num_bytes, num_handles)) =
14676 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14677 {
14678 let member_inline_size =
14679 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
14680 decoder.context,
14681 );
14682 if inlined != (member_inline_size <= 4) {
14683 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14684 }
14685 let inner_offset;
14686 let mut inner_depth = depth.clone();
14687 if inlined {
14688 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14689 inner_offset = next_offset;
14690 } else {
14691 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14692 inner_depth.increment()?;
14693 }
14694 let val_ref =
14695 self.tcp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
14696 fidl::decode!(
14697 Nat64TrafficCounters,
14698 D,
14699 val_ref,
14700 decoder,
14701 inner_offset,
14702 inner_depth
14703 )?;
14704 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14705 {
14706 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14707 }
14708 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14709 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14710 }
14711 }
14712
14713 next_offset += envelope_size;
14714 _next_ordinal_to_read += 1;
14715 if next_offset >= end_offset {
14716 return Ok(());
14717 }
14718
14719 while _next_ordinal_to_read < 2 {
14721 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14722 _next_ordinal_to_read += 1;
14723 next_offset += envelope_size;
14724 }
14725
14726 let next_out_of_line = decoder.next_out_of_line();
14727 let handles_before = decoder.remaining_handles();
14728 if let Some((inlined, num_bytes, num_handles)) =
14729 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14730 {
14731 let member_inline_size =
14732 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
14733 decoder.context,
14734 );
14735 if inlined != (member_inline_size <= 4) {
14736 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14737 }
14738 let inner_offset;
14739 let mut inner_depth = depth.clone();
14740 if inlined {
14741 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14742 inner_offset = next_offset;
14743 } else {
14744 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14745 inner_depth.increment()?;
14746 }
14747 let val_ref =
14748 self.udp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
14749 fidl::decode!(
14750 Nat64TrafficCounters,
14751 D,
14752 val_ref,
14753 decoder,
14754 inner_offset,
14755 inner_depth
14756 )?;
14757 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14758 {
14759 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14760 }
14761 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14762 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14763 }
14764 }
14765
14766 next_offset += envelope_size;
14767 _next_ordinal_to_read += 1;
14768 if next_offset >= end_offset {
14769 return Ok(());
14770 }
14771
14772 while _next_ordinal_to_read < 3 {
14774 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14775 _next_ordinal_to_read += 1;
14776 next_offset += envelope_size;
14777 }
14778
14779 let next_out_of_line = decoder.next_out_of_line();
14780 let handles_before = decoder.remaining_handles();
14781 if let Some((inlined, num_bytes, num_handles)) =
14782 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14783 {
14784 let member_inline_size =
14785 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
14786 decoder.context,
14787 );
14788 if inlined != (member_inline_size <= 4) {
14789 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14790 }
14791 let inner_offset;
14792 let mut inner_depth = depth.clone();
14793 if inlined {
14794 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14795 inner_offset = next_offset;
14796 } else {
14797 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14798 inner_depth.increment()?;
14799 }
14800 let val_ref =
14801 self.icmp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
14802 fidl::decode!(
14803 Nat64TrafficCounters,
14804 D,
14805 val_ref,
14806 decoder,
14807 inner_offset,
14808 inner_depth
14809 )?;
14810 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14811 {
14812 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14813 }
14814 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14815 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14816 }
14817 }
14818
14819 next_offset += envelope_size;
14820 _next_ordinal_to_read += 1;
14821 if next_offset >= end_offset {
14822 return Ok(());
14823 }
14824
14825 while _next_ordinal_to_read < 4 {
14827 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14828 _next_ordinal_to_read += 1;
14829 next_offset += envelope_size;
14830 }
14831
14832 let next_out_of_line = decoder.next_out_of_line();
14833 let handles_before = decoder.remaining_handles();
14834 if let Some((inlined, num_bytes, num_handles)) =
14835 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14836 {
14837 let member_inline_size =
14838 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
14839 decoder.context,
14840 );
14841 if inlined != (member_inline_size <= 4) {
14842 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14843 }
14844 let inner_offset;
14845 let mut inner_depth = depth.clone();
14846 if inlined {
14847 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14848 inner_offset = next_offset;
14849 } else {
14850 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14851 inner_depth.increment()?;
14852 }
14853 let val_ref =
14854 self.total.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
14855 fidl::decode!(
14856 Nat64TrafficCounters,
14857 D,
14858 val_ref,
14859 decoder,
14860 inner_offset,
14861 inner_depth
14862 )?;
14863 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14864 {
14865 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14866 }
14867 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14868 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14869 }
14870 }
14871
14872 next_offset += envelope_size;
14873
14874 while next_offset < end_offset {
14876 _next_ordinal_to_read += 1;
14877 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14878 next_offset += envelope_size;
14879 }
14880
14881 Ok(())
14882 }
14883 }
14884
14885 impl Nat64TrafficCounters {
14886 #[inline(always)]
14887 fn max_ordinal_present(&self) -> u64 {
14888 if let Some(_) = self.ipv6_to_ipv4_bytes {
14889 return 4;
14890 }
14891 if let Some(_) = self.ipv6_to_ipv4_packets {
14892 return 3;
14893 }
14894 if let Some(_) = self.ipv4_to_ipv6_bytes {
14895 return 2;
14896 }
14897 if let Some(_) = self.ipv4_to_ipv6_packets {
14898 return 1;
14899 }
14900 0
14901 }
14902 }
14903
14904 impl fidl::encoding::ValueTypeMarker for Nat64TrafficCounters {
14905 type Borrowed<'a> = &'a Self;
14906 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14907 value
14908 }
14909 }
14910
14911 unsafe impl fidl::encoding::TypeMarker for Nat64TrafficCounters {
14912 type Owned = Self;
14913
14914 #[inline(always)]
14915 fn inline_align(_context: fidl::encoding::Context) -> usize {
14916 8
14917 }
14918
14919 #[inline(always)]
14920 fn inline_size(_context: fidl::encoding::Context) -> usize {
14921 16
14922 }
14923 }
14924
14925 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64TrafficCounters, D>
14926 for &Nat64TrafficCounters
14927 {
14928 unsafe fn encode(
14929 self,
14930 encoder: &mut fidl::encoding::Encoder<'_, D>,
14931 offset: usize,
14932 mut depth: fidl::encoding::Depth,
14933 ) -> fidl::Result<()> {
14934 encoder.debug_check_bounds::<Nat64TrafficCounters>(offset);
14935 let max_ordinal: u64 = self.max_ordinal_present();
14937 encoder.write_num(max_ordinal, offset);
14938 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14939 if max_ordinal == 0 {
14941 return Ok(());
14942 }
14943 depth.increment()?;
14944 let envelope_size = 8;
14945 let bytes_len = max_ordinal as usize * envelope_size;
14946 #[allow(unused_variables)]
14947 let offset = encoder.out_of_line_offset(bytes_len);
14948 let mut _prev_end_offset: usize = 0;
14949 if 1 > max_ordinal {
14950 return Ok(());
14951 }
14952
14953 let cur_offset: usize = (1 - 1) * envelope_size;
14956
14957 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14959
14960 fidl::encoding::encode_in_envelope_optional::<u64, D>(
14965 self.ipv4_to_ipv6_packets
14966 .as_ref()
14967 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
14968 encoder,
14969 offset + cur_offset,
14970 depth,
14971 )?;
14972
14973 _prev_end_offset = cur_offset + envelope_size;
14974 if 2 > max_ordinal {
14975 return Ok(());
14976 }
14977
14978 let cur_offset: usize = (2 - 1) * envelope_size;
14981
14982 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14984
14985 fidl::encoding::encode_in_envelope_optional::<u64, D>(
14990 self.ipv4_to_ipv6_bytes
14991 .as_ref()
14992 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
14993 encoder,
14994 offset + cur_offset,
14995 depth,
14996 )?;
14997
14998 _prev_end_offset = cur_offset + envelope_size;
14999 if 3 > max_ordinal {
15000 return Ok(());
15001 }
15002
15003 let cur_offset: usize = (3 - 1) * envelope_size;
15006
15007 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15009
15010 fidl::encoding::encode_in_envelope_optional::<u64, D>(
15015 self.ipv6_to_ipv4_packets
15016 .as_ref()
15017 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
15018 encoder,
15019 offset + cur_offset,
15020 depth,
15021 )?;
15022
15023 _prev_end_offset = cur_offset + envelope_size;
15024 if 4 > max_ordinal {
15025 return Ok(());
15026 }
15027
15028 let cur_offset: usize = (4 - 1) * envelope_size;
15031
15032 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15034
15035 fidl::encoding::encode_in_envelope_optional::<u64, D>(
15040 self.ipv6_to_ipv4_bytes
15041 .as_ref()
15042 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
15043 encoder,
15044 offset + cur_offset,
15045 depth,
15046 )?;
15047
15048 _prev_end_offset = cur_offset + envelope_size;
15049
15050 Ok(())
15051 }
15052 }
15053
15054 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64TrafficCounters {
15055 #[inline(always)]
15056 fn new_empty() -> Self {
15057 Self::default()
15058 }
15059
15060 unsafe fn decode(
15061 &mut self,
15062 decoder: &mut fidl::encoding::Decoder<'_, D>,
15063 offset: usize,
15064 mut depth: fidl::encoding::Depth,
15065 ) -> fidl::Result<()> {
15066 decoder.debug_check_bounds::<Self>(offset);
15067 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15068 None => return Err(fidl::Error::NotNullable),
15069 Some(len) => len,
15070 };
15071 if len == 0 {
15073 return Ok(());
15074 };
15075 depth.increment()?;
15076 let envelope_size = 8;
15077 let bytes_len = len * envelope_size;
15078 let offset = decoder.out_of_line_offset(bytes_len)?;
15079 let mut _next_ordinal_to_read = 0;
15081 let mut next_offset = offset;
15082 let end_offset = offset + bytes_len;
15083 _next_ordinal_to_read += 1;
15084 if next_offset >= end_offset {
15085 return Ok(());
15086 }
15087
15088 while _next_ordinal_to_read < 1 {
15090 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15091 _next_ordinal_to_read += 1;
15092 next_offset += envelope_size;
15093 }
15094
15095 let next_out_of_line = decoder.next_out_of_line();
15096 let handles_before = decoder.remaining_handles();
15097 if let Some((inlined, num_bytes, num_handles)) =
15098 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15099 {
15100 let member_inline_size =
15101 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15102 if inlined != (member_inline_size <= 4) {
15103 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15104 }
15105 let inner_offset;
15106 let mut inner_depth = depth.clone();
15107 if inlined {
15108 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15109 inner_offset = next_offset;
15110 } else {
15111 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15112 inner_depth.increment()?;
15113 }
15114 let val_ref =
15115 self.ipv4_to_ipv6_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
15116 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15117 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15118 {
15119 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15120 }
15121 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15122 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15123 }
15124 }
15125
15126 next_offset += envelope_size;
15127 _next_ordinal_to_read += 1;
15128 if next_offset >= end_offset {
15129 return Ok(());
15130 }
15131
15132 while _next_ordinal_to_read < 2 {
15134 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15135 _next_ordinal_to_read += 1;
15136 next_offset += envelope_size;
15137 }
15138
15139 let next_out_of_line = decoder.next_out_of_line();
15140 let handles_before = decoder.remaining_handles();
15141 if let Some((inlined, num_bytes, num_handles)) =
15142 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15143 {
15144 let member_inline_size =
15145 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15146 if inlined != (member_inline_size <= 4) {
15147 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15148 }
15149 let inner_offset;
15150 let mut inner_depth = depth.clone();
15151 if inlined {
15152 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15153 inner_offset = next_offset;
15154 } else {
15155 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15156 inner_depth.increment()?;
15157 }
15158 let val_ref =
15159 self.ipv4_to_ipv6_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
15160 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15161 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15162 {
15163 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15164 }
15165 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15166 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15167 }
15168 }
15169
15170 next_offset += envelope_size;
15171 _next_ordinal_to_read += 1;
15172 if next_offset >= end_offset {
15173 return Ok(());
15174 }
15175
15176 while _next_ordinal_to_read < 3 {
15178 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15179 _next_ordinal_to_read += 1;
15180 next_offset += envelope_size;
15181 }
15182
15183 let next_out_of_line = decoder.next_out_of_line();
15184 let handles_before = decoder.remaining_handles();
15185 if let Some((inlined, num_bytes, num_handles)) =
15186 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15187 {
15188 let member_inline_size =
15189 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15190 if inlined != (member_inline_size <= 4) {
15191 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15192 }
15193 let inner_offset;
15194 let mut inner_depth = depth.clone();
15195 if inlined {
15196 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15197 inner_offset = next_offset;
15198 } else {
15199 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15200 inner_depth.increment()?;
15201 }
15202 let val_ref =
15203 self.ipv6_to_ipv4_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
15204 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15205 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15206 {
15207 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15208 }
15209 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15210 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15211 }
15212 }
15213
15214 next_offset += envelope_size;
15215 _next_ordinal_to_read += 1;
15216 if next_offset >= end_offset {
15217 return Ok(());
15218 }
15219
15220 while _next_ordinal_to_read < 4 {
15222 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15223 _next_ordinal_to_read += 1;
15224 next_offset += envelope_size;
15225 }
15226
15227 let next_out_of_line = decoder.next_out_of_line();
15228 let handles_before = decoder.remaining_handles();
15229 if let Some((inlined, num_bytes, num_handles)) =
15230 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15231 {
15232 let member_inline_size =
15233 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15234 if inlined != (member_inline_size <= 4) {
15235 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15236 }
15237 let inner_offset;
15238 let mut inner_depth = depth.clone();
15239 if inlined {
15240 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15241 inner_offset = next_offset;
15242 } else {
15243 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15244 inner_depth.increment()?;
15245 }
15246 let val_ref =
15247 self.ipv6_to_ipv4_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
15248 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15249 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15250 {
15251 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15252 }
15253 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15254 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15255 }
15256 }
15257
15258 next_offset += envelope_size;
15259
15260 while next_offset < end_offset {
15262 _next_ordinal_to_read += 1;
15263 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15264 next_offset += envelope_size;
15265 }
15266
15267 Ok(())
15268 }
15269 }
15270
15271 impl NetworkData {
15272 #[inline(always)]
15273 fn max_ordinal_present(&self) -> u64 {
15274 if let Some(_) = self.commissioning_dataset {
15275 return 5;
15276 }
15277 if let Some(_) = self.contexts {
15278 return 4;
15279 }
15280 if let Some(_) = self.services {
15281 return 3;
15282 }
15283 if let Some(_) = self.external_routes {
15284 return 2;
15285 }
15286 if let Some(_) = self.on_mesh_prefixes {
15287 return 1;
15288 }
15289 0
15290 }
15291 }
15292
15293 impl fidl::encoding::ValueTypeMarker for NetworkData {
15294 type Borrowed<'a> = &'a Self;
15295 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15296 value
15297 }
15298 }
15299
15300 unsafe impl fidl::encoding::TypeMarker for NetworkData {
15301 type Owned = Self;
15302
15303 #[inline(always)]
15304 fn inline_align(_context: fidl::encoding::Context) -> usize {
15305 8
15306 }
15307
15308 #[inline(always)]
15309 fn inline_size(_context: fidl::encoding::Context) -> usize {
15310 16
15311 }
15312 }
15313
15314 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetworkData, D>
15315 for &NetworkData
15316 {
15317 unsafe fn encode(
15318 self,
15319 encoder: &mut fidl::encoding::Encoder<'_, D>,
15320 offset: usize,
15321 mut depth: fidl::encoding::Depth,
15322 ) -> fidl::Result<()> {
15323 encoder.debug_check_bounds::<NetworkData>(offset);
15324 let max_ordinal: u64 = self.max_ordinal_present();
15326 encoder.write_num(max_ordinal, offset);
15327 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15328 if max_ordinal == 0 {
15330 return Ok(());
15331 }
15332 depth.increment()?;
15333 let envelope_size = 8;
15334 let bytes_len = max_ordinal as usize * envelope_size;
15335 #[allow(unused_variables)]
15336 let offset = encoder.out_of_line_offset(bytes_len);
15337 let mut _prev_end_offset: usize = 0;
15338 if 1 > max_ordinal {
15339 return Ok(());
15340 }
15341
15342 let cur_offset: usize = (1 - 1) * envelope_size;
15345
15346 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15348
15349 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BorderRouterConfig, 32>, D>(
15354 self.on_mesh_prefixes.as_ref().map(<fidl::encoding::Vector<BorderRouterConfig, 32> as fidl::encoding::ValueTypeMarker>::borrow),
15355 encoder, offset + cur_offset, depth
15356 )?;
15357
15358 _prev_end_offset = cur_offset + envelope_size;
15359 if 2 > max_ordinal {
15360 return Ok(());
15361 }
15362
15363 let cur_offset: usize = (2 - 1) * envelope_size;
15366
15367 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15369
15370 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ExternalRouteConfig, 32>, D>(
15375 self.external_routes.as_ref().map(<fidl::encoding::Vector<ExternalRouteConfig, 32> as fidl::encoding::ValueTypeMarker>::borrow),
15376 encoder, offset + cur_offset, depth
15377 )?;
15378
15379 _prev_end_offset = cur_offset + envelope_size;
15380 if 3 > max_ordinal {
15381 return Ok(());
15382 }
15383
15384 let cur_offset: usize = (3 - 1) * envelope_size;
15387
15388 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15390
15391 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ServiceConfig, 32>, D>(
15396 self.services.as_ref().map(<fidl::encoding::Vector<ServiceConfig, 32> as fidl::encoding::ValueTypeMarker>::borrow),
15397 encoder, offset + cur_offset, depth
15398 )?;
15399
15400 _prev_end_offset = cur_offset + envelope_size;
15401 if 4 > max_ordinal {
15402 return Ok(());
15403 }
15404
15405 let cur_offset: usize = (4 - 1) * envelope_size;
15408
15409 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15411
15412 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<LowpanContextInfo, 32>, D>(
15417 self.contexts.as_ref().map(<fidl::encoding::Vector<LowpanContextInfo, 32> as fidl::encoding::ValueTypeMarker>::borrow),
15418 encoder, offset + cur_offset, depth
15419 )?;
15420
15421 _prev_end_offset = cur_offset + envelope_size;
15422 if 5 > max_ordinal {
15423 return Ok(());
15424 }
15425
15426 let cur_offset: usize = (5 - 1) * envelope_size;
15429
15430 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15432
15433 fidl::encoding::encode_in_envelope_optional::<CommissioningDataset, D>(
15438 self.commissioning_dataset
15439 .as_ref()
15440 .map(<CommissioningDataset as fidl::encoding::ValueTypeMarker>::borrow),
15441 encoder,
15442 offset + cur_offset,
15443 depth,
15444 )?;
15445
15446 _prev_end_offset = cur_offset + envelope_size;
15447
15448 Ok(())
15449 }
15450 }
15451
15452 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkData {
15453 #[inline(always)]
15454 fn new_empty() -> Self {
15455 Self::default()
15456 }
15457
15458 unsafe fn decode(
15459 &mut self,
15460 decoder: &mut fidl::encoding::Decoder<'_, D>,
15461 offset: usize,
15462 mut depth: fidl::encoding::Depth,
15463 ) -> fidl::Result<()> {
15464 decoder.debug_check_bounds::<Self>(offset);
15465 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15466 None => return Err(fidl::Error::NotNullable),
15467 Some(len) => len,
15468 };
15469 if len == 0 {
15471 return Ok(());
15472 };
15473 depth.increment()?;
15474 let envelope_size = 8;
15475 let bytes_len = len * envelope_size;
15476 let offset = decoder.out_of_line_offset(bytes_len)?;
15477 let mut _next_ordinal_to_read = 0;
15479 let mut next_offset = offset;
15480 let end_offset = offset + bytes_len;
15481 _next_ordinal_to_read += 1;
15482 if next_offset >= end_offset {
15483 return Ok(());
15484 }
15485
15486 while _next_ordinal_to_read < 1 {
15488 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15489 _next_ordinal_to_read += 1;
15490 next_offset += envelope_size;
15491 }
15492
15493 let next_out_of_line = decoder.next_out_of_line();
15494 let handles_before = decoder.remaining_handles();
15495 if let Some((inlined, num_bytes, num_handles)) =
15496 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15497 {
15498 let member_inline_size = <fidl::encoding::Vector<BorderRouterConfig, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15499 if inlined != (member_inline_size <= 4) {
15500 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15501 }
15502 let inner_offset;
15503 let mut inner_depth = depth.clone();
15504 if inlined {
15505 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15506 inner_offset = next_offset;
15507 } else {
15508 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15509 inner_depth.increment()?;
15510 }
15511 let val_ref = self.on_mesh_prefixes.get_or_insert_with(
15512 || fidl::new_empty!(fidl::encoding::Vector<BorderRouterConfig, 32>, D),
15513 );
15514 fidl::decode!(fidl::encoding::Vector<BorderRouterConfig, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
15515 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15516 {
15517 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15518 }
15519 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15520 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15521 }
15522 }
15523
15524 next_offset += envelope_size;
15525 _next_ordinal_to_read += 1;
15526 if next_offset >= end_offset {
15527 return Ok(());
15528 }
15529
15530 while _next_ordinal_to_read < 2 {
15532 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15533 _next_ordinal_to_read += 1;
15534 next_offset += envelope_size;
15535 }
15536
15537 let next_out_of_line = decoder.next_out_of_line();
15538 let handles_before = decoder.remaining_handles();
15539 if let Some((inlined, num_bytes, num_handles)) =
15540 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15541 {
15542 let member_inline_size = <fidl::encoding::Vector<ExternalRouteConfig, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15543 if inlined != (member_inline_size <= 4) {
15544 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15545 }
15546 let inner_offset;
15547 let mut inner_depth = depth.clone();
15548 if inlined {
15549 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15550 inner_offset = next_offset;
15551 } else {
15552 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15553 inner_depth.increment()?;
15554 }
15555 let val_ref = self.external_routes.get_or_insert_with(
15556 || fidl::new_empty!(fidl::encoding::Vector<ExternalRouteConfig, 32>, D),
15557 );
15558 fidl::decode!(fidl::encoding::Vector<ExternalRouteConfig, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
15559 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15560 {
15561 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15562 }
15563 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15564 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15565 }
15566 }
15567
15568 next_offset += envelope_size;
15569 _next_ordinal_to_read += 1;
15570 if next_offset >= end_offset {
15571 return Ok(());
15572 }
15573
15574 while _next_ordinal_to_read < 3 {
15576 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15577 _next_ordinal_to_read += 1;
15578 next_offset += envelope_size;
15579 }
15580
15581 let next_out_of_line = decoder.next_out_of_line();
15582 let handles_before = decoder.remaining_handles();
15583 if let Some((inlined, num_bytes, num_handles)) =
15584 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15585 {
15586 let member_inline_size = <fidl::encoding::Vector<ServiceConfig, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15587 if inlined != (member_inline_size <= 4) {
15588 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15589 }
15590 let inner_offset;
15591 let mut inner_depth = depth.clone();
15592 if inlined {
15593 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15594 inner_offset = next_offset;
15595 } else {
15596 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15597 inner_depth.increment()?;
15598 }
15599 let val_ref = self.services.get_or_insert_with(
15600 || fidl::new_empty!(fidl::encoding::Vector<ServiceConfig, 32>, D),
15601 );
15602 fidl::decode!(fidl::encoding::Vector<ServiceConfig, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
15603 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15604 {
15605 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15606 }
15607 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15608 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15609 }
15610 }
15611
15612 next_offset += envelope_size;
15613 _next_ordinal_to_read += 1;
15614 if next_offset >= end_offset {
15615 return Ok(());
15616 }
15617
15618 while _next_ordinal_to_read < 4 {
15620 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15621 _next_ordinal_to_read += 1;
15622 next_offset += envelope_size;
15623 }
15624
15625 let next_out_of_line = decoder.next_out_of_line();
15626 let handles_before = decoder.remaining_handles();
15627 if let Some((inlined, num_bytes, num_handles)) =
15628 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15629 {
15630 let member_inline_size = <fidl::encoding::Vector<LowpanContextInfo, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15631 if inlined != (member_inline_size <= 4) {
15632 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15633 }
15634 let inner_offset;
15635 let mut inner_depth = depth.clone();
15636 if inlined {
15637 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15638 inner_offset = next_offset;
15639 } else {
15640 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15641 inner_depth.increment()?;
15642 }
15643 let val_ref = self.contexts.get_or_insert_with(
15644 || fidl::new_empty!(fidl::encoding::Vector<LowpanContextInfo, 32>, D),
15645 );
15646 fidl::decode!(fidl::encoding::Vector<LowpanContextInfo, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
15647 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15648 {
15649 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15650 }
15651 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15652 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15653 }
15654 }
15655
15656 next_offset += envelope_size;
15657 _next_ordinal_to_read += 1;
15658 if next_offset >= end_offset {
15659 return Ok(());
15660 }
15661
15662 while _next_ordinal_to_read < 5 {
15664 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15665 _next_ordinal_to_read += 1;
15666 next_offset += envelope_size;
15667 }
15668
15669 let next_out_of_line = decoder.next_out_of_line();
15670 let handles_before = decoder.remaining_handles();
15671 if let Some((inlined, num_bytes, num_handles)) =
15672 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15673 {
15674 let member_inline_size =
15675 <CommissioningDataset as fidl::encoding::TypeMarker>::inline_size(
15676 decoder.context,
15677 );
15678 if inlined != (member_inline_size <= 4) {
15679 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15680 }
15681 let inner_offset;
15682 let mut inner_depth = depth.clone();
15683 if inlined {
15684 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15685 inner_offset = next_offset;
15686 } else {
15687 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15688 inner_depth.increment()?;
15689 }
15690 let val_ref = self
15691 .commissioning_dataset
15692 .get_or_insert_with(|| fidl::new_empty!(CommissioningDataset, D));
15693 fidl::decode!(
15694 CommissioningDataset,
15695 D,
15696 val_ref,
15697 decoder,
15698 inner_offset,
15699 inner_depth
15700 )?;
15701 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15702 {
15703 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15704 }
15705 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15706 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15707 }
15708 }
15709
15710 next_offset += envelope_size;
15711
15712 while next_offset < end_offset {
15714 _next_ordinal_to_read += 1;
15715 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15716 next_offset += envelope_size;
15717 }
15718
15719 Ok(())
15720 }
15721 }
15722
15723 impl NetworkScanParameters {
15724 #[inline(always)]
15725 fn max_ordinal_present(&self) -> u64 {
15726 if let Some(_) = self.tx_power_dbm {
15727 return 2;
15728 }
15729 if let Some(_) = self.channels {
15730 return 1;
15731 }
15732 0
15733 }
15734 }
15735
15736 impl fidl::encoding::ValueTypeMarker for NetworkScanParameters {
15737 type Borrowed<'a> = &'a Self;
15738 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15739 value
15740 }
15741 }
15742
15743 unsafe impl fidl::encoding::TypeMarker for NetworkScanParameters {
15744 type Owned = Self;
15745
15746 #[inline(always)]
15747 fn inline_align(_context: fidl::encoding::Context) -> usize {
15748 8
15749 }
15750
15751 #[inline(always)]
15752 fn inline_size(_context: fidl::encoding::Context) -> usize {
15753 16
15754 }
15755 }
15756
15757 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetworkScanParameters, D>
15758 for &NetworkScanParameters
15759 {
15760 unsafe fn encode(
15761 self,
15762 encoder: &mut fidl::encoding::Encoder<'_, D>,
15763 offset: usize,
15764 mut depth: fidl::encoding::Depth,
15765 ) -> fidl::Result<()> {
15766 encoder.debug_check_bounds::<NetworkScanParameters>(offset);
15767 let max_ordinal: u64 = self.max_ordinal_present();
15769 encoder.write_num(max_ordinal, offset);
15770 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15771 if max_ordinal == 0 {
15773 return Ok(());
15774 }
15775 depth.increment()?;
15776 let envelope_size = 8;
15777 let bytes_len = max_ordinal as usize * envelope_size;
15778 #[allow(unused_variables)]
15779 let offset = encoder.out_of_line_offset(bytes_len);
15780 let mut _prev_end_offset: usize = 0;
15781 if 1 > max_ordinal {
15782 return Ok(());
15783 }
15784
15785 let cur_offset: usize = (1 - 1) * envelope_size;
15788
15789 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15791
15792 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u16, 200>, D>(
15797 self.channels.as_ref().map(
15798 <fidl::encoding::Vector<u16, 200> as fidl::encoding::ValueTypeMarker>::borrow,
15799 ),
15800 encoder,
15801 offset + cur_offset,
15802 depth,
15803 )?;
15804
15805 _prev_end_offset = cur_offset + envelope_size;
15806 if 2 > max_ordinal {
15807 return Ok(());
15808 }
15809
15810 let cur_offset: usize = (2 - 1) * envelope_size;
15813
15814 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15816
15817 fidl::encoding::encode_in_envelope_optional::<i8, D>(
15822 self.tx_power_dbm.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
15823 encoder,
15824 offset + cur_offset,
15825 depth,
15826 )?;
15827
15828 _prev_end_offset = cur_offset + envelope_size;
15829
15830 Ok(())
15831 }
15832 }
15833
15834 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkScanParameters {
15835 #[inline(always)]
15836 fn new_empty() -> Self {
15837 Self::default()
15838 }
15839
15840 unsafe fn decode(
15841 &mut self,
15842 decoder: &mut fidl::encoding::Decoder<'_, D>,
15843 offset: usize,
15844 mut depth: fidl::encoding::Depth,
15845 ) -> fidl::Result<()> {
15846 decoder.debug_check_bounds::<Self>(offset);
15847 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15848 None => return Err(fidl::Error::NotNullable),
15849 Some(len) => len,
15850 };
15851 if len == 0 {
15853 return Ok(());
15854 };
15855 depth.increment()?;
15856 let envelope_size = 8;
15857 let bytes_len = len * envelope_size;
15858 let offset = decoder.out_of_line_offset(bytes_len)?;
15859 let mut _next_ordinal_to_read = 0;
15861 let mut next_offset = offset;
15862 let end_offset = offset + bytes_len;
15863 _next_ordinal_to_read += 1;
15864 if next_offset >= end_offset {
15865 return Ok(());
15866 }
15867
15868 while _next_ordinal_to_read < 1 {
15870 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15871 _next_ordinal_to_read += 1;
15872 next_offset += envelope_size;
15873 }
15874
15875 let next_out_of_line = decoder.next_out_of_line();
15876 let handles_before = decoder.remaining_handles();
15877 if let Some((inlined, num_bytes, num_handles)) =
15878 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15879 {
15880 let member_inline_size =
15881 <fidl::encoding::Vector<u16, 200> as fidl::encoding::TypeMarker>::inline_size(
15882 decoder.context,
15883 );
15884 if inlined != (member_inline_size <= 4) {
15885 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15886 }
15887 let inner_offset;
15888 let mut inner_depth = depth.clone();
15889 if inlined {
15890 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15891 inner_offset = next_offset;
15892 } else {
15893 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15894 inner_depth.increment()?;
15895 }
15896 let val_ref = self
15897 .channels
15898 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u16, 200>, D));
15899 fidl::decode!(fidl::encoding::Vector<u16, 200>, D, val_ref, decoder, inner_offset, inner_depth)?;
15900 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15901 {
15902 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15903 }
15904 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15905 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15906 }
15907 }
15908
15909 next_offset += envelope_size;
15910 _next_ordinal_to_read += 1;
15911 if next_offset >= end_offset {
15912 return Ok(());
15913 }
15914
15915 while _next_ordinal_to_read < 2 {
15917 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15918 _next_ordinal_to_read += 1;
15919 next_offset += envelope_size;
15920 }
15921
15922 let next_out_of_line = decoder.next_out_of_line();
15923 let handles_before = decoder.remaining_handles();
15924 if let Some((inlined, num_bytes, num_handles)) =
15925 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15926 {
15927 let member_inline_size =
15928 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15929 if inlined != (member_inline_size <= 4) {
15930 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15931 }
15932 let inner_offset;
15933 let mut inner_depth = depth.clone();
15934 if inlined {
15935 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15936 inner_offset = next_offset;
15937 } else {
15938 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15939 inner_depth.increment()?;
15940 }
15941 let val_ref = self.tx_power_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
15942 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
15943 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15944 {
15945 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15946 }
15947 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15948 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15949 }
15950 }
15951
15952 next_offset += envelope_size;
15953
15954 while next_offset < end_offset {
15956 _next_ordinal_to_read += 1;
15957 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15958 next_offset += envelope_size;
15959 }
15960
15961 Ok(())
15962 }
15963 }
15964
15965 impl OnMeshPrefix {
15966 #[inline(always)]
15967 fn max_ordinal_present(&self) -> u64 {
15968 if let Some(_) = self.slaac_valid {
15969 return 5;
15970 }
15971 if let Some(_) = self.slaac_preferred {
15972 return 4;
15973 }
15974 if let Some(_) = self.stable {
15975 return 3;
15976 }
15977 if let Some(_) = self.default_route_preference {
15978 return 2;
15979 }
15980 if let Some(_) = self.subnet {
15981 return 1;
15982 }
15983 0
15984 }
15985 }
15986
15987 impl fidl::encoding::ValueTypeMarker for OnMeshPrefix {
15988 type Borrowed<'a> = &'a Self;
15989 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15990 value
15991 }
15992 }
15993
15994 unsafe impl fidl::encoding::TypeMarker for OnMeshPrefix {
15995 type Owned = Self;
15996
15997 #[inline(always)]
15998 fn inline_align(_context: fidl::encoding::Context) -> usize {
15999 8
16000 }
16001
16002 #[inline(always)]
16003 fn inline_size(_context: fidl::encoding::Context) -> usize {
16004 16
16005 }
16006 }
16007
16008 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OnMeshPrefix, D>
16009 for &OnMeshPrefix
16010 {
16011 unsafe fn encode(
16012 self,
16013 encoder: &mut fidl::encoding::Encoder<'_, D>,
16014 offset: usize,
16015 mut depth: fidl::encoding::Depth,
16016 ) -> fidl::Result<()> {
16017 encoder.debug_check_bounds::<OnMeshPrefix>(offset);
16018 let max_ordinal: u64 = self.max_ordinal_present();
16020 encoder.write_num(max_ordinal, offset);
16021 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16022 if max_ordinal == 0 {
16024 return Ok(());
16025 }
16026 depth.increment()?;
16027 let envelope_size = 8;
16028 let bytes_len = max_ordinal as usize * envelope_size;
16029 #[allow(unused_variables)]
16030 let offset = encoder.out_of_line_offset(bytes_len);
16031 let mut _prev_end_offset: usize = 0;
16032 if 1 > max_ordinal {
16033 return Ok(());
16034 }
16035
16036 let cur_offset: usize = (1 - 1) * envelope_size;
16039
16040 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16042
16043 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>(
16048 self.subnet.as_ref().map(<fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow),
16049 encoder, offset + cur_offset, depth
16050 )?;
16051
16052 _prev_end_offset = cur_offset + envelope_size;
16053 if 2 > max_ordinal {
16054 return Ok(());
16055 }
16056
16057 let cur_offset: usize = (2 - 1) * envelope_size;
16060
16061 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16063
16064 fidl::encoding::encode_in_envelope_optional::<RoutePreference, D>(
16069 self.default_route_preference
16070 .as_ref()
16071 .map(<RoutePreference as fidl::encoding::ValueTypeMarker>::borrow),
16072 encoder,
16073 offset + cur_offset,
16074 depth,
16075 )?;
16076
16077 _prev_end_offset = cur_offset + envelope_size;
16078 if 3 > max_ordinal {
16079 return Ok(());
16080 }
16081
16082 let cur_offset: usize = (3 - 1) * envelope_size;
16085
16086 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16088
16089 fidl::encoding::encode_in_envelope_optional::<bool, D>(
16094 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
16095 encoder,
16096 offset + cur_offset,
16097 depth,
16098 )?;
16099
16100 _prev_end_offset = cur_offset + envelope_size;
16101 if 4 > max_ordinal {
16102 return Ok(());
16103 }
16104
16105 let cur_offset: usize = (4 - 1) * envelope_size;
16108
16109 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16111
16112 fidl::encoding::encode_in_envelope_optional::<bool, D>(
16117 self.slaac_preferred
16118 .as_ref()
16119 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
16120 encoder,
16121 offset + cur_offset,
16122 depth,
16123 )?;
16124
16125 _prev_end_offset = cur_offset + envelope_size;
16126 if 5 > max_ordinal {
16127 return Ok(());
16128 }
16129
16130 let cur_offset: usize = (5 - 1) * envelope_size;
16133
16134 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16136
16137 fidl::encoding::encode_in_envelope_optional::<bool, D>(
16142 self.slaac_valid.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
16143 encoder,
16144 offset + cur_offset,
16145 depth,
16146 )?;
16147
16148 _prev_end_offset = cur_offset + envelope_size;
16149
16150 Ok(())
16151 }
16152 }
16153
16154 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OnMeshPrefix {
16155 #[inline(always)]
16156 fn new_empty() -> Self {
16157 Self::default()
16158 }
16159
16160 unsafe fn decode(
16161 &mut self,
16162 decoder: &mut fidl::encoding::Decoder<'_, D>,
16163 offset: usize,
16164 mut depth: fidl::encoding::Depth,
16165 ) -> fidl::Result<()> {
16166 decoder.debug_check_bounds::<Self>(offset);
16167 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16168 None => return Err(fidl::Error::NotNullable),
16169 Some(len) => len,
16170 };
16171 if len == 0 {
16173 return Ok(());
16174 };
16175 depth.increment()?;
16176 let envelope_size = 8;
16177 let bytes_len = len * envelope_size;
16178 let offset = decoder.out_of_line_offset(bytes_len)?;
16179 let mut _next_ordinal_to_read = 0;
16181 let mut next_offset = offset;
16182 let end_offset = offset + bytes_len;
16183 _next_ordinal_to_read += 1;
16184 if next_offset >= end_offset {
16185 return Ok(());
16186 }
16187
16188 while _next_ordinal_to_read < 1 {
16190 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16191 _next_ordinal_to_read += 1;
16192 next_offset += envelope_size;
16193 }
16194
16195 let next_out_of_line = decoder.next_out_of_line();
16196 let handles_before = decoder.remaining_handles();
16197 if let Some((inlined, num_bytes, num_handles)) =
16198 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16199 {
16200 let member_inline_size = <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16201 if inlined != (member_inline_size <= 4) {
16202 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16203 }
16204 let inner_offset;
16205 let mut inner_depth = depth.clone();
16206 if inlined {
16207 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16208 inner_offset = next_offset;
16209 } else {
16210 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16211 inner_depth.increment()?;
16212 }
16213 let val_ref = self.subnet.get_or_insert_with(|| {
16214 fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D)
16215 });
16216 fidl::decode!(
16217 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
16218 D,
16219 val_ref,
16220 decoder,
16221 inner_offset,
16222 inner_depth
16223 )?;
16224 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16225 {
16226 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16227 }
16228 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16229 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16230 }
16231 }
16232
16233 next_offset += envelope_size;
16234 _next_ordinal_to_read += 1;
16235 if next_offset >= end_offset {
16236 return Ok(());
16237 }
16238
16239 while _next_ordinal_to_read < 2 {
16241 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16242 _next_ordinal_to_read += 1;
16243 next_offset += envelope_size;
16244 }
16245
16246 let next_out_of_line = decoder.next_out_of_line();
16247 let handles_before = decoder.remaining_handles();
16248 if let Some((inlined, num_bytes, num_handles)) =
16249 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16250 {
16251 let member_inline_size =
16252 <RoutePreference as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16253 if inlined != (member_inline_size <= 4) {
16254 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16255 }
16256 let inner_offset;
16257 let mut inner_depth = depth.clone();
16258 if inlined {
16259 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16260 inner_offset = next_offset;
16261 } else {
16262 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16263 inner_depth.increment()?;
16264 }
16265 let val_ref = self
16266 .default_route_preference
16267 .get_or_insert_with(|| fidl::new_empty!(RoutePreference, D));
16268 fidl::decode!(RoutePreference, D, val_ref, decoder, inner_offset, inner_depth)?;
16269 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16270 {
16271 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16272 }
16273 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16274 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16275 }
16276 }
16277
16278 next_offset += envelope_size;
16279 _next_ordinal_to_read += 1;
16280 if next_offset >= end_offset {
16281 return Ok(());
16282 }
16283
16284 while _next_ordinal_to_read < 3 {
16286 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16287 _next_ordinal_to_read += 1;
16288 next_offset += envelope_size;
16289 }
16290
16291 let next_out_of_line = decoder.next_out_of_line();
16292 let handles_before = decoder.remaining_handles();
16293 if let Some((inlined, num_bytes, num_handles)) =
16294 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16295 {
16296 let member_inline_size =
16297 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16298 if inlined != (member_inline_size <= 4) {
16299 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16300 }
16301 let inner_offset;
16302 let mut inner_depth = depth.clone();
16303 if inlined {
16304 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16305 inner_offset = next_offset;
16306 } else {
16307 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16308 inner_depth.increment()?;
16309 }
16310 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
16311 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
16312 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16313 {
16314 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16315 }
16316 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16317 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16318 }
16319 }
16320
16321 next_offset += envelope_size;
16322 _next_ordinal_to_read += 1;
16323 if next_offset >= end_offset {
16324 return Ok(());
16325 }
16326
16327 while _next_ordinal_to_read < 4 {
16329 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16330 _next_ordinal_to_read += 1;
16331 next_offset += envelope_size;
16332 }
16333
16334 let next_out_of_line = decoder.next_out_of_line();
16335 let handles_before = decoder.remaining_handles();
16336 if let Some((inlined, num_bytes, num_handles)) =
16337 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16338 {
16339 let member_inline_size =
16340 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16341 if inlined != (member_inline_size <= 4) {
16342 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16343 }
16344 let inner_offset;
16345 let mut inner_depth = depth.clone();
16346 if inlined {
16347 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16348 inner_offset = next_offset;
16349 } else {
16350 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16351 inner_depth.increment()?;
16352 }
16353 let val_ref = self.slaac_preferred.get_or_insert_with(|| fidl::new_empty!(bool, D));
16354 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
16355 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16356 {
16357 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16358 }
16359 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16360 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16361 }
16362 }
16363
16364 next_offset += envelope_size;
16365 _next_ordinal_to_read += 1;
16366 if next_offset >= end_offset {
16367 return Ok(());
16368 }
16369
16370 while _next_ordinal_to_read < 5 {
16372 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16373 _next_ordinal_to_read += 1;
16374 next_offset += envelope_size;
16375 }
16376
16377 let next_out_of_line = decoder.next_out_of_line();
16378 let handles_before = decoder.remaining_handles();
16379 if let Some((inlined, num_bytes, num_handles)) =
16380 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16381 {
16382 let member_inline_size =
16383 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16384 if inlined != (member_inline_size <= 4) {
16385 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16386 }
16387 let inner_offset;
16388 let mut inner_depth = depth.clone();
16389 if inlined {
16390 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16391 inner_offset = next_offset;
16392 } else {
16393 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16394 inner_depth.increment()?;
16395 }
16396 let val_ref = self.slaac_valid.get_or_insert_with(|| fidl::new_empty!(bool, D));
16397 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
16398 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16399 {
16400 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16401 }
16402 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16403 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16404 }
16405 }
16406
16407 next_offset += envelope_size;
16408
16409 while next_offset < end_offset {
16411 _next_ordinal_to_read += 1;
16412 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16413 next_offset += envelope_size;
16414 }
16415
16416 Ok(())
16417 }
16418 }
16419
16420 impl OperationalDataset {
16421 #[inline(always)]
16422 fn max_ordinal_present(&self) -> u64 {
16423 if let Some(_) = self.channel_mask {
16424 return 13;
16425 }
16426 if let Some(_) = self.security_policy {
16427 return 12;
16428 }
16429 if let Some(_) = self.pskc {
16430 return 11;
16431 }
16432 if let Some(_) = self.wakeup_channel {
16433 return 10;
16434 }
16435 if let Some(_) = self.channel {
16436 return 9;
16437 }
16438 if let Some(_) = self.pan_id {
16439 return 8;
16440 }
16441 if let Some(_) = self.delay {
16442 return 7;
16443 }
16444 if let Some(_) = self.mesh_local_prefix {
16445 return 6;
16446 }
16447 if let Some(_) = self.extended_pan_id {
16448 return 5;
16449 }
16450 if let Some(_) = self.network_name {
16451 return 4;
16452 }
16453 if let Some(_) = self.network_key {
16454 return 3;
16455 }
16456 if let Some(_) = self.pending_timestamp {
16457 return 2;
16458 }
16459 if let Some(_) = self.active_timestamp {
16460 return 1;
16461 }
16462 0
16463 }
16464 }
16465
16466 impl fidl::encoding::ValueTypeMarker for OperationalDataset {
16467 type Borrowed<'a> = &'a Self;
16468 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16469 value
16470 }
16471 }
16472
16473 unsafe impl fidl::encoding::TypeMarker for OperationalDataset {
16474 type Owned = Self;
16475
16476 #[inline(always)]
16477 fn inline_align(_context: fidl::encoding::Context) -> usize {
16478 8
16479 }
16480
16481 #[inline(always)]
16482 fn inline_size(_context: fidl::encoding::Context) -> usize {
16483 16
16484 }
16485 }
16486
16487 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OperationalDataset, D>
16488 for &OperationalDataset
16489 {
16490 unsafe fn encode(
16491 self,
16492 encoder: &mut fidl::encoding::Encoder<'_, D>,
16493 offset: usize,
16494 mut depth: fidl::encoding::Depth,
16495 ) -> fidl::Result<()> {
16496 encoder.debug_check_bounds::<OperationalDataset>(offset);
16497 let max_ordinal: u64 = self.max_ordinal_present();
16499 encoder.write_num(max_ordinal, offset);
16500 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16501 if max_ordinal == 0 {
16503 return Ok(());
16504 }
16505 depth.increment()?;
16506 let envelope_size = 8;
16507 let bytes_len = max_ordinal as usize * envelope_size;
16508 #[allow(unused_variables)]
16509 let offset = encoder.out_of_line_offset(bytes_len);
16510 let mut _prev_end_offset: usize = 0;
16511 if 1 > max_ordinal {
16512 return Ok(());
16513 }
16514
16515 let cur_offset: usize = (1 - 1) * envelope_size;
16518
16519 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16521
16522 fidl::encoding::encode_in_envelope_optional::<i64, D>(
16527 self.active_timestamp
16528 .as_ref()
16529 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
16530 encoder,
16531 offset + cur_offset,
16532 depth,
16533 )?;
16534
16535 _prev_end_offset = cur_offset + envelope_size;
16536 if 2 > max_ordinal {
16537 return Ok(());
16538 }
16539
16540 let cur_offset: usize = (2 - 1) * envelope_size;
16543
16544 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16546
16547 fidl::encoding::encode_in_envelope_optional::<i64, D>(
16552 self.pending_timestamp
16553 .as_ref()
16554 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
16555 encoder,
16556 offset + cur_offset,
16557 depth,
16558 )?;
16559
16560 _prev_end_offset = cur_offset + envelope_size;
16561 if 3 > max_ordinal {
16562 return Ok(());
16563 }
16564
16565 let cur_offset: usize = (3 - 1) * envelope_size;
16568
16569 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16571
16572 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 16>, D>(
16577 self.network_key.as_ref().map(
16578 <fidl::encoding::Vector<u8, 16> as fidl::encoding::ValueTypeMarker>::borrow,
16579 ),
16580 encoder,
16581 offset + cur_offset,
16582 depth,
16583 )?;
16584
16585 _prev_end_offset = cur_offset + envelope_size;
16586 if 4 > max_ordinal {
16587 return Ok(());
16588 }
16589
16590 let cur_offset: usize = (4 - 1) * envelope_size;
16593
16594 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16596
16597 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 17>, D>(
16602 self.network_name.as_ref().map(
16603 <fidl::encoding::Vector<u8, 17> as fidl::encoding::ValueTypeMarker>::borrow,
16604 ),
16605 encoder,
16606 offset + cur_offset,
16607 depth,
16608 )?;
16609
16610 _prev_end_offset = cur_offset + envelope_size;
16611 if 5 > max_ordinal {
16612 return Ok(());
16613 }
16614
16615 let cur_offset: usize = (5 - 1) * envelope_size;
16618
16619 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16621
16622 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
16627 self.extended_pan_id.as_ref().map(
16628 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
16629 ),
16630 encoder,
16631 offset + cur_offset,
16632 depth,
16633 )?;
16634
16635 _prev_end_offset = cur_offset + envelope_size;
16636 if 6 > max_ordinal {
16637 return Ok(());
16638 }
16639
16640 let cur_offset: usize = (6 - 1) * envelope_size;
16643
16644 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16646
16647 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
16652 self.mesh_local_prefix.as_ref().map(
16653 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
16654 ),
16655 encoder,
16656 offset + cur_offset,
16657 depth,
16658 )?;
16659
16660 _prev_end_offset = cur_offset + envelope_size;
16661 if 7 > max_ordinal {
16662 return Ok(());
16663 }
16664
16665 let cur_offset: usize = (7 - 1) * envelope_size;
16668
16669 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16671
16672 fidl::encoding::encode_in_envelope_optional::<u32, D>(
16677 self.delay.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
16678 encoder,
16679 offset + cur_offset,
16680 depth,
16681 )?;
16682
16683 _prev_end_offset = cur_offset + envelope_size;
16684 if 8 > max_ordinal {
16685 return Ok(());
16686 }
16687
16688 let cur_offset: usize = (8 - 1) * envelope_size;
16691
16692 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16694
16695 fidl::encoding::encode_in_envelope_optional::<u16, D>(
16700 self.pan_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
16701 encoder,
16702 offset + cur_offset,
16703 depth,
16704 )?;
16705
16706 _prev_end_offset = cur_offset + envelope_size;
16707 if 9 > max_ordinal {
16708 return Ok(());
16709 }
16710
16711 let cur_offset: usize = (9 - 1) * envelope_size;
16714
16715 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16717
16718 fidl::encoding::encode_in_envelope_optional::<u16, D>(
16723 self.channel.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
16724 encoder,
16725 offset + cur_offset,
16726 depth,
16727 )?;
16728
16729 _prev_end_offset = cur_offset + envelope_size;
16730 if 10 > max_ordinal {
16731 return Ok(());
16732 }
16733
16734 let cur_offset: usize = (10 - 1) * envelope_size;
16737
16738 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16740
16741 fidl::encoding::encode_in_envelope_optional::<u16, D>(
16746 self.wakeup_channel.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
16747 encoder,
16748 offset + cur_offset,
16749 depth,
16750 )?;
16751
16752 _prev_end_offset = cur_offset + envelope_size;
16753 if 11 > max_ordinal {
16754 return Ok(());
16755 }
16756
16757 let cur_offset: usize = (11 - 1) * envelope_size;
16760
16761 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16763
16764 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 16>, D>(
16769 self.pskc.as_ref().map(
16770 <fidl::encoding::Vector<u8, 16> as fidl::encoding::ValueTypeMarker>::borrow,
16771 ),
16772 encoder,
16773 offset + cur_offset,
16774 depth,
16775 )?;
16776
16777 _prev_end_offset = cur_offset + envelope_size;
16778 if 12 > max_ordinal {
16779 return Ok(());
16780 }
16781
16782 let cur_offset: usize = (12 - 1) * envelope_size;
16785
16786 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16788
16789 fidl::encoding::encode_in_envelope_optional::<SecurityPolicy, D>(
16794 self.security_policy
16795 .as_ref()
16796 .map(<SecurityPolicy as fidl::encoding::ValueTypeMarker>::borrow),
16797 encoder,
16798 offset + cur_offset,
16799 depth,
16800 )?;
16801
16802 _prev_end_offset = cur_offset + envelope_size;
16803 if 13 > max_ordinal {
16804 return Ok(());
16805 }
16806
16807 let cur_offset: usize = (13 - 1) * envelope_size;
16810
16811 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16813
16814 fidl::encoding::encode_in_envelope_optional::<u32, D>(
16819 self.channel_mask.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
16820 encoder,
16821 offset + cur_offset,
16822 depth,
16823 )?;
16824
16825 _prev_end_offset = cur_offset + envelope_size;
16826
16827 Ok(())
16828 }
16829 }
16830
16831 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OperationalDataset {
16832 #[inline(always)]
16833 fn new_empty() -> Self {
16834 Self::default()
16835 }
16836
16837 unsafe fn decode(
16838 &mut self,
16839 decoder: &mut fidl::encoding::Decoder<'_, D>,
16840 offset: usize,
16841 mut depth: fidl::encoding::Depth,
16842 ) -> fidl::Result<()> {
16843 decoder.debug_check_bounds::<Self>(offset);
16844 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16845 None => return Err(fidl::Error::NotNullable),
16846 Some(len) => len,
16847 };
16848 if len == 0 {
16850 return Ok(());
16851 };
16852 depth.increment()?;
16853 let envelope_size = 8;
16854 let bytes_len = len * envelope_size;
16855 let offset = decoder.out_of_line_offset(bytes_len)?;
16856 let mut _next_ordinal_to_read = 0;
16858 let mut next_offset = offset;
16859 let end_offset = offset + bytes_len;
16860 _next_ordinal_to_read += 1;
16861 if next_offset >= end_offset {
16862 return Ok(());
16863 }
16864
16865 while _next_ordinal_to_read < 1 {
16867 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16868 _next_ordinal_to_read += 1;
16869 next_offset += envelope_size;
16870 }
16871
16872 let next_out_of_line = decoder.next_out_of_line();
16873 let handles_before = decoder.remaining_handles();
16874 if let Some((inlined, num_bytes, num_handles)) =
16875 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16876 {
16877 let member_inline_size =
16878 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16879 if inlined != (member_inline_size <= 4) {
16880 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16881 }
16882 let inner_offset;
16883 let mut inner_depth = depth.clone();
16884 if inlined {
16885 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16886 inner_offset = next_offset;
16887 } else {
16888 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16889 inner_depth.increment()?;
16890 }
16891 let val_ref = self.active_timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
16892 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
16893 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16894 {
16895 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16896 }
16897 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16898 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16899 }
16900 }
16901
16902 next_offset += envelope_size;
16903 _next_ordinal_to_read += 1;
16904 if next_offset >= end_offset {
16905 return Ok(());
16906 }
16907
16908 while _next_ordinal_to_read < 2 {
16910 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16911 _next_ordinal_to_read += 1;
16912 next_offset += envelope_size;
16913 }
16914
16915 let next_out_of_line = decoder.next_out_of_line();
16916 let handles_before = decoder.remaining_handles();
16917 if let Some((inlined, num_bytes, num_handles)) =
16918 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16919 {
16920 let member_inline_size =
16921 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16922 if inlined != (member_inline_size <= 4) {
16923 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16924 }
16925 let inner_offset;
16926 let mut inner_depth = depth.clone();
16927 if inlined {
16928 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16929 inner_offset = next_offset;
16930 } else {
16931 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16932 inner_depth.increment()?;
16933 }
16934 let val_ref =
16935 self.pending_timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
16936 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
16937 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16938 {
16939 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16940 }
16941 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16942 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16943 }
16944 }
16945
16946 next_offset += envelope_size;
16947 _next_ordinal_to_read += 1;
16948 if next_offset >= end_offset {
16949 return Ok(());
16950 }
16951
16952 while _next_ordinal_to_read < 3 {
16954 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16955 _next_ordinal_to_read += 1;
16956 next_offset += envelope_size;
16957 }
16958
16959 let next_out_of_line = decoder.next_out_of_line();
16960 let handles_before = decoder.remaining_handles();
16961 if let Some((inlined, num_bytes, num_handles)) =
16962 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16963 {
16964 let member_inline_size =
16965 <fidl::encoding::Vector<u8, 16> as fidl::encoding::TypeMarker>::inline_size(
16966 decoder.context,
16967 );
16968 if inlined != (member_inline_size <= 4) {
16969 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16970 }
16971 let inner_offset;
16972 let mut inner_depth = depth.clone();
16973 if inlined {
16974 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16975 inner_offset = next_offset;
16976 } else {
16977 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16978 inner_depth.increment()?;
16979 }
16980 let val_ref = self
16981 .network_key
16982 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 16>, D));
16983 fidl::decode!(fidl::encoding::Vector<u8, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
16984 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16985 {
16986 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16987 }
16988 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16989 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16990 }
16991 }
16992
16993 next_offset += envelope_size;
16994 _next_ordinal_to_read += 1;
16995 if next_offset >= end_offset {
16996 return Ok(());
16997 }
16998
16999 while _next_ordinal_to_read < 4 {
17001 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17002 _next_ordinal_to_read += 1;
17003 next_offset += envelope_size;
17004 }
17005
17006 let next_out_of_line = decoder.next_out_of_line();
17007 let handles_before = decoder.remaining_handles();
17008 if let Some((inlined, num_bytes, num_handles)) =
17009 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17010 {
17011 let member_inline_size =
17012 <fidl::encoding::Vector<u8, 17> as fidl::encoding::TypeMarker>::inline_size(
17013 decoder.context,
17014 );
17015 if inlined != (member_inline_size <= 4) {
17016 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17017 }
17018 let inner_offset;
17019 let mut inner_depth = depth.clone();
17020 if inlined {
17021 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17022 inner_offset = next_offset;
17023 } else {
17024 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17025 inner_depth.increment()?;
17026 }
17027 let val_ref = self
17028 .network_name
17029 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 17>, D));
17030 fidl::decode!(fidl::encoding::Vector<u8, 17>, D, val_ref, decoder, inner_offset, inner_depth)?;
17031 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17032 {
17033 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17034 }
17035 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17036 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17037 }
17038 }
17039
17040 next_offset += envelope_size;
17041 _next_ordinal_to_read += 1;
17042 if next_offset >= end_offset {
17043 return Ok(());
17044 }
17045
17046 while _next_ordinal_to_read < 5 {
17048 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17049 _next_ordinal_to_read += 1;
17050 next_offset += envelope_size;
17051 }
17052
17053 let next_out_of_line = decoder.next_out_of_line();
17054 let handles_before = decoder.remaining_handles();
17055 if let Some((inlined, num_bytes, num_handles)) =
17056 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17057 {
17058 let member_inline_size =
17059 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
17060 decoder.context,
17061 );
17062 if inlined != (member_inline_size <= 4) {
17063 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17064 }
17065 let inner_offset;
17066 let mut inner_depth = depth.clone();
17067 if inlined {
17068 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17069 inner_offset = next_offset;
17070 } else {
17071 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17072 inner_depth.increment()?;
17073 }
17074 let val_ref = self
17075 .extended_pan_id
17076 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
17077 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
17078 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17079 {
17080 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17081 }
17082 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17083 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17084 }
17085 }
17086
17087 next_offset += envelope_size;
17088 _next_ordinal_to_read += 1;
17089 if next_offset >= end_offset {
17090 return Ok(());
17091 }
17092
17093 while _next_ordinal_to_read < 6 {
17095 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17096 _next_ordinal_to_read += 1;
17097 next_offset += envelope_size;
17098 }
17099
17100 let next_out_of_line = decoder.next_out_of_line();
17101 let handles_before = decoder.remaining_handles();
17102 if let Some((inlined, num_bytes, num_handles)) =
17103 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17104 {
17105 let member_inline_size =
17106 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
17107 decoder.context,
17108 );
17109 if inlined != (member_inline_size <= 4) {
17110 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17111 }
17112 let inner_offset;
17113 let mut inner_depth = depth.clone();
17114 if inlined {
17115 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17116 inner_offset = next_offset;
17117 } else {
17118 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17119 inner_depth.increment()?;
17120 }
17121 let val_ref = self
17122 .mesh_local_prefix
17123 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
17124 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
17125 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17126 {
17127 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17128 }
17129 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17130 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17131 }
17132 }
17133
17134 next_offset += envelope_size;
17135 _next_ordinal_to_read += 1;
17136 if next_offset >= end_offset {
17137 return Ok(());
17138 }
17139
17140 while _next_ordinal_to_read < 7 {
17142 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17143 _next_ordinal_to_read += 1;
17144 next_offset += envelope_size;
17145 }
17146
17147 let next_out_of_line = decoder.next_out_of_line();
17148 let handles_before = decoder.remaining_handles();
17149 if let Some((inlined, num_bytes, num_handles)) =
17150 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17151 {
17152 let member_inline_size =
17153 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17154 if inlined != (member_inline_size <= 4) {
17155 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17156 }
17157 let inner_offset;
17158 let mut inner_depth = depth.clone();
17159 if inlined {
17160 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17161 inner_offset = next_offset;
17162 } else {
17163 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17164 inner_depth.increment()?;
17165 }
17166 let val_ref = self.delay.get_or_insert_with(|| fidl::new_empty!(u32, D));
17167 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
17168 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17169 {
17170 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17171 }
17172 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17173 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17174 }
17175 }
17176
17177 next_offset += envelope_size;
17178 _next_ordinal_to_read += 1;
17179 if next_offset >= end_offset {
17180 return Ok(());
17181 }
17182
17183 while _next_ordinal_to_read < 8 {
17185 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17186 _next_ordinal_to_read += 1;
17187 next_offset += envelope_size;
17188 }
17189
17190 let next_out_of_line = decoder.next_out_of_line();
17191 let handles_before = decoder.remaining_handles();
17192 if let Some((inlined, num_bytes, num_handles)) =
17193 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17194 {
17195 let member_inline_size =
17196 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17197 if inlined != (member_inline_size <= 4) {
17198 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17199 }
17200 let inner_offset;
17201 let mut inner_depth = depth.clone();
17202 if inlined {
17203 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17204 inner_offset = next_offset;
17205 } else {
17206 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17207 inner_depth.increment()?;
17208 }
17209 let val_ref = self.pan_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
17210 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
17211 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17212 {
17213 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17214 }
17215 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17216 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17217 }
17218 }
17219
17220 next_offset += envelope_size;
17221 _next_ordinal_to_read += 1;
17222 if next_offset >= end_offset {
17223 return Ok(());
17224 }
17225
17226 while _next_ordinal_to_read < 9 {
17228 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17229 _next_ordinal_to_read += 1;
17230 next_offset += envelope_size;
17231 }
17232
17233 let next_out_of_line = decoder.next_out_of_line();
17234 let handles_before = decoder.remaining_handles();
17235 if let Some((inlined, num_bytes, num_handles)) =
17236 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17237 {
17238 let member_inline_size =
17239 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17240 if inlined != (member_inline_size <= 4) {
17241 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17242 }
17243 let inner_offset;
17244 let mut inner_depth = depth.clone();
17245 if inlined {
17246 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17247 inner_offset = next_offset;
17248 } else {
17249 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17250 inner_depth.increment()?;
17251 }
17252 let val_ref = self.channel.get_or_insert_with(|| fidl::new_empty!(u16, D));
17253 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
17254 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17255 {
17256 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17257 }
17258 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17259 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17260 }
17261 }
17262
17263 next_offset += envelope_size;
17264 _next_ordinal_to_read += 1;
17265 if next_offset >= end_offset {
17266 return Ok(());
17267 }
17268
17269 while _next_ordinal_to_read < 10 {
17271 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17272 _next_ordinal_to_read += 1;
17273 next_offset += envelope_size;
17274 }
17275
17276 let next_out_of_line = decoder.next_out_of_line();
17277 let handles_before = decoder.remaining_handles();
17278 if let Some((inlined, num_bytes, num_handles)) =
17279 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17280 {
17281 let member_inline_size =
17282 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17283 if inlined != (member_inline_size <= 4) {
17284 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17285 }
17286 let inner_offset;
17287 let mut inner_depth = depth.clone();
17288 if inlined {
17289 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17290 inner_offset = next_offset;
17291 } else {
17292 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17293 inner_depth.increment()?;
17294 }
17295 let val_ref = self.wakeup_channel.get_or_insert_with(|| fidl::new_empty!(u16, D));
17296 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
17297 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17298 {
17299 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17300 }
17301 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17302 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17303 }
17304 }
17305
17306 next_offset += envelope_size;
17307 _next_ordinal_to_read += 1;
17308 if next_offset >= end_offset {
17309 return Ok(());
17310 }
17311
17312 while _next_ordinal_to_read < 11 {
17314 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17315 _next_ordinal_to_read += 1;
17316 next_offset += envelope_size;
17317 }
17318
17319 let next_out_of_line = decoder.next_out_of_line();
17320 let handles_before = decoder.remaining_handles();
17321 if let Some((inlined, num_bytes, num_handles)) =
17322 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17323 {
17324 let member_inline_size =
17325 <fidl::encoding::Vector<u8, 16> as fidl::encoding::TypeMarker>::inline_size(
17326 decoder.context,
17327 );
17328 if inlined != (member_inline_size <= 4) {
17329 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17330 }
17331 let inner_offset;
17332 let mut inner_depth = depth.clone();
17333 if inlined {
17334 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17335 inner_offset = next_offset;
17336 } else {
17337 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17338 inner_depth.increment()?;
17339 }
17340 let val_ref = self
17341 .pskc
17342 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 16>, D));
17343 fidl::decode!(fidl::encoding::Vector<u8, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
17344 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17345 {
17346 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17347 }
17348 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17349 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17350 }
17351 }
17352
17353 next_offset += envelope_size;
17354 _next_ordinal_to_read += 1;
17355 if next_offset >= end_offset {
17356 return Ok(());
17357 }
17358
17359 while _next_ordinal_to_read < 12 {
17361 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17362 _next_ordinal_to_read += 1;
17363 next_offset += envelope_size;
17364 }
17365
17366 let next_out_of_line = decoder.next_out_of_line();
17367 let handles_before = decoder.remaining_handles();
17368 if let Some((inlined, num_bytes, num_handles)) =
17369 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17370 {
17371 let member_inline_size =
17372 <SecurityPolicy as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17373 if inlined != (member_inline_size <= 4) {
17374 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17375 }
17376 let inner_offset;
17377 let mut inner_depth = depth.clone();
17378 if inlined {
17379 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17380 inner_offset = next_offset;
17381 } else {
17382 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17383 inner_depth.increment()?;
17384 }
17385 let val_ref =
17386 self.security_policy.get_or_insert_with(|| fidl::new_empty!(SecurityPolicy, D));
17387 fidl::decode!(SecurityPolicy, D, val_ref, decoder, inner_offset, inner_depth)?;
17388 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17389 {
17390 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17391 }
17392 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17393 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17394 }
17395 }
17396
17397 next_offset += envelope_size;
17398 _next_ordinal_to_read += 1;
17399 if next_offset >= end_offset {
17400 return Ok(());
17401 }
17402
17403 while _next_ordinal_to_read < 13 {
17405 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17406 _next_ordinal_to_read += 1;
17407 next_offset += envelope_size;
17408 }
17409
17410 let next_out_of_line = decoder.next_out_of_line();
17411 let handles_before = decoder.remaining_handles();
17412 if let Some((inlined, num_bytes, num_handles)) =
17413 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17414 {
17415 let member_inline_size =
17416 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17417 if inlined != (member_inline_size <= 4) {
17418 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17419 }
17420 let inner_offset;
17421 let mut inner_depth = depth.clone();
17422 if inlined {
17423 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17424 inner_offset = next_offset;
17425 } else {
17426 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17427 inner_depth.increment()?;
17428 }
17429 let val_ref = self.channel_mask.get_or_insert_with(|| fidl::new_empty!(u32, D));
17430 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
17431 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17432 {
17433 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17434 }
17435 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17436 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17437 }
17438 }
17439
17440 next_offset += envelope_size;
17441
17442 while next_offset < end_offset {
17444 _next_ordinal_to_read += 1;
17445 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17446 next_offset += envelope_size;
17447 }
17448
17449 Ok(())
17450 }
17451 }
17452
17453 impl PdProcessedRaInfo {
17454 #[inline(always)]
17455 fn max_ordinal_present(&self) -> u64 {
17456 if let Some(_) = self.last_platform_ra_msec {
17457 return 3;
17458 }
17459 if let Some(_) = self.num_platform_pio_processed {
17460 return 2;
17461 }
17462 if let Some(_) = self.num_platform_ra_received {
17463 return 1;
17464 }
17465 0
17466 }
17467 }
17468
17469 impl fidl::encoding::ValueTypeMarker for PdProcessedRaInfo {
17470 type Borrowed<'a> = &'a Self;
17471 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17472 value
17473 }
17474 }
17475
17476 unsafe impl fidl::encoding::TypeMarker for PdProcessedRaInfo {
17477 type Owned = Self;
17478
17479 #[inline(always)]
17480 fn inline_align(_context: fidl::encoding::Context) -> usize {
17481 8
17482 }
17483
17484 #[inline(always)]
17485 fn inline_size(_context: fidl::encoding::Context) -> usize {
17486 16
17487 }
17488 }
17489
17490 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PdProcessedRaInfo, D>
17491 for &PdProcessedRaInfo
17492 {
17493 unsafe fn encode(
17494 self,
17495 encoder: &mut fidl::encoding::Encoder<'_, D>,
17496 offset: usize,
17497 mut depth: fidl::encoding::Depth,
17498 ) -> fidl::Result<()> {
17499 encoder.debug_check_bounds::<PdProcessedRaInfo>(offset);
17500 let max_ordinal: u64 = self.max_ordinal_present();
17502 encoder.write_num(max_ordinal, offset);
17503 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17504 if max_ordinal == 0 {
17506 return Ok(());
17507 }
17508 depth.increment()?;
17509 let envelope_size = 8;
17510 let bytes_len = max_ordinal as usize * envelope_size;
17511 #[allow(unused_variables)]
17512 let offset = encoder.out_of_line_offset(bytes_len);
17513 let mut _prev_end_offset: usize = 0;
17514 if 1 > max_ordinal {
17515 return Ok(());
17516 }
17517
17518 let cur_offset: usize = (1 - 1) * envelope_size;
17521
17522 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17524
17525 fidl::encoding::encode_in_envelope_optional::<u32, D>(
17530 self.num_platform_ra_received
17531 .as_ref()
17532 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
17533 encoder,
17534 offset + cur_offset,
17535 depth,
17536 )?;
17537
17538 _prev_end_offset = cur_offset + envelope_size;
17539 if 2 > max_ordinal {
17540 return Ok(());
17541 }
17542
17543 let cur_offset: usize = (2 - 1) * envelope_size;
17546
17547 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17549
17550 fidl::encoding::encode_in_envelope_optional::<u32, D>(
17555 self.num_platform_pio_processed
17556 .as_ref()
17557 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
17558 encoder,
17559 offset + cur_offset,
17560 depth,
17561 )?;
17562
17563 _prev_end_offset = cur_offset + envelope_size;
17564 if 3 > max_ordinal {
17565 return Ok(());
17566 }
17567
17568 let cur_offset: usize = (3 - 1) * envelope_size;
17571
17572 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17574
17575 fidl::encoding::encode_in_envelope_optional::<u32, D>(
17580 self.last_platform_ra_msec
17581 .as_ref()
17582 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
17583 encoder,
17584 offset + cur_offset,
17585 depth,
17586 )?;
17587
17588 _prev_end_offset = cur_offset + envelope_size;
17589
17590 Ok(())
17591 }
17592 }
17593
17594 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PdProcessedRaInfo {
17595 #[inline(always)]
17596 fn new_empty() -> Self {
17597 Self::default()
17598 }
17599
17600 unsafe fn decode(
17601 &mut self,
17602 decoder: &mut fidl::encoding::Decoder<'_, D>,
17603 offset: usize,
17604 mut depth: fidl::encoding::Depth,
17605 ) -> fidl::Result<()> {
17606 decoder.debug_check_bounds::<Self>(offset);
17607 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17608 None => return Err(fidl::Error::NotNullable),
17609 Some(len) => len,
17610 };
17611 if len == 0 {
17613 return Ok(());
17614 };
17615 depth.increment()?;
17616 let envelope_size = 8;
17617 let bytes_len = len * envelope_size;
17618 let offset = decoder.out_of_line_offset(bytes_len)?;
17619 let mut _next_ordinal_to_read = 0;
17621 let mut next_offset = offset;
17622 let end_offset = offset + bytes_len;
17623 _next_ordinal_to_read += 1;
17624 if next_offset >= end_offset {
17625 return Ok(());
17626 }
17627
17628 while _next_ordinal_to_read < 1 {
17630 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17631 _next_ordinal_to_read += 1;
17632 next_offset += envelope_size;
17633 }
17634
17635 let next_out_of_line = decoder.next_out_of_line();
17636 let handles_before = decoder.remaining_handles();
17637 if let Some((inlined, num_bytes, num_handles)) =
17638 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17639 {
17640 let member_inline_size =
17641 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17642 if inlined != (member_inline_size <= 4) {
17643 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17644 }
17645 let inner_offset;
17646 let mut inner_depth = depth.clone();
17647 if inlined {
17648 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17649 inner_offset = next_offset;
17650 } else {
17651 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17652 inner_depth.increment()?;
17653 }
17654 let val_ref =
17655 self.num_platform_ra_received.get_or_insert_with(|| fidl::new_empty!(u32, D));
17656 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
17657 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17658 {
17659 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17660 }
17661 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17662 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17663 }
17664 }
17665
17666 next_offset += envelope_size;
17667 _next_ordinal_to_read += 1;
17668 if next_offset >= end_offset {
17669 return Ok(());
17670 }
17671
17672 while _next_ordinal_to_read < 2 {
17674 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17675 _next_ordinal_to_read += 1;
17676 next_offset += envelope_size;
17677 }
17678
17679 let next_out_of_line = decoder.next_out_of_line();
17680 let handles_before = decoder.remaining_handles();
17681 if let Some((inlined, num_bytes, num_handles)) =
17682 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17683 {
17684 let member_inline_size =
17685 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17686 if inlined != (member_inline_size <= 4) {
17687 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17688 }
17689 let inner_offset;
17690 let mut inner_depth = depth.clone();
17691 if inlined {
17692 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17693 inner_offset = next_offset;
17694 } else {
17695 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17696 inner_depth.increment()?;
17697 }
17698 let val_ref =
17699 self.num_platform_pio_processed.get_or_insert_with(|| fidl::new_empty!(u32, D));
17700 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
17701 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17702 {
17703 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17704 }
17705 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17706 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17707 }
17708 }
17709
17710 next_offset += envelope_size;
17711 _next_ordinal_to_read += 1;
17712 if next_offset >= end_offset {
17713 return Ok(());
17714 }
17715
17716 while _next_ordinal_to_read < 3 {
17718 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17719 _next_ordinal_to_read += 1;
17720 next_offset += envelope_size;
17721 }
17722
17723 let next_out_of_line = decoder.next_out_of_line();
17724 let handles_before = decoder.remaining_handles();
17725 if let Some((inlined, num_bytes, num_handles)) =
17726 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17727 {
17728 let member_inline_size =
17729 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17730 if inlined != (member_inline_size <= 4) {
17731 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17732 }
17733 let inner_offset;
17734 let mut inner_depth = depth.clone();
17735 if inlined {
17736 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17737 inner_offset = next_offset;
17738 } else {
17739 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17740 inner_depth.increment()?;
17741 }
17742 let val_ref =
17743 self.last_platform_ra_msec.get_or_insert_with(|| fidl::new_empty!(u32, D));
17744 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
17745 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17746 {
17747 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17748 }
17749 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17750 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17751 }
17752 }
17753
17754 next_offset += envelope_size;
17755
17756 while next_offset < end_offset {
17758 _next_ordinal_to_read += 1;
17759 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17760 next_offset += envelope_size;
17761 }
17762
17763 Ok(())
17764 }
17765 }
17766
17767 impl RadioLinkInfo {
17768 #[inline(always)]
17769 fn max_ordinal_present(&self) -> u64 {
17770 if let Some(_) = self.preference {
17771 return 2;
17772 }
17773 if let Some(_) = self.link_type {
17774 return 1;
17775 }
17776 0
17777 }
17778 }
17779
17780 impl fidl::encoding::ValueTypeMarker for RadioLinkInfo {
17781 type Borrowed<'a> = &'a Self;
17782 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17783 value
17784 }
17785 }
17786
17787 unsafe impl fidl::encoding::TypeMarker for RadioLinkInfo {
17788 type Owned = Self;
17789
17790 #[inline(always)]
17791 fn inline_align(_context: fidl::encoding::Context) -> usize {
17792 8
17793 }
17794
17795 #[inline(always)]
17796 fn inline_size(_context: fidl::encoding::Context) -> usize {
17797 16
17798 }
17799 }
17800
17801 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RadioLinkInfo, D>
17802 for &RadioLinkInfo
17803 {
17804 unsafe fn encode(
17805 self,
17806 encoder: &mut fidl::encoding::Encoder<'_, D>,
17807 offset: usize,
17808 mut depth: fidl::encoding::Depth,
17809 ) -> fidl::Result<()> {
17810 encoder.debug_check_bounds::<RadioLinkInfo>(offset);
17811 let max_ordinal: u64 = self.max_ordinal_present();
17813 encoder.write_num(max_ordinal, offset);
17814 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17815 if max_ordinal == 0 {
17817 return Ok(());
17818 }
17819 depth.increment()?;
17820 let envelope_size = 8;
17821 let bytes_len = max_ordinal as usize * envelope_size;
17822 #[allow(unused_variables)]
17823 let offset = encoder.out_of_line_offset(bytes_len);
17824 let mut _prev_end_offset: usize = 0;
17825 if 1 > max_ordinal {
17826 return Ok(());
17827 }
17828
17829 let cur_offset: usize = (1 - 1) * envelope_size;
17832
17833 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17835
17836 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<10>, D>(
17841 self.link_type.as_ref().map(
17842 <fidl::encoding::BoundedString<10> as fidl::encoding::ValueTypeMarker>::borrow,
17843 ),
17844 encoder,
17845 offset + cur_offset,
17846 depth,
17847 )?;
17848
17849 _prev_end_offset = cur_offset + envelope_size;
17850 if 2 > max_ordinal {
17851 return Ok(());
17852 }
17853
17854 let cur_offset: usize = (2 - 1) * envelope_size;
17857
17858 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17860
17861 fidl::encoding::encode_in_envelope_optional::<u8, D>(
17866 self.preference.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
17867 encoder,
17868 offset + cur_offset,
17869 depth,
17870 )?;
17871
17872 _prev_end_offset = cur_offset + envelope_size;
17873
17874 Ok(())
17875 }
17876 }
17877
17878 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RadioLinkInfo {
17879 #[inline(always)]
17880 fn new_empty() -> Self {
17881 Self::default()
17882 }
17883
17884 unsafe fn decode(
17885 &mut self,
17886 decoder: &mut fidl::encoding::Decoder<'_, D>,
17887 offset: usize,
17888 mut depth: fidl::encoding::Depth,
17889 ) -> fidl::Result<()> {
17890 decoder.debug_check_bounds::<Self>(offset);
17891 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17892 None => return Err(fidl::Error::NotNullable),
17893 Some(len) => len,
17894 };
17895 if len == 0 {
17897 return Ok(());
17898 };
17899 depth.increment()?;
17900 let envelope_size = 8;
17901 let bytes_len = len * envelope_size;
17902 let offset = decoder.out_of_line_offset(bytes_len)?;
17903 let mut _next_ordinal_to_read = 0;
17905 let mut next_offset = offset;
17906 let end_offset = offset + bytes_len;
17907 _next_ordinal_to_read += 1;
17908 if next_offset >= end_offset {
17909 return Ok(());
17910 }
17911
17912 while _next_ordinal_to_read < 1 {
17914 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17915 _next_ordinal_to_read += 1;
17916 next_offset += envelope_size;
17917 }
17918
17919 let next_out_of_line = decoder.next_out_of_line();
17920 let handles_before = decoder.remaining_handles();
17921 if let Some((inlined, num_bytes, num_handles)) =
17922 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17923 {
17924 let member_inline_size =
17925 <fidl::encoding::BoundedString<10> as fidl::encoding::TypeMarker>::inline_size(
17926 decoder.context,
17927 );
17928 if inlined != (member_inline_size <= 4) {
17929 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17930 }
17931 let inner_offset;
17932 let mut inner_depth = depth.clone();
17933 if inlined {
17934 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17935 inner_offset = next_offset;
17936 } else {
17937 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17938 inner_depth.increment()?;
17939 }
17940 let val_ref = self
17941 .link_type
17942 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<10>, D));
17943 fidl::decode!(
17944 fidl::encoding::BoundedString<10>,
17945 D,
17946 val_ref,
17947 decoder,
17948 inner_offset,
17949 inner_depth
17950 )?;
17951 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17952 {
17953 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17954 }
17955 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17956 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17957 }
17958 }
17959
17960 next_offset += envelope_size;
17961 _next_ordinal_to_read += 1;
17962 if next_offset >= end_offset {
17963 return Ok(());
17964 }
17965
17966 while _next_ordinal_to_read < 2 {
17968 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17969 _next_ordinal_to_read += 1;
17970 next_offset += envelope_size;
17971 }
17972
17973 let next_out_of_line = decoder.next_out_of_line();
17974 let handles_before = decoder.remaining_handles();
17975 if let Some((inlined, num_bytes, num_handles)) =
17976 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17977 {
17978 let member_inline_size =
17979 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17980 if inlined != (member_inline_size <= 4) {
17981 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17982 }
17983 let inner_offset;
17984 let mut inner_depth = depth.clone();
17985 if inlined {
17986 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17987 inner_offset = next_offset;
17988 } else {
17989 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17990 inner_depth.increment()?;
17991 }
17992 let val_ref = self.preference.get_or_insert_with(|| fidl::new_empty!(u8, D));
17993 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
17994 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17995 {
17996 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17997 }
17998 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17999 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18000 }
18001 }
18002
18003 next_offset += envelope_size;
18004
18005 while next_offset < end_offset {
18007 _next_ordinal_to_read += 1;
18008 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18009 next_offset += envelope_size;
18010 }
18011
18012 Ok(())
18013 }
18014 }
18015
18016 impl RouterInfo {
18017 #[inline(always)]
18018 fn max_ordinal_present(&self) -> u64 {
18019 if let Some(_) = self.link_established {
18020 return 9;
18021 }
18022 if let Some(_) = self.age {
18023 return 8;
18024 }
18025 if let Some(_) = self.link_quality_out {
18026 return 7;
18027 }
18028 if let Some(_) = self.link_quality_in {
18029 return 6;
18030 }
18031 if let Some(_) = self.path_cost {
18032 return 5;
18033 }
18034 if let Some(_) = self.next_hop {
18035 return 4;
18036 }
18037 if let Some(_) = self.router_id {
18038 return 3;
18039 }
18040 if let Some(_) = self.thread_rloc {
18041 return 2;
18042 }
18043 if let Some(_) = self.extended_address {
18044 return 1;
18045 }
18046 0
18047 }
18048 }
18049
18050 impl fidl::encoding::ValueTypeMarker for RouterInfo {
18051 type Borrowed<'a> = &'a Self;
18052 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
18053 value
18054 }
18055 }
18056
18057 unsafe impl fidl::encoding::TypeMarker for RouterInfo {
18058 type Owned = Self;
18059
18060 #[inline(always)]
18061 fn inline_align(_context: fidl::encoding::Context) -> usize {
18062 8
18063 }
18064
18065 #[inline(always)]
18066 fn inline_size(_context: fidl::encoding::Context) -> usize {
18067 16
18068 }
18069 }
18070
18071 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RouterInfo, D>
18072 for &RouterInfo
18073 {
18074 unsafe fn encode(
18075 self,
18076 encoder: &mut fidl::encoding::Encoder<'_, D>,
18077 offset: usize,
18078 mut depth: fidl::encoding::Depth,
18079 ) -> fidl::Result<()> {
18080 encoder.debug_check_bounds::<RouterInfo>(offset);
18081 let max_ordinal: u64 = self.max_ordinal_present();
18083 encoder.write_num(max_ordinal, offset);
18084 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
18085 if max_ordinal == 0 {
18087 return Ok(());
18088 }
18089 depth.increment()?;
18090 let envelope_size = 8;
18091 let bytes_len = max_ordinal as usize * envelope_size;
18092 #[allow(unused_variables)]
18093 let offset = encoder.out_of_line_offset(bytes_len);
18094 let mut _prev_end_offset: usize = 0;
18095 if 1 > max_ordinal {
18096 return Ok(());
18097 }
18098
18099 let cur_offset: usize = (1 - 1) * envelope_size;
18102
18103 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18105
18106 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
18111 self.extended_address.as_ref().map(
18112 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
18113 ),
18114 encoder,
18115 offset + cur_offset,
18116 depth,
18117 )?;
18118
18119 _prev_end_offset = cur_offset + envelope_size;
18120 if 2 > max_ordinal {
18121 return Ok(());
18122 }
18123
18124 let cur_offset: usize = (2 - 1) * envelope_size;
18127
18128 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18130
18131 fidl::encoding::encode_in_envelope_optional::<u16, D>(
18136 self.thread_rloc.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
18137 encoder,
18138 offset + cur_offset,
18139 depth,
18140 )?;
18141
18142 _prev_end_offset = cur_offset + envelope_size;
18143 if 3 > max_ordinal {
18144 return Ok(());
18145 }
18146
18147 let cur_offset: usize = (3 - 1) * envelope_size;
18150
18151 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18153
18154 fidl::encoding::encode_in_envelope_optional::<u8, D>(
18159 self.router_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
18160 encoder,
18161 offset + cur_offset,
18162 depth,
18163 )?;
18164
18165 _prev_end_offset = cur_offset + envelope_size;
18166 if 4 > max_ordinal {
18167 return Ok(());
18168 }
18169
18170 let cur_offset: usize = (4 - 1) * envelope_size;
18173
18174 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18176
18177 fidl::encoding::encode_in_envelope_optional::<u8, D>(
18182 self.next_hop.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
18183 encoder,
18184 offset + cur_offset,
18185 depth,
18186 )?;
18187
18188 _prev_end_offset = cur_offset + envelope_size;
18189 if 5 > max_ordinal {
18190 return Ok(());
18191 }
18192
18193 let cur_offset: usize = (5 - 1) * envelope_size;
18196
18197 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18199
18200 fidl::encoding::encode_in_envelope_optional::<u8, D>(
18205 self.path_cost.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
18206 encoder,
18207 offset + cur_offset,
18208 depth,
18209 )?;
18210
18211 _prev_end_offset = cur_offset + envelope_size;
18212 if 6 > max_ordinal {
18213 return Ok(());
18214 }
18215
18216 let cur_offset: usize = (6 - 1) * envelope_size;
18219
18220 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18222
18223 fidl::encoding::encode_in_envelope_optional::<u8, D>(
18228 self.link_quality_in.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
18229 encoder,
18230 offset + cur_offset,
18231 depth,
18232 )?;
18233
18234 _prev_end_offset = cur_offset + envelope_size;
18235 if 7 > max_ordinal {
18236 return Ok(());
18237 }
18238
18239 let cur_offset: usize = (7 - 1) * envelope_size;
18242
18243 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18245
18246 fidl::encoding::encode_in_envelope_optional::<u8, D>(
18251 self.link_quality_out.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
18252 encoder,
18253 offset + cur_offset,
18254 depth,
18255 )?;
18256
18257 _prev_end_offset = cur_offset + envelope_size;
18258 if 8 > max_ordinal {
18259 return Ok(());
18260 }
18261
18262 let cur_offset: usize = (8 - 1) * envelope_size;
18265
18266 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18268
18269 fidl::encoding::encode_in_envelope_optional::<i64, D>(
18274 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
18275 encoder,
18276 offset + cur_offset,
18277 depth,
18278 )?;
18279
18280 _prev_end_offset = cur_offset + envelope_size;
18281 if 9 > max_ordinal {
18282 return Ok(());
18283 }
18284
18285 let cur_offset: usize = (9 - 1) * envelope_size;
18288
18289 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18291
18292 fidl::encoding::encode_in_envelope_optional::<bool, D>(
18297 self.link_established
18298 .as_ref()
18299 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
18300 encoder,
18301 offset + cur_offset,
18302 depth,
18303 )?;
18304
18305 _prev_end_offset = cur_offset + envelope_size;
18306
18307 Ok(())
18308 }
18309 }
18310
18311 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RouterInfo {
18312 #[inline(always)]
18313 fn new_empty() -> Self {
18314 Self::default()
18315 }
18316
18317 unsafe fn decode(
18318 &mut self,
18319 decoder: &mut fidl::encoding::Decoder<'_, D>,
18320 offset: usize,
18321 mut depth: fidl::encoding::Depth,
18322 ) -> fidl::Result<()> {
18323 decoder.debug_check_bounds::<Self>(offset);
18324 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
18325 None => return Err(fidl::Error::NotNullable),
18326 Some(len) => len,
18327 };
18328 if len == 0 {
18330 return Ok(());
18331 };
18332 depth.increment()?;
18333 let envelope_size = 8;
18334 let bytes_len = len * envelope_size;
18335 let offset = decoder.out_of_line_offset(bytes_len)?;
18336 let mut _next_ordinal_to_read = 0;
18338 let mut next_offset = offset;
18339 let end_offset = offset + bytes_len;
18340 _next_ordinal_to_read += 1;
18341 if next_offset >= end_offset {
18342 return Ok(());
18343 }
18344
18345 while _next_ordinal_to_read < 1 {
18347 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18348 _next_ordinal_to_read += 1;
18349 next_offset += envelope_size;
18350 }
18351
18352 let next_out_of_line = decoder.next_out_of_line();
18353 let handles_before = decoder.remaining_handles();
18354 if let Some((inlined, num_bytes, num_handles)) =
18355 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18356 {
18357 let member_inline_size =
18358 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
18359 decoder.context,
18360 );
18361 if inlined != (member_inline_size <= 4) {
18362 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18363 }
18364 let inner_offset;
18365 let mut inner_depth = depth.clone();
18366 if inlined {
18367 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18368 inner_offset = next_offset;
18369 } else {
18370 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18371 inner_depth.increment()?;
18372 }
18373 let val_ref = self
18374 .extended_address
18375 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
18376 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
18377 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18378 {
18379 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18380 }
18381 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18382 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18383 }
18384 }
18385
18386 next_offset += envelope_size;
18387 _next_ordinal_to_read += 1;
18388 if next_offset >= end_offset {
18389 return Ok(());
18390 }
18391
18392 while _next_ordinal_to_read < 2 {
18394 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18395 _next_ordinal_to_read += 1;
18396 next_offset += envelope_size;
18397 }
18398
18399 let next_out_of_line = decoder.next_out_of_line();
18400 let handles_before = decoder.remaining_handles();
18401 if let Some((inlined, num_bytes, num_handles)) =
18402 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18403 {
18404 let member_inline_size =
18405 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18406 if inlined != (member_inline_size <= 4) {
18407 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18408 }
18409 let inner_offset;
18410 let mut inner_depth = depth.clone();
18411 if inlined {
18412 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18413 inner_offset = next_offset;
18414 } else {
18415 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18416 inner_depth.increment()?;
18417 }
18418 let val_ref = self.thread_rloc.get_or_insert_with(|| fidl::new_empty!(u16, D));
18419 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
18420 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18421 {
18422 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18423 }
18424 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18425 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18426 }
18427 }
18428
18429 next_offset += envelope_size;
18430 _next_ordinal_to_read += 1;
18431 if next_offset >= end_offset {
18432 return Ok(());
18433 }
18434
18435 while _next_ordinal_to_read < 3 {
18437 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18438 _next_ordinal_to_read += 1;
18439 next_offset += envelope_size;
18440 }
18441
18442 let next_out_of_line = decoder.next_out_of_line();
18443 let handles_before = decoder.remaining_handles();
18444 if let Some((inlined, num_bytes, num_handles)) =
18445 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18446 {
18447 let member_inline_size =
18448 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18449 if inlined != (member_inline_size <= 4) {
18450 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18451 }
18452 let inner_offset;
18453 let mut inner_depth = depth.clone();
18454 if inlined {
18455 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18456 inner_offset = next_offset;
18457 } else {
18458 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18459 inner_depth.increment()?;
18460 }
18461 let val_ref = self.router_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
18462 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
18463 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18464 {
18465 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18466 }
18467 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18468 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18469 }
18470 }
18471
18472 next_offset += envelope_size;
18473 _next_ordinal_to_read += 1;
18474 if next_offset >= end_offset {
18475 return Ok(());
18476 }
18477
18478 while _next_ordinal_to_read < 4 {
18480 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18481 _next_ordinal_to_read += 1;
18482 next_offset += envelope_size;
18483 }
18484
18485 let next_out_of_line = decoder.next_out_of_line();
18486 let handles_before = decoder.remaining_handles();
18487 if let Some((inlined, num_bytes, num_handles)) =
18488 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18489 {
18490 let member_inline_size =
18491 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18492 if inlined != (member_inline_size <= 4) {
18493 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18494 }
18495 let inner_offset;
18496 let mut inner_depth = depth.clone();
18497 if inlined {
18498 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18499 inner_offset = next_offset;
18500 } else {
18501 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18502 inner_depth.increment()?;
18503 }
18504 let val_ref = self.next_hop.get_or_insert_with(|| fidl::new_empty!(u8, D));
18505 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
18506 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18507 {
18508 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18509 }
18510 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18511 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18512 }
18513 }
18514
18515 next_offset += envelope_size;
18516 _next_ordinal_to_read += 1;
18517 if next_offset >= end_offset {
18518 return Ok(());
18519 }
18520
18521 while _next_ordinal_to_read < 5 {
18523 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18524 _next_ordinal_to_read += 1;
18525 next_offset += envelope_size;
18526 }
18527
18528 let next_out_of_line = decoder.next_out_of_line();
18529 let handles_before = decoder.remaining_handles();
18530 if let Some((inlined, num_bytes, num_handles)) =
18531 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18532 {
18533 let member_inline_size =
18534 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18535 if inlined != (member_inline_size <= 4) {
18536 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18537 }
18538 let inner_offset;
18539 let mut inner_depth = depth.clone();
18540 if inlined {
18541 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18542 inner_offset = next_offset;
18543 } else {
18544 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18545 inner_depth.increment()?;
18546 }
18547 let val_ref = self.path_cost.get_or_insert_with(|| fidl::new_empty!(u8, D));
18548 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
18549 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18550 {
18551 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18552 }
18553 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18554 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18555 }
18556 }
18557
18558 next_offset += envelope_size;
18559 _next_ordinal_to_read += 1;
18560 if next_offset >= end_offset {
18561 return Ok(());
18562 }
18563
18564 while _next_ordinal_to_read < 6 {
18566 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18567 _next_ordinal_to_read += 1;
18568 next_offset += envelope_size;
18569 }
18570
18571 let next_out_of_line = decoder.next_out_of_line();
18572 let handles_before = decoder.remaining_handles();
18573 if let Some((inlined, num_bytes, num_handles)) =
18574 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18575 {
18576 let member_inline_size =
18577 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18578 if inlined != (member_inline_size <= 4) {
18579 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18580 }
18581 let inner_offset;
18582 let mut inner_depth = depth.clone();
18583 if inlined {
18584 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18585 inner_offset = next_offset;
18586 } else {
18587 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18588 inner_depth.increment()?;
18589 }
18590 let val_ref = self.link_quality_in.get_or_insert_with(|| fidl::new_empty!(u8, D));
18591 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
18592 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18593 {
18594 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18595 }
18596 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18597 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18598 }
18599 }
18600
18601 next_offset += envelope_size;
18602 _next_ordinal_to_read += 1;
18603 if next_offset >= end_offset {
18604 return Ok(());
18605 }
18606
18607 while _next_ordinal_to_read < 7 {
18609 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18610 _next_ordinal_to_read += 1;
18611 next_offset += envelope_size;
18612 }
18613
18614 let next_out_of_line = decoder.next_out_of_line();
18615 let handles_before = decoder.remaining_handles();
18616 if let Some((inlined, num_bytes, num_handles)) =
18617 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18618 {
18619 let member_inline_size =
18620 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18621 if inlined != (member_inline_size <= 4) {
18622 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18623 }
18624 let inner_offset;
18625 let mut inner_depth = depth.clone();
18626 if inlined {
18627 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18628 inner_offset = next_offset;
18629 } else {
18630 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18631 inner_depth.increment()?;
18632 }
18633 let val_ref = self.link_quality_out.get_or_insert_with(|| fidl::new_empty!(u8, D));
18634 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
18635 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18636 {
18637 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18638 }
18639 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18640 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18641 }
18642 }
18643
18644 next_offset += envelope_size;
18645 _next_ordinal_to_read += 1;
18646 if next_offset >= end_offset {
18647 return Ok(());
18648 }
18649
18650 while _next_ordinal_to_read < 8 {
18652 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18653 _next_ordinal_to_read += 1;
18654 next_offset += envelope_size;
18655 }
18656
18657 let next_out_of_line = decoder.next_out_of_line();
18658 let handles_before = decoder.remaining_handles();
18659 if let Some((inlined, num_bytes, num_handles)) =
18660 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18661 {
18662 let member_inline_size =
18663 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18664 if inlined != (member_inline_size <= 4) {
18665 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18666 }
18667 let inner_offset;
18668 let mut inner_depth = depth.clone();
18669 if inlined {
18670 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18671 inner_offset = next_offset;
18672 } else {
18673 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18674 inner_depth.increment()?;
18675 }
18676 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
18677 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
18678 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18679 {
18680 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18681 }
18682 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18683 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18684 }
18685 }
18686
18687 next_offset += envelope_size;
18688 _next_ordinal_to_read += 1;
18689 if next_offset >= end_offset {
18690 return Ok(());
18691 }
18692
18693 while _next_ordinal_to_read < 9 {
18695 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18696 _next_ordinal_to_read += 1;
18697 next_offset += envelope_size;
18698 }
18699
18700 let next_out_of_line = decoder.next_out_of_line();
18701 let handles_before = decoder.remaining_handles();
18702 if let Some((inlined, num_bytes, num_handles)) =
18703 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18704 {
18705 let member_inline_size =
18706 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18707 if inlined != (member_inline_size <= 4) {
18708 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18709 }
18710 let inner_offset;
18711 let mut inner_depth = depth.clone();
18712 if inlined {
18713 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18714 inner_offset = next_offset;
18715 } else {
18716 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18717 inner_depth.increment()?;
18718 }
18719 let val_ref =
18720 self.link_established.get_or_insert_with(|| fidl::new_empty!(bool, D));
18721 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
18722 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18723 {
18724 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18725 }
18726 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18727 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18728 }
18729 }
18730
18731 next_offset += envelope_size;
18732
18733 while next_offset < end_offset {
18735 _next_ordinal_to_read += 1;
18736 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18737 next_offset += envelope_size;
18738 }
18739
18740 Ok(())
18741 }
18742 }
18743
18744 impl SecurityPolicy {
18745 #[inline(always)]
18746 fn max_ordinal_present(&self) -> u64 {
18747 if let Some(_) = self.version_threshold_for_routing {
18748 return 10;
18749 }
18750 if let Some(_) = self.nonccm_routers_enabled {
18751 return 9;
18752 }
18753 if let Some(_) = self.toble_link_enabled {
18754 return 8;
18755 }
18756 if let Some(_) = self.network_key_provisioning_enabled {
18757 return 7;
18758 }
18759 if let Some(_) = self.autonomous_enrollment_enabled {
18760 return 6;
18761 }
18762 if let Some(_) = self.external_commissioning_enabled {
18763 return 5;
18764 }
18765 if let Some(_) = self.routers_enabled {
18766 return 4;
18767 }
18768 if let Some(_) = self.native_commissioning_enabled {
18769 return 3;
18770 }
18771 if let Some(_) = self.obtain_network_key_enabled {
18772 return 2;
18773 }
18774 if let Some(_) = self.rotation_time {
18775 return 1;
18776 }
18777 0
18778 }
18779 }
18780
18781 impl fidl::encoding::ValueTypeMarker for SecurityPolicy {
18782 type Borrowed<'a> = &'a Self;
18783 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
18784 value
18785 }
18786 }
18787
18788 unsafe impl fidl::encoding::TypeMarker for SecurityPolicy {
18789 type Owned = Self;
18790
18791 #[inline(always)]
18792 fn inline_align(_context: fidl::encoding::Context) -> usize {
18793 8
18794 }
18795
18796 #[inline(always)]
18797 fn inline_size(_context: fidl::encoding::Context) -> usize {
18798 16
18799 }
18800 }
18801
18802 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SecurityPolicy, D>
18803 for &SecurityPolicy
18804 {
18805 unsafe fn encode(
18806 self,
18807 encoder: &mut fidl::encoding::Encoder<'_, D>,
18808 offset: usize,
18809 mut depth: fidl::encoding::Depth,
18810 ) -> fidl::Result<()> {
18811 encoder.debug_check_bounds::<SecurityPolicy>(offset);
18812 let max_ordinal: u64 = self.max_ordinal_present();
18814 encoder.write_num(max_ordinal, offset);
18815 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
18816 if max_ordinal == 0 {
18818 return Ok(());
18819 }
18820 depth.increment()?;
18821 let envelope_size = 8;
18822 let bytes_len = max_ordinal as usize * envelope_size;
18823 #[allow(unused_variables)]
18824 let offset = encoder.out_of_line_offset(bytes_len);
18825 let mut _prev_end_offset: usize = 0;
18826 if 1 > max_ordinal {
18827 return Ok(());
18828 }
18829
18830 let cur_offset: usize = (1 - 1) * envelope_size;
18833
18834 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18836
18837 fidl::encoding::encode_in_envelope_optional::<u16, D>(
18842 self.rotation_time.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
18843 encoder,
18844 offset + cur_offset,
18845 depth,
18846 )?;
18847
18848 _prev_end_offset = cur_offset + envelope_size;
18849 if 2 > max_ordinal {
18850 return Ok(());
18851 }
18852
18853 let cur_offset: usize = (2 - 1) * envelope_size;
18856
18857 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18859
18860 fidl::encoding::encode_in_envelope_optional::<bool, D>(
18865 self.obtain_network_key_enabled
18866 .as_ref()
18867 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
18868 encoder,
18869 offset + cur_offset,
18870 depth,
18871 )?;
18872
18873 _prev_end_offset = cur_offset + envelope_size;
18874 if 3 > max_ordinal {
18875 return Ok(());
18876 }
18877
18878 let cur_offset: usize = (3 - 1) * envelope_size;
18881
18882 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18884
18885 fidl::encoding::encode_in_envelope_optional::<bool, D>(
18890 self.native_commissioning_enabled
18891 .as_ref()
18892 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
18893 encoder,
18894 offset + cur_offset,
18895 depth,
18896 )?;
18897
18898 _prev_end_offset = cur_offset + envelope_size;
18899 if 4 > max_ordinal {
18900 return Ok(());
18901 }
18902
18903 let cur_offset: usize = (4 - 1) * envelope_size;
18906
18907 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18909
18910 fidl::encoding::encode_in_envelope_optional::<bool, D>(
18915 self.routers_enabled
18916 .as_ref()
18917 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
18918 encoder,
18919 offset + cur_offset,
18920 depth,
18921 )?;
18922
18923 _prev_end_offset = cur_offset + envelope_size;
18924 if 5 > max_ordinal {
18925 return Ok(());
18926 }
18927
18928 let cur_offset: usize = (5 - 1) * envelope_size;
18931
18932 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18934
18935 fidl::encoding::encode_in_envelope_optional::<bool, D>(
18940 self.external_commissioning_enabled
18941 .as_ref()
18942 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
18943 encoder,
18944 offset + cur_offset,
18945 depth,
18946 )?;
18947
18948 _prev_end_offset = cur_offset + envelope_size;
18949 if 6 > max_ordinal {
18950 return Ok(());
18951 }
18952
18953 let cur_offset: usize = (6 - 1) * envelope_size;
18956
18957 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18959
18960 fidl::encoding::encode_in_envelope_optional::<bool, D>(
18965 self.autonomous_enrollment_enabled
18966 .as_ref()
18967 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
18968 encoder,
18969 offset + cur_offset,
18970 depth,
18971 )?;
18972
18973 _prev_end_offset = cur_offset + envelope_size;
18974 if 7 > max_ordinal {
18975 return Ok(());
18976 }
18977
18978 let cur_offset: usize = (7 - 1) * envelope_size;
18981
18982 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18984
18985 fidl::encoding::encode_in_envelope_optional::<bool, D>(
18990 self.network_key_provisioning_enabled
18991 .as_ref()
18992 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
18993 encoder,
18994 offset + cur_offset,
18995 depth,
18996 )?;
18997
18998 _prev_end_offset = cur_offset + envelope_size;
18999 if 8 > max_ordinal {
19000 return Ok(());
19001 }
19002
19003 let cur_offset: usize = (8 - 1) * envelope_size;
19006
19007 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19009
19010 fidl::encoding::encode_in_envelope_optional::<bool, D>(
19015 self.toble_link_enabled
19016 .as_ref()
19017 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
19018 encoder,
19019 offset + cur_offset,
19020 depth,
19021 )?;
19022
19023 _prev_end_offset = cur_offset + envelope_size;
19024 if 9 > max_ordinal {
19025 return Ok(());
19026 }
19027
19028 let cur_offset: usize = (9 - 1) * envelope_size;
19031
19032 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19034
19035 fidl::encoding::encode_in_envelope_optional::<bool, D>(
19040 self.nonccm_routers_enabled
19041 .as_ref()
19042 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
19043 encoder,
19044 offset + cur_offset,
19045 depth,
19046 )?;
19047
19048 _prev_end_offset = cur_offset + envelope_size;
19049 if 10 > max_ordinal {
19050 return Ok(());
19051 }
19052
19053 let cur_offset: usize = (10 - 1) * envelope_size;
19056
19057 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19059
19060 fidl::encoding::encode_in_envelope_optional::<u8, D>(
19065 self.version_threshold_for_routing
19066 .as_ref()
19067 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
19068 encoder,
19069 offset + cur_offset,
19070 depth,
19071 )?;
19072
19073 _prev_end_offset = cur_offset + envelope_size;
19074
19075 Ok(())
19076 }
19077 }
19078
19079 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SecurityPolicy {
19080 #[inline(always)]
19081 fn new_empty() -> Self {
19082 Self::default()
19083 }
19084
19085 unsafe fn decode(
19086 &mut self,
19087 decoder: &mut fidl::encoding::Decoder<'_, D>,
19088 offset: usize,
19089 mut depth: fidl::encoding::Depth,
19090 ) -> fidl::Result<()> {
19091 decoder.debug_check_bounds::<Self>(offset);
19092 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
19093 None => return Err(fidl::Error::NotNullable),
19094 Some(len) => len,
19095 };
19096 if len == 0 {
19098 return Ok(());
19099 };
19100 depth.increment()?;
19101 let envelope_size = 8;
19102 let bytes_len = len * envelope_size;
19103 let offset = decoder.out_of_line_offset(bytes_len)?;
19104 let mut _next_ordinal_to_read = 0;
19106 let mut next_offset = offset;
19107 let end_offset = offset + bytes_len;
19108 _next_ordinal_to_read += 1;
19109 if next_offset >= end_offset {
19110 return Ok(());
19111 }
19112
19113 while _next_ordinal_to_read < 1 {
19115 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19116 _next_ordinal_to_read += 1;
19117 next_offset += envelope_size;
19118 }
19119
19120 let next_out_of_line = decoder.next_out_of_line();
19121 let handles_before = decoder.remaining_handles();
19122 if let Some((inlined, num_bytes, num_handles)) =
19123 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19124 {
19125 let member_inline_size =
19126 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19127 if inlined != (member_inline_size <= 4) {
19128 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19129 }
19130 let inner_offset;
19131 let mut inner_depth = depth.clone();
19132 if inlined {
19133 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19134 inner_offset = next_offset;
19135 } else {
19136 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19137 inner_depth.increment()?;
19138 }
19139 let val_ref = self.rotation_time.get_or_insert_with(|| fidl::new_empty!(u16, D));
19140 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
19141 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19142 {
19143 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19144 }
19145 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19146 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19147 }
19148 }
19149
19150 next_offset += envelope_size;
19151 _next_ordinal_to_read += 1;
19152 if next_offset >= end_offset {
19153 return Ok(());
19154 }
19155
19156 while _next_ordinal_to_read < 2 {
19158 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19159 _next_ordinal_to_read += 1;
19160 next_offset += envelope_size;
19161 }
19162
19163 let next_out_of_line = decoder.next_out_of_line();
19164 let handles_before = decoder.remaining_handles();
19165 if let Some((inlined, num_bytes, num_handles)) =
19166 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19167 {
19168 let member_inline_size =
19169 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19170 if inlined != (member_inline_size <= 4) {
19171 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19172 }
19173 let inner_offset;
19174 let mut inner_depth = depth.clone();
19175 if inlined {
19176 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19177 inner_offset = next_offset;
19178 } else {
19179 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19180 inner_depth.increment()?;
19181 }
19182 let val_ref = self
19183 .obtain_network_key_enabled
19184 .get_or_insert_with(|| fidl::new_empty!(bool, D));
19185 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
19186 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19187 {
19188 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19189 }
19190 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19191 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19192 }
19193 }
19194
19195 next_offset += envelope_size;
19196 _next_ordinal_to_read += 1;
19197 if next_offset >= end_offset {
19198 return Ok(());
19199 }
19200
19201 while _next_ordinal_to_read < 3 {
19203 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19204 _next_ordinal_to_read += 1;
19205 next_offset += envelope_size;
19206 }
19207
19208 let next_out_of_line = decoder.next_out_of_line();
19209 let handles_before = decoder.remaining_handles();
19210 if let Some((inlined, num_bytes, num_handles)) =
19211 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19212 {
19213 let member_inline_size =
19214 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19215 if inlined != (member_inline_size <= 4) {
19216 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19217 }
19218 let inner_offset;
19219 let mut inner_depth = depth.clone();
19220 if inlined {
19221 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19222 inner_offset = next_offset;
19223 } else {
19224 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19225 inner_depth.increment()?;
19226 }
19227 let val_ref = self
19228 .native_commissioning_enabled
19229 .get_or_insert_with(|| fidl::new_empty!(bool, D));
19230 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
19231 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19232 {
19233 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19234 }
19235 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19236 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19237 }
19238 }
19239
19240 next_offset += envelope_size;
19241 _next_ordinal_to_read += 1;
19242 if next_offset >= end_offset {
19243 return Ok(());
19244 }
19245
19246 while _next_ordinal_to_read < 4 {
19248 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19249 _next_ordinal_to_read += 1;
19250 next_offset += envelope_size;
19251 }
19252
19253 let next_out_of_line = decoder.next_out_of_line();
19254 let handles_before = decoder.remaining_handles();
19255 if let Some((inlined, num_bytes, num_handles)) =
19256 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19257 {
19258 let member_inline_size =
19259 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19260 if inlined != (member_inline_size <= 4) {
19261 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19262 }
19263 let inner_offset;
19264 let mut inner_depth = depth.clone();
19265 if inlined {
19266 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19267 inner_offset = next_offset;
19268 } else {
19269 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19270 inner_depth.increment()?;
19271 }
19272 let val_ref = self.routers_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
19273 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
19274 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19275 {
19276 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19277 }
19278 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19279 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19280 }
19281 }
19282
19283 next_offset += envelope_size;
19284 _next_ordinal_to_read += 1;
19285 if next_offset >= end_offset {
19286 return Ok(());
19287 }
19288
19289 while _next_ordinal_to_read < 5 {
19291 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19292 _next_ordinal_to_read += 1;
19293 next_offset += envelope_size;
19294 }
19295
19296 let next_out_of_line = decoder.next_out_of_line();
19297 let handles_before = decoder.remaining_handles();
19298 if let Some((inlined, num_bytes, num_handles)) =
19299 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19300 {
19301 let member_inline_size =
19302 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19303 if inlined != (member_inline_size <= 4) {
19304 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19305 }
19306 let inner_offset;
19307 let mut inner_depth = depth.clone();
19308 if inlined {
19309 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19310 inner_offset = next_offset;
19311 } else {
19312 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19313 inner_depth.increment()?;
19314 }
19315 let val_ref = self
19316 .external_commissioning_enabled
19317 .get_or_insert_with(|| fidl::new_empty!(bool, D));
19318 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
19319 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19320 {
19321 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19322 }
19323 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19324 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19325 }
19326 }
19327
19328 next_offset += envelope_size;
19329 _next_ordinal_to_read += 1;
19330 if next_offset >= end_offset {
19331 return Ok(());
19332 }
19333
19334 while _next_ordinal_to_read < 6 {
19336 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19337 _next_ordinal_to_read += 1;
19338 next_offset += envelope_size;
19339 }
19340
19341 let next_out_of_line = decoder.next_out_of_line();
19342 let handles_before = decoder.remaining_handles();
19343 if let Some((inlined, num_bytes, num_handles)) =
19344 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19345 {
19346 let member_inline_size =
19347 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19348 if inlined != (member_inline_size <= 4) {
19349 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19350 }
19351 let inner_offset;
19352 let mut inner_depth = depth.clone();
19353 if inlined {
19354 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19355 inner_offset = next_offset;
19356 } else {
19357 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19358 inner_depth.increment()?;
19359 }
19360 let val_ref = self
19361 .autonomous_enrollment_enabled
19362 .get_or_insert_with(|| fidl::new_empty!(bool, D));
19363 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
19364 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19365 {
19366 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19367 }
19368 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19369 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19370 }
19371 }
19372
19373 next_offset += envelope_size;
19374 _next_ordinal_to_read += 1;
19375 if next_offset >= end_offset {
19376 return Ok(());
19377 }
19378
19379 while _next_ordinal_to_read < 7 {
19381 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19382 _next_ordinal_to_read += 1;
19383 next_offset += envelope_size;
19384 }
19385
19386 let next_out_of_line = decoder.next_out_of_line();
19387 let handles_before = decoder.remaining_handles();
19388 if let Some((inlined, num_bytes, num_handles)) =
19389 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19390 {
19391 let member_inline_size =
19392 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19393 if inlined != (member_inline_size <= 4) {
19394 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19395 }
19396 let inner_offset;
19397 let mut inner_depth = depth.clone();
19398 if inlined {
19399 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19400 inner_offset = next_offset;
19401 } else {
19402 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19403 inner_depth.increment()?;
19404 }
19405 let val_ref = self
19406 .network_key_provisioning_enabled
19407 .get_or_insert_with(|| fidl::new_empty!(bool, D));
19408 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
19409 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19410 {
19411 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19412 }
19413 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19414 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19415 }
19416 }
19417
19418 next_offset += envelope_size;
19419 _next_ordinal_to_read += 1;
19420 if next_offset >= end_offset {
19421 return Ok(());
19422 }
19423
19424 while _next_ordinal_to_read < 8 {
19426 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19427 _next_ordinal_to_read += 1;
19428 next_offset += envelope_size;
19429 }
19430
19431 let next_out_of_line = decoder.next_out_of_line();
19432 let handles_before = decoder.remaining_handles();
19433 if let Some((inlined, num_bytes, num_handles)) =
19434 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19435 {
19436 let member_inline_size =
19437 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19438 if inlined != (member_inline_size <= 4) {
19439 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19440 }
19441 let inner_offset;
19442 let mut inner_depth = depth.clone();
19443 if inlined {
19444 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19445 inner_offset = next_offset;
19446 } else {
19447 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19448 inner_depth.increment()?;
19449 }
19450 let val_ref =
19451 self.toble_link_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
19452 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
19453 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19454 {
19455 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19456 }
19457 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19458 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19459 }
19460 }
19461
19462 next_offset += envelope_size;
19463 _next_ordinal_to_read += 1;
19464 if next_offset >= end_offset {
19465 return Ok(());
19466 }
19467
19468 while _next_ordinal_to_read < 9 {
19470 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19471 _next_ordinal_to_read += 1;
19472 next_offset += envelope_size;
19473 }
19474
19475 let next_out_of_line = decoder.next_out_of_line();
19476 let handles_before = decoder.remaining_handles();
19477 if let Some((inlined, num_bytes, num_handles)) =
19478 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19479 {
19480 let member_inline_size =
19481 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19482 if inlined != (member_inline_size <= 4) {
19483 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19484 }
19485 let inner_offset;
19486 let mut inner_depth = depth.clone();
19487 if inlined {
19488 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19489 inner_offset = next_offset;
19490 } else {
19491 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19492 inner_depth.increment()?;
19493 }
19494 let val_ref =
19495 self.nonccm_routers_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
19496 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
19497 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19498 {
19499 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19500 }
19501 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19502 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19503 }
19504 }
19505
19506 next_offset += envelope_size;
19507 _next_ordinal_to_read += 1;
19508 if next_offset >= end_offset {
19509 return Ok(());
19510 }
19511
19512 while _next_ordinal_to_read < 10 {
19514 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19515 _next_ordinal_to_read += 1;
19516 next_offset += envelope_size;
19517 }
19518
19519 let next_out_of_line = decoder.next_out_of_line();
19520 let handles_before = decoder.remaining_handles();
19521 if let Some((inlined, num_bytes, num_handles)) =
19522 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19523 {
19524 let member_inline_size =
19525 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19526 if inlined != (member_inline_size <= 4) {
19527 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19528 }
19529 let inner_offset;
19530 let mut inner_depth = depth.clone();
19531 if inlined {
19532 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19533 inner_offset = next_offset;
19534 } else {
19535 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19536 inner_depth.increment()?;
19537 }
19538 let val_ref = self
19539 .version_threshold_for_routing
19540 .get_or_insert_with(|| fidl::new_empty!(u8, D));
19541 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
19542 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19543 {
19544 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19545 }
19546 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19547 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19548 }
19549 }
19550
19551 next_offset += envelope_size;
19552
19553 while next_offset < end_offset {
19555 _next_ordinal_to_read += 1;
19556 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19557 next_offset += envelope_size;
19558 }
19559
19560 Ok(())
19561 }
19562 }
19563
19564 impl ServerConfig {
19565 #[inline(always)]
19566 fn max_ordinal_present(&self) -> u64 {
19567 if let Some(_) = self.rloc16 {
19568 return 4;
19569 }
19570 if let Some(_) = self.server_data {
19571 return 3;
19572 }
19573 if let Some(_) = self.server_data_length {
19574 return 2;
19575 }
19576 if let Some(_) = self.stable {
19577 return 1;
19578 }
19579 0
19580 }
19581 }
19582
19583 impl fidl::encoding::ValueTypeMarker for ServerConfig {
19584 type Borrowed<'a> = &'a Self;
19585 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
19586 value
19587 }
19588 }
19589
19590 unsafe impl fidl::encoding::TypeMarker for ServerConfig {
19591 type Owned = Self;
19592
19593 #[inline(always)]
19594 fn inline_align(_context: fidl::encoding::Context) -> usize {
19595 8
19596 }
19597
19598 #[inline(always)]
19599 fn inline_size(_context: fidl::encoding::Context) -> usize {
19600 16
19601 }
19602 }
19603
19604 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ServerConfig, D>
19605 for &ServerConfig
19606 {
19607 unsafe fn encode(
19608 self,
19609 encoder: &mut fidl::encoding::Encoder<'_, D>,
19610 offset: usize,
19611 mut depth: fidl::encoding::Depth,
19612 ) -> fidl::Result<()> {
19613 encoder.debug_check_bounds::<ServerConfig>(offset);
19614 let max_ordinal: u64 = self.max_ordinal_present();
19616 encoder.write_num(max_ordinal, offset);
19617 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
19618 if max_ordinal == 0 {
19620 return Ok(());
19621 }
19622 depth.increment()?;
19623 let envelope_size = 8;
19624 let bytes_len = max_ordinal as usize * envelope_size;
19625 #[allow(unused_variables)]
19626 let offset = encoder.out_of_line_offset(bytes_len);
19627 let mut _prev_end_offset: usize = 0;
19628 if 1 > max_ordinal {
19629 return Ok(());
19630 }
19631
19632 let cur_offset: usize = (1 - 1) * envelope_size;
19635
19636 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19638
19639 fidl::encoding::encode_in_envelope_optional::<bool, D>(
19644 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
19645 encoder,
19646 offset + cur_offset,
19647 depth,
19648 )?;
19649
19650 _prev_end_offset = cur_offset + envelope_size;
19651 if 2 > max_ordinal {
19652 return Ok(());
19653 }
19654
19655 let cur_offset: usize = (2 - 1) * envelope_size;
19658
19659 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19661
19662 fidl::encoding::encode_in_envelope_optional::<u8, D>(
19667 self.server_data_length
19668 .as_ref()
19669 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
19670 encoder,
19671 offset + cur_offset,
19672 depth,
19673 )?;
19674
19675 _prev_end_offset = cur_offset + envelope_size;
19676 if 3 > max_ordinal {
19677 return Ok(());
19678 }
19679
19680 let cur_offset: usize = (3 - 1) * envelope_size;
19683
19684 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19686
19687 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 252>, D>(
19692 self.server_data.as_ref().map(
19693 <fidl::encoding::Vector<u8, 252> as fidl::encoding::ValueTypeMarker>::borrow,
19694 ),
19695 encoder,
19696 offset + cur_offset,
19697 depth,
19698 )?;
19699
19700 _prev_end_offset = cur_offset + envelope_size;
19701 if 4 > max_ordinal {
19702 return Ok(());
19703 }
19704
19705 let cur_offset: usize = (4 - 1) * envelope_size;
19708
19709 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19711
19712 fidl::encoding::encode_in_envelope_optional::<u16, D>(
19717 self.rloc16.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
19718 encoder,
19719 offset + cur_offset,
19720 depth,
19721 )?;
19722
19723 _prev_end_offset = cur_offset + envelope_size;
19724
19725 Ok(())
19726 }
19727 }
19728
19729 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ServerConfig {
19730 #[inline(always)]
19731 fn new_empty() -> Self {
19732 Self::default()
19733 }
19734
19735 unsafe fn decode(
19736 &mut self,
19737 decoder: &mut fidl::encoding::Decoder<'_, D>,
19738 offset: usize,
19739 mut depth: fidl::encoding::Depth,
19740 ) -> fidl::Result<()> {
19741 decoder.debug_check_bounds::<Self>(offset);
19742 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
19743 None => return Err(fidl::Error::NotNullable),
19744 Some(len) => len,
19745 };
19746 if len == 0 {
19748 return Ok(());
19749 };
19750 depth.increment()?;
19751 let envelope_size = 8;
19752 let bytes_len = len * envelope_size;
19753 let offset = decoder.out_of_line_offset(bytes_len)?;
19754 let mut _next_ordinal_to_read = 0;
19756 let mut next_offset = offset;
19757 let end_offset = offset + bytes_len;
19758 _next_ordinal_to_read += 1;
19759 if next_offset >= end_offset {
19760 return Ok(());
19761 }
19762
19763 while _next_ordinal_to_read < 1 {
19765 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19766 _next_ordinal_to_read += 1;
19767 next_offset += envelope_size;
19768 }
19769
19770 let next_out_of_line = decoder.next_out_of_line();
19771 let handles_before = decoder.remaining_handles();
19772 if let Some((inlined, num_bytes, num_handles)) =
19773 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19774 {
19775 let member_inline_size =
19776 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19777 if inlined != (member_inline_size <= 4) {
19778 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19779 }
19780 let inner_offset;
19781 let mut inner_depth = depth.clone();
19782 if inlined {
19783 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19784 inner_offset = next_offset;
19785 } else {
19786 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19787 inner_depth.increment()?;
19788 }
19789 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
19790 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
19791 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19792 {
19793 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19794 }
19795 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19796 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19797 }
19798 }
19799
19800 next_offset += envelope_size;
19801 _next_ordinal_to_read += 1;
19802 if next_offset >= end_offset {
19803 return Ok(());
19804 }
19805
19806 while _next_ordinal_to_read < 2 {
19808 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19809 _next_ordinal_to_read += 1;
19810 next_offset += envelope_size;
19811 }
19812
19813 let next_out_of_line = decoder.next_out_of_line();
19814 let handles_before = decoder.remaining_handles();
19815 if let Some((inlined, num_bytes, num_handles)) =
19816 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19817 {
19818 let member_inline_size =
19819 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19820 if inlined != (member_inline_size <= 4) {
19821 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19822 }
19823 let inner_offset;
19824 let mut inner_depth = depth.clone();
19825 if inlined {
19826 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19827 inner_offset = next_offset;
19828 } else {
19829 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19830 inner_depth.increment()?;
19831 }
19832 let val_ref =
19833 self.server_data_length.get_or_insert_with(|| fidl::new_empty!(u8, D));
19834 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
19835 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19836 {
19837 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19838 }
19839 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19840 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19841 }
19842 }
19843
19844 next_offset += envelope_size;
19845 _next_ordinal_to_read += 1;
19846 if next_offset >= end_offset {
19847 return Ok(());
19848 }
19849
19850 while _next_ordinal_to_read < 3 {
19852 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19853 _next_ordinal_to_read += 1;
19854 next_offset += envelope_size;
19855 }
19856
19857 let next_out_of_line = decoder.next_out_of_line();
19858 let handles_before = decoder.remaining_handles();
19859 if let Some((inlined, num_bytes, num_handles)) =
19860 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19861 {
19862 let member_inline_size =
19863 <fidl::encoding::Vector<u8, 252> as fidl::encoding::TypeMarker>::inline_size(
19864 decoder.context,
19865 );
19866 if inlined != (member_inline_size <= 4) {
19867 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19868 }
19869 let inner_offset;
19870 let mut inner_depth = depth.clone();
19871 if inlined {
19872 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19873 inner_offset = next_offset;
19874 } else {
19875 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19876 inner_depth.increment()?;
19877 }
19878 let val_ref = self
19879 .server_data
19880 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 252>, D));
19881 fidl::decode!(fidl::encoding::Vector<u8, 252>, D, val_ref, decoder, inner_offset, inner_depth)?;
19882 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19883 {
19884 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19885 }
19886 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19887 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19888 }
19889 }
19890
19891 next_offset += envelope_size;
19892 _next_ordinal_to_read += 1;
19893 if next_offset >= end_offset {
19894 return Ok(());
19895 }
19896
19897 while _next_ordinal_to_read < 4 {
19899 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19900 _next_ordinal_to_read += 1;
19901 next_offset += envelope_size;
19902 }
19903
19904 let next_out_of_line = decoder.next_out_of_line();
19905 let handles_before = decoder.remaining_handles();
19906 if let Some((inlined, num_bytes, num_handles)) =
19907 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19908 {
19909 let member_inline_size =
19910 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19911 if inlined != (member_inline_size <= 4) {
19912 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19913 }
19914 let inner_offset;
19915 let mut inner_depth = depth.clone();
19916 if inlined {
19917 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19918 inner_offset = next_offset;
19919 } else {
19920 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19921 inner_depth.increment()?;
19922 }
19923 let val_ref = self.rloc16.get_or_insert_with(|| fidl::new_empty!(u16, D));
19924 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
19925 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19926 {
19927 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19928 }
19929 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19930 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19931 }
19932 }
19933
19934 next_offset += envelope_size;
19935
19936 while next_offset < end_offset {
19938 _next_ordinal_to_read += 1;
19939 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19940 next_offset += envelope_size;
19941 }
19942
19943 Ok(())
19944 }
19945 }
19946
19947 impl ServiceConfig {
19948 #[inline(always)]
19949 fn max_ordinal_present(&self) -> u64 {
19950 if let Some(_) = self.server_config {
19951 return 5;
19952 }
19953 if let Some(_) = self.service_data {
19954 return 4;
19955 }
19956 if let Some(_) = self.service_data_length {
19957 return 3;
19958 }
19959 if let Some(_) = self.enterprise_number {
19960 return 2;
19961 }
19962 if let Some(_) = self.service_id {
19963 return 1;
19964 }
19965 0
19966 }
19967 }
19968
19969 impl fidl::encoding::ValueTypeMarker for ServiceConfig {
19970 type Borrowed<'a> = &'a Self;
19971 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
19972 value
19973 }
19974 }
19975
19976 unsafe impl fidl::encoding::TypeMarker for ServiceConfig {
19977 type Owned = Self;
19978
19979 #[inline(always)]
19980 fn inline_align(_context: fidl::encoding::Context) -> usize {
19981 8
19982 }
19983
19984 #[inline(always)]
19985 fn inline_size(_context: fidl::encoding::Context) -> usize {
19986 16
19987 }
19988 }
19989
19990 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ServiceConfig, D>
19991 for &ServiceConfig
19992 {
19993 unsafe fn encode(
19994 self,
19995 encoder: &mut fidl::encoding::Encoder<'_, D>,
19996 offset: usize,
19997 mut depth: fidl::encoding::Depth,
19998 ) -> fidl::Result<()> {
19999 encoder.debug_check_bounds::<ServiceConfig>(offset);
20000 let max_ordinal: u64 = self.max_ordinal_present();
20002 encoder.write_num(max_ordinal, offset);
20003 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
20004 if max_ordinal == 0 {
20006 return Ok(());
20007 }
20008 depth.increment()?;
20009 let envelope_size = 8;
20010 let bytes_len = max_ordinal as usize * envelope_size;
20011 #[allow(unused_variables)]
20012 let offset = encoder.out_of_line_offset(bytes_len);
20013 let mut _prev_end_offset: usize = 0;
20014 if 1 > max_ordinal {
20015 return Ok(());
20016 }
20017
20018 let cur_offset: usize = (1 - 1) * envelope_size;
20021
20022 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20024
20025 fidl::encoding::encode_in_envelope_optional::<u8, D>(
20030 self.service_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
20031 encoder,
20032 offset + cur_offset,
20033 depth,
20034 )?;
20035
20036 _prev_end_offset = cur_offset + envelope_size;
20037 if 2 > max_ordinal {
20038 return Ok(());
20039 }
20040
20041 let cur_offset: usize = (2 - 1) * envelope_size;
20044
20045 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20047
20048 fidl::encoding::encode_in_envelope_optional::<u32, D>(
20053 self.enterprise_number
20054 .as_ref()
20055 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
20056 encoder,
20057 offset + cur_offset,
20058 depth,
20059 )?;
20060
20061 _prev_end_offset = cur_offset + envelope_size;
20062 if 3 > max_ordinal {
20063 return Ok(());
20064 }
20065
20066 let cur_offset: usize = (3 - 1) * envelope_size;
20069
20070 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20072
20073 fidl::encoding::encode_in_envelope_optional::<u8, D>(
20078 self.service_data_length
20079 .as_ref()
20080 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
20081 encoder,
20082 offset + cur_offset,
20083 depth,
20084 )?;
20085
20086 _prev_end_offset = cur_offset + envelope_size;
20087 if 4 > max_ordinal {
20088 return Ok(());
20089 }
20090
20091 let cur_offset: usize = (4 - 1) * envelope_size;
20094
20095 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20097
20098 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 252>, D>(
20103 self.service_data.as_ref().map(
20104 <fidl::encoding::Vector<u8, 252> as fidl::encoding::ValueTypeMarker>::borrow,
20105 ),
20106 encoder,
20107 offset + cur_offset,
20108 depth,
20109 )?;
20110
20111 _prev_end_offset = cur_offset + envelope_size;
20112 if 5 > max_ordinal {
20113 return Ok(());
20114 }
20115
20116 let cur_offset: usize = (5 - 1) * envelope_size;
20119
20120 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20122
20123 fidl::encoding::encode_in_envelope_optional::<ServerConfig, D>(
20128 self.server_config
20129 .as_ref()
20130 .map(<ServerConfig as fidl::encoding::ValueTypeMarker>::borrow),
20131 encoder,
20132 offset + cur_offset,
20133 depth,
20134 )?;
20135
20136 _prev_end_offset = cur_offset + envelope_size;
20137
20138 Ok(())
20139 }
20140 }
20141
20142 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ServiceConfig {
20143 #[inline(always)]
20144 fn new_empty() -> Self {
20145 Self::default()
20146 }
20147
20148 unsafe fn decode(
20149 &mut self,
20150 decoder: &mut fidl::encoding::Decoder<'_, D>,
20151 offset: usize,
20152 mut depth: fidl::encoding::Depth,
20153 ) -> fidl::Result<()> {
20154 decoder.debug_check_bounds::<Self>(offset);
20155 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
20156 None => return Err(fidl::Error::NotNullable),
20157 Some(len) => len,
20158 };
20159 if len == 0 {
20161 return Ok(());
20162 };
20163 depth.increment()?;
20164 let envelope_size = 8;
20165 let bytes_len = len * envelope_size;
20166 let offset = decoder.out_of_line_offset(bytes_len)?;
20167 let mut _next_ordinal_to_read = 0;
20169 let mut next_offset = offset;
20170 let end_offset = offset + bytes_len;
20171 _next_ordinal_to_read += 1;
20172 if next_offset >= end_offset {
20173 return Ok(());
20174 }
20175
20176 while _next_ordinal_to_read < 1 {
20178 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20179 _next_ordinal_to_read += 1;
20180 next_offset += envelope_size;
20181 }
20182
20183 let next_out_of_line = decoder.next_out_of_line();
20184 let handles_before = decoder.remaining_handles();
20185 if let Some((inlined, num_bytes, num_handles)) =
20186 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20187 {
20188 let member_inline_size =
20189 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20190 if inlined != (member_inline_size <= 4) {
20191 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20192 }
20193 let inner_offset;
20194 let mut inner_depth = depth.clone();
20195 if inlined {
20196 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20197 inner_offset = next_offset;
20198 } else {
20199 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20200 inner_depth.increment()?;
20201 }
20202 let val_ref = self.service_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
20203 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
20204 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20205 {
20206 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20207 }
20208 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20209 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20210 }
20211 }
20212
20213 next_offset += envelope_size;
20214 _next_ordinal_to_read += 1;
20215 if next_offset >= end_offset {
20216 return Ok(());
20217 }
20218
20219 while _next_ordinal_to_read < 2 {
20221 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20222 _next_ordinal_to_read += 1;
20223 next_offset += envelope_size;
20224 }
20225
20226 let next_out_of_line = decoder.next_out_of_line();
20227 let handles_before = decoder.remaining_handles();
20228 if let Some((inlined, num_bytes, num_handles)) =
20229 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20230 {
20231 let member_inline_size =
20232 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20233 if inlined != (member_inline_size <= 4) {
20234 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20235 }
20236 let inner_offset;
20237 let mut inner_depth = depth.clone();
20238 if inlined {
20239 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20240 inner_offset = next_offset;
20241 } else {
20242 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20243 inner_depth.increment()?;
20244 }
20245 let val_ref =
20246 self.enterprise_number.get_or_insert_with(|| fidl::new_empty!(u32, D));
20247 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
20248 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20249 {
20250 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20251 }
20252 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20253 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20254 }
20255 }
20256
20257 next_offset += envelope_size;
20258 _next_ordinal_to_read += 1;
20259 if next_offset >= end_offset {
20260 return Ok(());
20261 }
20262
20263 while _next_ordinal_to_read < 3 {
20265 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20266 _next_ordinal_to_read += 1;
20267 next_offset += envelope_size;
20268 }
20269
20270 let next_out_of_line = decoder.next_out_of_line();
20271 let handles_before = decoder.remaining_handles();
20272 if let Some((inlined, num_bytes, num_handles)) =
20273 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20274 {
20275 let member_inline_size =
20276 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20277 if inlined != (member_inline_size <= 4) {
20278 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20279 }
20280 let inner_offset;
20281 let mut inner_depth = depth.clone();
20282 if inlined {
20283 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20284 inner_offset = next_offset;
20285 } else {
20286 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20287 inner_depth.increment()?;
20288 }
20289 let val_ref =
20290 self.service_data_length.get_or_insert_with(|| fidl::new_empty!(u8, D));
20291 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
20292 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20293 {
20294 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20295 }
20296 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20297 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20298 }
20299 }
20300
20301 next_offset += envelope_size;
20302 _next_ordinal_to_read += 1;
20303 if next_offset >= end_offset {
20304 return Ok(());
20305 }
20306
20307 while _next_ordinal_to_read < 4 {
20309 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20310 _next_ordinal_to_read += 1;
20311 next_offset += envelope_size;
20312 }
20313
20314 let next_out_of_line = decoder.next_out_of_line();
20315 let handles_before = decoder.remaining_handles();
20316 if let Some((inlined, num_bytes, num_handles)) =
20317 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20318 {
20319 let member_inline_size =
20320 <fidl::encoding::Vector<u8, 252> as fidl::encoding::TypeMarker>::inline_size(
20321 decoder.context,
20322 );
20323 if inlined != (member_inline_size <= 4) {
20324 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20325 }
20326 let inner_offset;
20327 let mut inner_depth = depth.clone();
20328 if inlined {
20329 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20330 inner_offset = next_offset;
20331 } else {
20332 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20333 inner_depth.increment()?;
20334 }
20335 let val_ref = self
20336 .service_data
20337 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 252>, D));
20338 fidl::decode!(fidl::encoding::Vector<u8, 252>, D, val_ref, decoder, inner_offset, inner_depth)?;
20339 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20340 {
20341 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20342 }
20343 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20344 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20345 }
20346 }
20347
20348 next_offset += envelope_size;
20349 _next_ordinal_to_read += 1;
20350 if next_offset >= end_offset {
20351 return Ok(());
20352 }
20353
20354 while _next_ordinal_to_read < 5 {
20356 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20357 _next_ordinal_to_read += 1;
20358 next_offset += envelope_size;
20359 }
20360
20361 let next_out_of_line = decoder.next_out_of_line();
20362 let handles_before = decoder.remaining_handles();
20363 if let Some((inlined, num_bytes, num_handles)) =
20364 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20365 {
20366 let member_inline_size =
20367 <ServerConfig as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20368 if inlined != (member_inline_size <= 4) {
20369 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20370 }
20371 let inner_offset;
20372 let mut inner_depth = depth.clone();
20373 if inlined {
20374 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20375 inner_offset = next_offset;
20376 } else {
20377 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20378 inner_depth.increment()?;
20379 }
20380 let val_ref =
20381 self.server_config.get_or_insert_with(|| fidl::new_empty!(ServerConfig, D));
20382 fidl::decode!(ServerConfig, D, val_ref, decoder, inner_offset, inner_depth)?;
20383 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20384 {
20385 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20386 }
20387 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20388 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20389 }
20390 }
20391
20392 next_offset += envelope_size;
20393
20394 while next_offset < end_offset {
20396 _next_ordinal_to_read += 1;
20397 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20398 next_offset += envelope_size;
20399 }
20400
20401 Ok(())
20402 }
20403 }
20404
20405 impl SrpServerHost {
20406 #[inline(always)]
20407 fn max_ordinal_present(&self) -> u64 {
20408 if let Some(_) = self.addresses {
20409 return 3;
20410 }
20411 if let Some(_) = self.deleted {
20412 return 2;
20413 }
20414 if let Some(_) = self.name {
20415 return 1;
20416 }
20417 0
20418 }
20419 }
20420
20421 impl fidl::encoding::ValueTypeMarker for SrpServerHost {
20422 type Borrowed<'a> = &'a Self;
20423 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
20424 value
20425 }
20426 }
20427
20428 unsafe impl fidl::encoding::TypeMarker for SrpServerHost {
20429 type Owned = Self;
20430
20431 #[inline(always)]
20432 fn inline_align(_context: fidl::encoding::Context) -> usize {
20433 8
20434 }
20435
20436 #[inline(always)]
20437 fn inline_size(_context: fidl::encoding::Context) -> usize {
20438 16
20439 }
20440 }
20441
20442 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerHost, D>
20443 for &SrpServerHost
20444 {
20445 unsafe fn encode(
20446 self,
20447 encoder: &mut fidl::encoding::Encoder<'_, D>,
20448 offset: usize,
20449 mut depth: fidl::encoding::Depth,
20450 ) -> fidl::Result<()> {
20451 encoder.debug_check_bounds::<SrpServerHost>(offset);
20452 let max_ordinal: u64 = self.max_ordinal_present();
20454 encoder.write_num(max_ordinal, offset);
20455 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
20456 if max_ordinal == 0 {
20458 return Ok(());
20459 }
20460 depth.increment()?;
20461 let envelope_size = 8;
20462 let bytes_len = max_ordinal as usize * envelope_size;
20463 #[allow(unused_variables)]
20464 let offset = encoder.out_of_line_offset(bytes_len);
20465 let mut _prev_end_offset: usize = 0;
20466 if 1 > max_ordinal {
20467 return Ok(());
20468 }
20469
20470 let cur_offset: usize = (1 - 1) * envelope_size;
20473
20474 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20476
20477 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
20482 self.name.as_ref().map(
20483 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
20484 ),
20485 encoder,
20486 offset + cur_offset,
20487 depth,
20488 )?;
20489
20490 _prev_end_offset = cur_offset + envelope_size;
20491 if 2 > max_ordinal {
20492 return Ok(());
20493 }
20494
20495 let cur_offset: usize = (2 - 1) * envelope_size;
20498
20499 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20501
20502 fidl::encoding::encode_in_envelope_optional::<bool, D>(
20507 self.deleted.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
20508 encoder,
20509 offset + cur_offset,
20510 depth,
20511 )?;
20512
20513 _prev_end_offset = cur_offset + envelope_size;
20514 if 3 > max_ordinal {
20515 return Ok(());
20516 }
20517
20518 let cur_offset: usize = (3 - 1) * envelope_size;
20521
20522 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20524
20525 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_net__common::Ipv6Address, 16>, D>(
20530 self.addresses.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_net__common::Ipv6Address, 16> as fidl::encoding::ValueTypeMarker>::borrow),
20531 encoder, offset + cur_offset, depth
20532 )?;
20533
20534 _prev_end_offset = cur_offset + envelope_size;
20535
20536 Ok(())
20537 }
20538 }
20539
20540 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerHost {
20541 #[inline(always)]
20542 fn new_empty() -> Self {
20543 Self::default()
20544 }
20545
20546 unsafe fn decode(
20547 &mut self,
20548 decoder: &mut fidl::encoding::Decoder<'_, D>,
20549 offset: usize,
20550 mut depth: fidl::encoding::Depth,
20551 ) -> fidl::Result<()> {
20552 decoder.debug_check_bounds::<Self>(offset);
20553 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
20554 None => return Err(fidl::Error::NotNullable),
20555 Some(len) => len,
20556 };
20557 if len == 0 {
20559 return Ok(());
20560 };
20561 depth.increment()?;
20562 let envelope_size = 8;
20563 let bytes_len = len * envelope_size;
20564 let offset = decoder.out_of_line_offset(bytes_len)?;
20565 let mut _next_ordinal_to_read = 0;
20567 let mut next_offset = offset;
20568 let end_offset = offset + bytes_len;
20569 _next_ordinal_to_read += 1;
20570 if next_offset >= end_offset {
20571 return Ok(());
20572 }
20573
20574 while _next_ordinal_to_read < 1 {
20576 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20577 _next_ordinal_to_read += 1;
20578 next_offset += envelope_size;
20579 }
20580
20581 let next_out_of_line = decoder.next_out_of_line();
20582 let handles_before = decoder.remaining_handles();
20583 if let Some((inlined, num_bytes, num_handles)) =
20584 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20585 {
20586 let member_inline_size =
20587 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
20588 decoder.context,
20589 );
20590 if inlined != (member_inline_size <= 4) {
20591 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20592 }
20593 let inner_offset;
20594 let mut inner_depth = depth.clone();
20595 if inlined {
20596 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20597 inner_offset = next_offset;
20598 } else {
20599 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20600 inner_depth.increment()?;
20601 }
20602 let val_ref = self
20603 .name
20604 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
20605 fidl::decode!(
20606 fidl::encoding::BoundedString<255>,
20607 D,
20608 val_ref,
20609 decoder,
20610 inner_offset,
20611 inner_depth
20612 )?;
20613 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20614 {
20615 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20616 }
20617 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20618 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20619 }
20620 }
20621
20622 next_offset += envelope_size;
20623 _next_ordinal_to_read += 1;
20624 if next_offset >= end_offset {
20625 return Ok(());
20626 }
20627
20628 while _next_ordinal_to_read < 2 {
20630 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20631 _next_ordinal_to_read += 1;
20632 next_offset += envelope_size;
20633 }
20634
20635 let next_out_of_line = decoder.next_out_of_line();
20636 let handles_before = decoder.remaining_handles();
20637 if let Some((inlined, num_bytes, num_handles)) =
20638 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20639 {
20640 let member_inline_size =
20641 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20642 if inlined != (member_inline_size <= 4) {
20643 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20644 }
20645 let inner_offset;
20646 let mut inner_depth = depth.clone();
20647 if inlined {
20648 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20649 inner_offset = next_offset;
20650 } else {
20651 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20652 inner_depth.increment()?;
20653 }
20654 let val_ref = self.deleted.get_or_insert_with(|| fidl::new_empty!(bool, D));
20655 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
20656 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20657 {
20658 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20659 }
20660 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20661 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20662 }
20663 }
20664
20665 next_offset += envelope_size;
20666 _next_ordinal_to_read += 1;
20667 if next_offset >= end_offset {
20668 return Ok(());
20669 }
20670
20671 while _next_ordinal_to_read < 3 {
20673 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20674 _next_ordinal_to_read += 1;
20675 next_offset += envelope_size;
20676 }
20677
20678 let next_out_of_line = decoder.next_out_of_line();
20679 let handles_before = decoder.remaining_handles();
20680 if let Some((inlined, num_bytes, num_handles)) =
20681 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20682 {
20683 let member_inline_size = <fidl::encoding::Vector<
20684 fidl_fuchsia_net__common::Ipv6Address,
20685 16,
20686 > as fidl::encoding::TypeMarker>::inline_size(
20687 decoder.context
20688 );
20689 if inlined != (member_inline_size <= 4) {
20690 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20691 }
20692 let inner_offset;
20693 let mut inner_depth = depth.clone();
20694 if inlined {
20695 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20696 inner_offset = next_offset;
20697 } else {
20698 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20699 inner_depth.increment()?;
20700 }
20701 let val_ref =
20702 self.addresses.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net__common::Ipv6Address, 16>, D));
20703 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net__common::Ipv6Address, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
20704 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20705 {
20706 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20707 }
20708 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20709 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20710 }
20711 }
20712
20713 next_offset += envelope_size;
20714
20715 while next_offset < end_offset {
20717 _next_ordinal_to_read += 1;
20718 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20719 next_offset += envelope_size;
20720 }
20721
20722 Ok(())
20723 }
20724 }
20725
20726 impl SrpServerInfo {
20727 #[inline(always)]
20728 fn max_ordinal_present(&self) -> u64 {
20729 if let Some(_) = self.services {
20730 return 8;
20731 }
20732 if let Some(_) = self.hosts {
20733 return 7;
20734 }
20735 if let Some(_) = self.services_registration {
20736 return 6;
20737 }
20738 if let Some(_) = self.hosts_registration {
20739 return 5;
20740 }
20741 if let Some(_) = self.response_counters {
20742 return 4;
20743 }
20744 if let Some(_) = self.address_mode {
20745 return 3;
20746 }
20747 if let Some(_) = self.port {
20748 return 2;
20749 }
20750 if let Some(_) = self.state {
20751 return 1;
20752 }
20753 0
20754 }
20755 }
20756
20757 impl fidl::encoding::ValueTypeMarker for SrpServerInfo {
20758 type Borrowed<'a> = &'a Self;
20759 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
20760 value
20761 }
20762 }
20763
20764 unsafe impl fidl::encoding::TypeMarker for SrpServerInfo {
20765 type Owned = Self;
20766
20767 #[inline(always)]
20768 fn inline_align(_context: fidl::encoding::Context) -> usize {
20769 8
20770 }
20771
20772 #[inline(always)]
20773 fn inline_size(_context: fidl::encoding::Context) -> usize {
20774 16
20775 }
20776 }
20777
20778 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerInfo, D>
20779 for &SrpServerInfo
20780 {
20781 unsafe fn encode(
20782 self,
20783 encoder: &mut fidl::encoding::Encoder<'_, D>,
20784 offset: usize,
20785 mut depth: fidl::encoding::Depth,
20786 ) -> fidl::Result<()> {
20787 encoder.debug_check_bounds::<SrpServerInfo>(offset);
20788 let max_ordinal: u64 = self.max_ordinal_present();
20790 encoder.write_num(max_ordinal, offset);
20791 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
20792 if max_ordinal == 0 {
20794 return Ok(());
20795 }
20796 depth.increment()?;
20797 let envelope_size = 8;
20798 let bytes_len = max_ordinal as usize * envelope_size;
20799 #[allow(unused_variables)]
20800 let offset = encoder.out_of_line_offset(bytes_len);
20801 let mut _prev_end_offset: usize = 0;
20802 if 1 > max_ordinal {
20803 return Ok(());
20804 }
20805
20806 let cur_offset: usize = (1 - 1) * envelope_size;
20809
20810 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20812
20813 fidl::encoding::encode_in_envelope_optional::<SrpServerState, D>(
20818 self.state
20819 .as_ref()
20820 .map(<SrpServerState as fidl::encoding::ValueTypeMarker>::borrow),
20821 encoder,
20822 offset + cur_offset,
20823 depth,
20824 )?;
20825
20826 _prev_end_offset = cur_offset + envelope_size;
20827 if 2 > max_ordinal {
20828 return Ok(());
20829 }
20830
20831 let cur_offset: usize = (2 - 1) * envelope_size;
20834
20835 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20837
20838 fidl::encoding::encode_in_envelope_optional::<u16, D>(
20843 self.port.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
20844 encoder,
20845 offset + cur_offset,
20846 depth,
20847 )?;
20848
20849 _prev_end_offset = cur_offset + envelope_size;
20850 if 3 > max_ordinal {
20851 return Ok(());
20852 }
20853
20854 let cur_offset: usize = (3 - 1) * envelope_size;
20857
20858 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20860
20861 fidl::encoding::encode_in_envelope_optional::<SrpServerAddressMode, D>(
20866 self.address_mode
20867 .as_ref()
20868 .map(<SrpServerAddressMode as fidl::encoding::ValueTypeMarker>::borrow),
20869 encoder,
20870 offset + cur_offset,
20871 depth,
20872 )?;
20873
20874 _prev_end_offset = cur_offset + envelope_size;
20875 if 4 > max_ordinal {
20876 return Ok(());
20877 }
20878
20879 let cur_offset: usize = (4 - 1) * envelope_size;
20882
20883 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20885
20886 fidl::encoding::encode_in_envelope_optional::<SrpServerResponseCounters, D>(
20891 self.response_counters
20892 .as_ref()
20893 .map(<SrpServerResponseCounters as fidl::encoding::ValueTypeMarker>::borrow),
20894 encoder,
20895 offset + cur_offset,
20896 depth,
20897 )?;
20898
20899 _prev_end_offset = cur_offset + envelope_size;
20900 if 5 > max_ordinal {
20901 return Ok(());
20902 }
20903
20904 let cur_offset: usize = (5 - 1) * envelope_size;
20907
20908 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20910
20911 fidl::encoding::encode_in_envelope_optional::<SrpServerRegistration, D>(
20916 self.hosts_registration
20917 .as_ref()
20918 .map(<SrpServerRegistration as fidl::encoding::ValueTypeMarker>::borrow),
20919 encoder,
20920 offset + cur_offset,
20921 depth,
20922 )?;
20923
20924 _prev_end_offset = cur_offset + envelope_size;
20925 if 6 > max_ordinal {
20926 return Ok(());
20927 }
20928
20929 let cur_offset: usize = (6 - 1) * envelope_size;
20932
20933 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20935
20936 fidl::encoding::encode_in_envelope_optional::<SrpServerRegistration, D>(
20941 self.services_registration
20942 .as_ref()
20943 .map(<SrpServerRegistration as fidl::encoding::ValueTypeMarker>::borrow),
20944 encoder,
20945 offset + cur_offset,
20946 depth,
20947 )?;
20948
20949 _prev_end_offset = cur_offset + envelope_size;
20950 if 7 > max_ordinal {
20951 return Ok(());
20952 }
20953
20954 let cur_offset: usize = (7 - 1) * envelope_size;
20957
20958 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20960
20961 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<SrpServerHost, 64>, D>(
20966 self.hosts.as_ref().map(<fidl::encoding::Vector<SrpServerHost, 64> as fidl::encoding::ValueTypeMarker>::borrow),
20967 encoder, offset + cur_offset, depth
20968 )?;
20969
20970 _prev_end_offset = cur_offset + envelope_size;
20971 if 8 > max_ordinal {
20972 return Ok(());
20973 }
20974
20975 let cur_offset: usize = (8 - 1) * envelope_size;
20978
20979 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20981
20982 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<SrpServerService, 64>, D>(
20987 self.services.as_ref().map(<fidl::encoding::Vector<SrpServerService, 64> as fidl::encoding::ValueTypeMarker>::borrow),
20988 encoder, offset + cur_offset, depth
20989 )?;
20990
20991 _prev_end_offset = cur_offset + envelope_size;
20992
20993 Ok(())
20994 }
20995 }
20996
20997 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerInfo {
20998 #[inline(always)]
20999 fn new_empty() -> Self {
21000 Self::default()
21001 }
21002
21003 unsafe fn decode(
21004 &mut self,
21005 decoder: &mut fidl::encoding::Decoder<'_, D>,
21006 offset: usize,
21007 mut depth: fidl::encoding::Depth,
21008 ) -> fidl::Result<()> {
21009 decoder.debug_check_bounds::<Self>(offset);
21010 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
21011 None => return Err(fidl::Error::NotNullable),
21012 Some(len) => len,
21013 };
21014 if len == 0 {
21016 return Ok(());
21017 };
21018 depth.increment()?;
21019 let envelope_size = 8;
21020 let bytes_len = len * envelope_size;
21021 let offset = decoder.out_of_line_offset(bytes_len)?;
21022 let mut _next_ordinal_to_read = 0;
21024 let mut next_offset = offset;
21025 let end_offset = offset + bytes_len;
21026 _next_ordinal_to_read += 1;
21027 if next_offset >= end_offset {
21028 return Ok(());
21029 }
21030
21031 while _next_ordinal_to_read < 1 {
21033 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21034 _next_ordinal_to_read += 1;
21035 next_offset += envelope_size;
21036 }
21037
21038 let next_out_of_line = decoder.next_out_of_line();
21039 let handles_before = decoder.remaining_handles();
21040 if let Some((inlined, num_bytes, num_handles)) =
21041 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21042 {
21043 let member_inline_size =
21044 <SrpServerState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21045 if inlined != (member_inline_size <= 4) {
21046 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21047 }
21048 let inner_offset;
21049 let mut inner_depth = depth.clone();
21050 if inlined {
21051 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21052 inner_offset = next_offset;
21053 } else {
21054 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21055 inner_depth.increment()?;
21056 }
21057 let val_ref = self.state.get_or_insert_with(|| fidl::new_empty!(SrpServerState, D));
21058 fidl::decode!(SrpServerState, D, val_ref, decoder, inner_offset, inner_depth)?;
21059 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21060 {
21061 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21062 }
21063 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21064 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21065 }
21066 }
21067
21068 next_offset += envelope_size;
21069 _next_ordinal_to_read += 1;
21070 if next_offset >= end_offset {
21071 return Ok(());
21072 }
21073
21074 while _next_ordinal_to_read < 2 {
21076 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21077 _next_ordinal_to_read += 1;
21078 next_offset += envelope_size;
21079 }
21080
21081 let next_out_of_line = decoder.next_out_of_line();
21082 let handles_before = decoder.remaining_handles();
21083 if let Some((inlined, num_bytes, num_handles)) =
21084 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21085 {
21086 let member_inline_size =
21087 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21088 if inlined != (member_inline_size <= 4) {
21089 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21090 }
21091 let inner_offset;
21092 let mut inner_depth = depth.clone();
21093 if inlined {
21094 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21095 inner_offset = next_offset;
21096 } else {
21097 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21098 inner_depth.increment()?;
21099 }
21100 let val_ref = self.port.get_or_insert_with(|| fidl::new_empty!(u16, D));
21101 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
21102 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21103 {
21104 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21105 }
21106 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21107 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21108 }
21109 }
21110
21111 next_offset += envelope_size;
21112 _next_ordinal_to_read += 1;
21113 if next_offset >= end_offset {
21114 return Ok(());
21115 }
21116
21117 while _next_ordinal_to_read < 3 {
21119 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21120 _next_ordinal_to_read += 1;
21121 next_offset += envelope_size;
21122 }
21123
21124 let next_out_of_line = decoder.next_out_of_line();
21125 let handles_before = decoder.remaining_handles();
21126 if let Some((inlined, num_bytes, num_handles)) =
21127 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21128 {
21129 let member_inline_size =
21130 <SrpServerAddressMode as fidl::encoding::TypeMarker>::inline_size(
21131 decoder.context,
21132 );
21133 if inlined != (member_inline_size <= 4) {
21134 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21135 }
21136 let inner_offset;
21137 let mut inner_depth = depth.clone();
21138 if inlined {
21139 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21140 inner_offset = next_offset;
21141 } else {
21142 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21143 inner_depth.increment()?;
21144 }
21145 let val_ref = self
21146 .address_mode
21147 .get_or_insert_with(|| fidl::new_empty!(SrpServerAddressMode, D));
21148 fidl::decode!(
21149 SrpServerAddressMode,
21150 D,
21151 val_ref,
21152 decoder,
21153 inner_offset,
21154 inner_depth
21155 )?;
21156 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21157 {
21158 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21159 }
21160 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21161 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21162 }
21163 }
21164
21165 next_offset += envelope_size;
21166 _next_ordinal_to_read += 1;
21167 if next_offset >= end_offset {
21168 return Ok(());
21169 }
21170
21171 while _next_ordinal_to_read < 4 {
21173 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21174 _next_ordinal_to_read += 1;
21175 next_offset += envelope_size;
21176 }
21177
21178 let next_out_of_line = decoder.next_out_of_line();
21179 let handles_before = decoder.remaining_handles();
21180 if let Some((inlined, num_bytes, num_handles)) =
21181 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21182 {
21183 let member_inline_size =
21184 <SrpServerResponseCounters as fidl::encoding::TypeMarker>::inline_size(
21185 decoder.context,
21186 );
21187 if inlined != (member_inline_size <= 4) {
21188 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21189 }
21190 let inner_offset;
21191 let mut inner_depth = depth.clone();
21192 if inlined {
21193 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21194 inner_offset = next_offset;
21195 } else {
21196 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21197 inner_depth.increment()?;
21198 }
21199 let val_ref = self
21200 .response_counters
21201 .get_or_insert_with(|| fidl::new_empty!(SrpServerResponseCounters, D));
21202 fidl::decode!(
21203 SrpServerResponseCounters,
21204 D,
21205 val_ref,
21206 decoder,
21207 inner_offset,
21208 inner_depth
21209 )?;
21210 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21211 {
21212 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21213 }
21214 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21215 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21216 }
21217 }
21218
21219 next_offset += envelope_size;
21220 _next_ordinal_to_read += 1;
21221 if next_offset >= end_offset {
21222 return Ok(());
21223 }
21224
21225 while _next_ordinal_to_read < 5 {
21227 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21228 _next_ordinal_to_read += 1;
21229 next_offset += envelope_size;
21230 }
21231
21232 let next_out_of_line = decoder.next_out_of_line();
21233 let handles_before = decoder.remaining_handles();
21234 if let Some((inlined, num_bytes, num_handles)) =
21235 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21236 {
21237 let member_inline_size =
21238 <SrpServerRegistration as fidl::encoding::TypeMarker>::inline_size(
21239 decoder.context,
21240 );
21241 if inlined != (member_inline_size <= 4) {
21242 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21243 }
21244 let inner_offset;
21245 let mut inner_depth = depth.clone();
21246 if inlined {
21247 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21248 inner_offset = next_offset;
21249 } else {
21250 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21251 inner_depth.increment()?;
21252 }
21253 let val_ref = self
21254 .hosts_registration
21255 .get_or_insert_with(|| fidl::new_empty!(SrpServerRegistration, D));
21256 fidl::decode!(
21257 SrpServerRegistration,
21258 D,
21259 val_ref,
21260 decoder,
21261 inner_offset,
21262 inner_depth
21263 )?;
21264 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21265 {
21266 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21267 }
21268 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21269 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21270 }
21271 }
21272
21273 next_offset += envelope_size;
21274 _next_ordinal_to_read += 1;
21275 if next_offset >= end_offset {
21276 return Ok(());
21277 }
21278
21279 while _next_ordinal_to_read < 6 {
21281 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21282 _next_ordinal_to_read += 1;
21283 next_offset += envelope_size;
21284 }
21285
21286 let next_out_of_line = decoder.next_out_of_line();
21287 let handles_before = decoder.remaining_handles();
21288 if let Some((inlined, num_bytes, num_handles)) =
21289 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21290 {
21291 let member_inline_size =
21292 <SrpServerRegistration as fidl::encoding::TypeMarker>::inline_size(
21293 decoder.context,
21294 );
21295 if inlined != (member_inline_size <= 4) {
21296 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21297 }
21298 let inner_offset;
21299 let mut inner_depth = depth.clone();
21300 if inlined {
21301 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21302 inner_offset = next_offset;
21303 } else {
21304 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21305 inner_depth.increment()?;
21306 }
21307 let val_ref = self
21308 .services_registration
21309 .get_or_insert_with(|| fidl::new_empty!(SrpServerRegistration, D));
21310 fidl::decode!(
21311 SrpServerRegistration,
21312 D,
21313 val_ref,
21314 decoder,
21315 inner_offset,
21316 inner_depth
21317 )?;
21318 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21319 {
21320 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21321 }
21322 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21323 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21324 }
21325 }
21326
21327 next_offset += envelope_size;
21328 _next_ordinal_to_read += 1;
21329 if next_offset >= end_offset {
21330 return Ok(());
21331 }
21332
21333 while _next_ordinal_to_read < 7 {
21335 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21336 _next_ordinal_to_read += 1;
21337 next_offset += envelope_size;
21338 }
21339
21340 let next_out_of_line = decoder.next_out_of_line();
21341 let handles_before = decoder.remaining_handles();
21342 if let Some((inlined, num_bytes, num_handles)) =
21343 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21344 {
21345 let member_inline_size = <fidl::encoding::Vector<SrpServerHost, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21346 if inlined != (member_inline_size <= 4) {
21347 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21348 }
21349 let inner_offset;
21350 let mut inner_depth = depth.clone();
21351 if inlined {
21352 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21353 inner_offset = next_offset;
21354 } else {
21355 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21356 inner_depth.increment()?;
21357 }
21358 let val_ref = self.hosts.get_or_insert_with(
21359 || fidl::new_empty!(fidl::encoding::Vector<SrpServerHost, 64>, D),
21360 );
21361 fidl::decode!(fidl::encoding::Vector<SrpServerHost, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
21362 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21363 {
21364 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21365 }
21366 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21367 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21368 }
21369 }
21370
21371 next_offset += envelope_size;
21372 _next_ordinal_to_read += 1;
21373 if next_offset >= end_offset {
21374 return Ok(());
21375 }
21376
21377 while _next_ordinal_to_read < 8 {
21379 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21380 _next_ordinal_to_read += 1;
21381 next_offset += envelope_size;
21382 }
21383
21384 let next_out_of_line = decoder.next_out_of_line();
21385 let handles_before = decoder.remaining_handles();
21386 if let Some((inlined, num_bytes, num_handles)) =
21387 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21388 {
21389 let member_inline_size = <fidl::encoding::Vector<SrpServerService, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21390 if inlined != (member_inline_size <= 4) {
21391 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21392 }
21393 let inner_offset;
21394 let mut inner_depth = depth.clone();
21395 if inlined {
21396 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21397 inner_offset = next_offset;
21398 } else {
21399 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21400 inner_depth.increment()?;
21401 }
21402 let val_ref = self.services.get_or_insert_with(
21403 || fidl::new_empty!(fidl::encoding::Vector<SrpServerService, 64>, D),
21404 );
21405 fidl::decode!(fidl::encoding::Vector<SrpServerService, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
21406 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21407 {
21408 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21409 }
21410 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21411 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21412 }
21413 }
21414
21415 next_offset += envelope_size;
21416
21417 while next_offset < end_offset {
21419 _next_ordinal_to_read += 1;
21420 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21421 next_offset += envelope_size;
21422 }
21423
21424 Ok(())
21425 }
21426 }
21427
21428 impl SrpServerRegistration {
21429 #[inline(always)]
21430 fn max_ordinal_present(&self) -> u64 {
21431 if let Some(_) = self.remaining_key_lease_time_total {
21432 return 6;
21433 }
21434 if let Some(_) = self.remaining_lease_time_total {
21435 return 5;
21436 }
21437 if let Some(_) = self.key_lease_time_total {
21438 return 4;
21439 }
21440 if let Some(_) = self.lease_time_total {
21441 return 3;
21442 }
21443 if let Some(_) = self.deleted_count {
21444 return 2;
21445 }
21446 if let Some(_) = self.fresh_count {
21447 return 1;
21448 }
21449 0
21450 }
21451 }
21452
21453 impl fidl::encoding::ValueTypeMarker for SrpServerRegistration {
21454 type Borrowed<'a> = &'a Self;
21455 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
21456 value
21457 }
21458 }
21459
21460 unsafe impl fidl::encoding::TypeMarker for SrpServerRegistration {
21461 type Owned = Self;
21462
21463 #[inline(always)]
21464 fn inline_align(_context: fidl::encoding::Context) -> usize {
21465 8
21466 }
21467
21468 #[inline(always)]
21469 fn inline_size(_context: fidl::encoding::Context) -> usize {
21470 16
21471 }
21472 }
21473
21474 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerRegistration, D>
21475 for &SrpServerRegistration
21476 {
21477 unsafe fn encode(
21478 self,
21479 encoder: &mut fidl::encoding::Encoder<'_, D>,
21480 offset: usize,
21481 mut depth: fidl::encoding::Depth,
21482 ) -> fidl::Result<()> {
21483 encoder.debug_check_bounds::<SrpServerRegistration>(offset);
21484 let max_ordinal: u64 = self.max_ordinal_present();
21486 encoder.write_num(max_ordinal, offset);
21487 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
21488 if max_ordinal == 0 {
21490 return Ok(());
21491 }
21492 depth.increment()?;
21493 let envelope_size = 8;
21494 let bytes_len = max_ordinal as usize * envelope_size;
21495 #[allow(unused_variables)]
21496 let offset = encoder.out_of_line_offset(bytes_len);
21497 let mut _prev_end_offset: usize = 0;
21498 if 1 > max_ordinal {
21499 return Ok(());
21500 }
21501
21502 let cur_offset: usize = (1 - 1) * envelope_size;
21505
21506 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21508
21509 fidl::encoding::encode_in_envelope_optional::<u32, D>(
21514 self.fresh_count.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
21515 encoder,
21516 offset + cur_offset,
21517 depth,
21518 )?;
21519
21520 _prev_end_offset = cur_offset + envelope_size;
21521 if 2 > max_ordinal {
21522 return Ok(());
21523 }
21524
21525 let cur_offset: usize = (2 - 1) * envelope_size;
21528
21529 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21531
21532 fidl::encoding::encode_in_envelope_optional::<u32, D>(
21537 self.deleted_count.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
21538 encoder,
21539 offset + cur_offset,
21540 depth,
21541 )?;
21542
21543 _prev_end_offset = cur_offset + envelope_size;
21544 if 3 > max_ordinal {
21545 return Ok(());
21546 }
21547
21548 let cur_offset: usize = (3 - 1) * envelope_size;
21551
21552 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21554
21555 fidl::encoding::encode_in_envelope_optional::<i64, D>(
21560 self.lease_time_total
21561 .as_ref()
21562 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
21563 encoder,
21564 offset + cur_offset,
21565 depth,
21566 )?;
21567
21568 _prev_end_offset = cur_offset + envelope_size;
21569 if 4 > max_ordinal {
21570 return Ok(());
21571 }
21572
21573 let cur_offset: usize = (4 - 1) * envelope_size;
21576
21577 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21579
21580 fidl::encoding::encode_in_envelope_optional::<i64, D>(
21585 self.key_lease_time_total
21586 .as_ref()
21587 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
21588 encoder,
21589 offset + cur_offset,
21590 depth,
21591 )?;
21592
21593 _prev_end_offset = cur_offset + envelope_size;
21594 if 5 > max_ordinal {
21595 return Ok(());
21596 }
21597
21598 let cur_offset: usize = (5 - 1) * envelope_size;
21601
21602 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21604
21605 fidl::encoding::encode_in_envelope_optional::<i64, D>(
21610 self.remaining_lease_time_total
21611 .as_ref()
21612 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
21613 encoder,
21614 offset + cur_offset,
21615 depth,
21616 )?;
21617
21618 _prev_end_offset = cur_offset + envelope_size;
21619 if 6 > max_ordinal {
21620 return Ok(());
21621 }
21622
21623 let cur_offset: usize = (6 - 1) * envelope_size;
21626
21627 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21629
21630 fidl::encoding::encode_in_envelope_optional::<i64, D>(
21635 self.remaining_key_lease_time_total
21636 .as_ref()
21637 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
21638 encoder,
21639 offset + cur_offset,
21640 depth,
21641 )?;
21642
21643 _prev_end_offset = cur_offset + envelope_size;
21644
21645 Ok(())
21646 }
21647 }
21648
21649 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerRegistration {
21650 #[inline(always)]
21651 fn new_empty() -> Self {
21652 Self::default()
21653 }
21654
21655 unsafe fn decode(
21656 &mut self,
21657 decoder: &mut fidl::encoding::Decoder<'_, D>,
21658 offset: usize,
21659 mut depth: fidl::encoding::Depth,
21660 ) -> fidl::Result<()> {
21661 decoder.debug_check_bounds::<Self>(offset);
21662 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
21663 None => return Err(fidl::Error::NotNullable),
21664 Some(len) => len,
21665 };
21666 if len == 0 {
21668 return Ok(());
21669 };
21670 depth.increment()?;
21671 let envelope_size = 8;
21672 let bytes_len = len * envelope_size;
21673 let offset = decoder.out_of_line_offset(bytes_len)?;
21674 let mut _next_ordinal_to_read = 0;
21676 let mut next_offset = offset;
21677 let end_offset = offset + bytes_len;
21678 _next_ordinal_to_read += 1;
21679 if next_offset >= end_offset {
21680 return Ok(());
21681 }
21682
21683 while _next_ordinal_to_read < 1 {
21685 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21686 _next_ordinal_to_read += 1;
21687 next_offset += envelope_size;
21688 }
21689
21690 let next_out_of_line = decoder.next_out_of_line();
21691 let handles_before = decoder.remaining_handles();
21692 if let Some((inlined, num_bytes, num_handles)) =
21693 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21694 {
21695 let member_inline_size =
21696 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21697 if inlined != (member_inline_size <= 4) {
21698 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21699 }
21700 let inner_offset;
21701 let mut inner_depth = depth.clone();
21702 if inlined {
21703 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21704 inner_offset = next_offset;
21705 } else {
21706 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21707 inner_depth.increment()?;
21708 }
21709 let val_ref = self.fresh_count.get_or_insert_with(|| fidl::new_empty!(u32, D));
21710 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
21711 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21712 {
21713 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21714 }
21715 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21716 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21717 }
21718 }
21719
21720 next_offset += envelope_size;
21721 _next_ordinal_to_read += 1;
21722 if next_offset >= end_offset {
21723 return Ok(());
21724 }
21725
21726 while _next_ordinal_to_read < 2 {
21728 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21729 _next_ordinal_to_read += 1;
21730 next_offset += envelope_size;
21731 }
21732
21733 let next_out_of_line = decoder.next_out_of_line();
21734 let handles_before = decoder.remaining_handles();
21735 if let Some((inlined, num_bytes, num_handles)) =
21736 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21737 {
21738 let member_inline_size =
21739 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21740 if inlined != (member_inline_size <= 4) {
21741 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21742 }
21743 let inner_offset;
21744 let mut inner_depth = depth.clone();
21745 if inlined {
21746 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21747 inner_offset = next_offset;
21748 } else {
21749 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21750 inner_depth.increment()?;
21751 }
21752 let val_ref = self.deleted_count.get_or_insert_with(|| fidl::new_empty!(u32, D));
21753 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
21754 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21755 {
21756 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21757 }
21758 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21759 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21760 }
21761 }
21762
21763 next_offset += envelope_size;
21764 _next_ordinal_to_read += 1;
21765 if next_offset >= end_offset {
21766 return Ok(());
21767 }
21768
21769 while _next_ordinal_to_read < 3 {
21771 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21772 _next_ordinal_to_read += 1;
21773 next_offset += envelope_size;
21774 }
21775
21776 let next_out_of_line = decoder.next_out_of_line();
21777 let handles_before = decoder.remaining_handles();
21778 if let Some((inlined, num_bytes, num_handles)) =
21779 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21780 {
21781 let member_inline_size =
21782 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21783 if inlined != (member_inline_size <= 4) {
21784 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21785 }
21786 let inner_offset;
21787 let mut inner_depth = depth.clone();
21788 if inlined {
21789 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21790 inner_offset = next_offset;
21791 } else {
21792 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21793 inner_depth.increment()?;
21794 }
21795 let val_ref = self.lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
21796 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
21797 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21798 {
21799 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21800 }
21801 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21802 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21803 }
21804 }
21805
21806 next_offset += envelope_size;
21807 _next_ordinal_to_read += 1;
21808 if next_offset >= end_offset {
21809 return Ok(());
21810 }
21811
21812 while _next_ordinal_to_read < 4 {
21814 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21815 _next_ordinal_to_read += 1;
21816 next_offset += envelope_size;
21817 }
21818
21819 let next_out_of_line = decoder.next_out_of_line();
21820 let handles_before = decoder.remaining_handles();
21821 if let Some((inlined, num_bytes, num_handles)) =
21822 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21823 {
21824 let member_inline_size =
21825 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21826 if inlined != (member_inline_size <= 4) {
21827 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21828 }
21829 let inner_offset;
21830 let mut inner_depth = depth.clone();
21831 if inlined {
21832 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21833 inner_offset = next_offset;
21834 } else {
21835 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21836 inner_depth.increment()?;
21837 }
21838 let val_ref =
21839 self.key_lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
21840 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
21841 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21842 {
21843 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21844 }
21845 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21846 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21847 }
21848 }
21849
21850 next_offset += envelope_size;
21851 _next_ordinal_to_read += 1;
21852 if next_offset >= end_offset {
21853 return Ok(());
21854 }
21855
21856 while _next_ordinal_to_read < 5 {
21858 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21859 _next_ordinal_to_read += 1;
21860 next_offset += envelope_size;
21861 }
21862
21863 let next_out_of_line = decoder.next_out_of_line();
21864 let handles_before = decoder.remaining_handles();
21865 if let Some((inlined, num_bytes, num_handles)) =
21866 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21867 {
21868 let member_inline_size =
21869 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21870 if inlined != (member_inline_size <= 4) {
21871 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21872 }
21873 let inner_offset;
21874 let mut inner_depth = depth.clone();
21875 if inlined {
21876 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21877 inner_offset = next_offset;
21878 } else {
21879 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21880 inner_depth.increment()?;
21881 }
21882 let val_ref =
21883 self.remaining_lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
21884 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
21885 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21886 {
21887 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21888 }
21889 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21890 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21891 }
21892 }
21893
21894 next_offset += envelope_size;
21895 _next_ordinal_to_read += 1;
21896 if next_offset >= end_offset {
21897 return Ok(());
21898 }
21899
21900 while _next_ordinal_to_read < 6 {
21902 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21903 _next_ordinal_to_read += 1;
21904 next_offset += envelope_size;
21905 }
21906
21907 let next_out_of_line = decoder.next_out_of_line();
21908 let handles_before = decoder.remaining_handles();
21909 if let Some((inlined, num_bytes, num_handles)) =
21910 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21911 {
21912 let member_inline_size =
21913 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21914 if inlined != (member_inline_size <= 4) {
21915 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21916 }
21917 let inner_offset;
21918 let mut inner_depth = depth.clone();
21919 if inlined {
21920 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21921 inner_offset = next_offset;
21922 } else {
21923 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21924 inner_depth.increment()?;
21925 }
21926 let val_ref = self
21927 .remaining_key_lease_time_total
21928 .get_or_insert_with(|| fidl::new_empty!(i64, D));
21929 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
21930 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21931 {
21932 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21933 }
21934 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21935 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21936 }
21937 }
21938
21939 next_offset += envelope_size;
21940
21941 while next_offset < end_offset {
21943 _next_ordinal_to_read += 1;
21944 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21945 next_offset += envelope_size;
21946 }
21947
21948 Ok(())
21949 }
21950 }
21951
21952 impl SrpServerResponseCounters {
21953 #[inline(always)]
21954 fn max_ordinal_present(&self) -> u64 {
21955 if let Some(_) = self.other_response {
21956 return 6;
21957 }
21958 if let Some(_) = self.refused_response {
21959 return 5;
21960 }
21961 if let Some(_) = self.name_exists_response {
21962 return 4;
21963 }
21964 if let Some(_) = self.format_error_response {
21965 return 3;
21966 }
21967 if let Some(_) = self.server_failure_response {
21968 return 2;
21969 }
21970 if let Some(_) = self.success_response {
21971 return 1;
21972 }
21973 0
21974 }
21975 }
21976
21977 impl fidl::encoding::ValueTypeMarker for SrpServerResponseCounters {
21978 type Borrowed<'a> = &'a Self;
21979 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
21980 value
21981 }
21982 }
21983
21984 unsafe impl fidl::encoding::TypeMarker for SrpServerResponseCounters {
21985 type Owned = Self;
21986
21987 #[inline(always)]
21988 fn inline_align(_context: fidl::encoding::Context) -> usize {
21989 8
21990 }
21991
21992 #[inline(always)]
21993 fn inline_size(_context: fidl::encoding::Context) -> usize {
21994 16
21995 }
21996 }
21997
21998 unsafe impl<D: fidl::encoding::ResourceDialect>
21999 fidl::encoding::Encode<SrpServerResponseCounters, D> for &SrpServerResponseCounters
22000 {
22001 unsafe fn encode(
22002 self,
22003 encoder: &mut fidl::encoding::Encoder<'_, D>,
22004 offset: usize,
22005 mut depth: fidl::encoding::Depth,
22006 ) -> fidl::Result<()> {
22007 encoder.debug_check_bounds::<SrpServerResponseCounters>(offset);
22008 let max_ordinal: u64 = self.max_ordinal_present();
22010 encoder.write_num(max_ordinal, offset);
22011 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
22012 if max_ordinal == 0 {
22014 return Ok(());
22015 }
22016 depth.increment()?;
22017 let envelope_size = 8;
22018 let bytes_len = max_ordinal as usize * envelope_size;
22019 #[allow(unused_variables)]
22020 let offset = encoder.out_of_line_offset(bytes_len);
22021 let mut _prev_end_offset: usize = 0;
22022 if 1 > max_ordinal {
22023 return Ok(());
22024 }
22025
22026 let cur_offset: usize = (1 - 1) * envelope_size;
22029
22030 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22032
22033 fidl::encoding::encode_in_envelope_optional::<u32, D>(
22038 self.success_response
22039 .as_ref()
22040 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
22041 encoder,
22042 offset + cur_offset,
22043 depth,
22044 )?;
22045
22046 _prev_end_offset = cur_offset + envelope_size;
22047 if 2 > max_ordinal {
22048 return Ok(());
22049 }
22050
22051 let cur_offset: usize = (2 - 1) * envelope_size;
22054
22055 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22057
22058 fidl::encoding::encode_in_envelope_optional::<u32, D>(
22063 self.server_failure_response
22064 .as_ref()
22065 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
22066 encoder,
22067 offset + cur_offset,
22068 depth,
22069 )?;
22070
22071 _prev_end_offset = cur_offset + envelope_size;
22072 if 3 > max_ordinal {
22073 return Ok(());
22074 }
22075
22076 let cur_offset: usize = (3 - 1) * envelope_size;
22079
22080 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22082
22083 fidl::encoding::encode_in_envelope_optional::<u32, D>(
22088 self.format_error_response
22089 .as_ref()
22090 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
22091 encoder,
22092 offset + cur_offset,
22093 depth,
22094 )?;
22095
22096 _prev_end_offset = cur_offset + envelope_size;
22097 if 4 > max_ordinal {
22098 return Ok(());
22099 }
22100
22101 let cur_offset: usize = (4 - 1) * envelope_size;
22104
22105 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22107
22108 fidl::encoding::encode_in_envelope_optional::<u32, D>(
22113 self.name_exists_response
22114 .as_ref()
22115 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
22116 encoder,
22117 offset + cur_offset,
22118 depth,
22119 )?;
22120
22121 _prev_end_offset = cur_offset + envelope_size;
22122 if 5 > max_ordinal {
22123 return Ok(());
22124 }
22125
22126 let cur_offset: usize = (5 - 1) * envelope_size;
22129
22130 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22132
22133 fidl::encoding::encode_in_envelope_optional::<u32, D>(
22138 self.refused_response
22139 .as_ref()
22140 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
22141 encoder,
22142 offset + cur_offset,
22143 depth,
22144 )?;
22145
22146 _prev_end_offset = cur_offset + envelope_size;
22147 if 6 > max_ordinal {
22148 return Ok(());
22149 }
22150
22151 let cur_offset: usize = (6 - 1) * envelope_size;
22154
22155 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22157
22158 fidl::encoding::encode_in_envelope_optional::<u32, D>(
22163 self.other_response.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
22164 encoder,
22165 offset + cur_offset,
22166 depth,
22167 )?;
22168
22169 _prev_end_offset = cur_offset + envelope_size;
22170
22171 Ok(())
22172 }
22173 }
22174
22175 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
22176 for SrpServerResponseCounters
22177 {
22178 #[inline(always)]
22179 fn new_empty() -> Self {
22180 Self::default()
22181 }
22182
22183 unsafe fn decode(
22184 &mut self,
22185 decoder: &mut fidl::encoding::Decoder<'_, D>,
22186 offset: usize,
22187 mut depth: fidl::encoding::Depth,
22188 ) -> fidl::Result<()> {
22189 decoder.debug_check_bounds::<Self>(offset);
22190 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
22191 None => return Err(fidl::Error::NotNullable),
22192 Some(len) => len,
22193 };
22194 if len == 0 {
22196 return Ok(());
22197 };
22198 depth.increment()?;
22199 let envelope_size = 8;
22200 let bytes_len = len * envelope_size;
22201 let offset = decoder.out_of_line_offset(bytes_len)?;
22202 let mut _next_ordinal_to_read = 0;
22204 let mut next_offset = offset;
22205 let end_offset = offset + bytes_len;
22206 _next_ordinal_to_read += 1;
22207 if next_offset >= end_offset {
22208 return Ok(());
22209 }
22210
22211 while _next_ordinal_to_read < 1 {
22213 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22214 _next_ordinal_to_read += 1;
22215 next_offset += envelope_size;
22216 }
22217
22218 let next_out_of_line = decoder.next_out_of_line();
22219 let handles_before = decoder.remaining_handles();
22220 if let Some((inlined, num_bytes, num_handles)) =
22221 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22222 {
22223 let member_inline_size =
22224 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22225 if inlined != (member_inline_size <= 4) {
22226 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22227 }
22228 let inner_offset;
22229 let mut inner_depth = depth.clone();
22230 if inlined {
22231 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22232 inner_offset = next_offset;
22233 } else {
22234 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22235 inner_depth.increment()?;
22236 }
22237 let val_ref = self.success_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
22238 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
22239 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22240 {
22241 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22242 }
22243 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22244 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22245 }
22246 }
22247
22248 next_offset += envelope_size;
22249 _next_ordinal_to_read += 1;
22250 if next_offset >= end_offset {
22251 return Ok(());
22252 }
22253
22254 while _next_ordinal_to_read < 2 {
22256 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22257 _next_ordinal_to_read += 1;
22258 next_offset += envelope_size;
22259 }
22260
22261 let next_out_of_line = decoder.next_out_of_line();
22262 let handles_before = decoder.remaining_handles();
22263 if let Some((inlined, num_bytes, num_handles)) =
22264 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22265 {
22266 let member_inline_size =
22267 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22268 if inlined != (member_inline_size <= 4) {
22269 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22270 }
22271 let inner_offset;
22272 let mut inner_depth = depth.clone();
22273 if inlined {
22274 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22275 inner_offset = next_offset;
22276 } else {
22277 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22278 inner_depth.increment()?;
22279 }
22280 let val_ref =
22281 self.server_failure_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
22282 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
22283 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22284 {
22285 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22286 }
22287 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22288 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22289 }
22290 }
22291
22292 next_offset += envelope_size;
22293 _next_ordinal_to_read += 1;
22294 if next_offset >= end_offset {
22295 return Ok(());
22296 }
22297
22298 while _next_ordinal_to_read < 3 {
22300 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22301 _next_ordinal_to_read += 1;
22302 next_offset += envelope_size;
22303 }
22304
22305 let next_out_of_line = decoder.next_out_of_line();
22306 let handles_before = decoder.remaining_handles();
22307 if let Some((inlined, num_bytes, num_handles)) =
22308 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22309 {
22310 let member_inline_size =
22311 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22312 if inlined != (member_inline_size <= 4) {
22313 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22314 }
22315 let inner_offset;
22316 let mut inner_depth = depth.clone();
22317 if inlined {
22318 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22319 inner_offset = next_offset;
22320 } else {
22321 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22322 inner_depth.increment()?;
22323 }
22324 let val_ref =
22325 self.format_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
22326 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
22327 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22328 {
22329 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22330 }
22331 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22332 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22333 }
22334 }
22335
22336 next_offset += envelope_size;
22337 _next_ordinal_to_read += 1;
22338 if next_offset >= end_offset {
22339 return Ok(());
22340 }
22341
22342 while _next_ordinal_to_read < 4 {
22344 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22345 _next_ordinal_to_read += 1;
22346 next_offset += envelope_size;
22347 }
22348
22349 let next_out_of_line = decoder.next_out_of_line();
22350 let handles_before = decoder.remaining_handles();
22351 if let Some((inlined, num_bytes, num_handles)) =
22352 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22353 {
22354 let member_inline_size =
22355 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22356 if inlined != (member_inline_size <= 4) {
22357 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22358 }
22359 let inner_offset;
22360 let mut inner_depth = depth.clone();
22361 if inlined {
22362 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22363 inner_offset = next_offset;
22364 } else {
22365 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22366 inner_depth.increment()?;
22367 }
22368 let val_ref =
22369 self.name_exists_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
22370 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
22371 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22372 {
22373 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22374 }
22375 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22376 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22377 }
22378 }
22379
22380 next_offset += envelope_size;
22381 _next_ordinal_to_read += 1;
22382 if next_offset >= end_offset {
22383 return Ok(());
22384 }
22385
22386 while _next_ordinal_to_read < 5 {
22388 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22389 _next_ordinal_to_read += 1;
22390 next_offset += envelope_size;
22391 }
22392
22393 let next_out_of_line = decoder.next_out_of_line();
22394 let handles_before = decoder.remaining_handles();
22395 if let Some((inlined, num_bytes, num_handles)) =
22396 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22397 {
22398 let member_inline_size =
22399 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22400 if inlined != (member_inline_size <= 4) {
22401 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22402 }
22403 let inner_offset;
22404 let mut inner_depth = depth.clone();
22405 if inlined {
22406 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22407 inner_offset = next_offset;
22408 } else {
22409 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22410 inner_depth.increment()?;
22411 }
22412 let val_ref = self.refused_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
22413 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
22414 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22415 {
22416 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22417 }
22418 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22419 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22420 }
22421 }
22422
22423 next_offset += envelope_size;
22424 _next_ordinal_to_read += 1;
22425 if next_offset >= end_offset {
22426 return Ok(());
22427 }
22428
22429 while _next_ordinal_to_read < 6 {
22431 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22432 _next_ordinal_to_read += 1;
22433 next_offset += envelope_size;
22434 }
22435
22436 let next_out_of_line = decoder.next_out_of_line();
22437 let handles_before = decoder.remaining_handles();
22438 if let Some((inlined, num_bytes, num_handles)) =
22439 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22440 {
22441 let member_inline_size =
22442 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22443 if inlined != (member_inline_size <= 4) {
22444 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22445 }
22446 let inner_offset;
22447 let mut inner_depth = depth.clone();
22448 if inlined {
22449 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22450 inner_offset = next_offset;
22451 } else {
22452 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22453 inner_depth.increment()?;
22454 }
22455 let val_ref = self.other_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
22456 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
22457 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22458 {
22459 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22460 }
22461 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22462 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22463 }
22464 }
22465
22466 next_offset += envelope_size;
22467
22468 while next_offset < end_offset {
22470 _next_ordinal_to_read += 1;
22471 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22472 next_offset += envelope_size;
22473 }
22474
22475 Ok(())
22476 }
22477 }
22478
22479 impl SrpServerService {
22480 #[inline(always)]
22481 fn max_ordinal_present(&self) -> u64 {
22482 if let Some(_) = self.host {
22483 return 11;
22484 }
22485 if let Some(_) = self.txt_data {
22486 return 10;
22487 }
22488 if let Some(_) = self.key_lease {
22489 return 9;
22490 }
22491 if let Some(_) = self.lease {
22492 return 8;
22493 }
22494 if let Some(_) = self.ttl {
22495 return 7;
22496 }
22497 if let Some(_) = self.weight {
22498 return 6;
22499 }
22500 if let Some(_) = self.priority {
22501 return 5;
22502 }
22503 if let Some(_) = self.port {
22504 return 4;
22505 }
22506 if let Some(_) = self.subtypes {
22507 return 3;
22508 }
22509 if let Some(_) = self.deleted {
22510 return 2;
22511 }
22512 if let Some(_) = self.instance_name {
22513 return 1;
22514 }
22515 0
22516 }
22517 }
22518
22519 impl fidl::encoding::ValueTypeMarker for SrpServerService {
22520 type Borrowed<'a> = &'a Self;
22521 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
22522 value
22523 }
22524 }
22525
22526 unsafe impl fidl::encoding::TypeMarker for SrpServerService {
22527 type Owned = Self;
22528
22529 #[inline(always)]
22530 fn inline_align(_context: fidl::encoding::Context) -> usize {
22531 8
22532 }
22533
22534 #[inline(always)]
22535 fn inline_size(_context: fidl::encoding::Context) -> usize {
22536 16
22537 }
22538 }
22539
22540 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerService, D>
22541 for &SrpServerService
22542 {
22543 unsafe fn encode(
22544 self,
22545 encoder: &mut fidl::encoding::Encoder<'_, D>,
22546 offset: usize,
22547 mut depth: fidl::encoding::Depth,
22548 ) -> fidl::Result<()> {
22549 encoder.debug_check_bounds::<SrpServerService>(offset);
22550 let max_ordinal: u64 = self.max_ordinal_present();
22552 encoder.write_num(max_ordinal, offset);
22553 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
22554 if max_ordinal == 0 {
22556 return Ok(());
22557 }
22558 depth.increment()?;
22559 let envelope_size = 8;
22560 let bytes_len = max_ordinal as usize * envelope_size;
22561 #[allow(unused_variables)]
22562 let offset = encoder.out_of_line_offset(bytes_len);
22563 let mut _prev_end_offset: usize = 0;
22564 if 1 > max_ordinal {
22565 return Ok(());
22566 }
22567
22568 let cur_offset: usize = (1 - 1) * envelope_size;
22571
22572 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22574
22575 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
22580 self.instance_name.as_ref().map(
22581 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
22582 ),
22583 encoder,
22584 offset + cur_offset,
22585 depth,
22586 )?;
22587
22588 _prev_end_offset = cur_offset + envelope_size;
22589 if 2 > max_ordinal {
22590 return Ok(());
22591 }
22592
22593 let cur_offset: usize = (2 - 1) * envelope_size;
22596
22597 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22599
22600 fidl::encoding::encode_in_envelope_optional::<bool, D>(
22605 self.deleted.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
22606 encoder,
22607 offset + cur_offset,
22608 depth,
22609 )?;
22610
22611 _prev_end_offset = cur_offset + envelope_size;
22612 if 3 > max_ordinal {
22613 return Ok(());
22614 }
22615
22616 let cur_offset: usize = (3 - 1) * envelope_size;
22619
22620 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22622
22623 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 6>, D>(
22628 self.subtypes.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 6> as fidl::encoding::ValueTypeMarker>::borrow),
22629 encoder, offset + cur_offset, depth
22630 )?;
22631
22632 _prev_end_offset = cur_offset + envelope_size;
22633 if 4 > max_ordinal {
22634 return Ok(());
22635 }
22636
22637 let cur_offset: usize = (4 - 1) * envelope_size;
22640
22641 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22643
22644 fidl::encoding::encode_in_envelope_optional::<u16, D>(
22649 self.port.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
22650 encoder,
22651 offset + cur_offset,
22652 depth,
22653 )?;
22654
22655 _prev_end_offset = cur_offset + envelope_size;
22656 if 5 > max_ordinal {
22657 return Ok(());
22658 }
22659
22660 let cur_offset: usize = (5 - 1) * envelope_size;
22663
22664 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22666
22667 fidl::encoding::encode_in_envelope_optional::<u16, D>(
22672 self.priority.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
22673 encoder,
22674 offset + cur_offset,
22675 depth,
22676 )?;
22677
22678 _prev_end_offset = cur_offset + envelope_size;
22679 if 6 > max_ordinal {
22680 return Ok(());
22681 }
22682
22683 let cur_offset: usize = (6 - 1) * envelope_size;
22686
22687 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22689
22690 fidl::encoding::encode_in_envelope_optional::<u16, D>(
22695 self.weight.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
22696 encoder,
22697 offset + cur_offset,
22698 depth,
22699 )?;
22700
22701 _prev_end_offset = cur_offset + envelope_size;
22702 if 7 > max_ordinal {
22703 return Ok(());
22704 }
22705
22706 let cur_offset: usize = (7 - 1) * envelope_size;
22709
22710 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22712
22713 fidl::encoding::encode_in_envelope_optional::<i64, D>(
22718 self.ttl.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
22719 encoder,
22720 offset + cur_offset,
22721 depth,
22722 )?;
22723
22724 _prev_end_offset = cur_offset + envelope_size;
22725 if 8 > max_ordinal {
22726 return Ok(());
22727 }
22728
22729 let cur_offset: usize = (8 - 1) * envelope_size;
22732
22733 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22735
22736 fidl::encoding::encode_in_envelope_optional::<i64, D>(
22741 self.lease.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
22742 encoder,
22743 offset + cur_offset,
22744 depth,
22745 )?;
22746
22747 _prev_end_offset = cur_offset + envelope_size;
22748 if 9 > max_ordinal {
22749 return Ok(());
22750 }
22751
22752 let cur_offset: usize = (9 - 1) * envelope_size;
22755
22756 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22758
22759 fidl::encoding::encode_in_envelope_optional::<i64, D>(
22764 self.key_lease.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
22765 encoder,
22766 offset + cur_offset,
22767 depth,
22768 )?;
22769
22770 _prev_end_offset = cur_offset + envelope_size;
22771 if 10 > max_ordinal {
22772 return Ok(());
22773 }
22774
22775 let cur_offset: usize = (10 - 1) * envelope_size;
22778
22779 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22781
22782 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<DnsTxtEntry>, D>(
22787 self.txt_data.as_ref().map(<fidl::encoding::UnboundedVector<DnsTxtEntry> as fidl::encoding::ValueTypeMarker>::borrow),
22788 encoder, offset + cur_offset, depth
22789 )?;
22790
22791 _prev_end_offset = cur_offset + envelope_size;
22792 if 11 > max_ordinal {
22793 return Ok(());
22794 }
22795
22796 let cur_offset: usize = (11 - 1) * envelope_size;
22799
22800 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22802
22803 fidl::encoding::encode_in_envelope_optional::<SrpServerHost, D>(
22808 self.host.as_ref().map(<SrpServerHost as fidl::encoding::ValueTypeMarker>::borrow),
22809 encoder,
22810 offset + cur_offset,
22811 depth,
22812 )?;
22813
22814 _prev_end_offset = cur_offset + envelope_size;
22815
22816 Ok(())
22817 }
22818 }
22819
22820 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerService {
22821 #[inline(always)]
22822 fn new_empty() -> Self {
22823 Self::default()
22824 }
22825
22826 unsafe fn decode(
22827 &mut self,
22828 decoder: &mut fidl::encoding::Decoder<'_, D>,
22829 offset: usize,
22830 mut depth: fidl::encoding::Depth,
22831 ) -> fidl::Result<()> {
22832 decoder.debug_check_bounds::<Self>(offset);
22833 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
22834 None => return Err(fidl::Error::NotNullable),
22835 Some(len) => len,
22836 };
22837 if len == 0 {
22839 return Ok(());
22840 };
22841 depth.increment()?;
22842 let envelope_size = 8;
22843 let bytes_len = len * envelope_size;
22844 let offset = decoder.out_of_line_offset(bytes_len)?;
22845 let mut _next_ordinal_to_read = 0;
22847 let mut next_offset = offset;
22848 let end_offset = offset + bytes_len;
22849 _next_ordinal_to_read += 1;
22850 if next_offset >= end_offset {
22851 return Ok(());
22852 }
22853
22854 while _next_ordinal_to_read < 1 {
22856 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22857 _next_ordinal_to_read += 1;
22858 next_offset += envelope_size;
22859 }
22860
22861 let next_out_of_line = decoder.next_out_of_line();
22862 let handles_before = decoder.remaining_handles();
22863 if let Some((inlined, num_bytes, num_handles)) =
22864 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22865 {
22866 let member_inline_size =
22867 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
22868 decoder.context,
22869 );
22870 if inlined != (member_inline_size <= 4) {
22871 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22872 }
22873 let inner_offset;
22874 let mut inner_depth = depth.clone();
22875 if inlined {
22876 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22877 inner_offset = next_offset;
22878 } else {
22879 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22880 inner_depth.increment()?;
22881 }
22882 let val_ref = self
22883 .instance_name
22884 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
22885 fidl::decode!(
22886 fidl::encoding::BoundedString<255>,
22887 D,
22888 val_ref,
22889 decoder,
22890 inner_offset,
22891 inner_depth
22892 )?;
22893 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22894 {
22895 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22896 }
22897 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22898 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22899 }
22900 }
22901
22902 next_offset += envelope_size;
22903 _next_ordinal_to_read += 1;
22904 if next_offset >= end_offset {
22905 return Ok(());
22906 }
22907
22908 while _next_ordinal_to_read < 2 {
22910 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22911 _next_ordinal_to_read += 1;
22912 next_offset += envelope_size;
22913 }
22914
22915 let next_out_of_line = decoder.next_out_of_line();
22916 let handles_before = decoder.remaining_handles();
22917 if let Some((inlined, num_bytes, num_handles)) =
22918 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22919 {
22920 let member_inline_size =
22921 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22922 if inlined != (member_inline_size <= 4) {
22923 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22924 }
22925 let inner_offset;
22926 let mut inner_depth = depth.clone();
22927 if inlined {
22928 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22929 inner_offset = next_offset;
22930 } else {
22931 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22932 inner_depth.increment()?;
22933 }
22934 let val_ref = self.deleted.get_or_insert_with(|| fidl::new_empty!(bool, D));
22935 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
22936 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22937 {
22938 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22939 }
22940 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22941 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22942 }
22943 }
22944
22945 next_offset += envelope_size;
22946 _next_ordinal_to_read += 1;
22947 if next_offset >= end_offset {
22948 return Ok(());
22949 }
22950
22951 while _next_ordinal_to_read < 3 {
22953 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22954 _next_ordinal_to_read += 1;
22955 next_offset += envelope_size;
22956 }
22957
22958 let next_out_of_line = decoder.next_out_of_line();
22959 let handles_before = decoder.remaining_handles();
22960 if let Some((inlined, num_bytes, num_handles)) =
22961 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22962 {
22963 let member_inline_size = <fidl::encoding::Vector<
22964 fidl::encoding::BoundedString<63>,
22965 6,
22966 > as fidl::encoding::TypeMarker>::inline_size(
22967 decoder.context
22968 );
22969 if inlined != (member_inline_size <= 4) {
22970 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22971 }
22972 let inner_offset;
22973 let mut inner_depth = depth.clone();
22974 if inlined {
22975 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22976 inner_offset = next_offset;
22977 } else {
22978 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22979 inner_depth.increment()?;
22980 }
22981 let val_ref = self.subtypes.get_or_insert_with(|| {
22982 fidl::new_empty!(
22983 fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 6>,
22984 D
22985 )
22986 });
22987 fidl::decode!(
22988 fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 6>,
22989 D,
22990 val_ref,
22991 decoder,
22992 inner_offset,
22993 inner_depth
22994 )?;
22995 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22996 {
22997 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22998 }
22999 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23000 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23001 }
23002 }
23003
23004 next_offset += envelope_size;
23005 _next_ordinal_to_read += 1;
23006 if next_offset >= end_offset {
23007 return Ok(());
23008 }
23009
23010 while _next_ordinal_to_read < 4 {
23012 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23013 _next_ordinal_to_read += 1;
23014 next_offset += envelope_size;
23015 }
23016
23017 let next_out_of_line = decoder.next_out_of_line();
23018 let handles_before = decoder.remaining_handles();
23019 if let Some((inlined, num_bytes, num_handles)) =
23020 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23021 {
23022 let member_inline_size =
23023 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23024 if inlined != (member_inline_size <= 4) {
23025 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23026 }
23027 let inner_offset;
23028 let mut inner_depth = depth.clone();
23029 if inlined {
23030 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23031 inner_offset = next_offset;
23032 } else {
23033 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23034 inner_depth.increment()?;
23035 }
23036 let val_ref = self.port.get_or_insert_with(|| fidl::new_empty!(u16, D));
23037 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
23038 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23039 {
23040 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23041 }
23042 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23043 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23044 }
23045 }
23046
23047 next_offset += envelope_size;
23048 _next_ordinal_to_read += 1;
23049 if next_offset >= end_offset {
23050 return Ok(());
23051 }
23052
23053 while _next_ordinal_to_read < 5 {
23055 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23056 _next_ordinal_to_read += 1;
23057 next_offset += envelope_size;
23058 }
23059
23060 let next_out_of_line = decoder.next_out_of_line();
23061 let handles_before = decoder.remaining_handles();
23062 if let Some((inlined, num_bytes, num_handles)) =
23063 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23064 {
23065 let member_inline_size =
23066 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23067 if inlined != (member_inline_size <= 4) {
23068 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23069 }
23070 let inner_offset;
23071 let mut inner_depth = depth.clone();
23072 if inlined {
23073 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23074 inner_offset = next_offset;
23075 } else {
23076 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23077 inner_depth.increment()?;
23078 }
23079 let val_ref = self.priority.get_or_insert_with(|| fidl::new_empty!(u16, D));
23080 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
23081 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23082 {
23083 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23084 }
23085 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23086 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23087 }
23088 }
23089
23090 next_offset += envelope_size;
23091 _next_ordinal_to_read += 1;
23092 if next_offset >= end_offset {
23093 return Ok(());
23094 }
23095
23096 while _next_ordinal_to_read < 6 {
23098 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23099 _next_ordinal_to_read += 1;
23100 next_offset += envelope_size;
23101 }
23102
23103 let next_out_of_line = decoder.next_out_of_line();
23104 let handles_before = decoder.remaining_handles();
23105 if let Some((inlined, num_bytes, num_handles)) =
23106 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23107 {
23108 let member_inline_size =
23109 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23110 if inlined != (member_inline_size <= 4) {
23111 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23112 }
23113 let inner_offset;
23114 let mut inner_depth = depth.clone();
23115 if inlined {
23116 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23117 inner_offset = next_offset;
23118 } else {
23119 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23120 inner_depth.increment()?;
23121 }
23122 let val_ref = self.weight.get_or_insert_with(|| fidl::new_empty!(u16, D));
23123 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
23124 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23125 {
23126 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23127 }
23128 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23129 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23130 }
23131 }
23132
23133 next_offset += envelope_size;
23134 _next_ordinal_to_read += 1;
23135 if next_offset >= end_offset {
23136 return Ok(());
23137 }
23138
23139 while _next_ordinal_to_read < 7 {
23141 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23142 _next_ordinal_to_read += 1;
23143 next_offset += envelope_size;
23144 }
23145
23146 let next_out_of_line = decoder.next_out_of_line();
23147 let handles_before = decoder.remaining_handles();
23148 if let Some((inlined, num_bytes, num_handles)) =
23149 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23150 {
23151 let member_inline_size =
23152 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23153 if inlined != (member_inline_size <= 4) {
23154 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23155 }
23156 let inner_offset;
23157 let mut inner_depth = depth.clone();
23158 if inlined {
23159 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23160 inner_offset = next_offset;
23161 } else {
23162 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23163 inner_depth.increment()?;
23164 }
23165 let val_ref = self.ttl.get_or_insert_with(|| fidl::new_empty!(i64, D));
23166 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
23167 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23168 {
23169 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23170 }
23171 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23172 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23173 }
23174 }
23175
23176 next_offset += envelope_size;
23177 _next_ordinal_to_read += 1;
23178 if next_offset >= end_offset {
23179 return Ok(());
23180 }
23181
23182 while _next_ordinal_to_read < 8 {
23184 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23185 _next_ordinal_to_read += 1;
23186 next_offset += envelope_size;
23187 }
23188
23189 let next_out_of_line = decoder.next_out_of_line();
23190 let handles_before = decoder.remaining_handles();
23191 if let Some((inlined, num_bytes, num_handles)) =
23192 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23193 {
23194 let member_inline_size =
23195 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23196 if inlined != (member_inline_size <= 4) {
23197 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23198 }
23199 let inner_offset;
23200 let mut inner_depth = depth.clone();
23201 if inlined {
23202 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23203 inner_offset = next_offset;
23204 } else {
23205 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23206 inner_depth.increment()?;
23207 }
23208 let val_ref = self.lease.get_or_insert_with(|| fidl::new_empty!(i64, D));
23209 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
23210 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23211 {
23212 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23213 }
23214 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23215 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23216 }
23217 }
23218
23219 next_offset += envelope_size;
23220 _next_ordinal_to_read += 1;
23221 if next_offset >= end_offset {
23222 return Ok(());
23223 }
23224
23225 while _next_ordinal_to_read < 9 {
23227 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23228 _next_ordinal_to_read += 1;
23229 next_offset += envelope_size;
23230 }
23231
23232 let next_out_of_line = decoder.next_out_of_line();
23233 let handles_before = decoder.remaining_handles();
23234 if let Some((inlined, num_bytes, num_handles)) =
23235 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23236 {
23237 let member_inline_size =
23238 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23239 if inlined != (member_inline_size <= 4) {
23240 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23241 }
23242 let inner_offset;
23243 let mut inner_depth = depth.clone();
23244 if inlined {
23245 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23246 inner_offset = next_offset;
23247 } else {
23248 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23249 inner_depth.increment()?;
23250 }
23251 let val_ref = self.key_lease.get_or_insert_with(|| fidl::new_empty!(i64, D));
23252 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
23253 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23254 {
23255 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23256 }
23257 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23258 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23259 }
23260 }
23261
23262 next_offset += envelope_size;
23263 _next_ordinal_to_read += 1;
23264 if next_offset >= end_offset {
23265 return Ok(());
23266 }
23267
23268 while _next_ordinal_to_read < 10 {
23270 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23271 _next_ordinal_to_read += 1;
23272 next_offset += envelope_size;
23273 }
23274
23275 let next_out_of_line = decoder.next_out_of_line();
23276 let handles_before = decoder.remaining_handles();
23277 if let Some((inlined, num_bytes, num_handles)) =
23278 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23279 {
23280 let member_inline_size = <fidl::encoding::UnboundedVector<DnsTxtEntry> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23281 if inlined != (member_inline_size <= 4) {
23282 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23283 }
23284 let inner_offset;
23285 let mut inner_depth = depth.clone();
23286 if inlined {
23287 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23288 inner_offset = next_offset;
23289 } else {
23290 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23291 inner_depth.increment()?;
23292 }
23293 let val_ref = self.txt_data.get_or_insert_with(|| {
23294 fidl::new_empty!(fidl::encoding::UnboundedVector<DnsTxtEntry>, D)
23295 });
23296 fidl::decode!(
23297 fidl::encoding::UnboundedVector<DnsTxtEntry>,
23298 D,
23299 val_ref,
23300 decoder,
23301 inner_offset,
23302 inner_depth
23303 )?;
23304 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23305 {
23306 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23307 }
23308 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23309 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23310 }
23311 }
23312
23313 next_offset += envelope_size;
23314 _next_ordinal_to_read += 1;
23315 if next_offset >= end_offset {
23316 return Ok(());
23317 }
23318
23319 while _next_ordinal_to_read < 11 {
23321 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23322 _next_ordinal_to_read += 1;
23323 next_offset += envelope_size;
23324 }
23325
23326 let next_out_of_line = decoder.next_out_of_line();
23327 let handles_before = decoder.remaining_handles();
23328 if let Some((inlined, num_bytes, num_handles)) =
23329 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23330 {
23331 let member_inline_size =
23332 <SrpServerHost as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23333 if inlined != (member_inline_size <= 4) {
23334 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23335 }
23336 let inner_offset;
23337 let mut inner_depth = depth.clone();
23338 if inlined {
23339 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23340 inner_offset = next_offset;
23341 } else {
23342 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23343 inner_depth.increment()?;
23344 }
23345 let val_ref = self.host.get_or_insert_with(|| fidl::new_empty!(SrpServerHost, D));
23346 fidl::decode!(SrpServerHost, D, val_ref, decoder, inner_offset, inner_depth)?;
23347 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23348 {
23349 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23350 }
23351 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23352 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23353 }
23354 }
23355
23356 next_offset += envelope_size;
23357
23358 while next_offset < end_offset {
23360 _next_ordinal_to_read += 1;
23361 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23362 next_offset += envelope_size;
23363 }
23364
23365 Ok(())
23366 }
23367 }
23368
23369 impl Telemetry {
23370 #[inline(always)]
23371 fn max_ordinal_present(&self) -> u64 {
23372 if let Some(_) = self.network_data {
23373 return 33;
23374 }
23375 if let Some(_) = self.router_info {
23376 return 32;
23377 }
23378 if let Some(_) = self.multiradio_neighbor_info {
23379 return 31;
23380 }
23381 if let Some(_) = self.active_dataset {
23382 return 30;
23383 }
23384 if let Some(_) = self.border_routing_routers {
23385 return 29;
23386 }
23387 if let Some(_) = self.border_routing_peers {
23388 return 28;
23389 }
23390 if let Some(_) = self.extended_pan_id {
23391 return 27;
23392 }
23393 if let Some(_) = self.multi_ail_detected {
23394 return 26;
23395 }
23396 if let Some(_) = self.border_agent_counters {
23397 return 25;
23398 }
23399 if let Some(_) = self.link_metrics_entries {
23400 return 24;
23401 }
23402 if let Some(_) = self.dhcp6pd_info {
23403 return 23;
23404 }
23405 if let Some(_) = self.upstream_dns_info {
23406 return 22;
23407 }
23408 if let Some(_) = self.trel_peers_info {
23409 return 21;
23410 }
23411 if let Some(_) = self.trel_counters {
23412 return 20;
23413 }
23414 if let Some(_) = self.nat64_info {
23415 return 19;
23416 }
23417 if let Some(_) = self.uptime {
23418 return 18;
23419 }
23420 if let Some(_) = self.leader_data {
23421 return 17;
23422 }
23423 if let Some(_) = self.dnssd_counters {
23424 return 16;
23425 }
23426 if let Some(_) = self.srp_server_info {
23427 return 15;
23428 }
23429 if let Some(_) = self.thread_border_routing_counters {
23430 return 14;
23431 }
23432 if let Some(_) = self.thread_stable_network_data {
23433 return 13;
23434 }
23435 if let Some(_) = self.thread_network_data {
23436 return 12;
23437 }
23438 if let Some(_) = self.thread_stable_network_data_version {
23439 return 11;
23440 }
23441 if let Some(_) = self.thread_network_data_version {
23442 return 10;
23443 }
23444 if let Some(_) = self.thread_rloc {
23445 return 9;
23446 }
23447 if let Some(_) = self.thread_router_id {
23448 return 8;
23449 }
23450 if let Some(_) = self.thread_link_mode {
23451 return 7;
23452 }
23453 if let Some(_) = self.rcp_version {
23454 return 6;
23455 }
23456 if let Some(_) = self.stack_version {
23457 return 5;
23458 }
23459 if let Some(_) = self.partition_id {
23460 return 4;
23461 }
23462 if let Some(_) = self.channel_index {
23463 return 3;
23464 }
23465 if let Some(_) = self.tx_power {
23466 return 2;
23467 }
23468 if let Some(_) = self.rssi {
23469 return 1;
23470 }
23471 0
23472 }
23473 }
23474
23475 impl fidl::encoding::ValueTypeMarker for Telemetry {
23476 type Borrowed<'a> = &'a Self;
23477 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
23478 value
23479 }
23480 }
23481
23482 unsafe impl fidl::encoding::TypeMarker for Telemetry {
23483 type Owned = Self;
23484
23485 #[inline(always)]
23486 fn inline_align(_context: fidl::encoding::Context) -> usize {
23487 8
23488 }
23489
23490 #[inline(always)]
23491 fn inline_size(_context: fidl::encoding::Context) -> usize {
23492 16
23493 }
23494 }
23495
23496 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Telemetry, D>
23497 for &Telemetry
23498 {
23499 unsafe fn encode(
23500 self,
23501 encoder: &mut fidl::encoding::Encoder<'_, D>,
23502 offset: usize,
23503 mut depth: fidl::encoding::Depth,
23504 ) -> fidl::Result<()> {
23505 encoder.debug_check_bounds::<Telemetry>(offset);
23506 let max_ordinal: u64 = self.max_ordinal_present();
23508 encoder.write_num(max_ordinal, offset);
23509 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
23510 if max_ordinal == 0 {
23512 return Ok(());
23513 }
23514 depth.increment()?;
23515 let envelope_size = 8;
23516 let bytes_len = max_ordinal as usize * envelope_size;
23517 #[allow(unused_variables)]
23518 let offset = encoder.out_of_line_offset(bytes_len);
23519 let mut _prev_end_offset: usize = 0;
23520 if 1 > max_ordinal {
23521 return Ok(());
23522 }
23523
23524 let cur_offset: usize = (1 - 1) * envelope_size;
23527
23528 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23530
23531 fidl::encoding::encode_in_envelope_optional::<i8, D>(
23536 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
23537 encoder,
23538 offset + cur_offset,
23539 depth,
23540 )?;
23541
23542 _prev_end_offset = cur_offset + envelope_size;
23543 if 2 > max_ordinal {
23544 return Ok(());
23545 }
23546
23547 let cur_offset: usize = (2 - 1) * envelope_size;
23550
23551 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23553
23554 fidl::encoding::encode_in_envelope_optional::<i8, D>(
23559 self.tx_power.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
23560 encoder,
23561 offset + cur_offset,
23562 depth,
23563 )?;
23564
23565 _prev_end_offset = cur_offset + envelope_size;
23566 if 3 > max_ordinal {
23567 return Ok(());
23568 }
23569
23570 let cur_offset: usize = (3 - 1) * envelope_size;
23573
23574 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23576
23577 fidl::encoding::encode_in_envelope_optional::<u16, D>(
23582 self.channel_index.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
23583 encoder,
23584 offset + cur_offset,
23585 depth,
23586 )?;
23587
23588 _prev_end_offset = cur_offset + envelope_size;
23589 if 4 > max_ordinal {
23590 return Ok(());
23591 }
23592
23593 let cur_offset: usize = (4 - 1) * envelope_size;
23596
23597 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23599
23600 fidl::encoding::encode_in_envelope_optional::<u32, D>(
23605 self.partition_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
23606 encoder,
23607 offset + cur_offset,
23608 depth,
23609 )?;
23610
23611 _prev_end_offset = cur_offset + envelope_size;
23612 if 5 > max_ordinal {
23613 return Ok(());
23614 }
23615
23616 let cur_offset: usize = (5 - 1) * envelope_size;
23619
23620 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23622
23623 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
23628 self.stack_version.as_ref().map(
23629 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
23630 ),
23631 encoder,
23632 offset + cur_offset,
23633 depth,
23634 )?;
23635
23636 _prev_end_offset = cur_offset + envelope_size;
23637 if 6 > max_ordinal {
23638 return Ok(());
23639 }
23640
23641 let cur_offset: usize = (6 - 1) * envelope_size;
23644
23645 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23647
23648 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
23653 self.rcp_version.as_ref().map(
23654 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
23655 ),
23656 encoder,
23657 offset + cur_offset,
23658 depth,
23659 )?;
23660
23661 _prev_end_offset = cur_offset + envelope_size;
23662 if 7 > max_ordinal {
23663 return Ok(());
23664 }
23665
23666 let cur_offset: usize = (7 - 1) * envelope_size;
23669
23670 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23672
23673 fidl::encoding::encode_in_envelope_optional::<u8, D>(
23678 self.thread_link_mode.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
23679 encoder,
23680 offset + cur_offset,
23681 depth,
23682 )?;
23683
23684 _prev_end_offset = cur_offset + envelope_size;
23685 if 8 > max_ordinal {
23686 return Ok(());
23687 }
23688
23689 let cur_offset: usize = (8 - 1) * envelope_size;
23692
23693 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23695
23696 fidl::encoding::encode_in_envelope_optional::<u8, D>(
23701 self.thread_router_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
23702 encoder,
23703 offset + cur_offset,
23704 depth,
23705 )?;
23706
23707 _prev_end_offset = cur_offset + envelope_size;
23708 if 9 > max_ordinal {
23709 return Ok(());
23710 }
23711
23712 let cur_offset: usize = (9 - 1) * envelope_size;
23715
23716 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23718
23719 fidl::encoding::encode_in_envelope_optional::<u16, D>(
23724 self.thread_rloc.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
23725 encoder,
23726 offset + cur_offset,
23727 depth,
23728 )?;
23729
23730 _prev_end_offset = cur_offset + envelope_size;
23731 if 10 > max_ordinal {
23732 return Ok(());
23733 }
23734
23735 let cur_offset: usize = (10 - 1) * envelope_size;
23738
23739 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23741
23742 fidl::encoding::encode_in_envelope_optional::<u8, D>(
23747 self.thread_network_data_version
23748 .as_ref()
23749 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
23750 encoder,
23751 offset + cur_offset,
23752 depth,
23753 )?;
23754
23755 _prev_end_offset = cur_offset + envelope_size;
23756 if 11 > max_ordinal {
23757 return Ok(());
23758 }
23759
23760 let cur_offset: usize = (11 - 1) * envelope_size;
23763
23764 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23766
23767 fidl::encoding::encode_in_envelope_optional::<u8, D>(
23772 self.thread_stable_network_data_version
23773 .as_ref()
23774 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
23775 encoder,
23776 offset + cur_offset,
23777 depth,
23778 )?;
23779
23780 _prev_end_offset = cur_offset + envelope_size;
23781 if 12 > max_ordinal {
23782 return Ok(());
23783 }
23784
23785 let cur_offset: usize = (12 - 1) * envelope_size;
23788
23789 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23791
23792 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 255>, D>(
23797 self.thread_network_data.as_ref().map(
23798 <fidl::encoding::Vector<u8, 255> as fidl::encoding::ValueTypeMarker>::borrow,
23799 ),
23800 encoder,
23801 offset + cur_offset,
23802 depth,
23803 )?;
23804
23805 _prev_end_offset = cur_offset + envelope_size;
23806 if 13 > max_ordinal {
23807 return Ok(());
23808 }
23809
23810 let cur_offset: usize = (13 - 1) * envelope_size;
23813
23814 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23816
23817 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 255>, D>(
23822 self.thread_stable_network_data.as_ref().map(
23823 <fidl::encoding::Vector<u8, 255> as fidl::encoding::ValueTypeMarker>::borrow,
23824 ),
23825 encoder,
23826 offset + cur_offset,
23827 depth,
23828 )?;
23829
23830 _prev_end_offset = cur_offset + envelope_size;
23831 if 14 > max_ordinal {
23832 return Ok(());
23833 }
23834
23835 let cur_offset: usize = (14 - 1) * envelope_size;
23838
23839 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23841
23842 fidl::encoding::encode_in_envelope_optional::<BorderRoutingCounters, D>(
23847 self.thread_border_routing_counters
23848 .as_ref()
23849 .map(<BorderRoutingCounters as fidl::encoding::ValueTypeMarker>::borrow),
23850 encoder,
23851 offset + cur_offset,
23852 depth,
23853 )?;
23854
23855 _prev_end_offset = cur_offset + envelope_size;
23856 if 15 > max_ordinal {
23857 return Ok(());
23858 }
23859
23860 let cur_offset: usize = (15 - 1) * envelope_size;
23863
23864 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23866
23867 fidl::encoding::encode_in_envelope_optional::<SrpServerInfo, D>(
23872 self.srp_server_info
23873 .as_ref()
23874 .map(<SrpServerInfo as fidl::encoding::ValueTypeMarker>::borrow),
23875 encoder,
23876 offset + cur_offset,
23877 depth,
23878 )?;
23879
23880 _prev_end_offset = cur_offset + envelope_size;
23881 if 16 > max_ordinal {
23882 return Ok(());
23883 }
23884
23885 let cur_offset: usize = (16 - 1) * envelope_size;
23888
23889 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23891
23892 fidl::encoding::encode_in_envelope_optional::<DnssdCounters, D>(
23897 self.dnssd_counters
23898 .as_ref()
23899 .map(<DnssdCounters as fidl::encoding::ValueTypeMarker>::borrow),
23900 encoder,
23901 offset + cur_offset,
23902 depth,
23903 )?;
23904
23905 _prev_end_offset = cur_offset + envelope_size;
23906 if 17 > max_ordinal {
23907 return Ok(());
23908 }
23909
23910 let cur_offset: usize = (17 - 1) * envelope_size;
23913
23914 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23916
23917 fidl::encoding::encode_in_envelope_optional::<LeaderData, D>(
23922 self.leader_data
23923 .as_ref()
23924 .map(<LeaderData as fidl::encoding::ValueTypeMarker>::borrow),
23925 encoder,
23926 offset + cur_offset,
23927 depth,
23928 )?;
23929
23930 _prev_end_offset = cur_offset + envelope_size;
23931 if 18 > max_ordinal {
23932 return Ok(());
23933 }
23934
23935 let cur_offset: usize = (18 - 1) * envelope_size;
23938
23939 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23941
23942 fidl::encoding::encode_in_envelope_optional::<i64, D>(
23947 self.uptime.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
23948 encoder,
23949 offset + cur_offset,
23950 depth,
23951 )?;
23952
23953 _prev_end_offset = cur_offset + envelope_size;
23954 if 19 > max_ordinal {
23955 return Ok(());
23956 }
23957
23958 let cur_offset: usize = (19 - 1) * envelope_size;
23961
23962 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23964
23965 fidl::encoding::encode_in_envelope_optional::<Nat64Info, D>(
23970 self.nat64_info
23971 .as_ref()
23972 .map(<Nat64Info as fidl::encoding::ValueTypeMarker>::borrow),
23973 encoder,
23974 offset + cur_offset,
23975 depth,
23976 )?;
23977
23978 _prev_end_offset = cur_offset + envelope_size;
23979 if 20 > max_ordinal {
23980 return Ok(());
23981 }
23982
23983 let cur_offset: usize = (20 - 1) * envelope_size;
23986
23987 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23989
23990 fidl::encoding::encode_in_envelope_optional::<TrelCounters, D>(
23995 self.trel_counters
23996 .as_ref()
23997 .map(<TrelCounters as fidl::encoding::ValueTypeMarker>::borrow),
23998 encoder,
23999 offset + cur_offset,
24000 depth,
24001 )?;
24002
24003 _prev_end_offset = cur_offset + envelope_size;
24004 if 21 > max_ordinal {
24005 return Ok(());
24006 }
24007
24008 let cur_offset: usize = (21 - 1) * envelope_size;
24011
24012 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24014
24015 fidl::encoding::encode_in_envelope_optional::<TrelPeersInfo, D>(
24020 self.trel_peers_info
24021 .as_ref()
24022 .map(<TrelPeersInfo as fidl::encoding::ValueTypeMarker>::borrow),
24023 encoder,
24024 offset + cur_offset,
24025 depth,
24026 )?;
24027
24028 _prev_end_offset = cur_offset + envelope_size;
24029 if 22 > max_ordinal {
24030 return Ok(());
24031 }
24032
24033 let cur_offset: usize = (22 - 1) * envelope_size;
24036
24037 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24039
24040 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsInfo, D>(
24045 self.upstream_dns_info
24046 .as_ref()
24047 .map(<UpstreamDnsInfo as fidl::encoding::ValueTypeMarker>::borrow),
24048 encoder,
24049 offset + cur_offset,
24050 depth,
24051 )?;
24052
24053 _prev_end_offset = cur_offset + envelope_size;
24054 if 23 > max_ordinal {
24055 return Ok(());
24056 }
24057
24058 let cur_offset: usize = (23 - 1) * envelope_size;
24061
24062 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24064
24065 fidl::encoding::encode_in_envelope_optional::<Dhcp6PdInfo, D>(
24070 self.dhcp6pd_info
24071 .as_ref()
24072 .map(<Dhcp6PdInfo as fidl::encoding::ValueTypeMarker>::borrow),
24073 encoder,
24074 offset + cur_offset,
24075 depth,
24076 )?;
24077
24078 _prev_end_offset = cur_offset + envelope_size;
24079 if 24 > max_ordinal {
24080 return Ok(());
24081 }
24082
24083 let cur_offset: usize = (24 - 1) * envelope_size;
24086
24087 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24089
24090 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<LinkMetricsEntry, 64>, D>(
24095 self.link_metrics_entries.as_ref().map(<fidl::encoding::Vector<LinkMetricsEntry, 64> as fidl::encoding::ValueTypeMarker>::borrow),
24096 encoder, offset + cur_offset, depth
24097 )?;
24098
24099 _prev_end_offset = cur_offset + envelope_size;
24100 if 25 > max_ordinal {
24101 return Ok(());
24102 }
24103
24104 let cur_offset: usize = (25 - 1) * envelope_size;
24107
24108 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24110
24111 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan_device__common::BorderAgentCounters, D>(
24116 self.border_agent_counters.as_ref().map(<fidl_fuchsia_lowpan_device__common::BorderAgentCounters as fidl::encoding::ValueTypeMarker>::borrow),
24117 encoder, offset + cur_offset, depth
24118 )?;
24119
24120 _prev_end_offset = cur_offset + envelope_size;
24121 if 26 > max_ordinal {
24122 return Ok(());
24123 }
24124
24125 let cur_offset: usize = (26 - 1) * envelope_size;
24128
24129 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24131
24132 fidl::encoding::encode_in_envelope_optional::<bool, D>(
24137 self.multi_ail_detected
24138 .as_ref()
24139 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
24140 encoder,
24141 offset + cur_offset,
24142 depth,
24143 )?;
24144
24145 _prev_end_offset = cur_offset + envelope_size;
24146 if 27 > max_ordinal {
24147 return Ok(());
24148 }
24149
24150 let cur_offset: usize = (27 - 1) * envelope_size;
24153
24154 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24156
24157 fidl::encoding::encode_in_envelope_optional::<u64, D>(
24162 self.extended_pan_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
24163 encoder,
24164 offset + cur_offset,
24165 depth,
24166 )?;
24167
24168 _prev_end_offset = cur_offset + envelope_size;
24169 if 28 > max_ordinal {
24170 return Ok(());
24171 }
24172
24173 let cur_offset: usize = (28 - 1) * envelope_size;
24176
24177 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24179
24180 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BorderRoutingPeer, 64>, D>(
24185 self.border_routing_peers.as_ref().map(<fidl::encoding::Vector<BorderRoutingPeer, 64> as fidl::encoding::ValueTypeMarker>::borrow),
24186 encoder, offset + cur_offset, depth
24187 )?;
24188
24189 _prev_end_offset = cur_offset + envelope_size;
24190 if 29 > max_ordinal {
24191 return Ok(());
24192 }
24193
24194 let cur_offset: usize = (29 - 1) * envelope_size;
24197
24198 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24200
24201 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BorderRoutingRouter, 64>, D>(
24206 self.border_routing_routers.as_ref().map(<fidl::encoding::Vector<BorderRoutingRouter, 64> as fidl::encoding::ValueTypeMarker>::borrow),
24207 encoder, offset + cur_offset, depth
24208 )?;
24209
24210 _prev_end_offset = cur_offset + envelope_size;
24211 if 30 > max_ordinal {
24212 return Ok(());
24213 }
24214
24215 let cur_offset: usize = (30 - 1) * envelope_size;
24218
24219 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24221
24222 fidl::encoding::encode_in_envelope_optional::<OperationalDataset, D>(
24227 self.active_dataset
24228 .as_ref()
24229 .map(<OperationalDataset as fidl::encoding::ValueTypeMarker>::borrow),
24230 encoder,
24231 offset + cur_offset,
24232 depth,
24233 )?;
24234
24235 _prev_end_offset = cur_offset + envelope_size;
24236 if 31 > max_ordinal {
24237 return Ok(());
24238 }
24239
24240 let cur_offset: usize = (31 - 1) * envelope_size;
24243
24244 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24246
24247 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<MultiRadioNeighborInfo, 64>, D>(
24252 self.multiradio_neighbor_info.as_ref().map(<fidl::encoding::Vector<MultiRadioNeighborInfo, 64> as fidl::encoding::ValueTypeMarker>::borrow),
24253 encoder, offset + cur_offset, depth
24254 )?;
24255
24256 _prev_end_offset = cur_offset + envelope_size;
24257 if 32 > max_ordinal {
24258 return Ok(());
24259 }
24260
24261 let cur_offset: usize = (32 - 1) * envelope_size;
24264
24265 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24267
24268 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<RouterInfo, 64>, D>(
24273 self.router_info.as_ref().map(<fidl::encoding::Vector<RouterInfo, 64> as fidl::encoding::ValueTypeMarker>::borrow),
24274 encoder, offset + cur_offset, depth
24275 )?;
24276
24277 _prev_end_offset = cur_offset + envelope_size;
24278 if 33 > max_ordinal {
24279 return Ok(());
24280 }
24281
24282 let cur_offset: usize = (33 - 1) * envelope_size;
24285
24286 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24288
24289 fidl::encoding::encode_in_envelope_optional::<NetworkData, D>(
24294 self.network_data
24295 .as_ref()
24296 .map(<NetworkData as fidl::encoding::ValueTypeMarker>::borrow),
24297 encoder,
24298 offset + cur_offset,
24299 depth,
24300 )?;
24301
24302 _prev_end_offset = cur_offset + envelope_size;
24303
24304 Ok(())
24305 }
24306 }
24307
24308 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Telemetry {
24309 #[inline(always)]
24310 fn new_empty() -> Self {
24311 Self::default()
24312 }
24313
24314 unsafe fn decode(
24315 &mut self,
24316 decoder: &mut fidl::encoding::Decoder<'_, D>,
24317 offset: usize,
24318 mut depth: fidl::encoding::Depth,
24319 ) -> fidl::Result<()> {
24320 decoder.debug_check_bounds::<Self>(offset);
24321 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
24322 None => return Err(fidl::Error::NotNullable),
24323 Some(len) => len,
24324 };
24325 if len == 0 {
24327 return Ok(());
24328 };
24329 depth.increment()?;
24330 let envelope_size = 8;
24331 let bytes_len = len * envelope_size;
24332 let offset = decoder.out_of_line_offset(bytes_len)?;
24333 let mut _next_ordinal_to_read = 0;
24335 let mut next_offset = offset;
24336 let end_offset = offset + bytes_len;
24337 _next_ordinal_to_read += 1;
24338 if next_offset >= end_offset {
24339 return Ok(());
24340 }
24341
24342 while _next_ordinal_to_read < 1 {
24344 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24345 _next_ordinal_to_read += 1;
24346 next_offset += envelope_size;
24347 }
24348
24349 let next_out_of_line = decoder.next_out_of_line();
24350 let handles_before = decoder.remaining_handles();
24351 if let Some((inlined, num_bytes, num_handles)) =
24352 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24353 {
24354 let member_inline_size =
24355 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24356 if inlined != (member_inline_size <= 4) {
24357 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24358 }
24359 let inner_offset;
24360 let mut inner_depth = depth.clone();
24361 if inlined {
24362 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24363 inner_offset = next_offset;
24364 } else {
24365 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24366 inner_depth.increment()?;
24367 }
24368 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
24369 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
24370 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24371 {
24372 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24373 }
24374 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24375 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24376 }
24377 }
24378
24379 next_offset += envelope_size;
24380 _next_ordinal_to_read += 1;
24381 if next_offset >= end_offset {
24382 return Ok(());
24383 }
24384
24385 while _next_ordinal_to_read < 2 {
24387 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24388 _next_ordinal_to_read += 1;
24389 next_offset += envelope_size;
24390 }
24391
24392 let next_out_of_line = decoder.next_out_of_line();
24393 let handles_before = decoder.remaining_handles();
24394 if let Some((inlined, num_bytes, num_handles)) =
24395 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24396 {
24397 let member_inline_size =
24398 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24399 if inlined != (member_inline_size <= 4) {
24400 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24401 }
24402 let inner_offset;
24403 let mut inner_depth = depth.clone();
24404 if inlined {
24405 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24406 inner_offset = next_offset;
24407 } else {
24408 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24409 inner_depth.increment()?;
24410 }
24411 let val_ref = self.tx_power.get_or_insert_with(|| fidl::new_empty!(i8, D));
24412 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
24413 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24414 {
24415 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24416 }
24417 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24418 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24419 }
24420 }
24421
24422 next_offset += envelope_size;
24423 _next_ordinal_to_read += 1;
24424 if next_offset >= end_offset {
24425 return Ok(());
24426 }
24427
24428 while _next_ordinal_to_read < 3 {
24430 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24431 _next_ordinal_to_read += 1;
24432 next_offset += envelope_size;
24433 }
24434
24435 let next_out_of_line = decoder.next_out_of_line();
24436 let handles_before = decoder.remaining_handles();
24437 if let Some((inlined, num_bytes, num_handles)) =
24438 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24439 {
24440 let member_inline_size =
24441 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24442 if inlined != (member_inline_size <= 4) {
24443 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24444 }
24445 let inner_offset;
24446 let mut inner_depth = depth.clone();
24447 if inlined {
24448 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24449 inner_offset = next_offset;
24450 } else {
24451 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24452 inner_depth.increment()?;
24453 }
24454 let val_ref = self.channel_index.get_or_insert_with(|| fidl::new_empty!(u16, D));
24455 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
24456 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24457 {
24458 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24459 }
24460 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24461 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24462 }
24463 }
24464
24465 next_offset += envelope_size;
24466 _next_ordinal_to_read += 1;
24467 if next_offset >= end_offset {
24468 return Ok(());
24469 }
24470
24471 while _next_ordinal_to_read < 4 {
24473 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24474 _next_ordinal_to_read += 1;
24475 next_offset += envelope_size;
24476 }
24477
24478 let next_out_of_line = decoder.next_out_of_line();
24479 let handles_before = decoder.remaining_handles();
24480 if let Some((inlined, num_bytes, num_handles)) =
24481 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24482 {
24483 let member_inline_size =
24484 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24485 if inlined != (member_inline_size <= 4) {
24486 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24487 }
24488 let inner_offset;
24489 let mut inner_depth = depth.clone();
24490 if inlined {
24491 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24492 inner_offset = next_offset;
24493 } else {
24494 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24495 inner_depth.increment()?;
24496 }
24497 let val_ref = self.partition_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
24498 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
24499 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24500 {
24501 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24502 }
24503 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24504 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24505 }
24506 }
24507
24508 next_offset += envelope_size;
24509 _next_ordinal_to_read += 1;
24510 if next_offset >= end_offset {
24511 return Ok(());
24512 }
24513
24514 while _next_ordinal_to_read < 5 {
24516 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24517 _next_ordinal_to_read += 1;
24518 next_offset += envelope_size;
24519 }
24520
24521 let next_out_of_line = decoder.next_out_of_line();
24522 let handles_before = decoder.remaining_handles();
24523 if let Some((inlined, num_bytes, num_handles)) =
24524 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24525 {
24526 let member_inline_size =
24527 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
24528 decoder.context,
24529 );
24530 if inlined != (member_inline_size <= 4) {
24531 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24532 }
24533 let inner_offset;
24534 let mut inner_depth = depth.clone();
24535 if inlined {
24536 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24537 inner_offset = next_offset;
24538 } else {
24539 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24540 inner_depth.increment()?;
24541 }
24542 let val_ref = self
24543 .stack_version
24544 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
24545 fidl::decode!(
24546 fidl::encoding::BoundedString<256>,
24547 D,
24548 val_ref,
24549 decoder,
24550 inner_offset,
24551 inner_depth
24552 )?;
24553 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24554 {
24555 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24556 }
24557 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24558 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24559 }
24560 }
24561
24562 next_offset += envelope_size;
24563 _next_ordinal_to_read += 1;
24564 if next_offset >= end_offset {
24565 return Ok(());
24566 }
24567
24568 while _next_ordinal_to_read < 6 {
24570 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24571 _next_ordinal_to_read += 1;
24572 next_offset += envelope_size;
24573 }
24574
24575 let next_out_of_line = decoder.next_out_of_line();
24576 let handles_before = decoder.remaining_handles();
24577 if let Some((inlined, num_bytes, num_handles)) =
24578 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24579 {
24580 let member_inline_size =
24581 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
24582 decoder.context,
24583 );
24584 if inlined != (member_inline_size <= 4) {
24585 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24586 }
24587 let inner_offset;
24588 let mut inner_depth = depth.clone();
24589 if inlined {
24590 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24591 inner_offset = next_offset;
24592 } else {
24593 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24594 inner_depth.increment()?;
24595 }
24596 let val_ref = self
24597 .rcp_version
24598 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
24599 fidl::decode!(
24600 fidl::encoding::BoundedString<256>,
24601 D,
24602 val_ref,
24603 decoder,
24604 inner_offset,
24605 inner_depth
24606 )?;
24607 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24608 {
24609 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24610 }
24611 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24612 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24613 }
24614 }
24615
24616 next_offset += envelope_size;
24617 _next_ordinal_to_read += 1;
24618 if next_offset >= end_offset {
24619 return Ok(());
24620 }
24621
24622 while _next_ordinal_to_read < 7 {
24624 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24625 _next_ordinal_to_read += 1;
24626 next_offset += envelope_size;
24627 }
24628
24629 let next_out_of_line = decoder.next_out_of_line();
24630 let handles_before = decoder.remaining_handles();
24631 if let Some((inlined, num_bytes, num_handles)) =
24632 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24633 {
24634 let member_inline_size =
24635 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24636 if inlined != (member_inline_size <= 4) {
24637 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24638 }
24639 let inner_offset;
24640 let mut inner_depth = depth.clone();
24641 if inlined {
24642 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24643 inner_offset = next_offset;
24644 } else {
24645 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24646 inner_depth.increment()?;
24647 }
24648 let val_ref = self.thread_link_mode.get_or_insert_with(|| fidl::new_empty!(u8, D));
24649 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
24650 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24651 {
24652 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24653 }
24654 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24655 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24656 }
24657 }
24658
24659 next_offset += envelope_size;
24660 _next_ordinal_to_read += 1;
24661 if next_offset >= end_offset {
24662 return Ok(());
24663 }
24664
24665 while _next_ordinal_to_read < 8 {
24667 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24668 _next_ordinal_to_read += 1;
24669 next_offset += envelope_size;
24670 }
24671
24672 let next_out_of_line = decoder.next_out_of_line();
24673 let handles_before = decoder.remaining_handles();
24674 if let Some((inlined, num_bytes, num_handles)) =
24675 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24676 {
24677 let member_inline_size =
24678 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24679 if inlined != (member_inline_size <= 4) {
24680 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24681 }
24682 let inner_offset;
24683 let mut inner_depth = depth.clone();
24684 if inlined {
24685 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24686 inner_offset = next_offset;
24687 } else {
24688 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24689 inner_depth.increment()?;
24690 }
24691 let val_ref = self.thread_router_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
24692 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
24693 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24694 {
24695 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24696 }
24697 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24698 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24699 }
24700 }
24701
24702 next_offset += envelope_size;
24703 _next_ordinal_to_read += 1;
24704 if next_offset >= end_offset {
24705 return Ok(());
24706 }
24707
24708 while _next_ordinal_to_read < 9 {
24710 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24711 _next_ordinal_to_read += 1;
24712 next_offset += envelope_size;
24713 }
24714
24715 let next_out_of_line = decoder.next_out_of_line();
24716 let handles_before = decoder.remaining_handles();
24717 if let Some((inlined, num_bytes, num_handles)) =
24718 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24719 {
24720 let member_inline_size =
24721 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24722 if inlined != (member_inline_size <= 4) {
24723 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24724 }
24725 let inner_offset;
24726 let mut inner_depth = depth.clone();
24727 if inlined {
24728 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24729 inner_offset = next_offset;
24730 } else {
24731 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24732 inner_depth.increment()?;
24733 }
24734 let val_ref = self.thread_rloc.get_or_insert_with(|| fidl::new_empty!(u16, D));
24735 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
24736 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24737 {
24738 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24739 }
24740 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24741 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24742 }
24743 }
24744
24745 next_offset += envelope_size;
24746 _next_ordinal_to_read += 1;
24747 if next_offset >= end_offset {
24748 return Ok(());
24749 }
24750
24751 while _next_ordinal_to_read < 10 {
24753 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24754 _next_ordinal_to_read += 1;
24755 next_offset += envelope_size;
24756 }
24757
24758 let next_out_of_line = decoder.next_out_of_line();
24759 let handles_before = decoder.remaining_handles();
24760 if let Some((inlined, num_bytes, num_handles)) =
24761 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24762 {
24763 let member_inline_size =
24764 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24765 if inlined != (member_inline_size <= 4) {
24766 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24767 }
24768 let inner_offset;
24769 let mut inner_depth = depth.clone();
24770 if inlined {
24771 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24772 inner_offset = next_offset;
24773 } else {
24774 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24775 inner_depth.increment()?;
24776 }
24777 let val_ref =
24778 self.thread_network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
24779 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
24780 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24781 {
24782 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24783 }
24784 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24785 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24786 }
24787 }
24788
24789 next_offset += envelope_size;
24790 _next_ordinal_to_read += 1;
24791 if next_offset >= end_offset {
24792 return Ok(());
24793 }
24794
24795 while _next_ordinal_to_read < 11 {
24797 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24798 _next_ordinal_to_read += 1;
24799 next_offset += envelope_size;
24800 }
24801
24802 let next_out_of_line = decoder.next_out_of_line();
24803 let handles_before = decoder.remaining_handles();
24804 if let Some((inlined, num_bytes, num_handles)) =
24805 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24806 {
24807 let member_inline_size =
24808 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24809 if inlined != (member_inline_size <= 4) {
24810 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24811 }
24812 let inner_offset;
24813 let mut inner_depth = depth.clone();
24814 if inlined {
24815 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24816 inner_offset = next_offset;
24817 } else {
24818 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24819 inner_depth.increment()?;
24820 }
24821 let val_ref = self
24822 .thread_stable_network_data_version
24823 .get_or_insert_with(|| fidl::new_empty!(u8, D));
24824 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
24825 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24826 {
24827 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24828 }
24829 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24830 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24831 }
24832 }
24833
24834 next_offset += envelope_size;
24835 _next_ordinal_to_read += 1;
24836 if next_offset >= end_offset {
24837 return Ok(());
24838 }
24839
24840 while _next_ordinal_to_read < 12 {
24842 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24843 _next_ordinal_to_read += 1;
24844 next_offset += envelope_size;
24845 }
24846
24847 let next_out_of_line = decoder.next_out_of_line();
24848 let handles_before = decoder.remaining_handles();
24849 if let Some((inlined, num_bytes, num_handles)) =
24850 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24851 {
24852 let member_inline_size =
24853 <fidl::encoding::Vector<u8, 255> as fidl::encoding::TypeMarker>::inline_size(
24854 decoder.context,
24855 );
24856 if inlined != (member_inline_size <= 4) {
24857 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24858 }
24859 let inner_offset;
24860 let mut inner_depth = depth.clone();
24861 if inlined {
24862 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24863 inner_offset = next_offset;
24864 } else {
24865 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24866 inner_depth.increment()?;
24867 }
24868 let val_ref = self
24869 .thread_network_data
24870 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 255>, D));
24871 fidl::decode!(fidl::encoding::Vector<u8, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
24872 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24873 {
24874 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24875 }
24876 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24877 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24878 }
24879 }
24880
24881 next_offset += envelope_size;
24882 _next_ordinal_to_read += 1;
24883 if next_offset >= end_offset {
24884 return Ok(());
24885 }
24886
24887 while _next_ordinal_to_read < 13 {
24889 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24890 _next_ordinal_to_read += 1;
24891 next_offset += envelope_size;
24892 }
24893
24894 let next_out_of_line = decoder.next_out_of_line();
24895 let handles_before = decoder.remaining_handles();
24896 if let Some((inlined, num_bytes, num_handles)) =
24897 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24898 {
24899 let member_inline_size =
24900 <fidl::encoding::Vector<u8, 255> as fidl::encoding::TypeMarker>::inline_size(
24901 decoder.context,
24902 );
24903 if inlined != (member_inline_size <= 4) {
24904 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24905 }
24906 let inner_offset;
24907 let mut inner_depth = depth.clone();
24908 if inlined {
24909 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24910 inner_offset = next_offset;
24911 } else {
24912 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24913 inner_depth.increment()?;
24914 }
24915 let val_ref = self
24916 .thread_stable_network_data
24917 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 255>, D));
24918 fidl::decode!(fidl::encoding::Vector<u8, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
24919 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24920 {
24921 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24922 }
24923 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24924 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24925 }
24926 }
24927
24928 next_offset += envelope_size;
24929 _next_ordinal_to_read += 1;
24930 if next_offset >= end_offset {
24931 return Ok(());
24932 }
24933
24934 while _next_ordinal_to_read < 14 {
24936 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24937 _next_ordinal_to_read += 1;
24938 next_offset += envelope_size;
24939 }
24940
24941 let next_out_of_line = decoder.next_out_of_line();
24942 let handles_before = decoder.remaining_handles();
24943 if let Some((inlined, num_bytes, num_handles)) =
24944 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24945 {
24946 let member_inline_size =
24947 <BorderRoutingCounters as fidl::encoding::TypeMarker>::inline_size(
24948 decoder.context,
24949 );
24950 if inlined != (member_inline_size <= 4) {
24951 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24952 }
24953 let inner_offset;
24954 let mut inner_depth = depth.clone();
24955 if inlined {
24956 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24957 inner_offset = next_offset;
24958 } else {
24959 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24960 inner_depth.increment()?;
24961 }
24962 let val_ref = self
24963 .thread_border_routing_counters
24964 .get_or_insert_with(|| fidl::new_empty!(BorderRoutingCounters, D));
24965 fidl::decode!(
24966 BorderRoutingCounters,
24967 D,
24968 val_ref,
24969 decoder,
24970 inner_offset,
24971 inner_depth
24972 )?;
24973 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24974 {
24975 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24976 }
24977 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24978 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24979 }
24980 }
24981
24982 next_offset += envelope_size;
24983 _next_ordinal_to_read += 1;
24984 if next_offset >= end_offset {
24985 return Ok(());
24986 }
24987
24988 while _next_ordinal_to_read < 15 {
24990 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24991 _next_ordinal_to_read += 1;
24992 next_offset += envelope_size;
24993 }
24994
24995 let next_out_of_line = decoder.next_out_of_line();
24996 let handles_before = decoder.remaining_handles();
24997 if let Some((inlined, num_bytes, num_handles)) =
24998 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24999 {
25000 let member_inline_size =
25001 <SrpServerInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25002 if inlined != (member_inline_size <= 4) {
25003 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25004 }
25005 let inner_offset;
25006 let mut inner_depth = depth.clone();
25007 if inlined {
25008 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25009 inner_offset = next_offset;
25010 } else {
25011 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25012 inner_depth.increment()?;
25013 }
25014 let val_ref =
25015 self.srp_server_info.get_or_insert_with(|| fidl::new_empty!(SrpServerInfo, D));
25016 fidl::decode!(SrpServerInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
25017 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25018 {
25019 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25020 }
25021 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25022 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25023 }
25024 }
25025
25026 next_offset += envelope_size;
25027 _next_ordinal_to_read += 1;
25028 if next_offset >= end_offset {
25029 return Ok(());
25030 }
25031
25032 while _next_ordinal_to_read < 16 {
25034 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25035 _next_ordinal_to_read += 1;
25036 next_offset += envelope_size;
25037 }
25038
25039 let next_out_of_line = decoder.next_out_of_line();
25040 let handles_before = decoder.remaining_handles();
25041 if let Some((inlined, num_bytes, num_handles)) =
25042 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25043 {
25044 let member_inline_size =
25045 <DnssdCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25046 if inlined != (member_inline_size <= 4) {
25047 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25048 }
25049 let inner_offset;
25050 let mut inner_depth = depth.clone();
25051 if inlined {
25052 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25053 inner_offset = next_offset;
25054 } else {
25055 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25056 inner_depth.increment()?;
25057 }
25058 let val_ref =
25059 self.dnssd_counters.get_or_insert_with(|| fidl::new_empty!(DnssdCounters, D));
25060 fidl::decode!(DnssdCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
25061 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25062 {
25063 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25064 }
25065 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25066 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25067 }
25068 }
25069
25070 next_offset += envelope_size;
25071 _next_ordinal_to_read += 1;
25072 if next_offset >= end_offset {
25073 return Ok(());
25074 }
25075
25076 while _next_ordinal_to_read < 17 {
25078 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25079 _next_ordinal_to_read += 1;
25080 next_offset += envelope_size;
25081 }
25082
25083 let next_out_of_line = decoder.next_out_of_line();
25084 let handles_before = decoder.remaining_handles();
25085 if let Some((inlined, num_bytes, num_handles)) =
25086 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25087 {
25088 let member_inline_size =
25089 <LeaderData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25090 if inlined != (member_inline_size <= 4) {
25091 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25092 }
25093 let inner_offset;
25094 let mut inner_depth = depth.clone();
25095 if inlined {
25096 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25097 inner_offset = next_offset;
25098 } else {
25099 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25100 inner_depth.increment()?;
25101 }
25102 let val_ref =
25103 self.leader_data.get_or_insert_with(|| fidl::new_empty!(LeaderData, D));
25104 fidl::decode!(LeaderData, D, val_ref, decoder, inner_offset, inner_depth)?;
25105 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25106 {
25107 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25108 }
25109 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25110 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25111 }
25112 }
25113
25114 next_offset += envelope_size;
25115 _next_ordinal_to_read += 1;
25116 if next_offset >= end_offset {
25117 return Ok(());
25118 }
25119
25120 while _next_ordinal_to_read < 18 {
25122 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25123 _next_ordinal_to_read += 1;
25124 next_offset += envelope_size;
25125 }
25126
25127 let next_out_of_line = decoder.next_out_of_line();
25128 let handles_before = decoder.remaining_handles();
25129 if let Some((inlined, num_bytes, num_handles)) =
25130 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25131 {
25132 let member_inline_size =
25133 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25134 if inlined != (member_inline_size <= 4) {
25135 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25136 }
25137 let inner_offset;
25138 let mut inner_depth = depth.clone();
25139 if inlined {
25140 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25141 inner_offset = next_offset;
25142 } else {
25143 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25144 inner_depth.increment()?;
25145 }
25146 let val_ref = self.uptime.get_or_insert_with(|| fidl::new_empty!(i64, D));
25147 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
25148 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25149 {
25150 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25151 }
25152 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25153 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25154 }
25155 }
25156
25157 next_offset += envelope_size;
25158 _next_ordinal_to_read += 1;
25159 if next_offset >= end_offset {
25160 return Ok(());
25161 }
25162
25163 while _next_ordinal_to_read < 19 {
25165 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25166 _next_ordinal_to_read += 1;
25167 next_offset += envelope_size;
25168 }
25169
25170 let next_out_of_line = decoder.next_out_of_line();
25171 let handles_before = decoder.remaining_handles();
25172 if let Some((inlined, num_bytes, num_handles)) =
25173 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25174 {
25175 let member_inline_size =
25176 <Nat64Info as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25177 if inlined != (member_inline_size <= 4) {
25178 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25179 }
25180 let inner_offset;
25181 let mut inner_depth = depth.clone();
25182 if inlined {
25183 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25184 inner_offset = next_offset;
25185 } else {
25186 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25187 inner_depth.increment()?;
25188 }
25189 let val_ref = self.nat64_info.get_or_insert_with(|| fidl::new_empty!(Nat64Info, D));
25190 fidl::decode!(Nat64Info, D, val_ref, decoder, inner_offset, inner_depth)?;
25191 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25192 {
25193 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25194 }
25195 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25196 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25197 }
25198 }
25199
25200 next_offset += envelope_size;
25201 _next_ordinal_to_read += 1;
25202 if next_offset >= end_offset {
25203 return Ok(());
25204 }
25205
25206 while _next_ordinal_to_read < 20 {
25208 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25209 _next_ordinal_to_read += 1;
25210 next_offset += envelope_size;
25211 }
25212
25213 let next_out_of_line = decoder.next_out_of_line();
25214 let handles_before = decoder.remaining_handles();
25215 if let Some((inlined, num_bytes, num_handles)) =
25216 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25217 {
25218 let member_inline_size =
25219 <TrelCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25220 if inlined != (member_inline_size <= 4) {
25221 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25222 }
25223 let inner_offset;
25224 let mut inner_depth = depth.clone();
25225 if inlined {
25226 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25227 inner_offset = next_offset;
25228 } else {
25229 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25230 inner_depth.increment()?;
25231 }
25232 let val_ref =
25233 self.trel_counters.get_or_insert_with(|| fidl::new_empty!(TrelCounters, D));
25234 fidl::decode!(TrelCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
25235 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25236 {
25237 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25238 }
25239 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25240 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25241 }
25242 }
25243
25244 next_offset += envelope_size;
25245 _next_ordinal_to_read += 1;
25246 if next_offset >= end_offset {
25247 return Ok(());
25248 }
25249
25250 while _next_ordinal_to_read < 21 {
25252 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25253 _next_ordinal_to_read += 1;
25254 next_offset += envelope_size;
25255 }
25256
25257 let next_out_of_line = decoder.next_out_of_line();
25258 let handles_before = decoder.remaining_handles();
25259 if let Some((inlined, num_bytes, num_handles)) =
25260 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25261 {
25262 let member_inline_size =
25263 <TrelPeersInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25264 if inlined != (member_inline_size <= 4) {
25265 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25266 }
25267 let inner_offset;
25268 let mut inner_depth = depth.clone();
25269 if inlined {
25270 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25271 inner_offset = next_offset;
25272 } else {
25273 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25274 inner_depth.increment()?;
25275 }
25276 let val_ref =
25277 self.trel_peers_info.get_or_insert_with(|| fidl::new_empty!(TrelPeersInfo, D));
25278 fidl::decode!(TrelPeersInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
25279 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25280 {
25281 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25282 }
25283 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25284 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25285 }
25286 }
25287
25288 next_offset += envelope_size;
25289 _next_ordinal_to_read += 1;
25290 if next_offset >= end_offset {
25291 return Ok(());
25292 }
25293
25294 while _next_ordinal_to_read < 22 {
25296 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25297 _next_ordinal_to_read += 1;
25298 next_offset += envelope_size;
25299 }
25300
25301 let next_out_of_line = decoder.next_out_of_line();
25302 let handles_before = decoder.remaining_handles();
25303 if let Some((inlined, num_bytes, num_handles)) =
25304 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25305 {
25306 let member_inline_size =
25307 <UpstreamDnsInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25308 if inlined != (member_inline_size <= 4) {
25309 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25310 }
25311 let inner_offset;
25312 let mut inner_depth = depth.clone();
25313 if inlined {
25314 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25315 inner_offset = next_offset;
25316 } else {
25317 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25318 inner_depth.increment()?;
25319 }
25320 let val_ref = self
25321 .upstream_dns_info
25322 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsInfo, D));
25323 fidl::decode!(UpstreamDnsInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
25324 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25325 {
25326 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25327 }
25328 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25329 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25330 }
25331 }
25332
25333 next_offset += envelope_size;
25334 _next_ordinal_to_read += 1;
25335 if next_offset >= end_offset {
25336 return Ok(());
25337 }
25338
25339 while _next_ordinal_to_read < 23 {
25341 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25342 _next_ordinal_to_read += 1;
25343 next_offset += envelope_size;
25344 }
25345
25346 let next_out_of_line = decoder.next_out_of_line();
25347 let handles_before = decoder.remaining_handles();
25348 if let Some((inlined, num_bytes, num_handles)) =
25349 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25350 {
25351 let member_inline_size =
25352 <Dhcp6PdInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25353 if inlined != (member_inline_size <= 4) {
25354 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25355 }
25356 let inner_offset;
25357 let mut inner_depth = depth.clone();
25358 if inlined {
25359 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25360 inner_offset = next_offset;
25361 } else {
25362 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25363 inner_depth.increment()?;
25364 }
25365 let val_ref =
25366 self.dhcp6pd_info.get_or_insert_with(|| fidl::new_empty!(Dhcp6PdInfo, D));
25367 fidl::decode!(Dhcp6PdInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
25368 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25369 {
25370 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25371 }
25372 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25373 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25374 }
25375 }
25376
25377 next_offset += envelope_size;
25378 _next_ordinal_to_read += 1;
25379 if next_offset >= end_offset {
25380 return Ok(());
25381 }
25382
25383 while _next_ordinal_to_read < 24 {
25385 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25386 _next_ordinal_to_read += 1;
25387 next_offset += envelope_size;
25388 }
25389
25390 let next_out_of_line = decoder.next_out_of_line();
25391 let handles_before = decoder.remaining_handles();
25392 if let Some((inlined, num_bytes, num_handles)) =
25393 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25394 {
25395 let member_inline_size = <fidl::encoding::Vector<LinkMetricsEntry, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25396 if inlined != (member_inline_size <= 4) {
25397 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25398 }
25399 let inner_offset;
25400 let mut inner_depth = depth.clone();
25401 if inlined {
25402 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25403 inner_offset = next_offset;
25404 } else {
25405 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25406 inner_depth.increment()?;
25407 }
25408 let val_ref = self.link_metrics_entries.get_or_insert_with(
25409 || fidl::new_empty!(fidl::encoding::Vector<LinkMetricsEntry, 64>, D),
25410 );
25411 fidl::decode!(fidl::encoding::Vector<LinkMetricsEntry, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
25412 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25413 {
25414 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25415 }
25416 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25417 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25418 }
25419 }
25420
25421 next_offset += envelope_size;
25422 _next_ordinal_to_read += 1;
25423 if next_offset >= end_offset {
25424 return Ok(());
25425 }
25426
25427 while _next_ordinal_to_read < 25 {
25429 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25430 _next_ordinal_to_read += 1;
25431 next_offset += envelope_size;
25432 }
25433
25434 let next_out_of_line = decoder.next_out_of_line();
25435 let handles_before = decoder.remaining_handles();
25436 if let Some((inlined, num_bytes, num_handles)) =
25437 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25438 {
25439 let member_inline_size = <fidl_fuchsia_lowpan_device__common::BorderAgentCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25440 if inlined != (member_inline_size <= 4) {
25441 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25442 }
25443 let inner_offset;
25444 let mut inner_depth = depth.clone();
25445 if inlined {
25446 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25447 inner_offset = next_offset;
25448 } else {
25449 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25450 inner_depth.increment()?;
25451 }
25452 let val_ref = self.border_agent_counters.get_or_insert_with(|| {
25453 fidl::new_empty!(fidl_fuchsia_lowpan_device__common::BorderAgentCounters, D)
25454 });
25455 fidl::decode!(
25456 fidl_fuchsia_lowpan_device__common::BorderAgentCounters,
25457 D,
25458 val_ref,
25459 decoder,
25460 inner_offset,
25461 inner_depth
25462 )?;
25463 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25464 {
25465 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25466 }
25467 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25468 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25469 }
25470 }
25471
25472 next_offset += envelope_size;
25473 _next_ordinal_to_read += 1;
25474 if next_offset >= end_offset {
25475 return Ok(());
25476 }
25477
25478 while _next_ordinal_to_read < 26 {
25480 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25481 _next_ordinal_to_read += 1;
25482 next_offset += envelope_size;
25483 }
25484
25485 let next_out_of_line = decoder.next_out_of_line();
25486 let handles_before = decoder.remaining_handles();
25487 if let Some((inlined, num_bytes, num_handles)) =
25488 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25489 {
25490 let member_inline_size =
25491 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25492 if inlined != (member_inline_size <= 4) {
25493 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25494 }
25495 let inner_offset;
25496 let mut inner_depth = depth.clone();
25497 if inlined {
25498 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25499 inner_offset = next_offset;
25500 } else {
25501 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25502 inner_depth.increment()?;
25503 }
25504 let val_ref =
25505 self.multi_ail_detected.get_or_insert_with(|| fidl::new_empty!(bool, D));
25506 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
25507 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25508 {
25509 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25510 }
25511 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25512 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25513 }
25514 }
25515
25516 next_offset += envelope_size;
25517 _next_ordinal_to_read += 1;
25518 if next_offset >= end_offset {
25519 return Ok(());
25520 }
25521
25522 while _next_ordinal_to_read < 27 {
25524 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25525 _next_ordinal_to_read += 1;
25526 next_offset += envelope_size;
25527 }
25528
25529 let next_out_of_line = decoder.next_out_of_line();
25530 let handles_before = decoder.remaining_handles();
25531 if let Some((inlined, num_bytes, num_handles)) =
25532 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25533 {
25534 let member_inline_size =
25535 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25536 if inlined != (member_inline_size <= 4) {
25537 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25538 }
25539 let inner_offset;
25540 let mut inner_depth = depth.clone();
25541 if inlined {
25542 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25543 inner_offset = next_offset;
25544 } else {
25545 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25546 inner_depth.increment()?;
25547 }
25548 let val_ref = self.extended_pan_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
25549 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
25550 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25551 {
25552 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25553 }
25554 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25555 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25556 }
25557 }
25558
25559 next_offset += envelope_size;
25560 _next_ordinal_to_read += 1;
25561 if next_offset >= end_offset {
25562 return Ok(());
25563 }
25564
25565 while _next_ordinal_to_read < 28 {
25567 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25568 _next_ordinal_to_read += 1;
25569 next_offset += envelope_size;
25570 }
25571
25572 let next_out_of_line = decoder.next_out_of_line();
25573 let handles_before = decoder.remaining_handles();
25574 if let Some((inlined, num_bytes, num_handles)) =
25575 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25576 {
25577 let member_inline_size = <fidl::encoding::Vector<BorderRoutingPeer, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25578 if inlined != (member_inline_size <= 4) {
25579 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25580 }
25581 let inner_offset;
25582 let mut inner_depth = depth.clone();
25583 if inlined {
25584 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25585 inner_offset = next_offset;
25586 } else {
25587 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25588 inner_depth.increment()?;
25589 }
25590 let val_ref = self.border_routing_peers.get_or_insert_with(
25591 || fidl::new_empty!(fidl::encoding::Vector<BorderRoutingPeer, 64>, D),
25592 );
25593 fidl::decode!(fidl::encoding::Vector<BorderRoutingPeer, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
25594 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25595 {
25596 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25597 }
25598 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25599 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25600 }
25601 }
25602
25603 next_offset += envelope_size;
25604 _next_ordinal_to_read += 1;
25605 if next_offset >= end_offset {
25606 return Ok(());
25607 }
25608
25609 while _next_ordinal_to_read < 29 {
25611 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25612 _next_ordinal_to_read += 1;
25613 next_offset += envelope_size;
25614 }
25615
25616 let next_out_of_line = decoder.next_out_of_line();
25617 let handles_before = decoder.remaining_handles();
25618 if let Some((inlined, num_bytes, num_handles)) =
25619 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25620 {
25621 let member_inline_size = <fidl::encoding::Vector<BorderRoutingRouter, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25622 if inlined != (member_inline_size <= 4) {
25623 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25624 }
25625 let inner_offset;
25626 let mut inner_depth = depth.clone();
25627 if inlined {
25628 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25629 inner_offset = next_offset;
25630 } else {
25631 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25632 inner_depth.increment()?;
25633 }
25634 let val_ref = self.border_routing_routers.get_or_insert_with(
25635 || fidl::new_empty!(fidl::encoding::Vector<BorderRoutingRouter, 64>, D),
25636 );
25637 fidl::decode!(fidl::encoding::Vector<BorderRoutingRouter, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
25638 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25639 {
25640 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25641 }
25642 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25643 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25644 }
25645 }
25646
25647 next_offset += envelope_size;
25648 _next_ordinal_to_read += 1;
25649 if next_offset >= end_offset {
25650 return Ok(());
25651 }
25652
25653 while _next_ordinal_to_read < 30 {
25655 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25656 _next_ordinal_to_read += 1;
25657 next_offset += envelope_size;
25658 }
25659
25660 let next_out_of_line = decoder.next_out_of_line();
25661 let handles_before = decoder.remaining_handles();
25662 if let Some((inlined, num_bytes, num_handles)) =
25663 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25664 {
25665 let member_inline_size =
25666 <OperationalDataset as fidl::encoding::TypeMarker>::inline_size(
25667 decoder.context,
25668 );
25669 if inlined != (member_inline_size <= 4) {
25670 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25671 }
25672 let inner_offset;
25673 let mut inner_depth = depth.clone();
25674 if inlined {
25675 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25676 inner_offset = next_offset;
25677 } else {
25678 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25679 inner_depth.increment()?;
25680 }
25681 let val_ref = self
25682 .active_dataset
25683 .get_or_insert_with(|| fidl::new_empty!(OperationalDataset, D));
25684 fidl::decode!(OperationalDataset, D, val_ref, decoder, inner_offset, inner_depth)?;
25685 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25686 {
25687 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25688 }
25689 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25690 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25691 }
25692 }
25693
25694 next_offset += envelope_size;
25695 _next_ordinal_to_read += 1;
25696 if next_offset >= end_offset {
25697 return Ok(());
25698 }
25699
25700 while _next_ordinal_to_read < 31 {
25702 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25703 _next_ordinal_to_read += 1;
25704 next_offset += envelope_size;
25705 }
25706
25707 let next_out_of_line = decoder.next_out_of_line();
25708 let handles_before = decoder.remaining_handles();
25709 if let Some((inlined, num_bytes, num_handles)) =
25710 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25711 {
25712 let member_inline_size = <fidl::encoding::Vector<MultiRadioNeighborInfo, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25713 if inlined != (member_inline_size <= 4) {
25714 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25715 }
25716 let inner_offset;
25717 let mut inner_depth = depth.clone();
25718 if inlined {
25719 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25720 inner_offset = next_offset;
25721 } else {
25722 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25723 inner_depth.increment()?;
25724 }
25725 let val_ref = self.multiradio_neighbor_info.get_or_insert_with(
25726 || fidl::new_empty!(fidl::encoding::Vector<MultiRadioNeighborInfo, 64>, D),
25727 );
25728 fidl::decode!(fidl::encoding::Vector<MultiRadioNeighborInfo, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
25729 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25730 {
25731 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25732 }
25733 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25734 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25735 }
25736 }
25737
25738 next_offset += envelope_size;
25739 _next_ordinal_to_read += 1;
25740 if next_offset >= end_offset {
25741 return Ok(());
25742 }
25743
25744 while _next_ordinal_to_read < 32 {
25746 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25747 _next_ordinal_to_read += 1;
25748 next_offset += envelope_size;
25749 }
25750
25751 let next_out_of_line = decoder.next_out_of_line();
25752 let handles_before = decoder.remaining_handles();
25753 if let Some((inlined, num_bytes, num_handles)) =
25754 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25755 {
25756 let member_inline_size = <fidl::encoding::Vector<RouterInfo, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25757 if inlined != (member_inline_size <= 4) {
25758 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25759 }
25760 let inner_offset;
25761 let mut inner_depth = depth.clone();
25762 if inlined {
25763 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25764 inner_offset = next_offset;
25765 } else {
25766 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25767 inner_depth.increment()?;
25768 }
25769 let val_ref = self.router_info.get_or_insert_with(
25770 || fidl::new_empty!(fidl::encoding::Vector<RouterInfo, 64>, D),
25771 );
25772 fidl::decode!(fidl::encoding::Vector<RouterInfo, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
25773 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25774 {
25775 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25776 }
25777 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25778 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25779 }
25780 }
25781
25782 next_offset += envelope_size;
25783 _next_ordinal_to_read += 1;
25784 if next_offset >= end_offset {
25785 return Ok(());
25786 }
25787
25788 while _next_ordinal_to_read < 33 {
25790 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25791 _next_ordinal_to_read += 1;
25792 next_offset += envelope_size;
25793 }
25794
25795 let next_out_of_line = decoder.next_out_of_line();
25796 let handles_before = decoder.remaining_handles();
25797 if let Some((inlined, num_bytes, num_handles)) =
25798 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25799 {
25800 let member_inline_size =
25801 <NetworkData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25802 if inlined != (member_inline_size <= 4) {
25803 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25804 }
25805 let inner_offset;
25806 let mut inner_depth = depth.clone();
25807 if inlined {
25808 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25809 inner_offset = next_offset;
25810 } else {
25811 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25812 inner_depth.increment()?;
25813 }
25814 let val_ref =
25815 self.network_data.get_or_insert_with(|| fidl::new_empty!(NetworkData, D));
25816 fidl::decode!(NetworkData, D, val_ref, decoder, inner_offset, inner_depth)?;
25817 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25818 {
25819 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25820 }
25821 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25822 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25823 }
25824 }
25825
25826 next_offset += envelope_size;
25827
25828 while next_offset < end_offset {
25830 _next_ordinal_to_read += 1;
25831 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25832 next_offset += envelope_size;
25833 }
25834
25835 Ok(())
25836 }
25837 }
25838
25839 impl TrelCounters {
25840 #[inline(always)]
25841 fn max_ordinal_present(&self) -> u64 {
25842 if let Some(_) = self.tx_packets {
25843 return 5;
25844 }
25845 if let Some(_) = self.tx_failure {
25846 return 4;
25847 }
25848 if let Some(_) = self.tx_bytes {
25849 return 3;
25850 }
25851 if let Some(_) = self.rx_packets {
25852 return 2;
25853 }
25854 if let Some(_) = self.rx_bytes {
25855 return 1;
25856 }
25857 0
25858 }
25859 }
25860
25861 impl fidl::encoding::ValueTypeMarker for TrelCounters {
25862 type Borrowed<'a> = &'a Self;
25863 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
25864 value
25865 }
25866 }
25867
25868 unsafe impl fidl::encoding::TypeMarker for TrelCounters {
25869 type Owned = Self;
25870
25871 #[inline(always)]
25872 fn inline_align(_context: fidl::encoding::Context) -> usize {
25873 8
25874 }
25875
25876 #[inline(always)]
25877 fn inline_size(_context: fidl::encoding::Context) -> usize {
25878 16
25879 }
25880 }
25881
25882 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TrelCounters, D>
25883 for &TrelCounters
25884 {
25885 unsafe fn encode(
25886 self,
25887 encoder: &mut fidl::encoding::Encoder<'_, D>,
25888 offset: usize,
25889 mut depth: fidl::encoding::Depth,
25890 ) -> fidl::Result<()> {
25891 encoder.debug_check_bounds::<TrelCounters>(offset);
25892 let max_ordinal: u64 = self.max_ordinal_present();
25894 encoder.write_num(max_ordinal, offset);
25895 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
25896 if max_ordinal == 0 {
25898 return Ok(());
25899 }
25900 depth.increment()?;
25901 let envelope_size = 8;
25902 let bytes_len = max_ordinal as usize * envelope_size;
25903 #[allow(unused_variables)]
25904 let offset = encoder.out_of_line_offset(bytes_len);
25905 let mut _prev_end_offset: usize = 0;
25906 if 1 > max_ordinal {
25907 return Ok(());
25908 }
25909
25910 let cur_offset: usize = (1 - 1) * envelope_size;
25913
25914 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25916
25917 fidl::encoding::encode_in_envelope_optional::<u64, D>(
25922 self.rx_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
25923 encoder,
25924 offset + cur_offset,
25925 depth,
25926 )?;
25927
25928 _prev_end_offset = cur_offset + envelope_size;
25929 if 2 > max_ordinal {
25930 return Ok(());
25931 }
25932
25933 let cur_offset: usize = (2 - 1) * envelope_size;
25936
25937 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25939
25940 fidl::encoding::encode_in_envelope_optional::<u64, D>(
25945 self.rx_packets.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
25946 encoder,
25947 offset + cur_offset,
25948 depth,
25949 )?;
25950
25951 _prev_end_offset = cur_offset + envelope_size;
25952 if 3 > max_ordinal {
25953 return Ok(());
25954 }
25955
25956 let cur_offset: usize = (3 - 1) * envelope_size;
25959
25960 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25962
25963 fidl::encoding::encode_in_envelope_optional::<u64, D>(
25968 self.tx_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
25969 encoder,
25970 offset + cur_offset,
25971 depth,
25972 )?;
25973
25974 _prev_end_offset = cur_offset + envelope_size;
25975 if 4 > max_ordinal {
25976 return Ok(());
25977 }
25978
25979 let cur_offset: usize = (4 - 1) * envelope_size;
25982
25983 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25985
25986 fidl::encoding::encode_in_envelope_optional::<u64, D>(
25991 self.tx_failure.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
25992 encoder,
25993 offset + cur_offset,
25994 depth,
25995 )?;
25996
25997 _prev_end_offset = cur_offset + envelope_size;
25998 if 5 > max_ordinal {
25999 return Ok(());
26000 }
26001
26002 let cur_offset: usize = (5 - 1) * envelope_size;
26005
26006 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26008
26009 fidl::encoding::encode_in_envelope_optional::<u64, D>(
26014 self.tx_packets.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
26015 encoder,
26016 offset + cur_offset,
26017 depth,
26018 )?;
26019
26020 _prev_end_offset = cur_offset + envelope_size;
26021
26022 Ok(())
26023 }
26024 }
26025
26026 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TrelCounters {
26027 #[inline(always)]
26028 fn new_empty() -> Self {
26029 Self::default()
26030 }
26031
26032 unsafe fn decode(
26033 &mut self,
26034 decoder: &mut fidl::encoding::Decoder<'_, D>,
26035 offset: usize,
26036 mut depth: fidl::encoding::Depth,
26037 ) -> fidl::Result<()> {
26038 decoder.debug_check_bounds::<Self>(offset);
26039 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
26040 None => return Err(fidl::Error::NotNullable),
26041 Some(len) => len,
26042 };
26043 if len == 0 {
26045 return Ok(());
26046 };
26047 depth.increment()?;
26048 let envelope_size = 8;
26049 let bytes_len = len * envelope_size;
26050 let offset = decoder.out_of_line_offset(bytes_len)?;
26051 let mut _next_ordinal_to_read = 0;
26053 let mut next_offset = offset;
26054 let end_offset = offset + bytes_len;
26055 _next_ordinal_to_read += 1;
26056 if next_offset >= end_offset {
26057 return Ok(());
26058 }
26059
26060 while _next_ordinal_to_read < 1 {
26062 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26063 _next_ordinal_to_read += 1;
26064 next_offset += envelope_size;
26065 }
26066
26067 let next_out_of_line = decoder.next_out_of_line();
26068 let handles_before = decoder.remaining_handles();
26069 if let Some((inlined, num_bytes, num_handles)) =
26070 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26071 {
26072 let member_inline_size =
26073 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26074 if inlined != (member_inline_size <= 4) {
26075 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26076 }
26077 let inner_offset;
26078 let mut inner_depth = depth.clone();
26079 if inlined {
26080 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26081 inner_offset = next_offset;
26082 } else {
26083 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26084 inner_depth.increment()?;
26085 }
26086 let val_ref = self.rx_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
26087 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
26088 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26089 {
26090 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26091 }
26092 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26093 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26094 }
26095 }
26096
26097 next_offset += envelope_size;
26098 _next_ordinal_to_read += 1;
26099 if next_offset >= end_offset {
26100 return Ok(());
26101 }
26102
26103 while _next_ordinal_to_read < 2 {
26105 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26106 _next_ordinal_to_read += 1;
26107 next_offset += envelope_size;
26108 }
26109
26110 let next_out_of_line = decoder.next_out_of_line();
26111 let handles_before = decoder.remaining_handles();
26112 if let Some((inlined, num_bytes, num_handles)) =
26113 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26114 {
26115 let member_inline_size =
26116 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26117 if inlined != (member_inline_size <= 4) {
26118 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26119 }
26120 let inner_offset;
26121 let mut inner_depth = depth.clone();
26122 if inlined {
26123 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26124 inner_offset = next_offset;
26125 } else {
26126 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26127 inner_depth.increment()?;
26128 }
26129 let val_ref = self.rx_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
26130 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
26131 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26132 {
26133 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26134 }
26135 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26136 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26137 }
26138 }
26139
26140 next_offset += envelope_size;
26141 _next_ordinal_to_read += 1;
26142 if next_offset >= end_offset {
26143 return Ok(());
26144 }
26145
26146 while _next_ordinal_to_read < 3 {
26148 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26149 _next_ordinal_to_read += 1;
26150 next_offset += envelope_size;
26151 }
26152
26153 let next_out_of_line = decoder.next_out_of_line();
26154 let handles_before = decoder.remaining_handles();
26155 if let Some((inlined, num_bytes, num_handles)) =
26156 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26157 {
26158 let member_inline_size =
26159 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26160 if inlined != (member_inline_size <= 4) {
26161 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26162 }
26163 let inner_offset;
26164 let mut inner_depth = depth.clone();
26165 if inlined {
26166 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26167 inner_offset = next_offset;
26168 } else {
26169 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26170 inner_depth.increment()?;
26171 }
26172 let val_ref = self.tx_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
26173 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
26174 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26175 {
26176 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26177 }
26178 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26179 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26180 }
26181 }
26182
26183 next_offset += envelope_size;
26184 _next_ordinal_to_read += 1;
26185 if next_offset >= end_offset {
26186 return Ok(());
26187 }
26188
26189 while _next_ordinal_to_read < 4 {
26191 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26192 _next_ordinal_to_read += 1;
26193 next_offset += envelope_size;
26194 }
26195
26196 let next_out_of_line = decoder.next_out_of_line();
26197 let handles_before = decoder.remaining_handles();
26198 if let Some((inlined, num_bytes, num_handles)) =
26199 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26200 {
26201 let member_inline_size =
26202 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26203 if inlined != (member_inline_size <= 4) {
26204 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26205 }
26206 let inner_offset;
26207 let mut inner_depth = depth.clone();
26208 if inlined {
26209 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26210 inner_offset = next_offset;
26211 } else {
26212 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26213 inner_depth.increment()?;
26214 }
26215 let val_ref = self.tx_failure.get_or_insert_with(|| fidl::new_empty!(u64, D));
26216 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
26217 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26218 {
26219 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26220 }
26221 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26222 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26223 }
26224 }
26225
26226 next_offset += envelope_size;
26227 _next_ordinal_to_read += 1;
26228 if next_offset >= end_offset {
26229 return Ok(());
26230 }
26231
26232 while _next_ordinal_to_read < 5 {
26234 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26235 _next_ordinal_to_read += 1;
26236 next_offset += envelope_size;
26237 }
26238
26239 let next_out_of_line = decoder.next_out_of_line();
26240 let handles_before = decoder.remaining_handles();
26241 if let Some((inlined, num_bytes, num_handles)) =
26242 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26243 {
26244 let member_inline_size =
26245 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26246 if inlined != (member_inline_size <= 4) {
26247 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26248 }
26249 let inner_offset;
26250 let mut inner_depth = depth.clone();
26251 if inlined {
26252 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26253 inner_offset = next_offset;
26254 } else {
26255 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26256 inner_depth.increment()?;
26257 }
26258 let val_ref = self.tx_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
26259 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
26260 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26261 {
26262 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26263 }
26264 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26265 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26266 }
26267 }
26268
26269 next_offset += envelope_size;
26270
26271 while next_offset < end_offset {
26273 _next_ordinal_to_read += 1;
26274 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26275 next_offset += envelope_size;
26276 }
26277
26278 Ok(())
26279 }
26280 }
26281
26282 impl TrelPeersInfo {
26283 #[inline(always)]
26284 fn max_ordinal_present(&self) -> u64 {
26285 if let Some(_) = self.num_trel_peers {
26286 return 1;
26287 }
26288 0
26289 }
26290 }
26291
26292 impl fidl::encoding::ValueTypeMarker for TrelPeersInfo {
26293 type Borrowed<'a> = &'a Self;
26294 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
26295 value
26296 }
26297 }
26298
26299 unsafe impl fidl::encoding::TypeMarker for TrelPeersInfo {
26300 type Owned = Self;
26301
26302 #[inline(always)]
26303 fn inline_align(_context: fidl::encoding::Context) -> usize {
26304 8
26305 }
26306
26307 #[inline(always)]
26308 fn inline_size(_context: fidl::encoding::Context) -> usize {
26309 16
26310 }
26311 }
26312
26313 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TrelPeersInfo, D>
26314 for &TrelPeersInfo
26315 {
26316 unsafe fn encode(
26317 self,
26318 encoder: &mut fidl::encoding::Encoder<'_, D>,
26319 offset: usize,
26320 mut depth: fidl::encoding::Depth,
26321 ) -> fidl::Result<()> {
26322 encoder.debug_check_bounds::<TrelPeersInfo>(offset);
26323 let max_ordinal: u64 = self.max_ordinal_present();
26325 encoder.write_num(max_ordinal, offset);
26326 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
26327 if max_ordinal == 0 {
26329 return Ok(());
26330 }
26331 depth.increment()?;
26332 let envelope_size = 8;
26333 let bytes_len = max_ordinal as usize * envelope_size;
26334 #[allow(unused_variables)]
26335 let offset = encoder.out_of_line_offset(bytes_len);
26336 let mut _prev_end_offset: usize = 0;
26337 if 1 > max_ordinal {
26338 return Ok(());
26339 }
26340
26341 let cur_offset: usize = (1 - 1) * envelope_size;
26344
26345 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26347
26348 fidl::encoding::encode_in_envelope_optional::<u16, D>(
26353 self.num_trel_peers.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
26354 encoder,
26355 offset + cur_offset,
26356 depth,
26357 )?;
26358
26359 _prev_end_offset = cur_offset + envelope_size;
26360
26361 Ok(())
26362 }
26363 }
26364
26365 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TrelPeersInfo {
26366 #[inline(always)]
26367 fn new_empty() -> Self {
26368 Self::default()
26369 }
26370
26371 unsafe fn decode(
26372 &mut self,
26373 decoder: &mut fidl::encoding::Decoder<'_, D>,
26374 offset: usize,
26375 mut depth: fidl::encoding::Depth,
26376 ) -> fidl::Result<()> {
26377 decoder.debug_check_bounds::<Self>(offset);
26378 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
26379 None => return Err(fidl::Error::NotNullable),
26380 Some(len) => len,
26381 };
26382 if len == 0 {
26384 return Ok(());
26385 };
26386 depth.increment()?;
26387 let envelope_size = 8;
26388 let bytes_len = len * envelope_size;
26389 let offset = decoder.out_of_line_offset(bytes_len)?;
26390 let mut _next_ordinal_to_read = 0;
26392 let mut next_offset = offset;
26393 let end_offset = offset + bytes_len;
26394 _next_ordinal_to_read += 1;
26395 if next_offset >= end_offset {
26396 return Ok(());
26397 }
26398
26399 while _next_ordinal_to_read < 1 {
26401 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26402 _next_ordinal_to_read += 1;
26403 next_offset += envelope_size;
26404 }
26405
26406 let next_out_of_line = decoder.next_out_of_line();
26407 let handles_before = decoder.remaining_handles();
26408 if let Some((inlined, num_bytes, num_handles)) =
26409 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26410 {
26411 let member_inline_size =
26412 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26413 if inlined != (member_inline_size <= 4) {
26414 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26415 }
26416 let inner_offset;
26417 let mut inner_depth = depth.clone();
26418 if inlined {
26419 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26420 inner_offset = next_offset;
26421 } else {
26422 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26423 inner_depth.increment()?;
26424 }
26425 let val_ref = self.num_trel_peers.get_or_insert_with(|| fidl::new_empty!(u16, D));
26426 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
26427 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26428 {
26429 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26430 }
26431 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26432 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26433 }
26434 }
26435
26436 next_offset += envelope_size;
26437
26438 while next_offset < end_offset {
26440 _next_ordinal_to_read += 1;
26441 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26442 next_offset += envelope_size;
26443 }
26444
26445 Ok(())
26446 }
26447 }
26448
26449 impl UpstreamDnsCounters {
26450 #[inline(always)]
26451 fn max_ordinal_present(&self) -> u64 {
26452 if let Some(_) = self.failures {
26453 return 3;
26454 }
26455 if let Some(_) = self.responses {
26456 return 2;
26457 }
26458 if let Some(_) = self.queries {
26459 return 1;
26460 }
26461 0
26462 }
26463 }
26464
26465 impl fidl::encoding::ValueTypeMarker for UpstreamDnsCounters {
26466 type Borrowed<'a> = &'a Self;
26467 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
26468 value
26469 }
26470 }
26471
26472 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsCounters {
26473 type Owned = Self;
26474
26475 #[inline(always)]
26476 fn inline_align(_context: fidl::encoding::Context) -> usize {
26477 8
26478 }
26479
26480 #[inline(always)]
26481 fn inline_size(_context: fidl::encoding::Context) -> usize {
26482 16
26483 }
26484 }
26485
26486 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UpstreamDnsCounters, D>
26487 for &UpstreamDnsCounters
26488 {
26489 unsafe fn encode(
26490 self,
26491 encoder: &mut fidl::encoding::Encoder<'_, D>,
26492 offset: usize,
26493 mut depth: fidl::encoding::Depth,
26494 ) -> fidl::Result<()> {
26495 encoder.debug_check_bounds::<UpstreamDnsCounters>(offset);
26496 let max_ordinal: u64 = self.max_ordinal_present();
26498 encoder.write_num(max_ordinal, offset);
26499 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
26500 if max_ordinal == 0 {
26502 return Ok(());
26503 }
26504 depth.increment()?;
26505 let envelope_size = 8;
26506 let bytes_len = max_ordinal as usize * envelope_size;
26507 #[allow(unused_variables)]
26508 let offset = encoder.out_of_line_offset(bytes_len);
26509 let mut _prev_end_offset: usize = 0;
26510 if 1 > max_ordinal {
26511 return Ok(());
26512 }
26513
26514 let cur_offset: usize = (1 - 1) * envelope_size;
26517
26518 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26520
26521 fidl::encoding::encode_in_envelope_optional::<u32, D>(
26526 self.queries.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
26527 encoder,
26528 offset + cur_offset,
26529 depth,
26530 )?;
26531
26532 _prev_end_offset = cur_offset + envelope_size;
26533 if 2 > max_ordinal {
26534 return Ok(());
26535 }
26536
26537 let cur_offset: usize = (2 - 1) * envelope_size;
26540
26541 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26543
26544 fidl::encoding::encode_in_envelope_optional::<u32, D>(
26549 self.responses.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
26550 encoder,
26551 offset + cur_offset,
26552 depth,
26553 )?;
26554
26555 _prev_end_offset = cur_offset + envelope_size;
26556 if 3 > max_ordinal {
26557 return Ok(());
26558 }
26559
26560 let cur_offset: usize = (3 - 1) * envelope_size;
26563
26564 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26566
26567 fidl::encoding::encode_in_envelope_optional::<u32, D>(
26572 self.failures.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
26573 encoder,
26574 offset + cur_offset,
26575 depth,
26576 )?;
26577
26578 _prev_end_offset = cur_offset + envelope_size;
26579
26580 Ok(())
26581 }
26582 }
26583
26584 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsCounters {
26585 #[inline(always)]
26586 fn new_empty() -> Self {
26587 Self::default()
26588 }
26589
26590 unsafe fn decode(
26591 &mut self,
26592 decoder: &mut fidl::encoding::Decoder<'_, D>,
26593 offset: usize,
26594 mut depth: fidl::encoding::Depth,
26595 ) -> fidl::Result<()> {
26596 decoder.debug_check_bounds::<Self>(offset);
26597 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
26598 None => return Err(fidl::Error::NotNullable),
26599 Some(len) => len,
26600 };
26601 if len == 0 {
26603 return Ok(());
26604 };
26605 depth.increment()?;
26606 let envelope_size = 8;
26607 let bytes_len = len * envelope_size;
26608 let offset = decoder.out_of_line_offset(bytes_len)?;
26609 let mut _next_ordinal_to_read = 0;
26611 let mut next_offset = offset;
26612 let end_offset = offset + bytes_len;
26613 _next_ordinal_to_read += 1;
26614 if next_offset >= end_offset {
26615 return Ok(());
26616 }
26617
26618 while _next_ordinal_to_read < 1 {
26620 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26621 _next_ordinal_to_read += 1;
26622 next_offset += envelope_size;
26623 }
26624
26625 let next_out_of_line = decoder.next_out_of_line();
26626 let handles_before = decoder.remaining_handles();
26627 if let Some((inlined, num_bytes, num_handles)) =
26628 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26629 {
26630 let member_inline_size =
26631 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26632 if inlined != (member_inline_size <= 4) {
26633 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26634 }
26635 let inner_offset;
26636 let mut inner_depth = depth.clone();
26637 if inlined {
26638 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26639 inner_offset = next_offset;
26640 } else {
26641 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26642 inner_depth.increment()?;
26643 }
26644 let val_ref = self.queries.get_or_insert_with(|| fidl::new_empty!(u32, D));
26645 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
26646 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26647 {
26648 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26649 }
26650 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26651 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26652 }
26653 }
26654
26655 next_offset += envelope_size;
26656 _next_ordinal_to_read += 1;
26657 if next_offset >= end_offset {
26658 return Ok(());
26659 }
26660
26661 while _next_ordinal_to_read < 2 {
26663 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26664 _next_ordinal_to_read += 1;
26665 next_offset += envelope_size;
26666 }
26667
26668 let next_out_of_line = decoder.next_out_of_line();
26669 let handles_before = decoder.remaining_handles();
26670 if let Some((inlined, num_bytes, num_handles)) =
26671 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26672 {
26673 let member_inline_size =
26674 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26675 if inlined != (member_inline_size <= 4) {
26676 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26677 }
26678 let inner_offset;
26679 let mut inner_depth = depth.clone();
26680 if inlined {
26681 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26682 inner_offset = next_offset;
26683 } else {
26684 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26685 inner_depth.increment()?;
26686 }
26687 let val_ref = self.responses.get_or_insert_with(|| fidl::new_empty!(u32, D));
26688 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
26689 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26690 {
26691 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26692 }
26693 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26694 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26695 }
26696 }
26697
26698 next_offset += envelope_size;
26699 _next_ordinal_to_read += 1;
26700 if next_offset >= end_offset {
26701 return Ok(());
26702 }
26703
26704 while _next_ordinal_to_read < 3 {
26706 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26707 _next_ordinal_to_read += 1;
26708 next_offset += envelope_size;
26709 }
26710
26711 let next_out_of_line = decoder.next_out_of_line();
26712 let handles_before = decoder.remaining_handles();
26713 if let Some((inlined, num_bytes, num_handles)) =
26714 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26715 {
26716 let member_inline_size =
26717 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26718 if inlined != (member_inline_size <= 4) {
26719 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26720 }
26721 let inner_offset;
26722 let mut inner_depth = depth.clone();
26723 if inlined {
26724 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26725 inner_offset = next_offset;
26726 } else {
26727 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26728 inner_depth.increment()?;
26729 }
26730 let val_ref = self.failures.get_or_insert_with(|| fidl::new_empty!(u32, D));
26731 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
26732 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26733 {
26734 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26735 }
26736 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26737 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26738 }
26739 }
26740
26741 next_offset += envelope_size;
26742
26743 while next_offset < end_offset {
26745 _next_ordinal_to_read += 1;
26746 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26747 next_offset += envelope_size;
26748 }
26749
26750 Ok(())
26751 }
26752 }
26753
26754 impl UpstreamDnsInfo {
26755 #[inline(always)]
26756 fn max_ordinal_present(&self) -> u64 {
26757 if let Some(_) = self.upstream_dns_query_state {
26758 return 1;
26759 }
26760 0
26761 }
26762 }
26763
26764 impl fidl::encoding::ValueTypeMarker for UpstreamDnsInfo {
26765 type Borrowed<'a> = &'a Self;
26766 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
26767 value
26768 }
26769 }
26770
26771 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsInfo {
26772 type Owned = Self;
26773
26774 #[inline(always)]
26775 fn inline_align(_context: fidl::encoding::Context) -> usize {
26776 8
26777 }
26778
26779 #[inline(always)]
26780 fn inline_size(_context: fidl::encoding::Context) -> usize {
26781 16
26782 }
26783 }
26784
26785 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UpstreamDnsInfo, D>
26786 for &UpstreamDnsInfo
26787 {
26788 unsafe fn encode(
26789 self,
26790 encoder: &mut fidl::encoding::Encoder<'_, D>,
26791 offset: usize,
26792 mut depth: fidl::encoding::Depth,
26793 ) -> fidl::Result<()> {
26794 encoder.debug_check_bounds::<UpstreamDnsInfo>(offset);
26795 let max_ordinal: u64 = self.max_ordinal_present();
26797 encoder.write_num(max_ordinal, offset);
26798 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
26799 if max_ordinal == 0 {
26801 return Ok(());
26802 }
26803 depth.increment()?;
26804 let envelope_size = 8;
26805 let bytes_len = max_ordinal as usize * envelope_size;
26806 #[allow(unused_variables)]
26807 let offset = encoder.out_of_line_offset(bytes_len);
26808 let mut _prev_end_offset: usize = 0;
26809 if 1 > max_ordinal {
26810 return Ok(());
26811 }
26812
26813 let cur_offset: usize = (1 - 1) * envelope_size;
26816
26817 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26819
26820 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsQueryState, D>(
26825 self.upstream_dns_query_state
26826 .as_ref()
26827 .map(<UpstreamDnsQueryState as fidl::encoding::ValueTypeMarker>::borrow),
26828 encoder,
26829 offset + cur_offset,
26830 depth,
26831 )?;
26832
26833 _prev_end_offset = cur_offset + envelope_size;
26834
26835 Ok(())
26836 }
26837 }
26838
26839 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsInfo {
26840 #[inline(always)]
26841 fn new_empty() -> Self {
26842 Self::default()
26843 }
26844
26845 unsafe fn decode(
26846 &mut self,
26847 decoder: &mut fidl::encoding::Decoder<'_, D>,
26848 offset: usize,
26849 mut depth: fidl::encoding::Depth,
26850 ) -> fidl::Result<()> {
26851 decoder.debug_check_bounds::<Self>(offset);
26852 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
26853 None => return Err(fidl::Error::NotNullable),
26854 Some(len) => len,
26855 };
26856 if len == 0 {
26858 return Ok(());
26859 };
26860 depth.increment()?;
26861 let envelope_size = 8;
26862 let bytes_len = len * envelope_size;
26863 let offset = decoder.out_of_line_offset(bytes_len)?;
26864 let mut _next_ordinal_to_read = 0;
26866 let mut next_offset = offset;
26867 let end_offset = offset + bytes_len;
26868 _next_ordinal_to_read += 1;
26869 if next_offset >= end_offset {
26870 return Ok(());
26871 }
26872
26873 while _next_ordinal_to_read < 1 {
26875 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26876 _next_ordinal_to_read += 1;
26877 next_offset += envelope_size;
26878 }
26879
26880 let next_out_of_line = decoder.next_out_of_line();
26881 let handles_before = decoder.remaining_handles();
26882 if let Some((inlined, num_bytes, num_handles)) =
26883 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26884 {
26885 let member_inline_size =
26886 <UpstreamDnsQueryState as fidl::encoding::TypeMarker>::inline_size(
26887 decoder.context,
26888 );
26889 if inlined != (member_inline_size <= 4) {
26890 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26891 }
26892 let inner_offset;
26893 let mut inner_depth = depth.clone();
26894 if inlined {
26895 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26896 inner_offset = next_offset;
26897 } else {
26898 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26899 inner_depth.increment()?;
26900 }
26901 let val_ref = self
26902 .upstream_dns_query_state
26903 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsQueryState, D));
26904 fidl::decode!(
26905 UpstreamDnsQueryState,
26906 D,
26907 val_ref,
26908 decoder,
26909 inner_offset,
26910 inner_depth
26911 )?;
26912 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26913 {
26914 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26915 }
26916 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26917 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26918 }
26919 }
26920
26921 next_offset += envelope_size;
26922
26923 while next_offset < end_offset {
26925 _next_ordinal_to_read += 1;
26926 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26927 next_offset += envelope_size;
26928 }
26929
26930 Ok(())
26931 }
26932 }
26933
26934 impl fidl::encoding::ValueTypeMarker for JoinParams {
26935 type Borrowed<'a> = &'a Self;
26936 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
26937 value
26938 }
26939 }
26940
26941 unsafe impl fidl::encoding::TypeMarker for JoinParams {
26942 type Owned = Self;
26943
26944 #[inline(always)]
26945 fn inline_align(_context: fidl::encoding::Context) -> usize {
26946 8
26947 }
26948
26949 #[inline(always)]
26950 fn inline_size(_context: fidl::encoding::Context) -> usize {
26951 16
26952 }
26953 }
26954
26955 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<JoinParams, D>
26956 for &JoinParams
26957 {
26958 #[inline]
26959 unsafe fn encode(
26960 self,
26961 encoder: &mut fidl::encoding::Encoder<'_, D>,
26962 offset: usize,
26963 _depth: fidl::encoding::Depth,
26964 ) -> fidl::Result<()> {
26965 encoder.debug_check_bounds::<JoinParams>(offset);
26966 encoder.write_num::<u64>(self.ordinal(), offset);
26967 match self {
26968 JoinParams::ProvisioningParameter(ref val) => {
26969 fidl::encoding::encode_in_envelope::<fidl_fuchsia_lowpan_device__common::ProvisioningParams, D>(
26970 <fidl_fuchsia_lowpan_device__common::ProvisioningParams as fidl::encoding::ValueTypeMarker>::borrow(val),
26971 encoder, offset + 8, _depth
26972 )
26973 }
26974 JoinParams::JoinerParameter(ref val) => {
26975 fidl::encoding::encode_in_envelope::<JoinerCommissioningParams, D>(
26976 <JoinerCommissioningParams as fidl::encoding::ValueTypeMarker>::borrow(val),
26977 encoder, offset + 8, _depth
26978 )
26979 }
26980 JoinParams::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
26981 }
26982 }
26983 }
26984
26985 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for JoinParams {
26986 #[inline(always)]
26987 fn new_empty() -> Self {
26988 Self::__SourceBreaking { unknown_ordinal: 0 }
26989 }
26990
26991 #[inline]
26992 unsafe fn decode(
26993 &mut self,
26994 decoder: &mut fidl::encoding::Decoder<'_, D>,
26995 offset: usize,
26996 mut depth: fidl::encoding::Depth,
26997 ) -> fidl::Result<()> {
26998 decoder.debug_check_bounds::<Self>(offset);
26999 #[allow(unused_variables)]
27000 let next_out_of_line = decoder.next_out_of_line();
27001 let handles_before = decoder.remaining_handles();
27002 let (ordinal, inlined, num_bytes, num_handles) =
27003 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
27004
27005 let member_inline_size = match ordinal {
27006 1 => <fidl_fuchsia_lowpan_device__common::ProvisioningParams as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27007 2 => <JoinerCommissioningParams as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27008 0 => return Err(fidl::Error::UnknownUnionTag),
27009 _ => num_bytes as usize,
27010 };
27011
27012 if inlined != (member_inline_size <= 4) {
27013 return Err(fidl::Error::InvalidInlineBitInEnvelope);
27014 }
27015 let _inner_offset;
27016 if inlined {
27017 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
27018 _inner_offset = offset + 8;
27019 } else {
27020 depth.increment()?;
27021 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27022 }
27023 match ordinal {
27024 1 => {
27025 #[allow(irrefutable_let_patterns)]
27026 if let JoinParams::ProvisioningParameter(_) = self {
27027 } else {
27029 *self = JoinParams::ProvisioningParameter(fidl::new_empty!(
27031 fidl_fuchsia_lowpan_device__common::ProvisioningParams,
27032 D
27033 ));
27034 }
27035 #[allow(irrefutable_let_patterns)]
27036 if let JoinParams::ProvisioningParameter(ref mut val) = self {
27037 fidl::decode!(
27038 fidl_fuchsia_lowpan_device__common::ProvisioningParams,
27039 D,
27040 val,
27041 decoder,
27042 _inner_offset,
27043 depth
27044 )?;
27045 } else {
27046 unreachable!()
27047 }
27048 }
27049 2 => {
27050 #[allow(irrefutable_let_patterns)]
27051 if let JoinParams::JoinerParameter(_) = self {
27052 } else {
27054 *self = JoinParams::JoinerParameter(fidl::new_empty!(
27056 JoinerCommissioningParams,
27057 D
27058 ));
27059 }
27060 #[allow(irrefutable_let_patterns)]
27061 if let JoinParams::JoinerParameter(ref mut val) = self {
27062 fidl::decode!(
27063 JoinerCommissioningParams,
27064 D,
27065 val,
27066 decoder,
27067 _inner_offset,
27068 depth
27069 )?;
27070 } else {
27071 unreachable!()
27072 }
27073 }
27074 #[allow(deprecated)]
27075 ordinal => {
27076 for _ in 0..num_handles {
27077 decoder.drop_next_handle()?;
27078 }
27079 *self = JoinParams::__SourceBreaking { unknown_ordinal: ordinal };
27080 }
27081 }
27082 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
27083 return Err(fidl::Error::InvalidNumBytesInEnvelope);
27084 }
27085 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27086 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27087 }
27088 Ok(())
27089 }
27090 }
27091
27092 impl fidl::encoding::ValueTypeMarker for ProvisioningProgress {
27093 type Borrowed<'a> = &'a Self;
27094 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
27095 value
27096 }
27097 }
27098
27099 unsafe impl fidl::encoding::TypeMarker for ProvisioningProgress {
27100 type Owned = Self;
27101
27102 #[inline(always)]
27103 fn inline_align(_context: fidl::encoding::Context) -> usize {
27104 8
27105 }
27106
27107 #[inline(always)]
27108 fn inline_size(_context: fidl::encoding::Context) -> usize {
27109 16
27110 }
27111 }
27112
27113 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProvisioningProgress, D>
27114 for &ProvisioningProgress
27115 {
27116 #[inline]
27117 unsafe fn encode(
27118 self,
27119 encoder: &mut fidl::encoding::Encoder<'_, D>,
27120 offset: usize,
27121 _depth: fidl::encoding::Depth,
27122 ) -> fidl::Result<()> {
27123 encoder.debug_check_bounds::<ProvisioningProgress>(offset);
27124 encoder.write_num::<u64>(self.ordinal(), offset);
27125 match self {
27126 ProvisioningProgress::Progress(ref val) => {
27127 fidl::encoding::encode_in_envelope::<f32, D>(
27128 <f32 as fidl::encoding::ValueTypeMarker>::borrow(val),
27129 encoder, offset + 8, _depth
27130 )
27131 }
27132 ProvisioningProgress::Identity(ref val) => {
27133 fidl::encoding::encode_in_envelope::<fidl_fuchsia_lowpan_device__common::Identity, D>(
27134 <fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::ValueTypeMarker>::borrow(val),
27135 encoder, offset + 8, _depth
27136 )
27137 }
27138 ProvisioningProgress::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
27139 }
27140 }
27141 }
27142
27143 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProvisioningProgress {
27144 #[inline(always)]
27145 fn new_empty() -> Self {
27146 Self::__SourceBreaking { unknown_ordinal: 0 }
27147 }
27148
27149 #[inline]
27150 unsafe fn decode(
27151 &mut self,
27152 decoder: &mut fidl::encoding::Decoder<'_, D>,
27153 offset: usize,
27154 mut depth: fidl::encoding::Depth,
27155 ) -> fidl::Result<()> {
27156 decoder.debug_check_bounds::<Self>(offset);
27157 #[allow(unused_variables)]
27158 let next_out_of_line = decoder.next_out_of_line();
27159 let handles_before = decoder.remaining_handles();
27160 let (ordinal, inlined, num_bytes, num_handles) =
27161 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
27162
27163 let member_inline_size = match ordinal {
27164 1 => <f32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27165 2 => <fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::TypeMarker>::inline_size(decoder.context),
27166 0 => return Err(fidl::Error::UnknownUnionTag),
27167 _ => num_bytes as usize,
27168 };
27169
27170 if inlined != (member_inline_size <= 4) {
27171 return Err(fidl::Error::InvalidInlineBitInEnvelope);
27172 }
27173 let _inner_offset;
27174 if inlined {
27175 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
27176 _inner_offset = offset + 8;
27177 } else {
27178 depth.increment()?;
27179 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27180 }
27181 match ordinal {
27182 1 => {
27183 #[allow(irrefutable_let_patterns)]
27184 if let ProvisioningProgress::Progress(_) = self {
27185 } else {
27187 *self = ProvisioningProgress::Progress(fidl::new_empty!(f32, D));
27189 }
27190 #[allow(irrefutable_let_patterns)]
27191 if let ProvisioningProgress::Progress(ref mut val) = self {
27192 fidl::decode!(f32, D, val, decoder, _inner_offset, depth)?;
27193 } else {
27194 unreachable!()
27195 }
27196 }
27197 2 => {
27198 #[allow(irrefutable_let_patterns)]
27199 if let ProvisioningProgress::Identity(_) = self {
27200 } else {
27202 *self = ProvisioningProgress::Identity(fidl::new_empty!(
27204 fidl_fuchsia_lowpan_device__common::Identity,
27205 D
27206 ));
27207 }
27208 #[allow(irrefutable_let_patterns)]
27209 if let ProvisioningProgress::Identity(ref mut val) = self {
27210 fidl::decode!(
27211 fidl_fuchsia_lowpan_device__common::Identity,
27212 D,
27213 val,
27214 decoder,
27215 _inner_offset,
27216 depth
27217 )?;
27218 } else {
27219 unreachable!()
27220 }
27221 }
27222 #[allow(deprecated)]
27223 ordinal => {
27224 for _ in 0..num_handles {
27225 decoder.drop_next_handle()?;
27226 }
27227 *self = ProvisioningProgress::__SourceBreaking { unknown_ordinal: ordinal };
27228 }
27229 }
27230 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
27231 return Err(fidl::Error::InvalidNumBytesInEnvelope);
27232 }
27233 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27234 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27235 }
27236 Ok(())
27237 }
27238 }
27239}