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_NEIGHBOR_INSPECT_ENTRIES: u32 = 64;
16
17pub const MAX_ON_MESH_PREFIXES: u32 = 32;
18
19pub const MAX_PROVISION_URL_LEN: u16 = 64;
20
21pub const MAX_SRP_INSPECT_ENTRIES: u32 = 64;
24
25pub const MAX_VENDOR_DATA_LEN: u16 = 64;
26
27pub const MAX_VENDOR_MODEL_LEN: u16 = 32;
28
29pub const MAX_VENDOR_NAME_LEN: u16 = 32;
30
31pub const MAX_VENDOR_SW_VER_LEN: u16 = 16;
32
33pub const PSKD_LEN: u16 = 32;
34
35#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
37pub enum Dhcp6PdState {
38 Dhcp6PdStateUnspecified,
39 Dhcp6PdStateDisabled,
41 Dhcp6PdStateStopped,
43 Dhcp6PdStateRunning,
45 Dhcp6PdStateIdle,
47 #[doc(hidden)]
48 __SourceBreaking {
49 unknown_ordinal: u32,
50 },
51}
52
53#[macro_export]
55macro_rules! Dhcp6PdStateUnknown {
56 () => {
57 _
58 };
59}
60
61impl Dhcp6PdState {
62 #[inline]
63 pub fn from_primitive(prim: u32) -> Option<Self> {
64 match prim {
65 0 => Some(Self::Dhcp6PdStateUnspecified),
66 1 => Some(Self::Dhcp6PdStateDisabled),
67 2 => Some(Self::Dhcp6PdStateStopped),
68 3 => Some(Self::Dhcp6PdStateRunning),
69 4 => Some(Self::Dhcp6PdStateIdle),
70 _ => None,
71 }
72 }
73
74 #[inline]
75 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
76 match prim {
77 0 => Self::Dhcp6PdStateUnspecified,
78 1 => Self::Dhcp6PdStateDisabled,
79 2 => Self::Dhcp6PdStateStopped,
80 3 => Self::Dhcp6PdStateRunning,
81 4 => Self::Dhcp6PdStateIdle,
82 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
83 }
84 }
85
86 #[inline]
87 pub fn unknown() -> Self {
88 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
89 }
90
91 #[inline]
92 pub const fn into_primitive(self) -> u32 {
93 match self {
94 Self::Dhcp6PdStateUnspecified => 0,
95 Self::Dhcp6PdStateDisabled => 1,
96 Self::Dhcp6PdStateStopped => 2,
97 Self::Dhcp6PdStateRunning => 3,
98 Self::Dhcp6PdStateIdle => 4,
99 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
100 }
101 }
102
103 #[inline]
104 pub fn is_unknown(&self) -> bool {
105 match self {
106 Self::__SourceBreaking { unknown_ordinal: _ } => true,
107 _ => false,
108 }
109 }
110}
111
112#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
113pub enum Nat64State {
114 Nat64StateUnspecified,
115 Nat64StateDisabled,
116 Nat64StateNotRunning,
117 Nat64StateIdle,
118 Nat64StateActive,
119 #[doc(hidden)]
120 __SourceBreaking {
121 unknown_ordinal: u32,
122 },
123}
124
125#[macro_export]
127macro_rules! Nat64StateUnknown {
128 () => {
129 _
130 };
131}
132
133impl Nat64State {
134 #[inline]
135 pub fn from_primitive(prim: u32) -> Option<Self> {
136 match prim {
137 0 => Some(Self::Nat64StateUnspecified),
138 1 => Some(Self::Nat64StateDisabled),
139 2 => Some(Self::Nat64StateNotRunning),
140 3 => Some(Self::Nat64StateIdle),
141 4 => Some(Self::Nat64StateActive),
142 _ => None,
143 }
144 }
145
146 #[inline]
147 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
148 match prim {
149 0 => Self::Nat64StateUnspecified,
150 1 => Self::Nat64StateDisabled,
151 2 => Self::Nat64StateNotRunning,
152 3 => Self::Nat64StateIdle,
153 4 => Self::Nat64StateActive,
154 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
155 }
156 }
157
158 #[inline]
159 pub fn unknown() -> Self {
160 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
161 }
162
163 #[inline]
164 pub const fn into_primitive(self) -> u32 {
165 match self {
166 Self::Nat64StateUnspecified => 0,
167 Self::Nat64StateDisabled => 1,
168 Self::Nat64StateNotRunning => 2,
169 Self::Nat64StateIdle => 3,
170 Self::Nat64StateActive => 4,
171 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
172 }
173 }
174
175 #[inline]
176 pub fn is_unknown(&self) -> bool {
177 match self {
178 Self::__SourceBreaking { unknown_ordinal: _ } => true,
179 _ => false,
180 }
181 }
182}
183
184#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
188pub enum ProvisionError {
189 CredentialRejected,
194 NetworkNotFound,
197 NetworkAlreadyExists,
200 Canceled,
203 #[doc(hidden)]
204 __SourceBreaking { unknown_ordinal: i32 },
205}
206
207#[macro_export]
209macro_rules! ProvisionErrorUnknown {
210 () => {
211 _
212 };
213}
214
215impl ProvisionError {
216 #[inline]
217 pub fn from_primitive(prim: i32) -> Option<Self> {
218 match prim {
219 1 => Some(Self::CredentialRejected),
220 2 => Some(Self::NetworkNotFound),
221 3 => Some(Self::NetworkAlreadyExists),
222 4 => Some(Self::Canceled),
223 _ => None,
224 }
225 }
226
227 #[inline]
228 pub fn from_primitive_allow_unknown(prim: i32) -> Self {
229 match prim {
230 1 => Self::CredentialRejected,
231 2 => Self::NetworkNotFound,
232 3 => Self::NetworkAlreadyExists,
233 4 => Self::Canceled,
234 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
235 }
236 }
237
238 #[inline]
239 pub fn unknown() -> Self {
240 Self::__SourceBreaking { unknown_ordinal: 0x7fffffff }
241 }
242
243 #[inline]
244 pub const fn into_primitive(self) -> i32 {
245 match self {
246 Self::CredentialRejected => 1,
247 Self::NetworkNotFound => 2,
248 Self::NetworkAlreadyExists => 3,
249 Self::Canceled => 4,
250 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
251 }
252 }
253
254 #[inline]
255 pub fn is_unknown(&self) -> bool {
256 match self {
257 Self::__SourceBreaking { unknown_ordinal: _ } => true,
258 _ => false,
259 }
260 }
261}
262
263#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
265#[repr(i8)]
266pub enum RoutePreference {
267 Low = -1,
269 Medium = 0,
271 High = 1,
273}
274
275impl RoutePreference {
276 #[inline]
277 pub fn from_primitive(prim: i8) -> Option<Self> {
278 match prim {
279 -1 => Some(Self::Low),
280 0 => Some(Self::Medium),
281 1 => Some(Self::High),
282 _ => None,
283 }
284 }
285
286 #[inline]
287 pub const fn into_primitive(self) -> i8 {
288 self as i8
289 }
290}
291
292#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
293#[repr(u32)]
294pub enum SrpServerAddressMode {
295 Unicast = 1,
297 Anycast = 2,
299}
300
301impl SrpServerAddressMode {
302 #[inline]
303 pub fn from_primitive(prim: u32) -> Option<Self> {
304 match prim {
305 1 => Some(Self::Unicast),
306 2 => Some(Self::Anycast),
307 _ => None,
308 }
309 }
310
311 #[inline]
312 pub const fn into_primitive(self) -> u32 {
313 self as u32
314 }
315}
316
317#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
318#[repr(u32)]
319pub enum SrpServerState {
320 Disabled = 1,
322 Running = 2,
324 Stopped = 3,
326}
327
328impl SrpServerState {
329 #[inline]
330 pub fn from_primitive(prim: u32) -> Option<Self> {
331 match prim {
332 1 => Some(Self::Disabled),
333 2 => Some(Self::Running),
334 3 => Some(Self::Stopped),
335 _ => None,
336 }
337 }
338
339 #[inline]
340 pub const fn into_primitive(self) -> u32 {
341 self as u32
342 }
343}
344
345#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
347pub enum UpstreamDnsQueryState {
348 UpstreamdnsQueryStateUnspecified,
349 UpstreamdnsQueryStateEnabled,
350 UpstreamdnsQueryStateDisabled,
351 #[doc(hidden)]
352 __SourceBreaking {
353 unknown_ordinal: u32,
354 },
355}
356
357#[macro_export]
359macro_rules! UpstreamDnsQueryStateUnknown {
360 () => {
361 _
362 };
363}
364
365impl UpstreamDnsQueryState {
366 #[inline]
367 pub fn from_primitive(prim: u32) -> Option<Self> {
368 match prim {
369 0 => Some(Self::UpstreamdnsQueryStateUnspecified),
370 1 => Some(Self::UpstreamdnsQueryStateEnabled),
371 2 => Some(Self::UpstreamdnsQueryStateDisabled),
372 _ => None,
373 }
374 }
375
376 #[inline]
377 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
378 match prim {
379 0 => Self::UpstreamdnsQueryStateUnspecified,
380 1 => Self::UpstreamdnsQueryStateEnabled,
381 2 => Self::UpstreamdnsQueryStateDisabled,
382 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
383 }
384 }
385
386 #[inline]
387 pub fn unknown() -> Self {
388 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
389 }
390
391 #[inline]
392 pub const fn into_primitive(self) -> u32 {
393 match self {
394 Self::UpstreamdnsQueryStateUnspecified => 0,
395 Self::UpstreamdnsQueryStateEnabled => 1,
396 Self::UpstreamdnsQueryStateDisabled => 2,
397 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
398 }
399 }
400
401 #[inline]
402 pub fn is_unknown(&self) -> bool {
403 match self {
404 Self::__SourceBreaking { unknown_ordinal: _ } => true,
405 _ => false,
406 }
407 }
408}
409
410#[derive(Clone, Debug, PartialEq)]
411pub struct BeaconInfoStreamNextResponse {
412 pub beacons: Vec<BeaconInfo>,
413}
414
415impl fidl::Persistable for BeaconInfoStreamNextResponse {}
416
417#[derive(Clone, Debug, PartialEq)]
418pub struct DeviceGetSupportedChannelsResponse {
419 pub channels_info: Vec<ChannelInfo>,
420}
421
422impl fidl::Persistable for DeviceGetSupportedChannelsResponse {}
423
424#[derive(Clone, Debug, PartialEq)]
425pub struct DeviceRouteExtraGetLocalExternalRoutesResponse {
426 pub external_routes: Vec<ExternalRoute>,
427}
428
429impl fidl::Persistable for DeviceRouteExtraGetLocalExternalRoutesResponse {}
430
431#[derive(Clone, Debug, PartialEq)]
432pub struct DeviceRouteExtraGetLocalOnMeshPrefixesResponse {
433 pub prefixes: Vec<OnMeshPrefix>,
434}
435
436impl fidl::Persistable for DeviceRouteExtraGetLocalOnMeshPrefixesResponse {}
437
438#[derive(Clone, Debug, PartialEq)]
439pub struct DeviceRouteRegisterExternalRouteRequest {
440 pub external_route: ExternalRoute,
441}
442
443impl fidl::Persistable for DeviceRouteRegisterExternalRouteRequest {}
444
445#[derive(Clone, Debug, PartialEq)]
446pub struct DeviceRouteRegisterOnMeshPrefixRequest {
447 pub prefix: OnMeshPrefix,
448}
449
450impl fidl::Persistable for DeviceRouteRegisterOnMeshPrefixRequest {}
451
452#[derive(Clone, Debug, PartialEq)]
453pub struct DeviceRouteUnregisterExternalRouteRequest {
454 pub subnet: fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
455}
456
457impl fidl::Persistable for DeviceRouteUnregisterExternalRouteRequest {}
458
459#[derive(Clone, Debug, PartialEq)]
460pub struct DeviceRouteUnregisterOnMeshPrefixRequest {
461 pub subnet: fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
462}
463
464impl fidl::Persistable for DeviceRouteUnregisterOnMeshPrefixRequest {}
465
466#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
467#[repr(C)]
468pub struct LegacyJoiningMakeJoinableRequest {
469 pub duration: i64,
470 pub port: u16,
471}
472
473impl fidl::Persistable for LegacyJoiningMakeJoinableRequest {}
474
475#[derive(Clone, Debug, PartialEq)]
476pub struct ProvisioningMonitorWatchProgressResponse {
477 pub progress: ProvisioningProgress,
478}
479
480impl fidl::Persistable for ProvisioningMonitorWatchProgressResponse {}
481
482#[derive(Clone, Debug, PartialEq)]
483pub struct TelemetryProviderGetTelemetryResponse {
484 pub telemetry: Telemetry,
485}
486
487impl fidl::Persistable for TelemetryProviderGetTelemetryResponse {}
488
489#[derive(Clone, Debug, Default, PartialEq)]
490pub struct BeaconInfo {
491 pub address: Option<fidl_fuchsia_lowpan__common::MacAddress>,
493 pub identity: Option<fidl_fuchsia_lowpan_device__common::Identity>,
496 pub rssi: Option<i8>,
501 pub lqi: Option<u8>,
515 #[doc(hidden)]
516 pub __source_breaking: fidl::marker::SourceBreaking,
517}
518
519impl fidl::Persistable for BeaconInfo {}
520
521#[derive(Clone, Debug, Default, PartialEq)]
523pub struct BorderRoutingCounters {
524 pub inbound_unicast_packets: Option<u64>,
528 pub inbound_unicast_bytes: Option<u64>,
532 pub inbound_multicast_packets: Option<u64>,
536 pub inbound_multicast_bytes: Option<u64>,
540 pub outbound_unicast_packets: Option<u64>,
544 pub outbound_unicast_bytes: Option<u64>,
548 pub outbound_multicast_packets: Option<u64>,
552 pub outbound_multicast_bytes: Option<u64>,
556 pub ra_rx: Option<u32>,
560 pub ra_tx_success: Option<u32>,
564 pub ra_tx_failure: Option<u32>,
568 pub rs_rx: Option<u32>,
572 pub rs_tx_success: Option<u32>,
576 pub rs_tx_failure: Option<u32>,
580 pub inbound_internet_packets: Option<u64>,
584 pub inbound_internet_bytes: Option<u64>,
588 pub outbound_internet_packets: Option<u64>,
592 pub outbound_internet_bytes: Option<u64>,
596 #[doc(hidden)]
597 pub __source_breaking: fidl::marker::SourceBreaking,
598}
599
600impl fidl::Persistable for BorderRoutingCounters {}
601
602#[derive(Clone, Debug, Default, PartialEq)]
604pub struct BorderRoutingNat64State {
605 pub prefix_manager_state: Option<Nat64State>,
607 pub translator_state: Option<Nat64State>,
609 #[doc(hidden)]
610 pub __source_breaking: fidl::marker::SourceBreaking,
611}
612
613impl fidl::Persistable for BorderRoutingNat64State {}
614
615#[derive(Clone, Debug, Default, PartialEq)]
617pub struct BorderRoutingPeer {
618 pub thread_rloc: Option<u16>,
622 pub age: Option<i64>,
626 #[doc(hidden)]
627 pub __source_breaking: fidl::marker::SourceBreaking,
628}
629
630impl fidl::Persistable for BorderRoutingPeer {}
631
632#[derive(Clone, Debug, Default, PartialEq)]
634pub struct BorderRoutingRouter {
635 pub address: Option<String>,
639 pub duration_since_last_update: Option<i64>,
643 pub age: Option<i64>,
647 pub managed_address_config_flag: Option<bool>,
651 pub other_config_flag: Option<bool>,
655 pub snac_router_flag: Option<bool>,
659 pub is_local_device: Option<bool>,
663 pub is_reachable: Option<bool>,
667 pub is_peer_br: Option<bool>,
671 #[doc(hidden)]
672 pub __source_breaking: fidl::marker::SourceBreaking,
673}
674
675impl fidl::Persistable for BorderRoutingRouter {}
676
677#[derive(Clone, Debug, Default, PartialEq)]
678pub struct ChannelInfo {
679 pub index: Option<u16>,
682 pub id: Option<String>,
698 pub max_transmit_power_dbm: Option<i8>,
701 pub spectrum_center_frequency_hz: Option<u64>,
724 pub spectrum_bandwidth_hz: Option<u64>,
731 pub masked_by_regulatory_domain: Option<bool>,
735 #[doc(hidden)]
736 pub __source_breaking: fidl::marker::SourceBreaking,
737}
738
739impl fidl::Persistable for ChannelInfo {}
740
741#[derive(Clone, Debug, Default, PartialEq)]
743pub struct Dhcp6PdInfo {
744 pub dhcp6pd_state: Option<Dhcp6PdState>,
748 pub pd_processed_ra_info: Option<PdProcessedRaInfo>,
752 pub hashed_pd_prefix: Option<Vec<u8>>,
756 #[doc(hidden)]
757 pub __source_breaking: fidl::marker::SourceBreaking,
758}
759
760impl fidl::Persistable for Dhcp6PdInfo {}
761
762#[derive(Clone, Debug, Default, PartialEq)]
764pub struct DnsTxtEntry {
765 pub key: Option<String>,
772 pub value: Option<Vec<u8>>,
779 #[doc(hidden)]
780 pub __source_breaking: fidl::marker::SourceBreaking,
781}
782
783impl fidl::Persistable for DnsTxtEntry {}
784
785#[derive(Clone, Debug, Default, PartialEq)]
787pub struct DnssdCounters {
788 pub success_response: Option<u32>,
792 pub server_failure_response: Option<u32>,
796 pub format_error_response: Option<u32>,
800 pub name_error_response: Option<u32>,
804 pub not_implemented_response: Option<u32>,
808 pub other_response: Option<u32>,
812 pub resolved_by_srp: Option<u32>,
816 pub upstream_dns_counters: Option<UpstreamDnsCounters>,
820 #[doc(hidden)]
821 pub __source_breaking: fidl::marker::SourceBreaking,
822}
823
824impl fidl::Persistable for DnssdCounters {}
825
826#[derive(Clone, Debug, Default, PartialEq)]
830pub struct ExternalRoute {
831 pub subnet: Option<fidl_fuchsia_net__common::Ipv6AddressWithPrefix>,
833 pub route_preference: Option<RoutePreference>,
840 pub stable: Option<bool>,
849 #[doc(hidden)]
850 pub __source_breaking: fidl::marker::SourceBreaking,
851}
852
853impl fidl::Persistable for ExternalRoute {}
854
855#[derive(Clone, Debug, Default, PartialEq)]
860pub struct JoinerCommissioningParams {
861 pub pskd: Option<String>,
863 pub provisioning_url: Option<String>,
865 pub vendor_name: Option<String>,
867 pub vendor_model: Option<String>,
869 pub vendor_sw_version: Option<String>,
871 pub vendor_data_string: Option<String>,
873 #[doc(hidden)]
874 pub __source_breaking: fidl::marker::SourceBreaking,
875}
876
877impl fidl::Persistable for JoinerCommissioningParams {}
878
879#[derive(Clone, Debug, Default, PartialEq)]
881pub struct LeaderData {
882 pub partition_id: Option<u32>,
886 pub weight: Option<u8>,
890 pub network_data_version: Option<u8>,
894 pub stable_network_data_version: Option<u8>,
898 pub router_id: Option<u8>,
902 #[doc(hidden)]
903 pub __source_breaking: fidl::marker::SourceBreaking,
904}
905
906impl fidl::Persistable for LeaderData {}
907
908#[derive(Clone, Debug, Default, PartialEq)]
910pub struct LinkMetricsEntry {
911 pub link_margin: Option<u8>,
913 pub rssi: Option<i8>,
915 #[doc(hidden)]
916 pub __source_breaking: fidl::marker::SourceBreaking,
917}
918
919impl fidl::Persistable for LinkMetricsEntry {}
920
921#[derive(Clone, Debug, Default, PartialEq)]
922pub struct Nat64ErrorCounters {
923 pub unknown: Option<Nat64PacketCounters>,
925 pub illegal_packet: Option<Nat64PacketCounters>,
927 pub unsupported_protocol: Option<Nat64PacketCounters>,
929 pub no_mapping: Option<Nat64PacketCounters>,
931 #[doc(hidden)]
932 pub __source_breaking: fidl::marker::SourceBreaking,
933}
934
935impl fidl::Persistable for Nat64ErrorCounters {}
936
937#[derive(Clone, Debug, Default, PartialEq)]
938pub struct Nat64Info {
939 pub nat64_state: Option<BorderRoutingNat64State>,
941 pub nat64_mappings: Option<Vec<Nat64Mapping>>,
943 pub nat64_error_counters: Option<Nat64ErrorCounters>,
945 pub nat64_protocol_counters: Option<Nat64ProtocolCounters>,
947 #[doc(hidden)]
948 pub __source_breaking: fidl::marker::SourceBreaking,
949}
950
951impl fidl::Persistable for Nat64Info {}
952
953#[derive(Clone, Debug, Default, PartialEq)]
955pub struct Nat64Mapping {
956 pub mapping_id: Option<u64>,
958 pub ip4_addr: Option<Vec<u8>>,
960 pub ip6_addr: Option<Vec<u8>>,
962 pub remaining_time_ms: Option<u32>,
964 pub counters: Option<Nat64ProtocolCounters>,
966 #[doc(hidden)]
967 pub __source_breaking: fidl::marker::SourceBreaking,
968}
969
970impl fidl::Persistable for Nat64Mapping {}
971
972#[derive(Clone, Debug, Default, PartialEq)]
973pub struct Nat64PacketCounters {
974 pub ipv4_to_ipv6_packets: Option<u64>,
976 pub ipv6_to_ipv4_packets: Option<u64>,
978 #[doc(hidden)]
979 pub __source_breaking: fidl::marker::SourceBreaking,
980}
981
982impl fidl::Persistable for Nat64PacketCounters {}
983
984#[derive(Clone, Debug, Default, PartialEq)]
985pub struct Nat64ProtocolCounters {
986 pub tcp: Option<Nat64TrafficCounters>,
988 pub udp: Option<Nat64TrafficCounters>,
990 pub icmp: Option<Nat64TrafficCounters>,
992 pub total: Option<Nat64TrafficCounters>,
994 #[doc(hidden)]
995 pub __source_breaking: fidl::marker::SourceBreaking,
996}
997
998impl fidl::Persistable for Nat64ProtocolCounters {}
999
1000#[derive(Clone, Debug, Default, PartialEq)]
1001pub struct Nat64TrafficCounters {
1002 pub ipv4_to_ipv6_packets: Option<u64>,
1004 pub ipv4_to_ipv6_bytes: Option<u64>,
1006 pub ipv6_to_ipv4_packets: Option<u64>,
1008 pub ipv6_to_ipv4_bytes: Option<u64>,
1010 #[doc(hidden)]
1011 pub __source_breaking: fidl::marker::SourceBreaking,
1012}
1013
1014impl fidl::Persistable for Nat64TrafficCounters {}
1015
1016#[derive(Clone, Debug, Default, PartialEq)]
1018pub struct NetworkScanParameters {
1019 pub channels: Option<Vec<u16>>,
1023 pub tx_power_dbm: Option<i8>,
1034 #[doc(hidden)]
1035 pub __source_breaking: fidl::marker::SourceBreaking,
1036}
1037
1038impl fidl::Persistable for NetworkScanParameters {}
1039
1040#[derive(Clone, Debug, Default, PartialEq)]
1044pub struct OnMeshPrefix {
1045 pub subnet: Option<fidl_fuchsia_net__common::Ipv6AddressWithPrefix>,
1047 pub default_route_preference: Option<RoutePreference>,
1055 pub stable: Option<bool>,
1064 pub slaac_preferred: Option<bool>,
1073 pub slaac_valid: Option<bool>,
1082 #[doc(hidden)]
1083 pub __source_breaking: fidl::marker::SourceBreaking,
1084}
1085
1086impl fidl::Persistable for OnMeshPrefix {}
1087
1088#[derive(Clone, Debug, Default, PartialEq)]
1090pub struct OperationalDataset {
1091 pub active_timestamp: Option<i64>,
1095 pub pending_timestamp: Option<i64>,
1099 pub network_key: Option<Vec<u8>>,
1103 pub network_name: Option<Vec<u8>>,
1107 pub extended_pan_id: Option<Vec<u8>>,
1111 pub mesh_local_prefix: Option<Vec<u8>>,
1115 pub delay: Option<u32>,
1119 pub pan_id: Option<u16>,
1123 pub channel: Option<u16>,
1127 pub wakeup_channel: Option<u16>,
1131 pub pskc: Option<Vec<u8>>,
1135 pub security_policy: Option<SecurityPolicy>,
1139 pub channel_mask: Option<u32>,
1143 #[doc(hidden)]
1144 pub __source_breaking: fidl::marker::SourceBreaking,
1145}
1146
1147impl fidl::Persistable for OperationalDataset {}
1148
1149#[derive(Clone, Debug, Default, PartialEq)]
1151pub struct PdProcessedRaInfo {
1152 pub num_platform_ra_received: Option<u32>,
1156 pub num_platform_pio_processed: Option<u32>,
1160 pub last_platform_ra_msec: Option<u32>,
1164 #[doc(hidden)]
1165 pub __source_breaking: fidl::marker::SourceBreaking,
1166}
1167
1168impl fidl::Persistable for PdProcessedRaInfo {}
1169
1170#[derive(Clone, Debug, Default, PartialEq)]
1172pub struct SecurityPolicy {
1173 pub rotation_time: Option<u16>,
1177 pub obtain_network_key_enabled: Option<bool>,
1181 pub native_commissioning_enabled: Option<bool>,
1185 pub routers_enabled: Option<bool>,
1189 pub external_commissioning_enabled: Option<bool>,
1193 pub autonomous_enrollment_enabled: Option<bool>,
1197 pub network_key_provisioning_enabled: Option<bool>,
1201 pub toble_link_enabled: Option<bool>,
1205 pub nonccm_routers_enabled: Option<bool>,
1209 pub version_threshold_for_routing: Option<u8>,
1213 #[doc(hidden)]
1214 pub __source_breaking: fidl::marker::SourceBreaking,
1215}
1216
1217impl fidl::Persistable for SecurityPolicy {}
1218
1219#[derive(Clone, Debug, Default, PartialEq)]
1221pub struct SrpServerHost {
1222 pub name: Option<String>,
1226 pub deleted: Option<bool>,
1230 pub addresses: Option<Vec<fidl_fuchsia_net__common::Ipv6Address>>,
1234 #[doc(hidden)]
1235 pub __source_breaking: fidl::marker::SourceBreaking,
1236}
1237
1238impl fidl::Persistable for SrpServerHost {}
1239
1240#[derive(Clone, Debug, Default, PartialEq)]
1242pub struct SrpServerInfo {
1243 pub state: Option<SrpServerState>,
1247 pub port: Option<u16>,
1251 pub address_mode: Option<SrpServerAddressMode>,
1255 pub response_counters: Option<SrpServerResponseCounters>,
1259 pub hosts_registration: Option<SrpServerRegistration>,
1263 pub services_registration: Option<SrpServerRegistration>,
1267 pub hosts: Option<Vec<SrpServerHost>>,
1271 pub services: Option<Vec<SrpServerService>>,
1275 #[doc(hidden)]
1276 pub __source_breaking: fidl::marker::SourceBreaking,
1277}
1278
1279impl fidl::Persistable for SrpServerInfo {}
1280
1281#[derive(Clone, Debug, Default, PartialEq)]
1283pub struct SrpServerRegistration {
1284 pub fresh_count: Option<u32>,
1288 pub deleted_count: Option<u32>,
1292 pub lease_time_total: Option<i64>,
1296 pub key_lease_time_total: Option<i64>,
1300 pub remaining_lease_time_total: Option<i64>,
1304 pub remaining_key_lease_time_total: Option<i64>,
1308 #[doc(hidden)]
1309 pub __source_breaking: fidl::marker::SourceBreaking,
1310}
1311
1312impl fidl::Persistable for SrpServerRegistration {}
1313
1314#[derive(Clone, Debug, Default, PartialEq)]
1315pub struct SrpServerResponseCounters {
1316 pub success_response: Option<u32>,
1320 pub server_failure_response: Option<u32>,
1324 pub format_error_response: Option<u32>,
1328 pub name_exists_response: Option<u32>,
1332 pub refused_response: Option<u32>,
1336 pub other_response: Option<u32>,
1340 #[doc(hidden)]
1341 pub __source_breaking: fidl::marker::SourceBreaking,
1342}
1343
1344impl fidl::Persistable for SrpServerResponseCounters {}
1345
1346#[derive(Clone, Debug, Default, PartialEq)]
1348pub struct SrpServerService {
1349 pub instance_name: Option<String>,
1353 pub deleted: Option<bool>,
1357 pub subtypes: Option<Vec<String>>,
1366 pub port: Option<u16>,
1370 pub priority: Option<u16>,
1374 pub weight: Option<u16>,
1378 pub ttl: Option<i64>,
1382 pub lease: Option<i64>,
1386 pub key_lease: Option<i64>,
1390 pub txt_data: Option<Vec<DnsTxtEntry>>,
1394 pub host: Option<SrpServerHost>,
1398 #[doc(hidden)]
1399 pub __source_breaking: fidl::marker::SourceBreaking,
1400}
1401
1402impl fidl::Persistable for SrpServerService {}
1403
1404#[derive(Clone, Debug, Default, PartialEq)]
1411pub struct Telemetry {
1412 pub rssi: Option<i8>,
1414 pub tx_power: Option<i8>,
1416 pub channel_index: Option<u16>,
1418 pub partition_id: Option<u32>,
1420 pub stack_version: Option<String>,
1422 pub rcp_version: Option<String>,
1424 pub thread_link_mode: Option<u8>,
1430 pub thread_router_id: Option<u8>,
1434 pub thread_rloc: Option<u16>,
1438 pub thread_network_data_version: Option<u8>,
1442 pub thread_stable_network_data_version: Option<u8>,
1446 pub thread_network_data: Option<Vec<u8>>,
1451 pub thread_stable_network_data: Option<Vec<u8>>,
1456 pub thread_border_routing_counters: Option<BorderRoutingCounters>,
1460 pub srp_server_info: Option<SrpServerInfo>,
1464 pub dnssd_counters: Option<DnssdCounters>,
1468 pub leader_data: Option<LeaderData>,
1472 pub uptime: Option<i64>,
1476 pub nat64_info: Option<Nat64Info>,
1480 pub trel_counters: Option<TrelCounters>,
1484 pub trel_peers_info: Option<TrelPeersInfo>,
1488 pub upstream_dns_info: Option<UpstreamDnsInfo>,
1492 pub dhcp6pd_info: Option<Dhcp6PdInfo>,
1496 pub link_metrics_entries: Option<Vec<LinkMetricsEntry>>,
1500 pub border_agent_counters: Option<fidl_fuchsia_lowpan_device__common::BorderAgentCounters>,
1504 pub multi_ail_detected: Option<bool>,
1508 pub extended_pan_id: Option<u64>,
1513 pub border_routing_peers: Option<Vec<BorderRoutingPeer>>,
1517 pub border_routing_routers: Option<Vec<BorderRoutingRouter>>,
1521 pub active_dataset: Option<OperationalDataset>,
1525 #[doc(hidden)]
1526 pub __source_breaking: fidl::marker::SourceBreaking,
1527}
1528
1529impl fidl::Persistable for Telemetry {}
1530
1531#[derive(Clone, Debug, Default, PartialEq)]
1535pub struct TrelCounters {
1536 pub rx_bytes: Option<u64>,
1538 pub rx_packets: Option<u64>,
1540 pub tx_bytes: Option<u64>,
1542 pub tx_failure: Option<u64>,
1544 pub tx_packets: Option<u64>,
1546 #[doc(hidden)]
1547 pub __source_breaking: fidl::marker::SourceBreaking,
1548}
1549
1550impl fidl::Persistable for TrelCounters {}
1551
1552#[derive(Clone, Debug, Default, PartialEq)]
1557pub struct TrelPeersInfo {
1558 pub num_trel_peers: Option<u16>,
1562 #[doc(hidden)]
1563 pub __source_breaking: fidl::marker::SourceBreaking,
1564}
1565
1566impl fidl::Persistable for TrelPeersInfo {}
1567
1568#[derive(Clone, Debug, Default, PartialEq)]
1572pub struct UpstreamDnsCounters {
1573 pub queries: Option<u32>,
1577 pub responses: Option<u32>,
1581 pub failures: Option<u32>,
1585 #[doc(hidden)]
1586 pub __source_breaking: fidl::marker::SourceBreaking,
1587}
1588
1589impl fidl::Persistable for UpstreamDnsCounters {}
1590
1591#[derive(Clone, Debug, Default, PartialEq)]
1596pub struct UpstreamDnsInfo {
1597 pub upstream_dns_query_state: Option<UpstreamDnsQueryState>,
1601 #[doc(hidden)]
1602 pub __source_breaking: fidl::marker::SourceBreaking,
1603}
1604
1605impl fidl::Persistable for UpstreamDnsInfo {}
1606
1607#[derive(Clone, Debug)]
1609pub enum JoinParams {
1610 ProvisioningParameter(fidl_fuchsia_lowpan_device__common::ProvisioningParams),
1612 JoinerParameter(JoinerCommissioningParams),
1618 #[doc(hidden)]
1619 __SourceBreaking { unknown_ordinal: u64 },
1620}
1621
1622#[macro_export]
1624macro_rules! JoinParamsUnknown {
1625 () => {
1626 _
1627 };
1628}
1629
1630impl PartialEq for JoinParams {
1632 fn eq(&self, other: &Self) -> bool {
1633 match (self, other) {
1634 (Self::ProvisioningParameter(x), Self::ProvisioningParameter(y)) => *x == *y,
1635 (Self::JoinerParameter(x), Self::JoinerParameter(y)) => *x == *y,
1636 _ => false,
1637 }
1638 }
1639}
1640
1641impl JoinParams {
1642 #[inline]
1643 pub fn ordinal(&self) -> u64 {
1644 match *self {
1645 Self::ProvisioningParameter(_) => 1,
1646 Self::JoinerParameter(_) => 2,
1647 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1648 }
1649 }
1650
1651 #[inline]
1652 pub fn unknown_variant_for_testing() -> Self {
1653 Self::__SourceBreaking { unknown_ordinal: 0 }
1654 }
1655
1656 #[inline]
1657 pub fn is_unknown(&self) -> bool {
1658 match self {
1659 Self::__SourceBreaking { .. } => true,
1660 _ => false,
1661 }
1662 }
1663}
1664
1665impl fidl::Persistable for JoinParams {}
1666
1667#[derive(Clone, Debug)]
1671pub enum ProvisioningProgress {
1672 Progress(f32),
1674 Identity(fidl_fuchsia_lowpan_device__common::Identity),
1676 #[doc(hidden)]
1677 __SourceBreaking { unknown_ordinal: u64 },
1678}
1679
1680#[macro_export]
1682macro_rules! ProvisioningProgressUnknown {
1683 () => {
1684 _
1685 };
1686}
1687
1688impl PartialEq for ProvisioningProgress {
1690 fn eq(&self, other: &Self) -> bool {
1691 match (self, other) {
1692 (Self::Progress(x), Self::Progress(y)) => *x == *y,
1693 (Self::Identity(x), Self::Identity(y)) => *x == *y,
1694 _ => false,
1695 }
1696 }
1697}
1698
1699impl ProvisioningProgress {
1700 #[inline]
1701 pub fn ordinal(&self) -> u64 {
1702 match *self {
1703 Self::Progress(_) => 1,
1704 Self::Identity(_) => 2,
1705 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1706 }
1707 }
1708
1709 #[inline]
1710 pub fn unknown_variant_for_testing() -> Self {
1711 Self::__SourceBreaking { unknown_ordinal: 0 }
1712 }
1713
1714 #[inline]
1715 pub fn is_unknown(&self) -> bool {
1716 match self {
1717 Self::__SourceBreaking { .. } => true,
1718 _ => false,
1719 }
1720 }
1721}
1722
1723impl fidl::Persistable for ProvisioningProgress {}
1724
1725pub mod beacon_info_stream_ordinals {
1726 pub const NEXT: u64 = 0x367a557363a340b6;
1727}
1728
1729pub mod device_ordinals {
1730 pub const GET_SUPPORTED_CHANNELS: u64 = 0x2d8b969a9bd70f23;
1731}
1732
1733pub mod device_connector_ordinals {
1734 pub const CONNECT: u64 = 0x296896c9304836cd;
1735}
1736
1737pub mod device_extra_ordinals {
1738 pub const FORM_NETWORK: u64 = 0x6a8135f84bfc90e;
1739 pub const JOIN_NETWORK: u64 = 0x3ea583bab79f81c0;
1740 pub const START_NETWORK_SCAN: u64 = 0x6288c73b79188b40;
1741}
1742
1743pub mod device_extra_connector_ordinals {
1744 pub const CONNECT: u64 = 0x3fcb37e4226c81e9;
1745}
1746
1747pub mod device_route_ordinals {
1748 pub const REGISTER_ON_MESH_PREFIX: u64 = 0x2c4135231eb97f61;
1749 pub const UNREGISTER_ON_MESH_PREFIX: u64 = 0x82d5184028b797f;
1750 pub const REGISTER_EXTERNAL_ROUTE: u64 = 0x75f70f0fc34a5a73;
1751 pub const UNREGISTER_EXTERNAL_ROUTE: u64 = 0x3769be353b1d7088;
1752}
1753
1754pub mod device_route_connector_ordinals {
1755 pub const CONNECT: u64 = 0x19cd5fdcb971f4ac;
1756}
1757
1758pub mod device_route_extra_ordinals {
1759 pub const GET_LOCAL_ON_MESH_PREFIXES: u64 = 0xf192c43311c811;
1760 pub const GET_LOCAL_EXTERNAL_ROUTES: u64 = 0x5a688c2e62c766a6;
1761}
1762
1763pub mod device_route_extra_connector_ordinals {
1764 pub const CONNECT: u64 = 0x12f72df7b1348fe2;
1765}
1766
1767pub mod legacy_joining_ordinals {
1768 pub const MAKE_JOINABLE: u64 = 0x1739a6ae36d5c5aa;
1769}
1770
1771pub mod legacy_joining_connector_ordinals {
1772 pub const CONNECT: u64 = 0x3c8dfeb943bb8d06;
1773}
1774
1775pub mod provisioning_monitor_ordinals {
1776 pub const WATCH_PROGRESS: u64 = 0xc35336fc43ac0c;
1777}
1778
1779pub mod telemetry_provider_ordinals {
1780 pub const GET_TELEMETRY: u64 = 0xc34f2fff7dacc41;
1781}
1782
1783pub mod telemetry_provider_connector_ordinals {
1784 pub const CONNECT: u64 = 0x24a5bf1be73e2fad;
1785}
1786
1787mod internal {
1788 use super::*;
1789 unsafe impl fidl::encoding::TypeMarker for Dhcp6PdState {
1790 type Owned = Self;
1791
1792 #[inline(always)]
1793 fn inline_align(_context: fidl::encoding::Context) -> usize {
1794 std::mem::align_of::<u32>()
1795 }
1796
1797 #[inline(always)]
1798 fn inline_size(_context: fidl::encoding::Context) -> usize {
1799 std::mem::size_of::<u32>()
1800 }
1801
1802 #[inline(always)]
1803 fn encode_is_copy() -> bool {
1804 false
1805 }
1806
1807 #[inline(always)]
1808 fn decode_is_copy() -> bool {
1809 false
1810 }
1811 }
1812
1813 impl fidl::encoding::ValueTypeMarker for Dhcp6PdState {
1814 type Borrowed<'a> = Self;
1815 #[inline(always)]
1816 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1817 *value
1818 }
1819 }
1820
1821 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Dhcp6PdState {
1822 #[inline]
1823 unsafe fn encode(
1824 self,
1825 encoder: &mut fidl::encoding::Encoder<'_, D>,
1826 offset: usize,
1827 _depth: fidl::encoding::Depth,
1828 ) -> fidl::Result<()> {
1829 encoder.debug_check_bounds::<Self>(offset);
1830 encoder.write_num(self.into_primitive(), offset);
1831 Ok(())
1832 }
1833 }
1834
1835 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dhcp6PdState {
1836 #[inline(always)]
1837 fn new_empty() -> Self {
1838 Self::unknown()
1839 }
1840
1841 #[inline]
1842 unsafe fn decode(
1843 &mut self,
1844 decoder: &mut fidl::encoding::Decoder<'_, D>,
1845 offset: usize,
1846 _depth: fidl::encoding::Depth,
1847 ) -> fidl::Result<()> {
1848 decoder.debug_check_bounds::<Self>(offset);
1849 let prim = decoder.read_num::<u32>(offset);
1850
1851 *self = Self::from_primitive_allow_unknown(prim);
1852 Ok(())
1853 }
1854 }
1855 unsafe impl fidl::encoding::TypeMarker for Nat64State {
1856 type Owned = Self;
1857
1858 #[inline(always)]
1859 fn inline_align(_context: fidl::encoding::Context) -> usize {
1860 std::mem::align_of::<u32>()
1861 }
1862
1863 #[inline(always)]
1864 fn inline_size(_context: fidl::encoding::Context) -> usize {
1865 std::mem::size_of::<u32>()
1866 }
1867
1868 #[inline(always)]
1869 fn encode_is_copy() -> bool {
1870 false
1871 }
1872
1873 #[inline(always)]
1874 fn decode_is_copy() -> bool {
1875 false
1876 }
1877 }
1878
1879 impl fidl::encoding::ValueTypeMarker for Nat64State {
1880 type Borrowed<'a> = Self;
1881 #[inline(always)]
1882 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1883 *value
1884 }
1885 }
1886
1887 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Nat64State {
1888 #[inline]
1889 unsafe fn encode(
1890 self,
1891 encoder: &mut fidl::encoding::Encoder<'_, D>,
1892 offset: usize,
1893 _depth: fidl::encoding::Depth,
1894 ) -> fidl::Result<()> {
1895 encoder.debug_check_bounds::<Self>(offset);
1896 encoder.write_num(self.into_primitive(), offset);
1897 Ok(())
1898 }
1899 }
1900
1901 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64State {
1902 #[inline(always)]
1903 fn new_empty() -> Self {
1904 Self::unknown()
1905 }
1906
1907 #[inline]
1908 unsafe fn decode(
1909 &mut self,
1910 decoder: &mut fidl::encoding::Decoder<'_, D>,
1911 offset: usize,
1912 _depth: fidl::encoding::Depth,
1913 ) -> fidl::Result<()> {
1914 decoder.debug_check_bounds::<Self>(offset);
1915 let prim = decoder.read_num::<u32>(offset);
1916
1917 *self = Self::from_primitive_allow_unknown(prim);
1918 Ok(())
1919 }
1920 }
1921 unsafe impl fidl::encoding::TypeMarker for ProvisionError {
1922 type Owned = Self;
1923
1924 #[inline(always)]
1925 fn inline_align(_context: fidl::encoding::Context) -> usize {
1926 std::mem::align_of::<i32>()
1927 }
1928
1929 #[inline(always)]
1930 fn inline_size(_context: fidl::encoding::Context) -> usize {
1931 std::mem::size_of::<i32>()
1932 }
1933
1934 #[inline(always)]
1935 fn encode_is_copy() -> bool {
1936 false
1937 }
1938
1939 #[inline(always)]
1940 fn decode_is_copy() -> bool {
1941 false
1942 }
1943 }
1944
1945 impl fidl::encoding::ValueTypeMarker for ProvisionError {
1946 type Borrowed<'a> = Self;
1947 #[inline(always)]
1948 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1949 *value
1950 }
1951 }
1952
1953 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ProvisionError {
1954 #[inline]
1955 unsafe fn encode(
1956 self,
1957 encoder: &mut fidl::encoding::Encoder<'_, D>,
1958 offset: usize,
1959 _depth: fidl::encoding::Depth,
1960 ) -> fidl::Result<()> {
1961 encoder.debug_check_bounds::<Self>(offset);
1962 encoder.write_num(self.into_primitive(), offset);
1963 Ok(())
1964 }
1965 }
1966
1967 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProvisionError {
1968 #[inline(always)]
1969 fn new_empty() -> Self {
1970 Self::unknown()
1971 }
1972
1973 #[inline]
1974 unsafe fn decode(
1975 &mut self,
1976 decoder: &mut fidl::encoding::Decoder<'_, D>,
1977 offset: usize,
1978 _depth: fidl::encoding::Depth,
1979 ) -> fidl::Result<()> {
1980 decoder.debug_check_bounds::<Self>(offset);
1981 let prim = decoder.read_num::<i32>(offset);
1982
1983 *self = Self::from_primitive_allow_unknown(prim);
1984 Ok(())
1985 }
1986 }
1987 unsafe impl fidl::encoding::TypeMarker for RoutePreference {
1988 type Owned = Self;
1989
1990 #[inline(always)]
1991 fn inline_align(_context: fidl::encoding::Context) -> usize {
1992 std::mem::align_of::<i8>()
1993 }
1994
1995 #[inline(always)]
1996 fn inline_size(_context: fidl::encoding::Context) -> usize {
1997 std::mem::size_of::<i8>()
1998 }
1999
2000 #[inline(always)]
2001 fn encode_is_copy() -> bool {
2002 true
2003 }
2004
2005 #[inline(always)]
2006 fn decode_is_copy() -> bool {
2007 false
2008 }
2009 }
2010
2011 impl fidl::encoding::ValueTypeMarker for RoutePreference {
2012 type Borrowed<'a> = Self;
2013 #[inline(always)]
2014 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2015 *value
2016 }
2017 }
2018
2019 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2020 for RoutePreference
2021 {
2022 #[inline]
2023 unsafe fn encode(
2024 self,
2025 encoder: &mut fidl::encoding::Encoder<'_, D>,
2026 offset: usize,
2027 _depth: fidl::encoding::Depth,
2028 ) -> fidl::Result<()> {
2029 encoder.debug_check_bounds::<Self>(offset);
2030 encoder.write_num(self.into_primitive(), offset);
2031 Ok(())
2032 }
2033 }
2034
2035 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoutePreference {
2036 #[inline(always)]
2037 fn new_empty() -> Self {
2038 Self::Low
2039 }
2040
2041 #[inline]
2042 unsafe fn decode(
2043 &mut self,
2044 decoder: &mut fidl::encoding::Decoder<'_, D>,
2045 offset: usize,
2046 _depth: fidl::encoding::Depth,
2047 ) -> fidl::Result<()> {
2048 decoder.debug_check_bounds::<Self>(offset);
2049 let prim = decoder.read_num::<i8>(offset);
2050
2051 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2052 Ok(())
2053 }
2054 }
2055 unsafe impl fidl::encoding::TypeMarker for SrpServerAddressMode {
2056 type Owned = Self;
2057
2058 #[inline(always)]
2059 fn inline_align(_context: fidl::encoding::Context) -> usize {
2060 std::mem::align_of::<u32>()
2061 }
2062
2063 #[inline(always)]
2064 fn inline_size(_context: fidl::encoding::Context) -> usize {
2065 std::mem::size_of::<u32>()
2066 }
2067
2068 #[inline(always)]
2069 fn encode_is_copy() -> bool {
2070 true
2071 }
2072
2073 #[inline(always)]
2074 fn decode_is_copy() -> bool {
2075 false
2076 }
2077 }
2078
2079 impl fidl::encoding::ValueTypeMarker for SrpServerAddressMode {
2080 type Borrowed<'a> = Self;
2081 #[inline(always)]
2082 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2083 *value
2084 }
2085 }
2086
2087 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2088 for SrpServerAddressMode
2089 {
2090 #[inline]
2091 unsafe fn encode(
2092 self,
2093 encoder: &mut fidl::encoding::Encoder<'_, D>,
2094 offset: usize,
2095 _depth: fidl::encoding::Depth,
2096 ) -> fidl::Result<()> {
2097 encoder.debug_check_bounds::<Self>(offset);
2098 encoder.write_num(self.into_primitive(), offset);
2099 Ok(())
2100 }
2101 }
2102
2103 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerAddressMode {
2104 #[inline(always)]
2105 fn new_empty() -> Self {
2106 Self::Unicast
2107 }
2108
2109 #[inline]
2110 unsafe fn decode(
2111 &mut self,
2112 decoder: &mut fidl::encoding::Decoder<'_, D>,
2113 offset: usize,
2114 _depth: fidl::encoding::Depth,
2115 ) -> fidl::Result<()> {
2116 decoder.debug_check_bounds::<Self>(offset);
2117 let prim = decoder.read_num::<u32>(offset);
2118
2119 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2120 Ok(())
2121 }
2122 }
2123 unsafe impl fidl::encoding::TypeMarker for SrpServerState {
2124 type Owned = Self;
2125
2126 #[inline(always)]
2127 fn inline_align(_context: fidl::encoding::Context) -> usize {
2128 std::mem::align_of::<u32>()
2129 }
2130
2131 #[inline(always)]
2132 fn inline_size(_context: fidl::encoding::Context) -> usize {
2133 std::mem::size_of::<u32>()
2134 }
2135
2136 #[inline(always)]
2137 fn encode_is_copy() -> bool {
2138 true
2139 }
2140
2141 #[inline(always)]
2142 fn decode_is_copy() -> bool {
2143 false
2144 }
2145 }
2146
2147 impl fidl::encoding::ValueTypeMarker for SrpServerState {
2148 type Borrowed<'a> = Self;
2149 #[inline(always)]
2150 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2151 *value
2152 }
2153 }
2154
2155 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for SrpServerState {
2156 #[inline]
2157 unsafe fn encode(
2158 self,
2159 encoder: &mut fidl::encoding::Encoder<'_, D>,
2160 offset: usize,
2161 _depth: fidl::encoding::Depth,
2162 ) -> fidl::Result<()> {
2163 encoder.debug_check_bounds::<Self>(offset);
2164 encoder.write_num(self.into_primitive(), offset);
2165 Ok(())
2166 }
2167 }
2168
2169 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerState {
2170 #[inline(always)]
2171 fn new_empty() -> Self {
2172 Self::Disabled
2173 }
2174
2175 #[inline]
2176 unsafe fn decode(
2177 &mut self,
2178 decoder: &mut fidl::encoding::Decoder<'_, D>,
2179 offset: usize,
2180 _depth: fidl::encoding::Depth,
2181 ) -> fidl::Result<()> {
2182 decoder.debug_check_bounds::<Self>(offset);
2183 let prim = decoder.read_num::<u32>(offset);
2184
2185 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2186 Ok(())
2187 }
2188 }
2189 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsQueryState {
2190 type Owned = Self;
2191
2192 #[inline(always)]
2193 fn inline_align(_context: fidl::encoding::Context) -> usize {
2194 std::mem::align_of::<u32>()
2195 }
2196
2197 #[inline(always)]
2198 fn inline_size(_context: fidl::encoding::Context) -> usize {
2199 std::mem::size_of::<u32>()
2200 }
2201
2202 #[inline(always)]
2203 fn encode_is_copy() -> bool {
2204 false
2205 }
2206
2207 #[inline(always)]
2208 fn decode_is_copy() -> bool {
2209 false
2210 }
2211 }
2212
2213 impl fidl::encoding::ValueTypeMarker for UpstreamDnsQueryState {
2214 type Borrowed<'a> = Self;
2215 #[inline(always)]
2216 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2217 *value
2218 }
2219 }
2220
2221 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2222 for UpstreamDnsQueryState
2223 {
2224 #[inline]
2225 unsafe fn encode(
2226 self,
2227 encoder: &mut fidl::encoding::Encoder<'_, D>,
2228 offset: usize,
2229 _depth: fidl::encoding::Depth,
2230 ) -> fidl::Result<()> {
2231 encoder.debug_check_bounds::<Self>(offset);
2232 encoder.write_num(self.into_primitive(), offset);
2233 Ok(())
2234 }
2235 }
2236
2237 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsQueryState {
2238 #[inline(always)]
2239 fn new_empty() -> Self {
2240 Self::unknown()
2241 }
2242
2243 #[inline]
2244 unsafe fn decode(
2245 &mut self,
2246 decoder: &mut fidl::encoding::Decoder<'_, D>,
2247 offset: usize,
2248 _depth: fidl::encoding::Depth,
2249 ) -> fidl::Result<()> {
2250 decoder.debug_check_bounds::<Self>(offset);
2251 let prim = decoder.read_num::<u32>(offset);
2252
2253 *self = Self::from_primitive_allow_unknown(prim);
2254 Ok(())
2255 }
2256 }
2257
2258 impl fidl::encoding::ValueTypeMarker for BeaconInfoStreamNextResponse {
2259 type Borrowed<'a> = &'a Self;
2260 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2261 value
2262 }
2263 }
2264
2265 unsafe impl fidl::encoding::TypeMarker for BeaconInfoStreamNextResponse {
2266 type Owned = Self;
2267
2268 #[inline(always)]
2269 fn inline_align(_context: fidl::encoding::Context) -> usize {
2270 8
2271 }
2272
2273 #[inline(always)]
2274 fn inline_size(_context: fidl::encoding::Context) -> usize {
2275 16
2276 }
2277 }
2278
2279 unsafe impl<D: fidl::encoding::ResourceDialect>
2280 fidl::encoding::Encode<BeaconInfoStreamNextResponse, D> for &BeaconInfoStreamNextResponse
2281 {
2282 #[inline]
2283 unsafe fn encode(
2284 self,
2285 encoder: &mut fidl::encoding::Encoder<'_, D>,
2286 offset: usize,
2287 _depth: fidl::encoding::Depth,
2288 ) -> fidl::Result<()> {
2289 encoder.debug_check_bounds::<BeaconInfoStreamNextResponse>(offset);
2290 fidl::encoding::Encode::<BeaconInfoStreamNextResponse, D>::encode(
2292 (
2293 <fidl::encoding::Vector<BeaconInfo, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.beacons),
2294 ),
2295 encoder, offset, _depth
2296 )
2297 }
2298 }
2299 unsafe impl<
2300 D: fidl::encoding::ResourceDialect,
2301 T0: fidl::encoding::Encode<fidl::encoding::Vector<BeaconInfo, 32>, D>,
2302 > fidl::encoding::Encode<BeaconInfoStreamNextResponse, D> for (T0,)
2303 {
2304 #[inline]
2305 unsafe fn encode(
2306 self,
2307 encoder: &mut fidl::encoding::Encoder<'_, D>,
2308 offset: usize,
2309 depth: fidl::encoding::Depth,
2310 ) -> fidl::Result<()> {
2311 encoder.debug_check_bounds::<BeaconInfoStreamNextResponse>(offset);
2312 self.0.encode(encoder, offset + 0, depth)?;
2316 Ok(())
2317 }
2318 }
2319
2320 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2321 for BeaconInfoStreamNextResponse
2322 {
2323 #[inline(always)]
2324 fn new_empty() -> Self {
2325 Self { beacons: fidl::new_empty!(fidl::encoding::Vector<BeaconInfo, 32>, D) }
2326 }
2327
2328 #[inline]
2329 unsafe fn decode(
2330 &mut self,
2331 decoder: &mut fidl::encoding::Decoder<'_, D>,
2332 offset: usize,
2333 _depth: fidl::encoding::Depth,
2334 ) -> fidl::Result<()> {
2335 decoder.debug_check_bounds::<Self>(offset);
2336 fidl::decode!(fidl::encoding::Vector<BeaconInfo, 32>, D, &mut self.beacons, decoder, offset + 0, _depth)?;
2338 Ok(())
2339 }
2340 }
2341
2342 impl fidl::encoding::ValueTypeMarker for DeviceGetSupportedChannelsResponse {
2343 type Borrowed<'a> = &'a Self;
2344 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2345 value
2346 }
2347 }
2348
2349 unsafe impl fidl::encoding::TypeMarker for DeviceGetSupportedChannelsResponse {
2350 type Owned = Self;
2351
2352 #[inline(always)]
2353 fn inline_align(_context: fidl::encoding::Context) -> usize {
2354 8
2355 }
2356
2357 #[inline(always)]
2358 fn inline_size(_context: fidl::encoding::Context) -> usize {
2359 16
2360 }
2361 }
2362
2363 unsafe impl<D: fidl::encoding::ResourceDialect>
2364 fidl::encoding::Encode<DeviceGetSupportedChannelsResponse, D>
2365 for &DeviceGetSupportedChannelsResponse
2366 {
2367 #[inline]
2368 unsafe fn encode(
2369 self,
2370 encoder: &mut fidl::encoding::Encoder<'_, D>,
2371 offset: usize,
2372 _depth: fidl::encoding::Depth,
2373 ) -> fidl::Result<()> {
2374 encoder.debug_check_bounds::<DeviceGetSupportedChannelsResponse>(offset);
2375 fidl::encoding::Encode::<DeviceGetSupportedChannelsResponse, D>::encode(
2377 (
2378 <fidl::encoding::Vector<ChannelInfo, 200> as fidl::encoding::ValueTypeMarker>::borrow(&self.channels_info),
2379 ),
2380 encoder, offset, _depth
2381 )
2382 }
2383 }
2384 unsafe impl<
2385 D: fidl::encoding::ResourceDialect,
2386 T0: fidl::encoding::Encode<fidl::encoding::Vector<ChannelInfo, 200>, D>,
2387 > fidl::encoding::Encode<DeviceGetSupportedChannelsResponse, D> for (T0,)
2388 {
2389 #[inline]
2390 unsafe fn encode(
2391 self,
2392 encoder: &mut fidl::encoding::Encoder<'_, D>,
2393 offset: usize,
2394 depth: fidl::encoding::Depth,
2395 ) -> fidl::Result<()> {
2396 encoder.debug_check_bounds::<DeviceGetSupportedChannelsResponse>(offset);
2397 self.0.encode(encoder, offset + 0, depth)?;
2401 Ok(())
2402 }
2403 }
2404
2405 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2406 for DeviceGetSupportedChannelsResponse
2407 {
2408 #[inline(always)]
2409 fn new_empty() -> Self {
2410 Self { channels_info: fidl::new_empty!(fidl::encoding::Vector<ChannelInfo, 200>, D) }
2411 }
2412
2413 #[inline]
2414 unsafe fn decode(
2415 &mut self,
2416 decoder: &mut fidl::encoding::Decoder<'_, D>,
2417 offset: usize,
2418 _depth: fidl::encoding::Depth,
2419 ) -> fidl::Result<()> {
2420 decoder.debug_check_bounds::<Self>(offset);
2421 fidl::decode!(fidl::encoding::Vector<ChannelInfo, 200>, D, &mut self.channels_info, decoder, offset + 0, _depth)?;
2423 Ok(())
2424 }
2425 }
2426
2427 impl fidl::encoding::ValueTypeMarker for DeviceRouteExtraGetLocalExternalRoutesResponse {
2428 type Borrowed<'a> = &'a Self;
2429 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2430 value
2431 }
2432 }
2433
2434 unsafe impl fidl::encoding::TypeMarker for DeviceRouteExtraGetLocalExternalRoutesResponse {
2435 type Owned = Self;
2436
2437 #[inline(always)]
2438 fn inline_align(_context: fidl::encoding::Context) -> usize {
2439 8
2440 }
2441
2442 #[inline(always)]
2443 fn inline_size(_context: fidl::encoding::Context) -> usize {
2444 16
2445 }
2446 }
2447
2448 unsafe impl<D: fidl::encoding::ResourceDialect>
2449 fidl::encoding::Encode<DeviceRouteExtraGetLocalExternalRoutesResponse, D>
2450 for &DeviceRouteExtraGetLocalExternalRoutesResponse
2451 {
2452 #[inline]
2453 unsafe fn encode(
2454 self,
2455 encoder: &mut fidl::encoding::Encoder<'_, D>,
2456 offset: usize,
2457 _depth: fidl::encoding::Depth,
2458 ) -> fidl::Result<()> {
2459 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalExternalRoutesResponse>(offset);
2460 fidl::encoding::Encode::<DeviceRouteExtraGetLocalExternalRoutesResponse, D>::encode(
2462 (
2463 <fidl::encoding::Vector<ExternalRoute, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.external_routes),
2464 ),
2465 encoder, offset, _depth
2466 )
2467 }
2468 }
2469 unsafe impl<
2470 D: fidl::encoding::ResourceDialect,
2471 T0: fidl::encoding::Encode<fidl::encoding::Vector<ExternalRoute, 32>, D>,
2472 > fidl::encoding::Encode<DeviceRouteExtraGetLocalExternalRoutesResponse, D> for (T0,)
2473 {
2474 #[inline]
2475 unsafe fn encode(
2476 self,
2477 encoder: &mut fidl::encoding::Encoder<'_, D>,
2478 offset: usize,
2479 depth: fidl::encoding::Depth,
2480 ) -> fidl::Result<()> {
2481 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalExternalRoutesResponse>(offset);
2482 self.0.encode(encoder, offset + 0, depth)?;
2486 Ok(())
2487 }
2488 }
2489
2490 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2491 for DeviceRouteExtraGetLocalExternalRoutesResponse
2492 {
2493 #[inline(always)]
2494 fn new_empty() -> Self {
2495 Self { external_routes: fidl::new_empty!(fidl::encoding::Vector<ExternalRoute, 32>, D) }
2496 }
2497
2498 #[inline]
2499 unsafe fn decode(
2500 &mut self,
2501 decoder: &mut fidl::encoding::Decoder<'_, D>,
2502 offset: usize,
2503 _depth: fidl::encoding::Depth,
2504 ) -> fidl::Result<()> {
2505 decoder.debug_check_bounds::<Self>(offset);
2506 fidl::decode!(fidl::encoding::Vector<ExternalRoute, 32>, D, &mut self.external_routes, decoder, offset + 0, _depth)?;
2508 Ok(())
2509 }
2510 }
2511
2512 impl fidl::encoding::ValueTypeMarker for DeviceRouteExtraGetLocalOnMeshPrefixesResponse {
2513 type Borrowed<'a> = &'a Self;
2514 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2515 value
2516 }
2517 }
2518
2519 unsafe impl fidl::encoding::TypeMarker for DeviceRouteExtraGetLocalOnMeshPrefixesResponse {
2520 type Owned = Self;
2521
2522 #[inline(always)]
2523 fn inline_align(_context: fidl::encoding::Context) -> usize {
2524 8
2525 }
2526
2527 #[inline(always)]
2528 fn inline_size(_context: fidl::encoding::Context) -> usize {
2529 16
2530 }
2531 }
2532
2533 unsafe impl<D: fidl::encoding::ResourceDialect>
2534 fidl::encoding::Encode<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D>
2535 for &DeviceRouteExtraGetLocalOnMeshPrefixesResponse
2536 {
2537 #[inline]
2538 unsafe fn encode(
2539 self,
2540 encoder: &mut fidl::encoding::Encoder<'_, D>,
2541 offset: usize,
2542 _depth: fidl::encoding::Depth,
2543 ) -> fidl::Result<()> {
2544 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse>(offset);
2545 fidl::encoding::Encode::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D>::encode(
2547 (
2548 <fidl::encoding::Vector<OnMeshPrefix, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.prefixes),
2549 ),
2550 encoder, offset, _depth
2551 )
2552 }
2553 }
2554 unsafe impl<
2555 D: fidl::encoding::ResourceDialect,
2556 T0: fidl::encoding::Encode<fidl::encoding::Vector<OnMeshPrefix, 32>, D>,
2557 > fidl::encoding::Encode<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D> for (T0,)
2558 {
2559 #[inline]
2560 unsafe fn encode(
2561 self,
2562 encoder: &mut fidl::encoding::Encoder<'_, D>,
2563 offset: usize,
2564 depth: fidl::encoding::Depth,
2565 ) -> fidl::Result<()> {
2566 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse>(offset);
2567 self.0.encode(encoder, offset + 0, depth)?;
2571 Ok(())
2572 }
2573 }
2574
2575 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2576 for DeviceRouteExtraGetLocalOnMeshPrefixesResponse
2577 {
2578 #[inline(always)]
2579 fn new_empty() -> Self {
2580 Self { prefixes: fidl::new_empty!(fidl::encoding::Vector<OnMeshPrefix, 32>, D) }
2581 }
2582
2583 #[inline]
2584 unsafe fn decode(
2585 &mut self,
2586 decoder: &mut fidl::encoding::Decoder<'_, D>,
2587 offset: usize,
2588 _depth: fidl::encoding::Depth,
2589 ) -> fidl::Result<()> {
2590 decoder.debug_check_bounds::<Self>(offset);
2591 fidl::decode!(fidl::encoding::Vector<OnMeshPrefix, 32>, D, &mut self.prefixes, decoder, offset + 0, _depth)?;
2593 Ok(())
2594 }
2595 }
2596
2597 impl fidl::encoding::ValueTypeMarker for DeviceRouteRegisterExternalRouteRequest {
2598 type Borrowed<'a> = &'a Self;
2599 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2600 value
2601 }
2602 }
2603
2604 unsafe impl fidl::encoding::TypeMarker for DeviceRouteRegisterExternalRouteRequest {
2605 type Owned = Self;
2606
2607 #[inline(always)]
2608 fn inline_align(_context: fidl::encoding::Context) -> usize {
2609 8
2610 }
2611
2612 #[inline(always)]
2613 fn inline_size(_context: fidl::encoding::Context) -> usize {
2614 16
2615 }
2616 }
2617
2618 unsafe impl<D: fidl::encoding::ResourceDialect>
2619 fidl::encoding::Encode<DeviceRouteRegisterExternalRouteRequest, D>
2620 for &DeviceRouteRegisterExternalRouteRequest
2621 {
2622 #[inline]
2623 unsafe fn encode(
2624 self,
2625 encoder: &mut fidl::encoding::Encoder<'_, D>,
2626 offset: usize,
2627 _depth: fidl::encoding::Depth,
2628 ) -> fidl::Result<()> {
2629 encoder.debug_check_bounds::<DeviceRouteRegisterExternalRouteRequest>(offset);
2630 fidl::encoding::Encode::<DeviceRouteRegisterExternalRouteRequest, D>::encode(
2632 (<ExternalRoute as fidl::encoding::ValueTypeMarker>::borrow(&self.external_route),),
2633 encoder,
2634 offset,
2635 _depth,
2636 )
2637 }
2638 }
2639 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ExternalRoute, D>>
2640 fidl::encoding::Encode<DeviceRouteRegisterExternalRouteRequest, D> for (T0,)
2641 {
2642 #[inline]
2643 unsafe fn encode(
2644 self,
2645 encoder: &mut fidl::encoding::Encoder<'_, D>,
2646 offset: usize,
2647 depth: fidl::encoding::Depth,
2648 ) -> fidl::Result<()> {
2649 encoder.debug_check_bounds::<DeviceRouteRegisterExternalRouteRequest>(offset);
2650 self.0.encode(encoder, offset + 0, depth)?;
2654 Ok(())
2655 }
2656 }
2657
2658 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2659 for DeviceRouteRegisterExternalRouteRequest
2660 {
2661 #[inline(always)]
2662 fn new_empty() -> Self {
2663 Self { external_route: fidl::new_empty!(ExternalRoute, D) }
2664 }
2665
2666 #[inline]
2667 unsafe fn decode(
2668 &mut self,
2669 decoder: &mut fidl::encoding::Decoder<'_, D>,
2670 offset: usize,
2671 _depth: fidl::encoding::Depth,
2672 ) -> fidl::Result<()> {
2673 decoder.debug_check_bounds::<Self>(offset);
2674 fidl::decode!(ExternalRoute, D, &mut self.external_route, decoder, offset + 0, _depth)?;
2676 Ok(())
2677 }
2678 }
2679
2680 impl fidl::encoding::ValueTypeMarker for DeviceRouteRegisterOnMeshPrefixRequest {
2681 type Borrowed<'a> = &'a Self;
2682 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2683 value
2684 }
2685 }
2686
2687 unsafe impl fidl::encoding::TypeMarker for DeviceRouteRegisterOnMeshPrefixRequest {
2688 type Owned = Self;
2689
2690 #[inline(always)]
2691 fn inline_align(_context: fidl::encoding::Context) -> usize {
2692 8
2693 }
2694
2695 #[inline(always)]
2696 fn inline_size(_context: fidl::encoding::Context) -> usize {
2697 16
2698 }
2699 }
2700
2701 unsafe impl<D: fidl::encoding::ResourceDialect>
2702 fidl::encoding::Encode<DeviceRouteRegisterOnMeshPrefixRequest, D>
2703 for &DeviceRouteRegisterOnMeshPrefixRequest
2704 {
2705 #[inline]
2706 unsafe fn encode(
2707 self,
2708 encoder: &mut fidl::encoding::Encoder<'_, D>,
2709 offset: usize,
2710 _depth: fidl::encoding::Depth,
2711 ) -> fidl::Result<()> {
2712 encoder.debug_check_bounds::<DeviceRouteRegisterOnMeshPrefixRequest>(offset);
2713 fidl::encoding::Encode::<DeviceRouteRegisterOnMeshPrefixRequest, D>::encode(
2715 (<OnMeshPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.prefix),),
2716 encoder,
2717 offset,
2718 _depth,
2719 )
2720 }
2721 }
2722 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<OnMeshPrefix, D>>
2723 fidl::encoding::Encode<DeviceRouteRegisterOnMeshPrefixRequest, D> for (T0,)
2724 {
2725 #[inline]
2726 unsafe fn encode(
2727 self,
2728 encoder: &mut fidl::encoding::Encoder<'_, D>,
2729 offset: usize,
2730 depth: fidl::encoding::Depth,
2731 ) -> fidl::Result<()> {
2732 encoder.debug_check_bounds::<DeviceRouteRegisterOnMeshPrefixRequest>(offset);
2733 self.0.encode(encoder, offset + 0, depth)?;
2737 Ok(())
2738 }
2739 }
2740
2741 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2742 for DeviceRouteRegisterOnMeshPrefixRequest
2743 {
2744 #[inline(always)]
2745 fn new_empty() -> Self {
2746 Self { prefix: fidl::new_empty!(OnMeshPrefix, D) }
2747 }
2748
2749 #[inline]
2750 unsafe fn decode(
2751 &mut self,
2752 decoder: &mut fidl::encoding::Decoder<'_, D>,
2753 offset: usize,
2754 _depth: fidl::encoding::Depth,
2755 ) -> fidl::Result<()> {
2756 decoder.debug_check_bounds::<Self>(offset);
2757 fidl::decode!(OnMeshPrefix, D, &mut self.prefix, decoder, offset + 0, _depth)?;
2759 Ok(())
2760 }
2761 }
2762
2763 impl fidl::encoding::ValueTypeMarker for DeviceRouteUnregisterExternalRouteRequest {
2764 type Borrowed<'a> = &'a Self;
2765 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2766 value
2767 }
2768 }
2769
2770 unsafe impl fidl::encoding::TypeMarker for DeviceRouteUnregisterExternalRouteRequest {
2771 type Owned = Self;
2772
2773 #[inline(always)]
2774 fn inline_align(_context: fidl::encoding::Context) -> usize {
2775 1
2776 }
2777
2778 #[inline(always)]
2779 fn inline_size(_context: fidl::encoding::Context) -> usize {
2780 17
2781 }
2782 }
2783
2784 unsafe impl<D: fidl::encoding::ResourceDialect>
2785 fidl::encoding::Encode<DeviceRouteUnregisterExternalRouteRequest, D>
2786 for &DeviceRouteUnregisterExternalRouteRequest
2787 {
2788 #[inline]
2789 unsafe fn encode(
2790 self,
2791 encoder: &mut fidl::encoding::Encoder<'_, D>,
2792 offset: usize,
2793 _depth: fidl::encoding::Depth,
2794 ) -> fidl::Result<()> {
2795 encoder.debug_check_bounds::<DeviceRouteUnregisterExternalRouteRequest>(offset);
2796 fidl::encoding::Encode::<DeviceRouteUnregisterExternalRouteRequest, D>::encode(
2798 (
2799 <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.subnet),
2800 ),
2801 encoder, offset, _depth
2802 )
2803 }
2804 }
2805 unsafe impl<
2806 D: fidl::encoding::ResourceDialect,
2807 T0: fidl::encoding::Encode<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>,
2808 > fidl::encoding::Encode<DeviceRouteUnregisterExternalRouteRequest, D> for (T0,)
2809 {
2810 #[inline]
2811 unsafe fn encode(
2812 self,
2813 encoder: &mut fidl::encoding::Encoder<'_, D>,
2814 offset: usize,
2815 depth: fidl::encoding::Depth,
2816 ) -> fidl::Result<()> {
2817 encoder.debug_check_bounds::<DeviceRouteUnregisterExternalRouteRequest>(offset);
2818 self.0.encode(encoder, offset + 0, depth)?;
2822 Ok(())
2823 }
2824 }
2825
2826 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2827 for DeviceRouteUnregisterExternalRouteRequest
2828 {
2829 #[inline(always)]
2830 fn new_empty() -> Self {
2831 Self { subnet: fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D) }
2832 }
2833
2834 #[inline]
2835 unsafe fn decode(
2836 &mut self,
2837 decoder: &mut fidl::encoding::Decoder<'_, D>,
2838 offset: usize,
2839 _depth: fidl::encoding::Depth,
2840 ) -> fidl::Result<()> {
2841 decoder.debug_check_bounds::<Self>(offset);
2842 fidl::decode!(
2844 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
2845 D,
2846 &mut self.subnet,
2847 decoder,
2848 offset + 0,
2849 _depth
2850 )?;
2851 Ok(())
2852 }
2853 }
2854
2855 impl fidl::encoding::ValueTypeMarker for DeviceRouteUnregisterOnMeshPrefixRequest {
2856 type Borrowed<'a> = &'a Self;
2857 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2858 value
2859 }
2860 }
2861
2862 unsafe impl fidl::encoding::TypeMarker for DeviceRouteUnregisterOnMeshPrefixRequest {
2863 type Owned = Self;
2864
2865 #[inline(always)]
2866 fn inline_align(_context: fidl::encoding::Context) -> usize {
2867 1
2868 }
2869
2870 #[inline(always)]
2871 fn inline_size(_context: fidl::encoding::Context) -> usize {
2872 17
2873 }
2874 }
2875
2876 unsafe impl<D: fidl::encoding::ResourceDialect>
2877 fidl::encoding::Encode<DeviceRouteUnregisterOnMeshPrefixRequest, D>
2878 for &DeviceRouteUnregisterOnMeshPrefixRequest
2879 {
2880 #[inline]
2881 unsafe fn encode(
2882 self,
2883 encoder: &mut fidl::encoding::Encoder<'_, D>,
2884 offset: usize,
2885 _depth: fidl::encoding::Depth,
2886 ) -> fidl::Result<()> {
2887 encoder.debug_check_bounds::<DeviceRouteUnregisterOnMeshPrefixRequest>(offset);
2888 fidl::encoding::Encode::<DeviceRouteUnregisterOnMeshPrefixRequest, D>::encode(
2890 (
2891 <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.subnet),
2892 ),
2893 encoder, offset, _depth
2894 )
2895 }
2896 }
2897 unsafe impl<
2898 D: fidl::encoding::ResourceDialect,
2899 T0: fidl::encoding::Encode<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>,
2900 > fidl::encoding::Encode<DeviceRouteUnregisterOnMeshPrefixRequest, D> for (T0,)
2901 {
2902 #[inline]
2903 unsafe fn encode(
2904 self,
2905 encoder: &mut fidl::encoding::Encoder<'_, D>,
2906 offset: usize,
2907 depth: fidl::encoding::Depth,
2908 ) -> fidl::Result<()> {
2909 encoder.debug_check_bounds::<DeviceRouteUnregisterOnMeshPrefixRequest>(offset);
2910 self.0.encode(encoder, offset + 0, depth)?;
2914 Ok(())
2915 }
2916 }
2917
2918 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2919 for DeviceRouteUnregisterOnMeshPrefixRequest
2920 {
2921 #[inline(always)]
2922 fn new_empty() -> Self {
2923 Self { subnet: fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D) }
2924 }
2925
2926 #[inline]
2927 unsafe fn decode(
2928 &mut self,
2929 decoder: &mut fidl::encoding::Decoder<'_, D>,
2930 offset: usize,
2931 _depth: fidl::encoding::Depth,
2932 ) -> fidl::Result<()> {
2933 decoder.debug_check_bounds::<Self>(offset);
2934 fidl::decode!(
2936 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
2937 D,
2938 &mut self.subnet,
2939 decoder,
2940 offset + 0,
2941 _depth
2942 )?;
2943 Ok(())
2944 }
2945 }
2946
2947 impl fidl::encoding::ValueTypeMarker for LegacyJoiningMakeJoinableRequest {
2948 type Borrowed<'a> = &'a Self;
2949 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2950 value
2951 }
2952 }
2953
2954 unsafe impl fidl::encoding::TypeMarker for LegacyJoiningMakeJoinableRequest {
2955 type Owned = Self;
2956
2957 #[inline(always)]
2958 fn inline_align(_context: fidl::encoding::Context) -> usize {
2959 8
2960 }
2961
2962 #[inline(always)]
2963 fn inline_size(_context: fidl::encoding::Context) -> usize {
2964 16
2965 }
2966 }
2967
2968 unsafe impl<D: fidl::encoding::ResourceDialect>
2969 fidl::encoding::Encode<LegacyJoiningMakeJoinableRequest, D>
2970 for &LegacyJoiningMakeJoinableRequest
2971 {
2972 #[inline]
2973 unsafe fn encode(
2974 self,
2975 encoder: &mut fidl::encoding::Encoder<'_, D>,
2976 offset: usize,
2977 _depth: fidl::encoding::Depth,
2978 ) -> fidl::Result<()> {
2979 encoder.debug_check_bounds::<LegacyJoiningMakeJoinableRequest>(offset);
2980 unsafe {
2981 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2983 (buf_ptr as *mut LegacyJoiningMakeJoinableRequest)
2984 .write_unaligned((self as *const LegacyJoiningMakeJoinableRequest).read());
2985 let padding_ptr = buf_ptr.offset(8) as *mut u64;
2988 let padding_mask = 0xffffffffffff0000u64;
2989 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
2990 }
2991 Ok(())
2992 }
2993 }
2994 unsafe impl<
2995 D: fidl::encoding::ResourceDialect,
2996 T0: fidl::encoding::Encode<i64, D>,
2997 T1: fidl::encoding::Encode<u16, D>,
2998 > fidl::encoding::Encode<LegacyJoiningMakeJoinableRequest, D> for (T0, T1)
2999 {
3000 #[inline]
3001 unsafe fn encode(
3002 self,
3003 encoder: &mut fidl::encoding::Encoder<'_, D>,
3004 offset: usize,
3005 depth: fidl::encoding::Depth,
3006 ) -> fidl::Result<()> {
3007 encoder.debug_check_bounds::<LegacyJoiningMakeJoinableRequest>(offset);
3008 unsafe {
3011 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
3012 (ptr as *mut u64).write_unaligned(0);
3013 }
3014 self.0.encode(encoder, offset + 0, depth)?;
3016 self.1.encode(encoder, offset + 8, depth)?;
3017 Ok(())
3018 }
3019 }
3020
3021 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3022 for LegacyJoiningMakeJoinableRequest
3023 {
3024 #[inline(always)]
3025 fn new_empty() -> Self {
3026 Self { duration: fidl::new_empty!(i64, D), port: fidl::new_empty!(u16, D) }
3027 }
3028
3029 #[inline]
3030 unsafe fn decode(
3031 &mut self,
3032 decoder: &mut fidl::encoding::Decoder<'_, D>,
3033 offset: usize,
3034 _depth: fidl::encoding::Depth,
3035 ) -> fidl::Result<()> {
3036 decoder.debug_check_bounds::<Self>(offset);
3037 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3038 let ptr = unsafe { buf_ptr.offset(8) };
3040 let padval = unsafe { (ptr as *const u64).read_unaligned() };
3041 let mask = 0xffffffffffff0000u64;
3042 let maskedval = padval & mask;
3043 if maskedval != 0 {
3044 return Err(fidl::Error::NonZeroPadding {
3045 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
3046 });
3047 }
3048 unsafe {
3050 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
3051 }
3052 Ok(())
3053 }
3054 }
3055
3056 impl fidl::encoding::ValueTypeMarker for ProvisioningMonitorWatchProgressResponse {
3057 type Borrowed<'a> = &'a Self;
3058 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3059 value
3060 }
3061 }
3062
3063 unsafe impl fidl::encoding::TypeMarker for ProvisioningMonitorWatchProgressResponse {
3064 type Owned = Self;
3065
3066 #[inline(always)]
3067 fn inline_align(_context: fidl::encoding::Context) -> usize {
3068 8
3069 }
3070
3071 #[inline(always)]
3072 fn inline_size(_context: fidl::encoding::Context) -> usize {
3073 16
3074 }
3075 }
3076
3077 unsafe impl<D: fidl::encoding::ResourceDialect>
3078 fidl::encoding::Encode<ProvisioningMonitorWatchProgressResponse, D>
3079 for &ProvisioningMonitorWatchProgressResponse
3080 {
3081 #[inline]
3082 unsafe fn encode(
3083 self,
3084 encoder: &mut fidl::encoding::Encoder<'_, D>,
3085 offset: usize,
3086 _depth: fidl::encoding::Depth,
3087 ) -> fidl::Result<()> {
3088 encoder.debug_check_bounds::<ProvisioningMonitorWatchProgressResponse>(offset);
3089 fidl::encoding::Encode::<ProvisioningMonitorWatchProgressResponse, D>::encode(
3091 (<ProvisioningProgress as fidl::encoding::ValueTypeMarker>::borrow(&self.progress),),
3092 encoder,
3093 offset,
3094 _depth,
3095 )
3096 }
3097 }
3098 unsafe impl<
3099 D: fidl::encoding::ResourceDialect,
3100 T0: fidl::encoding::Encode<ProvisioningProgress, D>,
3101 > fidl::encoding::Encode<ProvisioningMonitorWatchProgressResponse, D> for (T0,)
3102 {
3103 #[inline]
3104 unsafe fn encode(
3105 self,
3106 encoder: &mut fidl::encoding::Encoder<'_, D>,
3107 offset: usize,
3108 depth: fidl::encoding::Depth,
3109 ) -> fidl::Result<()> {
3110 encoder.debug_check_bounds::<ProvisioningMonitorWatchProgressResponse>(offset);
3111 self.0.encode(encoder, offset + 0, depth)?;
3115 Ok(())
3116 }
3117 }
3118
3119 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3120 for ProvisioningMonitorWatchProgressResponse
3121 {
3122 #[inline(always)]
3123 fn new_empty() -> Self {
3124 Self { progress: fidl::new_empty!(ProvisioningProgress, D) }
3125 }
3126
3127 #[inline]
3128 unsafe fn decode(
3129 &mut self,
3130 decoder: &mut fidl::encoding::Decoder<'_, D>,
3131 offset: usize,
3132 _depth: fidl::encoding::Depth,
3133 ) -> fidl::Result<()> {
3134 decoder.debug_check_bounds::<Self>(offset);
3135 fidl::decode!(
3137 ProvisioningProgress,
3138 D,
3139 &mut self.progress,
3140 decoder,
3141 offset + 0,
3142 _depth
3143 )?;
3144 Ok(())
3145 }
3146 }
3147
3148 impl fidl::encoding::ValueTypeMarker for TelemetryProviderGetTelemetryResponse {
3149 type Borrowed<'a> = &'a Self;
3150 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3151 value
3152 }
3153 }
3154
3155 unsafe impl fidl::encoding::TypeMarker for TelemetryProviderGetTelemetryResponse {
3156 type Owned = Self;
3157
3158 #[inline(always)]
3159 fn inline_align(_context: fidl::encoding::Context) -> usize {
3160 8
3161 }
3162
3163 #[inline(always)]
3164 fn inline_size(_context: fidl::encoding::Context) -> usize {
3165 16
3166 }
3167 }
3168
3169 unsafe impl<D: fidl::encoding::ResourceDialect>
3170 fidl::encoding::Encode<TelemetryProviderGetTelemetryResponse, D>
3171 for &TelemetryProviderGetTelemetryResponse
3172 {
3173 #[inline]
3174 unsafe fn encode(
3175 self,
3176 encoder: &mut fidl::encoding::Encoder<'_, D>,
3177 offset: usize,
3178 _depth: fidl::encoding::Depth,
3179 ) -> fidl::Result<()> {
3180 encoder.debug_check_bounds::<TelemetryProviderGetTelemetryResponse>(offset);
3181 fidl::encoding::Encode::<TelemetryProviderGetTelemetryResponse, D>::encode(
3183 (<Telemetry as fidl::encoding::ValueTypeMarker>::borrow(&self.telemetry),),
3184 encoder,
3185 offset,
3186 _depth,
3187 )
3188 }
3189 }
3190 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Telemetry, D>>
3191 fidl::encoding::Encode<TelemetryProviderGetTelemetryResponse, D> for (T0,)
3192 {
3193 #[inline]
3194 unsafe fn encode(
3195 self,
3196 encoder: &mut fidl::encoding::Encoder<'_, D>,
3197 offset: usize,
3198 depth: fidl::encoding::Depth,
3199 ) -> fidl::Result<()> {
3200 encoder.debug_check_bounds::<TelemetryProviderGetTelemetryResponse>(offset);
3201 self.0.encode(encoder, offset + 0, depth)?;
3205 Ok(())
3206 }
3207 }
3208
3209 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3210 for TelemetryProviderGetTelemetryResponse
3211 {
3212 #[inline(always)]
3213 fn new_empty() -> Self {
3214 Self { telemetry: fidl::new_empty!(Telemetry, D) }
3215 }
3216
3217 #[inline]
3218 unsafe fn decode(
3219 &mut self,
3220 decoder: &mut fidl::encoding::Decoder<'_, D>,
3221 offset: usize,
3222 _depth: fidl::encoding::Depth,
3223 ) -> fidl::Result<()> {
3224 decoder.debug_check_bounds::<Self>(offset);
3225 fidl::decode!(Telemetry, D, &mut self.telemetry, decoder, offset + 0, _depth)?;
3227 Ok(())
3228 }
3229 }
3230
3231 impl BeaconInfo {
3232 #[inline(always)]
3233 fn max_ordinal_present(&self) -> u64 {
3234 if let Some(_) = self.lqi {
3235 return 4;
3236 }
3237 if let Some(_) = self.rssi {
3238 return 3;
3239 }
3240 if let Some(_) = self.identity {
3241 return 2;
3242 }
3243 if let Some(_) = self.address {
3244 return 1;
3245 }
3246 0
3247 }
3248 }
3249
3250 impl fidl::encoding::ValueTypeMarker for BeaconInfo {
3251 type Borrowed<'a> = &'a Self;
3252 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3253 value
3254 }
3255 }
3256
3257 unsafe impl fidl::encoding::TypeMarker for BeaconInfo {
3258 type Owned = Self;
3259
3260 #[inline(always)]
3261 fn inline_align(_context: fidl::encoding::Context) -> usize {
3262 8
3263 }
3264
3265 #[inline(always)]
3266 fn inline_size(_context: fidl::encoding::Context) -> usize {
3267 16
3268 }
3269 }
3270
3271 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BeaconInfo, D>
3272 for &BeaconInfo
3273 {
3274 unsafe fn encode(
3275 self,
3276 encoder: &mut fidl::encoding::Encoder<'_, D>,
3277 offset: usize,
3278 mut depth: fidl::encoding::Depth,
3279 ) -> fidl::Result<()> {
3280 encoder.debug_check_bounds::<BeaconInfo>(offset);
3281 let max_ordinal: u64 = self.max_ordinal_present();
3283 encoder.write_num(max_ordinal, offset);
3284 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3285 if max_ordinal == 0 {
3287 return Ok(());
3288 }
3289 depth.increment()?;
3290 let envelope_size = 8;
3291 let bytes_len = max_ordinal as usize * envelope_size;
3292 #[allow(unused_variables)]
3293 let offset = encoder.out_of_line_offset(bytes_len);
3294 let mut _prev_end_offset: usize = 0;
3295 if 1 > max_ordinal {
3296 return Ok(());
3297 }
3298
3299 let cur_offset: usize = (1 - 1) * envelope_size;
3302
3303 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3305
3306 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan__common::MacAddress, D>(
3311 self.address.as_ref().map(<fidl_fuchsia_lowpan__common::MacAddress as fidl::encoding::ValueTypeMarker>::borrow),
3312 encoder, offset + cur_offset, depth
3313 )?;
3314
3315 _prev_end_offset = cur_offset + envelope_size;
3316 if 2 > max_ordinal {
3317 return Ok(());
3318 }
3319
3320 let cur_offset: usize = (2 - 1) * envelope_size;
3323
3324 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3326
3327 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan_device__common::Identity, D>(
3332 self.identity.as_ref().map(<fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::ValueTypeMarker>::borrow),
3333 encoder, offset + cur_offset, depth
3334 )?;
3335
3336 _prev_end_offset = cur_offset + envelope_size;
3337 if 3 > max_ordinal {
3338 return Ok(());
3339 }
3340
3341 let cur_offset: usize = (3 - 1) * envelope_size;
3344
3345 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3347
3348 fidl::encoding::encode_in_envelope_optional::<i8, D>(
3353 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
3354 encoder,
3355 offset + cur_offset,
3356 depth,
3357 )?;
3358
3359 _prev_end_offset = cur_offset + envelope_size;
3360 if 4 > max_ordinal {
3361 return Ok(());
3362 }
3363
3364 let cur_offset: usize = (4 - 1) * envelope_size;
3367
3368 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3370
3371 fidl::encoding::encode_in_envelope_optional::<u8, D>(
3376 self.lqi.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
3377 encoder,
3378 offset + cur_offset,
3379 depth,
3380 )?;
3381
3382 _prev_end_offset = cur_offset + envelope_size;
3383
3384 Ok(())
3385 }
3386 }
3387
3388 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BeaconInfo {
3389 #[inline(always)]
3390 fn new_empty() -> Self {
3391 Self::default()
3392 }
3393
3394 unsafe fn decode(
3395 &mut self,
3396 decoder: &mut fidl::encoding::Decoder<'_, D>,
3397 offset: usize,
3398 mut depth: fidl::encoding::Depth,
3399 ) -> fidl::Result<()> {
3400 decoder.debug_check_bounds::<Self>(offset);
3401 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3402 None => return Err(fidl::Error::NotNullable),
3403 Some(len) => len,
3404 };
3405 if len == 0 {
3407 return Ok(());
3408 };
3409 depth.increment()?;
3410 let envelope_size = 8;
3411 let bytes_len = len * envelope_size;
3412 let offset = decoder.out_of_line_offset(bytes_len)?;
3413 let mut _next_ordinal_to_read = 0;
3415 let mut next_offset = offset;
3416 let end_offset = offset + bytes_len;
3417 _next_ordinal_to_read += 1;
3418 if next_offset >= end_offset {
3419 return Ok(());
3420 }
3421
3422 while _next_ordinal_to_read < 1 {
3424 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3425 _next_ordinal_to_read += 1;
3426 next_offset += envelope_size;
3427 }
3428
3429 let next_out_of_line = decoder.next_out_of_line();
3430 let handles_before = decoder.remaining_handles();
3431 if let Some((inlined, num_bytes, num_handles)) =
3432 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3433 {
3434 let member_inline_size = <fidl_fuchsia_lowpan__common::MacAddress as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3435 if inlined != (member_inline_size <= 4) {
3436 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3437 }
3438 let inner_offset;
3439 let mut inner_depth = depth.clone();
3440 if inlined {
3441 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3442 inner_offset = next_offset;
3443 } else {
3444 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3445 inner_depth.increment()?;
3446 }
3447 let val_ref = self.address.get_or_insert_with(|| {
3448 fidl::new_empty!(fidl_fuchsia_lowpan__common::MacAddress, D)
3449 });
3450 fidl::decode!(
3451 fidl_fuchsia_lowpan__common::MacAddress,
3452 D,
3453 val_ref,
3454 decoder,
3455 inner_offset,
3456 inner_depth
3457 )?;
3458 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3459 {
3460 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3461 }
3462 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3463 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3464 }
3465 }
3466
3467 next_offset += envelope_size;
3468 _next_ordinal_to_read += 1;
3469 if next_offset >= end_offset {
3470 return Ok(());
3471 }
3472
3473 while _next_ordinal_to_read < 2 {
3475 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3476 _next_ordinal_to_read += 1;
3477 next_offset += envelope_size;
3478 }
3479
3480 let next_out_of_line = decoder.next_out_of_line();
3481 let handles_before = decoder.remaining_handles();
3482 if let Some((inlined, num_bytes, num_handles)) =
3483 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3484 {
3485 let member_inline_size = <fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3486 if inlined != (member_inline_size <= 4) {
3487 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3488 }
3489 let inner_offset;
3490 let mut inner_depth = depth.clone();
3491 if inlined {
3492 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3493 inner_offset = next_offset;
3494 } else {
3495 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3496 inner_depth.increment()?;
3497 }
3498 let val_ref = self.identity.get_or_insert_with(|| {
3499 fidl::new_empty!(fidl_fuchsia_lowpan_device__common::Identity, D)
3500 });
3501 fidl::decode!(
3502 fidl_fuchsia_lowpan_device__common::Identity,
3503 D,
3504 val_ref,
3505 decoder,
3506 inner_offset,
3507 inner_depth
3508 )?;
3509 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3510 {
3511 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3512 }
3513 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3514 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3515 }
3516 }
3517
3518 next_offset += envelope_size;
3519 _next_ordinal_to_read += 1;
3520 if next_offset >= end_offset {
3521 return Ok(());
3522 }
3523
3524 while _next_ordinal_to_read < 3 {
3526 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3527 _next_ordinal_to_read += 1;
3528 next_offset += envelope_size;
3529 }
3530
3531 let next_out_of_line = decoder.next_out_of_line();
3532 let handles_before = decoder.remaining_handles();
3533 if let Some((inlined, num_bytes, num_handles)) =
3534 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3535 {
3536 let member_inline_size =
3537 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3538 if inlined != (member_inline_size <= 4) {
3539 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3540 }
3541 let inner_offset;
3542 let mut inner_depth = depth.clone();
3543 if inlined {
3544 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3545 inner_offset = next_offset;
3546 } else {
3547 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3548 inner_depth.increment()?;
3549 }
3550 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
3551 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
3552 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3553 {
3554 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3555 }
3556 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3557 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3558 }
3559 }
3560
3561 next_offset += envelope_size;
3562 _next_ordinal_to_read += 1;
3563 if next_offset >= end_offset {
3564 return Ok(());
3565 }
3566
3567 while _next_ordinal_to_read < 4 {
3569 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3570 _next_ordinal_to_read += 1;
3571 next_offset += envelope_size;
3572 }
3573
3574 let next_out_of_line = decoder.next_out_of_line();
3575 let handles_before = decoder.remaining_handles();
3576 if let Some((inlined, num_bytes, num_handles)) =
3577 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3578 {
3579 let member_inline_size =
3580 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3581 if inlined != (member_inline_size <= 4) {
3582 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3583 }
3584 let inner_offset;
3585 let mut inner_depth = depth.clone();
3586 if inlined {
3587 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3588 inner_offset = next_offset;
3589 } else {
3590 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3591 inner_depth.increment()?;
3592 }
3593 let val_ref = self.lqi.get_or_insert_with(|| fidl::new_empty!(u8, D));
3594 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
3595 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3596 {
3597 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3598 }
3599 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3600 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3601 }
3602 }
3603
3604 next_offset += envelope_size;
3605
3606 while next_offset < end_offset {
3608 _next_ordinal_to_read += 1;
3609 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3610 next_offset += envelope_size;
3611 }
3612
3613 Ok(())
3614 }
3615 }
3616
3617 impl BorderRoutingCounters {
3618 #[inline(always)]
3619 fn max_ordinal_present(&self) -> u64 {
3620 if let Some(_) = self.outbound_internet_bytes {
3621 return 18;
3622 }
3623 if let Some(_) = self.outbound_internet_packets {
3624 return 17;
3625 }
3626 if let Some(_) = self.inbound_internet_bytes {
3627 return 16;
3628 }
3629 if let Some(_) = self.inbound_internet_packets {
3630 return 15;
3631 }
3632 if let Some(_) = self.rs_tx_failure {
3633 return 14;
3634 }
3635 if let Some(_) = self.rs_tx_success {
3636 return 13;
3637 }
3638 if let Some(_) = self.rs_rx {
3639 return 12;
3640 }
3641 if let Some(_) = self.ra_tx_failure {
3642 return 11;
3643 }
3644 if let Some(_) = self.ra_tx_success {
3645 return 10;
3646 }
3647 if let Some(_) = self.ra_rx {
3648 return 9;
3649 }
3650 if let Some(_) = self.outbound_multicast_bytes {
3651 return 8;
3652 }
3653 if let Some(_) = self.outbound_multicast_packets {
3654 return 7;
3655 }
3656 if let Some(_) = self.outbound_unicast_bytes {
3657 return 6;
3658 }
3659 if let Some(_) = self.outbound_unicast_packets {
3660 return 5;
3661 }
3662 if let Some(_) = self.inbound_multicast_bytes {
3663 return 4;
3664 }
3665 if let Some(_) = self.inbound_multicast_packets {
3666 return 3;
3667 }
3668 if let Some(_) = self.inbound_unicast_bytes {
3669 return 2;
3670 }
3671 if let Some(_) = self.inbound_unicast_packets {
3672 return 1;
3673 }
3674 0
3675 }
3676 }
3677
3678 impl fidl::encoding::ValueTypeMarker for BorderRoutingCounters {
3679 type Borrowed<'a> = &'a Self;
3680 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3681 value
3682 }
3683 }
3684
3685 unsafe impl fidl::encoding::TypeMarker for BorderRoutingCounters {
3686 type Owned = Self;
3687
3688 #[inline(always)]
3689 fn inline_align(_context: fidl::encoding::Context) -> usize {
3690 8
3691 }
3692
3693 #[inline(always)]
3694 fn inline_size(_context: fidl::encoding::Context) -> usize {
3695 16
3696 }
3697 }
3698
3699 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRoutingCounters, D>
3700 for &BorderRoutingCounters
3701 {
3702 unsafe fn encode(
3703 self,
3704 encoder: &mut fidl::encoding::Encoder<'_, D>,
3705 offset: usize,
3706 mut depth: fidl::encoding::Depth,
3707 ) -> fidl::Result<()> {
3708 encoder.debug_check_bounds::<BorderRoutingCounters>(offset);
3709 let max_ordinal: u64 = self.max_ordinal_present();
3711 encoder.write_num(max_ordinal, offset);
3712 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3713 if max_ordinal == 0 {
3715 return Ok(());
3716 }
3717 depth.increment()?;
3718 let envelope_size = 8;
3719 let bytes_len = max_ordinal as usize * envelope_size;
3720 #[allow(unused_variables)]
3721 let offset = encoder.out_of_line_offset(bytes_len);
3722 let mut _prev_end_offset: usize = 0;
3723 if 1 > max_ordinal {
3724 return Ok(());
3725 }
3726
3727 let cur_offset: usize = (1 - 1) * envelope_size;
3730
3731 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3733
3734 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3739 self.inbound_unicast_packets
3740 .as_ref()
3741 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3742 encoder,
3743 offset + cur_offset,
3744 depth,
3745 )?;
3746
3747 _prev_end_offset = cur_offset + envelope_size;
3748 if 2 > max_ordinal {
3749 return Ok(());
3750 }
3751
3752 let cur_offset: usize = (2 - 1) * envelope_size;
3755
3756 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3758
3759 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3764 self.inbound_unicast_bytes
3765 .as_ref()
3766 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3767 encoder,
3768 offset + cur_offset,
3769 depth,
3770 )?;
3771
3772 _prev_end_offset = cur_offset + envelope_size;
3773 if 3 > max_ordinal {
3774 return Ok(());
3775 }
3776
3777 let cur_offset: usize = (3 - 1) * envelope_size;
3780
3781 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3783
3784 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3789 self.inbound_multicast_packets
3790 .as_ref()
3791 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3792 encoder,
3793 offset + cur_offset,
3794 depth,
3795 )?;
3796
3797 _prev_end_offset = cur_offset + envelope_size;
3798 if 4 > max_ordinal {
3799 return Ok(());
3800 }
3801
3802 let cur_offset: usize = (4 - 1) * envelope_size;
3805
3806 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3808
3809 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3814 self.inbound_multicast_bytes
3815 .as_ref()
3816 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3817 encoder,
3818 offset + cur_offset,
3819 depth,
3820 )?;
3821
3822 _prev_end_offset = cur_offset + envelope_size;
3823 if 5 > max_ordinal {
3824 return Ok(());
3825 }
3826
3827 let cur_offset: usize = (5 - 1) * envelope_size;
3830
3831 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3833
3834 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3839 self.outbound_unicast_packets
3840 .as_ref()
3841 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3842 encoder,
3843 offset + cur_offset,
3844 depth,
3845 )?;
3846
3847 _prev_end_offset = cur_offset + envelope_size;
3848 if 6 > max_ordinal {
3849 return Ok(());
3850 }
3851
3852 let cur_offset: usize = (6 - 1) * envelope_size;
3855
3856 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3858
3859 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3864 self.outbound_unicast_bytes
3865 .as_ref()
3866 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3867 encoder,
3868 offset + cur_offset,
3869 depth,
3870 )?;
3871
3872 _prev_end_offset = cur_offset + envelope_size;
3873 if 7 > max_ordinal {
3874 return Ok(());
3875 }
3876
3877 let cur_offset: usize = (7 - 1) * envelope_size;
3880
3881 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3883
3884 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3889 self.outbound_multicast_packets
3890 .as_ref()
3891 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3892 encoder,
3893 offset + cur_offset,
3894 depth,
3895 )?;
3896
3897 _prev_end_offset = cur_offset + envelope_size;
3898 if 8 > max_ordinal {
3899 return Ok(());
3900 }
3901
3902 let cur_offset: usize = (8 - 1) * envelope_size;
3905
3906 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3908
3909 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3914 self.outbound_multicast_bytes
3915 .as_ref()
3916 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3917 encoder,
3918 offset + cur_offset,
3919 depth,
3920 )?;
3921
3922 _prev_end_offset = cur_offset + envelope_size;
3923 if 9 > max_ordinal {
3924 return Ok(());
3925 }
3926
3927 let cur_offset: usize = (9 - 1) * envelope_size;
3930
3931 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3933
3934 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3939 self.ra_rx.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3940 encoder,
3941 offset + cur_offset,
3942 depth,
3943 )?;
3944
3945 _prev_end_offset = cur_offset + envelope_size;
3946 if 10 > max_ordinal {
3947 return Ok(());
3948 }
3949
3950 let cur_offset: usize = (10 - 1) * envelope_size;
3953
3954 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3956
3957 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3962 self.ra_tx_success.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3963 encoder,
3964 offset + cur_offset,
3965 depth,
3966 )?;
3967
3968 _prev_end_offset = cur_offset + envelope_size;
3969 if 11 > max_ordinal {
3970 return Ok(());
3971 }
3972
3973 let cur_offset: usize = (11 - 1) * envelope_size;
3976
3977 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3979
3980 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3985 self.ra_tx_failure.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3986 encoder,
3987 offset + cur_offset,
3988 depth,
3989 )?;
3990
3991 _prev_end_offset = cur_offset + envelope_size;
3992 if 12 > max_ordinal {
3993 return Ok(());
3994 }
3995
3996 let cur_offset: usize = (12 - 1) * envelope_size;
3999
4000 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4002
4003 fidl::encoding::encode_in_envelope_optional::<u32, D>(
4008 self.rs_rx.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4009 encoder,
4010 offset + cur_offset,
4011 depth,
4012 )?;
4013
4014 _prev_end_offset = cur_offset + envelope_size;
4015 if 13 > max_ordinal {
4016 return Ok(());
4017 }
4018
4019 let cur_offset: usize = (13 - 1) * envelope_size;
4022
4023 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4025
4026 fidl::encoding::encode_in_envelope_optional::<u32, D>(
4031 self.rs_tx_success.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4032 encoder,
4033 offset + cur_offset,
4034 depth,
4035 )?;
4036
4037 _prev_end_offset = cur_offset + envelope_size;
4038 if 14 > max_ordinal {
4039 return Ok(());
4040 }
4041
4042 let cur_offset: usize = (14 - 1) * envelope_size;
4045
4046 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4048
4049 fidl::encoding::encode_in_envelope_optional::<u32, D>(
4054 self.rs_tx_failure.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4055 encoder,
4056 offset + cur_offset,
4057 depth,
4058 )?;
4059
4060 _prev_end_offset = cur_offset + envelope_size;
4061 if 15 > max_ordinal {
4062 return Ok(());
4063 }
4064
4065 let cur_offset: usize = (15 - 1) * envelope_size;
4068
4069 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4071
4072 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4077 self.inbound_internet_packets
4078 .as_ref()
4079 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4080 encoder,
4081 offset + cur_offset,
4082 depth,
4083 )?;
4084
4085 _prev_end_offset = cur_offset + envelope_size;
4086 if 16 > max_ordinal {
4087 return Ok(());
4088 }
4089
4090 let cur_offset: usize = (16 - 1) * envelope_size;
4093
4094 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4096
4097 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4102 self.inbound_internet_bytes
4103 .as_ref()
4104 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4105 encoder,
4106 offset + cur_offset,
4107 depth,
4108 )?;
4109
4110 _prev_end_offset = cur_offset + envelope_size;
4111 if 17 > max_ordinal {
4112 return Ok(());
4113 }
4114
4115 let cur_offset: usize = (17 - 1) * envelope_size;
4118
4119 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4121
4122 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4127 self.outbound_internet_packets
4128 .as_ref()
4129 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4130 encoder,
4131 offset + cur_offset,
4132 depth,
4133 )?;
4134
4135 _prev_end_offset = cur_offset + envelope_size;
4136 if 18 > max_ordinal {
4137 return Ok(());
4138 }
4139
4140 let cur_offset: usize = (18 - 1) * envelope_size;
4143
4144 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4146
4147 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4152 self.outbound_internet_bytes
4153 .as_ref()
4154 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4155 encoder,
4156 offset + cur_offset,
4157 depth,
4158 )?;
4159
4160 _prev_end_offset = cur_offset + envelope_size;
4161
4162 Ok(())
4163 }
4164 }
4165
4166 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRoutingCounters {
4167 #[inline(always)]
4168 fn new_empty() -> Self {
4169 Self::default()
4170 }
4171
4172 unsafe fn decode(
4173 &mut self,
4174 decoder: &mut fidl::encoding::Decoder<'_, D>,
4175 offset: usize,
4176 mut depth: fidl::encoding::Depth,
4177 ) -> fidl::Result<()> {
4178 decoder.debug_check_bounds::<Self>(offset);
4179 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4180 None => return Err(fidl::Error::NotNullable),
4181 Some(len) => len,
4182 };
4183 if len == 0 {
4185 return Ok(());
4186 };
4187 depth.increment()?;
4188 let envelope_size = 8;
4189 let bytes_len = len * envelope_size;
4190 let offset = decoder.out_of_line_offset(bytes_len)?;
4191 let mut _next_ordinal_to_read = 0;
4193 let mut next_offset = offset;
4194 let end_offset = offset + bytes_len;
4195 _next_ordinal_to_read += 1;
4196 if next_offset >= end_offset {
4197 return Ok(());
4198 }
4199
4200 while _next_ordinal_to_read < 1 {
4202 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4203 _next_ordinal_to_read += 1;
4204 next_offset += envelope_size;
4205 }
4206
4207 let next_out_of_line = decoder.next_out_of_line();
4208 let handles_before = decoder.remaining_handles();
4209 if let Some((inlined, num_bytes, num_handles)) =
4210 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4211 {
4212 let member_inline_size =
4213 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4214 if inlined != (member_inline_size <= 4) {
4215 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4216 }
4217 let inner_offset;
4218 let mut inner_depth = depth.clone();
4219 if inlined {
4220 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4221 inner_offset = next_offset;
4222 } else {
4223 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4224 inner_depth.increment()?;
4225 }
4226 let val_ref =
4227 self.inbound_unicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4228 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4229 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4230 {
4231 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4232 }
4233 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4234 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4235 }
4236 }
4237
4238 next_offset += envelope_size;
4239 _next_ordinal_to_read += 1;
4240 if next_offset >= end_offset {
4241 return Ok(());
4242 }
4243
4244 while _next_ordinal_to_read < 2 {
4246 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4247 _next_ordinal_to_read += 1;
4248 next_offset += envelope_size;
4249 }
4250
4251 let next_out_of_line = decoder.next_out_of_line();
4252 let handles_before = decoder.remaining_handles();
4253 if let Some((inlined, num_bytes, num_handles)) =
4254 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4255 {
4256 let member_inline_size =
4257 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4258 if inlined != (member_inline_size <= 4) {
4259 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4260 }
4261 let inner_offset;
4262 let mut inner_depth = depth.clone();
4263 if inlined {
4264 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4265 inner_offset = next_offset;
4266 } else {
4267 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4268 inner_depth.increment()?;
4269 }
4270 let val_ref =
4271 self.inbound_unicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4272 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4273 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4274 {
4275 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4276 }
4277 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4278 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4279 }
4280 }
4281
4282 next_offset += envelope_size;
4283 _next_ordinal_to_read += 1;
4284 if next_offset >= end_offset {
4285 return Ok(());
4286 }
4287
4288 while _next_ordinal_to_read < 3 {
4290 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4291 _next_ordinal_to_read += 1;
4292 next_offset += envelope_size;
4293 }
4294
4295 let next_out_of_line = decoder.next_out_of_line();
4296 let handles_before = decoder.remaining_handles();
4297 if let Some((inlined, num_bytes, num_handles)) =
4298 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4299 {
4300 let member_inline_size =
4301 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4302 if inlined != (member_inline_size <= 4) {
4303 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4304 }
4305 let inner_offset;
4306 let mut inner_depth = depth.clone();
4307 if inlined {
4308 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4309 inner_offset = next_offset;
4310 } else {
4311 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4312 inner_depth.increment()?;
4313 }
4314 let val_ref =
4315 self.inbound_multicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4316 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4317 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4318 {
4319 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4320 }
4321 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4322 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4323 }
4324 }
4325
4326 next_offset += envelope_size;
4327 _next_ordinal_to_read += 1;
4328 if next_offset >= end_offset {
4329 return Ok(());
4330 }
4331
4332 while _next_ordinal_to_read < 4 {
4334 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4335 _next_ordinal_to_read += 1;
4336 next_offset += envelope_size;
4337 }
4338
4339 let next_out_of_line = decoder.next_out_of_line();
4340 let handles_before = decoder.remaining_handles();
4341 if let Some((inlined, num_bytes, num_handles)) =
4342 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4343 {
4344 let member_inline_size =
4345 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4346 if inlined != (member_inline_size <= 4) {
4347 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4348 }
4349 let inner_offset;
4350 let mut inner_depth = depth.clone();
4351 if inlined {
4352 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4353 inner_offset = next_offset;
4354 } else {
4355 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4356 inner_depth.increment()?;
4357 }
4358 let val_ref =
4359 self.inbound_multicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4360 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4361 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4362 {
4363 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4364 }
4365 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4366 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4367 }
4368 }
4369
4370 next_offset += envelope_size;
4371 _next_ordinal_to_read += 1;
4372 if next_offset >= end_offset {
4373 return Ok(());
4374 }
4375
4376 while _next_ordinal_to_read < 5 {
4378 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4379 _next_ordinal_to_read += 1;
4380 next_offset += envelope_size;
4381 }
4382
4383 let next_out_of_line = decoder.next_out_of_line();
4384 let handles_before = decoder.remaining_handles();
4385 if let Some((inlined, num_bytes, num_handles)) =
4386 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4387 {
4388 let member_inline_size =
4389 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4390 if inlined != (member_inline_size <= 4) {
4391 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4392 }
4393 let inner_offset;
4394 let mut inner_depth = depth.clone();
4395 if inlined {
4396 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4397 inner_offset = next_offset;
4398 } else {
4399 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4400 inner_depth.increment()?;
4401 }
4402 let val_ref =
4403 self.outbound_unicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4404 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4405 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4406 {
4407 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4408 }
4409 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4410 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4411 }
4412 }
4413
4414 next_offset += envelope_size;
4415 _next_ordinal_to_read += 1;
4416 if next_offset >= end_offset {
4417 return Ok(());
4418 }
4419
4420 while _next_ordinal_to_read < 6 {
4422 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4423 _next_ordinal_to_read += 1;
4424 next_offset += envelope_size;
4425 }
4426
4427 let next_out_of_line = decoder.next_out_of_line();
4428 let handles_before = decoder.remaining_handles();
4429 if let Some((inlined, num_bytes, num_handles)) =
4430 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4431 {
4432 let member_inline_size =
4433 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4434 if inlined != (member_inline_size <= 4) {
4435 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4436 }
4437 let inner_offset;
4438 let mut inner_depth = depth.clone();
4439 if inlined {
4440 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4441 inner_offset = next_offset;
4442 } else {
4443 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4444 inner_depth.increment()?;
4445 }
4446 let val_ref =
4447 self.outbound_unicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4448 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4449 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4450 {
4451 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4452 }
4453 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4454 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4455 }
4456 }
4457
4458 next_offset += envelope_size;
4459 _next_ordinal_to_read += 1;
4460 if next_offset >= end_offset {
4461 return Ok(());
4462 }
4463
4464 while _next_ordinal_to_read < 7 {
4466 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4467 _next_ordinal_to_read += 1;
4468 next_offset += envelope_size;
4469 }
4470
4471 let next_out_of_line = decoder.next_out_of_line();
4472 let handles_before = decoder.remaining_handles();
4473 if let Some((inlined, num_bytes, num_handles)) =
4474 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4475 {
4476 let member_inline_size =
4477 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4478 if inlined != (member_inline_size <= 4) {
4479 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4480 }
4481 let inner_offset;
4482 let mut inner_depth = depth.clone();
4483 if inlined {
4484 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4485 inner_offset = next_offset;
4486 } else {
4487 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4488 inner_depth.increment()?;
4489 }
4490 let val_ref =
4491 self.outbound_multicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4492 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4493 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4494 {
4495 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4496 }
4497 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4498 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4499 }
4500 }
4501
4502 next_offset += envelope_size;
4503 _next_ordinal_to_read += 1;
4504 if next_offset >= end_offset {
4505 return Ok(());
4506 }
4507
4508 while _next_ordinal_to_read < 8 {
4510 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4511 _next_ordinal_to_read += 1;
4512 next_offset += envelope_size;
4513 }
4514
4515 let next_out_of_line = decoder.next_out_of_line();
4516 let handles_before = decoder.remaining_handles();
4517 if let Some((inlined, num_bytes, num_handles)) =
4518 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4519 {
4520 let member_inline_size =
4521 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4522 if inlined != (member_inline_size <= 4) {
4523 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4524 }
4525 let inner_offset;
4526 let mut inner_depth = depth.clone();
4527 if inlined {
4528 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4529 inner_offset = next_offset;
4530 } else {
4531 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4532 inner_depth.increment()?;
4533 }
4534 let val_ref =
4535 self.outbound_multicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4536 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4537 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4538 {
4539 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4540 }
4541 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4542 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4543 }
4544 }
4545
4546 next_offset += envelope_size;
4547 _next_ordinal_to_read += 1;
4548 if next_offset >= end_offset {
4549 return Ok(());
4550 }
4551
4552 while _next_ordinal_to_read < 9 {
4554 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4555 _next_ordinal_to_read += 1;
4556 next_offset += envelope_size;
4557 }
4558
4559 let next_out_of_line = decoder.next_out_of_line();
4560 let handles_before = decoder.remaining_handles();
4561 if let Some((inlined, num_bytes, num_handles)) =
4562 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4563 {
4564 let member_inline_size =
4565 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4566 if inlined != (member_inline_size <= 4) {
4567 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4568 }
4569 let inner_offset;
4570 let mut inner_depth = depth.clone();
4571 if inlined {
4572 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4573 inner_offset = next_offset;
4574 } else {
4575 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4576 inner_depth.increment()?;
4577 }
4578 let val_ref = self.ra_rx.get_or_insert_with(|| fidl::new_empty!(u32, D));
4579 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4580 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4581 {
4582 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4583 }
4584 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4585 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4586 }
4587 }
4588
4589 next_offset += envelope_size;
4590 _next_ordinal_to_read += 1;
4591 if next_offset >= end_offset {
4592 return Ok(());
4593 }
4594
4595 while _next_ordinal_to_read < 10 {
4597 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4598 _next_ordinal_to_read += 1;
4599 next_offset += envelope_size;
4600 }
4601
4602 let next_out_of_line = decoder.next_out_of_line();
4603 let handles_before = decoder.remaining_handles();
4604 if let Some((inlined, num_bytes, num_handles)) =
4605 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4606 {
4607 let member_inline_size =
4608 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4609 if inlined != (member_inline_size <= 4) {
4610 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4611 }
4612 let inner_offset;
4613 let mut inner_depth = depth.clone();
4614 if inlined {
4615 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4616 inner_offset = next_offset;
4617 } else {
4618 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4619 inner_depth.increment()?;
4620 }
4621 let val_ref = self.ra_tx_success.get_or_insert_with(|| fidl::new_empty!(u32, D));
4622 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4623 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4624 {
4625 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4626 }
4627 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4628 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4629 }
4630 }
4631
4632 next_offset += envelope_size;
4633 _next_ordinal_to_read += 1;
4634 if next_offset >= end_offset {
4635 return Ok(());
4636 }
4637
4638 while _next_ordinal_to_read < 11 {
4640 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4641 _next_ordinal_to_read += 1;
4642 next_offset += envelope_size;
4643 }
4644
4645 let next_out_of_line = decoder.next_out_of_line();
4646 let handles_before = decoder.remaining_handles();
4647 if let Some((inlined, num_bytes, num_handles)) =
4648 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4649 {
4650 let member_inline_size =
4651 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4652 if inlined != (member_inline_size <= 4) {
4653 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4654 }
4655 let inner_offset;
4656 let mut inner_depth = depth.clone();
4657 if inlined {
4658 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4659 inner_offset = next_offset;
4660 } else {
4661 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4662 inner_depth.increment()?;
4663 }
4664 let val_ref = self.ra_tx_failure.get_or_insert_with(|| fidl::new_empty!(u32, D));
4665 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4666 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4667 {
4668 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4669 }
4670 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4671 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4672 }
4673 }
4674
4675 next_offset += envelope_size;
4676 _next_ordinal_to_read += 1;
4677 if next_offset >= end_offset {
4678 return Ok(());
4679 }
4680
4681 while _next_ordinal_to_read < 12 {
4683 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4684 _next_ordinal_to_read += 1;
4685 next_offset += envelope_size;
4686 }
4687
4688 let next_out_of_line = decoder.next_out_of_line();
4689 let handles_before = decoder.remaining_handles();
4690 if let Some((inlined, num_bytes, num_handles)) =
4691 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4692 {
4693 let member_inline_size =
4694 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4695 if inlined != (member_inline_size <= 4) {
4696 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4697 }
4698 let inner_offset;
4699 let mut inner_depth = depth.clone();
4700 if inlined {
4701 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4702 inner_offset = next_offset;
4703 } else {
4704 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4705 inner_depth.increment()?;
4706 }
4707 let val_ref = self.rs_rx.get_or_insert_with(|| fidl::new_empty!(u32, D));
4708 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4709 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4710 {
4711 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4712 }
4713 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4714 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4715 }
4716 }
4717
4718 next_offset += envelope_size;
4719 _next_ordinal_to_read += 1;
4720 if next_offset >= end_offset {
4721 return Ok(());
4722 }
4723
4724 while _next_ordinal_to_read < 13 {
4726 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4727 _next_ordinal_to_read += 1;
4728 next_offset += envelope_size;
4729 }
4730
4731 let next_out_of_line = decoder.next_out_of_line();
4732 let handles_before = decoder.remaining_handles();
4733 if let Some((inlined, num_bytes, num_handles)) =
4734 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4735 {
4736 let member_inline_size =
4737 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4738 if inlined != (member_inline_size <= 4) {
4739 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4740 }
4741 let inner_offset;
4742 let mut inner_depth = depth.clone();
4743 if inlined {
4744 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4745 inner_offset = next_offset;
4746 } else {
4747 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4748 inner_depth.increment()?;
4749 }
4750 let val_ref = self.rs_tx_success.get_or_insert_with(|| fidl::new_empty!(u32, D));
4751 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4752 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4753 {
4754 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4755 }
4756 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4757 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4758 }
4759 }
4760
4761 next_offset += envelope_size;
4762 _next_ordinal_to_read += 1;
4763 if next_offset >= end_offset {
4764 return Ok(());
4765 }
4766
4767 while _next_ordinal_to_read < 14 {
4769 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4770 _next_ordinal_to_read += 1;
4771 next_offset += envelope_size;
4772 }
4773
4774 let next_out_of_line = decoder.next_out_of_line();
4775 let handles_before = decoder.remaining_handles();
4776 if let Some((inlined, num_bytes, num_handles)) =
4777 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4778 {
4779 let member_inline_size =
4780 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4781 if inlined != (member_inline_size <= 4) {
4782 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4783 }
4784 let inner_offset;
4785 let mut inner_depth = depth.clone();
4786 if inlined {
4787 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4788 inner_offset = next_offset;
4789 } else {
4790 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4791 inner_depth.increment()?;
4792 }
4793 let val_ref = self.rs_tx_failure.get_or_insert_with(|| fidl::new_empty!(u32, D));
4794 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4795 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4796 {
4797 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4798 }
4799 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4800 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4801 }
4802 }
4803
4804 next_offset += envelope_size;
4805 _next_ordinal_to_read += 1;
4806 if next_offset >= end_offset {
4807 return Ok(());
4808 }
4809
4810 while _next_ordinal_to_read < 15 {
4812 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4813 _next_ordinal_to_read += 1;
4814 next_offset += envelope_size;
4815 }
4816
4817 let next_out_of_line = decoder.next_out_of_line();
4818 let handles_before = decoder.remaining_handles();
4819 if let Some((inlined, num_bytes, num_handles)) =
4820 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4821 {
4822 let member_inline_size =
4823 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4824 if inlined != (member_inline_size <= 4) {
4825 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4826 }
4827 let inner_offset;
4828 let mut inner_depth = depth.clone();
4829 if inlined {
4830 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4831 inner_offset = next_offset;
4832 } else {
4833 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4834 inner_depth.increment()?;
4835 }
4836 let val_ref =
4837 self.inbound_internet_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4838 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4839 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4840 {
4841 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4842 }
4843 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4844 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4845 }
4846 }
4847
4848 next_offset += envelope_size;
4849 _next_ordinal_to_read += 1;
4850 if next_offset >= end_offset {
4851 return Ok(());
4852 }
4853
4854 while _next_ordinal_to_read < 16 {
4856 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4857 _next_ordinal_to_read += 1;
4858 next_offset += envelope_size;
4859 }
4860
4861 let next_out_of_line = decoder.next_out_of_line();
4862 let handles_before = decoder.remaining_handles();
4863 if let Some((inlined, num_bytes, num_handles)) =
4864 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4865 {
4866 let member_inline_size =
4867 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4868 if inlined != (member_inline_size <= 4) {
4869 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4870 }
4871 let inner_offset;
4872 let mut inner_depth = depth.clone();
4873 if inlined {
4874 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4875 inner_offset = next_offset;
4876 } else {
4877 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4878 inner_depth.increment()?;
4879 }
4880 let val_ref =
4881 self.inbound_internet_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4882 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4883 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4884 {
4885 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4886 }
4887 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4888 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4889 }
4890 }
4891
4892 next_offset += envelope_size;
4893 _next_ordinal_to_read += 1;
4894 if next_offset >= end_offset {
4895 return Ok(());
4896 }
4897
4898 while _next_ordinal_to_read < 17 {
4900 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4901 _next_ordinal_to_read += 1;
4902 next_offset += envelope_size;
4903 }
4904
4905 let next_out_of_line = decoder.next_out_of_line();
4906 let handles_before = decoder.remaining_handles();
4907 if let Some((inlined, num_bytes, num_handles)) =
4908 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4909 {
4910 let member_inline_size =
4911 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4912 if inlined != (member_inline_size <= 4) {
4913 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4914 }
4915 let inner_offset;
4916 let mut inner_depth = depth.clone();
4917 if inlined {
4918 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4919 inner_offset = next_offset;
4920 } else {
4921 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4922 inner_depth.increment()?;
4923 }
4924 let val_ref =
4925 self.outbound_internet_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4926 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4927 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4928 {
4929 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4930 }
4931 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4932 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4933 }
4934 }
4935
4936 next_offset += envelope_size;
4937 _next_ordinal_to_read += 1;
4938 if next_offset >= end_offset {
4939 return Ok(());
4940 }
4941
4942 while _next_ordinal_to_read < 18 {
4944 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4945 _next_ordinal_to_read += 1;
4946 next_offset += envelope_size;
4947 }
4948
4949 let next_out_of_line = decoder.next_out_of_line();
4950 let handles_before = decoder.remaining_handles();
4951 if let Some((inlined, num_bytes, num_handles)) =
4952 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4953 {
4954 let member_inline_size =
4955 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4956 if inlined != (member_inline_size <= 4) {
4957 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4958 }
4959 let inner_offset;
4960 let mut inner_depth = depth.clone();
4961 if inlined {
4962 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4963 inner_offset = next_offset;
4964 } else {
4965 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4966 inner_depth.increment()?;
4967 }
4968 let val_ref =
4969 self.outbound_internet_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4970 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4971 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4972 {
4973 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4974 }
4975 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4976 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4977 }
4978 }
4979
4980 next_offset += envelope_size;
4981
4982 while next_offset < end_offset {
4984 _next_ordinal_to_read += 1;
4985 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4986 next_offset += envelope_size;
4987 }
4988
4989 Ok(())
4990 }
4991 }
4992
4993 impl BorderRoutingNat64State {
4994 #[inline(always)]
4995 fn max_ordinal_present(&self) -> u64 {
4996 if let Some(_) = self.translator_state {
4997 return 2;
4998 }
4999 if let Some(_) = self.prefix_manager_state {
5000 return 1;
5001 }
5002 0
5003 }
5004 }
5005
5006 impl fidl::encoding::ValueTypeMarker for BorderRoutingNat64State {
5007 type Borrowed<'a> = &'a Self;
5008 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5009 value
5010 }
5011 }
5012
5013 unsafe impl fidl::encoding::TypeMarker for BorderRoutingNat64State {
5014 type Owned = Self;
5015
5016 #[inline(always)]
5017 fn inline_align(_context: fidl::encoding::Context) -> usize {
5018 8
5019 }
5020
5021 #[inline(always)]
5022 fn inline_size(_context: fidl::encoding::Context) -> usize {
5023 16
5024 }
5025 }
5026
5027 unsafe impl<D: fidl::encoding::ResourceDialect>
5028 fidl::encoding::Encode<BorderRoutingNat64State, D> for &BorderRoutingNat64State
5029 {
5030 unsafe fn encode(
5031 self,
5032 encoder: &mut fidl::encoding::Encoder<'_, D>,
5033 offset: usize,
5034 mut depth: fidl::encoding::Depth,
5035 ) -> fidl::Result<()> {
5036 encoder.debug_check_bounds::<BorderRoutingNat64State>(offset);
5037 let max_ordinal: u64 = self.max_ordinal_present();
5039 encoder.write_num(max_ordinal, offset);
5040 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5041 if max_ordinal == 0 {
5043 return Ok(());
5044 }
5045 depth.increment()?;
5046 let envelope_size = 8;
5047 let bytes_len = max_ordinal as usize * envelope_size;
5048 #[allow(unused_variables)]
5049 let offset = encoder.out_of_line_offset(bytes_len);
5050 let mut _prev_end_offset: usize = 0;
5051 if 1 > max_ordinal {
5052 return Ok(());
5053 }
5054
5055 let cur_offset: usize = (1 - 1) * envelope_size;
5058
5059 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5061
5062 fidl::encoding::encode_in_envelope_optional::<Nat64State, D>(
5067 self.prefix_manager_state
5068 .as_ref()
5069 .map(<Nat64State as fidl::encoding::ValueTypeMarker>::borrow),
5070 encoder,
5071 offset + cur_offset,
5072 depth,
5073 )?;
5074
5075 _prev_end_offset = cur_offset + envelope_size;
5076 if 2 > max_ordinal {
5077 return Ok(());
5078 }
5079
5080 let cur_offset: usize = (2 - 1) * envelope_size;
5083
5084 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5086
5087 fidl::encoding::encode_in_envelope_optional::<Nat64State, D>(
5092 self.translator_state
5093 .as_ref()
5094 .map(<Nat64State as fidl::encoding::ValueTypeMarker>::borrow),
5095 encoder,
5096 offset + cur_offset,
5097 depth,
5098 )?;
5099
5100 _prev_end_offset = cur_offset + envelope_size;
5101
5102 Ok(())
5103 }
5104 }
5105
5106 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5107 for BorderRoutingNat64State
5108 {
5109 #[inline(always)]
5110 fn new_empty() -> Self {
5111 Self::default()
5112 }
5113
5114 unsafe fn decode(
5115 &mut self,
5116 decoder: &mut fidl::encoding::Decoder<'_, D>,
5117 offset: usize,
5118 mut depth: fidl::encoding::Depth,
5119 ) -> fidl::Result<()> {
5120 decoder.debug_check_bounds::<Self>(offset);
5121 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5122 None => return Err(fidl::Error::NotNullable),
5123 Some(len) => len,
5124 };
5125 if len == 0 {
5127 return Ok(());
5128 };
5129 depth.increment()?;
5130 let envelope_size = 8;
5131 let bytes_len = len * envelope_size;
5132 let offset = decoder.out_of_line_offset(bytes_len)?;
5133 let mut _next_ordinal_to_read = 0;
5135 let mut next_offset = offset;
5136 let end_offset = offset + bytes_len;
5137 _next_ordinal_to_read += 1;
5138 if next_offset >= end_offset {
5139 return Ok(());
5140 }
5141
5142 while _next_ordinal_to_read < 1 {
5144 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5145 _next_ordinal_to_read += 1;
5146 next_offset += envelope_size;
5147 }
5148
5149 let next_out_of_line = decoder.next_out_of_line();
5150 let handles_before = decoder.remaining_handles();
5151 if let Some((inlined, num_bytes, num_handles)) =
5152 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5153 {
5154 let member_inline_size =
5155 <Nat64State as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5156 if inlined != (member_inline_size <= 4) {
5157 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5158 }
5159 let inner_offset;
5160 let mut inner_depth = depth.clone();
5161 if inlined {
5162 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5163 inner_offset = next_offset;
5164 } else {
5165 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5166 inner_depth.increment()?;
5167 }
5168 let val_ref = self
5169 .prefix_manager_state
5170 .get_or_insert_with(|| fidl::new_empty!(Nat64State, D));
5171 fidl::decode!(Nat64State, D, val_ref, decoder, inner_offset, inner_depth)?;
5172 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5173 {
5174 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5175 }
5176 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5177 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5178 }
5179 }
5180
5181 next_offset += envelope_size;
5182 _next_ordinal_to_read += 1;
5183 if next_offset >= end_offset {
5184 return Ok(());
5185 }
5186
5187 while _next_ordinal_to_read < 2 {
5189 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5190 _next_ordinal_to_read += 1;
5191 next_offset += envelope_size;
5192 }
5193
5194 let next_out_of_line = decoder.next_out_of_line();
5195 let handles_before = decoder.remaining_handles();
5196 if let Some((inlined, num_bytes, num_handles)) =
5197 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5198 {
5199 let member_inline_size =
5200 <Nat64State as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5201 if inlined != (member_inline_size <= 4) {
5202 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5203 }
5204 let inner_offset;
5205 let mut inner_depth = depth.clone();
5206 if inlined {
5207 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5208 inner_offset = next_offset;
5209 } else {
5210 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5211 inner_depth.increment()?;
5212 }
5213 let val_ref =
5214 self.translator_state.get_or_insert_with(|| fidl::new_empty!(Nat64State, D));
5215 fidl::decode!(Nat64State, D, val_ref, decoder, inner_offset, inner_depth)?;
5216 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5217 {
5218 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5219 }
5220 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5221 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5222 }
5223 }
5224
5225 next_offset += envelope_size;
5226
5227 while next_offset < end_offset {
5229 _next_ordinal_to_read += 1;
5230 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5231 next_offset += envelope_size;
5232 }
5233
5234 Ok(())
5235 }
5236 }
5237
5238 impl BorderRoutingPeer {
5239 #[inline(always)]
5240 fn max_ordinal_present(&self) -> u64 {
5241 if let Some(_) = self.age {
5242 return 2;
5243 }
5244 if let Some(_) = self.thread_rloc {
5245 return 1;
5246 }
5247 0
5248 }
5249 }
5250
5251 impl fidl::encoding::ValueTypeMarker for BorderRoutingPeer {
5252 type Borrowed<'a> = &'a Self;
5253 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5254 value
5255 }
5256 }
5257
5258 unsafe impl fidl::encoding::TypeMarker for BorderRoutingPeer {
5259 type Owned = Self;
5260
5261 #[inline(always)]
5262 fn inline_align(_context: fidl::encoding::Context) -> usize {
5263 8
5264 }
5265
5266 #[inline(always)]
5267 fn inline_size(_context: fidl::encoding::Context) -> usize {
5268 16
5269 }
5270 }
5271
5272 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRoutingPeer, D>
5273 for &BorderRoutingPeer
5274 {
5275 unsafe fn encode(
5276 self,
5277 encoder: &mut fidl::encoding::Encoder<'_, D>,
5278 offset: usize,
5279 mut depth: fidl::encoding::Depth,
5280 ) -> fidl::Result<()> {
5281 encoder.debug_check_bounds::<BorderRoutingPeer>(offset);
5282 let max_ordinal: u64 = self.max_ordinal_present();
5284 encoder.write_num(max_ordinal, offset);
5285 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5286 if max_ordinal == 0 {
5288 return Ok(());
5289 }
5290 depth.increment()?;
5291 let envelope_size = 8;
5292 let bytes_len = max_ordinal as usize * envelope_size;
5293 #[allow(unused_variables)]
5294 let offset = encoder.out_of_line_offset(bytes_len);
5295 let mut _prev_end_offset: usize = 0;
5296 if 1 > max_ordinal {
5297 return Ok(());
5298 }
5299
5300 let cur_offset: usize = (1 - 1) * envelope_size;
5303
5304 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5306
5307 fidl::encoding::encode_in_envelope_optional::<u16, D>(
5312 self.thread_rloc.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5313 encoder,
5314 offset + cur_offset,
5315 depth,
5316 )?;
5317
5318 _prev_end_offset = cur_offset + envelope_size;
5319 if 2 > max_ordinal {
5320 return Ok(());
5321 }
5322
5323 let cur_offset: usize = (2 - 1) * envelope_size;
5326
5327 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5329
5330 fidl::encoding::encode_in_envelope_optional::<i64, D>(
5335 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
5336 encoder,
5337 offset + cur_offset,
5338 depth,
5339 )?;
5340
5341 _prev_end_offset = cur_offset + envelope_size;
5342
5343 Ok(())
5344 }
5345 }
5346
5347 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRoutingPeer {
5348 #[inline(always)]
5349 fn new_empty() -> Self {
5350 Self::default()
5351 }
5352
5353 unsafe fn decode(
5354 &mut self,
5355 decoder: &mut fidl::encoding::Decoder<'_, D>,
5356 offset: usize,
5357 mut depth: fidl::encoding::Depth,
5358 ) -> fidl::Result<()> {
5359 decoder.debug_check_bounds::<Self>(offset);
5360 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5361 None => return Err(fidl::Error::NotNullable),
5362 Some(len) => len,
5363 };
5364 if len == 0 {
5366 return Ok(());
5367 };
5368 depth.increment()?;
5369 let envelope_size = 8;
5370 let bytes_len = len * envelope_size;
5371 let offset = decoder.out_of_line_offset(bytes_len)?;
5372 let mut _next_ordinal_to_read = 0;
5374 let mut next_offset = offset;
5375 let end_offset = offset + bytes_len;
5376 _next_ordinal_to_read += 1;
5377 if next_offset >= end_offset {
5378 return Ok(());
5379 }
5380
5381 while _next_ordinal_to_read < 1 {
5383 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5384 _next_ordinal_to_read += 1;
5385 next_offset += envelope_size;
5386 }
5387
5388 let next_out_of_line = decoder.next_out_of_line();
5389 let handles_before = decoder.remaining_handles();
5390 if let Some((inlined, num_bytes, num_handles)) =
5391 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5392 {
5393 let member_inline_size =
5394 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5395 if inlined != (member_inline_size <= 4) {
5396 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5397 }
5398 let inner_offset;
5399 let mut inner_depth = depth.clone();
5400 if inlined {
5401 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5402 inner_offset = next_offset;
5403 } else {
5404 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5405 inner_depth.increment()?;
5406 }
5407 let val_ref = self.thread_rloc.get_or_insert_with(|| fidl::new_empty!(u16, D));
5408 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5409 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5410 {
5411 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5412 }
5413 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5414 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5415 }
5416 }
5417
5418 next_offset += envelope_size;
5419 _next_ordinal_to_read += 1;
5420 if next_offset >= end_offset {
5421 return Ok(());
5422 }
5423
5424 while _next_ordinal_to_read < 2 {
5426 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5427 _next_ordinal_to_read += 1;
5428 next_offset += envelope_size;
5429 }
5430
5431 let next_out_of_line = decoder.next_out_of_line();
5432 let handles_before = decoder.remaining_handles();
5433 if let Some((inlined, num_bytes, num_handles)) =
5434 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5435 {
5436 let member_inline_size =
5437 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5438 if inlined != (member_inline_size <= 4) {
5439 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5440 }
5441 let inner_offset;
5442 let mut inner_depth = depth.clone();
5443 if inlined {
5444 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5445 inner_offset = next_offset;
5446 } else {
5447 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5448 inner_depth.increment()?;
5449 }
5450 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
5451 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
5452 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5453 {
5454 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5455 }
5456 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5457 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5458 }
5459 }
5460
5461 next_offset += envelope_size;
5462
5463 while next_offset < end_offset {
5465 _next_ordinal_to_read += 1;
5466 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5467 next_offset += envelope_size;
5468 }
5469
5470 Ok(())
5471 }
5472 }
5473
5474 impl BorderRoutingRouter {
5475 #[inline(always)]
5476 fn max_ordinal_present(&self) -> u64 {
5477 if let Some(_) = self.is_peer_br {
5478 return 9;
5479 }
5480 if let Some(_) = self.is_reachable {
5481 return 8;
5482 }
5483 if let Some(_) = self.is_local_device {
5484 return 7;
5485 }
5486 if let Some(_) = self.snac_router_flag {
5487 return 6;
5488 }
5489 if let Some(_) = self.other_config_flag {
5490 return 5;
5491 }
5492 if let Some(_) = self.managed_address_config_flag {
5493 return 4;
5494 }
5495 if let Some(_) = self.age {
5496 return 3;
5497 }
5498 if let Some(_) = self.duration_since_last_update {
5499 return 2;
5500 }
5501 if let Some(_) = self.address {
5502 return 1;
5503 }
5504 0
5505 }
5506 }
5507
5508 impl fidl::encoding::ValueTypeMarker for BorderRoutingRouter {
5509 type Borrowed<'a> = &'a Self;
5510 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5511 value
5512 }
5513 }
5514
5515 unsafe impl fidl::encoding::TypeMarker for BorderRoutingRouter {
5516 type Owned = Self;
5517
5518 #[inline(always)]
5519 fn inline_align(_context: fidl::encoding::Context) -> usize {
5520 8
5521 }
5522
5523 #[inline(always)]
5524 fn inline_size(_context: fidl::encoding::Context) -> usize {
5525 16
5526 }
5527 }
5528
5529 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRoutingRouter, D>
5530 for &BorderRoutingRouter
5531 {
5532 unsafe fn encode(
5533 self,
5534 encoder: &mut fidl::encoding::Encoder<'_, D>,
5535 offset: usize,
5536 mut depth: fidl::encoding::Depth,
5537 ) -> fidl::Result<()> {
5538 encoder.debug_check_bounds::<BorderRoutingRouter>(offset);
5539 let max_ordinal: u64 = self.max_ordinal_present();
5541 encoder.write_num(max_ordinal, offset);
5542 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5543 if max_ordinal == 0 {
5545 return Ok(());
5546 }
5547 depth.increment()?;
5548 let envelope_size = 8;
5549 let bytes_len = max_ordinal as usize * envelope_size;
5550 #[allow(unused_variables)]
5551 let offset = encoder.out_of_line_offset(bytes_len);
5552 let mut _prev_end_offset: usize = 0;
5553 if 1 > max_ordinal {
5554 return Ok(());
5555 }
5556
5557 let cur_offset: usize = (1 - 1) * envelope_size;
5560
5561 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5563
5564 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
5569 self.address.as_ref().map(
5570 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
5571 ),
5572 encoder,
5573 offset + cur_offset,
5574 depth,
5575 )?;
5576
5577 _prev_end_offset = cur_offset + envelope_size;
5578 if 2 > max_ordinal {
5579 return Ok(());
5580 }
5581
5582 let cur_offset: usize = (2 - 1) * envelope_size;
5585
5586 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5588
5589 fidl::encoding::encode_in_envelope_optional::<i64, D>(
5594 self.duration_since_last_update
5595 .as_ref()
5596 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
5597 encoder,
5598 offset + cur_offset,
5599 depth,
5600 )?;
5601
5602 _prev_end_offset = cur_offset + envelope_size;
5603 if 3 > max_ordinal {
5604 return Ok(());
5605 }
5606
5607 let cur_offset: usize = (3 - 1) * envelope_size;
5610
5611 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5613
5614 fidl::encoding::encode_in_envelope_optional::<i64, D>(
5619 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
5620 encoder,
5621 offset + cur_offset,
5622 depth,
5623 )?;
5624
5625 _prev_end_offset = cur_offset + envelope_size;
5626 if 4 > max_ordinal {
5627 return Ok(());
5628 }
5629
5630 let cur_offset: usize = (4 - 1) * envelope_size;
5633
5634 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5636
5637 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5642 self.managed_address_config_flag
5643 .as_ref()
5644 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5645 encoder,
5646 offset + cur_offset,
5647 depth,
5648 )?;
5649
5650 _prev_end_offset = cur_offset + envelope_size;
5651 if 5 > max_ordinal {
5652 return Ok(());
5653 }
5654
5655 let cur_offset: usize = (5 - 1) * envelope_size;
5658
5659 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5661
5662 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5667 self.other_config_flag
5668 .as_ref()
5669 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5670 encoder,
5671 offset + cur_offset,
5672 depth,
5673 )?;
5674
5675 _prev_end_offset = cur_offset + envelope_size;
5676 if 6 > max_ordinal {
5677 return Ok(());
5678 }
5679
5680 let cur_offset: usize = (6 - 1) * envelope_size;
5683
5684 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5686
5687 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5692 self.snac_router_flag
5693 .as_ref()
5694 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5695 encoder,
5696 offset + cur_offset,
5697 depth,
5698 )?;
5699
5700 _prev_end_offset = cur_offset + envelope_size;
5701 if 7 > max_ordinal {
5702 return Ok(());
5703 }
5704
5705 let cur_offset: usize = (7 - 1) * envelope_size;
5708
5709 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5711
5712 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5717 self.is_local_device
5718 .as_ref()
5719 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5720 encoder,
5721 offset + cur_offset,
5722 depth,
5723 )?;
5724
5725 _prev_end_offset = cur_offset + envelope_size;
5726 if 8 > max_ordinal {
5727 return Ok(());
5728 }
5729
5730 let cur_offset: usize = (8 - 1) * envelope_size;
5733
5734 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5736
5737 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5742 self.is_reachable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5743 encoder,
5744 offset + cur_offset,
5745 depth,
5746 )?;
5747
5748 _prev_end_offset = cur_offset + envelope_size;
5749 if 9 > max_ordinal {
5750 return Ok(());
5751 }
5752
5753 let cur_offset: usize = (9 - 1) * envelope_size;
5756
5757 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5759
5760 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5765 self.is_peer_br.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5766 encoder,
5767 offset + cur_offset,
5768 depth,
5769 )?;
5770
5771 _prev_end_offset = cur_offset + envelope_size;
5772
5773 Ok(())
5774 }
5775 }
5776
5777 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRoutingRouter {
5778 #[inline(always)]
5779 fn new_empty() -> Self {
5780 Self::default()
5781 }
5782
5783 unsafe fn decode(
5784 &mut self,
5785 decoder: &mut fidl::encoding::Decoder<'_, D>,
5786 offset: usize,
5787 mut depth: fidl::encoding::Depth,
5788 ) -> fidl::Result<()> {
5789 decoder.debug_check_bounds::<Self>(offset);
5790 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5791 None => return Err(fidl::Error::NotNullable),
5792 Some(len) => len,
5793 };
5794 if len == 0 {
5796 return Ok(());
5797 };
5798 depth.increment()?;
5799 let envelope_size = 8;
5800 let bytes_len = len * envelope_size;
5801 let offset = decoder.out_of_line_offset(bytes_len)?;
5802 let mut _next_ordinal_to_read = 0;
5804 let mut next_offset = offset;
5805 let end_offset = offset + bytes_len;
5806 _next_ordinal_to_read += 1;
5807 if next_offset >= end_offset {
5808 return Ok(());
5809 }
5810
5811 while _next_ordinal_to_read < 1 {
5813 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5814 _next_ordinal_to_read += 1;
5815 next_offset += envelope_size;
5816 }
5817
5818 let next_out_of_line = decoder.next_out_of_line();
5819 let handles_before = decoder.remaining_handles();
5820 if let Some((inlined, num_bytes, num_handles)) =
5821 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5822 {
5823 let member_inline_size =
5824 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
5825 decoder.context,
5826 );
5827 if inlined != (member_inline_size <= 4) {
5828 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5829 }
5830 let inner_offset;
5831 let mut inner_depth = depth.clone();
5832 if inlined {
5833 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5834 inner_offset = next_offset;
5835 } else {
5836 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5837 inner_depth.increment()?;
5838 }
5839 let val_ref = self
5840 .address
5841 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
5842 fidl::decode!(
5843 fidl::encoding::BoundedString<64>,
5844 D,
5845 val_ref,
5846 decoder,
5847 inner_offset,
5848 inner_depth
5849 )?;
5850 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5851 {
5852 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5853 }
5854 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5855 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5856 }
5857 }
5858
5859 next_offset += envelope_size;
5860 _next_ordinal_to_read += 1;
5861 if next_offset >= end_offset {
5862 return Ok(());
5863 }
5864
5865 while _next_ordinal_to_read < 2 {
5867 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5868 _next_ordinal_to_read += 1;
5869 next_offset += envelope_size;
5870 }
5871
5872 let next_out_of_line = decoder.next_out_of_line();
5873 let handles_before = decoder.remaining_handles();
5874 if let Some((inlined, num_bytes, num_handles)) =
5875 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5876 {
5877 let member_inline_size =
5878 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5879 if inlined != (member_inline_size <= 4) {
5880 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5881 }
5882 let inner_offset;
5883 let mut inner_depth = depth.clone();
5884 if inlined {
5885 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5886 inner_offset = next_offset;
5887 } else {
5888 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5889 inner_depth.increment()?;
5890 }
5891 let val_ref =
5892 self.duration_since_last_update.get_or_insert_with(|| fidl::new_empty!(i64, D));
5893 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
5894 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5895 {
5896 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5897 }
5898 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5899 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5900 }
5901 }
5902
5903 next_offset += envelope_size;
5904 _next_ordinal_to_read += 1;
5905 if next_offset >= end_offset {
5906 return Ok(());
5907 }
5908
5909 while _next_ordinal_to_read < 3 {
5911 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5912 _next_ordinal_to_read += 1;
5913 next_offset += envelope_size;
5914 }
5915
5916 let next_out_of_line = decoder.next_out_of_line();
5917 let handles_before = decoder.remaining_handles();
5918 if let Some((inlined, num_bytes, num_handles)) =
5919 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5920 {
5921 let member_inline_size =
5922 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5923 if inlined != (member_inline_size <= 4) {
5924 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5925 }
5926 let inner_offset;
5927 let mut inner_depth = depth.clone();
5928 if inlined {
5929 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5930 inner_offset = next_offset;
5931 } else {
5932 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5933 inner_depth.increment()?;
5934 }
5935 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
5936 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
5937 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5938 {
5939 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5940 }
5941 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5942 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5943 }
5944 }
5945
5946 next_offset += envelope_size;
5947 _next_ordinal_to_read += 1;
5948 if next_offset >= end_offset {
5949 return Ok(());
5950 }
5951
5952 while _next_ordinal_to_read < 4 {
5954 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5955 _next_ordinal_to_read += 1;
5956 next_offset += envelope_size;
5957 }
5958
5959 let next_out_of_line = decoder.next_out_of_line();
5960 let handles_before = decoder.remaining_handles();
5961 if let Some((inlined, num_bytes, num_handles)) =
5962 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5963 {
5964 let member_inline_size =
5965 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5966 if inlined != (member_inline_size <= 4) {
5967 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5968 }
5969 let inner_offset;
5970 let mut inner_depth = depth.clone();
5971 if inlined {
5972 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5973 inner_offset = next_offset;
5974 } else {
5975 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5976 inner_depth.increment()?;
5977 }
5978 let val_ref = self
5979 .managed_address_config_flag
5980 .get_or_insert_with(|| fidl::new_empty!(bool, D));
5981 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5982 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5983 {
5984 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5985 }
5986 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5987 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5988 }
5989 }
5990
5991 next_offset += envelope_size;
5992 _next_ordinal_to_read += 1;
5993 if next_offset >= end_offset {
5994 return Ok(());
5995 }
5996
5997 while _next_ordinal_to_read < 5 {
5999 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6000 _next_ordinal_to_read += 1;
6001 next_offset += envelope_size;
6002 }
6003
6004 let next_out_of_line = decoder.next_out_of_line();
6005 let handles_before = decoder.remaining_handles();
6006 if let Some((inlined, num_bytes, num_handles)) =
6007 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6008 {
6009 let member_inline_size =
6010 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6011 if inlined != (member_inline_size <= 4) {
6012 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6013 }
6014 let inner_offset;
6015 let mut inner_depth = depth.clone();
6016 if inlined {
6017 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6018 inner_offset = next_offset;
6019 } else {
6020 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6021 inner_depth.increment()?;
6022 }
6023 let val_ref =
6024 self.other_config_flag.get_or_insert_with(|| fidl::new_empty!(bool, D));
6025 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6026 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6027 {
6028 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6029 }
6030 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6031 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6032 }
6033 }
6034
6035 next_offset += envelope_size;
6036 _next_ordinal_to_read += 1;
6037 if next_offset >= end_offset {
6038 return Ok(());
6039 }
6040
6041 while _next_ordinal_to_read < 6 {
6043 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6044 _next_ordinal_to_read += 1;
6045 next_offset += envelope_size;
6046 }
6047
6048 let next_out_of_line = decoder.next_out_of_line();
6049 let handles_before = decoder.remaining_handles();
6050 if let Some((inlined, num_bytes, num_handles)) =
6051 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6052 {
6053 let member_inline_size =
6054 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6055 if inlined != (member_inline_size <= 4) {
6056 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6057 }
6058 let inner_offset;
6059 let mut inner_depth = depth.clone();
6060 if inlined {
6061 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6062 inner_offset = next_offset;
6063 } else {
6064 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6065 inner_depth.increment()?;
6066 }
6067 let val_ref =
6068 self.snac_router_flag.get_or_insert_with(|| fidl::new_empty!(bool, D));
6069 fidl::decode!(bool, 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 < 7 {
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 <bool 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.is_local_device.get_or_insert_with(|| fidl::new_empty!(bool, D));
6112 fidl::decode!(bool, 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 < 8 {
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 <bool 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 = self.is_reachable.get_or_insert_with(|| fidl::new_empty!(bool, D));
6155 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6156 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6157 {
6158 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6159 }
6160 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6161 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6162 }
6163 }
6164
6165 next_offset += envelope_size;
6166 _next_ordinal_to_read += 1;
6167 if next_offset >= end_offset {
6168 return Ok(());
6169 }
6170
6171 while _next_ordinal_to_read < 9 {
6173 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6174 _next_ordinal_to_read += 1;
6175 next_offset += envelope_size;
6176 }
6177
6178 let next_out_of_line = decoder.next_out_of_line();
6179 let handles_before = decoder.remaining_handles();
6180 if let Some((inlined, num_bytes, num_handles)) =
6181 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6182 {
6183 let member_inline_size =
6184 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6185 if inlined != (member_inline_size <= 4) {
6186 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6187 }
6188 let inner_offset;
6189 let mut inner_depth = depth.clone();
6190 if inlined {
6191 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6192 inner_offset = next_offset;
6193 } else {
6194 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6195 inner_depth.increment()?;
6196 }
6197 let val_ref = self.is_peer_br.get_or_insert_with(|| fidl::new_empty!(bool, D));
6198 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6199 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6200 {
6201 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6202 }
6203 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6204 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6205 }
6206 }
6207
6208 next_offset += envelope_size;
6209
6210 while next_offset < end_offset {
6212 _next_ordinal_to_read += 1;
6213 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6214 next_offset += envelope_size;
6215 }
6216
6217 Ok(())
6218 }
6219 }
6220
6221 impl ChannelInfo {
6222 #[inline(always)]
6223 fn max_ordinal_present(&self) -> u64 {
6224 if let Some(_) = self.masked_by_regulatory_domain {
6225 return 6;
6226 }
6227 if let Some(_) = self.spectrum_bandwidth_hz {
6228 return 5;
6229 }
6230 if let Some(_) = self.spectrum_center_frequency_hz {
6231 return 4;
6232 }
6233 if let Some(_) = self.max_transmit_power_dbm {
6234 return 3;
6235 }
6236 if let Some(_) = self.id {
6237 return 2;
6238 }
6239 if let Some(_) = self.index {
6240 return 1;
6241 }
6242 0
6243 }
6244 }
6245
6246 impl fidl::encoding::ValueTypeMarker for ChannelInfo {
6247 type Borrowed<'a> = &'a Self;
6248 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6249 value
6250 }
6251 }
6252
6253 unsafe impl fidl::encoding::TypeMarker for ChannelInfo {
6254 type Owned = Self;
6255
6256 #[inline(always)]
6257 fn inline_align(_context: fidl::encoding::Context) -> usize {
6258 8
6259 }
6260
6261 #[inline(always)]
6262 fn inline_size(_context: fidl::encoding::Context) -> usize {
6263 16
6264 }
6265 }
6266
6267 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChannelInfo, D>
6268 for &ChannelInfo
6269 {
6270 unsafe fn encode(
6271 self,
6272 encoder: &mut fidl::encoding::Encoder<'_, D>,
6273 offset: usize,
6274 mut depth: fidl::encoding::Depth,
6275 ) -> fidl::Result<()> {
6276 encoder.debug_check_bounds::<ChannelInfo>(offset);
6277 let max_ordinal: u64 = self.max_ordinal_present();
6279 encoder.write_num(max_ordinal, offset);
6280 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6281 if max_ordinal == 0 {
6283 return Ok(());
6284 }
6285 depth.increment()?;
6286 let envelope_size = 8;
6287 let bytes_len = max_ordinal as usize * envelope_size;
6288 #[allow(unused_variables)]
6289 let offset = encoder.out_of_line_offset(bytes_len);
6290 let mut _prev_end_offset: usize = 0;
6291 if 1 > max_ordinal {
6292 return Ok(());
6293 }
6294
6295 let cur_offset: usize = (1 - 1) * envelope_size;
6298
6299 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6301
6302 fidl::encoding::encode_in_envelope_optional::<u16, D>(
6307 self.index.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6308 encoder,
6309 offset + cur_offset,
6310 depth,
6311 )?;
6312
6313 _prev_end_offset = cur_offset + envelope_size;
6314 if 2 > max_ordinal {
6315 return Ok(());
6316 }
6317
6318 let cur_offset: usize = (2 - 1) * envelope_size;
6321
6322 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6324
6325 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<16>, D>(
6330 self.id.as_ref().map(
6331 <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow,
6332 ),
6333 encoder,
6334 offset + cur_offset,
6335 depth,
6336 )?;
6337
6338 _prev_end_offset = cur_offset + envelope_size;
6339 if 3 > max_ordinal {
6340 return Ok(());
6341 }
6342
6343 let cur_offset: usize = (3 - 1) * envelope_size;
6346
6347 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6349
6350 fidl::encoding::encode_in_envelope_optional::<i8, D>(
6355 self.max_transmit_power_dbm
6356 .as_ref()
6357 .map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
6358 encoder,
6359 offset + cur_offset,
6360 depth,
6361 )?;
6362
6363 _prev_end_offset = cur_offset + envelope_size;
6364 if 4 > max_ordinal {
6365 return Ok(());
6366 }
6367
6368 let cur_offset: usize = (4 - 1) * envelope_size;
6371
6372 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6374
6375 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6380 self.spectrum_center_frequency_hz
6381 .as_ref()
6382 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6383 encoder,
6384 offset + cur_offset,
6385 depth,
6386 )?;
6387
6388 _prev_end_offset = cur_offset + envelope_size;
6389 if 5 > max_ordinal {
6390 return Ok(());
6391 }
6392
6393 let cur_offset: usize = (5 - 1) * envelope_size;
6396
6397 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6399
6400 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6405 self.spectrum_bandwidth_hz
6406 .as_ref()
6407 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6408 encoder,
6409 offset + cur_offset,
6410 depth,
6411 )?;
6412
6413 _prev_end_offset = cur_offset + envelope_size;
6414 if 6 > max_ordinal {
6415 return Ok(());
6416 }
6417
6418 let cur_offset: usize = (6 - 1) * envelope_size;
6421
6422 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6424
6425 fidl::encoding::encode_in_envelope_optional::<bool, D>(
6430 self.masked_by_regulatory_domain
6431 .as_ref()
6432 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6433 encoder,
6434 offset + cur_offset,
6435 depth,
6436 )?;
6437
6438 _prev_end_offset = cur_offset + envelope_size;
6439
6440 Ok(())
6441 }
6442 }
6443
6444 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChannelInfo {
6445 #[inline(always)]
6446 fn new_empty() -> Self {
6447 Self::default()
6448 }
6449
6450 unsafe fn decode(
6451 &mut self,
6452 decoder: &mut fidl::encoding::Decoder<'_, D>,
6453 offset: usize,
6454 mut depth: fidl::encoding::Depth,
6455 ) -> fidl::Result<()> {
6456 decoder.debug_check_bounds::<Self>(offset);
6457 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6458 None => return Err(fidl::Error::NotNullable),
6459 Some(len) => len,
6460 };
6461 if len == 0 {
6463 return Ok(());
6464 };
6465 depth.increment()?;
6466 let envelope_size = 8;
6467 let bytes_len = len * envelope_size;
6468 let offset = decoder.out_of_line_offset(bytes_len)?;
6469 let mut _next_ordinal_to_read = 0;
6471 let mut next_offset = offset;
6472 let end_offset = offset + bytes_len;
6473 _next_ordinal_to_read += 1;
6474 if next_offset >= end_offset {
6475 return Ok(());
6476 }
6477
6478 while _next_ordinal_to_read < 1 {
6480 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6481 _next_ordinal_to_read += 1;
6482 next_offset += envelope_size;
6483 }
6484
6485 let next_out_of_line = decoder.next_out_of_line();
6486 let handles_before = decoder.remaining_handles();
6487 if let Some((inlined, num_bytes, num_handles)) =
6488 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6489 {
6490 let member_inline_size =
6491 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6492 if inlined != (member_inline_size <= 4) {
6493 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6494 }
6495 let inner_offset;
6496 let mut inner_depth = depth.clone();
6497 if inlined {
6498 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6499 inner_offset = next_offset;
6500 } else {
6501 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6502 inner_depth.increment()?;
6503 }
6504 let val_ref = self.index.get_or_insert_with(|| fidl::new_empty!(u16, D));
6505 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6506 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6507 {
6508 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6509 }
6510 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6511 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6512 }
6513 }
6514
6515 next_offset += envelope_size;
6516 _next_ordinal_to_read += 1;
6517 if next_offset >= end_offset {
6518 return Ok(());
6519 }
6520
6521 while _next_ordinal_to_read < 2 {
6523 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6524 _next_ordinal_to_read += 1;
6525 next_offset += envelope_size;
6526 }
6527
6528 let next_out_of_line = decoder.next_out_of_line();
6529 let handles_before = decoder.remaining_handles();
6530 if let Some((inlined, num_bytes, num_handles)) =
6531 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6532 {
6533 let member_inline_size =
6534 <fidl::encoding::BoundedString<16> as fidl::encoding::TypeMarker>::inline_size(
6535 decoder.context,
6536 );
6537 if inlined != (member_inline_size <= 4) {
6538 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6539 }
6540 let inner_offset;
6541 let mut inner_depth = depth.clone();
6542 if inlined {
6543 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6544 inner_offset = next_offset;
6545 } else {
6546 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6547 inner_depth.increment()?;
6548 }
6549 let val_ref = self
6550 .id
6551 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<16>, D));
6552 fidl::decode!(
6553 fidl::encoding::BoundedString<16>,
6554 D,
6555 val_ref,
6556 decoder,
6557 inner_offset,
6558 inner_depth
6559 )?;
6560 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6561 {
6562 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6563 }
6564 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6565 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6566 }
6567 }
6568
6569 next_offset += envelope_size;
6570 _next_ordinal_to_read += 1;
6571 if next_offset >= end_offset {
6572 return Ok(());
6573 }
6574
6575 while _next_ordinal_to_read < 3 {
6577 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6578 _next_ordinal_to_read += 1;
6579 next_offset += envelope_size;
6580 }
6581
6582 let next_out_of_line = decoder.next_out_of_line();
6583 let handles_before = decoder.remaining_handles();
6584 if let Some((inlined, num_bytes, num_handles)) =
6585 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6586 {
6587 let member_inline_size =
6588 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6589 if inlined != (member_inline_size <= 4) {
6590 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6591 }
6592 let inner_offset;
6593 let mut inner_depth = depth.clone();
6594 if inlined {
6595 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6596 inner_offset = next_offset;
6597 } else {
6598 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6599 inner_depth.increment()?;
6600 }
6601 let val_ref =
6602 self.max_transmit_power_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
6603 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
6604 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6605 {
6606 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6607 }
6608 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6609 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6610 }
6611 }
6612
6613 next_offset += envelope_size;
6614 _next_ordinal_to_read += 1;
6615 if next_offset >= end_offset {
6616 return Ok(());
6617 }
6618
6619 while _next_ordinal_to_read < 4 {
6621 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6622 _next_ordinal_to_read += 1;
6623 next_offset += envelope_size;
6624 }
6625
6626 let next_out_of_line = decoder.next_out_of_line();
6627 let handles_before = decoder.remaining_handles();
6628 if let Some((inlined, num_bytes, num_handles)) =
6629 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6630 {
6631 let member_inline_size =
6632 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6633 if inlined != (member_inline_size <= 4) {
6634 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6635 }
6636 let inner_offset;
6637 let mut inner_depth = depth.clone();
6638 if inlined {
6639 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6640 inner_offset = next_offset;
6641 } else {
6642 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6643 inner_depth.increment()?;
6644 }
6645 let val_ref = self
6646 .spectrum_center_frequency_hz
6647 .get_or_insert_with(|| fidl::new_empty!(u64, D));
6648 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6649 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6650 {
6651 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6652 }
6653 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6654 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6655 }
6656 }
6657
6658 next_offset += envelope_size;
6659 _next_ordinal_to_read += 1;
6660 if next_offset >= end_offset {
6661 return Ok(());
6662 }
6663
6664 while _next_ordinal_to_read < 5 {
6666 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6667 _next_ordinal_to_read += 1;
6668 next_offset += envelope_size;
6669 }
6670
6671 let next_out_of_line = decoder.next_out_of_line();
6672 let handles_before = decoder.remaining_handles();
6673 if let Some((inlined, num_bytes, num_handles)) =
6674 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6675 {
6676 let member_inline_size =
6677 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6678 if inlined != (member_inline_size <= 4) {
6679 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6680 }
6681 let inner_offset;
6682 let mut inner_depth = depth.clone();
6683 if inlined {
6684 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6685 inner_offset = next_offset;
6686 } else {
6687 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6688 inner_depth.increment()?;
6689 }
6690 let val_ref =
6691 self.spectrum_bandwidth_hz.get_or_insert_with(|| fidl::new_empty!(u64, D));
6692 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6693 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6694 {
6695 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6696 }
6697 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6698 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6699 }
6700 }
6701
6702 next_offset += envelope_size;
6703 _next_ordinal_to_read += 1;
6704 if next_offset >= end_offset {
6705 return Ok(());
6706 }
6707
6708 while _next_ordinal_to_read < 6 {
6710 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6711 _next_ordinal_to_read += 1;
6712 next_offset += envelope_size;
6713 }
6714
6715 let next_out_of_line = decoder.next_out_of_line();
6716 let handles_before = decoder.remaining_handles();
6717 if let Some((inlined, num_bytes, num_handles)) =
6718 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6719 {
6720 let member_inline_size =
6721 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6722 if inlined != (member_inline_size <= 4) {
6723 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6724 }
6725 let inner_offset;
6726 let mut inner_depth = depth.clone();
6727 if inlined {
6728 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6729 inner_offset = next_offset;
6730 } else {
6731 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6732 inner_depth.increment()?;
6733 }
6734 let val_ref = self
6735 .masked_by_regulatory_domain
6736 .get_or_insert_with(|| fidl::new_empty!(bool, D));
6737 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6738 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6739 {
6740 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6741 }
6742 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6743 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6744 }
6745 }
6746
6747 next_offset += envelope_size;
6748
6749 while next_offset < end_offset {
6751 _next_ordinal_to_read += 1;
6752 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6753 next_offset += envelope_size;
6754 }
6755
6756 Ok(())
6757 }
6758 }
6759
6760 impl Dhcp6PdInfo {
6761 #[inline(always)]
6762 fn max_ordinal_present(&self) -> u64 {
6763 if let Some(_) = self.hashed_pd_prefix {
6764 return 3;
6765 }
6766 if let Some(_) = self.pd_processed_ra_info {
6767 return 2;
6768 }
6769 if let Some(_) = self.dhcp6pd_state {
6770 return 1;
6771 }
6772 0
6773 }
6774 }
6775
6776 impl fidl::encoding::ValueTypeMarker for Dhcp6PdInfo {
6777 type Borrowed<'a> = &'a Self;
6778 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6779 value
6780 }
6781 }
6782
6783 unsafe impl fidl::encoding::TypeMarker for Dhcp6PdInfo {
6784 type Owned = Self;
6785
6786 #[inline(always)]
6787 fn inline_align(_context: fidl::encoding::Context) -> usize {
6788 8
6789 }
6790
6791 #[inline(always)]
6792 fn inline_size(_context: fidl::encoding::Context) -> usize {
6793 16
6794 }
6795 }
6796
6797 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Dhcp6PdInfo, D>
6798 for &Dhcp6PdInfo
6799 {
6800 unsafe fn encode(
6801 self,
6802 encoder: &mut fidl::encoding::Encoder<'_, D>,
6803 offset: usize,
6804 mut depth: fidl::encoding::Depth,
6805 ) -> fidl::Result<()> {
6806 encoder.debug_check_bounds::<Dhcp6PdInfo>(offset);
6807 let max_ordinal: u64 = self.max_ordinal_present();
6809 encoder.write_num(max_ordinal, offset);
6810 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6811 if max_ordinal == 0 {
6813 return Ok(());
6814 }
6815 depth.increment()?;
6816 let envelope_size = 8;
6817 let bytes_len = max_ordinal as usize * envelope_size;
6818 #[allow(unused_variables)]
6819 let offset = encoder.out_of_line_offset(bytes_len);
6820 let mut _prev_end_offset: usize = 0;
6821 if 1 > max_ordinal {
6822 return Ok(());
6823 }
6824
6825 let cur_offset: usize = (1 - 1) * envelope_size;
6828
6829 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6831
6832 fidl::encoding::encode_in_envelope_optional::<Dhcp6PdState, D>(
6837 self.dhcp6pd_state
6838 .as_ref()
6839 .map(<Dhcp6PdState as fidl::encoding::ValueTypeMarker>::borrow),
6840 encoder,
6841 offset + cur_offset,
6842 depth,
6843 )?;
6844
6845 _prev_end_offset = cur_offset + envelope_size;
6846 if 2 > max_ordinal {
6847 return Ok(());
6848 }
6849
6850 let cur_offset: usize = (2 - 1) * envelope_size;
6853
6854 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6856
6857 fidl::encoding::encode_in_envelope_optional::<PdProcessedRaInfo, D>(
6862 self.pd_processed_ra_info
6863 .as_ref()
6864 .map(<PdProcessedRaInfo as fidl::encoding::ValueTypeMarker>::borrow),
6865 encoder,
6866 offset + cur_offset,
6867 depth,
6868 )?;
6869
6870 _prev_end_offset = cur_offset + envelope_size;
6871 if 3 > max_ordinal {
6872 return Ok(());
6873 }
6874
6875 let cur_offset: usize = (3 - 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::Vector<u8, 32>, D>(
6887 self.hashed_pd_prefix.as_ref().map(
6888 <fidl::encoding::Vector<u8, 32> 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
6897 Ok(())
6898 }
6899 }
6900
6901 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dhcp6PdInfo {
6902 #[inline(always)]
6903 fn new_empty() -> Self {
6904 Self::default()
6905 }
6906
6907 unsafe fn decode(
6908 &mut self,
6909 decoder: &mut fidl::encoding::Decoder<'_, D>,
6910 offset: usize,
6911 mut depth: fidl::encoding::Depth,
6912 ) -> fidl::Result<()> {
6913 decoder.debug_check_bounds::<Self>(offset);
6914 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6915 None => return Err(fidl::Error::NotNullable),
6916 Some(len) => len,
6917 };
6918 if len == 0 {
6920 return Ok(());
6921 };
6922 depth.increment()?;
6923 let envelope_size = 8;
6924 let bytes_len = len * envelope_size;
6925 let offset = decoder.out_of_line_offset(bytes_len)?;
6926 let mut _next_ordinal_to_read = 0;
6928 let mut next_offset = offset;
6929 let end_offset = offset + bytes_len;
6930 _next_ordinal_to_read += 1;
6931 if next_offset >= end_offset {
6932 return Ok(());
6933 }
6934
6935 while _next_ordinal_to_read < 1 {
6937 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6938 _next_ordinal_to_read += 1;
6939 next_offset += envelope_size;
6940 }
6941
6942 let next_out_of_line = decoder.next_out_of_line();
6943 let handles_before = decoder.remaining_handles();
6944 if let Some((inlined, num_bytes, num_handles)) =
6945 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6946 {
6947 let member_inline_size =
6948 <Dhcp6PdState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6949 if inlined != (member_inline_size <= 4) {
6950 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6951 }
6952 let inner_offset;
6953 let mut inner_depth = depth.clone();
6954 if inlined {
6955 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6956 inner_offset = next_offset;
6957 } else {
6958 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6959 inner_depth.increment()?;
6960 }
6961 let val_ref =
6962 self.dhcp6pd_state.get_or_insert_with(|| fidl::new_empty!(Dhcp6PdState, D));
6963 fidl::decode!(Dhcp6PdState, D, val_ref, decoder, inner_offset, inner_depth)?;
6964 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6965 {
6966 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6967 }
6968 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6969 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6970 }
6971 }
6972
6973 next_offset += envelope_size;
6974 _next_ordinal_to_read += 1;
6975 if next_offset >= end_offset {
6976 return Ok(());
6977 }
6978
6979 while _next_ordinal_to_read < 2 {
6981 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6982 _next_ordinal_to_read += 1;
6983 next_offset += envelope_size;
6984 }
6985
6986 let next_out_of_line = decoder.next_out_of_line();
6987 let handles_before = decoder.remaining_handles();
6988 if let Some((inlined, num_bytes, num_handles)) =
6989 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6990 {
6991 let member_inline_size =
6992 <PdProcessedRaInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6993 if inlined != (member_inline_size <= 4) {
6994 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6995 }
6996 let inner_offset;
6997 let mut inner_depth = depth.clone();
6998 if inlined {
6999 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7000 inner_offset = next_offset;
7001 } else {
7002 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7003 inner_depth.increment()?;
7004 }
7005 let val_ref = self
7006 .pd_processed_ra_info
7007 .get_or_insert_with(|| fidl::new_empty!(PdProcessedRaInfo, D));
7008 fidl::decode!(PdProcessedRaInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
7009 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7010 {
7011 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7012 }
7013 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7014 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7015 }
7016 }
7017
7018 next_offset += envelope_size;
7019 _next_ordinal_to_read += 1;
7020 if next_offset >= end_offset {
7021 return Ok(());
7022 }
7023
7024 while _next_ordinal_to_read < 3 {
7026 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7027 _next_ordinal_to_read += 1;
7028 next_offset += envelope_size;
7029 }
7030
7031 let next_out_of_line = decoder.next_out_of_line();
7032 let handles_before = decoder.remaining_handles();
7033 if let Some((inlined, num_bytes, num_handles)) =
7034 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7035 {
7036 let member_inline_size =
7037 <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
7038 decoder.context,
7039 );
7040 if inlined != (member_inline_size <= 4) {
7041 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7042 }
7043 let inner_offset;
7044 let mut inner_depth = depth.clone();
7045 if inlined {
7046 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7047 inner_offset = next_offset;
7048 } else {
7049 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7050 inner_depth.increment()?;
7051 }
7052 let val_ref = self
7053 .hashed_pd_prefix
7054 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
7055 fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
7056 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7057 {
7058 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7059 }
7060 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7061 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7062 }
7063 }
7064
7065 next_offset += envelope_size;
7066
7067 while next_offset < end_offset {
7069 _next_ordinal_to_read += 1;
7070 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7071 next_offset += envelope_size;
7072 }
7073
7074 Ok(())
7075 }
7076 }
7077
7078 impl DnsTxtEntry {
7079 #[inline(always)]
7080 fn max_ordinal_present(&self) -> u64 {
7081 if let Some(_) = self.value {
7082 return 2;
7083 }
7084 if let Some(_) = self.key {
7085 return 1;
7086 }
7087 0
7088 }
7089 }
7090
7091 impl fidl::encoding::ValueTypeMarker for DnsTxtEntry {
7092 type Borrowed<'a> = &'a Self;
7093 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7094 value
7095 }
7096 }
7097
7098 unsafe impl fidl::encoding::TypeMarker for DnsTxtEntry {
7099 type Owned = Self;
7100
7101 #[inline(always)]
7102 fn inline_align(_context: fidl::encoding::Context) -> usize {
7103 8
7104 }
7105
7106 #[inline(always)]
7107 fn inline_size(_context: fidl::encoding::Context) -> usize {
7108 16
7109 }
7110 }
7111
7112 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DnsTxtEntry, D>
7113 for &DnsTxtEntry
7114 {
7115 unsafe fn encode(
7116 self,
7117 encoder: &mut fidl::encoding::Encoder<'_, D>,
7118 offset: usize,
7119 mut depth: fidl::encoding::Depth,
7120 ) -> fidl::Result<()> {
7121 encoder.debug_check_bounds::<DnsTxtEntry>(offset);
7122 let max_ordinal: u64 = self.max_ordinal_present();
7124 encoder.write_num(max_ordinal, offset);
7125 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7126 if max_ordinal == 0 {
7128 return Ok(());
7129 }
7130 depth.increment()?;
7131 let envelope_size = 8;
7132 let bytes_len = max_ordinal as usize * envelope_size;
7133 #[allow(unused_variables)]
7134 let offset = encoder.out_of_line_offset(bytes_len);
7135 let mut _prev_end_offset: usize = 0;
7136 if 1 > max_ordinal {
7137 return Ok(());
7138 }
7139
7140 let cur_offset: usize = (1 - 1) * envelope_size;
7143
7144 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7146
7147 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
7152 self.key.as_ref().map(
7153 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
7154 ),
7155 encoder,
7156 offset + cur_offset,
7157 depth,
7158 )?;
7159
7160 _prev_end_offset = cur_offset + envelope_size;
7161 if 2 > max_ordinal {
7162 return Ok(());
7163 }
7164
7165 let cur_offset: usize = (2 - 1) * envelope_size;
7168
7169 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7171
7172 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 253>, D>(
7177 self.value.as_ref().map(
7178 <fidl::encoding::Vector<u8, 253> as fidl::encoding::ValueTypeMarker>::borrow,
7179 ),
7180 encoder,
7181 offset + cur_offset,
7182 depth,
7183 )?;
7184
7185 _prev_end_offset = cur_offset + envelope_size;
7186
7187 Ok(())
7188 }
7189 }
7190
7191 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DnsTxtEntry {
7192 #[inline(always)]
7193 fn new_empty() -> Self {
7194 Self::default()
7195 }
7196
7197 unsafe fn decode(
7198 &mut self,
7199 decoder: &mut fidl::encoding::Decoder<'_, D>,
7200 offset: usize,
7201 mut depth: fidl::encoding::Depth,
7202 ) -> fidl::Result<()> {
7203 decoder.debug_check_bounds::<Self>(offset);
7204 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7205 None => return Err(fidl::Error::NotNullable),
7206 Some(len) => len,
7207 };
7208 if len == 0 {
7210 return Ok(());
7211 };
7212 depth.increment()?;
7213 let envelope_size = 8;
7214 let bytes_len = len * envelope_size;
7215 let offset = decoder.out_of_line_offset(bytes_len)?;
7216 let mut _next_ordinal_to_read = 0;
7218 let mut next_offset = offset;
7219 let end_offset = offset + bytes_len;
7220 _next_ordinal_to_read += 1;
7221 if next_offset >= end_offset {
7222 return Ok(());
7223 }
7224
7225 while _next_ordinal_to_read < 1 {
7227 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7228 _next_ordinal_to_read += 1;
7229 next_offset += envelope_size;
7230 }
7231
7232 let next_out_of_line = decoder.next_out_of_line();
7233 let handles_before = decoder.remaining_handles();
7234 if let Some((inlined, num_bytes, num_handles)) =
7235 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7236 {
7237 let member_inline_size =
7238 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
7239 decoder.context,
7240 );
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
7254 .key
7255 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
7256 fidl::decode!(
7257 fidl::encoding::BoundedString<64>,
7258 D,
7259 val_ref,
7260 decoder,
7261 inner_offset,
7262 inner_depth
7263 )?;
7264 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7265 {
7266 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7267 }
7268 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7269 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7270 }
7271 }
7272
7273 next_offset += envelope_size;
7274 _next_ordinal_to_read += 1;
7275 if next_offset >= end_offset {
7276 return Ok(());
7277 }
7278
7279 while _next_ordinal_to_read < 2 {
7281 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7282 _next_ordinal_to_read += 1;
7283 next_offset += envelope_size;
7284 }
7285
7286 let next_out_of_line = decoder.next_out_of_line();
7287 let handles_before = decoder.remaining_handles();
7288 if let Some((inlined, num_bytes, num_handles)) =
7289 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7290 {
7291 let member_inline_size =
7292 <fidl::encoding::Vector<u8, 253> as fidl::encoding::TypeMarker>::inline_size(
7293 decoder.context,
7294 );
7295 if inlined != (member_inline_size <= 4) {
7296 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7297 }
7298 let inner_offset;
7299 let mut inner_depth = depth.clone();
7300 if inlined {
7301 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7302 inner_offset = next_offset;
7303 } else {
7304 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7305 inner_depth.increment()?;
7306 }
7307 let val_ref = self
7308 .value
7309 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 253>, D));
7310 fidl::decode!(fidl::encoding::Vector<u8, 253>, D, val_ref, decoder, inner_offset, inner_depth)?;
7311 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7312 {
7313 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7314 }
7315 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7316 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7317 }
7318 }
7319
7320 next_offset += envelope_size;
7321
7322 while next_offset < end_offset {
7324 _next_ordinal_to_read += 1;
7325 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7326 next_offset += envelope_size;
7327 }
7328
7329 Ok(())
7330 }
7331 }
7332
7333 impl DnssdCounters {
7334 #[inline(always)]
7335 fn max_ordinal_present(&self) -> u64 {
7336 if let Some(_) = self.upstream_dns_counters {
7337 return 8;
7338 }
7339 if let Some(_) = self.resolved_by_srp {
7340 return 7;
7341 }
7342 if let Some(_) = self.other_response {
7343 return 6;
7344 }
7345 if let Some(_) = self.not_implemented_response {
7346 return 5;
7347 }
7348 if let Some(_) = self.name_error_response {
7349 return 4;
7350 }
7351 if let Some(_) = self.format_error_response {
7352 return 3;
7353 }
7354 if let Some(_) = self.server_failure_response {
7355 return 2;
7356 }
7357 if let Some(_) = self.success_response {
7358 return 1;
7359 }
7360 0
7361 }
7362 }
7363
7364 impl fidl::encoding::ValueTypeMarker for DnssdCounters {
7365 type Borrowed<'a> = &'a Self;
7366 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7367 value
7368 }
7369 }
7370
7371 unsafe impl fidl::encoding::TypeMarker for DnssdCounters {
7372 type Owned = Self;
7373
7374 #[inline(always)]
7375 fn inline_align(_context: fidl::encoding::Context) -> usize {
7376 8
7377 }
7378
7379 #[inline(always)]
7380 fn inline_size(_context: fidl::encoding::Context) -> usize {
7381 16
7382 }
7383 }
7384
7385 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DnssdCounters, D>
7386 for &DnssdCounters
7387 {
7388 unsafe fn encode(
7389 self,
7390 encoder: &mut fidl::encoding::Encoder<'_, D>,
7391 offset: usize,
7392 mut depth: fidl::encoding::Depth,
7393 ) -> fidl::Result<()> {
7394 encoder.debug_check_bounds::<DnssdCounters>(offset);
7395 let max_ordinal: u64 = self.max_ordinal_present();
7397 encoder.write_num(max_ordinal, offset);
7398 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7399 if max_ordinal == 0 {
7401 return Ok(());
7402 }
7403 depth.increment()?;
7404 let envelope_size = 8;
7405 let bytes_len = max_ordinal as usize * envelope_size;
7406 #[allow(unused_variables)]
7407 let offset = encoder.out_of_line_offset(bytes_len);
7408 let mut _prev_end_offset: usize = 0;
7409 if 1 > max_ordinal {
7410 return Ok(());
7411 }
7412
7413 let cur_offset: usize = (1 - 1) * envelope_size;
7416
7417 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7419
7420 fidl::encoding::encode_in_envelope_optional::<u32, D>(
7425 self.success_response
7426 .as_ref()
7427 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7428 encoder,
7429 offset + cur_offset,
7430 depth,
7431 )?;
7432
7433 _prev_end_offset = cur_offset + envelope_size;
7434 if 2 > max_ordinal {
7435 return Ok(());
7436 }
7437
7438 let cur_offset: usize = (2 - 1) * envelope_size;
7441
7442 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7444
7445 fidl::encoding::encode_in_envelope_optional::<u32, D>(
7450 self.server_failure_response
7451 .as_ref()
7452 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7453 encoder,
7454 offset + cur_offset,
7455 depth,
7456 )?;
7457
7458 _prev_end_offset = cur_offset + envelope_size;
7459 if 3 > max_ordinal {
7460 return Ok(());
7461 }
7462
7463 let cur_offset: usize = (3 - 1) * envelope_size;
7466
7467 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7469
7470 fidl::encoding::encode_in_envelope_optional::<u32, D>(
7475 self.format_error_response
7476 .as_ref()
7477 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7478 encoder,
7479 offset + cur_offset,
7480 depth,
7481 )?;
7482
7483 _prev_end_offset = cur_offset + envelope_size;
7484 if 4 > max_ordinal {
7485 return Ok(());
7486 }
7487
7488 let cur_offset: usize = (4 - 1) * envelope_size;
7491
7492 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7494
7495 fidl::encoding::encode_in_envelope_optional::<u32, D>(
7500 self.name_error_response
7501 .as_ref()
7502 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7503 encoder,
7504 offset + cur_offset,
7505 depth,
7506 )?;
7507
7508 _prev_end_offset = cur_offset + envelope_size;
7509 if 5 > max_ordinal {
7510 return Ok(());
7511 }
7512
7513 let cur_offset: usize = (5 - 1) * envelope_size;
7516
7517 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7519
7520 fidl::encoding::encode_in_envelope_optional::<u32, D>(
7525 self.not_implemented_response
7526 .as_ref()
7527 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7528 encoder,
7529 offset + cur_offset,
7530 depth,
7531 )?;
7532
7533 _prev_end_offset = cur_offset + envelope_size;
7534 if 6 > max_ordinal {
7535 return Ok(());
7536 }
7537
7538 let cur_offset: usize = (6 - 1) * envelope_size;
7541
7542 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7544
7545 fidl::encoding::encode_in_envelope_optional::<u32, D>(
7550 self.other_response.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7551 encoder,
7552 offset + cur_offset,
7553 depth,
7554 )?;
7555
7556 _prev_end_offset = cur_offset + envelope_size;
7557 if 7 > max_ordinal {
7558 return Ok(());
7559 }
7560
7561 let cur_offset: usize = (7 - 1) * envelope_size;
7564
7565 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7567
7568 fidl::encoding::encode_in_envelope_optional::<u32, D>(
7573 self.resolved_by_srp.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7574 encoder,
7575 offset + cur_offset,
7576 depth,
7577 )?;
7578
7579 _prev_end_offset = cur_offset + envelope_size;
7580 if 8 > max_ordinal {
7581 return Ok(());
7582 }
7583
7584 let cur_offset: usize = (8 - 1) * envelope_size;
7587
7588 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7590
7591 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsCounters, D>(
7596 self.upstream_dns_counters
7597 .as_ref()
7598 .map(<UpstreamDnsCounters as fidl::encoding::ValueTypeMarker>::borrow),
7599 encoder,
7600 offset + cur_offset,
7601 depth,
7602 )?;
7603
7604 _prev_end_offset = cur_offset + envelope_size;
7605
7606 Ok(())
7607 }
7608 }
7609
7610 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DnssdCounters {
7611 #[inline(always)]
7612 fn new_empty() -> Self {
7613 Self::default()
7614 }
7615
7616 unsafe fn decode(
7617 &mut self,
7618 decoder: &mut fidl::encoding::Decoder<'_, D>,
7619 offset: usize,
7620 mut depth: fidl::encoding::Depth,
7621 ) -> fidl::Result<()> {
7622 decoder.debug_check_bounds::<Self>(offset);
7623 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7624 None => return Err(fidl::Error::NotNullable),
7625 Some(len) => len,
7626 };
7627 if len == 0 {
7629 return Ok(());
7630 };
7631 depth.increment()?;
7632 let envelope_size = 8;
7633 let bytes_len = len * envelope_size;
7634 let offset = decoder.out_of_line_offset(bytes_len)?;
7635 let mut _next_ordinal_to_read = 0;
7637 let mut next_offset = offset;
7638 let end_offset = offset + bytes_len;
7639 _next_ordinal_to_read += 1;
7640 if next_offset >= end_offset {
7641 return Ok(());
7642 }
7643
7644 while _next_ordinal_to_read < 1 {
7646 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7647 _next_ordinal_to_read += 1;
7648 next_offset += envelope_size;
7649 }
7650
7651 let next_out_of_line = decoder.next_out_of_line();
7652 let handles_before = decoder.remaining_handles();
7653 if let Some((inlined, num_bytes, num_handles)) =
7654 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7655 {
7656 let member_inline_size =
7657 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7658 if inlined != (member_inline_size <= 4) {
7659 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7660 }
7661 let inner_offset;
7662 let mut inner_depth = depth.clone();
7663 if inlined {
7664 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7665 inner_offset = next_offset;
7666 } else {
7667 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7668 inner_depth.increment()?;
7669 }
7670 let val_ref = self.success_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
7671 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7672 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7673 {
7674 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7675 }
7676 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7677 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7678 }
7679 }
7680
7681 next_offset += envelope_size;
7682 _next_ordinal_to_read += 1;
7683 if next_offset >= end_offset {
7684 return Ok(());
7685 }
7686
7687 while _next_ordinal_to_read < 2 {
7689 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7690 _next_ordinal_to_read += 1;
7691 next_offset += envelope_size;
7692 }
7693
7694 let next_out_of_line = decoder.next_out_of_line();
7695 let handles_before = decoder.remaining_handles();
7696 if let Some((inlined, num_bytes, num_handles)) =
7697 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7698 {
7699 let member_inline_size =
7700 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7701 if inlined != (member_inline_size <= 4) {
7702 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7703 }
7704 let inner_offset;
7705 let mut inner_depth = depth.clone();
7706 if inlined {
7707 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7708 inner_offset = next_offset;
7709 } else {
7710 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7711 inner_depth.increment()?;
7712 }
7713 let val_ref =
7714 self.server_failure_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
7715 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7716 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7717 {
7718 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7719 }
7720 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7721 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7722 }
7723 }
7724
7725 next_offset += envelope_size;
7726 _next_ordinal_to_read += 1;
7727 if next_offset >= end_offset {
7728 return Ok(());
7729 }
7730
7731 while _next_ordinal_to_read < 3 {
7733 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7734 _next_ordinal_to_read += 1;
7735 next_offset += envelope_size;
7736 }
7737
7738 let next_out_of_line = decoder.next_out_of_line();
7739 let handles_before = decoder.remaining_handles();
7740 if let Some((inlined, num_bytes, num_handles)) =
7741 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7742 {
7743 let member_inline_size =
7744 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7745 if inlined != (member_inline_size <= 4) {
7746 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7747 }
7748 let inner_offset;
7749 let mut inner_depth = depth.clone();
7750 if inlined {
7751 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7752 inner_offset = next_offset;
7753 } else {
7754 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7755 inner_depth.increment()?;
7756 }
7757 let val_ref =
7758 self.format_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
7759 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7760 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7761 {
7762 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7763 }
7764 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7765 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7766 }
7767 }
7768
7769 next_offset += envelope_size;
7770 _next_ordinal_to_read += 1;
7771 if next_offset >= end_offset {
7772 return Ok(());
7773 }
7774
7775 while _next_ordinal_to_read < 4 {
7777 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7778 _next_ordinal_to_read += 1;
7779 next_offset += envelope_size;
7780 }
7781
7782 let next_out_of_line = decoder.next_out_of_line();
7783 let handles_before = decoder.remaining_handles();
7784 if let Some((inlined, num_bytes, num_handles)) =
7785 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7786 {
7787 let member_inline_size =
7788 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7789 if inlined != (member_inline_size <= 4) {
7790 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7791 }
7792 let inner_offset;
7793 let mut inner_depth = depth.clone();
7794 if inlined {
7795 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7796 inner_offset = next_offset;
7797 } else {
7798 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7799 inner_depth.increment()?;
7800 }
7801 let val_ref =
7802 self.name_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
7803 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7804 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7805 {
7806 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7807 }
7808 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7809 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7810 }
7811 }
7812
7813 next_offset += envelope_size;
7814 _next_ordinal_to_read += 1;
7815 if next_offset >= end_offset {
7816 return Ok(());
7817 }
7818
7819 while _next_ordinal_to_read < 5 {
7821 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7822 _next_ordinal_to_read += 1;
7823 next_offset += envelope_size;
7824 }
7825
7826 let next_out_of_line = decoder.next_out_of_line();
7827 let handles_before = decoder.remaining_handles();
7828 if let Some((inlined, num_bytes, num_handles)) =
7829 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7830 {
7831 let member_inline_size =
7832 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7833 if inlined != (member_inline_size <= 4) {
7834 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7835 }
7836 let inner_offset;
7837 let mut inner_depth = depth.clone();
7838 if inlined {
7839 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7840 inner_offset = next_offset;
7841 } else {
7842 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7843 inner_depth.increment()?;
7844 }
7845 let val_ref =
7846 self.not_implemented_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
7847 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7848 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7849 {
7850 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7851 }
7852 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7853 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7854 }
7855 }
7856
7857 next_offset += envelope_size;
7858 _next_ordinal_to_read += 1;
7859 if next_offset >= end_offset {
7860 return Ok(());
7861 }
7862
7863 while _next_ordinal_to_read < 6 {
7865 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7866 _next_ordinal_to_read += 1;
7867 next_offset += envelope_size;
7868 }
7869
7870 let next_out_of_line = decoder.next_out_of_line();
7871 let handles_before = decoder.remaining_handles();
7872 if let Some((inlined, num_bytes, num_handles)) =
7873 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7874 {
7875 let member_inline_size =
7876 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7877 if inlined != (member_inline_size <= 4) {
7878 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7879 }
7880 let inner_offset;
7881 let mut inner_depth = depth.clone();
7882 if inlined {
7883 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7884 inner_offset = next_offset;
7885 } else {
7886 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7887 inner_depth.increment()?;
7888 }
7889 let val_ref = self.other_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
7890 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7891 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7892 {
7893 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7894 }
7895 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7896 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7897 }
7898 }
7899
7900 next_offset += envelope_size;
7901 _next_ordinal_to_read += 1;
7902 if next_offset >= end_offset {
7903 return Ok(());
7904 }
7905
7906 while _next_ordinal_to_read < 7 {
7908 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7909 _next_ordinal_to_read += 1;
7910 next_offset += envelope_size;
7911 }
7912
7913 let next_out_of_line = decoder.next_out_of_line();
7914 let handles_before = decoder.remaining_handles();
7915 if let Some((inlined, num_bytes, num_handles)) =
7916 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7917 {
7918 let member_inline_size =
7919 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7920 if inlined != (member_inline_size <= 4) {
7921 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7922 }
7923 let inner_offset;
7924 let mut inner_depth = depth.clone();
7925 if inlined {
7926 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7927 inner_offset = next_offset;
7928 } else {
7929 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7930 inner_depth.increment()?;
7931 }
7932 let val_ref = self.resolved_by_srp.get_or_insert_with(|| fidl::new_empty!(u32, D));
7933 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7934 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7935 {
7936 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7937 }
7938 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7939 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7940 }
7941 }
7942
7943 next_offset += envelope_size;
7944 _next_ordinal_to_read += 1;
7945 if next_offset >= end_offset {
7946 return Ok(());
7947 }
7948
7949 while _next_ordinal_to_read < 8 {
7951 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7952 _next_ordinal_to_read += 1;
7953 next_offset += envelope_size;
7954 }
7955
7956 let next_out_of_line = decoder.next_out_of_line();
7957 let handles_before = decoder.remaining_handles();
7958 if let Some((inlined, num_bytes, num_handles)) =
7959 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7960 {
7961 let member_inline_size =
7962 <UpstreamDnsCounters as fidl::encoding::TypeMarker>::inline_size(
7963 decoder.context,
7964 );
7965 if inlined != (member_inline_size <= 4) {
7966 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7967 }
7968 let inner_offset;
7969 let mut inner_depth = depth.clone();
7970 if inlined {
7971 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7972 inner_offset = next_offset;
7973 } else {
7974 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7975 inner_depth.increment()?;
7976 }
7977 let val_ref = self
7978 .upstream_dns_counters
7979 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsCounters, D));
7980 fidl::decode!(UpstreamDnsCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
7981 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7982 {
7983 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7984 }
7985 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7986 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7987 }
7988 }
7989
7990 next_offset += envelope_size;
7991
7992 while next_offset < end_offset {
7994 _next_ordinal_to_read += 1;
7995 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7996 next_offset += envelope_size;
7997 }
7998
7999 Ok(())
8000 }
8001 }
8002
8003 impl ExternalRoute {
8004 #[inline(always)]
8005 fn max_ordinal_present(&self) -> u64 {
8006 if let Some(_) = self.stable {
8007 return 3;
8008 }
8009 if let Some(_) = self.route_preference {
8010 return 2;
8011 }
8012 if let Some(_) = self.subnet {
8013 return 1;
8014 }
8015 0
8016 }
8017 }
8018
8019 impl fidl::encoding::ValueTypeMarker for ExternalRoute {
8020 type Borrowed<'a> = &'a Self;
8021 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8022 value
8023 }
8024 }
8025
8026 unsafe impl fidl::encoding::TypeMarker for ExternalRoute {
8027 type Owned = Self;
8028
8029 #[inline(always)]
8030 fn inline_align(_context: fidl::encoding::Context) -> usize {
8031 8
8032 }
8033
8034 #[inline(always)]
8035 fn inline_size(_context: fidl::encoding::Context) -> usize {
8036 16
8037 }
8038 }
8039
8040 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExternalRoute, D>
8041 for &ExternalRoute
8042 {
8043 unsafe fn encode(
8044 self,
8045 encoder: &mut fidl::encoding::Encoder<'_, D>,
8046 offset: usize,
8047 mut depth: fidl::encoding::Depth,
8048 ) -> fidl::Result<()> {
8049 encoder.debug_check_bounds::<ExternalRoute>(offset);
8050 let max_ordinal: u64 = self.max_ordinal_present();
8052 encoder.write_num(max_ordinal, offset);
8053 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8054 if max_ordinal == 0 {
8056 return Ok(());
8057 }
8058 depth.increment()?;
8059 let envelope_size = 8;
8060 let bytes_len = max_ordinal as usize * envelope_size;
8061 #[allow(unused_variables)]
8062 let offset = encoder.out_of_line_offset(bytes_len);
8063 let mut _prev_end_offset: usize = 0;
8064 if 1 > max_ordinal {
8065 return Ok(());
8066 }
8067
8068 let cur_offset: usize = (1 - 1) * envelope_size;
8071
8072 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8074
8075 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>(
8080 self.subnet.as_ref().map(<fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow),
8081 encoder, offset + cur_offset, depth
8082 )?;
8083
8084 _prev_end_offset = cur_offset + envelope_size;
8085 if 2 > max_ordinal {
8086 return Ok(());
8087 }
8088
8089 let cur_offset: usize = (2 - 1) * envelope_size;
8092
8093 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8095
8096 fidl::encoding::encode_in_envelope_optional::<RoutePreference, D>(
8101 self.route_preference
8102 .as_ref()
8103 .map(<RoutePreference as fidl::encoding::ValueTypeMarker>::borrow),
8104 encoder,
8105 offset + cur_offset,
8106 depth,
8107 )?;
8108
8109 _prev_end_offset = cur_offset + envelope_size;
8110 if 3 > max_ordinal {
8111 return Ok(());
8112 }
8113
8114 let cur_offset: usize = (3 - 1) * envelope_size;
8117
8118 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8120
8121 fidl::encoding::encode_in_envelope_optional::<bool, D>(
8126 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
8127 encoder,
8128 offset + cur_offset,
8129 depth,
8130 )?;
8131
8132 _prev_end_offset = cur_offset + envelope_size;
8133
8134 Ok(())
8135 }
8136 }
8137
8138 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExternalRoute {
8139 #[inline(always)]
8140 fn new_empty() -> Self {
8141 Self::default()
8142 }
8143
8144 unsafe fn decode(
8145 &mut self,
8146 decoder: &mut fidl::encoding::Decoder<'_, D>,
8147 offset: usize,
8148 mut depth: fidl::encoding::Depth,
8149 ) -> fidl::Result<()> {
8150 decoder.debug_check_bounds::<Self>(offset);
8151 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8152 None => return Err(fidl::Error::NotNullable),
8153 Some(len) => len,
8154 };
8155 if len == 0 {
8157 return Ok(());
8158 };
8159 depth.increment()?;
8160 let envelope_size = 8;
8161 let bytes_len = len * envelope_size;
8162 let offset = decoder.out_of_line_offset(bytes_len)?;
8163 let mut _next_ordinal_to_read = 0;
8165 let mut next_offset = offset;
8166 let end_offset = offset + bytes_len;
8167 _next_ordinal_to_read += 1;
8168 if next_offset >= end_offset {
8169 return Ok(());
8170 }
8171
8172 while _next_ordinal_to_read < 1 {
8174 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8175 _next_ordinal_to_read += 1;
8176 next_offset += envelope_size;
8177 }
8178
8179 let next_out_of_line = decoder.next_out_of_line();
8180 let handles_before = decoder.remaining_handles();
8181 if let Some((inlined, num_bytes, num_handles)) =
8182 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8183 {
8184 let member_inline_size = <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8185 if inlined != (member_inline_size <= 4) {
8186 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8187 }
8188 let inner_offset;
8189 let mut inner_depth = depth.clone();
8190 if inlined {
8191 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8192 inner_offset = next_offset;
8193 } else {
8194 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8195 inner_depth.increment()?;
8196 }
8197 let val_ref = self.subnet.get_or_insert_with(|| {
8198 fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D)
8199 });
8200 fidl::decode!(
8201 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
8202 D,
8203 val_ref,
8204 decoder,
8205 inner_offset,
8206 inner_depth
8207 )?;
8208 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8209 {
8210 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8211 }
8212 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8213 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8214 }
8215 }
8216
8217 next_offset += envelope_size;
8218 _next_ordinal_to_read += 1;
8219 if next_offset >= end_offset {
8220 return Ok(());
8221 }
8222
8223 while _next_ordinal_to_read < 2 {
8225 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8226 _next_ordinal_to_read += 1;
8227 next_offset += envelope_size;
8228 }
8229
8230 let next_out_of_line = decoder.next_out_of_line();
8231 let handles_before = decoder.remaining_handles();
8232 if let Some((inlined, num_bytes, num_handles)) =
8233 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8234 {
8235 let member_inline_size =
8236 <RoutePreference as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8237 if inlined != (member_inline_size <= 4) {
8238 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8239 }
8240 let inner_offset;
8241 let mut inner_depth = depth.clone();
8242 if inlined {
8243 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8244 inner_offset = next_offset;
8245 } else {
8246 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8247 inner_depth.increment()?;
8248 }
8249 let val_ref = self
8250 .route_preference
8251 .get_or_insert_with(|| fidl::new_empty!(RoutePreference, D));
8252 fidl::decode!(RoutePreference, D, val_ref, decoder, inner_offset, inner_depth)?;
8253 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8254 {
8255 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8256 }
8257 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8258 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8259 }
8260 }
8261
8262 next_offset += envelope_size;
8263 _next_ordinal_to_read += 1;
8264 if next_offset >= end_offset {
8265 return Ok(());
8266 }
8267
8268 while _next_ordinal_to_read < 3 {
8270 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8271 _next_ordinal_to_read += 1;
8272 next_offset += envelope_size;
8273 }
8274
8275 let next_out_of_line = decoder.next_out_of_line();
8276 let handles_before = decoder.remaining_handles();
8277 if let Some((inlined, num_bytes, num_handles)) =
8278 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8279 {
8280 let member_inline_size =
8281 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8282 if inlined != (member_inline_size <= 4) {
8283 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8284 }
8285 let inner_offset;
8286 let mut inner_depth = depth.clone();
8287 if inlined {
8288 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8289 inner_offset = next_offset;
8290 } else {
8291 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8292 inner_depth.increment()?;
8293 }
8294 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
8295 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
8296 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8297 {
8298 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8299 }
8300 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8301 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8302 }
8303 }
8304
8305 next_offset += envelope_size;
8306
8307 while next_offset < end_offset {
8309 _next_ordinal_to_read += 1;
8310 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8311 next_offset += envelope_size;
8312 }
8313
8314 Ok(())
8315 }
8316 }
8317
8318 impl JoinerCommissioningParams {
8319 #[inline(always)]
8320 fn max_ordinal_present(&self) -> u64 {
8321 if let Some(_) = self.vendor_data_string {
8322 return 6;
8323 }
8324 if let Some(_) = self.vendor_sw_version {
8325 return 5;
8326 }
8327 if let Some(_) = self.vendor_model {
8328 return 4;
8329 }
8330 if let Some(_) = self.vendor_name {
8331 return 3;
8332 }
8333 if let Some(_) = self.provisioning_url {
8334 return 2;
8335 }
8336 if let Some(_) = self.pskd {
8337 return 1;
8338 }
8339 0
8340 }
8341 }
8342
8343 impl fidl::encoding::ValueTypeMarker for JoinerCommissioningParams {
8344 type Borrowed<'a> = &'a Self;
8345 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8346 value
8347 }
8348 }
8349
8350 unsafe impl fidl::encoding::TypeMarker for JoinerCommissioningParams {
8351 type Owned = Self;
8352
8353 #[inline(always)]
8354 fn inline_align(_context: fidl::encoding::Context) -> usize {
8355 8
8356 }
8357
8358 #[inline(always)]
8359 fn inline_size(_context: fidl::encoding::Context) -> usize {
8360 16
8361 }
8362 }
8363
8364 unsafe impl<D: fidl::encoding::ResourceDialect>
8365 fidl::encoding::Encode<JoinerCommissioningParams, D> for &JoinerCommissioningParams
8366 {
8367 unsafe fn encode(
8368 self,
8369 encoder: &mut fidl::encoding::Encoder<'_, D>,
8370 offset: usize,
8371 mut depth: fidl::encoding::Depth,
8372 ) -> fidl::Result<()> {
8373 encoder.debug_check_bounds::<JoinerCommissioningParams>(offset);
8374 let max_ordinal: u64 = self.max_ordinal_present();
8376 encoder.write_num(max_ordinal, offset);
8377 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8378 if max_ordinal == 0 {
8380 return Ok(());
8381 }
8382 depth.increment()?;
8383 let envelope_size = 8;
8384 let bytes_len = max_ordinal as usize * envelope_size;
8385 #[allow(unused_variables)]
8386 let offset = encoder.out_of_line_offset(bytes_len);
8387 let mut _prev_end_offset: usize = 0;
8388 if 1 > max_ordinal {
8389 return Ok(());
8390 }
8391
8392 let cur_offset: usize = (1 - 1) * envelope_size;
8395
8396 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8398
8399 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
8404 self.pskd.as_ref().map(
8405 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
8406 ),
8407 encoder,
8408 offset + cur_offset,
8409 depth,
8410 )?;
8411
8412 _prev_end_offset = cur_offset + envelope_size;
8413 if 2 > max_ordinal {
8414 return Ok(());
8415 }
8416
8417 let cur_offset: usize = (2 - 1) * envelope_size;
8420
8421 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8423
8424 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
8429 self.provisioning_url.as_ref().map(
8430 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
8431 ),
8432 encoder,
8433 offset + cur_offset,
8434 depth,
8435 )?;
8436
8437 _prev_end_offset = cur_offset + envelope_size;
8438 if 3 > max_ordinal {
8439 return Ok(());
8440 }
8441
8442 let cur_offset: usize = (3 - 1) * envelope_size;
8445
8446 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8448
8449 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
8454 self.vendor_name.as_ref().map(
8455 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
8456 ),
8457 encoder,
8458 offset + cur_offset,
8459 depth,
8460 )?;
8461
8462 _prev_end_offset = cur_offset + envelope_size;
8463 if 4 > max_ordinal {
8464 return Ok(());
8465 }
8466
8467 let cur_offset: usize = (4 - 1) * envelope_size;
8470
8471 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8473
8474 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
8479 self.vendor_model.as_ref().map(
8480 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
8481 ),
8482 encoder,
8483 offset + cur_offset,
8484 depth,
8485 )?;
8486
8487 _prev_end_offset = cur_offset + envelope_size;
8488 if 5 > max_ordinal {
8489 return Ok(());
8490 }
8491
8492 let cur_offset: usize = (5 - 1) * envelope_size;
8495
8496 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8498
8499 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<16>, D>(
8504 self.vendor_sw_version.as_ref().map(
8505 <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow,
8506 ),
8507 encoder,
8508 offset + cur_offset,
8509 depth,
8510 )?;
8511
8512 _prev_end_offset = cur_offset + envelope_size;
8513 if 6 > max_ordinal {
8514 return Ok(());
8515 }
8516
8517 let cur_offset: usize = (6 - 1) * envelope_size;
8520
8521 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8523
8524 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
8529 self.vendor_data_string.as_ref().map(
8530 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
8531 ),
8532 encoder,
8533 offset + cur_offset,
8534 depth,
8535 )?;
8536
8537 _prev_end_offset = cur_offset + envelope_size;
8538
8539 Ok(())
8540 }
8541 }
8542
8543 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8544 for JoinerCommissioningParams
8545 {
8546 #[inline(always)]
8547 fn new_empty() -> Self {
8548 Self::default()
8549 }
8550
8551 unsafe fn decode(
8552 &mut self,
8553 decoder: &mut fidl::encoding::Decoder<'_, D>,
8554 offset: usize,
8555 mut depth: fidl::encoding::Depth,
8556 ) -> fidl::Result<()> {
8557 decoder.debug_check_bounds::<Self>(offset);
8558 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8559 None => return Err(fidl::Error::NotNullable),
8560 Some(len) => len,
8561 };
8562 if len == 0 {
8564 return Ok(());
8565 };
8566 depth.increment()?;
8567 let envelope_size = 8;
8568 let bytes_len = len * envelope_size;
8569 let offset = decoder.out_of_line_offset(bytes_len)?;
8570 let mut _next_ordinal_to_read = 0;
8572 let mut next_offset = offset;
8573 let end_offset = offset + bytes_len;
8574 _next_ordinal_to_read += 1;
8575 if next_offset >= end_offset {
8576 return Ok(());
8577 }
8578
8579 while _next_ordinal_to_read < 1 {
8581 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8582 _next_ordinal_to_read += 1;
8583 next_offset += envelope_size;
8584 }
8585
8586 let next_out_of_line = decoder.next_out_of_line();
8587 let handles_before = decoder.remaining_handles();
8588 if let Some((inlined, num_bytes, num_handles)) =
8589 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8590 {
8591 let member_inline_size =
8592 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
8593 decoder.context,
8594 );
8595 if inlined != (member_inline_size <= 4) {
8596 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8597 }
8598 let inner_offset;
8599 let mut inner_depth = depth.clone();
8600 if inlined {
8601 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8602 inner_offset = next_offset;
8603 } else {
8604 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8605 inner_depth.increment()?;
8606 }
8607 let val_ref = self
8608 .pskd
8609 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
8610 fidl::decode!(
8611 fidl::encoding::BoundedString<32>,
8612 D,
8613 val_ref,
8614 decoder,
8615 inner_offset,
8616 inner_depth
8617 )?;
8618 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8619 {
8620 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8621 }
8622 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8623 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8624 }
8625 }
8626
8627 next_offset += envelope_size;
8628 _next_ordinal_to_read += 1;
8629 if next_offset >= end_offset {
8630 return Ok(());
8631 }
8632
8633 while _next_ordinal_to_read < 2 {
8635 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8636 _next_ordinal_to_read += 1;
8637 next_offset += envelope_size;
8638 }
8639
8640 let next_out_of_line = decoder.next_out_of_line();
8641 let handles_before = decoder.remaining_handles();
8642 if let Some((inlined, num_bytes, num_handles)) =
8643 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8644 {
8645 let member_inline_size =
8646 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
8647 decoder.context,
8648 );
8649 if inlined != (member_inline_size <= 4) {
8650 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8651 }
8652 let inner_offset;
8653 let mut inner_depth = depth.clone();
8654 if inlined {
8655 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8656 inner_offset = next_offset;
8657 } else {
8658 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8659 inner_depth.increment()?;
8660 }
8661 let val_ref = self
8662 .provisioning_url
8663 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
8664 fidl::decode!(
8665 fidl::encoding::BoundedString<64>,
8666 D,
8667 val_ref,
8668 decoder,
8669 inner_offset,
8670 inner_depth
8671 )?;
8672 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8673 {
8674 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8675 }
8676 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8677 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8678 }
8679 }
8680
8681 next_offset += envelope_size;
8682 _next_ordinal_to_read += 1;
8683 if next_offset >= end_offset {
8684 return Ok(());
8685 }
8686
8687 while _next_ordinal_to_read < 3 {
8689 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8690 _next_ordinal_to_read += 1;
8691 next_offset += envelope_size;
8692 }
8693
8694 let next_out_of_line = decoder.next_out_of_line();
8695 let handles_before = decoder.remaining_handles();
8696 if let Some((inlined, num_bytes, num_handles)) =
8697 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8698 {
8699 let member_inline_size =
8700 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
8701 decoder.context,
8702 );
8703 if inlined != (member_inline_size <= 4) {
8704 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8705 }
8706 let inner_offset;
8707 let mut inner_depth = depth.clone();
8708 if inlined {
8709 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8710 inner_offset = next_offset;
8711 } else {
8712 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8713 inner_depth.increment()?;
8714 }
8715 let val_ref = self
8716 .vendor_name
8717 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
8718 fidl::decode!(
8719 fidl::encoding::BoundedString<32>,
8720 D,
8721 val_ref,
8722 decoder,
8723 inner_offset,
8724 inner_depth
8725 )?;
8726 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8727 {
8728 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8729 }
8730 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8731 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8732 }
8733 }
8734
8735 next_offset += envelope_size;
8736 _next_ordinal_to_read += 1;
8737 if next_offset >= end_offset {
8738 return Ok(());
8739 }
8740
8741 while _next_ordinal_to_read < 4 {
8743 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8744 _next_ordinal_to_read += 1;
8745 next_offset += envelope_size;
8746 }
8747
8748 let next_out_of_line = decoder.next_out_of_line();
8749 let handles_before = decoder.remaining_handles();
8750 if let Some((inlined, num_bytes, num_handles)) =
8751 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8752 {
8753 let member_inline_size =
8754 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
8755 decoder.context,
8756 );
8757 if inlined != (member_inline_size <= 4) {
8758 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8759 }
8760 let inner_offset;
8761 let mut inner_depth = depth.clone();
8762 if inlined {
8763 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8764 inner_offset = next_offset;
8765 } else {
8766 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8767 inner_depth.increment()?;
8768 }
8769 let val_ref = self
8770 .vendor_model
8771 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
8772 fidl::decode!(
8773 fidl::encoding::BoundedString<32>,
8774 D,
8775 val_ref,
8776 decoder,
8777 inner_offset,
8778 inner_depth
8779 )?;
8780 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8781 {
8782 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8783 }
8784 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8785 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8786 }
8787 }
8788
8789 next_offset += envelope_size;
8790 _next_ordinal_to_read += 1;
8791 if next_offset >= end_offset {
8792 return Ok(());
8793 }
8794
8795 while _next_ordinal_to_read < 5 {
8797 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8798 _next_ordinal_to_read += 1;
8799 next_offset += envelope_size;
8800 }
8801
8802 let next_out_of_line = decoder.next_out_of_line();
8803 let handles_before = decoder.remaining_handles();
8804 if let Some((inlined, num_bytes, num_handles)) =
8805 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8806 {
8807 let member_inline_size =
8808 <fidl::encoding::BoundedString<16> as fidl::encoding::TypeMarker>::inline_size(
8809 decoder.context,
8810 );
8811 if inlined != (member_inline_size <= 4) {
8812 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8813 }
8814 let inner_offset;
8815 let mut inner_depth = depth.clone();
8816 if inlined {
8817 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8818 inner_offset = next_offset;
8819 } else {
8820 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8821 inner_depth.increment()?;
8822 }
8823 let val_ref = self
8824 .vendor_sw_version
8825 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<16>, D));
8826 fidl::decode!(
8827 fidl::encoding::BoundedString<16>,
8828 D,
8829 val_ref,
8830 decoder,
8831 inner_offset,
8832 inner_depth
8833 )?;
8834 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8835 {
8836 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8837 }
8838 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8839 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8840 }
8841 }
8842
8843 next_offset += envelope_size;
8844 _next_ordinal_to_read += 1;
8845 if next_offset >= end_offset {
8846 return Ok(());
8847 }
8848
8849 while _next_ordinal_to_read < 6 {
8851 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8852 _next_ordinal_to_read += 1;
8853 next_offset += envelope_size;
8854 }
8855
8856 let next_out_of_line = decoder.next_out_of_line();
8857 let handles_before = decoder.remaining_handles();
8858 if let Some((inlined, num_bytes, num_handles)) =
8859 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8860 {
8861 let member_inline_size =
8862 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
8863 decoder.context,
8864 );
8865 if inlined != (member_inline_size <= 4) {
8866 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8867 }
8868 let inner_offset;
8869 let mut inner_depth = depth.clone();
8870 if inlined {
8871 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8872 inner_offset = next_offset;
8873 } else {
8874 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8875 inner_depth.increment()?;
8876 }
8877 let val_ref = self
8878 .vendor_data_string
8879 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
8880 fidl::decode!(
8881 fidl::encoding::BoundedString<64>,
8882 D,
8883 val_ref,
8884 decoder,
8885 inner_offset,
8886 inner_depth
8887 )?;
8888 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8889 {
8890 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8891 }
8892 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8893 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8894 }
8895 }
8896
8897 next_offset += envelope_size;
8898
8899 while next_offset < end_offset {
8901 _next_ordinal_to_read += 1;
8902 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8903 next_offset += envelope_size;
8904 }
8905
8906 Ok(())
8907 }
8908 }
8909
8910 impl LeaderData {
8911 #[inline(always)]
8912 fn max_ordinal_present(&self) -> u64 {
8913 if let Some(_) = self.router_id {
8914 return 5;
8915 }
8916 if let Some(_) = self.stable_network_data_version {
8917 return 4;
8918 }
8919 if let Some(_) = self.network_data_version {
8920 return 3;
8921 }
8922 if let Some(_) = self.weight {
8923 return 2;
8924 }
8925 if let Some(_) = self.partition_id {
8926 return 1;
8927 }
8928 0
8929 }
8930 }
8931
8932 impl fidl::encoding::ValueTypeMarker for LeaderData {
8933 type Borrowed<'a> = &'a Self;
8934 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8935 value
8936 }
8937 }
8938
8939 unsafe impl fidl::encoding::TypeMarker for LeaderData {
8940 type Owned = Self;
8941
8942 #[inline(always)]
8943 fn inline_align(_context: fidl::encoding::Context) -> usize {
8944 8
8945 }
8946
8947 #[inline(always)]
8948 fn inline_size(_context: fidl::encoding::Context) -> usize {
8949 16
8950 }
8951 }
8952
8953 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LeaderData, D>
8954 for &LeaderData
8955 {
8956 unsafe fn encode(
8957 self,
8958 encoder: &mut fidl::encoding::Encoder<'_, D>,
8959 offset: usize,
8960 mut depth: fidl::encoding::Depth,
8961 ) -> fidl::Result<()> {
8962 encoder.debug_check_bounds::<LeaderData>(offset);
8963 let max_ordinal: u64 = self.max_ordinal_present();
8965 encoder.write_num(max_ordinal, offset);
8966 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8967 if max_ordinal == 0 {
8969 return Ok(());
8970 }
8971 depth.increment()?;
8972 let envelope_size = 8;
8973 let bytes_len = max_ordinal as usize * envelope_size;
8974 #[allow(unused_variables)]
8975 let offset = encoder.out_of_line_offset(bytes_len);
8976 let mut _prev_end_offset: usize = 0;
8977 if 1 > max_ordinal {
8978 return Ok(());
8979 }
8980
8981 let cur_offset: usize = (1 - 1) * envelope_size;
8984
8985 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8987
8988 fidl::encoding::encode_in_envelope_optional::<u32, D>(
8993 self.partition_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
8994 encoder,
8995 offset + cur_offset,
8996 depth,
8997 )?;
8998
8999 _prev_end_offset = cur_offset + envelope_size;
9000 if 2 > max_ordinal {
9001 return Ok(());
9002 }
9003
9004 let cur_offset: usize = (2 - 1) * envelope_size;
9007
9008 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9010
9011 fidl::encoding::encode_in_envelope_optional::<u8, D>(
9016 self.weight.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
9017 encoder,
9018 offset + cur_offset,
9019 depth,
9020 )?;
9021
9022 _prev_end_offset = cur_offset + envelope_size;
9023 if 3 > max_ordinal {
9024 return Ok(());
9025 }
9026
9027 let cur_offset: usize = (3 - 1) * envelope_size;
9030
9031 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9033
9034 fidl::encoding::encode_in_envelope_optional::<u8, D>(
9039 self.network_data_version
9040 .as_ref()
9041 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
9042 encoder,
9043 offset + cur_offset,
9044 depth,
9045 )?;
9046
9047 _prev_end_offset = cur_offset + envelope_size;
9048 if 4 > max_ordinal {
9049 return Ok(());
9050 }
9051
9052 let cur_offset: usize = (4 - 1) * envelope_size;
9055
9056 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9058
9059 fidl::encoding::encode_in_envelope_optional::<u8, D>(
9064 self.stable_network_data_version
9065 .as_ref()
9066 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
9067 encoder,
9068 offset + cur_offset,
9069 depth,
9070 )?;
9071
9072 _prev_end_offset = cur_offset + envelope_size;
9073 if 5 > max_ordinal {
9074 return Ok(());
9075 }
9076
9077 let cur_offset: usize = (5 - 1) * envelope_size;
9080
9081 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9083
9084 fidl::encoding::encode_in_envelope_optional::<u8, D>(
9089 self.router_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
9090 encoder,
9091 offset + cur_offset,
9092 depth,
9093 )?;
9094
9095 _prev_end_offset = cur_offset + envelope_size;
9096
9097 Ok(())
9098 }
9099 }
9100
9101 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LeaderData {
9102 #[inline(always)]
9103 fn new_empty() -> Self {
9104 Self::default()
9105 }
9106
9107 unsafe fn decode(
9108 &mut self,
9109 decoder: &mut fidl::encoding::Decoder<'_, D>,
9110 offset: usize,
9111 mut depth: fidl::encoding::Depth,
9112 ) -> fidl::Result<()> {
9113 decoder.debug_check_bounds::<Self>(offset);
9114 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9115 None => return Err(fidl::Error::NotNullable),
9116 Some(len) => len,
9117 };
9118 if len == 0 {
9120 return Ok(());
9121 };
9122 depth.increment()?;
9123 let envelope_size = 8;
9124 let bytes_len = len * envelope_size;
9125 let offset = decoder.out_of_line_offset(bytes_len)?;
9126 let mut _next_ordinal_to_read = 0;
9128 let mut next_offset = offset;
9129 let end_offset = offset + bytes_len;
9130 _next_ordinal_to_read += 1;
9131 if next_offset >= end_offset {
9132 return Ok(());
9133 }
9134
9135 while _next_ordinal_to_read < 1 {
9137 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9138 _next_ordinal_to_read += 1;
9139 next_offset += envelope_size;
9140 }
9141
9142 let next_out_of_line = decoder.next_out_of_line();
9143 let handles_before = decoder.remaining_handles();
9144 if let Some((inlined, num_bytes, num_handles)) =
9145 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9146 {
9147 let member_inline_size =
9148 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9149 if inlined != (member_inline_size <= 4) {
9150 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9151 }
9152 let inner_offset;
9153 let mut inner_depth = depth.clone();
9154 if inlined {
9155 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9156 inner_offset = next_offset;
9157 } else {
9158 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9159 inner_depth.increment()?;
9160 }
9161 let val_ref = self.partition_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
9162 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
9163 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9164 {
9165 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9166 }
9167 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9168 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9169 }
9170 }
9171
9172 next_offset += envelope_size;
9173 _next_ordinal_to_read += 1;
9174 if next_offset >= end_offset {
9175 return Ok(());
9176 }
9177
9178 while _next_ordinal_to_read < 2 {
9180 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9181 _next_ordinal_to_read += 1;
9182 next_offset += envelope_size;
9183 }
9184
9185 let next_out_of_line = decoder.next_out_of_line();
9186 let handles_before = decoder.remaining_handles();
9187 if let Some((inlined, num_bytes, num_handles)) =
9188 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9189 {
9190 let member_inline_size =
9191 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9192 if inlined != (member_inline_size <= 4) {
9193 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9194 }
9195 let inner_offset;
9196 let mut inner_depth = depth.clone();
9197 if inlined {
9198 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9199 inner_offset = next_offset;
9200 } else {
9201 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9202 inner_depth.increment()?;
9203 }
9204 let val_ref = self.weight.get_or_insert_with(|| fidl::new_empty!(u8, D));
9205 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9206 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9207 {
9208 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9209 }
9210 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9211 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9212 }
9213 }
9214
9215 next_offset += envelope_size;
9216 _next_ordinal_to_read += 1;
9217 if next_offset >= end_offset {
9218 return Ok(());
9219 }
9220
9221 while _next_ordinal_to_read < 3 {
9223 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9224 _next_ordinal_to_read += 1;
9225 next_offset += envelope_size;
9226 }
9227
9228 let next_out_of_line = decoder.next_out_of_line();
9229 let handles_before = decoder.remaining_handles();
9230 if let Some((inlined, num_bytes, num_handles)) =
9231 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9232 {
9233 let member_inline_size =
9234 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9235 if inlined != (member_inline_size <= 4) {
9236 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9237 }
9238 let inner_offset;
9239 let mut inner_depth = depth.clone();
9240 if inlined {
9241 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9242 inner_offset = next_offset;
9243 } else {
9244 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9245 inner_depth.increment()?;
9246 }
9247 let val_ref =
9248 self.network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
9249 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9250 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9251 {
9252 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9253 }
9254 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9255 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9256 }
9257 }
9258
9259 next_offset += envelope_size;
9260 _next_ordinal_to_read += 1;
9261 if next_offset >= end_offset {
9262 return Ok(());
9263 }
9264
9265 while _next_ordinal_to_read < 4 {
9267 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9268 _next_ordinal_to_read += 1;
9269 next_offset += envelope_size;
9270 }
9271
9272 let next_out_of_line = decoder.next_out_of_line();
9273 let handles_before = decoder.remaining_handles();
9274 if let Some((inlined, num_bytes, num_handles)) =
9275 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9276 {
9277 let member_inline_size =
9278 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9279 if inlined != (member_inline_size <= 4) {
9280 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9281 }
9282 let inner_offset;
9283 let mut inner_depth = depth.clone();
9284 if inlined {
9285 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9286 inner_offset = next_offset;
9287 } else {
9288 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9289 inner_depth.increment()?;
9290 }
9291 let val_ref =
9292 self.stable_network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
9293 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9294 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9295 {
9296 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9297 }
9298 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9299 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9300 }
9301 }
9302
9303 next_offset += envelope_size;
9304 _next_ordinal_to_read += 1;
9305 if next_offset >= end_offset {
9306 return Ok(());
9307 }
9308
9309 while _next_ordinal_to_read < 5 {
9311 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9312 _next_ordinal_to_read += 1;
9313 next_offset += envelope_size;
9314 }
9315
9316 let next_out_of_line = decoder.next_out_of_line();
9317 let handles_before = decoder.remaining_handles();
9318 if let Some((inlined, num_bytes, num_handles)) =
9319 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9320 {
9321 let member_inline_size =
9322 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9323 if inlined != (member_inline_size <= 4) {
9324 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9325 }
9326 let inner_offset;
9327 let mut inner_depth = depth.clone();
9328 if inlined {
9329 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9330 inner_offset = next_offset;
9331 } else {
9332 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9333 inner_depth.increment()?;
9334 }
9335 let val_ref = self.router_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
9336 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9337 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9338 {
9339 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9340 }
9341 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9342 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9343 }
9344 }
9345
9346 next_offset += envelope_size;
9347
9348 while next_offset < end_offset {
9350 _next_ordinal_to_read += 1;
9351 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9352 next_offset += envelope_size;
9353 }
9354
9355 Ok(())
9356 }
9357 }
9358
9359 impl LinkMetricsEntry {
9360 #[inline(always)]
9361 fn max_ordinal_present(&self) -> u64 {
9362 if let Some(_) = self.rssi {
9363 return 2;
9364 }
9365 if let Some(_) = self.link_margin {
9366 return 1;
9367 }
9368 0
9369 }
9370 }
9371
9372 impl fidl::encoding::ValueTypeMarker for LinkMetricsEntry {
9373 type Borrowed<'a> = &'a Self;
9374 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9375 value
9376 }
9377 }
9378
9379 unsafe impl fidl::encoding::TypeMarker for LinkMetricsEntry {
9380 type Owned = Self;
9381
9382 #[inline(always)]
9383 fn inline_align(_context: fidl::encoding::Context) -> usize {
9384 8
9385 }
9386
9387 #[inline(always)]
9388 fn inline_size(_context: fidl::encoding::Context) -> usize {
9389 16
9390 }
9391 }
9392
9393 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LinkMetricsEntry, D>
9394 for &LinkMetricsEntry
9395 {
9396 unsafe fn encode(
9397 self,
9398 encoder: &mut fidl::encoding::Encoder<'_, D>,
9399 offset: usize,
9400 mut depth: fidl::encoding::Depth,
9401 ) -> fidl::Result<()> {
9402 encoder.debug_check_bounds::<LinkMetricsEntry>(offset);
9403 let max_ordinal: u64 = self.max_ordinal_present();
9405 encoder.write_num(max_ordinal, offset);
9406 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9407 if max_ordinal == 0 {
9409 return Ok(());
9410 }
9411 depth.increment()?;
9412 let envelope_size = 8;
9413 let bytes_len = max_ordinal as usize * envelope_size;
9414 #[allow(unused_variables)]
9415 let offset = encoder.out_of_line_offset(bytes_len);
9416 let mut _prev_end_offset: usize = 0;
9417 if 1 > max_ordinal {
9418 return Ok(());
9419 }
9420
9421 let cur_offset: usize = (1 - 1) * envelope_size;
9424
9425 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9427
9428 fidl::encoding::encode_in_envelope_optional::<u8, D>(
9433 self.link_margin.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
9434 encoder,
9435 offset + cur_offset,
9436 depth,
9437 )?;
9438
9439 _prev_end_offset = cur_offset + envelope_size;
9440 if 2 > max_ordinal {
9441 return Ok(());
9442 }
9443
9444 let cur_offset: usize = (2 - 1) * envelope_size;
9447
9448 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9450
9451 fidl::encoding::encode_in_envelope_optional::<i8, D>(
9456 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
9457 encoder,
9458 offset + cur_offset,
9459 depth,
9460 )?;
9461
9462 _prev_end_offset = cur_offset + envelope_size;
9463
9464 Ok(())
9465 }
9466 }
9467
9468 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LinkMetricsEntry {
9469 #[inline(always)]
9470 fn new_empty() -> Self {
9471 Self::default()
9472 }
9473
9474 unsafe fn decode(
9475 &mut self,
9476 decoder: &mut fidl::encoding::Decoder<'_, D>,
9477 offset: usize,
9478 mut depth: fidl::encoding::Depth,
9479 ) -> fidl::Result<()> {
9480 decoder.debug_check_bounds::<Self>(offset);
9481 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9482 None => return Err(fidl::Error::NotNullable),
9483 Some(len) => len,
9484 };
9485 if len == 0 {
9487 return Ok(());
9488 };
9489 depth.increment()?;
9490 let envelope_size = 8;
9491 let bytes_len = len * envelope_size;
9492 let offset = decoder.out_of_line_offset(bytes_len)?;
9493 let mut _next_ordinal_to_read = 0;
9495 let mut next_offset = offset;
9496 let end_offset = offset + bytes_len;
9497 _next_ordinal_to_read += 1;
9498 if next_offset >= end_offset {
9499 return Ok(());
9500 }
9501
9502 while _next_ordinal_to_read < 1 {
9504 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9505 _next_ordinal_to_read += 1;
9506 next_offset += envelope_size;
9507 }
9508
9509 let next_out_of_line = decoder.next_out_of_line();
9510 let handles_before = decoder.remaining_handles();
9511 if let Some((inlined, num_bytes, num_handles)) =
9512 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9513 {
9514 let member_inline_size =
9515 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9516 if inlined != (member_inline_size <= 4) {
9517 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9518 }
9519 let inner_offset;
9520 let mut inner_depth = depth.clone();
9521 if inlined {
9522 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9523 inner_offset = next_offset;
9524 } else {
9525 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9526 inner_depth.increment()?;
9527 }
9528 let val_ref = self.link_margin.get_or_insert_with(|| fidl::new_empty!(u8, D));
9529 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9530 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9531 {
9532 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9533 }
9534 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9535 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9536 }
9537 }
9538
9539 next_offset += envelope_size;
9540 _next_ordinal_to_read += 1;
9541 if next_offset >= end_offset {
9542 return Ok(());
9543 }
9544
9545 while _next_ordinal_to_read < 2 {
9547 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9548 _next_ordinal_to_read += 1;
9549 next_offset += envelope_size;
9550 }
9551
9552 let next_out_of_line = decoder.next_out_of_line();
9553 let handles_before = decoder.remaining_handles();
9554 if let Some((inlined, num_bytes, num_handles)) =
9555 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9556 {
9557 let member_inline_size =
9558 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9559 if inlined != (member_inline_size <= 4) {
9560 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9561 }
9562 let inner_offset;
9563 let mut inner_depth = depth.clone();
9564 if inlined {
9565 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9566 inner_offset = next_offset;
9567 } else {
9568 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9569 inner_depth.increment()?;
9570 }
9571 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
9572 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
9573 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9574 {
9575 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9576 }
9577 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9578 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9579 }
9580 }
9581
9582 next_offset += envelope_size;
9583
9584 while next_offset < end_offset {
9586 _next_ordinal_to_read += 1;
9587 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9588 next_offset += envelope_size;
9589 }
9590
9591 Ok(())
9592 }
9593 }
9594
9595 impl Nat64ErrorCounters {
9596 #[inline(always)]
9597 fn max_ordinal_present(&self) -> u64 {
9598 if let Some(_) = self.no_mapping {
9599 return 4;
9600 }
9601 if let Some(_) = self.unsupported_protocol {
9602 return 3;
9603 }
9604 if let Some(_) = self.illegal_packet {
9605 return 2;
9606 }
9607 if let Some(_) = self.unknown {
9608 return 1;
9609 }
9610 0
9611 }
9612 }
9613
9614 impl fidl::encoding::ValueTypeMarker for Nat64ErrorCounters {
9615 type Borrowed<'a> = &'a Self;
9616 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9617 value
9618 }
9619 }
9620
9621 unsafe impl fidl::encoding::TypeMarker for Nat64ErrorCounters {
9622 type Owned = Self;
9623
9624 #[inline(always)]
9625 fn inline_align(_context: fidl::encoding::Context) -> usize {
9626 8
9627 }
9628
9629 #[inline(always)]
9630 fn inline_size(_context: fidl::encoding::Context) -> usize {
9631 16
9632 }
9633 }
9634
9635 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64ErrorCounters, D>
9636 for &Nat64ErrorCounters
9637 {
9638 unsafe fn encode(
9639 self,
9640 encoder: &mut fidl::encoding::Encoder<'_, D>,
9641 offset: usize,
9642 mut depth: fidl::encoding::Depth,
9643 ) -> fidl::Result<()> {
9644 encoder.debug_check_bounds::<Nat64ErrorCounters>(offset);
9645 let max_ordinal: u64 = self.max_ordinal_present();
9647 encoder.write_num(max_ordinal, offset);
9648 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9649 if max_ordinal == 0 {
9651 return Ok(());
9652 }
9653 depth.increment()?;
9654 let envelope_size = 8;
9655 let bytes_len = max_ordinal as usize * envelope_size;
9656 #[allow(unused_variables)]
9657 let offset = encoder.out_of_line_offset(bytes_len);
9658 let mut _prev_end_offset: usize = 0;
9659 if 1 > max_ordinal {
9660 return Ok(());
9661 }
9662
9663 let cur_offset: usize = (1 - 1) * envelope_size;
9666
9667 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9669
9670 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
9675 self.unknown
9676 .as_ref()
9677 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
9678 encoder,
9679 offset + cur_offset,
9680 depth,
9681 )?;
9682
9683 _prev_end_offset = cur_offset + envelope_size;
9684 if 2 > max_ordinal {
9685 return Ok(());
9686 }
9687
9688 let cur_offset: usize = (2 - 1) * envelope_size;
9691
9692 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9694
9695 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
9700 self.illegal_packet
9701 .as_ref()
9702 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
9703 encoder,
9704 offset + cur_offset,
9705 depth,
9706 )?;
9707
9708 _prev_end_offset = cur_offset + envelope_size;
9709 if 3 > max_ordinal {
9710 return Ok(());
9711 }
9712
9713 let cur_offset: usize = (3 - 1) * envelope_size;
9716
9717 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9719
9720 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
9725 self.unsupported_protocol
9726 .as_ref()
9727 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
9728 encoder,
9729 offset + cur_offset,
9730 depth,
9731 )?;
9732
9733 _prev_end_offset = cur_offset + envelope_size;
9734 if 4 > max_ordinal {
9735 return Ok(());
9736 }
9737
9738 let cur_offset: usize = (4 - 1) * envelope_size;
9741
9742 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9744
9745 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
9750 self.no_mapping
9751 .as_ref()
9752 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
9753 encoder,
9754 offset + cur_offset,
9755 depth,
9756 )?;
9757
9758 _prev_end_offset = cur_offset + envelope_size;
9759
9760 Ok(())
9761 }
9762 }
9763
9764 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64ErrorCounters {
9765 #[inline(always)]
9766 fn new_empty() -> Self {
9767 Self::default()
9768 }
9769
9770 unsafe fn decode(
9771 &mut self,
9772 decoder: &mut fidl::encoding::Decoder<'_, D>,
9773 offset: usize,
9774 mut depth: fidl::encoding::Depth,
9775 ) -> fidl::Result<()> {
9776 decoder.debug_check_bounds::<Self>(offset);
9777 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9778 None => return Err(fidl::Error::NotNullable),
9779 Some(len) => len,
9780 };
9781 if len == 0 {
9783 return Ok(());
9784 };
9785 depth.increment()?;
9786 let envelope_size = 8;
9787 let bytes_len = len * envelope_size;
9788 let offset = decoder.out_of_line_offset(bytes_len)?;
9789 let mut _next_ordinal_to_read = 0;
9791 let mut next_offset = offset;
9792 let end_offset = offset + bytes_len;
9793 _next_ordinal_to_read += 1;
9794 if next_offset >= end_offset {
9795 return Ok(());
9796 }
9797
9798 while _next_ordinal_to_read < 1 {
9800 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9801 _next_ordinal_to_read += 1;
9802 next_offset += envelope_size;
9803 }
9804
9805 let next_out_of_line = decoder.next_out_of_line();
9806 let handles_before = decoder.remaining_handles();
9807 if let Some((inlined, num_bytes, num_handles)) =
9808 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9809 {
9810 let member_inline_size =
9811 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
9812 decoder.context,
9813 );
9814 if inlined != (member_inline_size <= 4) {
9815 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9816 }
9817 let inner_offset;
9818 let mut inner_depth = depth.clone();
9819 if inlined {
9820 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9821 inner_offset = next_offset;
9822 } else {
9823 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9824 inner_depth.increment()?;
9825 }
9826 let val_ref =
9827 self.unknown.get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
9828 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
9829 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9830 {
9831 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9832 }
9833 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9834 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9835 }
9836 }
9837
9838 next_offset += envelope_size;
9839 _next_ordinal_to_read += 1;
9840 if next_offset >= end_offset {
9841 return Ok(());
9842 }
9843
9844 while _next_ordinal_to_read < 2 {
9846 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9847 _next_ordinal_to_read += 1;
9848 next_offset += envelope_size;
9849 }
9850
9851 let next_out_of_line = decoder.next_out_of_line();
9852 let handles_before = decoder.remaining_handles();
9853 if let Some((inlined, num_bytes, num_handles)) =
9854 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9855 {
9856 let member_inline_size =
9857 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
9858 decoder.context,
9859 );
9860 if inlined != (member_inline_size <= 4) {
9861 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9862 }
9863 let inner_offset;
9864 let mut inner_depth = depth.clone();
9865 if inlined {
9866 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9867 inner_offset = next_offset;
9868 } else {
9869 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9870 inner_depth.increment()?;
9871 }
9872 let val_ref = self
9873 .illegal_packet
9874 .get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
9875 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
9876 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9877 {
9878 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9879 }
9880 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9881 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9882 }
9883 }
9884
9885 next_offset += envelope_size;
9886 _next_ordinal_to_read += 1;
9887 if next_offset >= end_offset {
9888 return Ok(());
9889 }
9890
9891 while _next_ordinal_to_read < 3 {
9893 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9894 _next_ordinal_to_read += 1;
9895 next_offset += envelope_size;
9896 }
9897
9898 let next_out_of_line = decoder.next_out_of_line();
9899 let handles_before = decoder.remaining_handles();
9900 if let Some((inlined, num_bytes, num_handles)) =
9901 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9902 {
9903 let member_inline_size =
9904 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
9905 decoder.context,
9906 );
9907 if inlined != (member_inline_size <= 4) {
9908 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9909 }
9910 let inner_offset;
9911 let mut inner_depth = depth.clone();
9912 if inlined {
9913 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9914 inner_offset = next_offset;
9915 } else {
9916 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9917 inner_depth.increment()?;
9918 }
9919 let val_ref = self
9920 .unsupported_protocol
9921 .get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
9922 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
9923 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9924 {
9925 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9926 }
9927 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9928 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9929 }
9930 }
9931
9932 next_offset += envelope_size;
9933 _next_ordinal_to_read += 1;
9934 if next_offset >= end_offset {
9935 return Ok(());
9936 }
9937
9938 while _next_ordinal_to_read < 4 {
9940 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9941 _next_ordinal_to_read += 1;
9942 next_offset += envelope_size;
9943 }
9944
9945 let next_out_of_line = decoder.next_out_of_line();
9946 let handles_before = decoder.remaining_handles();
9947 if let Some((inlined, num_bytes, num_handles)) =
9948 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9949 {
9950 let member_inline_size =
9951 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
9952 decoder.context,
9953 );
9954 if inlined != (member_inline_size <= 4) {
9955 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9956 }
9957 let inner_offset;
9958 let mut inner_depth = depth.clone();
9959 if inlined {
9960 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9961 inner_offset = next_offset;
9962 } else {
9963 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9964 inner_depth.increment()?;
9965 }
9966 let val_ref =
9967 self.no_mapping.get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
9968 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
9969 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9970 {
9971 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9972 }
9973 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9974 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9975 }
9976 }
9977
9978 next_offset += envelope_size;
9979
9980 while next_offset < end_offset {
9982 _next_ordinal_to_read += 1;
9983 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9984 next_offset += envelope_size;
9985 }
9986
9987 Ok(())
9988 }
9989 }
9990
9991 impl Nat64Info {
9992 #[inline(always)]
9993 fn max_ordinal_present(&self) -> u64 {
9994 if let Some(_) = self.nat64_protocol_counters {
9995 return 4;
9996 }
9997 if let Some(_) = self.nat64_error_counters {
9998 return 3;
9999 }
10000 if let Some(_) = self.nat64_mappings {
10001 return 2;
10002 }
10003 if let Some(_) = self.nat64_state {
10004 return 1;
10005 }
10006 0
10007 }
10008 }
10009
10010 impl fidl::encoding::ValueTypeMarker for Nat64Info {
10011 type Borrowed<'a> = &'a Self;
10012 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10013 value
10014 }
10015 }
10016
10017 unsafe impl fidl::encoding::TypeMarker for Nat64Info {
10018 type Owned = Self;
10019
10020 #[inline(always)]
10021 fn inline_align(_context: fidl::encoding::Context) -> usize {
10022 8
10023 }
10024
10025 #[inline(always)]
10026 fn inline_size(_context: fidl::encoding::Context) -> usize {
10027 16
10028 }
10029 }
10030
10031 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64Info, D>
10032 for &Nat64Info
10033 {
10034 unsafe fn encode(
10035 self,
10036 encoder: &mut fidl::encoding::Encoder<'_, D>,
10037 offset: usize,
10038 mut depth: fidl::encoding::Depth,
10039 ) -> fidl::Result<()> {
10040 encoder.debug_check_bounds::<Nat64Info>(offset);
10041 let max_ordinal: u64 = self.max_ordinal_present();
10043 encoder.write_num(max_ordinal, offset);
10044 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10045 if max_ordinal == 0 {
10047 return Ok(());
10048 }
10049 depth.increment()?;
10050 let envelope_size = 8;
10051 let bytes_len = max_ordinal as usize * envelope_size;
10052 #[allow(unused_variables)]
10053 let offset = encoder.out_of_line_offset(bytes_len);
10054 let mut _prev_end_offset: usize = 0;
10055 if 1 > max_ordinal {
10056 return Ok(());
10057 }
10058
10059 let cur_offset: usize = (1 - 1) * envelope_size;
10062
10063 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10065
10066 fidl::encoding::encode_in_envelope_optional::<BorderRoutingNat64State, D>(
10071 self.nat64_state
10072 .as_ref()
10073 .map(<BorderRoutingNat64State as fidl::encoding::ValueTypeMarker>::borrow),
10074 encoder,
10075 offset + cur_offset,
10076 depth,
10077 )?;
10078
10079 _prev_end_offset = cur_offset + envelope_size;
10080 if 2 > max_ordinal {
10081 return Ok(());
10082 }
10083
10084 let cur_offset: usize = (2 - 1) * envelope_size;
10087
10088 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10090
10091 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Nat64Mapping>, D>(
10096 self.nat64_mappings.as_ref().map(<fidl::encoding::UnboundedVector<Nat64Mapping> as fidl::encoding::ValueTypeMarker>::borrow),
10097 encoder, offset + cur_offset, depth
10098 )?;
10099
10100 _prev_end_offset = cur_offset + envelope_size;
10101 if 3 > max_ordinal {
10102 return Ok(());
10103 }
10104
10105 let cur_offset: usize = (3 - 1) * envelope_size;
10108
10109 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10111
10112 fidl::encoding::encode_in_envelope_optional::<Nat64ErrorCounters, D>(
10117 self.nat64_error_counters
10118 .as_ref()
10119 .map(<Nat64ErrorCounters as fidl::encoding::ValueTypeMarker>::borrow),
10120 encoder,
10121 offset + cur_offset,
10122 depth,
10123 )?;
10124
10125 _prev_end_offset = cur_offset + envelope_size;
10126 if 4 > max_ordinal {
10127 return Ok(());
10128 }
10129
10130 let cur_offset: usize = (4 - 1) * envelope_size;
10133
10134 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10136
10137 fidl::encoding::encode_in_envelope_optional::<Nat64ProtocolCounters, D>(
10142 self.nat64_protocol_counters
10143 .as_ref()
10144 .map(<Nat64ProtocolCounters as fidl::encoding::ValueTypeMarker>::borrow),
10145 encoder,
10146 offset + cur_offset,
10147 depth,
10148 )?;
10149
10150 _prev_end_offset = cur_offset + envelope_size;
10151
10152 Ok(())
10153 }
10154 }
10155
10156 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64Info {
10157 #[inline(always)]
10158 fn new_empty() -> Self {
10159 Self::default()
10160 }
10161
10162 unsafe fn decode(
10163 &mut self,
10164 decoder: &mut fidl::encoding::Decoder<'_, D>,
10165 offset: usize,
10166 mut depth: fidl::encoding::Depth,
10167 ) -> fidl::Result<()> {
10168 decoder.debug_check_bounds::<Self>(offset);
10169 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10170 None => return Err(fidl::Error::NotNullable),
10171 Some(len) => len,
10172 };
10173 if len == 0 {
10175 return Ok(());
10176 };
10177 depth.increment()?;
10178 let envelope_size = 8;
10179 let bytes_len = len * envelope_size;
10180 let offset = decoder.out_of_line_offset(bytes_len)?;
10181 let mut _next_ordinal_to_read = 0;
10183 let mut next_offset = offset;
10184 let end_offset = offset + bytes_len;
10185 _next_ordinal_to_read += 1;
10186 if next_offset >= end_offset {
10187 return Ok(());
10188 }
10189
10190 while _next_ordinal_to_read < 1 {
10192 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10193 _next_ordinal_to_read += 1;
10194 next_offset += envelope_size;
10195 }
10196
10197 let next_out_of_line = decoder.next_out_of_line();
10198 let handles_before = decoder.remaining_handles();
10199 if let Some((inlined, num_bytes, num_handles)) =
10200 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10201 {
10202 let member_inline_size =
10203 <BorderRoutingNat64State as fidl::encoding::TypeMarker>::inline_size(
10204 decoder.context,
10205 );
10206 if inlined != (member_inline_size <= 4) {
10207 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10208 }
10209 let inner_offset;
10210 let mut inner_depth = depth.clone();
10211 if inlined {
10212 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10213 inner_offset = next_offset;
10214 } else {
10215 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10216 inner_depth.increment()?;
10217 }
10218 let val_ref = self
10219 .nat64_state
10220 .get_or_insert_with(|| fidl::new_empty!(BorderRoutingNat64State, D));
10221 fidl::decode!(
10222 BorderRoutingNat64State,
10223 D,
10224 val_ref,
10225 decoder,
10226 inner_offset,
10227 inner_depth
10228 )?;
10229 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10230 {
10231 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10232 }
10233 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10234 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10235 }
10236 }
10237
10238 next_offset += envelope_size;
10239 _next_ordinal_to_read += 1;
10240 if next_offset >= end_offset {
10241 return Ok(());
10242 }
10243
10244 while _next_ordinal_to_read < 2 {
10246 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10247 _next_ordinal_to_read += 1;
10248 next_offset += envelope_size;
10249 }
10250
10251 let next_out_of_line = decoder.next_out_of_line();
10252 let handles_before = decoder.remaining_handles();
10253 if let Some((inlined, num_bytes, num_handles)) =
10254 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10255 {
10256 let member_inline_size = <fidl::encoding::UnboundedVector<Nat64Mapping> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10257 if inlined != (member_inline_size <= 4) {
10258 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10259 }
10260 let inner_offset;
10261 let mut inner_depth = depth.clone();
10262 if inlined {
10263 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10264 inner_offset = next_offset;
10265 } else {
10266 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10267 inner_depth.increment()?;
10268 }
10269 let val_ref = self.nat64_mappings.get_or_insert_with(|| {
10270 fidl::new_empty!(fidl::encoding::UnboundedVector<Nat64Mapping>, D)
10271 });
10272 fidl::decode!(
10273 fidl::encoding::UnboundedVector<Nat64Mapping>,
10274 D,
10275 val_ref,
10276 decoder,
10277 inner_offset,
10278 inner_depth
10279 )?;
10280 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10281 {
10282 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10283 }
10284 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10285 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10286 }
10287 }
10288
10289 next_offset += envelope_size;
10290 _next_ordinal_to_read += 1;
10291 if next_offset >= end_offset {
10292 return Ok(());
10293 }
10294
10295 while _next_ordinal_to_read < 3 {
10297 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10298 _next_ordinal_to_read += 1;
10299 next_offset += envelope_size;
10300 }
10301
10302 let next_out_of_line = decoder.next_out_of_line();
10303 let handles_before = decoder.remaining_handles();
10304 if let Some((inlined, num_bytes, num_handles)) =
10305 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10306 {
10307 let member_inline_size =
10308 <Nat64ErrorCounters as fidl::encoding::TypeMarker>::inline_size(
10309 decoder.context,
10310 );
10311 if inlined != (member_inline_size <= 4) {
10312 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10313 }
10314 let inner_offset;
10315 let mut inner_depth = depth.clone();
10316 if inlined {
10317 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10318 inner_offset = next_offset;
10319 } else {
10320 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10321 inner_depth.increment()?;
10322 }
10323 let val_ref = self
10324 .nat64_error_counters
10325 .get_or_insert_with(|| fidl::new_empty!(Nat64ErrorCounters, D));
10326 fidl::decode!(Nat64ErrorCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
10327 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10328 {
10329 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10330 }
10331 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10332 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10333 }
10334 }
10335
10336 next_offset += envelope_size;
10337 _next_ordinal_to_read += 1;
10338 if next_offset >= end_offset {
10339 return Ok(());
10340 }
10341
10342 while _next_ordinal_to_read < 4 {
10344 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10345 _next_ordinal_to_read += 1;
10346 next_offset += envelope_size;
10347 }
10348
10349 let next_out_of_line = decoder.next_out_of_line();
10350 let handles_before = decoder.remaining_handles();
10351 if let Some((inlined, num_bytes, num_handles)) =
10352 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10353 {
10354 let member_inline_size =
10355 <Nat64ProtocolCounters as fidl::encoding::TypeMarker>::inline_size(
10356 decoder.context,
10357 );
10358 if inlined != (member_inline_size <= 4) {
10359 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10360 }
10361 let inner_offset;
10362 let mut inner_depth = depth.clone();
10363 if inlined {
10364 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10365 inner_offset = next_offset;
10366 } else {
10367 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10368 inner_depth.increment()?;
10369 }
10370 let val_ref = self
10371 .nat64_protocol_counters
10372 .get_or_insert_with(|| fidl::new_empty!(Nat64ProtocolCounters, D));
10373 fidl::decode!(
10374 Nat64ProtocolCounters,
10375 D,
10376 val_ref,
10377 decoder,
10378 inner_offset,
10379 inner_depth
10380 )?;
10381 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10382 {
10383 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10384 }
10385 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10386 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10387 }
10388 }
10389
10390 next_offset += envelope_size;
10391
10392 while next_offset < end_offset {
10394 _next_ordinal_to_read += 1;
10395 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10396 next_offset += envelope_size;
10397 }
10398
10399 Ok(())
10400 }
10401 }
10402
10403 impl Nat64Mapping {
10404 #[inline(always)]
10405 fn max_ordinal_present(&self) -> u64 {
10406 if let Some(_) = self.counters {
10407 return 5;
10408 }
10409 if let Some(_) = self.remaining_time_ms {
10410 return 4;
10411 }
10412 if let Some(_) = self.ip6_addr {
10413 return 3;
10414 }
10415 if let Some(_) = self.ip4_addr {
10416 return 2;
10417 }
10418 if let Some(_) = self.mapping_id {
10419 return 1;
10420 }
10421 0
10422 }
10423 }
10424
10425 impl fidl::encoding::ValueTypeMarker for Nat64Mapping {
10426 type Borrowed<'a> = &'a Self;
10427 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10428 value
10429 }
10430 }
10431
10432 unsafe impl fidl::encoding::TypeMarker for Nat64Mapping {
10433 type Owned = Self;
10434
10435 #[inline(always)]
10436 fn inline_align(_context: fidl::encoding::Context) -> usize {
10437 8
10438 }
10439
10440 #[inline(always)]
10441 fn inline_size(_context: fidl::encoding::Context) -> usize {
10442 16
10443 }
10444 }
10445
10446 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64Mapping, D>
10447 for &Nat64Mapping
10448 {
10449 unsafe fn encode(
10450 self,
10451 encoder: &mut fidl::encoding::Encoder<'_, D>,
10452 offset: usize,
10453 mut depth: fidl::encoding::Depth,
10454 ) -> fidl::Result<()> {
10455 encoder.debug_check_bounds::<Nat64Mapping>(offset);
10456 let max_ordinal: u64 = self.max_ordinal_present();
10458 encoder.write_num(max_ordinal, offset);
10459 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10460 if max_ordinal == 0 {
10462 return Ok(());
10463 }
10464 depth.increment()?;
10465 let envelope_size = 8;
10466 let bytes_len = max_ordinal as usize * envelope_size;
10467 #[allow(unused_variables)]
10468 let offset = encoder.out_of_line_offset(bytes_len);
10469 let mut _prev_end_offset: usize = 0;
10470 if 1 > max_ordinal {
10471 return Ok(());
10472 }
10473
10474 let cur_offset: usize = (1 - 1) * envelope_size;
10477
10478 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10480
10481 fidl::encoding::encode_in_envelope_optional::<u64, D>(
10486 self.mapping_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
10487 encoder,
10488 offset + cur_offset,
10489 depth,
10490 )?;
10491
10492 _prev_end_offset = cur_offset + envelope_size;
10493 if 2 > max_ordinal {
10494 return Ok(());
10495 }
10496
10497 let cur_offset: usize = (2 - 1) * envelope_size;
10500
10501 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10503
10504 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
10509 self.ip4_addr.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
10510 encoder, offset + cur_offset, depth
10511 )?;
10512
10513 _prev_end_offset = cur_offset + envelope_size;
10514 if 3 > max_ordinal {
10515 return Ok(());
10516 }
10517
10518 let cur_offset: usize = (3 - 1) * envelope_size;
10521
10522 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10524
10525 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
10530 self.ip6_addr.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
10531 encoder, offset + cur_offset, depth
10532 )?;
10533
10534 _prev_end_offset = cur_offset + envelope_size;
10535 if 4 > max_ordinal {
10536 return Ok(());
10537 }
10538
10539 let cur_offset: usize = (4 - 1) * envelope_size;
10542
10543 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10545
10546 fidl::encoding::encode_in_envelope_optional::<u32, D>(
10551 self.remaining_time_ms
10552 .as_ref()
10553 .map(<u32 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 5 > max_ordinal {
10561 return Ok(());
10562 }
10563
10564 let cur_offset: usize = (5 - 1) * envelope_size;
10567
10568 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10570
10571 fidl::encoding::encode_in_envelope_optional::<Nat64ProtocolCounters, D>(
10576 self.counters
10577 .as_ref()
10578 .map(<Nat64ProtocolCounters as fidl::encoding::ValueTypeMarker>::borrow),
10579 encoder,
10580 offset + cur_offset,
10581 depth,
10582 )?;
10583
10584 _prev_end_offset = cur_offset + envelope_size;
10585
10586 Ok(())
10587 }
10588 }
10589
10590 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64Mapping {
10591 #[inline(always)]
10592 fn new_empty() -> Self {
10593 Self::default()
10594 }
10595
10596 unsafe fn decode(
10597 &mut self,
10598 decoder: &mut fidl::encoding::Decoder<'_, D>,
10599 offset: usize,
10600 mut depth: fidl::encoding::Depth,
10601 ) -> fidl::Result<()> {
10602 decoder.debug_check_bounds::<Self>(offset);
10603 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10604 None => return Err(fidl::Error::NotNullable),
10605 Some(len) => len,
10606 };
10607 if len == 0 {
10609 return Ok(());
10610 };
10611 depth.increment()?;
10612 let envelope_size = 8;
10613 let bytes_len = len * envelope_size;
10614 let offset = decoder.out_of_line_offset(bytes_len)?;
10615 let mut _next_ordinal_to_read = 0;
10617 let mut next_offset = offset;
10618 let end_offset = offset + bytes_len;
10619 _next_ordinal_to_read += 1;
10620 if next_offset >= end_offset {
10621 return Ok(());
10622 }
10623
10624 while _next_ordinal_to_read < 1 {
10626 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10627 _next_ordinal_to_read += 1;
10628 next_offset += envelope_size;
10629 }
10630
10631 let next_out_of_line = decoder.next_out_of_line();
10632 let handles_before = decoder.remaining_handles();
10633 if let Some((inlined, num_bytes, num_handles)) =
10634 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10635 {
10636 let member_inline_size =
10637 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10638 if inlined != (member_inline_size <= 4) {
10639 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10640 }
10641 let inner_offset;
10642 let mut inner_depth = depth.clone();
10643 if inlined {
10644 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10645 inner_offset = next_offset;
10646 } else {
10647 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10648 inner_depth.increment()?;
10649 }
10650 let val_ref = self.mapping_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
10651 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
10652 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10653 {
10654 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10655 }
10656 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10657 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10658 }
10659 }
10660
10661 next_offset += envelope_size;
10662 _next_ordinal_to_read += 1;
10663 if next_offset >= end_offset {
10664 return Ok(());
10665 }
10666
10667 while _next_ordinal_to_read < 2 {
10669 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10670 _next_ordinal_to_read += 1;
10671 next_offset += envelope_size;
10672 }
10673
10674 let next_out_of_line = decoder.next_out_of_line();
10675 let handles_before = decoder.remaining_handles();
10676 if let Some((inlined, num_bytes, num_handles)) =
10677 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10678 {
10679 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10680 if inlined != (member_inline_size <= 4) {
10681 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10682 }
10683 let inner_offset;
10684 let mut inner_depth = depth.clone();
10685 if inlined {
10686 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10687 inner_offset = next_offset;
10688 } else {
10689 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10690 inner_depth.increment()?;
10691 }
10692 let val_ref = self.ip4_addr.get_or_insert_with(|| {
10693 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
10694 });
10695 fidl::decode!(
10696 fidl::encoding::UnboundedVector<u8>,
10697 D,
10698 val_ref,
10699 decoder,
10700 inner_offset,
10701 inner_depth
10702 )?;
10703 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10704 {
10705 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10706 }
10707 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10708 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10709 }
10710 }
10711
10712 next_offset += envelope_size;
10713 _next_ordinal_to_read += 1;
10714 if next_offset >= end_offset {
10715 return Ok(());
10716 }
10717
10718 while _next_ordinal_to_read < 3 {
10720 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10721 _next_ordinal_to_read += 1;
10722 next_offset += envelope_size;
10723 }
10724
10725 let next_out_of_line = decoder.next_out_of_line();
10726 let handles_before = decoder.remaining_handles();
10727 if let Some((inlined, num_bytes, num_handles)) =
10728 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10729 {
10730 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10731 if inlined != (member_inline_size <= 4) {
10732 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10733 }
10734 let inner_offset;
10735 let mut inner_depth = depth.clone();
10736 if inlined {
10737 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10738 inner_offset = next_offset;
10739 } else {
10740 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10741 inner_depth.increment()?;
10742 }
10743 let val_ref = self.ip6_addr.get_or_insert_with(|| {
10744 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
10745 });
10746 fidl::decode!(
10747 fidl::encoding::UnboundedVector<u8>,
10748 D,
10749 val_ref,
10750 decoder,
10751 inner_offset,
10752 inner_depth
10753 )?;
10754 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10755 {
10756 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10757 }
10758 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10759 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10760 }
10761 }
10762
10763 next_offset += envelope_size;
10764 _next_ordinal_to_read += 1;
10765 if next_offset >= end_offset {
10766 return Ok(());
10767 }
10768
10769 while _next_ordinal_to_read < 4 {
10771 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10772 _next_ordinal_to_read += 1;
10773 next_offset += envelope_size;
10774 }
10775
10776 let next_out_of_line = decoder.next_out_of_line();
10777 let handles_before = decoder.remaining_handles();
10778 if let Some((inlined, num_bytes, num_handles)) =
10779 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10780 {
10781 let member_inline_size =
10782 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10783 if inlined != (member_inline_size <= 4) {
10784 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10785 }
10786 let inner_offset;
10787 let mut inner_depth = depth.clone();
10788 if inlined {
10789 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10790 inner_offset = next_offset;
10791 } else {
10792 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10793 inner_depth.increment()?;
10794 }
10795 let val_ref =
10796 self.remaining_time_ms.get_or_insert_with(|| fidl::new_empty!(u32, D));
10797 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
10798 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10799 {
10800 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10801 }
10802 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10803 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10804 }
10805 }
10806
10807 next_offset += envelope_size;
10808 _next_ordinal_to_read += 1;
10809 if next_offset >= end_offset {
10810 return Ok(());
10811 }
10812
10813 while _next_ordinal_to_read < 5 {
10815 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10816 _next_ordinal_to_read += 1;
10817 next_offset += envelope_size;
10818 }
10819
10820 let next_out_of_line = decoder.next_out_of_line();
10821 let handles_before = decoder.remaining_handles();
10822 if let Some((inlined, num_bytes, num_handles)) =
10823 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10824 {
10825 let member_inline_size =
10826 <Nat64ProtocolCounters as fidl::encoding::TypeMarker>::inline_size(
10827 decoder.context,
10828 );
10829 if inlined != (member_inline_size <= 4) {
10830 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10831 }
10832 let inner_offset;
10833 let mut inner_depth = depth.clone();
10834 if inlined {
10835 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10836 inner_offset = next_offset;
10837 } else {
10838 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10839 inner_depth.increment()?;
10840 }
10841 let val_ref =
10842 self.counters.get_or_insert_with(|| fidl::new_empty!(Nat64ProtocolCounters, D));
10843 fidl::decode!(
10844 Nat64ProtocolCounters,
10845 D,
10846 val_ref,
10847 decoder,
10848 inner_offset,
10849 inner_depth
10850 )?;
10851 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10852 {
10853 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10854 }
10855 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10856 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10857 }
10858 }
10859
10860 next_offset += envelope_size;
10861
10862 while next_offset < end_offset {
10864 _next_ordinal_to_read += 1;
10865 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10866 next_offset += envelope_size;
10867 }
10868
10869 Ok(())
10870 }
10871 }
10872
10873 impl Nat64PacketCounters {
10874 #[inline(always)]
10875 fn max_ordinal_present(&self) -> u64 {
10876 if let Some(_) = self.ipv6_to_ipv4_packets {
10877 return 2;
10878 }
10879 if let Some(_) = self.ipv4_to_ipv6_packets {
10880 return 1;
10881 }
10882 0
10883 }
10884 }
10885
10886 impl fidl::encoding::ValueTypeMarker for Nat64PacketCounters {
10887 type Borrowed<'a> = &'a Self;
10888 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10889 value
10890 }
10891 }
10892
10893 unsafe impl fidl::encoding::TypeMarker for Nat64PacketCounters {
10894 type Owned = Self;
10895
10896 #[inline(always)]
10897 fn inline_align(_context: fidl::encoding::Context) -> usize {
10898 8
10899 }
10900
10901 #[inline(always)]
10902 fn inline_size(_context: fidl::encoding::Context) -> usize {
10903 16
10904 }
10905 }
10906
10907 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64PacketCounters, D>
10908 for &Nat64PacketCounters
10909 {
10910 unsafe fn encode(
10911 self,
10912 encoder: &mut fidl::encoding::Encoder<'_, D>,
10913 offset: usize,
10914 mut depth: fidl::encoding::Depth,
10915 ) -> fidl::Result<()> {
10916 encoder.debug_check_bounds::<Nat64PacketCounters>(offset);
10917 let max_ordinal: u64 = self.max_ordinal_present();
10919 encoder.write_num(max_ordinal, offset);
10920 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10921 if max_ordinal == 0 {
10923 return Ok(());
10924 }
10925 depth.increment()?;
10926 let envelope_size = 8;
10927 let bytes_len = max_ordinal as usize * envelope_size;
10928 #[allow(unused_variables)]
10929 let offset = encoder.out_of_line_offset(bytes_len);
10930 let mut _prev_end_offset: usize = 0;
10931 if 1 > max_ordinal {
10932 return Ok(());
10933 }
10934
10935 let cur_offset: usize = (1 - 1) * envelope_size;
10938
10939 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10941
10942 fidl::encoding::encode_in_envelope_optional::<u64, D>(
10947 self.ipv4_to_ipv6_packets
10948 .as_ref()
10949 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
10950 encoder,
10951 offset + cur_offset,
10952 depth,
10953 )?;
10954
10955 _prev_end_offset = cur_offset + envelope_size;
10956 if 2 > max_ordinal {
10957 return Ok(());
10958 }
10959
10960 let cur_offset: usize = (2 - 1) * envelope_size;
10963
10964 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10966
10967 fidl::encoding::encode_in_envelope_optional::<u64, D>(
10972 self.ipv6_to_ipv4_packets
10973 .as_ref()
10974 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
10975 encoder,
10976 offset + cur_offset,
10977 depth,
10978 )?;
10979
10980 _prev_end_offset = cur_offset + envelope_size;
10981
10982 Ok(())
10983 }
10984 }
10985
10986 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64PacketCounters {
10987 #[inline(always)]
10988 fn new_empty() -> Self {
10989 Self::default()
10990 }
10991
10992 unsafe fn decode(
10993 &mut self,
10994 decoder: &mut fidl::encoding::Decoder<'_, D>,
10995 offset: usize,
10996 mut depth: fidl::encoding::Depth,
10997 ) -> fidl::Result<()> {
10998 decoder.debug_check_bounds::<Self>(offset);
10999 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11000 None => return Err(fidl::Error::NotNullable),
11001 Some(len) => len,
11002 };
11003 if len == 0 {
11005 return Ok(());
11006 };
11007 depth.increment()?;
11008 let envelope_size = 8;
11009 let bytes_len = len * envelope_size;
11010 let offset = decoder.out_of_line_offset(bytes_len)?;
11011 let mut _next_ordinal_to_read = 0;
11013 let mut next_offset = offset;
11014 let end_offset = offset + bytes_len;
11015 _next_ordinal_to_read += 1;
11016 if next_offset >= end_offset {
11017 return Ok(());
11018 }
11019
11020 while _next_ordinal_to_read < 1 {
11022 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11023 _next_ordinal_to_read += 1;
11024 next_offset += envelope_size;
11025 }
11026
11027 let next_out_of_line = decoder.next_out_of_line();
11028 let handles_before = decoder.remaining_handles();
11029 if let Some((inlined, num_bytes, num_handles)) =
11030 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11031 {
11032 let member_inline_size =
11033 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11034 if inlined != (member_inline_size <= 4) {
11035 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11036 }
11037 let inner_offset;
11038 let mut inner_depth = depth.clone();
11039 if inlined {
11040 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11041 inner_offset = next_offset;
11042 } else {
11043 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11044 inner_depth.increment()?;
11045 }
11046 let val_ref =
11047 self.ipv4_to_ipv6_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
11048 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
11049 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11050 {
11051 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11052 }
11053 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11054 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11055 }
11056 }
11057
11058 next_offset += envelope_size;
11059 _next_ordinal_to_read += 1;
11060 if next_offset >= end_offset {
11061 return Ok(());
11062 }
11063
11064 while _next_ordinal_to_read < 2 {
11066 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11067 _next_ordinal_to_read += 1;
11068 next_offset += envelope_size;
11069 }
11070
11071 let next_out_of_line = decoder.next_out_of_line();
11072 let handles_before = decoder.remaining_handles();
11073 if let Some((inlined, num_bytes, num_handles)) =
11074 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11075 {
11076 let member_inline_size =
11077 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11078 if inlined != (member_inline_size <= 4) {
11079 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11080 }
11081 let inner_offset;
11082 let mut inner_depth = depth.clone();
11083 if inlined {
11084 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11085 inner_offset = next_offset;
11086 } else {
11087 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11088 inner_depth.increment()?;
11089 }
11090 let val_ref =
11091 self.ipv6_to_ipv4_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
11092 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
11093 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11094 {
11095 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11096 }
11097 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11098 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11099 }
11100 }
11101
11102 next_offset += envelope_size;
11103
11104 while next_offset < end_offset {
11106 _next_ordinal_to_read += 1;
11107 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11108 next_offset += envelope_size;
11109 }
11110
11111 Ok(())
11112 }
11113 }
11114
11115 impl Nat64ProtocolCounters {
11116 #[inline(always)]
11117 fn max_ordinal_present(&self) -> u64 {
11118 if let Some(_) = self.total {
11119 return 4;
11120 }
11121 if let Some(_) = self.icmp {
11122 return 3;
11123 }
11124 if let Some(_) = self.udp {
11125 return 2;
11126 }
11127 if let Some(_) = self.tcp {
11128 return 1;
11129 }
11130 0
11131 }
11132 }
11133
11134 impl fidl::encoding::ValueTypeMarker for Nat64ProtocolCounters {
11135 type Borrowed<'a> = &'a Self;
11136 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11137 value
11138 }
11139 }
11140
11141 unsafe impl fidl::encoding::TypeMarker for Nat64ProtocolCounters {
11142 type Owned = Self;
11143
11144 #[inline(always)]
11145 fn inline_align(_context: fidl::encoding::Context) -> usize {
11146 8
11147 }
11148
11149 #[inline(always)]
11150 fn inline_size(_context: fidl::encoding::Context) -> usize {
11151 16
11152 }
11153 }
11154
11155 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64ProtocolCounters, D>
11156 for &Nat64ProtocolCounters
11157 {
11158 unsafe fn encode(
11159 self,
11160 encoder: &mut fidl::encoding::Encoder<'_, D>,
11161 offset: usize,
11162 mut depth: fidl::encoding::Depth,
11163 ) -> fidl::Result<()> {
11164 encoder.debug_check_bounds::<Nat64ProtocolCounters>(offset);
11165 let max_ordinal: u64 = self.max_ordinal_present();
11167 encoder.write_num(max_ordinal, offset);
11168 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11169 if max_ordinal == 0 {
11171 return Ok(());
11172 }
11173 depth.increment()?;
11174 let envelope_size = 8;
11175 let bytes_len = max_ordinal as usize * envelope_size;
11176 #[allow(unused_variables)]
11177 let offset = encoder.out_of_line_offset(bytes_len);
11178 let mut _prev_end_offset: usize = 0;
11179 if 1 > max_ordinal {
11180 return Ok(());
11181 }
11182
11183 let cur_offset: usize = (1 - 1) * envelope_size;
11186
11187 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11189
11190 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
11195 self.tcp
11196 .as_ref()
11197 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
11198 encoder,
11199 offset + cur_offset,
11200 depth,
11201 )?;
11202
11203 _prev_end_offset = cur_offset + envelope_size;
11204 if 2 > max_ordinal {
11205 return Ok(());
11206 }
11207
11208 let cur_offset: usize = (2 - 1) * envelope_size;
11211
11212 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11214
11215 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
11220 self.udp
11221 .as_ref()
11222 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
11223 encoder,
11224 offset + cur_offset,
11225 depth,
11226 )?;
11227
11228 _prev_end_offset = cur_offset + envelope_size;
11229 if 3 > max_ordinal {
11230 return Ok(());
11231 }
11232
11233 let cur_offset: usize = (3 - 1) * envelope_size;
11236
11237 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11239
11240 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
11245 self.icmp
11246 .as_ref()
11247 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
11248 encoder,
11249 offset + cur_offset,
11250 depth,
11251 )?;
11252
11253 _prev_end_offset = cur_offset + envelope_size;
11254 if 4 > max_ordinal {
11255 return Ok(());
11256 }
11257
11258 let cur_offset: usize = (4 - 1) * envelope_size;
11261
11262 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11264
11265 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
11270 self.total
11271 .as_ref()
11272 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
11273 encoder,
11274 offset + cur_offset,
11275 depth,
11276 )?;
11277
11278 _prev_end_offset = cur_offset + envelope_size;
11279
11280 Ok(())
11281 }
11282 }
11283
11284 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64ProtocolCounters {
11285 #[inline(always)]
11286 fn new_empty() -> Self {
11287 Self::default()
11288 }
11289
11290 unsafe fn decode(
11291 &mut self,
11292 decoder: &mut fidl::encoding::Decoder<'_, D>,
11293 offset: usize,
11294 mut depth: fidl::encoding::Depth,
11295 ) -> fidl::Result<()> {
11296 decoder.debug_check_bounds::<Self>(offset);
11297 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11298 None => return Err(fidl::Error::NotNullable),
11299 Some(len) => len,
11300 };
11301 if len == 0 {
11303 return Ok(());
11304 };
11305 depth.increment()?;
11306 let envelope_size = 8;
11307 let bytes_len = len * envelope_size;
11308 let offset = decoder.out_of_line_offset(bytes_len)?;
11309 let mut _next_ordinal_to_read = 0;
11311 let mut next_offset = offset;
11312 let end_offset = offset + bytes_len;
11313 _next_ordinal_to_read += 1;
11314 if next_offset >= end_offset {
11315 return Ok(());
11316 }
11317
11318 while _next_ordinal_to_read < 1 {
11320 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11321 _next_ordinal_to_read += 1;
11322 next_offset += envelope_size;
11323 }
11324
11325 let next_out_of_line = decoder.next_out_of_line();
11326 let handles_before = decoder.remaining_handles();
11327 if let Some((inlined, num_bytes, num_handles)) =
11328 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11329 {
11330 let member_inline_size =
11331 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
11332 decoder.context,
11333 );
11334 if inlined != (member_inline_size <= 4) {
11335 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11336 }
11337 let inner_offset;
11338 let mut inner_depth = depth.clone();
11339 if inlined {
11340 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11341 inner_offset = next_offset;
11342 } else {
11343 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11344 inner_depth.increment()?;
11345 }
11346 let val_ref =
11347 self.tcp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
11348 fidl::decode!(
11349 Nat64TrafficCounters,
11350 D,
11351 val_ref,
11352 decoder,
11353 inner_offset,
11354 inner_depth
11355 )?;
11356 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11357 {
11358 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11359 }
11360 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11361 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11362 }
11363 }
11364
11365 next_offset += envelope_size;
11366 _next_ordinal_to_read += 1;
11367 if next_offset >= end_offset {
11368 return Ok(());
11369 }
11370
11371 while _next_ordinal_to_read < 2 {
11373 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11374 _next_ordinal_to_read += 1;
11375 next_offset += envelope_size;
11376 }
11377
11378 let next_out_of_line = decoder.next_out_of_line();
11379 let handles_before = decoder.remaining_handles();
11380 if let Some((inlined, num_bytes, num_handles)) =
11381 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11382 {
11383 let member_inline_size =
11384 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
11385 decoder.context,
11386 );
11387 if inlined != (member_inline_size <= 4) {
11388 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11389 }
11390 let inner_offset;
11391 let mut inner_depth = depth.clone();
11392 if inlined {
11393 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11394 inner_offset = next_offset;
11395 } else {
11396 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11397 inner_depth.increment()?;
11398 }
11399 let val_ref =
11400 self.udp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
11401 fidl::decode!(
11402 Nat64TrafficCounters,
11403 D,
11404 val_ref,
11405 decoder,
11406 inner_offset,
11407 inner_depth
11408 )?;
11409 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11410 {
11411 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11412 }
11413 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11414 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11415 }
11416 }
11417
11418 next_offset += envelope_size;
11419 _next_ordinal_to_read += 1;
11420 if next_offset >= end_offset {
11421 return Ok(());
11422 }
11423
11424 while _next_ordinal_to_read < 3 {
11426 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11427 _next_ordinal_to_read += 1;
11428 next_offset += envelope_size;
11429 }
11430
11431 let next_out_of_line = decoder.next_out_of_line();
11432 let handles_before = decoder.remaining_handles();
11433 if let Some((inlined, num_bytes, num_handles)) =
11434 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11435 {
11436 let member_inline_size =
11437 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
11438 decoder.context,
11439 );
11440 if inlined != (member_inline_size <= 4) {
11441 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11442 }
11443 let inner_offset;
11444 let mut inner_depth = depth.clone();
11445 if inlined {
11446 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11447 inner_offset = next_offset;
11448 } else {
11449 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11450 inner_depth.increment()?;
11451 }
11452 let val_ref =
11453 self.icmp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
11454 fidl::decode!(
11455 Nat64TrafficCounters,
11456 D,
11457 val_ref,
11458 decoder,
11459 inner_offset,
11460 inner_depth
11461 )?;
11462 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11463 {
11464 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11465 }
11466 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11467 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11468 }
11469 }
11470
11471 next_offset += envelope_size;
11472 _next_ordinal_to_read += 1;
11473 if next_offset >= end_offset {
11474 return Ok(());
11475 }
11476
11477 while _next_ordinal_to_read < 4 {
11479 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11480 _next_ordinal_to_read += 1;
11481 next_offset += envelope_size;
11482 }
11483
11484 let next_out_of_line = decoder.next_out_of_line();
11485 let handles_before = decoder.remaining_handles();
11486 if let Some((inlined, num_bytes, num_handles)) =
11487 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11488 {
11489 let member_inline_size =
11490 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
11491 decoder.context,
11492 );
11493 if inlined != (member_inline_size <= 4) {
11494 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11495 }
11496 let inner_offset;
11497 let mut inner_depth = depth.clone();
11498 if inlined {
11499 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11500 inner_offset = next_offset;
11501 } else {
11502 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11503 inner_depth.increment()?;
11504 }
11505 let val_ref =
11506 self.total.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
11507 fidl::decode!(
11508 Nat64TrafficCounters,
11509 D,
11510 val_ref,
11511 decoder,
11512 inner_offset,
11513 inner_depth
11514 )?;
11515 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11516 {
11517 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11518 }
11519 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11520 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11521 }
11522 }
11523
11524 next_offset += envelope_size;
11525
11526 while next_offset < end_offset {
11528 _next_ordinal_to_read += 1;
11529 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11530 next_offset += envelope_size;
11531 }
11532
11533 Ok(())
11534 }
11535 }
11536
11537 impl Nat64TrafficCounters {
11538 #[inline(always)]
11539 fn max_ordinal_present(&self) -> u64 {
11540 if let Some(_) = self.ipv6_to_ipv4_bytes {
11541 return 4;
11542 }
11543 if let Some(_) = self.ipv6_to_ipv4_packets {
11544 return 3;
11545 }
11546 if let Some(_) = self.ipv4_to_ipv6_bytes {
11547 return 2;
11548 }
11549 if let Some(_) = self.ipv4_to_ipv6_packets {
11550 return 1;
11551 }
11552 0
11553 }
11554 }
11555
11556 impl fidl::encoding::ValueTypeMarker for Nat64TrafficCounters {
11557 type Borrowed<'a> = &'a Self;
11558 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11559 value
11560 }
11561 }
11562
11563 unsafe impl fidl::encoding::TypeMarker for Nat64TrafficCounters {
11564 type Owned = Self;
11565
11566 #[inline(always)]
11567 fn inline_align(_context: fidl::encoding::Context) -> usize {
11568 8
11569 }
11570
11571 #[inline(always)]
11572 fn inline_size(_context: fidl::encoding::Context) -> usize {
11573 16
11574 }
11575 }
11576
11577 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64TrafficCounters, D>
11578 for &Nat64TrafficCounters
11579 {
11580 unsafe fn encode(
11581 self,
11582 encoder: &mut fidl::encoding::Encoder<'_, D>,
11583 offset: usize,
11584 mut depth: fidl::encoding::Depth,
11585 ) -> fidl::Result<()> {
11586 encoder.debug_check_bounds::<Nat64TrafficCounters>(offset);
11587 let max_ordinal: u64 = self.max_ordinal_present();
11589 encoder.write_num(max_ordinal, offset);
11590 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11591 if max_ordinal == 0 {
11593 return Ok(());
11594 }
11595 depth.increment()?;
11596 let envelope_size = 8;
11597 let bytes_len = max_ordinal as usize * envelope_size;
11598 #[allow(unused_variables)]
11599 let offset = encoder.out_of_line_offset(bytes_len);
11600 let mut _prev_end_offset: usize = 0;
11601 if 1 > max_ordinal {
11602 return Ok(());
11603 }
11604
11605 let cur_offset: usize = (1 - 1) * envelope_size;
11608
11609 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11611
11612 fidl::encoding::encode_in_envelope_optional::<u64, D>(
11617 self.ipv4_to_ipv6_packets
11618 .as_ref()
11619 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
11620 encoder,
11621 offset + cur_offset,
11622 depth,
11623 )?;
11624
11625 _prev_end_offset = cur_offset + envelope_size;
11626 if 2 > max_ordinal {
11627 return Ok(());
11628 }
11629
11630 let cur_offset: usize = (2 - 1) * envelope_size;
11633
11634 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11636
11637 fidl::encoding::encode_in_envelope_optional::<u64, D>(
11642 self.ipv4_to_ipv6_bytes
11643 .as_ref()
11644 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
11645 encoder,
11646 offset + cur_offset,
11647 depth,
11648 )?;
11649
11650 _prev_end_offset = cur_offset + envelope_size;
11651 if 3 > max_ordinal {
11652 return Ok(());
11653 }
11654
11655 let cur_offset: usize = (3 - 1) * envelope_size;
11658
11659 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11661
11662 fidl::encoding::encode_in_envelope_optional::<u64, D>(
11667 self.ipv6_to_ipv4_packets
11668 .as_ref()
11669 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
11670 encoder,
11671 offset + cur_offset,
11672 depth,
11673 )?;
11674
11675 _prev_end_offset = cur_offset + envelope_size;
11676 if 4 > max_ordinal {
11677 return Ok(());
11678 }
11679
11680 let cur_offset: usize = (4 - 1) * envelope_size;
11683
11684 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11686
11687 fidl::encoding::encode_in_envelope_optional::<u64, D>(
11692 self.ipv6_to_ipv4_bytes
11693 .as_ref()
11694 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
11695 encoder,
11696 offset + cur_offset,
11697 depth,
11698 )?;
11699
11700 _prev_end_offset = cur_offset + envelope_size;
11701
11702 Ok(())
11703 }
11704 }
11705
11706 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64TrafficCounters {
11707 #[inline(always)]
11708 fn new_empty() -> Self {
11709 Self::default()
11710 }
11711
11712 unsafe fn decode(
11713 &mut self,
11714 decoder: &mut fidl::encoding::Decoder<'_, D>,
11715 offset: usize,
11716 mut depth: fidl::encoding::Depth,
11717 ) -> fidl::Result<()> {
11718 decoder.debug_check_bounds::<Self>(offset);
11719 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11720 None => return Err(fidl::Error::NotNullable),
11721 Some(len) => len,
11722 };
11723 if len == 0 {
11725 return Ok(());
11726 };
11727 depth.increment()?;
11728 let envelope_size = 8;
11729 let bytes_len = len * envelope_size;
11730 let offset = decoder.out_of_line_offset(bytes_len)?;
11731 let mut _next_ordinal_to_read = 0;
11733 let mut next_offset = offset;
11734 let end_offset = offset + bytes_len;
11735 _next_ordinal_to_read += 1;
11736 if next_offset >= end_offset {
11737 return Ok(());
11738 }
11739
11740 while _next_ordinal_to_read < 1 {
11742 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11743 _next_ordinal_to_read += 1;
11744 next_offset += envelope_size;
11745 }
11746
11747 let next_out_of_line = decoder.next_out_of_line();
11748 let handles_before = decoder.remaining_handles();
11749 if let Some((inlined, num_bytes, num_handles)) =
11750 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11751 {
11752 let member_inline_size =
11753 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11754 if inlined != (member_inline_size <= 4) {
11755 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11756 }
11757 let inner_offset;
11758 let mut inner_depth = depth.clone();
11759 if inlined {
11760 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11761 inner_offset = next_offset;
11762 } else {
11763 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11764 inner_depth.increment()?;
11765 }
11766 let val_ref =
11767 self.ipv4_to_ipv6_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
11768 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
11769 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11770 {
11771 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11772 }
11773 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11774 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11775 }
11776 }
11777
11778 next_offset += envelope_size;
11779 _next_ordinal_to_read += 1;
11780 if next_offset >= end_offset {
11781 return Ok(());
11782 }
11783
11784 while _next_ordinal_to_read < 2 {
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 <u64 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 =
11811 self.ipv4_to_ipv6_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
11812 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
11813 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11814 {
11815 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11816 }
11817 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11818 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11819 }
11820 }
11821
11822 next_offset += envelope_size;
11823 _next_ordinal_to_read += 1;
11824 if next_offset >= end_offset {
11825 return Ok(());
11826 }
11827
11828 while _next_ordinal_to_read < 3 {
11830 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11831 _next_ordinal_to_read += 1;
11832 next_offset += envelope_size;
11833 }
11834
11835 let next_out_of_line = decoder.next_out_of_line();
11836 let handles_before = decoder.remaining_handles();
11837 if let Some((inlined, num_bytes, num_handles)) =
11838 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11839 {
11840 let member_inline_size =
11841 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11842 if inlined != (member_inline_size <= 4) {
11843 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11844 }
11845 let inner_offset;
11846 let mut inner_depth = depth.clone();
11847 if inlined {
11848 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11849 inner_offset = next_offset;
11850 } else {
11851 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11852 inner_depth.increment()?;
11853 }
11854 let val_ref =
11855 self.ipv6_to_ipv4_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
11856 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
11857 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11858 {
11859 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11860 }
11861 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11862 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11863 }
11864 }
11865
11866 next_offset += envelope_size;
11867 _next_ordinal_to_read += 1;
11868 if next_offset >= end_offset {
11869 return Ok(());
11870 }
11871
11872 while _next_ordinal_to_read < 4 {
11874 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11875 _next_ordinal_to_read += 1;
11876 next_offset += envelope_size;
11877 }
11878
11879 let next_out_of_line = decoder.next_out_of_line();
11880 let handles_before = decoder.remaining_handles();
11881 if let Some((inlined, num_bytes, num_handles)) =
11882 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11883 {
11884 let member_inline_size =
11885 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11886 if inlined != (member_inline_size <= 4) {
11887 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11888 }
11889 let inner_offset;
11890 let mut inner_depth = depth.clone();
11891 if inlined {
11892 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11893 inner_offset = next_offset;
11894 } else {
11895 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11896 inner_depth.increment()?;
11897 }
11898 let val_ref =
11899 self.ipv6_to_ipv4_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
11900 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
11901 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11902 {
11903 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11904 }
11905 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11906 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11907 }
11908 }
11909
11910 next_offset += envelope_size;
11911
11912 while next_offset < end_offset {
11914 _next_ordinal_to_read += 1;
11915 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11916 next_offset += envelope_size;
11917 }
11918
11919 Ok(())
11920 }
11921 }
11922
11923 impl NetworkScanParameters {
11924 #[inline(always)]
11925 fn max_ordinal_present(&self) -> u64 {
11926 if let Some(_) = self.tx_power_dbm {
11927 return 2;
11928 }
11929 if let Some(_) = self.channels {
11930 return 1;
11931 }
11932 0
11933 }
11934 }
11935
11936 impl fidl::encoding::ValueTypeMarker for NetworkScanParameters {
11937 type Borrowed<'a> = &'a Self;
11938 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11939 value
11940 }
11941 }
11942
11943 unsafe impl fidl::encoding::TypeMarker for NetworkScanParameters {
11944 type Owned = Self;
11945
11946 #[inline(always)]
11947 fn inline_align(_context: fidl::encoding::Context) -> usize {
11948 8
11949 }
11950
11951 #[inline(always)]
11952 fn inline_size(_context: fidl::encoding::Context) -> usize {
11953 16
11954 }
11955 }
11956
11957 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetworkScanParameters, D>
11958 for &NetworkScanParameters
11959 {
11960 unsafe fn encode(
11961 self,
11962 encoder: &mut fidl::encoding::Encoder<'_, D>,
11963 offset: usize,
11964 mut depth: fidl::encoding::Depth,
11965 ) -> fidl::Result<()> {
11966 encoder.debug_check_bounds::<NetworkScanParameters>(offset);
11967 let max_ordinal: u64 = self.max_ordinal_present();
11969 encoder.write_num(max_ordinal, offset);
11970 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11971 if max_ordinal == 0 {
11973 return Ok(());
11974 }
11975 depth.increment()?;
11976 let envelope_size = 8;
11977 let bytes_len = max_ordinal as usize * envelope_size;
11978 #[allow(unused_variables)]
11979 let offset = encoder.out_of_line_offset(bytes_len);
11980 let mut _prev_end_offset: usize = 0;
11981 if 1 > max_ordinal {
11982 return Ok(());
11983 }
11984
11985 let cur_offset: usize = (1 - 1) * envelope_size;
11988
11989 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11991
11992 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u16, 200>, D>(
11997 self.channels.as_ref().map(
11998 <fidl::encoding::Vector<u16, 200> as fidl::encoding::ValueTypeMarker>::borrow,
11999 ),
12000 encoder,
12001 offset + cur_offset,
12002 depth,
12003 )?;
12004
12005 _prev_end_offset = cur_offset + envelope_size;
12006 if 2 > max_ordinal {
12007 return Ok(());
12008 }
12009
12010 let cur_offset: usize = (2 - 1) * envelope_size;
12013
12014 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12016
12017 fidl::encoding::encode_in_envelope_optional::<i8, D>(
12022 self.tx_power_dbm.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
12023 encoder,
12024 offset + cur_offset,
12025 depth,
12026 )?;
12027
12028 _prev_end_offset = cur_offset + envelope_size;
12029
12030 Ok(())
12031 }
12032 }
12033
12034 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkScanParameters {
12035 #[inline(always)]
12036 fn new_empty() -> Self {
12037 Self::default()
12038 }
12039
12040 unsafe fn decode(
12041 &mut self,
12042 decoder: &mut fidl::encoding::Decoder<'_, D>,
12043 offset: usize,
12044 mut depth: fidl::encoding::Depth,
12045 ) -> fidl::Result<()> {
12046 decoder.debug_check_bounds::<Self>(offset);
12047 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12048 None => return Err(fidl::Error::NotNullable),
12049 Some(len) => len,
12050 };
12051 if len == 0 {
12053 return Ok(());
12054 };
12055 depth.increment()?;
12056 let envelope_size = 8;
12057 let bytes_len = len * envelope_size;
12058 let offset = decoder.out_of_line_offset(bytes_len)?;
12059 let mut _next_ordinal_to_read = 0;
12061 let mut next_offset = offset;
12062 let end_offset = offset + bytes_len;
12063 _next_ordinal_to_read += 1;
12064 if next_offset >= end_offset {
12065 return Ok(());
12066 }
12067
12068 while _next_ordinal_to_read < 1 {
12070 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12071 _next_ordinal_to_read += 1;
12072 next_offset += envelope_size;
12073 }
12074
12075 let next_out_of_line = decoder.next_out_of_line();
12076 let handles_before = decoder.remaining_handles();
12077 if let Some((inlined, num_bytes, num_handles)) =
12078 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12079 {
12080 let member_inline_size =
12081 <fidl::encoding::Vector<u16, 200> as fidl::encoding::TypeMarker>::inline_size(
12082 decoder.context,
12083 );
12084 if inlined != (member_inline_size <= 4) {
12085 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12086 }
12087 let inner_offset;
12088 let mut inner_depth = depth.clone();
12089 if inlined {
12090 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12091 inner_offset = next_offset;
12092 } else {
12093 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12094 inner_depth.increment()?;
12095 }
12096 let val_ref = self
12097 .channels
12098 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u16, 200>, D));
12099 fidl::decode!(fidl::encoding::Vector<u16, 200>, D, val_ref, decoder, inner_offset, inner_depth)?;
12100 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12101 {
12102 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12103 }
12104 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12105 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12106 }
12107 }
12108
12109 next_offset += envelope_size;
12110 _next_ordinal_to_read += 1;
12111 if next_offset >= end_offset {
12112 return Ok(());
12113 }
12114
12115 while _next_ordinal_to_read < 2 {
12117 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12118 _next_ordinal_to_read += 1;
12119 next_offset += envelope_size;
12120 }
12121
12122 let next_out_of_line = decoder.next_out_of_line();
12123 let handles_before = decoder.remaining_handles();
12124 if let Some((inlined, num_bytes, num_handles)) =
12125 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12126 {
12127 let member_inline_size =
12128 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12129 if inlined != (member_inline_size <= 4) {
12130 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12131 }
12132 let inner_offset;
12133 let mut inner_depth = depth.clone();
12134 if inlined {
12135 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12136 inner_offset = next_offset;
12137 } else {
12138 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12139 inner_depth.increment()?;
12140 }
12141 let val_ref = self.tx_power_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
12142 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
12143 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12144 {
12145 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12146 }
12147 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12148 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12149 }
12150 }
12151
12152 next_offset += envelope_size;
12153
12154 while next_offset < end_offset {
12156 _next_ordinal_to_read += 1;
12157 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12158 next_offset += envelope_size;
12159 }
12160
12161 Ok(())
12162 }
12163 }
12164
12165 impl OnMeshPrefix {
12166 #[inline(always)]
12167 fn max_ordinal_present(&self) -> u64 {
12168 if let Some(_) = self.slaac_valid {
12169 return 5;
12170 }
12171 if let Some(_) = self.slaac_preferred {
12172 return 4;
12173 }
12174 if let Some(_) = self.stable {
12175 return 3;
12176 }
12177 if let Some(_) = self.default_route_preference {
12178 return 2;
12179 }
12180 if let Some(_) = self.subnet {
12181 return 1;
12182 }
12183 0
12184 }
12185 }
12186
12187 impl fidl::encoding::ValueTypeMarker for OnMeshPrefix {
12188 type Borrowed<'a> = &'a Self;
12189 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12190 value
12191 }
12192 }
12193
12194 unsafe impl fidl::encoding::TypeMarker for OnMeshPrefix {
12195 type Owned = Self;
12196
12197 #[inline(always)]
12198 fn inline_align(_context: fidl::encoding::Context) -> usize {
12199 8
12200 }
12201
12202 #[inline(always)]
12203 fn inline_size(_context: fidl::encoding::Context) -> usize {
12204 16
12205 }
12206 }
12207
12208 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OnMeshPrefix, D>
12209 for &OnMeshPrefix
12210 {
12211 unsafe fn encode(
12212 self,
12213 encoder: &mut fidl::encoding::Encoder<'_, D>,
12214 offset: usize,
12215 mut depth: fidl::encoding::Depth,
12216 ) -> fidl::Result<()> {
12217 encoder.debug_check_bounds::<OnMeshPrefix>(offset);
12218 let max_ordinal: u64 = self.max_ordinal_present();
12220 encoder.write_num(max_ordinal, offset);
12221 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12222 if max_ordinal == 0 {
12224 return Ok(());
12225 }
12226 depth.increment()?;
12227 let envelope_size = 8;
12228 let bytes_len = max_ordinal as usize * envelope_size;
12229 #[allow(unused_variables)]
12230 let offset = encoder.out_of_line_offset(bytes_len);
12231 let mut _prev_end_offset: usize = 0;
12232 if 1 > max_ordinal {
12233 return Ok(());
12234 }
12235
12236 let cur_offset: usize = (1 - 1) * envelope_size;
12239
12240 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12242
12243 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>(
12248 self.subnet.as_ref().map(<fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow),
12249 encoder, offset + cur_offset, depth
12250 )?;
12251
12252 _prev_end_offset = cur_offset + envelope_size;
12253 if 2 > max_ordinal {
12254 return Ok(());
12255 }
12256
12257 let cur_offset: usize = (2 - 1) * envelope_size;
12260
12261 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12263
12264 fidl::encoding::encode_in_envelope_optional::<RoutePreference, D>(
12269 self.default_route_preference
12270 .as_ref()
12271 .map(<RoutePreference as fidl::encoding::ValueTypeMarker>::borrow),
12272 encoder,
12273 offset + cur_offset,
12274 depth,
12275 )?;
12276
12277 _prev_end_offset = cur_offset + envelope_size;
12278 if 3 > max_ordinal {
12279 return Ok(());
12280 }
12281
12282 let cur_offset: usize = (3 - 1) * envelope_size;
12285
12286 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12288
12289 fidl::encoding::encode_in_envelope_optional::<bool, D>(
12294 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12295 encoder,
12296 offset + cur_offset,
12297 depth,
12298 )?;
12299
12300 _prev_end_offset = cur_offset + envelope_size;
12301 if 4 > max_ordinal {
12302 return Ok(());
12303 }
12304
12305 let cur_offset: usize = (4 - 1) * envelope_size;
12308
12309 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12311
12312 fidl::encoding::encode_in_envelope_optional::<bool, D>(
12317 self.slaac_preferred
12318 .as_ref()
12319 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12320 encoder,
12321 offset + cur_offset,
12322 depth,
12323 )?;
12324
12325 _prev_end_offset = cur_offset + envelope_size;
12326 if 5 > max_ordinal {
12327 return Ok(());
12328 }
12329
12330 let cur_offset: usize = (5 - 1) * envelope_size;
12333
12334 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12336
12337 fidl::encoding::encode_in_envelope_optional::<bool, D>(
12342 self.slaac_valid.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12343 encoder,
12344 offset + cur_offset,
12345 depth,
12346 )?;
12347
12348 _prev_end_offset = cur_offset + envelope_size;
12349
12350 Ok(())
12351 }
12352 }
12353
12354 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OnMeshPrefix {
12355 #[inline(always)]
12356 fn new_empty() -> Self {
12357 Self::default()
12358 }
12359
12360 unsafe fn decode(
12361 &mut self,
12362 decoder: &mut fidl::encoding::Decoder<'_, D>,
12363 offset: usize,
12364 mut depth: fidl::encoding::Depth,
12365 ) -> fidl::Result<()> {
12366 decoder.debug_check_bounds::<Self>(offset);
12367 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12368 None => return Err(fidl::Error::NotNullable),
12369 Some(len) => len,
12370 };
12371 if len == 0 {
12373 return Ok(());
12374 };
12375 depth.increment()?;
12376 let envelope_size = 8;
12377 let bytes_len = len * envelope_size;
12378 let offset = decoder.out_of_line_offset(bytes_len)?;
12379 let mut _next_ordinal_to_read = 0;
12381 let mut next_offset = offset;
12382 let end_offset = offset + bytes_len;
12383 _next_ordinal_to_read += 1;
12384 if next_offset >= end_offset {
12385 return Ok(());
12386 }
12387
12388 while _next_ordinal_to_read < 1 {
12390 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12391 _next_ordinal_to_read += 1;
12392 next_offset += envelope_size;
12393 }
12394
12395 let next_out_of_line = decoder.next_out_of_line();
12396 let handles_before = decoder.remaining_handles();
12397 if let Some((inlined, num_bytes, num_handles)) =
12398 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12399 {
12400 let member_inline_size = <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12401 if inlined != (member_inline_size <= 4) {
12402 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12403 }
12404 let inner_offset;
12405 let mut inner_depth = depth.clone();
12406 if inlined {
12407 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12408 inner_offset = next_offset;
12409 } else {
12410 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12411 inner_depth.increment()?;
12412 }
12413 let val_ref = self.subnet.get_or_insert_with(|| {
12414 fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D)
12415 });
12416 fidl::decode!(
12417 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
12418 D,
12419 val_ref,
12420 decoder,
12421 inner_offset,
12422 inner_depth
12423 )?;
12424 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12425 {
12426 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12427 }
12428 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12429 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12430 }
12431 }
12432
12433 next_offset += envelope_size;
12434 _next_ordinal_to_read += 1;
12435 if next_offset >= end_offset {
12436 return Ok(());
12437 }
12438
12439 while _next_ordinal_to_read < 2 {
12441 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12442 _next_ordinal_to_read += 1;
12443 next_offset += envelope_size;
12444 }
12445
12446 let next_out_of_line = decoder.next_out_of_line();
12447 let handles_before = decoder.remaining_handles();
12448 if let Some((inlined, num_bytes, num_handles)) =
12449 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12450 {
12451 let member_inline_size =
12452 <RoutePreference as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12453 if inlined != (member_inline_size <= 4) {
12454 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12455 }
12456 let inner_offset;
12457 let mut inner_depth = depth.clone();
12458 if inlined {
12459 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12460 inner_offset = next_offset;
12461 } else {
12462 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12463 inner_depth.increment()?;
12464 }
12465 let val_ref = self
12466 .default_route_preference
12467 .get_or_insert_with(|| fidl::new_empty!(RoutePreference, D));
12468 fidl::decode!(RoutePreference, 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 < 3 {
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.stable.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 < 4 {
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.slaac_preferred.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 < 5 {
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 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12584 if inlined != (member_inline_size <= 4) {
12585 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12586 }
12587 let inner_offset;
12588 let mut inner_depth = depth.clone();
12589 if inlined {
12590 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12591 inner_offset = next_offset;
12592 } else {
12593 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12594 inner_depth.increment()?;
12595 }
12596 let val_ref = self.slaac_valid.get_or_insert_with(|| fidl::new_empty!(bool, D));
12597 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
12598 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12599 {
12600 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12601 }
12602 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12603 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12604 }
12605 }
12606
12607 next_offset += envelope_size;
12608
12609 while next_offset < end_offset {
12611 _next_ordinal_to_read += 1;
12612 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12613 next_offset += envelope_size;
12614 }
12615
12616 Ok(())
12617 }
12618 }
12619
12620 impl OperationalDataset {
12621 #[inline(always)]
12622 fn max_ordinal_present(&self) -> u64 {
12623 if let Some(_) = self.channel_mask {
12624 return 13;
12625 }
12626 if let Some(_) = self.security_policy {
12627 return 12;
12628 }
12629 if let Some(_) = self.pskc {
12630 return 11;
12631 }
12632 if let Some(_) = self.wakeup_channel {
12633 return 10;
12634 }
12635 if let Some(_) = self.channel {
12636 return 9;
12637 }
12638 if let Some(_) = self.pan_id {
12639 return 8;
12640 }
12641 if let Some(_) = self.delay {
12642 return 7;
12643 }
12644 if let Some(_) = self.mesh_local_prefix {
12645 return 6;
12646 }
12647 if let Some(_) = self.extended_pan_id {
12648 return 5;
12649 }
12650 if let Some(_) = self.network_name {
12651 return 4;
12652 }
12653 if let Some(_) = self.network_key {
12654 return 3;
12655 }
12656 if let Some(_) = self.pending_timestamp {
12657 return 2;
12658 }
12659 if let Some(_) = self.active_timestamp {
12660 return 1;
12661 }
12662 0
12663 }
12664 }
12665
12666 impl fidl::encoding::ValueTypeMarker for OperationalDataset {
12667 type Borrowed<'a> = &'a Self;
12668 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12669 value
12670 }
12671 }
12672
12673 unsafe impl fidl::encoding::TypeMarker for OperationalDataset {
12674 type Owned = Self;
12675
12676 #[inline(always)]
12677 fn inline_align(_context: fidl::encoding::Context) -> usize {
12678 8
12679 }
12680
12681 #[inline(always)]
12682 fn inline_size(_context: fidl::encoding::Context) -> usize {
12683 16
12684 }
12685 }
12686
12687 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OperationalDataset, D>
12688 for &OperationalDataset
12689 {
12690 unsafe fn encode(
12691 self,
12692 encoder: &mut fidl::encoding::Encoder<'_, D>,
12693 offset: usize,
12694 mut depth: fidl::encoding::Depth,
12695 ) -> fidl::Result<()> {
12696 encoder.debug_check_bounds::<OperationalDataset>(offset);
12697 let max_ordinal: u64 = self.max_ordinal_present();
12699 encoder.write_num(max_ordinal, offset);
12700 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12701 if max_ordinal == 0 {
12703 return Ok(());
12704 }
12705 depth.increment()?;
12706 let envelope_size = 8;
12707 let bytes_len = max_ordinal as usize * envelope_size;
12708 #[allow(unused_variables)]
12709 let offset = encoder.out_of_line_offset(bytes_len);
12710 let mut _prev_end_offset: usize = 0;
12711 if 1 > max_ordinal {
12712 return Ok(());
12713 }
12714
12715 let cur_offset: usize = (1 - 1) * envelope_size;
12718
12719 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12721
12722 fidl::encoding::encode_in_envelope_optional::<i64, D>(
12727 self.active_timestamp
12728 .as_ref()
12729 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12730 encoder,
12731 offset + cur_offset,
12732 depth,
12733 )?;
12734
12735 _prev_end_offset = cur_offset + envelope_size;
12736 if 2 > max_ordinal {
12737 return Ok(());
12738 }
12739
12740 let cur_offset: usize = (2 - 1) * envelope_size;
12743
12744 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12746
12747 fidl::encoding::encode_in_envelope_optional::<i64, D>(
12752 self.pending_timestamp
12753 .as_ref()
12754 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12755 encoder,
12756 offset + cur_offset,
12757 depth,
12758 )?;
12759
12760 _prev_end_offset = cur_offset + envelope_size;
12761 if 3 > max_ordinal {
12762 return Ok(());
12763 }
12764
12765 let cur_offset: usize = (3 - 1) * envelope_size;
12768
12769 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12771
12772 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 16>, D>(
12777 self.network_key.as_ref().map(
12778 <fidl::encoding::Vector<u8, 16> as fidl::encoding::ValueTypeMarker>::borrow,
12779 ),
12780 encoder,
12781 offset + cur_offset,
12782 depth,
12783 )?;
12784
12785 _prev_end_offset = cur_offset + envelope_size;
12786 if 4 > max_ordinal {
12787 return Ok(());
12788 }
12789
12790 let cur_offset: usize = (4 - 1) * envelope_size;
12793
12794 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12796
12797 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 17>, D>(
12802 self.network_name.as_ref().map(
12803 <fidl::encoding::Vector<u8, 17> as fidl::encoding::ValueTypeMarker>::borrow,
12804 ),
12805 encoder,
12806 offset + cur_offset,
12807 depth,
12808 )?;
12809
12810 _prev_end_offset = cur_offset + envelope_size;
12811 if 5 > max_ordinal {
12812 return Ok(());
12813 }
12814
12815 let cur_offset: usize = (5 - 1) * envelope_size;
12818
12819 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12821
12822 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
12827 self.extended_pan_id.as_ref().map(
12828 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
12829 ),
12830 encoder,
12831 offset + cur_offset,
12832 depth,
12833 )?;
12834
12835 _prev_end_offset = cur_offset + envelope_size;
12836 if 6 > max_ordinal {
12837 return Ok(());
12838 }
12839
12840 let cur_offset: usize = (6 - 1) * envelope_size;
12843
12844 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12846
12847 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
12852 self.mesh_local_prefix.as_ref().map(
12853 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
12854 ),
12855 encoder,
12856 offset + cur_offset,
12857 depth,
12858 )?;
12859
12860 _prev_end_offset = cur_offset + envelope_size;
12861 if 7 > max_ordinal {
12862 return Ok(());
12863 }
12864
12865 let cur_offset: usize = (7 - 1) * envelope_size;
12868
12869 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12871
12872 fidl::encoding::encode_in_envelope_optional::<u32, D>(
12877 self.delay.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12878 encoder,
12879 offset + cur_offset,
12880 depth,
12881 )?;
12882
12883 _prev_end_offset = cur_offset + envelope_size;
12884 if 8 > max_ordinal {
12885 return Ok(());
12886 }
12887
12888 let cur_offset: usize = (8 - 1) * envelope_size;
12891
12892 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12894
12895 fidl::encoding::encode_in_envelope_optional::<u16, D>(
12900 self.pan_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
12901 encoder,
12902 offset + cur_offset,
12903 depth,
12904 )?;
12905
12906 _prev_end_offset = cur_offset + envelope_size;
12907 if 9 > max_ordinal {
12908 return Ok(());
12909 }
12910
12911 let cur_offset: usize = (9 - 1) * envelope_size;
12914
12915 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12917
12918 fidl::encoding::encode_in_envelope_optional::<u16, D>(
12923 self.channel.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
12924 encoder,
12925 offset + cur_offset,
12926 depth,
12927 )?;
12928
12929 _prev_end_offset = cur_offset + envelope_size;
12930 if 10 > max_ordinal {
12931 return Ok(());
12932 }
12933
12934 let cur_offset: usize = (10 - 1) * envelope_size;
12937
12938 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12940
12941 fidl::encoding::encode_in_envelope_optional::<u16, D>(
12946 self.wakeup_channel.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
12947 encoder,
12948 offset + cur_offset,
12949 depth,
12950 )?;
12951
12952 _prev_end_offset = cur_offset + envelope_size;
12953 if 11 > max_ordinal {
12954 return Ok(());
12955 }
12956
12957 let cur_offset: usize = (11 - 1) * envelope_size;
12960
12961 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12963
12964 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 16>, D>(
12969 self.pskc.as_ref().map(
12970 <fidl::encoding::Vector<u8, 16> as fidl::encoding::ValueTypeMarker>::borrow,
12971 ),
12972 encoder,
12973 offset + cur_offset,
12974 depth,
12975 )?;
12976
12977 _prev_end_offset = cur_offset + envelope_size;
12978 if 12 > max_ordinal {
12979 return Ok(());
12980 }
12981
12982 let cur_offset: usize = (12 - 1) * envelope_size;
12985
12986 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12988
12989 fidl::encoding::encode_in_envelope_optional::<SecurityPolicy, D>(
12994 self.security_policy
12995 .as_ref()
12996 .map(<SecurityPolicy as fidl::encoding::ValueTypeMarker>::borrow),
12997 encoder,
12998 offset + cur_offset,
12999 depth,
13000 )?;
13001
13002 _prev_end_offset = cur_offset + envelope_size;
13003 if 13 > max_ordinal {
13004 return Ok(());
13005 }
13006
13007 let cur_offset: usize = (13 - 1) * envelope_size;
13010
13011 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13013
13014 fidl::encoding::encode_in_envelope_optional::<u32, D>(
13019 self.channel_mask.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13020 encoder,
13021 offset + cur_offset,
13022 depth,
13023 )?;
13024
13025 _prev_end_offset = cur_offset + envelope_size;
13026
13027 Ok(())
13028 }
13029 }
13030
13031 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OperationalDataset {
13032 #[inline(always)]
13033 fn new_empty() -> Self {
13034 Self::default()
13035 }
13036
13037 unsafe fn decode(
13038 &mut self,
13039 decoder: &mut fidl::encoding::Decoder<'_, D>,
13040 offset: usize,
13041 mut depth: fidl::encoding::Depth,
13042 ) -> fidl::Result<()> {
13043 decoder.debug_check_bounds::<Self>(offset);
13044 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13045 None => return Err(fidl::Error::NotNullable),
13046 Some(len) => len,
13047 };
13048 if len == 0 {
13050 return Ok(());
13051 };
13052 depth.increment()?;
13053 let envelope_size = 8;
13054 let bytes_len = len * envelope_size;
13055 let offset = decoder.out_of_line_offset(bytes_len)?;
13056 let mut _next_ordinal_to_read = 0;
13058 let mut next_offset = offset;
13059 let end_offset = offset + bytes_len;
13060 _next_ordinal_to_read += 1;
13061 if next_offset >= end_offset {
13062 return Ok(());
13063 }
13064
13065 while _next_ordinal_to_read < 1 {
13067 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13068 _next_ordinal_to_read += 1;
13069 next_offset += envelope_size;
13070 }
13071
13072 let next_out_of_line = decoder.next_out_of_line();
13073 let handles_before = decoder.remaining_handles();
13074 if let Some((inlined, num_bytes, num_handles)) =
13075 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13076 {
13077 let member_inline_size =
13078 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13079 if inlined != (member_inline_size <= 4) {
13080 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13081 }
13082 let inner_offset;
13083 let mut inner_depth = depth.clone();
13084 if inlined {
13085 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13086 inner_offset = next_offset;
13087 } else {
13088 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13089 inner_depth.increment()?;
13090 }
13091 let val_ref = self.active_timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
13092 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
13093 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13094 {
13095 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13096 }
13097 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13098 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13099 }
13100 }
13101
13102 next_offset += envelope_size;
13103 _next_ordinal_to_read += 1;
13104 if next_offset >= end_offset {
13105 return Ok(());
13106 }
13107
13108 while _next_ordinal_to_read < 2 {
13110 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13111 _next_ordinal_to_read += 1;
13112 next_offset += envelope_size;
13113 }
13114
13115 let next_out_of_line = decoder.next_out_of_line();
13116 let handles_before = decoder.remaining_handles();
13117 if let Some((inlined, num_bytes, num_handles)) =
13118 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13119 {
13120 let member_inline_size =
13121 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13122 if inlined != (member_inline_size <= 4) {
13123 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13124 }
13125 let inner_offset;
13126 let mut inner_depth = depth.clone();
13127 if inlined {
13128 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13129 inner_offset = next_offset;
13130 } else {
13131 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13132 inner_depth.increment()?;
13133 }
13134 let val_ref =
13135 self.pending_timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
13136 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
13137 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13138 {
13139 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13140 }
13141 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13142 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13143 }
13144 }
13145
13146 next_offset += envelope_size;
13147 _next_ordinal_to_read += 1;
13148 if next_offset >= end_offset {
13149 return Ok(());
13150 }
13151
13152 while _next_ordinal_to_read < 3 {
13154 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13155 _next_ordinal_to_read += 1;
13156 next_offset += envelope_size;
13157 }
13158
13159 let next_out_of_line = decoder.next_out_of_line();
13160 let handles_before = decoder.remaining_handles();
13161 if let Some((inlined, num_bytes, num_handles)) =
13162 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13163 {
13164 let member_inline_size =
13165 <fidl::encoding::Vector<u8, 16> as fidl::encoding::TypeMarker>::inline_size(
13166 decoder.context,
13167 );
13168 if inlined != (member_inline_size <= 4) {
13169 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13170 }
13171 let inner_offset;
13172 let mut inner_depth = depth.clone();
13173 if inlined {
13174 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13175 inner_offset = next_offset;
13176 } else {
13177 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13178 inner_depth.increment()?;
13179 }
13180 let val_ref = self
13181 .network_key
13182 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 16>, D));
13183 fidl::decode!(fidl::encoding::Vector<u8, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
13184 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13185 {
13186 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13187 }
13188 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13189 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13190 }
13191 }
13192
13193 next_offset += envelope_size;
13194 _next_ordinal_to_read += 1;
13195 if next_offset >= end_offset {
13196 return Ok(());
13197 }
13198
13199 while _next_ordinal_to_read < 4 {
13201 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13202 _next_ordinal_to_read += 1;
13203 next_offset += envelope_size;
13204 }
13205
13206 let next_out_of_line = decoder.next_out_of_line();
13207 let handles_before = decoder.remaining_handles();
13208 if let Some((inlined, num_bytes, num_handles)) =
13209 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13210 {
13211 let member_inline_size =
13212 <fidl::encoding::Vector<u8, 17> as fidl::encoding::TypeMarker>::inline_size(
13213 decoder.context,
13214 );
13215 if inlined != (member_inline_size <= 4) {
13216 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13217 }
13218 let inner_offset;
13219 let mut inner_depth = depth.clone();
13220 if inlined {
13221 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13222 inner_offset = next_offset;
13223 } else {
13224 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13225 inner_depth.increment()?;
13226 }
13227 let val_ref = self
13228 .network_name
13229 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 17>, D));
13230 fidl::decode!(fidl::encoding::Vector<u8, 17>, D, val_ref, decoder, inner_offset, inner_depth)?;
13231 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13232 {
13233 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13234 }
13235 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13236 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13237 }
13238 }
13239
13240 next_offset += envelope_size;
13241 _next_ordinal_to_read += 1;
13242 if next_offset >= end_offset {
13243 return Ok(());
13244 }
13245
13246 while _next_ordinal_to_read < 5 {
13248 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13249 _next_ordinal_to_read += 1;
13250 next_offset += envelope_size;
13251 }
13252
13253 let next_out_of_line = decoder.next_out_of_line();
13254 let handles_before = decoder.remaining_handles();
13255 if let Some((inlined, num_bytes, num_handles)) =
13256 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13257 {
13258 let member_inline_size =
13259 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
13260 decoder.context,
13261 );
13262 if inlined != (member_inline_size <= 4) {
13263 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13264 }
13265 let inner_offset;
13266 let mut inner_depth = depth.clone();
13267 if inlined {
13268 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13269 inner_offset = next_offset;
13270 } else {
13271 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13272 inner_depth.increment()?;
13273 }
13274 let val_ref = self
13275 .extended_pan_id
13276 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
13277 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
13278 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13279 {
13280 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13281 }
13282 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13283 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13284 }
13285 }
13286
13287 next_offset += envelope_size;
13288 _next_ordinal_to_read += 1;
13289 if next_offset >= end_offset {
13290 return Ok(());
13291 }
13292
13293 while _next_ordinal_to_read < 6 {
13295 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13296 _next_ordinal_to_read += 1;
13297 next_offset += envelope_size;
13298 }
13299
13300 let next_out_of_line = decoder.next_out_of_line();
13301 let handles_before = decoder.remaining_handles();
13302 if let Some((inlined, num_bytes, num_handles)) =
13303 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13304 {
13305 let member_inline_size =
13306 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
13307 decoder.context,
13308 );
13309 if inlined != (member_inline_size <= 4) {
13310 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13311 }
13312 let inner_offset;
13313 let mut inner_depth = depth.clone();
13314 if inlined {
13315 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13316 inner_offset = next_offset;
13317 } else {
13318 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13319 inner_depth.increment()?;
13320 }
13321 let val_ref = self
13322 .mesh_local_prefix
13323 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
13324 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
13325 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13326 {
13327 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13328 }
13329 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13330 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13331 }
13332 }
13333
13334 next_offset += envelope_size;
13335 _next_ordinal_to_read += 1;
13336 if next_offset >= end_offset {
13337 return Ok(());
13338 }
13339
13340 while _next_ordinal_to_read < 7 {
13342 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13343 _next_ordinal_to_read += 1;
13344 next_offset += envelope_size;
13345 }
13346
13347 let next_out_of_line = decoder.next_out_of_line();
13348 let handles_before = decoder.remaining_handles();
13349 if let Some((inlined, num_bytes, num_handles)) =
13350 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13351 {
13352 let member_inline_size =
13353 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13354 if inlined != (member_inline_size <= 4) {
13355 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13356 }
13357 let inner_offset;
13358 let mut inner_depth = depth.clone();
13359 if inlined {
13360 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13361 inner_offset = next_offset;
13362 } else {
13363 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13364 inner_depth.increment()?;
13365 }
13366 let val_ref = self.delay.get_or_insert_with(|| fidl::new_empty!(u32, D));
13367 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13368 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13369 {
13370 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13371 }
13372 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13373 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13374 }
13375 }
13376
13377 next_offset += envelope_size;
13378 _next_ordinal_to_read += 1;
13379 if next_offset >= end_offset {
13380 return Ok(());
13381 }
13382
13383 while _next_ordinal_to_read < 8 {
13385 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13386 _next_ordinal_to_read += 1;
13387 next_offset += envelope_size;
13388 }
13389
13390 let next_out_of_line = decoder.next_out_of_line();
13391 let handles_before = decoder.remaining_handles();
13392 if let Some((inlined, num_bytes, num_handles)) =
13393 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13394 {
13395 let member_inline_size =
13396 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13397 if inlined != (member_inline_size <= 4) {
13398 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13399 }
13400 let inner_offset;
13401 let mut inner_depth = depth.clone();
13402 if inlined {
13403 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13404 inner_offset = next_offset;
13405 } else {
13406 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13407 inner_depth.increment()?;
13408 }
13409 let val_ref = self.pan_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
13410 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
13411 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13412 {
13413 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13414 }
13415 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13416 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13417 }
13418 }
13419
13420 next_offset += envelope_size;
13421 _next_ordinal_to_read += 1;
13422 if next_offset >= end_offset {
13423 return Ok(());
13424 }
13425
13426 while _next_ordinal_to_read < 9 {
13428 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13429 _next_ordinal_to_read += 1;
13430 next_offset += envelope_size;
13431 }
13432
13433 let next_out_of_line = decoder.next_out_of_line();
13434 let handles_before = decoder.remaining_handles();
13435 if let Some((inlined, num_bytes, num_handles)) =
13436 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13437 {
13438 let member_inline_size =
13439 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13440 if inlined != (member_inline_size <= 4) {
13441 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13442 }
13443 let inner_offset;
13444 let mut inner_depth = depth.clone();
13445 if inlined {
13446 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13447 inner_offset = next_offset;
13448 } else {
13449 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13450 inner_depth.increment()?;
13451 }
13452 let val_ref = self.channel.get_or_insert_with(|| fidl::new_empty!(u16, D));
13453 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
13454 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13455 {
13456 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13457 }
13458 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13459 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13460 }
13461 }
13462
13463 next_offset += envelope_size;
13464 _next_ordinal_to_read += 1;
13465 if next_offset >= end_offset {
13466 return Ok(());
13467 }
13468
13469 while _next_ordinal_to_read < 10 {
13471 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13472 _next_ordinal_to_read += 1;
13473 next_offset += envelope_size;
13474 }
13475
13476 let next_out_of_line = decoder.next_out_of_line();
13477 let handles_before = decoder.remaining_handles();
13478 if let Some((inlined, num_bytes, num_handles)) =
13479 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13480 {
13481 let member_inline_size =
13482 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13483 if inlined != (member_inline_size <= 4) {
13484 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13485 }
13486 let inner_offset;
13487 let mut inner_depth = depth.clone();
13488 if inlined {
13489 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13490 inner_offset = next_offset;
13491 } else {
13492 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13493 inner_depth.increment()?;
13494 }
13495 let val_ref = self.wakeup_channel.get_or_insert_with(|| fidl::new_empty!(u16, D));
13496 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
13497 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13498 {
13499 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13500 }
13501 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13502 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13503 }
13504 }
13505
13506 next_offset += envelope_size;
13507 _next_ordinal_to_read += 1;
13508 if next_offset >= end_offset {
13509 return Ok(());
13510 }
13511
13512 while _next_ordinal_to_read < 11 {
13514 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13515 _next_ordinal_to_read += 1;
13516 next_offset += envelope_size;
13517 }
13518
13519 let next_out_of_line = decoder.next_out_of_line();
13520 let handles_before = decoder.remaining_handles();
13521 if let Some((inlined, num_bytes, num_handles)) =
13522 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13523 {
13524 let member_inline_size =
13525 <fidl::encoding::Vector<u8, 16> as fidl::encoding::TypeMarker>::inline_size(
13526 decoder.context,
13527 );
13528 if inlined != (member_inline_size <= 4) {
13529 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13530 }
13531 let inner_offset;
13532 let mut inner_depth = depth.clone();
13533 if inlined {
13534 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13535 inner_offset = next_offset;
13536 } else {
13537 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13538 inner_depth.increment()?;
13539 }
13540 let val_ref = self
13541 .pskc
13542 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 16>, D));
13543 fidl::decode!(fidl::encoding::Vector<u8, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
13544 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13545 {
13546 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13547 }
13548 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13549 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13550 }
13551 }
13552
13553 next_offset += envelope_size;
13554 _next_ordinal_to_read += 1;
13555 if next_offset >= end_offset {
13556 return Ok(());
13557 }
13558
13559 while _next_ordinal_to_read < 12 {
13561 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13562 _next_ordinal_to_read += 1;
13563 next_offset += envelope_size;
13564 }
13565
13566 let next_out_of_line = decoder.next_out_of_line();
13567 let handles_before = decoder.remaining_handles();
13568 if let Some((inlined, num_bytes, num_handles)) =
13569 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13570 {
13571 let member_inline_size =
13572 <SecurityPolicy as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13573 if inlined != (member_inline_size <= 4) {
13574 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13575 }
13576 let inner_offset;
13577 let mut inner_depth = depth.clone();
13578 if inlined {
13579 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13580 inner_offset = next_offset;
13581 } else {
13582 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13583 inner_depth.increment()?;
13584 }
13585 let val_ref =
13586 self.security_policy.get_or_insert_with(|| fidl::new_empty!(SecurityPolicy, D));
13587 fidl::decode!(SecurityPolicy, D, val_ref, decoder, inner_offset, inner_depth)?;
13588 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13589 {
13590 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13591 }
13592 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13593 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13594 }
13595 }
13596
13597 next_offset += envelope_size;
13598 _next_ordinal_to_read += 1;
13599 if next_offset >= end_offset {
13600 return Ok(());
13601 }
13602
13603 while _next_ordinal_to_read < 13 {
13605 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13606 _next_ordinal_to_read += 1;
13607 next_offset += envelope_size;
13608 }
13609
13610 let next_out_of_line = decoder.next_out_of_line();
13611 let handles_before = decoder.remaining_handles();
13612 if let Some((inlined, num_bytes, num_handles)) =
13613 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13614 {
13615 let member_inline_size =
13616 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13617 if inlined != (member_inline_size <= 4) {
13618 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13619 }
13620 let inner_offset;
13621 let mut inner_depth = depth.clone();
13622 if inlined {
13623 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13624 inner_offset = next_offset;
13625 } else {
13626 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13627 inner_depth.increment()?;
13628 }
13629 let val_ref = self.channel_mask.get_or_insert_with(|| fidl::new_empty!(u32, D));
13630 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13631 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13632 {
13633 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13634 }
13635 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13636 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13637 }
13638 }
13639
13640 next_offset += envelope_size;
13641
13642 while next_offset < end_offset {
13644 _next_ordinal_to_read += 1;
13645 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13646 next_offset += envelope_size;
13647 }
13648
13649 Ok(())
13650 }
13651 }
13652
13653 impl PdProcessedRaInfo {
13654 #[inline(always)]
13655 fn max_ordinal_present(&self) -> u64 {
13656 if let Some(_) = self.last_platform_ra_msec {
13657 return 3;
13658 }
13659 if let Some(_) = self.num_platform_pio_processed {
13660 return 2;
13661 }
13662 if let Some(_) = self.num_platform_ra_received {
13663 return 1;
13664 }
13665 0
13666 }
13667 }
13668
13669 impl fidl::encoding::ValueTypeMarker for PdProcessedRaInfo {
13670 type Borrowed<'a> = &'a Self;
13671 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13672 value
13673 }
13674 }
13675
13676 unsafe impl fidl::encoding::TypeMarker for PdProcessedRaInfo {
13677 type Owned = Self;
13678
13679 #[inline(always)]
13680 fn inline_align(_context: fidl::encoding::Context) -> usize {
13681 8
13682 }
13683
13684 #[inline(always)]
13685 fn inline_size(_context: fidl::encoding::Context) -> usize {
13686 16
13687 }
13688 }
13689
13690 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PdProcessedRaInfo, D>
13691 for &PdProcessedRaInfo
13692 {
13693 unsafe fn encode(
13694 self,
13695 encoder: &mut fidl::encoding::Encoder<'_, D>,
13696 offset: usize,
13697 mut depth: fidl::encoding::Depth,
13698 ) -> fidl::Result<()> {
13699 encoder.debug_check_bounds::<PdProcessedRaInfo>(offset);
13700 let max_ordinal: u64 = self.max_ordinal_present();
13702 encoder.write_num(max_ordinal, offset);
13703 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13704 if max_ordinal == 0 {
13706 return Ok(());
13707 }
13708 depth.increment()?;
13709 let envelope_size = 8;
13710 let bytes_len = max_ordinal as usize * envelope_size;
13711 #[allow(unused_variables)]
13712 let offset = encoder.out_of_line_offset(bytes_len);
13713 let mut _prev_end_offset: usize = 0;
13714 if 1 > max_ordinal {
13715 return Ok(());
13716 }
13717
13718 let cur_offset: usize = (1 - 1) * envelope_size;
13721
13722 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13724
13725 fidl::encoding::encode_in_envelope_optional::<u32, D>(
13730 self.num_platform_ra_received
13731 .as_ref()
13732 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13733 encoder,
13734 offset + cur_offset,
13735 depth,
13736 )?;
13737
13738 _prev_end_offset = cur_offset + envelope_size;
13739 if 2 > max_ordinal {
13740 return Ok(());
13741 }
13742
13743 let cur_offset: usize = (2 - 1) * envelope_size;
13746
13747 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13749
13750 fidl::encoding::encode_in_envelope_optional::<u32, D>(
13755 self.num_platform_pio_processed
13756 .as_ref()
13757 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13758 encoder,
13759 offset + cur_offset,
13760 depth,
13761 )?;
13762
13763 _prev_end_offset = cur_offset + envelope_size;
13764 if 3 > max_ordinal {
13765 return Ok(());
13766 }
13767
13768 let cur_offset: usize = (3 - 1) * envelope_size;
13771
13772 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13774
13775 fidl::encoding::encode_in_envelope_optional::<u32, D>(
13780 self.last_platform_ra_msec
13781 .as_ref()
13782 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13783 encoder,
13784 offset + cur_offset,
13785 depth,
13786 )?;
13787
13788 _prev_end_offset = cur_offset + envelope_size;
13789
13790 Ok(())
13791 }
13792 }
13793
13794 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PdProcessedRaInfo {
13795 #[inline(always)]
13796 fn new_empty() -> Self {
13797 Self::default()
13798 }
13799
13800 unsafe fn decode(
13801 &mut self,
13802 decoder: &mut fidl::encoding::Decoder<'_, D>,
13803 offset: usize,
13804 mut depth: fidl::encoding::Depth,
13805 ) -> fidl::Result<()> {
13806 decoder.debug_check_bounds::<Self>(offset);
13807 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13808 None => return Err(fidl::Error::NotNullable),
13809 Some(len) => len,
13810 };
13811 if len == 0 {
13813 return Ok(());
13814 };
13815 depth.increment()?;
13816 let envelope_size = 8;
13817 let bytes_len = len * envelope_size;
13818 let offset = decoder.out_of_line_offset(bytes_len)?;
13819 let mut _next_ordinal_to_read = 0;
13821 let mut next_offset = offset;
13822 let end_offset = offset + bytes_len;
13823 _next_ordinal_to_read += 1;
13824 if next_offset >= end_offset {
13825 return Ok(());
13826 }
13827
13828 while _next_ordinal_to_read < 1 {
13830 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13831 _next_ordinal_to_read += 1;
13832 next_offset += envelope_size;
13833 }
13834
13835 let next_out_of_line = decoder.next_out_of_line();
13836 let handles_before = decoder.remaining_handles();
13837 if let Some((inlined, num_bytes, num_handles)) =
13838 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13839 {
13840 let member_inline_size =
13841 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13842 if inlined != (member_inline_size <= 4) {
13843 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13844 }
13845 let inner_offset;
13846 let mut inner_depth = depth.clone();
13847 if inlined {
13848 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13849 inner_offset = next_offset;
13850 } else {
13851 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13852 inner_depth.increment()?;
13853 }
13854 let val_ref =
13855 self.num_platform_ra_received.get_or_insert_with(|| fidl::new_empty!(u32, D));
13856 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13857 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13858 {
13859 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13860 }
13861 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13862 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13863 }
13864 }
13865
13866 next_offset += envelope_size;
13867 _next_ordinal_to_read += 1;
13868 if next_offset >= end_offset {
13869 return Ok(());
13870 }
13871
13872 while _next_ordinal_to_read < 2 {
13874 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13875 _next_ordinal_to_read += 1;
13876 next_offset += envelope_size;
13877 }
13878
13879 let next_out_of_line = decoder.next_out_of_line();
13880 let handles_before = decoder.remaining_handles();
13881 if let Some((inlined, num_bytes, num_handles)) =
13882 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13883 {
13884 let member_inline_size =
13885 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13886 if inlined != (member_inline_size <= 4) {
13887 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13888 }
13889 let inner_offset;
13890 let mut inner_depth = depth.clone();
13891 if inlined {
13892 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13893 inner_offset = next_offset;
13894 } else {
13895 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13896 inner_depth.increment()?;
13897 }
13898 let val_ref =
13899 self.num_platform_pio_processed.get_or_insert_with(|| fidl::new_empty!(u32, D));
13900 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13901 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13902 {
13903 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13904 }
13905 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13906 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13907 }
13908 }
13909
13910 next_offset += envelope_size;
13911 _next_ordinal_to_read += 1;
13912 if next_offset >= end_offset {
13913 return Ok(());
13914 }
13915
13916 while _next_ordinal_to_read < 3 {
13918 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13919 _next_ordinal_to_read += 1;
13920 next_offset += envelope_size;
13921 }
13922
13923 let next_out_of_line = decoder.next_out_of_line();
13924 let handles_before = decoder.remaining_handles();
13925 if let Some((inlined, num_bytes, num_handles)) =
13926 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13927 {
13928 let member_inline_size =
13929 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13930 if inlined != (member_inline_size <= 4) {
13931 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13932 }
13933 let inner_offset;
13934 let mut inner_depth = depth.clone();
13935 if inlined {
13936 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13937 inner_offset = next_offset;
13938 } else {
13939 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13940 inner_depth.increment()?;
13941 }
13942 let val_ref =
13943 self.last_platform_ra_msec.get_or_insert_with(|| fidl::new_empty!(u32, D));
13944 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13945 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13946 {
13947 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13948 }
13949 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13950 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13951 }
13952 }
13953
13954 next_offset += envelope_size;
13955
13956 while next_offset < end_offset {
13958 _next_ordinal_to_read += 1;
13959 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13960 next_offset += envelope_size;
13961 }
13962
13963 Ok(())
13964 }
13965 }
13966
13967 impl SecurityPolicy {
13968 #[inline(always)]
13969 fn max_ordinal_present(&self) -> u64 {
13970 if let Some(_) = self.version_threshold_for_routing {
13971 return 10;
13972 }
13973 if let Some(_) = self.nonccm_routers_enabled {
13974 return 9;
13975 }
13976 if let Some(_) = self.toble_link_enabled {
13977 return 8;
13978 }
13979 if let Some(_) = self.network_key_provisioning_enabled {
13980 return 7;
13981 }
13982 if let Some(_) = self.autonomous_enrollment_enabled {
13983 return 6;
13984 }
13985 if let Some(_) = self.external_commissioning_enabled {
13986 return 5;
13987 }
13988 if let Some(_) = self.routers_enabled {
13989 return 4;
13990 }
13991 if let Some(_) = self.native_commissioning_enabled {
13992 return 3;
13993 }
13994 if let Some(_) = self.obtain_network_key_enabled {
13995 return 2;
13996 }
13997 if let Some(_) = self.rotation_time {
13998 return 1;
13999 }
14000 0
14001 }
14002 }
14003
14004 impl fidl::encoding::ValueTypeMarker for SecurityPolicy {
14005 type Borrowed<'a> = &'a Self;
14006 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14007 value
14008 }
14009 }
14010
14011 unsafe impl fidl::encoding::TypeMarker for SecurityPolicy {
14012 type Owned = Self;
14013
14014 #[inline(always)]
14015 fn inline_align(_context: fidl::encoding::Context) -> usize {
14016 8
14017 }
14018
14019 #[inline(always)]
14020 fn inline_size(_context: fidl::encoding::Context) -> usize {
14021 16
14022 }
14023 }
14024
14025 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SecurityPolicy, D>
14026 for &SecurityPolicy
14027 {
14028 unsafe fn encode(
14029 self,
14030 encoder: &mut fidl::encoding::Encoder<'_, D>,
14031 offset: usize,
14032 mut depth: fidl::encoding::Depth,
14033 ) -> fidl::Result<()> {
14034 encoder.debug_check_bounds::<SecurityPolicy>(offset);
14035 let max_ordinal: u64 = self.max_ordinal_present();
14037 encoder.write_num(max_ordinal, offset);
14038 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14039 if max_ordinal == 0 {
14041 return Ok(());
14042 }
14043 depth.increment()?;
14044 let envelope_size = 8;
14045 let bytes_len = max_ordinal as usize * envelope_size;
14046 #[allow(unused_variables)]
14047 let offset = encoder.out_of_line_offset(bytes_len);
14048 let mut _prev_end_offset: usize = 0;
14049 if 1 > max_ordinal {
14050 return Ok(());
14051 }
14052
14053 let cur_offset: usize = (1 - 1) * envelope_size;
14056
14057 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14059
14060 fidl::encoding::encode_in_envelope_optional::<u16, D>(
14065 self.rotation_time.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
14066 encoder,
14067 offset + cur_offset,
14068 depth,
14069 )?;
14070
14071 _prev_end_offset = cur_offset + envelope_size;
14072 if 2 > max_ordinal {
14073 return Ok(());
14074 }
14075
14076 let cur_offset: usize = (2 - 1) * envelope_size;
14079
14080 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14082
14083 fidl::encoding::encode_in_envelope_optional::<bool, D>(
14088 self.obtain_network_key_enabled
14089 .as_ref()
14090 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
14091 encoder,
14092 offset + cur_offset,
14093 depth,
14094 )?;
14095
14096 _prev_end_offset = cur_offset + envelope_size;
14097 if 3 > max_ordinal {
14098 return Ok(());
14099 }
14100
14101 let cur_offset: usize = (3 - 1) * envelope_size;
14104
14105 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14107
14108 fidl::encoding::encode_in_envelope_optional::<bool, D>(
14113 self.native_commissioning_enabled
14114 .as_ref()
14115 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
14116 encoder,
14117 offset + cur_offset,
14118 depth,
14119 )?;
14120
14121 _prev_end_offset = cur_offset + envelope_size;
14122 if 4 > max_ordinal {
14123 return Ok(());
14124 }
14125
14126 let cur_offset: usize = (4 - 1) * envelope_size;
14129
14130 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14132
14133 fidl::encoding::encode_in_envelope_optional::<bool, D>(
14138 self.routers_enabled
14139 .as_ref()
14140 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
14141 encoder,
14142 offset + cur_offset,
14143 depth,
14144 )?;
14145
14146 _prev_end_offset = cur_offset + envelope_size;
14147 if 5 > max_ordinal {
14148 return Ok(());
14149 }
14150
14151 let cur_offset: usize = (5 - 1) * envelope_size;
14154
14155 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14157
14158 fidl::encoding::encode_in_envelope_optional::<bool, D>(
14163 self.external_commissioning_enabled
14164 .as_ref()
14165 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
14166 encoder,
14167 offset + cur_offset,
14168 depth,
14169 )?;
14170
14171 _prev_end_offset = cur_offset + envelope_size;
14172 if 6 > max_ordinal {
14173 return Ok(());
14174 }
14175
14176 let cur_offset: usize = (6 - 1) * envelope_size;
14179
14180 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14182
14183 fidl::encoding::encode_in_envelope_optional::<bool, D>(
14188 self.autonomous_enrollment_enabled
14189 .as_ref()
14190 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
14191 encoder,
14192 offset + cur_offset,
14193 depth,
14194 )?;
14195
14196 _prev_end_offset = cur_offset + envelope_size;
14197 if 7 > max_ordinal {
14198 return Ok(());
14199 }
14200
14201 let cur_offset: usize = (7 - 1) * envelope_size;
14204
14205 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14207
14208 fidl::encoding::encode_in_envelope_optional::<bool, D>(
14213 self.network_key_provisioning_enabled
14214 .as_ref()
14215 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
14216 encoder,
14217 offset + cur_offset,
14218 depth,
14219 )?;
14220
14221 _prev_end_offset = cur_offset + envelope_size;
14222 if 8 > max_ordinal {
14223 return Ok(());
14224 }
14225
14226 let cur_offset: usize = (8 - 1) * envelope_size;
14229
14230 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14232
14233 fidl::encoding::encode_in_envelope_optional::<bool, D>(
14238 self.toble_link_enabled
14239 .as_ref()
14240 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
14241 encoder,
14242 offset + cur_offset,
14243 depth,
14244 )?;
14245
14246 _prev_end_offset = cur_offset + envelope_size;
14247 if 9 > max_ordinal {
14248 return Ok(());
14249 }
14250
14251 let cur_offset: usize = (9 - 1) * envelope_size;
14254
14255 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14257
14258 fidl::encoding::encode_in_envelope_optional::<bool, D>(
14263 self.nonccm_routers_enabled
14264 .as_ref()
14265 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
14266 encoder,
14267 offset + cur_offset,
14268 depth,
14269 )?;
14270
14271 _prev_end_offset = cur_offset + envelope_size;
14272 if 10 > max_ordinal {
14273 return Ok(());
14274 }
14275
14276 let cur_offset: usize = (10 - 1) * envelope_size;
14279
14280 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14282
14283 fidl::encoding::encode_in_envelope_optional::<u8, D>(
14288 self.version_threshold_for_routing
14289 .as_ref()
14290 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
14291 encoder,
14292 offset + cur_offset,
14293 depth,
14294 )?;
14295
14296 _prev_end_offset = cur_offset + envelope_size;
14297
14298 Ok(())
14299 }
14300 }
14301
14302 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SecurityPolicy {
14303 #[inline(always)]
14304 fn new_empty() -> Self {
14305 Self::default()
14306 }
14307
14308 unsafe fn decode(
14309 &mut self,
14310 decoder: &mut fidl::encoding::Decoder<'_, D>,
14311 offset: usize,
14312 mut depth: fidl::encoding::Depth,
14313 ) -> fidl::Result<()> {
14314 decoder.debug_check_bounds::<Self>(offset);
14315 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14316 None => return Err(fidl::Error::NotNullable),
14317 Some(len) => len,
14318 };
14319 if len == 0 {
14321 return Ok(());
14322 };
14323 depth.increment()?;
14324 let envelope_size = 8;
14325 let bytes_len = len * envelope_size;
14326 let offset = decoder.out_of_line_offset(bytes_len)?;
14327 let mut _next_ordinal_to_read = 0;
14329 let mut next_offset = offset;
14330 let end_offset = offset + bytes_len;
14331 _next_ordinal_to_read += 1;
14332 if next_offset >= end_offset {
14333 return Ok(());
14334 }
14335
14336 while _next_ordinal_to_read < 1 {
14338 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14339 _next_ordinal_to_read += 1;
14340 next_offset += envelope_size;
14341 }
14342
14343 let next_out_of_line = decoder.next_out_of_line();
14344 let handles_before = decoder.remaining_handles();
14345 if let Some((inlined, num_bytes, num_handles)) =
14346 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14347 {
14348 let member_inline_size =
14349 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14350 if inlined != (member_inline_size <= 4) {
14351 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14352 }
14353 let inner_offset;
14354 let mut inner_depth = depth.clone();
14355 if inlined {
14356 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14357 inner_offset = next_offset;
14358 } else {
14359 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14360 inner_depth.increment()?;
14361 }
14362 let val_ref = self.rotation_time.get_or_insert_with(|| fidl::new_empty!(u16, D));
14363 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
14364 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14365 {
14366 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14367 }
14368 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14369 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14370 }
14371 }
14372
14373 next_offset += envelope_size;
14374 _next_ordinal_to_read += 1;
14375 if next_offset >= end_offset {
14376 return Ok(());
14377 }
14378
14379 while _next_ordinal_to_read < 2 {
14381 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14382 _next_ordinal_to_read += 1;
14383 next_offset += envelope_size;
14384 }
14385
14386 let next_out_of_line = decoder.next_out_of_line();
14387 let handles_before = decoder.remaining_handles();
14388 if let Some((inlined, num_bytes, num_handles)) =
14389 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14390 {
14391 let member_inline_size =
14392 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14393 if inlined != (member_inline_size <= 4) {
14394 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14395 }
14396 let inner_offset;
14397 let mut inner_depth = depth.clone();
14398 if inlined {
14399 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14400 inner_offset = next_offset;
14401 } else {
14402 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14403 inner_depth.increment()?;
14404 }
14405 let val_ref = self
14406 .obtain_network_key_enabled
14407 .get_or_insert_with(|| fidl::new_empty!(bool, D));
14408 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
14409 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14410 {
14411 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14412 }
14413 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14414 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14415 }
14416 }
14417
14418 next_offset += envelope_size;
14419 _next_ordinal_to_read += 1;
14420 if next_offset >= end_offset {
14421 return Ok(());
14422 }
14423
14424 while _next_ordinal_to_read < 3 {
14426 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14427 _next_ordinal_to_read += 1;
14428 next_offset += envelope_size;
14429 }
14430
14431 let next_out_of_line = decoder.next_out_of_line();
14432 let handles_before = decoder.remaining_handles();
14433 if let Some((inlined, num_bytes, num_handles)) =
14434 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14435 {
14436 let member_inline_size =
14437 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14438 if inlined != (member_inline_size <= 4) {
14439 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14440 }
14441 let inner_offset;
14442 let mut inner_depth = depth.clone();
14443 if inlined {
14444 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14445 inner_offset = next_offset;
14446 } else {
14447 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14448 inner_depth.increment()?;
14449 }
14450 let val_ref = self
14451 .native_commissioning_enabled
14452 .get_or_insert_with(|| fidl::new_empty!(bool, D));
14453 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
14454 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14455 {
14456 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14457 }
14458 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14459 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14460 }
14461 }
14462
14463 next_offset += envelope_size;
14464 _next_ordinal_to_read += 1;
14465 if next_offset >= end_offset {
14466 return Ok(());
14467 }
14468
14469 while _next_ordinal_to_read < 4 {
14471 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14472 _next_ordinal_to_read += 1;
14473 next_offset += envelope_size;
14474 }
14475
14476 let next_out_of_line = decoder.next_out_of_line();
14477 let handles_before = decoder.remaining_handles();
14478 if let Some((inlined, num_bytes, num_handles)) =
14479 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14480 {
14481 let member_inline_size =
14482 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14483 if inlined != (member_inline_size <= 4) {
14484 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14485 }
14486 let inner_offset;
14487 let mut inner_depth = depth.clone();
14488 if inlined {
14489 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14490 inner_offset = next_offset;
14491 } else {
14492 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14493 inner_depth.increment()?;
14494 }
14495 let val_ref = self.routers_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
14496 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
14497 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14498 {
14499 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14500 }
14501 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14502 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14503 }
14504 }
14505
14506 next_offset += envelope_size;
14507 _next_ordinal_to_read += 1;
14508 if next_offset >= end_offset {
14509 return Ok(());
14510 }
14511
14512 while _next_ordinal_to_read < 5 {
14514 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14515 _next_ordinal_to_read += 1;
14516 next_offset += envelope_size;
14517 }
14518
14519 let next_out_of_line = decoder.next_out_of_line();
14520 let handles_before = decoder.remaining_handles();
14521 if let Some((inlined, num_bytes, num_handles)) =
14522 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14523 {
14524 let member_inline_size =
14525 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14526 if inlined != (member_inline_size <= 4) {
14527 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14528 }
14529 let inner_offset;
14530 let mut inner_depth = depth.clone();
14531 if inlined {
14532 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14533 inner_offset = next_offset;
14534 } else {
14535 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14536 inner_depth.increment()?;
14537 }
14538 let val_ref = self
14539 .external_commissioning_enabled
14540 .get_or_insert_with(|| fidl::new_empty!(bool, D));
14541 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
14542 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14543 {
14544 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14545 }
14546 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14547 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14548 }
14549 }
14550
14551 next_offset += envelope_size;
14552 _next_ordinal_to_read += 1;
14553 if next_offset >= end_offset {
14554 return Ok(());
14555 }
14556
14557 while _next_ordinal_to_read < 6 {
14559 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14560 _next_ordinal_to_read += 1;
14561 next_offset += envelope_size;
14562 }
14563
14564 let next_out_of_line = decoder.next_out_of_line();
14565 let handles_before = decoder.remaining_handles();
14566 if let Some((inlined, num_bytes, num_handles)) =
14567 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14568 {
14569 let member_inline_size =
14570 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14571 if inlined != (member_inline_size <= 4) {
14572 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14573 }
14574 let inner_offset;
14575 let mut inner_depth = depth.clone();
14576 if inlined {
14577 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14578 inner_offset = next_offset;
14579 } else {
14580 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14581 inner_depth.increment()?;
14582 }
14583 let val_ref = self
14584 .autonomous_enrollment_enabled
14585 .get_or_insert_with(|| fidl::new_empty!(bool, D));
14586 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
14587 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14588 {
14589 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14590 }
14591 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14592 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14593 }
14594 }
14595
14596 next_offset += envelope_size;
14597 _next_ordinal_to_read += 1;
14598 if next_offset >= end_offset {
14599 return Ok(());
14600 }
14601
14602 while _next_ordinal_to_read < 7 {
14604 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14605 _next_ordinal_to_read += 1;
14606 next_offset += envelope_size;
14607 }
14608
14609 let next_out_of_line = decoder.next_out_of_line();
14610 let handles_before = decoder.remaining_handles();
14611 if let Some((inlined, num_bytes, num_handles)) =
14612 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14613 {
14614 let member_inline_size =
14615 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14616 if inlined != (member_inline_size <= 4) {
14617 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14618 }
14619 let inner_offset;
14620 let mut inner_depth = depth.clone();
14621 if inlined {
14622 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14623 inner_offset = next_offset;
14624 } else {
14625 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14626 inner_depth.increment()?;
14627 }
14628 let val_ref = self
14629 .network_key_provisioning_enabled
14630 .get_or_insert_with(|| fidl::new_empty!(bool, D));
14631 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
14632 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14633 {
14634 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14635 }
14636 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14637 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14638 }
14639 }
14640
14641 next_offset += envelope_size;
14642 _next_ordinal_to_read += 1;
14643 if next_offset >= end_offset {
14644 return Ok(());
14645 }
14646
14647 while _next_ordinal_to_read < 8 {
14649 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14650 _next_ordinal_to_read += 1;
14651 next_offset += envelope_size;
14652 }
14653
14654 let next_out_of_line = decoder.next_out_of_line();
14655 let handles_before = decoder.remaining_handles();
14656 if let Some((inlined, num_bytes, num_handles)) =
14657 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14658 {
14659 let member_inline_size =
14660 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14661 if inlined != (member_inline_size <= 4) {
14662 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14663 }
14664 let inner_offset;
14665 let mut inner_depth = depth.clone();
14666 if inlined {
14667 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14668 inner_offset = next_offset;
14669 } else {
14670 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14671 inner_depth.increment()?;
14672 }
14673 let val_ref =
14674 self.toble_link_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
14675 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
14676 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14677 {
14678 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14679 }
14680 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14681 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14682 }
14683 }
14684
14685 next_offset += envelope_size;
14686 _next_ordinal_to_read += 1;
14687 if next_offset >= end_offset {
14688 return Ok(());
14689 }
14690
14691 while _next_ordinal_to_read < 9 {
14693 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14694 _next_ordinal_to_read += 1;
14695 next_offset += envelope_size;
14696 }
14697
14698 let next_out_of_line = decoder.next_out_of_line();
14699 let handles_before = decoder.remaining_handles();
14700 if let Some((inlined, num_bytes, num_handles)) =
14701 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14702 {
14703 let member_inline_size =
14704 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14705 if inlined != (member_inline_size <= 4) {
14706 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14707 }
14708 let inner_offset;
14709 let mut inner_depth = depth.clone();
14710 if inlined {
14711 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14712 inner_offset = next_offset;
14713 } else {
14714 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14715 inner_depth.increment()?;
14716 }
14717 let val_ref =
14718 self.nonccm_routers_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
14719 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
14720 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14721 {
14722 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14723 }
14724 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14725 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14726 }
14727 }
14728
14729 next_offset += envelope_size;
14730 _next_ordinal_to_read += 1;
14731 if next_offset >= end_offset {
14732 return Ok(());
14733 }
14734
14735 while _next_ordinal_to_read < 10 {
14737 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14738 _next_ordinal_to_read += 1;
14739 next_offset += envelope_size;
14740 }
14741
14742 let next_out_of_line = decoder.next_out_of_line();
14743 let handles_before = decoder.remaining_handles();
14744 if let Some((inlined, num_bytes, num_handles)) =
14745 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14746 {
14747 let member_inline_size =
14748 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14749 if inlined != (member_inline_size <= 4) {
14750 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14751 }
14752 let inner_offset;
14753 let mut inner_depth = depth.clone();
14754 if inlined {
14755 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14756 inner_offset = next_offset;
14757 } else {
14758 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14759 inner_depth.increment()?;
14760 }
14761 let val_ref = self
14762 .version_threshold_for_routing
14763 .get_or_insert_with(|| fidl::new_empty!(u8, D));
14764 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14765 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14766 {
14767 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14768 }
14769 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14770 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14771 }
14772 }
14773
14774 next_offset += envelope_size;
14775
14776 while next_offset < end_offset {
14778 _next_ordinal_to_read += 1;
14779 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14780 next_offset += envelope_size;
14781 }
14782
14783 Ok(())
14784 }
14785 }
14786
14787 impl SrpServerHost {
14788 #[inline(always)]
14789 fn max_ordinal_present(&self) -> u64 {
14790 if let Some(_) = self.addresses {
14791 return 3;
14792 }
14793 if let Some(_) = self.deleted {
14794 return 2;
14795 }
14796 if let Some(_) = self.name {
14797 return 1;
14798 }
14799 0
14800 }
14801 }
14802
14803 impl fidl::encoding::ValueTypeMarker for SrpServerHost {
14804 type Borrowed<'a> = &'a Self;
14805 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14806 value
14807 }
14808 }
14809
14810 unsafe impl fidl::encoding::TypeMarker for SrpServerHost {
14811 type Owned = Self;
14812
14813 #[inline(always)]
14814 fn inline_align(_context: fidl::encoding::Context) -> usize {
14815 8
14816 }
14817
14818 #[inline(always)]
14819 fn inline_size(_context: fidl::encoding::Context) -> usize {
14820 16
14821 }
14822 }
14823
14824 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerHost, D>
14825 for &SrpServerHost
14826 {
14827 unsafe fn encode(
14828 self,
14829 encoder: &mut fidl::encoding::Encoder<'_, D>,
14830 offset: usize,
14831 mut depth: fidl::encoding::Depth,
14832 ) -> fidl::Result<()> {
14833 encoder.debug_check_bounds::<SrpServerHost>(offset);
14834 let max_ordinal: u64 = self.max_ordinal_present();
14836 encoder.write_num(max_ordinal, offset);
14837 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14838 if max_ordinal == 0 {
14840 return Ok(());
14841 }
14842 depth.increment()?;
14843 let envelope_size = 8;
14844 let bytes_len = max_ordinal as usize * envelope_size;
14845 #[allow(unused_variables)]
14846 let offset = encoder.out_of_line_offset(bytes_len);
14847 let mut _prev_end_offset: usize = 0;
14848 if 1 > max_ordinal {
14849 return Ok(());
14850 }
14851
14852 let cur_offset: usize = (1 - 1) * envelope_size;
14855
14856 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14858
14859 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
14864 self.name.as_ref().map(
14865 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
14866 ),
14867 encoder,
14868 offset + cur_offset,
14869 depth,
14870 )?;
14871
14872 _prev_end_offset = cur_offset + envelope_size;
14873 if 2 > max_ordinal {
14874 return Ok(());
14875 }
14876
14877 let cur_offset: usize = (2 - 1) * envelope_size;
14880
14881 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14883
14884 fidl::encoding::encode_in_envelope_optional::<bool, D>(
14889 self.deleted.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
14890 encoder,
14891 offset + cur_offset,
14892 depth,
14893 )?;
14894
14895 _prev_end_offset = cur_offset + envelope_size;
14896 if 3 > max_ordinal {
14897 return Ok(());
14898 }
14899
14900 let cur_offset: usize = (3 - 1) * envelope_size;
14903
14904 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14906
14907 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_net__common::Ipv6Address, 16>, D>(
14912 self.addresses.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_net__common::Ipv6Address, 16> as fidl::encoding::ValueTypeMarker>::borrow),
14913 encoder, offset + cur_offset, depth
14914 )?;
14915
14916 _prev_end_offset = cur_offset + envelope_size;
14917
14918 Ok(())
14919 }
14920 }
14921
14922 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerHost {
14923 #[inline(always)]
14924 fn new_empty() -> Self {
14925 Self::default()
14926 }
14927
14928 unsafe fn decode(
14929 &mut self,
14930 decoder: &mut fidl::encoding::Decoder<'_, D>,
14931 offset: usize,
14932 mut depth: fidl::encoding::Depth,
14933 ) -> fidl::Result<()> {
14934 decoder.debug_check_bounds::<Self>(offset);
14935 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14936 None => return Err(fidl::Error::NotNullable),
14937 Some(len) => len,
14938 };
14939 if len == 0 {
14941 return Ok(());
14942 };
14943 depth.increment()?;
14944 let envelope_size = 8;
14945 let bytes_len = len * envelope_size;
14946 let offset = decoder.out_of_line_offset(bytes_len)?;
14947 let mut _next_ordinal_to_read = 0;
14949 let mut next_offset = offset;
14950 let end_offset = offset + bytes_len;
14951 _next_ordinal_to_read += 1;
14952 if next_offset >= end_offset {
14953 return Ok(());
14954 }
14955
14956 while _next_ordinal_to_read < 1 {
14958 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14959 _next_ordinal_to_read += 1;
14960 next_offset += envelope_size;
14961 }
14962
14963 let next_out_of_line = decoder.next_out_of_line();
14964 let handles_before = decoder.remaining_handles();
14965 if let Some((inlined, num_bytes, num_handles)) =
14966 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14967 {
14968 let member_inline_size =
14969 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
14970 decoder.context,
14971 );
14972 if inlined != (member_inline_size <= 4) {
14973 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14974 }
14975 let inner_offset;
14976 let mut inner_depth = depth.clone();
14977 if inlined {
14978 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14979 inner_offset = next_offset;
14980 } else {
14981 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14982 inner_depth.increment()?;
14983 }
14984 let val_ref = self
14985 .name
14986 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
14987 fidl::decode!(
14988 fidl::encoding::BoundedString<255>,
14989 D,
14990 val_ref,
14991 decoder,
14992 inner_offset,
14993 inner_depth
14994 )?;
14995 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14996 {
14997 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14998 }
14999 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15000 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15001 }
15002 }
15003
15004 next_offset += envelope_size;
15005 _next_ordinal_to_read += 1;
15006 if next_offset >= end_offset {
15007 return Ok(());
15008 }
15009
15010 while _next_ordinal_to_read < 2 {
15012 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15013 _next_ordinal_to_read += 1;
15014 next_offset += envelope_size;
15015 }
15016
15017 let next_out_of_line = decoder.next_out_of_line();
15018 let handles_before = decoder.remaining_handles();
15019 if let Some((inlined, num_bytes, num_handles)) =
15020 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15021 {
15022 let member_inline_size =
15023 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15024 if inlined != (member_inline_size <= 4) {
15025 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15026 }
15027 let inner_offset;
15028 let mut inner_depth = depth.clone();
15029 if inlined {
15030 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15031 inner_offset = next_offset;
15032 } else {
15033 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15034 inner_depth.increment()?;
15035 }
15036 let val_ref = self.deleted.get_or_insert_with(|| fidl::new_empty!(bool, D));
15037 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
15038 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15039 {
15040 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15041 }
15042 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15043 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15044 }
15045 }
15046
15047 next_offset += envelope_size;
15048 _next_ordinal_to_read += 1;
15049 if next_offset >= end_offset {
15050 return Ok(());
15051 }
15052
15053 while _next_ordinal_to_read < 3 {
15055 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15056 _next_ordinal_to_read += 1;
15057 next_offset += envelope_size;
15058 }
15059
15060 let next_out_of_line = decoder.next_out_of_line();
15061 let handles_before = decoder.remaining_handles();
15062 if let Some((inlined, num_bytes, num_handles)) =
15063 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15064 {
15065 let member_inline_size = <fidl::encoding::Vector<
15066 fidl_fuchsia_net__common::Ipv6Address,
15067 16,
15068 > as fidl::encoding::TypeMarker>::inline_size(
15069 decoder.context
15070 );
15071 if inlined != (member_inline_size <= 4) {
15072 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15073 }
15074 let inner_offset;
15075 let mut inner_depth = depth.clone();
15076 if inlined {
15077 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15078 inner_offset = next_offset;
15079 } else {
15080 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15081 inner_depth.increment()?;
15082 }
15083 let val_ref =
15084 self.addresses.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net__common::Ipv6Address, 16>, D));
15085 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net__common::Ipv6Address, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
15086 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15087 {
15088 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15089 }
15090 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15091 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15092 }
15093 }
15094
15095 next_offset += envelope_size;
15096
15097 while next_offset < end_offset {
15099 _next_ordinal_to_read += 1;
15100 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15101 next_offset += envelope_size;
15102 }
15103
15104 Ok(())
15105 }
15106 }
15107
15108 impl SrpServerInfo {
15109 #[inline(always)]
15110 fn max_ordinal_present(&self) -> u64 {
15111 if let Some(_) = self.services {
15112 return 8;
15113 }
15114 if let Some(_) = self.hosts {
15115 return 7;
15116 }
15117 if let Some(_) = self.services_registration {
15118 return 6;
15119 }
15120 if let Some(_) = self.hosts_registration {
15121 return 5;
15122 }
15123 if let Some(_) = self.response_counters {
15124 return 4;
15125 }
15126 if let Some(_) = self.address_mode {
15127 return 3;
15128 }
15129 if let Some(_) = self.port {
15130 return 2;
15131 }
15132 if let Some(_) = self.state {
15133 return 1;
15134 }
15135 0
15136 }
15137 }
15138
15139 impl fidl::encoding::ValueTypeMarker for SrpServerInfo {
15140 type Borrowed<'a> = &'a Self;
15141 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15142 value
15143 }
15144 }
15145
15146 unsafe impl fidl::encoding::TypeMarker for SrpServerInfo {
15147 type Owned = Self;
15148
15149 #[inline(always)]
15150 fn inline_align(_context: fidl::encoding::Context) -> usize {
15151 8
15152 }
15153
15154 #[inline(always)]
15155 fn inline_size(_context: fidl::encoding::Context) -> usize {
15156 16
15157 }
15158 }
15159
15160 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerInfo, D>
15161 for &SrpServerInfo
15162 {
15163 unsafe fn encode(
15164 self,
15165 encoder: &mut fidl::encoding::Encoder<'_, D>,
15166 offset: usize,
15167 mut depth: fidl::encoding::Depth,
15168 ) -> fidl::Result<()> {
15169 encoder.debug_check_bounds::<SrpServerInfo>(offset);
15170 let max_ordinal: u64 = self.max_ordinal_present();
15172 encoder.write_num(max_ordinal, offset);
15173 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15174 if max_ordinal == 0 {
15176 return Ok(());
15177 }
15178 depth.increment()?;
15179 let envelope_size = 8;
15180 let bytes_len = max_ordinal as usize * envelope_size;
15181 #[allow(unused_variables)]
15182 let offset = encoder.out_of_line_offset(bytes_len);
15183 let mut _prev_end_offset: usize = 0;
15184 if 1 > max_ordinal {
15185 return Ok(());
15186 }
15187
15188 let cur_offset: usize = (1 - 1) * envelope_size;
15191
15192 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15194
15195 fidl::encoding::encode_in_envelope_optional::<SrpServerState, D>(
15200 self.state
15201 .as_ref()
15202 .map(<SrpServerState as fidl::encoding::ValueTypeMarker>::borrow),
15203 encoder,
15204 offset + cur_offset,
15205 depth,
15206 )?;
15207
15208 _prev_end_offset = cur_offset + envelope_size;
15209 if 2 > max_ordinal {
15210 return Ok(());
15211 }
15212
15213 let cur_offset: usize = (2 - 1) * envelope_size;
15216
15217 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15219
15220 fidl::encoding::encode_in_envelope_optional::<u16, D>(
15225 self.port.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
15226 encoder,
15227 offset + cur_offset,
15228 depth,
15229 )?;
15230
15231 _prev_end_offset = cur_offset + envelope_size;
15232 if 3 > max_ordinal {
15233 return Ok(());
15234 }
15235
15236 let cur_offset: usize = (3 - 1) * envelope_size;
15239
15240 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15242
15243 fidl::encoding::encode_in_envelope_optional::<SrpServerAddressMode, D>(
15248 self.address_mode
15249 .as_ref()
15250 .map(<SrpServerAddressMode as fidl::encoding::ValueTypeMarker>::borrow),
15251 encoder,
15252 offset + cur_offset,
15253 depth,
15254 )?;
15255
15256 _prev_end_offset = cur_offset + envelope_size;
15257 if 4 > max_ordinal {
15258 return Ok(());
15259 }
15260
15261 let cur_offset: usize = (4 - 1) * envelope_size;
15264
15265 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15267
15268 fidl::encoding::encode_in_envelope_optional::<SrpServerResponseCounters, D>(
15273 self.response_counters
15274 .as_ref()
15275 .map(<SrpServerResponseCounters as fidl::encoding::ValueTypeMarker>::borrow),
15276 encoder,
15277 offset + cur_offset,
15278 depth,
15279 )?;
15280
15281 _prev_end_offset = cur_offset + envelope_size;
15282 if 5 > max_ordinal {
15283 return Ok(());
15284 }
15285
15286 let cur_offset: usize = (5 - 1) * envelope_size;
15289
15290 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15292
15293 fidl::encoding::encode_in_envelope_optional::<SrpServerRegistration, D>(
15298 self.hosts_registration
15299 .as_ref()
15300 .map(<SrpServerRegistration as fidl::encoding::ValueTypeMarker>::borrow),
15301 encoder,
15302 offset + cur_offset,
15303 depth,
15304 )?;
15305
15306 _prev_end_offset = cur_offset + envelope_size;
15307 if 6 > max_ordinal {
15308 return Ok(());
15309 }
15310
15311 let cur_offset: usize = (6 - 1) * envelope_size;
15314
15315 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15317
15318 fidl::encoding::encode_in_envelope_optional::<SrpServerRegistration, D>(
15323 self.services_registration
15324 .as_ref()
15325 .map(<SrpServerRegistration as fidl::encoding::ValueTypeMarker>::borrow),
15326 encoder,
15327 offset + cur_offset,
15328 depth,
15329 )?;
15330
15331 _prev_end_offset = cur_offset + envelope_size;
15332 if 7 > max_ordinal {
15333 return Ok(());
15334 }
15335
15336 let cur_offset: usize = (7 - 1) * envelope_size;
15339
15340 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15342
15343 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<SrpServerHost, 64>, D>(
15348 self.hosts.as_ref().map(<fidl::encoding::Vector<SrpServerHost, 64> as fidl::encoding::ValueTypeMarker>::borrow),
15349 encoder, offset + cur_offset, depth
15350 )?;
15351
15352 _prev_end_offset = cur_offset + envelope_size;
15353 if 8 > max_ordinal {
15354 return Ok(());
15355 }
15356
15357 let cur_offset: usize = (8 - 1) * envelope_size;
15360
15361 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15363
15364 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<SrpServerService, 64>, D>(
15369 self.services.as_ref().map(<fidl::encoding::Vector<SrpServerService, 64> as fidl::encoding::ValueTypeMarker>::borrow),
15370 encoder, offset + cur_offset, depth
15371 )?;
15372
15373 _prev_end_offset = cur_offset + envelope_size;
15374
15375 Ok(())
15376 }
15377 }
15378
15379 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerInfo {
15380 #[inline(always)]
15381 fn new_empty() -> Self {
15382 Self::default()
15383 }
15384
15385 unsafe fn decode(
15386 &mut self,
15387 decoder: &mut fidl::encoding::Decoder<'_, D>,
15388 offset: usize,
15389 mut depth: fidl::encoding::Depth,
15390 ) -> fidl::Result<()> {
15391 decoder.debug_check_bounds::<Self>(offset);
15392 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15393 None => return Err(fidl::Error::NotNullable),
15394 Some(len) => len,
15395 };
15396 if len == 0 {
15398 return Ok(());
15399 };
15400 depth.increment()?;
15401 let envelope_size = 8;
15402 let bytes_len = len * envelope_size;
15403 let offset = decoder.out_of_line_offset(bytes_len)?;
15404 let mut _next_ordinal_to_read = 0;
15406 let mut next_offset = offset;
15407 let end_offset = offset + bytes_len;
15408 _next_ordinal_to_read += 1;
15409 if next_offset >= end_offset {
15410 return Ok(());
15411 }
15412
15413 while _next_ordinal_to_read < 1 {
15415 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15416 _next_ordinal_to_read += 1;
15417 next_offset += envelope_size;
15418 }
15419
15420 let next_out_of_line = decoder.next_out_of_line();
15421 let handles_before = decoder.remaining_handles();
15422 if let Some((inlined, num_bytes, num_handles)) =
15423 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15424 {
15425 let member_inline_size =
15426 <SrpServerState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15427 if inlined != (member_inline_size <= 4) {
15428 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15429 }
15430 let inner_offset;
15431 let mut inner_depth = depth.clone();
15432 if inlined {
15433 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15434 inner_offset = next_offset;
15435 } else {
15436 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15437 inner_depth.increment()?;
15438 }
15439 let val_ref = self.state.get_or_insert_with(|| fidl::new_empty!(SrpServerState, D));
15440 fidl::decode!(SrpServerState, D, val_ref, decoder, inner_offset, inner_depth)?;
15441 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15442 {
15443 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15444 }
15445 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15446 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15447 }
15448 }
15449
15450 next_offset += envelope_size;
15451 _next_ordinal_to_read += 1;
15452 if next_offset >= end_offset {
15453 return Ok(());
15454 }
15455
15456 while _next_ordinal_to_read < 2 {
15458 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15459 _next_ordinal_to_read += 1;
15460 next_offset += envelope_size;
15461 }
15462
15463 let next_out_of_line = decoder.next_out_of_line();
15464 let handles_before = decoder.remaining_handles();
15465 if let Some((inlined, num_bytes, num_handles)) =
15466 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15467 {
15468 let member_inline_size =
15469 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15470 if inlined != (member_inline_size <= 4) {
15471 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15472 }
15473 let inner_offset;
15474 let mut inner_depth = depth.clone();
15475 if inlined {
15476 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15477 inner_offset = next_offset;
15478 } else {
15479 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15480 inner_depth.increment()?;
15481 }
15482 let val_ref = self.port.get_or_insert_with(|| fidl::new_empty!(u16, D));
15483 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
15484 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15485 {
15486 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15487 }
15488 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15489 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15490 }
15491 }
15492
15493 next_offset += envelope_size;
15494 _next_ordinal_to_read += 1;
15495 if next_offset >= end_offset {
15496 return Ok(());
15497 }
15498
15499 while _next_ordinal_to_read < 3 {
15501 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15502 _next_ordinal_to_read += 1;
15503 next_offset += envelope_size;
15504 }
15505
15506 let next_out_of_line = decoder.next_out_of_line();
15507 let handles_before = decoder.remaining_handles();
15508 if let Some((inlined, num_bytes, num_handles)) =
15509 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15510 {
15511 let member_inline_size =
15512 <SrpServerAddressMode as fidl::encoding::TypeMarker>::inline_size(
15513 decoder.context,
15514 );
15515 if inlined != (member_inline_size <= 4) {
15516 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15517 }
15518 let inner_offset;
15519 let mut inner_depth = depth.clone();
15520 if inlined {
15521 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15522 inner_offset = next_offset;
15523 } else {
15524 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15525 inner_depth.increment()?;
15526 }
15527 let val_ref = self
15528 .address_mode
15529 .get_or_insert_with(|| fidl::new_empty!(SrpServerAddressMode, D));
15530 fidl::decode!(
15531 SrpServerAddressMode,
15532 D,
15533 val_ref,
15534 decoder,
15535 inner_offset,
15536 inner_depth
15537 )?;
15538 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15539 {
15540 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15541 }
15542 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15543 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15544 }
15545 }
15546
15547 next_offset += envelope_size;
15548 _next_ordinal_to_read += 1;
15549 if next_offset >= end_offset {
15550 return Ok(());
15551 }
15552
15553 while _next_ordinal_to_read < 4 {
15555 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15556 _next_ordinal_to_read += 1;
15557 next_offset += envelope_size;
15558 }
15559
15560 let next_out_of_line = decoder.next_out_of_line();
15561 let handles_before = decoder.remaining_handles();
15562 if let Some((inlined, num_bytes, num_handles)) =
15563 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15564 {
15565 let member_inline_size =
15566 <SrpServerResponseCounters as fidl::encoding::TypeMarker>::inline_size(
15567 decoder.context,
15568 );
15569 if inlined != (member_inline_size <= 4) {
15570 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15571 }
15572 let inner_offset;
15573 let mut inner_depth = depth.clone();
15574 if inlined {
15575 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15576 inner_offset = next_offset;
15577 } else {
15578 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15579 inner_depth.increment()?;
15580 }
15581 let val_ref = self
15582 .response_counters
15583 .get_or_insert_with(|| fidl::new_empty!(SrpServerResponseCounters, D));
15584 fidl::decode!(
15585 SrpServerResponseCounters,
15586 D,
15587 val_ref,
15588 decoder,
15589 inner_offset,
15590 inner_depth
15591 )?;
15592 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15593 {
15594 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15595 }
15596 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15597 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15598 }
15599 }
15600
15601 next_offset += envelope_size;
15602 _next_ordinal_to_read += 1;
15603 if next_offset >= end_offset {
15604 return Ok(());
15605 }
15606
15607 while _next_ordinal_to_read < 5 {
15609 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15610 _next_ordinal_to_read += 1;
15611 next_offset += envelope_size;
15612 }
15613
15614 let next_out_of_line = decoder.next_out_of_line();
15615 let handles_before = decoder.remaining_handles();
15616 if let Some((inlined, num_bytes, num_handles)) =
15617 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15618 {
15619 let member_inline_size =
15620 <SrpServerRegistration as fidl::encoding::TypeMarker>::inline_size(
15621 decoder.context,
15622 );
15623 if inlined != (member_inline_size <= 4) {
15624 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15625 }
15626 let inner_offset;
15627 let mut inner_depth = depth.clone();
15628 if inlined {
15629 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15630 inner_offset = next_offset;
15631 } else {
15632 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15633 inner_depth.increment()?;
15634 }
15635 let val_ref = self
15636 .hosts_registration
15637 .get_or_insert_with(|| fidl::new_empty!(SrpServerRegistration, D));
15638 fidl::decode!(
15639 SrpServerRegistration,
15640 D,
15641 val_ref,
15642 decoder,
15643 inner_offset,
15644 inner_depth
15645 )?;
15646 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15647 {
15648 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15649 }
15650 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15651 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15652 }
15653 }
15654
15655 next_offset += envelope_size;
15656 _next_ordinal_to_read += 1;
15657 if next_offset >= end_offset {
15658 return Ok(());
15659 }
15660
15661 while _next_ordinal_to_read < 6 {
15663 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15664 _next_ordinal_to_read += 1;
15665 next_offset += envelope_size;
15666 }
15667
15668 let next_out_of_line = decoder.next_out_of_line();
15669 let handles_before = decoder.remaining_handles();
15670 if let Some((inlined, num_bytes, num_handles)) =
15671 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15672 {
15673 let member_inline_size =
15674 <SrpServerRegistration as fidl::encoding::TypeMarker>::inline_size(
15675 decoder.context,
15676 );
15677 if inlined != (member_inline_size <= 4) {
15678 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15679 }
15680 let inner_offset;
15681 let mut inner_depth = depth.clone();
15682 if inlined {
15683 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15684 inner_offset = next_offset;
15685 } else {
15686 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15687 inner_depth.increment()?;
15688 }
15689 let val_ref = self
15690 .services_registration
15691 .get_or_insert_with(|| fidl::new_empty!(SrpServerRegistration, D));
15692 fidl::decode!(
15693 SrpServerRegistration,
15694 D,
15695 val_ref,
15696 decoder,
15697 inner_offset,
15698 inner_depth
15699 )?;
15700 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15701 {
15702 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15703 }
15704 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15705 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15706 }
15707 }
15708
15709 next_offset += envelope_size;
15710 _next_ordinal_to_read += 1;
15711 if next_offset >= end_offset {
15712 return Ok(());
15713 }
15714
15715 while _next_ordinal_to_read < 7 {
15717 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15718 _next_ordinal_to_read += 1;
15719 next_offset += envelope_size;
15720 }
15721
15722 let next_out_of_line = decoder.next_out_of_line();
15723 let handles_before = decoder.remaining_handles();
15724 if let Some((inlined, num_bytes, num_handles)) =
15725 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15726 {
15727 let member_inline_size = <fidl::encoding::Vector<SrpServerHost, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15728 if inlined != (member_inline_size <= 4) {
15729 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15730 }
15731 let inner_offset;
15732 let mut inner_depth = depth.clone();
15733 if inlined {
15734 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15735 inner_offset = next_offset;
15736 } else {
15737 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15738 inner_depth.increment()?;
15739 }
15740 let val_ref = self.hosts.get_or_insert_with(
15741 || fidl::new_empty!(fidl::encoding::Vector<SrpServerHost, 64>, D),
15742 );
15743 fidl::decode!(fidl::encoding::Vector<SrpServerHost, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
15744 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15745 {
15746 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15747 }
15748 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15749 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15750 }
15751 }
15752
15753 next_offset += envelope_size;
15754 _next_ordinal_to_read += 1;
15755 if next_offset >= end_offset {
15756 return Ok(());
15757 }
15758
15759 while _next_ordinal_to_read < 8 {
15761 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15762 _next_ordinal_to_read += 1;
15763 next_offset += envelope_size;
15764 }
15765
15766 let next_out_of_line = decoder.next_out_of_line();
15767 let handles_before = decoder.remaining_handles();
15768 if let Some((inlined, num_bytes, num_handles)) =
15769 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15770 {
15771 let member_inline_size = <fidl::encoding::Vector<SrpServerService, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15772 if inlined != (member_inline_size <= 4) {
15773 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15774 }
15775 let inner_offset;
15776 let mut inner_depth = depth.clone();
15777 if inlined {
15778 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15779 inner_offset = next_offset;
15780 } else {
15781 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15782 inner_depth.increment()?;
15783 }
15784 let val_ref = self.services.get_or_insert_with(
15785 || fidl::new_empty!(fidl::encoding::Vector<SrpServerService, 64>, D),
15786 );
15787 fidl::decode!(fidl::encoding::Vector<SrpServerService, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
15788 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15789 {
15790 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15791 }
15792 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15793 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15794 }
15795 }
15796
15797 next_offset += envelope_size;
15798
15799 while next_offset < end_offset {
15801 _next_ordinal_to_read += 1;
15802 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15803 next_offset += envelope_size;
15804 }
15805
15806 Ok(())
15807 }
15808 }
15809
15810 impl SrpServerRegistration {
15811 #[inline(always)]
15812 fn max_ordinal_present(&self) -> u64 {
15813 if let Some(_) = self.remaining_key_lease_time_total {
15814 return 6;
15815 }
15816 if let Some(_) = self.remaining_lease_time_total {
15817 return 5;
15818 }
15819 if let Some(_) = self.key_lease_time_total {
15820 return 4;
15821 }
15822 if let Some(_) = self.lease_time_total {
15823 return 3;
15824 }
15825 if let Some(_) = self.deleted_count {
15826 return 2;
15827 }
15828 if let Some(_) = self.fresh_count {
15829 return 1;
15830 }
15831 0
15832 }
15833 }
15834
15835 impl fidl::encoding::ValueTypeMarker for SrpServerRegistration {
15836 type Borrowed<'a> = &'a Self;
15837 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15838 value
15839 }
15840 }
15841
15842 unsafe impl fidl::encoding::TypeMarker for SrpServerRegistration {
15843 type Owned = Self;
15844
15845 #[inline(always)]
15846 fn inline_align(_context: fidl::encoding::Context) -> usize {
15847 8
15848 }
15849
15850 #[inline(always)]
15851 fn inline_size(_context: fidl::encoding::Context) -> usize {
15852 16
15853 }
15854 }
15855
15856 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerRegistration, D>
15857 for &SrpServerRegistration
15858 {
15859 unsafe fn encode(
15860 self,
15861 encoder: &mut fidl::encoding::Encoder<'_, D>,
15862 offset: usize,
15863 mut depth: fidl::encoding::Depth,
15864 ) -> fidl::Result<()> {
15865 encoder.debug_check_bounds::<SrpServerRegistration>(offset);
15866 let max_ordinal: u64 = self.max_ordinal_present();
15868 encoder.write_num(max_ordinal, offset);
15869 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15870 if max_ordinal == 0 {
15872 return Ok(());
15873 }
15874 depth.increment()?;
15875 let envelope_size = 8;
15876 let bytes_len = max_ordinal as usize * envelope_size;
15877 #[allow(unused_variables)]
15878 let offset = encoder.out_of_line_offset(bytes_len);
15879 let mut _prev_end_offset: usize = 0;
15880 if 1 > max_ordinal {
15881 return Ok(());
15882 }
15883
15884 let cur_offset: usize = (1 - 1) * envelope_size;
15887
15888 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15890
15891 fidl::encoding::encode_in_envelope_optional::<u32, D>(
15896 self.fresh_count.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
15897 encoder,
15898 offset + cur_offset,
15899 depth,
15900 )?;
15901
15902 _prev_end_offset = cur_offset + envelope_size;
15903 if 2 > max_ordinal {
15904 return Ok(());
15905 }
15906
15907 let cur_offset: usize = (2 - 1) * envelope_size;
15910
15911 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15913
15914 fidl::encoding::encode_in_envelope_optional::<u32, D>(
15919 self.deleted_count.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
15920 encoder,
15921 offset + cur_offset,
15922 depth,
15923 )?;
15924
15925 _prev_end_offset = cur_offset + envelope_size;
15926 if 3 > max_ordinal {
15927 return Ok(());
15928 }
15929
15930 let cur_offset: usize = (3 - 1) * envelope_size;
15933
15934 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15936
15937 fidl::encoding::encode_in_envelope_optional::<i64, D>(
15942 self.lease_time_total
15943 .as_ref()
15944 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
15945 encoder,
15946 offset + cur_offset,
15947 depth,
15948 )?;
15949
15950 _prev_end_offset = cur_offset + envelope_size;
15951 if 4 > max_ordinal {
15952 return Ok(());
15953 }
15954
15955 let cur_offset: usize = (4 - 1) * envelope_size;
15958
15959 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15961
15962 fidl::encoding::encode_in_envelope_optional::<i64, D>(
15967 self.key_lease_time_total
15968 .as_ref()
15969 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
15970 encoder,
15971 offset + cur_offset,
15972 depth,
15973 )?;
15974
15975 _prev_end_offset = cur_offset + envelope_size;
15976 if 5 > max_ordinal {
15977 return Ok(());
15978 }
15979
15980 let cur_offset: usize = (5 - 1) * envelope_size;
15983
15984 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15986
15987 fidl::encoding::encode_in_envelope_optional::<i64, D>(
15992 self.remaining_lease_time_total
15993 .as_ref()
15994 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
15995 encoder,
15996 offset + cur_offset,
15997 depth,
15998 )?;
15999
16000 _prev_end_offset = cur_offset + envelope_size;
16001 if 6 > max_ordinal {
16002 return Ok(());
16003 }
16004
16005 let cur_offset: usize = (6 - 1) * envelope_size;
16008
16009 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16011
16012 fidl::encoding::encode_in_envelope_optional::<i64, D>(
16017 self.remaining_key_lease_time_total
16018 .as_ref()
16019 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
16020 encoder,
16021 offset + cur_offset,
16022 depth,
16023 )?;
16024
16025 _prev_end_offset = cur_offset + envelope_size;
16026
16027 Ok(())
16028 }
16029 }
16030
16031 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerRegistration {
16032 #[inline(always)]
16033 fn new_empty() -> Self {
16034 Self::default()
16035 }
16036
16037 unsafe fn decode(
16038 &mut self,
16039 decoder: &mut fidl::encoding::Decoder<'_, D>,
16040 offset: usize,
16041 mut depth: fidl::encoding::Depth,
16042 ) -> fidl::Result<()> {
16043 decoder.debug_check_bounds::<Self>(offset);
16044 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16045 None => return Err(fidl::Error::NotNullable),
16046 Some(len) => len,
16047 };
16048 if len == 0 {
16050 return Ok(());
16051 };
16052 depth.increment()?;
16053 let envelope_size = 8;
16054 let bytes_len = len * envelope_size;
16055 let offset = decoder.out_of_line_offset(bytes_len)?;
16056 let mut _next_ordinal_to_read = 0;
16058 let mut next_offset = offset;
16059 let end_offset = offset + bytes_len;
16060 _next_ordinal_to_read += 1;
16061 if next_offset >= end_offset {
16062 return Ok(());
16063 }
16064
16065 while _next_ordinal_to_read < 1 {
16067 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16068 _next_ordinal_to_read += 1;
16069 next_offset += envelope_size;
16070 }
16071
16072 let next_out_of_line = decoder.next_out_of_line();
16073 let handles_before = decoder.remaining_handles();
16074 if let Some((inlined, num_bytes, num_handles)) =
16075 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16076 {
16077 let member_inline_size =
16078 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16079 if inlined != (member_inline_size <= 4) {
16080 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16081 }
16082 let inner_offset;
16083 let mut inner_depth = depth.clone();
16084 if inlined {
16085 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16086 inner_offset = next_offset;
16087 } else {
16088 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16089 inner_depth.increment()?;
16090 }
16091 let val_ref = self.fresh_count.get_or_insert_with(|| fidl::new_empty!(u32, D));
16092 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
16093 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16094 {
16095 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16096 }
16097 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16098 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16099 }
16100 }
16101
16102 next_offset += envelope_size;
16103 _next_ordinal_to_read += 1;
16104 if next_offset >= end_offset {
16105 return Ok(());
16106 }
16107
16108 while _next_ordinal_to_read < 2 {
16110 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16111 _next_ordinal_to_read += 1;
16112 next_offset += envelope_size;
16113 }
16114
16115 let next_out_of_line = decoder.next_out_of_line();
16116 let handles_before = decoder.remaining_handles();
16117 if let Some((inlined, num_bytes, num_handles)) =
16118 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16119 {
16120 let member_inline_size =
16121 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16122 if inlined != (member_inline_size <= 4) {
16123 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16124 }
16125 let inner_offset;
16126 let mut inner_depth = depth.clone();
16127 if inlined {
16128 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16129 inner_offset = next_offset;
16130 } else {
16131 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16132 inner_depth.increment()?;
16133 }
16134 let val_ref = self.deleted_count.get_or_insert_with(|| fidl::new_empty!(u32, D));
16135 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
16136 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16137 {
16138 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16139 }
16140 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16141 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16142 }
16143 }
16144
16145 next_offset += envelope_size;
16146 _next_ordinal_to_read += 1;
16147 if next_offset >= end_offset {
16148 return Ok(());
16149 }
16150
16151 while _next_ordinal_to_read < 3 {
16153 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16154 _next_ordinal_to_read += 1;
16155 next_offset += envelope_size;
16156 }
16157
16158 let next_out_of_line = decoder.next_out_of_line();
16159 let handles_before = decoder.remaining_handles();
16160 if let Some((inlined, num_bytes, num_handles)) =
16161 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16162 {
16163 let member_inline_size =
16164 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16165 if inlined != (member_inline_size <= 4) {
16166 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16167 }
16168 let inner_offset;
16169 let mut inner_depth = depth.clone();
16170 if inlined {
16171 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16172 inner_offset = next_offset;
16173 } else {
16174 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16175 inner_depth.increment()?;
16176 }
16177 let val_ref = self.lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
16178 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
16179 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16180 {
16181 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16182 }
16183 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16184 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16185 }
16186 }
16187
16188 next_offset += envelope_size;
16189 _next_ordinal_to_read += 1;
16190 if next_offset >= end_offset {
16191 return Ok(());
16192 }
16193
16194 while _next_ordinal_to_read < 4 {
16196 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16197 _next_ordinal_to_read += 1;
16198 next_offset += envelope_size;
16199 }
16200
16201 let next_out_of_line = decoder.next_out_of_line();
16202 let handles_before = decoder.remaining_handles();
16203 if let Some((inlined, num_bytes, num_handles)) =
16204 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16205 {
16206 let member_inline_size =
16207 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16208 if inlined != (member_inline_size <= 4) {
16209 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16210 }
16211 let inner_offset;
16212 let mut inner_depth = depth.clone();
16213 if inlined {
16214 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16215 inner_offset = next_offset;
16216 } else {
16217 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16218 inner_depth.increment()?;
16219 }
16220 let val_ref =
16221 self.key_lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
16222 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
16223 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16224 {
16225 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16226 }
16227 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16228 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16229 }
16230 }
16231
16232 next_offset += envelope_size;
16233 _next_ordinal_to_read += 1;
16234 if next_offset >= end_offset {
16235 return Ok(());
16236 }
16237
16238 while _next_ordinal_to_read < 5 {
16240 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16241 _next_ordinal_to_read += 1;
16242 next_offset += envelope_size;
16243 }
16244
16245 let next_out_of_line = decoder.next_out_of_line();
16246 let handles_before = decoder.remaining_handles();
16247 if let Some((inlined, num_bytes, num_handles)) =
16248 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16249 {
16250 let member_inline_size =
16251 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16252 if inlined != (member_inline_size <= 4) {
16253 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16254 }
16255 let inner_offset;
16256 let mut inner_depth = depth.clone();
16257 if inlined {
16258 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16259 inner_offset = next_offset;
16260 } else {
16261 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16262 inner_depth.increment()?;
16263 }
16264 let val_ref =
16265 self.remaining_lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
16266 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
16267 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16268 {
16269 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16270 }
16271 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16272 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16273 }
16274 }
16275
16276 next_offset += envelope_size;
16277 _next_ordinal_to_read += 1;
16278 if next_offset >= end_offset {
16279 return Ok(());
16280 }
16281
16282 while _next_ordinal_to_read < 6 {
16284 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16285 _next_ordinal_to_read += 1;
16286 next_offset += envelope_size;
16287 }
16288
16289 let next_out_of_line = decoder.next_out_of_line();
16290 let handles_before = decoder.remaining_handles();
16291 if let Some((inlined, num_bytes, num_handles)) =
16292 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16293 {
16294 let member_inline_size =
16295 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16296 if inlined != (member_inline_size <= 4) {
16297 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16298 }
16299 let inner_offset;
16300 let mut inner_depth = depth.clone();
16301 if inlined {
16302 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16303 inner_offset = next_offset;
16304 } else {
16305 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16306 inner_depth.increment()?;
16307 }
16308 let val_ref = self
16309 .remaining_key_lease_time_total
16310 .get_or_insert_with(|| fidl::new_empty!(i64, D));
16311 fidl::decode!(i64, 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
16323 while next_offset < end_offset {
16325 _next_ordinal_to_read += 1;
16326 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16327 next_offset += envelope_size;
16328 }
16329
16330 Ok(())
16331 }
16332 }
16333
16334 impl SrpServerResponseCounters {
16335 #[inline(always)]
16336 fn max_ordinal_present(&self) -> u64 {
16337 if let Some(_) = self.other_response {
16338 return 6;
16339 }
16340 if let Some(_) = self.refused_response {
16341 return 5;
16342 }
16343 if let Some(_) = self.name_exists_response {
16344 return 4;
16345 }
16346 if let Some(_) = self.format_error_response {
16347 return 3;
16348 }
16349 if let Some(_) = self.server_failure_response {
16350 return 2;
16351 }
16352 if let Some(_) = self.success_response {
16353 return 1;
16354 }
16355 0
16356 }
16357 }
16358
16359 impl fidl::encoding::ValueTypeMarker for SrpServerResponseCounters {
16360 type Borrowed<'a> = &'a Self;
16361 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16362 value
16363 }
16364 }
16365
16366 unsafe impl fidl::encoding::TypeMarker for SrpServerResponseCounters {
16367 type Owned = Self;
16368
16369 #[inline(always)]
16370 fn inline_align(_context: fidl::encoding::Context) -> usize {
16371 8
16372 }
16373
16374 #[inline(always)]
16375 fn inline_size(_context: fidl::encoding::Context) -> usize {
16376 16
16377 }
16378 }
16379
16380 unsafe impl<D: fidl::encoding::ResourceDialect>
16381 fidl::encoding::Encode<SrpServerResponseCounters, D> for &SrpServerResponseCounters
16382 {
16383 unsafe fn encode(
16384 self,
16385 encoder: &mut fidl::encoding::Encoder<'_, D>,
16386 offset: usize,
16387 mut depth: fidl::encoding::Depth,
16388 ) -> fidl::Result<()> {
16389 encoder.debug_check_bounds::<SrpServerResponseCounters>(offset);
16390 let max_ordinal: u64 = self.max_ordinal_present();
16392 encoder.write_num(max_ordinal, offset);
16393 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16394 if max_ordinal == 0 {
16396 return Ok(());
16397 }
16398 depth.increment()?;
16399 let envelope_size = 8;
16400 let bytes_len = max_ordinal as usize * envelope_size;
16401 #[allow(unused_variables)]
16402 let offset = encoder.out_of_line_offset(bytes_len);
16403 let mut _prev_end_offset: usize = 0;
16404 if 1 > max_ordinal {
16405 return Ok(());
16406 }
16407
16408 let cur_offset: usize = (1 - 1) * envelope_size;
16411
16412 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16414
16415 fidl::encoding::encode_in_envelope_optional::<u32, D>(
16420 self.success_response
16421 .as_ref()
16422 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
16423 encoder,
16424 offset + cur_offset,
16425 depth,
16426 )?;
16427
16428 _prev_end_offset = cur_offset + envelope_size;
16429 if 2 > max_ordinal {
16430 return Ok(());
16431 }
16432
16433 let cur_offset: usize = (2 - 1) * envelope_size;
16436
16437 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16439
16440 fidl::encoding::encode_in_envelope_optional::<u32, D>(
16445 self.server_failure_response
16446 .as_ref()
16447 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
16448 encoder,
16449 offset + cur_offset,
16450 depth,
16451 )?;
16452
16453 _prev_end_offset = cur_offset + envelope_size;
16454 if 3 > max_ordinal {
16455 return Ok(());
16456 }
16457
16458 let cur_offset: usize = (3 - 1) * envelope_size;
16461
16462 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16464
16465 fidl::encoding::encode_in_envelope_optional::<u32, D>(
16470 self.format_error_response
16471 .as_ref()
16472 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
16473 encoder,
16474 offset + cur_offset,
16475 depth,
16476 )?;
16477
16478 _prev_end_offset = cur_offset + envelope_size;
16479 if 4 > max_ordinal {
16480 return Ok(());
16481 }
16482
16483 let cur_offset: usize = (4 - 1) * envelope_size;
16486
16487 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16489
16490 fidl::encoding::encode_in_envelope_optional::<u32, D>(
16495 self.name_exists_response
16496 .as_ref()
16497 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
16498 encoder,
16499 offset + cur_offset,
16500 depth,
16501 )?;
16502
16503 _prev_end_offset = cur_offset + envelope_size;
16504 if 5 > max_ordinal {
16505 return Ok(());
16506 }
16507
16508 let cur_offset: usize = (5 - 1) * envelope_size;
16511
16512 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16514
16515 fidl::encoding::encode_in_envelope_optional::<u32, D>(
16520 self.refused_response
16521 .as_ref()
16522 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
16523 encoder,
16524 offset + cur_offset,
16525 depth,
16526 )?;
16527
16528 _prev_end_offset = cur_offset + envelope_size;
16529 if 6 > max_ordinal {
16530 return Ok(());
16531 }
16532
16533 let cur_offset: usize = (6 - 1) * envelope_size;
16536
16537 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16539
16540 fidl::encoding::encode_in_envelope_optional::<u32, D>(
16545 self.other_response.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
16546 encoder,
16547 offset + cur_offset,
16548 depth,
16549 )?;
16550
16551 _prev_end_offset = cur_offset + envelope_size;
16552
16553 Ok(())
16554 }
16555 }
16556
16557 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
16558 for SrpServerResponseCounters
16559 {
16560 #[inline(always)]
16561 fn new_empty() -> Self {
16562 Self::default()
16563 }
16564
16565 unsafe fn decode(
16566 &mut self,
16567 decoder: &mut fidl::encoding::Decoder<'_, D>,
16568 offset: usize,
16569 mut depth: fidl::encoding::Depth,
16570 ) -> fidl::Result<()> {
16571 decoder.debug_check_bounds::<Self>(offset);
16572 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16573 None => return Err(fidl::Error::NotNullable),
16574 Some(len) => len,
16575 };
16576 if len == 0 {
16578 return Ok(());
16579 };
16580 depth.increment()?;
16581 let envelope_size = 8;
16582 let bytes_len = len * envelope_size;
16583 let offset = decoder.out_of_line_offset(bytes_len)?;
16584 let mut _next_ordinal_to_read = 0;
16586 let mut next_offset = offset;
16587 let end_offset = offset + bytes_len;
16588 _next_ordinal_to_read += 1;
16589 if next_offset >= end_offset {
16590 return Ok(());
16591 }
16592
16593 while _next_ordinal_to_read < 1 {
16595 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16596 _next_ordinal_to_read += 1;
16597 next_offset += envelope_size;
16598 }
16599
16600 let next_out_of_line = decoder.next_out_of_line();
16601 let handles_before = decoder.remaining_handles();
16602 if let Some((inlined, num_bytes, num_handles)) =
16603 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16604 {
16605 let member_inline_size =
16606 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16607 if inlined != (member_inline_size <= 4) {
16608 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16609 }
16610 let inner_offset;
16611 let mut inner_depth = depth.clone();
16612 if inlined {
16613 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16614 inner_offset = next_offset;
16615 } else {
16616 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16617 inner_depth.increment()?;
16618 }
16619 let val_ref = self.success_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
16620 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
16621 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16622 {
16623 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16624 }
16625 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16626 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16627 }
16628 }
16629
16630 next_offset += envelope_size;
16631 _next_ordinal_to_read += 1;
16632 if next_offset >= end_offset {
16633 return Ok(());
16634 }
16635
16636 while _next_ordinal_to_read < 2 {
16638 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16639 _next_ordinal_to_read += 1;
16640 next_offset += envelope_size;
16641 }
16642
16643 let next_out_of_line = decoder.next_out_of_line();
16644 let handles_before = decoder.remaining_handles();
16645 if let Some((inlined, num_bytes, num_handles)) =
16646 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16647 {
16648 let member_inline_size =
16649 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16650 if inlined != (member_inline_size <= 4) {
16651 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16652 }
16653 let inner_offset;
16654 let mut inner_depth = depth.clone();
16655 if inlined {
16656 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16657 inner_offset = next_offset;
16658 } else {
16659 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16660 inner_depth.increment()?;
16661 }
16662 let val_ref =
16663 self.server_failure_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
16664 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
16665 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16666 {
16667 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16668 }
16669 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16670 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16671 }
16672 }
16673
16674 next_offset += envelope_size;
16675 _next_ordinal_to_read += 1;
16676 if next_offset >= end_offset {
16677 return Ok(());
16678 }
16679
16680 while _next_ordinal_to_read < 3 {
16682 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16683 _next_ordinal_to_read += 1;
16684 next_offset += envelope_size;
16685 }
16686
16687 let next_out_of_line = decoder.next_out_of_line();
16688 let handles_before = decoder.remaining_handles();
16689 if let Some((inlined, num_bytes, num_handles)) =
16690 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16691 {
16692 let member_inline_size =
16693 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16694 if inlined != (member_inline_size <= 4) {
16695 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16696 }
16697 let inner_offset;
16698 let mut inner_depth = depth.clone();
16699 if inlined {
16700 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16701 inner_offset = next_offset;
16702 } else {
16703 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16704 inner_depth.increment()?;
16705 }
16706 let val_ref =
16707 self.format_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
16708 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
16709 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16710 {
16711 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16712 }
16713 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16714 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16715 }
16716 }
16717
16718 next_offset += envelope_size;
16719 _next_ordinal_to_read += 1;
16720 if next_offset >= end_offset {
16721 return Ok(());
16722 }
16723
16724 while _next_ordinal_to_read < 4 {
16726 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16727 _next_ordinal_to_read += 1;
16728 next_offset += envelope_size;
16729 }
16730
16731 let next_out_of_line = decoder.next_out_of_line();
16732 let handles_before = decoder.remaining_handles();
16733 if let Some((inlined, num_bytes, num_handles)) =
16734 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16735 {
16736 let member_inline_size =
16737 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16738 if inlined != (member_inline_size <= 4) {
16739 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16740 }
16741 let inner_offset;
16742 let mut inner_depth = depth.clone();
16743 if inlined {
16744 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16745 inner_offset = next_offset;
16746 } else {
16747 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16748 inner_depth.increment()?;
16749 }
16750 let val_ref =
16751 self.name_exists_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
16752 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
16753 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16754 {
16755 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16756 }
16757 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16758 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16759 }
16760 }
16761
16762 next_offset += envelope_size;
16763 _next_ordinal_to_read += 1;
16764 if next_offset >= end_offset {
16765 return Ok(());
16766 }
16767
16768 while _next_ordinal_to_read < 5 {
16770 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16771 _next_ordinal_to_read += 1;
16772 next_offset += envelope_size;
16773 }
16774
16775 let next_out_of_line = decoder.next_out_of_line();
16776 let handles_before = decoder.remaining_handles();
16777 if let Some((inlined, num_bytes, num_handles)) =
16778 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16779 {
16780 let member_inline_size =
16781 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16782 if inlined != (member_inline_size <= 4) {
16783 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16784 }
16785 let inner_offset;
16786 let mut inner_depth = depth.clone();
16787 if inlined {
16788 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16789 inner_offset = next_offset;
16790 } else {
16791 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16792 inner_depth.increment()?;
16793 }
16794 let val_ref = self.refused_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
16795 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
16796 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16797 {
16798 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16799 }
16800 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16801 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16802 }
16803 }
16804
16805 next_offset += envelope_size;
16806 _next_ordinal_to_read += 1;
16807 if next_offset >= end_offset {
16808 return Ok(());
16809 }
16810
16811 while _next_ordinal_to_read < 6 {
16813 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16814 _next_ordinal_to_read += 1;
16815 next_offset += envelope_size;
16816 }
16817
16818 let next_out_of_line = decoder.next_out_of_line();
16819 let handles_before = decoder.remaining_handles();
16820 if let Some((inlined, num_bytes, num_handles)) =
16821 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16822 {
16823 let member_inline_size =
16824 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16825 if inlined != (member_inline_size <= 4) {
16826 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16827 }
16828 let inner_offset;
16829 let mut inner_depth = depth.clone();
16830 if inlined {
16831 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16832 inner_offset = next_offset;
16833 } else {
16834 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16835 inner_depth.increment()?;
16836 }
16837 let val_ref = self.other_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
16838 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
16839 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16840 {
16841 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16842 }
16843 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16844 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16845 }
16846 }
16847
16848 next_offset += envelope_size;
16849
16850 while next_offset < end_offset {
16852 _next_ordinal_to_read += 1;
16853 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16854 next_offset += envelope_size;
16855 }
16856
16857 Ok(())
16858 }
16859 }
16860
16861 impl SrpServerService {
16862 #[inline(always)]
16863 fn max_ordinal_present(&self) -> u64 {
16864 if let Some(_) = self.host {
16865 return 11;
16866 }
16867 if let Some(_) = self.txt_data {
16868 return 10;
16869 }
16870 if let Some(_) = self.key_lease {
16871 return 9;
16872 }
16873 if let Some(_) = self.lease {
16874 return 8;
16875 }
16876 if let Some(_) = self.ttl {
16877 return 7;
16878 }
16879 if let Some(_) = self.weight {
16880 return 6;
16881 }
16882 if let Some(_) = self.priority {
16883 return 5;
16884 }
16885 if let Some(_) = self.port {
16886 return 4;
16887 }
16888 if let Some(_) = self.subtypes {
16889 return 3;
16890 }
16891 if let Some(_) = self.deleted {
16892 return 2;
16893 }
16894 if let Some(_) = self.instance_name {
16895 return 1;
16896 }
16897 0
16898 }
16899 }
16900
16901 impl fidl::encoding::ValueTypeMarker for SrpServerService {
16902 type Borrowed<'a> = &'a Self;
16903 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16904 value
16905 }
16906 }
16907
16908 unsafe impl fidl::encoding::TypeMarker for SrpServerService {
16909 type Owned = Self;
16910
16911 #[inline(always)]
16912 fn inline_align(_context: fidl::encoding::Context) -> usize {
16913 8
16914 }
16915
16916 #[inline(always)]
16917 fn inline_size(_context: fidl::encoding::Context) -> usize {
16918 16
16919 }
16920 }
16921
16922 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerService, D>
16923 for &SrpServerService
16924 {
16925 unsafe fn encode(
16926 self,
16927 encoder: &mut fidl::encoding::Encoder<'_, D>,
16928 offset: usize,
16929 mut depth: fidl::encoding::Depth,
16930 ) -> fidl::Result<()> {
16931 encoder.debug_check_bounds::<SrpServerService>(offset);
16932 let max_ordinal: u64 = self.max_ordinal_present();
16934 encoder.write_num(max_ordinal, offset);
16935 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16936 if max_ordinal == 0 {
16938 return Ok(());
16939 }
16940 depth.increment()?;
16941 let envelope_size = 8;
16942 let bytes_len = max_ordinal as usize * envelope_size;
16943 #[allow(unused_variables)]
16944 let offset = encoder.out_of_line_offset(bytes_len);
16945 let mut _prev_end_offset: usize = 0;
16946 if 1 > max_ordinal {
16947 return Ok(());
16948 }
16949
16950 let cur_offset: usize = (1 - 1) * envelope_size;
16953
16954 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16956
16957 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
16962 self.instance_name.as_ref().map(
16963 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
16964 ),
16965 encoder,
16966 offset + cur_offset,
16967 depth,
16968 )?;
16969
16970 _prev_end_offset = cur_offset + envelope_size;
16971 if 2 > max_ordinal {
16972 return Ok(());
16973 }
16974
16975 let cur_offset: usize = (2 - 1) * envelope_size;
16978
16979 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16981
16982 fidl::encoding::encode_in_envelope_optional::<bool, D>(
16987 self.deleted.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
16988 encoder,
16989 offset + cur_offset,
16990 depth,
16991 )?;
16992
16993 _prev_end_offset = cur_offset + envelope_size;
16994 if 3 > max_ordinal {
16995 return Ok(());
16996 }
16997
16998 let cur_offset: usize = (3 - 1) * envelope_size;
17001
17002 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17004
17005 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 6>, D>(
17010 self.subtypes.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 6> as fidl::encoding::ValueTypeMarker>::borrow),
17011 encoder, offset + cur_offset, depth
17012 )?;
17013
17014 _prev_end_offset = cur_offset + envelope_size;
17015 if 4 > max_ordinal {
17016 return Ok(());
17017 }
17018
17019 let cur_offset: usize = (4 - 1) * envelope_size;
17022
17023 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17025
17026 fidl::encoding::encode_in_envelope_optional::<u16, D>(
17031 self.port.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
17032 encoder,
17033 offset + cur_offset,
17034 depth,
17035 )?;
17036
17037 _prev_end_offset = cur_offset + envelope_size;
17038 if 5 > max_ordinal {
17039 return Ok(());
17040 }
17041
17042 let cur_offset: usize = (5 - 1) * envelope_size;
17045
17046 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17048
17049 fidl::encoding::encode_in_envelope_optional::<u16, D>(
17054 self.priority.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
17055 encoder,
17056 offset + cur_offset,
17057 depth,
17058 )?;
17059
17060 _prev_end_offset = cur_offset + envelope_size;
17061 if 6 > max_ordinal {
17062 return Ok(());
17063 }
17064
17065 let cur_offset: usize = (6 - 1) * envelope_size;
17068
17069 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17071
17072 fidl::encoding::encode_in_envelope_optional::<u16, D>(
17077 self.weight.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
17078 encoder,
17079 offset + cur_offset,
17080 depth,
17081 )?;
17082
17083 _prev_end_offset = cur_offset + envelope_size;
17084 if 7 > max_ordinal {
17085 return Ok(());
17086 }
17087
17088 let cur_offset: usize = (7 - 1) * envelope_size;
17091
17092 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17094
17095 fidl::encoding::encode_in_envelope_optional::<i64, D>(
17100 self.ttl.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
17101 encoder,
17102 offset + cur_offset,
17103 depth,
17104 )?;
17105
17106 _prev_end_offset = cur_offset + envelope_size;
17107 if 8 > max_ordinal {
17108 return Ok(());
17109 }
17110
17111 let cur_offset: usize = (8 - 1) * envelope_size;
17114
17115 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17117
17118 fidl::encoding::encode_in_envelope_optional::<i64, D>(
17123 self.lease.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
17124 encoder,
17125 offset + cur_offset,
17126 depth,
17127 )?;
17128
17129 _prev_end_offset = cur_offset + envelope_size;
17130 if 9 > max_ordinal {
17131 return Ok(());
17132 }
17133
17134 let cur_offset: usize = (9 - 1) * envelope_size;
17137
17138 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17140
17141 fidl::encoding::encode_in_envelope_optional::<i64, D>(
17146 self.key_lease.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
17147 encoder,
17148 offset + cur_offset,
17149 depth,
17150 )?;
17151
17152 _prev_end_offset = cur_offset + envelope_size;
17153 if 10 > max_ordinal {
17154 return Ok(());
17155 }
17156
17157 let cur_offset: usize = (10 - 1) * envelope_size;
17160
17161 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17163
17164 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<DnsTxtEntry>, D>(
17169 self.txt_data.as_ref().map(<fidl::encoding::UnboundedVector<DnsTxtEntry> as fidl::encoding::ValueTypeMarker>::borrow),
17170 encoder, offset + cur_offset, depth
17171 )?;
17172
17173 _prev_end_offset = cur_offset + envelope_size;
17174 if 11 > max_ordinal {
17175 return Ok(());
17176 }
17177
17178 let cur_offset: usize = (11 - 1) * envelope_size;
17181
17182 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17184
17185 fidl::encoding::encode_in_envelope_optional::<SrpServerHost, D>(
17190 self.host.as_ref().map(<SrpServerHost as fidl::encoding::ValueTypeMarker>::borrow),
17191 encoder,
17192 offset + cur_offset,
17193 depth,
17194 )?;
17195
17196 _prev_end_offset = cur_offset + envelope_size;
17197
17198 Ok(())
17199 }
17200 }
17201
17202 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerService {
17203 #[inline(always)]
17204 fn new_empty() -> Self {
17205 Self::default()
17206 }
17207
17208 unsafe fn decode(
17209 &mut self,
17210 decoder: &mut fidl::encoding::Decoder<'_, D>,
17211 offset: usize,
17212 mut depth: fidl::encoding::Depth,
17213 ) -> fidl::Result<()> {
17214 decoder.debug_check_bounds::<Self>(offset);
17215 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17216 None => return Err(fidl::Error::NotNullable),
17217 Some(len) => len,
17218 };
17219 if len == 0 {
17221 return Ok(());
17222 };
17223 depth.increment()?;
17224 let envelope_size = 8;
17225 let bytes_len = len * envelope_size;
17226 let offset = decoder.out_of_line_offset(bytes_len)?;
17227 let mut _next_ordinal_to_read = 0;
17229 let mut next_offset = offset;
17230 let end_offset = offset + bytes_len;
17231 _next_ordinal_to_read += 1;
17232 if next_offset >= end_offset {
17233 return Ok(());
17234 }
17235
17236 while _next_ordinal_to_read < 1 {
17238 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17239 _next_ordinal_to_read += 1;
17240 next_offset += envelope_size;
17241 }
17242
17243 let next_out_of_line = decoder.next_out_of_line();
17244 let handles_before = decoder.remaining_handles();
17245 if let Some((inlined, num_bytes, num_handles)) =
17246 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17247 {
17248 let member_inline_size =
17249 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
17250 decoder.context,
17251 );
17252 if inlined != (member_inline_size <= 4) {
17253 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17254 }
17255 let inner_offset;
17256 let mut inner_depth = depth.clone();
17257 if inlined {
17258 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17259 inner_offset = next_offset;
17260 } else {
17261 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17262 inner_depth.increment()?;
17263 }
17264 let val_ref = self
17265 .instance_name
17266 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
17267 fidl::decode!(
17268 fidl::encoding::BoundedString<255>,
17269 D,
17270 val_ref,
17271 decoder,
17272 inner_offset,
17273 inner_depth
17274 )?;
17275 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17276 {
17277 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17278 }
17279 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17280 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17281 }
17282 }
17283
17284 next_offset += envelope_size;
17285 _next_ordinal_to_read += 1;
17286 if next_offset >= end_offset {
17287 return Ok(());
17288 }
17289
17290 while _next_ordinal_to_read < 2 {
17292 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17293 _next_ordinal_to_read += 1;
17294 next_offset += envelope_size;
17295 }
17296
17297 let next_out_of_line = decoder.next_out_of_line();
17298 let handles_before = decoder.remaining_handles();
17299 if let Some((inlined, num_bytes, num_handles)) =
17300 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17301 {
17302 let member_inline_size =
17303 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17304 if inlined != (member_inline_size <= 4) {
17305 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17306 }
17307 let inner_offset;
17308 let mut inner_depth = depth.clone();
17309 if inlined {
17310 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17311 inner_offset = next_offset;
17312 } else {
17313 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17314 inner_depth.increment()?;
17315 }
17316 let val_ref = self.deleted.get_or_insert_with(|| fidl::new_empty!(bool, D));
17317 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
17318 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17319 {
17320 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17321 }
17322 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17323 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17324 }
17325 }
17326
17327 next_offset += envelope_size;
17328 _next_ordinal_to_read += 1;
17329 if next_offset >= end_offset {
17330 return Ok(());
17331 }
17332
17333 while _next_ordinal_to_read < 3 {
17335 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17336 _next_ordinal_to_read += 1;
17337 next_offset += envelope_size;
17338 }
17339
17340 let next_out_of_line = decoder.next_out_of_line();
17341 let handles_before = decoder.remaining_handles();
17342 if let Some((inlined, num_bytes, num_handles)) =
17343 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17344 {
17345 let member_inline_size = <fidl::encoding::Vector<
17346 fidl::encoding::BoundedString<63>,
17347 6,
17348 > as fidl::encoding::TypeMarker>::inline_size(
17349 decoder.context
17350 );
17351 if inlined != (member_inline_size <= 4) {
17352 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17353 }
17354 let inner_offset;
17355 let mut inner_depth = depth.clone();
17356 if inlined {
17357 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17358 inner_offset = next_offset;
17359 } else {
17360 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17361 inner_depth.increment()?;
17362 }
17363 let val_ref = self.subtypes.get_or_insert_with(|| {
17364 fidl::new_empty!(
17365 fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 6>,
17366 D
17367 )
17368 });
17369 fidl::decode!(
17370 fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 6>,
17371 D,
17372 val_ref,
17373 decoder,
17374 inner_offset,
17375 inner_depth
17376 )?;
17377 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17378 {
17379 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17380 }
17381 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17382 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17383 }
17384 }
17385
17386 next_offset += envelope_size;
17387 _next_ordinal_to_read += 1;
17388 if next_offset >= end_offset {
17389 return Ok(());
17390 }
17391
17392 while _next_ordinal_to_read < 4 {
17394 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17395 _next_ordinal_to_read += 1;
17396 next_offset += envelope_size;
17397 }
17398
17399 let next_out_of_line = decoder.next_out_of_line();
17400 let handles_before = decoder.remaining_handles();
17401 if let Some((inlined, num_bytes, num_handles)) =
17402 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17403 {
17404 let member_inline_size =
17405 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17406 if inlined != (member_inline_size <= 4) {
17407 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17408 }
17409 let inner_offset;
17410 let mut inner_depth = depth.clone();
17411 if inlined {
17412 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17413 inner_offset = next_offset;
17414 } else {
17415 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17416 inner_depth.increment()?;
17417 }
17418 let val_ref = self.port.get_or_insert_with(|| fidl::new_empty!(u16, D));
17419 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
17420 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17421 {
17422 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17423 }
17424 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17425 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17426 }
17427 }
17428
17429 next_offset += envelope_size;
17430 _next_ordinal_to_read += 1;
17431 if next_offset >= end_offset {
17432 return Ok(());
17433 }
17434
17435 while _next_ordinal_to_read < 5 {
17437 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17438 _next_ordinal_to_read += 1;
17439 next_offset += envelope_size;
17440 }
17441
17442 let next_out_of_line = decoder.next_out_of_line();
17443 let handles_before = decoder.remaining_handles();
17444 if let Some((inlined, num_bytes, num_handles)) =
17445 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17446 {
17447 let member_inline_size =
17448 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17449 if inlined != (member_inline_size <= 4) {
17450 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17451 }
17452 let inner_offset;
17453 let mut inner_depth = depth.clone();
17454 if inlined {
17455 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17456 inner_offset = next_offset;
17457 } else {
17458 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17459 inner_depth.increment()?;
17460 }
17461 let val_ref = self.priority.get_or_insert_with(|| fidl::new_empty!(u16, D));
17462 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
17463 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17464 {
17465 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17466 }
17467 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17468 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17469 }
17470 }
17471
17472 next_offset += envelope_size;
17473 _next_ordinal_to_read += 1;
17474 if next_offset >= end_offset {
17475 return Ok(());
17476 }
17477
17478 while _next_ordinal_to_read < 6 {
17480 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17481 _next_ordinal_to_read += 1;
17482 next_offset += envelope_size;
17483 }
17484
17485 let next_out_of_line = decoder.next_out_of_line();
17486 let handles_before = decoder.remaining_handles();
17487 if let Some((inlined, num_bytes, num_handles)) =
17488 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17489 {
17490 let member_inline_size =
17491 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17492 if inlined != (member_inline_size <= 4) {
17493 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17494 }
17495 let inner_offset;
17496 let mut inner_depth = depth.clone();
17497 if inlined {
17498 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17499 inner_offset = next_offset;
17500 } else {
17501 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17502 inner_depth.increment()?;
17503 }
17504 let val_ref = self.weight.get_or_insert_with(|| fidl::new_empty!(u16, D));
17505 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
17506 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17507 {
17508 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17509 }
17510 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17511 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17512 }
17513 }
17514
17515 next_offset += envelope_size;
17516 _next_ordinal_to_read += 1;
17517 if next_offset >= end_offset {
17518 return Ok(());
17519 }
17520
17521 while _next_ordinal_to_read < 7 {
17523 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17524 _next_ordinal_to_read += 1;
17525 next_offset += envelope_size;
17526 }
17527
17528 let next_out_of_line = decoder.next_out_of_line();
17529 let handles_before = decoder.remaining_handles();
17530 if let Some((inlined, num_bytes, num_handles)) =
17531 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17532 {
17533 let member_inline_size =
17534 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17535 if inlined != (member_inline_size <= 4) {
17536 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17537 }
17538 let inner_offset;
17539 let mut inner_depth = depth.clone();
17540 if inlined {
17541 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17542 inner_offset = next_offset;
17543 } else {
17544 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17545 inner_depth.increment()?;
17546 }
17547 let val_ref = self.ttl.get_or_insert_with(|| fidl::new_empty!(i64, D));
17548 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
17549 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17550 {
17551 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17552 }
17553 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17554 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17555 }
17556 }
17557
17558 next_offset += envelope_size;
17559 _next_ordinal_to_read += 1;
17560 if next_offset >= end_offset {
17561 return Ok(());
17562 }
17563
17564 while _next_ordinal_to_read < 8 {
17566 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17567 _next_ordinal_to_read += 1;
17568 next_offset += envelope_size;
17569 }
17570
17571 let next_out_of_line = decoder.next_out_of_line();
17572 let handles_before = decoder.remaining_handles();
17573 if let Some((inlined, num_bytes, num_handles)) =
17574 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17575 {
17576 let member_inline_size =
17577 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17578 if inlined != (member_inline_size <= 4) {
17579 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17580 }
17581 let inner_offset;
17582 let mut inner_depth = depth.clone();
17583 if inlined {
17584 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17585 inner_offset = next_offset;
17586 } else {
17587 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17588 inner_depth.increment()?;
17589 }
17590 let val_ref = self.lease.get_or_insert_with(|| fidl::new_empty!(i64, D));
17591 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
17592 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17593 {
17594 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17595 }
17596 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17597 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17598 }
17599 }
17600
17601 next_offset += envelope_size;
17602 _next_ordinal_to_read += 1;
17603 if next_offset >= end_offset {
17604 return Ok(());
17605 }
17606
17607 while _next_ordinal_to_read < 9 {
17609 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17610 _next_ordinal_to_read += 1;
17611 next_offset += envelope_size;
17612 }
17613
17614 let next_out_of_line = decoder.next_out_of_line();
17615 let handles_before = decoder.remaining_handles();
17616 if let Some((inlined, num_bytes, num_handles)) =
17617 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17618 {
17619 let member_inline_size =
17620 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17621 if inlined != (member_inline_size <= 4) {
17622 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17623 }
17624 let inner_offset;
17625 let mut inner_depth = depth.clone();
17626 if inlined {
17627 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17628 inner_offset = next_offset;
17629 } else {
17630 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17631 inner_depth.increment()?;
17632 }
17633 let val_ref = self.key_lease.get_or_insert_with(|| fidl::new_empty!(i64, D));
17634 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
17635 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17636 {
17637 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17638 }
17639 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17640 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17641 }
17642 }
17643
17644 next_offset += envelope_size;
17645 _next_ordinal_to_read += 1;
17646 if next_offset >= end_offset {
17647 return Ok(());
17648 }
17649
17650 while _next_ordinal_to_read < 10 {
17652 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17653 _next_ordinal_to_read += 1;
17654 next_offset += envelope_size;
17655 }
17656
17657 let next_out_of_line = decoder.next_out_of_line();
17658 let handles_before = decoder.remaining_handles();
17659 if let Some((inlined, num_bytes, num_handles)) =
17660 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17661 {
17662 let member_inline_size = <fidl::encoding::UnboundedVector<DnsTxtEntry> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17663 if inlined != (member_inline_size <= 4) {
17664 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17665 }
17666 let inner_offset;
17667 let mut inner_depth = depth.clone();
17668 if inlined {
17669 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17670 inner_offset = next_offset;
17671 } else {
17672 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17673 inner_depth.increment()?;
17674 }
17675 let val_ref = self.txt_data.get_or_insert_with(|| {
17676 fidl::new_empty!(fidl::encoding::UnboundedVector<DnsTxtEntry>, D)
17677 });
17678 fidl::decode!(
17679 fidl::encoding::UnboundedVector<DnsTxtEntry>,
17680 D,
17681 val_ref,
17682 decoder,
17683 inner_offset,
17684 inner_depth
17685 )?;
17686 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17687 {
17688 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17689 }
17690 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17691 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17692 }
17693 }
17694
17695 next_offset += envelope_size;
17696 _next_ordinal_to_read += 1;
17697 if next_offset >= end_offset {
17698 return Ok(());
17699 }
17700
17701 while _next_ordinal_to_read < 11 {
17703 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17704 _next_ordinal_to_read += 1;
17705 next_offset += envelope_size;
17706 }
17707
17708 let next_out_of_line = decoder.next_out_of_line();
17709 let handles_before = decoder.remaining_handles();
17710 if let Some((inlined, num_bytes, num_handles)) =
17711 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17712 {
17713 let member_inline_size =
17714 <SrpServerHost as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17715 if inlined != (member_inline_size <= 4) {
17716 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17717 }
17718 let inner_offset;
17719 let mut inner_depth = depth.clone();
17720 if inlined {
17721 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17722 inner_offset = next_offset;
17723 } else {
17724 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17725 inner_depth.increment()?;
17726 }
17727 let val_ref = self.host.get_or_insert_with(|| fidl::new_empty!(SrpServerHost, D));
17728 fidl::decode!(SrpServerHost, D, val_ref, decoder, inner_offset, inner_depth)?;
17729 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17730 {
17731 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17732 }
17733 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17734 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17735 }
17736 }
17737
17738 next_offset += envelope_size;
17739
17740 while next_offset < end_offset {
17742 _next_ordinal_to_read += 1;
17743 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17744 next_offset += envelope_size;
17745 }
17746
17747 Ok(())
17748 }
17749 }
17750
17751 impl Telemetry {
17752 #[inline(always)]
17753 fn max_ordinal_present(&self) -> u64 {
17754 if let Some(_) = self.active_dataset {
17755 return 30;
17756 }
17757 if let Some(_) = self.border_routing_routers {
17758 return 29;
17759 }
17760 if let Some(_) = self.border_routing_peers {
17761 return 28;
17762 }
17763 if let Some(_) = self.extended_pan_id {
17764 return 27;
17765 }
17766 if let Some(_) = self.multi_ail_detected {
17767 return 26;
17768 }
17769 if let Some(_) = self.border_agent_counters {
17770 return 25;
17771 }
17772 if let Some(_) = self.link_metrics_entries {
17773 return 24;
17774 }
17775 if let Some(_) = self.dhcp6pd_info {
17776 return 23;
17777 }
17778 if let Some(_) = self.upstream_dns_info {
17779 return 22;
17780 }
17781 if let Some(_) = self.trel_peers_info {
17782 return 21;
17783 }
17784 if let Some(_) = self.trel_counters {
17785 return 20;
17786 }
17787 if let Some(_) = self.nat64_info {
17788 return 19;
17789 }
17790 if let Some(_) = self.uptime {
17791 return 18;
17792 }
17793 if let Some(_) = self.leader_data {
17794 return 17;
17795 }
17796 if let Some(_) = self.dnssd_counters {
17797 return 16;
17798 }
17799 if let Some(_) = self.srp_server_info {
17800 return 15;
17801 }
17802 if let Some(_) = self.thread_border_routing_counters {
17803 return 14;
17804 }
17805 if let Some(_) = self.thread_stable_network_data {
17806 return 13;
17807 }
17808 if let Some(_) = self.thread_network_data {
17809 return 12;
17810 }
17811 if let Some(_) = self.thread_stable_network_data_version {
17812 return 11;
17813 }
17814 if let Some(_) = self.thread_network_data_version {
17815 return 10;
17816 }
17817 if let Some(_) = self.thread_rloc {
17818 return 9;
17819 }
17820 if let Some(_) = self.thread_router_id {
17821 return 8;
17822 }
17823 if let Some(_) = self.thread_link_mode {
17824 return 7;
17825 }
17826 if let Some(_) = self.rcp_version {
17827 return 6;
17828 }
17829 if let Some(_) = self.stack_version {
17830 return 5;
17831 }
17832 if let Some(_) = self.partition_id {
17833 return 4;
17834 }
17835 if let Some(_) = self.channel_index {
17836 return 3;
17837 }
17838 if let Some(_) = self.tx_power {
17839 return 2;
17840 }
17841 if let Some(_) = self.rssi {
17842 return 1;
17843 }
17844 0
17845 }
17846 }
17847
17848 impl fidl::encoding::ValueTypeMarker for Telemetry {
17849 type Borrowed<'a> = &'a Self;
17850 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17851 value
17852 }
17853 }
17854
17855 unsafe impl fidl::encoding::TypeMarker for Telemetry {
17856 type Owned = Self;
17857
17858 #[inline(always)]
17859 fn inline_align(_context: fidl::encoding::Context) -> usize {
17860 8
17861 }
17862
17863 #[inline(always)]
17864 fn inline_size(_context: fidl::encoding::Context) -> usize {
17865 16
17866 }
17867 }
17868
17869 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Telemetry, D>
17870 for &Telemetry
17871 {
17872 unsafe fn encode(
17873 self,
17874 encoder: &mut fidl::encoding::Encoder<'_, D>,
17875 offset: usize,
17876 mut depth: fidl::encoding::Depth,
17877 ) -> fidl::Result<()> {
17878 encoder.debug_check_bounds::<Telemetry>(offset);
17879 let max_ordinal: u64 = self.max_ordinal_present();
17881 encoder.write_num(max_ordinal, offset);
17882 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17883 if max_ordinal == 0 {
17885 return Ok(());
17886 }
17887 depth.increment()?;
17888 let envelope_size = 8;
17889 let bytes_len = max_ordinal as usize * envelope_size;
17890 #[allow(unused_variables)]
17891 let offset = encoder.out_of_line_offset(bytes_len);
17892 let mut _prev_end_offset: usize = 0;
17893 if 1 > max_ordinal {
17894 return Ok(());
17895 }
17896
17897 let cur_offset: usize = (1 - 1) * envelope_size;
17900
17901 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17903
17904 fidl::encoding::encode_in_envelope_optional::<i8, D>(
17909 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
17910 encoder,
17911 offset + cur_offset,
17912 depth,
17913 )?;
17914
17915 _prev_end_offset = cur_offset + envelope_size;
17916 if 2 > max_ordinal {
17917 return Ok(());
17918 }
17919
17920 let cur_offset: usize = (2 - 1) * envelope_size;
17923
17924 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17926
17927 fidl::encoding::encode_in_envelope_optional::<i8, D>(
17932 self.tx_power.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
17933 encoder,
17934 offset + cur_offset,
17935 depth,
17936 )?;
17937
17938 _prev_end_offset = cur_offset + envelope_size;
17939 if 3 > max_ordinal {
17940 return Ok(());
17941 }
17942
17943 let cur_offset: usize = (3 - 1) * envelope_size;
17946
17947 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17949
17950 fidl::encoding::encode_in_envelope_optional::<u16, D>(
17955 self.channel_index.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
17956 encoder,
17957 offset + cur_offset,
17958 depth,
17959 )?;
17960
17961 _prev_end_offset = cur_offset + envelope_size;
17962 if 4 > max_ordinal {
17963 return Ok(());
17964 }
17965
17966 let cur_offset: usize = (4 - 1) * envelope_size;
17969
17970 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17972
17973 fidl::encoding::encode_in_envelope_optional::<u32, D>(
17978 self.partition_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
17979 encoder,
17980 offset + cur_offset,
17981 depth,
17982 )?;
17983
17984 _prev_end_offset = cur_offset + envelope_size;
17985 if 5 > max_ordinal {
17986 return Ok(());
17987 }
17988
17989 let cur_offset: usize = (5 - 1) * envelope_size;
17992
17993 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17995
17996 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
18001 self.stack_version.as_ref().map(
18002 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
18003 ),
18004 encoder,
18005 offset + cur_offset,
18006 depth,
18007 )?;
18008
18009 _prev_end_offset = cur_offset + envelope_size;
18010 if 6 > max_ordinal {
18011 return Ok(());
18012 }
18013
18014 let cur_offset: usize = (6 - 1) * envelope_size;
18017
18018 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18020
18021 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
18026 self.rcp_version.as_ref().map(
18027 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
18028 ),
18029 encoder,
18030 offset + cur_offset,
18031 depth,
18032 )?;
18033
18034 _prev_end_offset = cur_offset + envelope_size;
18035 if 7 > max_ordinal {
18036 return Ok(());
18037 }
18038
18039 let cur_offset: usize = (7 - 1) * envelope_size;
18042
18043 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18045
18046 fidl::encoding::encode_in_envelope_optional::<u8, D>(
18051 self.thread_link_mode.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
18052 encoder,
18053 offset + cur_offset,
18054 depth,
18055 )?;
18056
18057 _prev_end_offset = cur_offset + envelope_size;
18058 if 8 > max_ordinal {
18059 return Ok(());
18060 }
18061
18062 let cur_offset: usize = (8 - 1) * envelope_size;
18065
18066 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18068
18069 fidl::encoding::encode_in_envelope_optional::<u8, D>(
18074 self.thread_router_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
18075 encoder,
18076 offset + cur_offset,
18077 depth,
18078 )?;
18079
18080 _prev_end_offset = cur_offset + envelope_size;
18081 if 9 > max_ordinal {
18082 return Ok(());
18083 }
18084
18085 let cur_offset: usize = (9 - 1) * envelope_size;
18088
18089 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18091
18092 fidl::encoding::encode_in_envelope_optional::<u16, D>(
18097 self.thread_rloc.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
18098 encoder,
18099 offset + cur_offset,
18100 depth,
18101 )?;
18102
18103 _prev_end_offset = cur_offset + envelope_size;
18104 if 10 > max_ordinal {
18105 return Ok(());
18106 }
18107
18108 let cur_offset: usize = (10 - 1) * envelope_size;
18111
18112 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18114
18115 fidl::encoding::encode_in_envelope_optional::<u8, D>(
18120 self.thread_network_data_version
18121 .as_ref()
18122 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
18123 encoder,
18124 offset + cur_offset,
18125 depth,
18126 )?;
18127
18128 _prev_end_offset = cur_offset + envelope_size;
18129 if 11 > max_ordinal {
18130 return Ok(());
18131 }
18132
18133 let cur_offset: usize = (11 - 1) * envelope_size;
18136
18137 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18139
18140 fidl::encoding::encode_in_envelope_optional::<u8, D>(
18145 self.thread_stable_network_data_version
18146 .as_ref()
18147 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
18148 encoder,
18149 offset + cur_offset,
18150 depth,
18151 )?;
18152
18153 _prev_end_offset = cur_offset + envelope_size;
18154 if 12 > max_ordinal {
18155 return Ok(());
18156 }
18157
18158 let cur_offset: usize = (12 - 1) * envelope_size;
18161
18162 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18164
18165 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 255>, D>(
18170 self.thread_network_data.as_ref().map(
18171 <fidl::encoding::Vector<u8, 255> as fidl::encoding::ValueTypeMarker>::borrow,
18172 ),
18173 encoder,
18174 offset + cur_offset,
18175 depth,
18176 )?;
18177
18178 _prev_end_offset = cur_offset + envelope_size;
18179 if 13 > max_ordinal {
18180 return Ok(());
18181 }
18182
18183 let cur_offset: usize = (13 - 1) * envelope_size;
18186
18187 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18189
18190 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 255>, D>(
18195 self.thread_stable_network_data.as_ref().map(
18196 <fidl::encoding::Vector<u8, 255> as fidl::encoding::ValueTypeMarker>::borrow,
18197 ),
18198 encoder,
18199 offset + cur_offset,
18200 depth,
18201 )?;
18202
18203 _prev_end_offset = cur_offset + envelope_size;
18204 if 14 > max_ordinal {
18205 return Ok(());
18206 }
18207
18208 let cur_offset: usize = (14 - 1) * envelope_size;
18211
18212 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18214
18215 fidl::encoding::encode_in_envelope_optional::<BorderRoutingCounters, D>(
18220 self.thread_border_routing_counters
18221 .as_ref()
18222 .map(<BorderRoutingCounters as fidl::encoding::ValueTypeMarker>::borrow),
18223 encoder,
18224 offset + cur_offset,
18225 depth,
18226 )?;
18227
18228 _prev_end_offset = cur_offset + envelope_size;
18229 if 15 > max_ordinal {
18230 return Ok(());
18231 }
18232
18233 let cur_offset: usize = (15 - 1) * envelope_size;
18236
18237 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18239
18240 fidl::encoding::encode_in_envelope_optional::<SrpServerInfo, D>(
18245 self.srp_server_info
18246 .as_ref()
18247 .map(<SrpServerInfo as fidl::encoding::ValueTypeMarker>::borrow),
18248 encoder,
18249 offset + cur_offset,
18250 depth,
18251 )?;
18252
18253 _prev_end_offset = cur_offset + envelope_size;
18254 if 16 > max_ordinal {
18255 return Ok(());
18256 }
18257
18258 let cur_offset: usize = (16 - 1) * envelope_size;
18261
18262 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18264
18265 fidl::encoding::encode_in_envelope_optional::<DnssdCounters, D>(
18270 self.dnssd_counters
18271 .as_ref()
18272 .map(<DnssdCounters as fidl::encoding::ValueTypeMarker>::borrow),
18273 encoder,
18274 offset + cur_offset,
18275 depth,
18276 )?;
18277
18278 _prev_end_offset = cur_offset + envelope_size;
18279 if 17 > max_ordinal {
18280 return Ok(());
18281 }
18282
18283 let cur_offset: usize = (17 - 1) * envelope_size;
18286
18287 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18289
18290 fidl::encoding::encode_in_envelope_optional::<LeaderData, D>(
18295 self.leader_data
18296 .as_ref()
18297 .map(<LeaderData as fidl::encoding::ValueTypeMarker>::borrow),
18298 encoder,
18299 offset + cur_offset,
18300 depth,
18301 )?;
18302
18303 _prev_end_offset = cur_offset + envelope_size;
18304 if 18 > max_ordinal {
18305 return Ok(());
18306 }
18307
18308 let cur_offset: usize = (18 - 1) * envelope_size;
18311
18312 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18314
18315 fidl::encoding::encode_in_envelope_optional::<i64, D>(
18320 self.uptime.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
18321 encoder,
18322 offset + cur_offset,
18323 depth,
18324 )?;
18325
18326 _prev_end_offset = cur_offset + envelope_size;
18327 if 19 > max_ordinal {
18328 return Ok(());
18329 }
18330
18331 let cur_offset: usize = (19 - 1) * envelope_size;
18334
18335 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18337
18338 fidl::encoding::encode_in_envelope_optional::<Nat64Info, D>(
18343 self.nat64_info
18344 .as_ref()
18345 .map(<Nat64Info as fidl::encoding::ValueTypeMarker>::borrow),
18346 encoder,
18347 offset + cur_offset,
18348 depth,
18349 )?;
18350
18351 _prev_end_offset = cur_offset + envelope_size;
18352 if 20 > max_ordinal {
18353 return Ok(());
18354 }
18355
18356 let cur_offset: usize = (20 - 1) * envelope_size;
18359
18360 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18362
18363 fidl::encoding::encode_in_envelope_optional::<TrelCounters, D>(
18368 self.trel_counters
18369 .as_ref()
18370 .map(<TrelCounters as fidl::encoding::ValueTypeMarker>::borrow),
18371 encoder,
18372 offset + cur_offset,
18373 depth,
18374 )?;
18375
18376 _prev_end_offset = cur_offset + envelope_size;
18377 if 21 > max_ordinal {
18378 return Ok(());
18379 }
18380
18381 let cur_offset: usize = (21 - 1) * envelope_size;
18384
18385 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18387
18388 fidl::encoding::encode_in_envelope_optional::<TrelPeersInfo, D>(
18393 self.trel_peers_info
18394 .as_ref()
18395 .map(<TrelPeersInfo as fidl::encoding::ValueTypeMarker>::borrow),
18396 encoder,
18397 offset + cur_offset,
18398 depth,
18399 )?;
18400
18401 _prev_end_offset = cur_offset + envelope_size;
18402 if 22 > max_ordinal {
18403 return Ok(());
18404 }
18405
18406 let cur_offset: usize = (22 - 1) * envelope_size;
18409
18410 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18412
18413 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsInfo, D>(
18418 self.upstream_dns_info
18419 .as_ref()
18420 .map(<UpstreamDnsInfo as fidl::encoding::ValueTypeMarker>::borrow),
18421 encoder,
18422 offset + cur_offset,
18423 depth,
18424 )?;
18425
18426 _prev_end_offset = cur_offset + envelope_size;
18427 if 23 > max_ordinal {
18428 return Ok(());
18429 }
18430
18431 let cur_offset: usize = (23 - 1) * envelope_size;
18434
18435 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18437
18438 fidl::encoding::encode_in_envelope_optional::<Dhcp6PdInfo, D>(
18443 self.dhcp6pd_info
18444 .as_ref()
18445 .map(<Dhcp6PdInfo as fidl::encoding::ValueTypeMarker>::borrow),
18446 encoder,
18447 offset + cur_offset,
18448 depth,
18449 )?;
18450
18451 _prev_end_offset = cur_offset + envelope_size;
18452 if 24 > max_ordinal {
18453 return Ok(());
18454 }
18455
18456 let cur_offset: usize = (24 - 1) * envelope_size;
18459
18460 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18462
18463 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<LinkMetricsEntry, 64>, D>(
18468 self.link_metrics_entries.as_ref().map(<fidl::encoding::Vector<LinkMetricsEntry, 64> as fidl::encoding::ValueTypeMarker>::borrow),
18469 encoder, offset + cur_offset, depth
18470 )?;
18471
18472 _prev_end_offset = cur_offset + envelope_size;
18473 if 25 > max_ordinal {
18474 return Ok(());
18475 }
18476
18477 let cur_offset: usize = (25 - 1) * envelope_size;
18480
18481 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18483
18484 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan_device__common::BorderAgentCounters, D>(
18489 self.border_agent_counters.as_ref().map(<fidl_fuchsia_lowpan_device__common::BorderAgentCounters as fidl::encoding::ValueTypeMarker>::borrow),
18490 encoder, offset + cur_offset, depth
18491 )?;
18492
18493 _prev_end_offset = cur_offset + envelope_size;
18494 if 26 > max_ordinal {
18495 return Ok(());
18496 }
18497
18498 let cur_offset: usize = (26 - 1) * envelope_size;
18501
18502 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18504
18505 fidl::encoding::encode_in_envelope_optional::<bool, D>(
18510 self.multi_ail_detected
18511 .as_ref()
18512 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
18513 encoder,
18514 offset + cur_offset,
18515 depth,
18516 )?;
18517
18518 _prev_end_offset = cur_offset + envelope_size;
18519 if 27 > max_ordinal {
18520 return Ok(());
18521 }
18522
18523 let cur_offset: usize = (27 - 1) * envelope_size;
18526
18527 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18529
18530 fidl::encoding::encode_in_envelope_optional::<u64, D>(
18535 self.extended_pan_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
18536 encoder,
18537 offset + cur_offset,
18538 depth,
18539 )?;
18540
18541 _prev_end_offset = cur_offset + envelope_size;
18542 if 28 > max_ordinal {
18543 return Ok(());
18544 }
18545
18546 let cur_offset: usize = (28 - 1) * envelope_size;
18549
18550 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18552
18553 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BorderRoutingPeer, 64>, D>(
18558 self.border_routing_peers.as_ref().map(<fidl::encoding::Vector<BorderRoutingPeer, 64> as fidl::encoding::ValueTypeMarker>::borrow),
18559 encoder, offset + cur_offset, depth
18560 )?;
18561
18562 _prev_end_offset = cur_offset + envelope_size;
18563 if 29 > max_ordinal {
18564 return Ok(());
18565 }
18566
18567 let cur_offset: usize = (29 - 1) * envelope_size;
18570
18571 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18573
18574 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BorderRoutingRouter, 64>, D>(
18579 self.border_routing_routers.as_ref().map(<fidl::encoding::Vector<BorderRoutingRouter, 64> as fidl::encoding::ValueTypeMarker>::borrow),
18580 encoder, offset + cur_offset, depth
18581 )?;
18582
18583 _prev_end_offset = cur_offset + envelope_size;
18584 if 30 > max_ordinal {
18585 return Ok(());
18586 }
18587
18588 let cur_offset: usize = (30 - 1) * envelope_size;
18591
18592 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18594
18595 fidl::encoding::encode_in_envelope_optional::<OperationalDataset, D>(
18600 self.active_dataset
18601 .as_ref()
18602 .map(<OperationalDataset as fidl::encoding::ValueTypeMarker>::borrow),
18603 encoder,
18604 offset + cur_offset,
18605 depth,
18606 )?;
18607
18608 _prev_end_offset = cur_offset + envelope_size;
18609
18610 Ok(())
18611 }
18612 }
18613
18614 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Telemetry {
18615 #[inline(always)]
18616 fn new_empty() -> Self {
18617 Self::default()
18618 }
18619
18620 unsafe fn decode(
18621 &mut self,
18622 decoder: &mut fidl::encoding::Decoder<'_, D>,
18623 offset: usize,
18624 mut depth: fidl::encoding::Depth,
18625 ) -> fidl::Result<()> {
18626 decoder.debug_check_bounds::<Self>(offset);
18627 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
18628 None => return Err(fidl::Error::NotNullable),
18629 Some(len) => len,
18630 };
18631 if len == 0 {
18633 return Ok(());
18634 };
18635 depth.increment()?;
18636 let envelope_size = 8;
18637 let bytes_len = len * envelope_size;
18638 let offset = decoder.out_of_line_offset(bytes_len)?;
18639 let mut _next_ordinal_to_read = 0;
18641 let mut next_offset = offset;
18642 let end_offset = offset + bytes_len;
18643 _next_ordinal_to_read += 1;
18644 if next_offset >= end_offset {
18645 return Ok(());
18646 }
18647
18648 while _next_ordinal_to_read < 1 {
18650 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18651 _next_ordinal_to_read += 1;
18652 next_offset += envelope_size;
18653 }
18654
18655 let next_out_of_line = decoder.next_out_of_line();
18656 let handles_before = decoder.remaining_handles();
18657 if let Some((inlined, num_bytes, num_handles)) =
18658 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18659 {
18660 let member_inline_size =
18661 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18662 if inlined != (member_inline_size <= 4) {
18663 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18664 }
18665 let inner_offset;
18666 let mut inner_depth = depth.clone();
18667 if inlined {
18668 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18669 inner_offset = next_offset;
18670 } else {
18671 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18672 inner_depth.increment()?;
18673 }
18674 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
18675 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
18676 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18677 {
18678 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18679 }
18680 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18681 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18682 }
18683 }
18684
18685 next_offset += envelope_size;
18686 _next_ordinal_to_read += 1;
18687 if next_offset >= end_offset {
18688 return Ok(());
18689 }
18690
18691 while _next_ordinal_to_read < 2 {
18693 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18694 _next_ordinal_to_read += 1;
18695 next_offset += envelope_size;
18696 }
18697
18698 let next_out_of_line = decoder.next_out_of_line();
18699 let handles_before = decoder.remaining_handles();
18700 if let Some((inlined, num_bytes, num_handles)) =
18701 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18702 {
18703 let member_inline_size =
18704 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18705 if inlined != (member_inline_size <= 4) {
18706 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18707 }
18708 let inner_offset;
18709 let mut inner_depth = depth.clone();
18710 if inlined {
18711 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18712 inner_offset = next_offset;
18713 } else {
18714 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18715 inner_depth.increment()?;
18716 }
18717 let val_ref = self.tx_power.get_or_insert_with(|| fidl::new_empty!(i8, D));
18718 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
18719 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18720 {
18721 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18722 }
18723 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18724 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18725 }
18726 }
18727
18728 next_offset += envelope_size;
18729 _next_ordinal_to_read += 1;
18730 if next_offset >= end_offset {
18731 return Ok(());
18732 }
18733
18734 while _next_ordinal_to_read < 3 {
18736 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18737 _next_ordinal_to_read += 1;
18738 next_offset += envelope_size;
18739 }
18740
18741 let next_out_of_line = decoder.next_out_of_line();
18742 let handles_before = decoder.remaining_handles();
18743 if let Some((inlined, num_bytes, num_handles)) =
18744 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18745 {
18746 let member_inline_size =
18747 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18748 if inlined != (member_inline_size <= 4) {
18749 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18750 }
18751 let inner_offset;
18752 let mut inner_depth = depth.clone();
18753 if inlined {
18754 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18755 inner_offset = next_offset;
18756 } else {
18757 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18758 inner_depth.increment()?;
18759 }
18760 let val_ref = self.channel_index.get_or_insert_with(|| fidl::new_empty!(u16, D));
18761 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
18762 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18763 {
18764 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18765 }
18766 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18767 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18768 }
18769 }
18770
18771 next_offset += envelope_size;
18772 _next_ordinal_to_read += 1;
18773 if next_offset >= end_offset {
18774 return Ok(());
18775 }
18776
18777 while _next_ordinal_to_read < 4 {
18779 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18780 _next_ordinal_to_read += 1;
18781 next_offset += envelope_size;
18782 }
18783
18784 let next_out_of_line = decoder.next_out_of_line();
18785 let handles_before = decoder.remaining_handles();
18786 if let Some((inlined, num_bytes, num_handles)) =
18787 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18788 {
18789 let member_inline_size =
18790 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18791 if inlined != (member_inline_size <= 4) {
18792 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18793 }
18794 let inner_offset;
18795 let mut inner_depth = depth.clone();
18796 if inlined {
18797 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18798 inner_offset = next_offset;
18799 } else {
18800 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18801 inner_depth.increment()?;
18802 }
18803 let val_ref = self.partition_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
18804 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
18805 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18806 {
18807 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18808 }
18809 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18810 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18811 }
18812 }
18813
18814 next_offset += envelope_size;
18815 _next_ordinal_to_read += 1;
18816 if next_offset >= end_offset {
18817 return Ok(());
18818 }
18819
18820 while _next_ordinal_to_read < 5 {
18822 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18823 _next_ordinal_to_read += 1;
18824 next_offset += envelope_size;
18825 }
18826
18827 let next_out_of_line = decoder.next_out_of_line();
18828 let handles_before = decoder.remaining_handles();
18829 if let Some((inlined, num_bytes, num_handles)) =
18830 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18831 {
18832 let member_inline_size =
18833 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
18834 decoder.context,
18835 );
18836 if inlined != (member_inline_size <= 4) {
18837 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18838 }
18839 let inner_offset;
18840 let mut inner_depth = depth.clone();
18841 if inlined {
18842 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18843 inner_offset = next_offset;
18844 } else {
18845 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18846 inner_depth.increment()?;
18847 }
18848 let val_ref = self
18849 .stack_version
18850 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
18851 fidl::decode!(
18852 fidl::encoding::BoundedString<256>,
18853 D,
18854 val_ref,
18855 decoder,
18856 inner_offset,
18857 inner_depth
18858 )?;
18859 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18860 {
18861 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18862 }
18863 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18864 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18865 }
18866 }
18867
18868 next_offset += envelope_size;
18869 _next_ordinal_to_read += 1;
18870 if next_offset >= end_offset {
18871 return Ok(());
18872 }
18873
18874 while _next_ordinal_to_read < 6 {
18876 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18877 _next_ordinal_to_read += 1;
18878 next_offset += envelope_size;
18879 }
18880
18881 let next_out_of_line = decoder.next_out_of_line();
18882 let handles_before = decoder.remaining_handles();
18883 if let Some((inlined, num_bytes, num_handles)) =
18884 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18885 {
18886 let member_inline_size =
18887 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
18888 decoder.context,
18889 );
18890 if inlined != (member_inline_size <= 4) {
18891 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18892 }
18893 let inner_offset;
18894 let mut inner_depth = depth.clone();
18895 if inlined {
18896 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18897 inner_offset = next_offset;
18898 } else {
18899 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18900 inner_depth.increment()?;
18901 }
18902 let val_ref = self
18903 .rcp_version
18904 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
18905 fidl::decode!(
18906 fidl::encoding::BoundedString<256>,
18907 D,
18908 val_ref,
18909 decoder,
18910 inner_offset,
18911 inner_depth
18912 )?;
18913 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18914 {
18915 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18916 }
18917 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18918 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18919 }
18920 }
18921
18922 next_offset += envelope_size;
18923 _next_ordinal_to_read += 1;
18924 if next_offset >= end_offset {
18925 return Ok(());
18926 }
18927
18928 while _next_ordinal_to_read < 7 {
18930 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18931 _next_ordinal_to_read += 1;
18932 next_offset += envelope_size;
18933 }
18934
18935 let next_out_of_line = decoder.next_out_of_line();
18936 let handles_before = decoder.remaining_handles();
18937 if let Some((inlined, num_bytes, num_handles)) =
18938 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18939 {
18940 let member_inline_size =
18941 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18942 if inlined != (member_inline_size <= 4) {
18943 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18944 }
18945 let inner_offset;
18946 let mut inner_depth = depth.clone();
18947 if inlined {
18948 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18949 inner_offset = next_offset;
18950 } else {
18951 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18952 inner_depth.increment()?;
18953 }
18954 let val_ref = self.thread_link_mode.get_or_insert_with(|| fidl::new_empty!(u8, D));
18955 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
18956 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18957 {
18958 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18959 }
18960 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18961 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18962 }
18963 }
18964
18965 next_offset += envelope_size;
18966 _next_ordinal_to_read += 1;
18967 if next_offset >= end_offset {
18968 return Ok(());
18969 }
18970
18971 while _next_ordinal_to_read < 8 {
18973 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18974 _next_ordinal_to_read += 1;
18975 next_offset += envelope_size;
18976 }
18977
18978 let next_out_of_line = decoder.next_out_of_line();
18979 let handles_before = decoder.remaining_handles();
18980 if let Some((inlined, num_bytes, num_handles)) =
18981 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18982 {
18983 let member_inline_size =
18984 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18985 if inlined != (member_inline_size <= 4) {
18986 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18987 }
18988 let inner_offset;
18989 let mut inner_depth = depth.clone();
18990 if inlined {
18991 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18992 inner_offset = next_offset;
18993 } else {
18994 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18995 inner_depth.increment()?;
18996 }
18997 let val_ref = self.thread_router_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
18998 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
18999 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19000 {
19001 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19002 }
19003 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19004 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19005 }
19006 }
19007
19008 next_offset += envelope_size;
19009 _next_ordinal_to_read += 1;
19010 if next_offset >= end_offset {
19011 return Ok(());
19012 }
19013
19014 while _next_ordinal_to_read < 9 {
19016 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19017 _next_ordinal_to_read += 1;
19018 next_offset += envelope_size;
19019 }
19020
19021 let next_out_of_line = decoder.next_out_of_line();
19022 let handles_before = decoder.remaining_handles();
19023 if let Some((inlined, num_bytes, num_handles)) =
19024 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19025 {
19026 let member_inline_size =
19027 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19028 if inlined != (member_inline_size <= 4) {
19029 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19030 }
19031 let inner_offset;
19032 let mut inner_depth = depth.clone();
19033 if inlined {
19034 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19035 inner_offset = next_offset;
19036 } else {
19037 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19038 inner_depth.increment()?;
19039 }
19040 let val_ref = self.thread_rloc.get_or_insert_with(|| fidl::new_empty!(u16, D));
19041 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
19042 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19043 {
19044 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19045 }
19046 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19047 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19048 }
19049 }
19050
19051 next_offset += envelope_size;
19052 _next_ordinal_to_read += 1;
19053 if next_offset >= end_offset {
19054 return Ok(());
19055 }
19056
19057 while _next_ordinal_to_read < 10 {
19059 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19060 _next_ordinal_to_read += 1;
19061 next_offset += envelope_size;
19062 }
19063
19064 let next_out_of_line = decoder.next_out_of_line();
19065 let handles_before = decoder.remaining_handles();
19066 if let Some((inlined, num_bytes, num_handles)) =
19067 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19068 {
19069 let member_inline_size =
19070 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19071 if inlined != (member_inline_size <= 4) {
19072 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19073 }
19074 let inner_offset;
19075 let mut inner_depth = depth.clone();
19076 if inlined {
19077 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19078 inner_offset = next_offset;
19079 } else {
19080 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19081 inner_depth.increment()?;
19082 }
19083 let val_ref =
19084 self.thread_network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
19085 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
19086 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19087 {
19088 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19089 }
19090 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19091 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19092 }
19093 }
19094
19095 next_offset += envelope_size;
19096 _next_ordinal_to_read += 1;
19097 if next_offset >= end_offset {
19098 return Ok(());
19099 }
19100
19101 while _next_ordinal_to_read < 11 {
19103 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19104 _next_ordinal_to_read += 1;
19105 next_offset += envelope_size;
19106 }
19107
19108 let next_out_of_line = decoder.next_out_of_line();
19109 let handles_before = decoder.remaining_handles();
19110 if let Some((inlined, num_bytes, num_handles)) =
19111 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19112 {
19113 let member_inline_size =
19114 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19115 if inlined != (member_inline_size <= 4) {
19116 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19117 }
19118 let inner_offset;
19119 let mut inner_depth = depth.clone();
19120 if inlined {
19121 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19122 inner_offset = next_offset;
19123 } else {
19124 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19125 inner_depth.increment()?;
19126 }
19127 let val_ref = self
19128 .thread_stable_network_data_version
19129 .get_or_insert_with(|| fidl::new_empty!(u8, D));
19130 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
19131 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19132 {
19133 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19134 }
19135 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19136 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19137 }
19138 }
19139
19140 next_offset += envelope_size;
19141 _next_ordinal_to_read += 1;
19142 if next_offset >= end_offset {
19143 return Ok(());
19144 }
19145
19146 while _next_ordinal_to_read < 12 {
19148 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19149 _next_ordinal_to_read += 1;
19150 next_offset += envelope_size;
19151 }
19152
19153 let next_out_of_line = decoder.next_out_of_line();
19154 let handles_before = decoder.remaining_handles();
19155 if let Some((inlined, num_bytes, num_handles)) =
19156 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19157 {
19158 let member_inline_size =
19159 <fidl::encoding::Vector<u8, 255> as fidl::encoding::TypeMarker>::inline_size(
19160 decoder.context,
19161 );
19162 if inlined != (member_inline_size <= 4) {
19163 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19164 }
19165 let inner_offset;
19166 let mut inner_depth = depth.clone();
19167 if inlined {
19168 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19169 inner_offset = next_offset;
19170 } else {
19171 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19172 inner_depth.increment()?;
19173 }
19174 let val_ref = self
19175 .thread_network_data
19176 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 255>, D));
19177 fidl::decode!(fidl::encoding::Vector<u8, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
19178 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19179 {
19180 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19181 }
19182 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19183 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19184 }
19185 }
19186
19187 next_offset += envelope_size;
19188 _next_ordinal_to_read += 1;
19189 if next_offset >= end_offset {
19190 return Ok(());
19191 }
19192
19193 while _next_ordinal_to_read < 13 {
19195 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19196 _next_ordinal_to_read += 1;
19197 next_offset += envelope_size;
19198 }
19199
19200 let next_out_of_line = decoder.next_out_of_line();
19201 let handles_before = decoder.remaining_handles();
19202 if let Some((inlined, num_bytes, num_handles)) =
19203 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19204 {
19205 let member_inline_size =
19206 <fidl::encoding::Vector<u8, 255> as fidl::encoding::TypeMarker>::inline_size(
19207 decoder.context,
19208 );
19209 if inlined != (member_inline_size <= 4) {
19210 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19211 }
19212 let inner_offset;
19213 let mut inner_depth = depth.clone();
19214 if inlined {
19215 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19216 inner_offset = next_offset;
19217 } else {
19218 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19219 inner_depth.increment()?;
19220 }
19221 let val_ref = self
19222 .thread_stable_network_data
19223 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 255>, D));
19224 fidl::decode!(fidl::encoding::Vector<u8, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
19225 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19226 {
19227 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19228 }
19229 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19230 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19231 }
19232 }
19233
19234 next_offset += envelope_size;
19235 _next_ordinal_to_read += 1;
19236 if next_offset >= end_offset {
19237 return Ok(());
19238 }
19239
19240 while _next_ordinal_to_read < 14 {
19242 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19243 _next_ordinal_to_read += 1;
19244 next_offset += envelope_size;
19245 }
19246
19247 let next_out_of_line = decoder.next_out_of_line();
19248 let handles_before = decoder.remaining_handles();
19249 if let Some((inlined, num_bytes, num_handles)) =
19250 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19251 {
19252 let member_inline_size =
19253 <BorderRoutingCounters as fidl::encoding::TypeMarker>::inline_size(
19254 decoder.context,
19255 );
19256 if inlined != (member_inline_size <= 4) {
19257 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19258 }
19259 let inner_offset;
19260 let mut inner_depth = depth.clone();
19261 if inlined {
19262 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19263 inner_offset = next_offset;
19264 } else {
19265 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19266 inner_depth.increment()?;
19267 }
19268 let val_ref = self
19269 .thread_border_routing_counters
19270 .get_or_insert_with(|| fidl::new_empty!(BorderRoutingCounters, D));
19271 fidl::decode!(
19272 BorderRoutingCounters,
19273 D,
19274 val_ref,
19275 decoder,
19276 inner_offset,
19277 inner_depth
19278 )?;
19279 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19280 {
19281 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19282 }
19283 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19284 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19285 }
19286 }
19287
19288 next_offset += envelope_size;
19289 _next_ordinal_to_read += 1;
19290 if next_offset >= end_offset {
19291 return Ok(());
19292 }
19293
19294 while _next_ordinal_to_read < 15 {
19296 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19297 _next_ordinal_to_read += 1;
19298 next_offset += envelope_size;
19299 }
19300
19301 let next_out_of_line = decoder.next_out_of_line();
19302 let handles_before = decoder.remaining_handles();
19303 if let Some((inlined, num_bytes, num_handles)) =
19304 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19305 {
19306 let member_inline_size =
19307 <SrpServerInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19308 if inlined != (member_inline_size <= 4) {
19309 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19310 }
19311 let inner_offset;
19312 let mut inner_depth = depth.clone();
19313 if inlined {
19314 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19315 inner_offset = next_offset;
19316 } else {
19317 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19318 inner_depth.increment()?;
19319 }
19320 let val_ref =
19321 self.srp_server_info.get_or_insert_with(|| fidl::new_empty!(SrpServerInfo, D));
19322 fidl::decode!(SrpServerInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
19323 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19324 {
19325 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19326 }
19327 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19328 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19329 }
19330 }
19331
19332 next_offset += envelope_size;
19333 _next_ordinal_to_read += 1;
19334 if next_offset >= end_offset {
19335 return Ok(());
19336 }
19337
19338 while _next_ordinal_to_read < 16 {
19340 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19341 _next_ordinal_to_read += 1;
19342 next_offset += envelope_size;
19343 }
19344
19345 let next_out_of_line = decoder.next_out_of_line();
19346 let handles_before = decoder.remaining_handles();
19347 if let Some((inlined, num_bytes, num_handles)) =
19348 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19349 {
19350 let member_inline_size =
19351 <DnssdCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19352 if inlined != (member_inline_size <= 4) {
19353 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19354 }
19355 let inner_offset;
19356 let mut inner_depth = depth.clone();
19357 if inlined {
19358 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19359 inner_offset = next_offset;
19360 } else {
19361 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19362 inner_depth.increment()?;
19363 }
19364 let val_ref =
19365 self.dnssd_counters.get_or_insert_with(|| fidl::new_empty!(DnssdCounters, D));
19366 fidl::decode!(DnssdCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
19367 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19368 {
19369 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19370 }
19371 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19372 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19373 }
19374 }
19375
19376 next_offset += envelope_size;
19377 _next_ordinal_to_read += 1;
19378 if next_offset >= end_offset {
19379 return Ok(());
19380 }
19381
19382 while _next_ordinal_to_read < 17 {
19384 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19385 _next_ordinal_to_read += 1;
19386 next_offset += envelope_size;
19387 }
19388
19389 let next_out_of_line = decoder.next_out_of_line();
19390 let handles_before = decoder.remaining_handles();
19391 if let Some((inlined, num_bytes, num_handles)) =
19392 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19393 {
19394 let member_inline_size =
19395 <LeaderData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19396 if inlined != (member_inline_size <= 4) {
19397 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19398 }
19399 let inner_offset;
19400 let mut inner_depth = depth.clone();
19401 if inlined {
19402 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19403 inner_offset = next_offset;
19404 } else {
19405 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19406 inner_depth.increment()?;
19407 }
19408 let val_ref =
19409 self.leader_data.get_or_insert_with(|| fidl::new_empty!(LeaderData, D));
19410 fidl::decode!(LeaderData, D, val_ref, decoder, inner_offset, inner_depth)?;
19411 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19412 {
19413 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19414 }
19415 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19416 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19417 }
19418 }
19419
19420 next_offset += envelope_size;
19421 _next_ordinal_to_read += 1;
19422 if next_offset >= end_offset {
19423 return Ok(());
19424 }
19425
19426 while _next_ordinal_to_read < 18 {
19428 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19429 _next_ordinal_to_read += 1;
19430 next_offset += envelope_size;
19431 }
19432
19433 let next_out_of_line = decoder.next_out_of_line();
19434 let handles_before = decoder.remaining_handles();
19435 if let Some((inlined, num_bytes, num_handles)) =
19436 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19437 {
19438 let member_inline_size =
19439 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19440 if inlined != (member_inline_size <= 4) {
19441 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19442 }
19443 let inner_offset;
19444 let mut inner_depth = depth.clone();
19445 if inlined {
19446 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19447 inner_offset = next_offset;
19448 } else {
19449 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19450 inner_depth.increment()?;
19451 }
19452 let val_ref = self.uptime.get_or_insert_with(|| fidl::new_empty!(i64, D));
19453 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
19454 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19455 {
19456 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19457 }
19458 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19459 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19460 }
19461 }
19462
19463 next_offset += envelope_size;
19464 _next_ordinal_to_read += 1;
19465 if next_offset >= end_offset {
19466 return Ok(());
19467 }
19468
19469 while _next_ordinal_to_read < 19 {
19471 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19472 _next_ordinal_to_read += 1;
19473 next_offset += envelope_size;
19474 }
19475
19476 let next_out_of_line = decoder.next_out_of_line();
19477 let handles_before = decoder.remaining_handles();
19478 if let Some((inlined, num_bytes, num_handles)) =
19479 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19480 {
19481 let member_inline_size =
19482 <Nat64Info as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19483 if inlined != (member_inline_size <= 4) {
19484 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19485 }
19486 let inner_offset;
19487 let mut inner_depth = depth.clone();
19488 if inlined {
19489 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19490 inner_offset = next_offset;
19491 } else {
19492 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19493 inner_depth.increment()?;
19494 }
19495 let val_ref = self.nat64_info.get_or_insert_with(|| fidl::new_empty!(Nat64Info, D));
19496 fidl::decode!(Nat64Info, 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 < 20 {
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 <TrelCounters 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 =
19539 self.trel_counters.get_or_insert_with(|| fidl::new_empty!(TrelCounters, D));
19540 fidl::decode!(TrelCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
19541 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19542 {
19543 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19544 }
19545 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19546 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19547 }
19548 }
19549
19550 next_offset += envelope_size;
19551 _next_ordinal_to_read += 1;
19552 if next_offset >= end_offset {
19553 return Ok(());
19554 }
19555
19556 while _next_ordinal_to_read < 21 {
19558 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19559 _next_ordinal_to_read += 1;
19560 next_offset += envelope_size;
19561 }
19562
19563 let next_out_of_line = decoder.next_out_of_line();
19564 let handles_before = decoder.remaining_handles();
19565 if let Some((inlined, num_bytes, num_handles)) =
19566 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19567 {
19568 let member_inline_size =
19569 <TrelPeersInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19570 if inlined != (member_inline_size <= 4) {
19571 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19572 }
19573 let inner_offset;
19574 let mut inner_depth = depth.clone();
19575 if inlined {
19576 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19577 inner_offset = next_offset;
19578 } else {
19579 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19580 inner_depth.increment()?;
19581 }
19582 let val_ref =
19583 self.trel_peers_info.get_or_insert_with(|| fidl::new_empty!(TrelPeersInfo, D));
19584 fidl::decode!(TrelPeersInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
19585 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19586 {
19587 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19588 }
19589 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19590 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19591 }
19592 }
19593
19594 next_offset += envelope_size;
19595 _next_ordinal_to_read += 1;
19596 if next_offset >= end_offset {
19597 return Ok(());
19598 }
19599
19600 while _next_ordinal_to_read < 22 {
19602 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19603 _next_ordinal_to_read += 1;
19604 next_offset += envelope_size;
19605 }
19606
19607 let next_out_of_line = decoder.next_out_of_line();
19608 let handles_before = decoder.remaining_handles();
19609 if let Some((inlined, num_bytes, num_handles)) =
19610 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19611 {
19612 let member_inline_size =
19613 <UpstreamDnsInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19614 if inlined != (member_inline_size <= 4) {
19615 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19616 }
19617 let inner_offset;
19618 let mut inner_depth = depth.clone();
19619 if inlined {
19620 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19621 inner_offset = next_offset;
19622 } else {
19623 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19624 inner_depth.increment()?;
19625 }
19626 let val_ref = self
19627 .upstream_dns_info
19628 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsInfo, D));
19629 fidl::decode!(UpstreamDnsInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
19630 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19631 {
19632 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19633 }
19634 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19635 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19636 }
19637 }
19638
19639 next_offset += envelope_size;
19640 _next_ordinal_to_read += 1;
19641 if next_offset >= end_offset {
19642 return Ok(());
19643 }
19644
19645 while _next_ordinal_to_read < 23 {
19647 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19648 _next_ordinal_to_read += 1;
19649 next_offset += envelope_size;
19650 }
19651
19652 let next_out_of_line = decoder.next_out_of_line();
19653 let handles_before = decoder.remaining_handles();
19654 if let Some((inlined, num_bytes, num_handles)) =
19655 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19656 {
19657 let member_inline_size =
19658 <Dhcp6PdInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19659 if inlined != (member_inline_size <= 4) {
19660 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19661 }
19662 let inner_offset;
19663 let mut inner_depth = depth.clone();
19664 if inlined {
19665 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19666 inner_offset = next_offset;
19667 } else {
19668 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19669 inner_depth.increment()?;
19670 }
19671 let val_ref =
19672 self.dhcp6pd_info.get_or_insert_with(|| fidl::new_empty!(Dhcp6PdInfo, D));
19673 fidl::decode!(Dhcp6PdInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
19674 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19675 {
19676 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19677 }
19678 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19679 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19680 }
19681 }
19682
19683 next_offset += envelope_size;
19684 _next_ordinal_to_read += 1;
19685 if next_offset >= end_offset {
19686 return Ok(());
19687 }
19688
19689 while _next_ordinal_to_read < 24 {
19691 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19692 _next_ordinal_to_read += 1;
19693 next_offset += envelope_size;
19694 }
19695
19696 let next_out_of_line = decoder.next_out_of_line();
19697 let handles_before = decoder.remaining_handles();
19698 if let Some((inlined, num_bytes, num_handles)) =
19699 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19700 {
19701 let member_inline_size = <fidl::encoding::Vector<LinkMetricsEntry, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19702 if inlined != (member_inline_size <= 4) {
19703 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19704 }
19705 let inner_offset;
19706 let mut inner_depth = depth.clone();
19707 if inlined {
19708 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19709 inner_offset = next_offset;
19710 } else {
19711 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19712 inner_depth.increment()?;
19713 }
19714 let val_ref = self.link_metrics_entries.get_or_insert_with(
19715 || fidl::new_empty!(fidl::encoding::Vector<LinkMetricsEntry, 64>, D),
19716 );
19717 fidl::decode!(fidl::encoding::Vector<LinkMetricsEntry, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
19718 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19719 {
19720 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19721 }
19722 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19723 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19724 }
19725 }
19726
19727 next_offset += envelope_size;
19728 _next_ordinal_to_read += 1;
19729 if next_offset >= end_offset {
19730 return Ok(());
19731 }
19732
19733 while _next_ordinal_to_read < 25 {
19735 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19736 _next_ordinal_to_read += 1;
19737 next_offset += envelope_size;
19738 }
19739
19740 let next_out_of_line = decoder.next_out_of_line();
19741 let handles_before = decoder.remaining_handles();
19742 if let Some((inlined, num_bytes, num_handles)) =
19743 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19744 {
19745 let member_inline_size = <fidl_fuchsia_lowpan_device__common::BorderAgentCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19746 if inlined != (member_inline_size <= 4) {
19747 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19748 }
19749 let inner_offset;
19750 let mut inner_depth = depth.clone();
19751 if inlined {
19752 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19753 inner_offset = next_offset;
19754 } else {
19755 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19756 inner_depth.increment()?;
19757 }
19758 let val_ref = self.border_agent_counters.get_or_insert_with(|| {
19759 fidl::new_empty!(fidl_fuchsia_lowpan_device__common::BorderAgentCounters, D)
19760 });
19761 fidl::decode!(
19762 fidl_fuchsia_lowpan_device__common::BorderAgentCounters,
19763 D,
19764 val_ref,
19765 decoder,
19766 inner_offset,
19767 inner_depth
19768 )?;
19769 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19770 {
19771 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19772 }
19773 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19774 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19775 }
19776 }
19777
19778 next_offset += envelope_size;
19779 _next_ordinal_to_read += 1;
19780 if next_offset >= end_offset {
19781 return Ok(());
19782 }
19783
19784 while _next_ordinal_to_read < 26 {
19786 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19787 _next_ordinal_to_read += 1;
19788 next_offset += envelope_size;
19789 }
19790
19791 let next_out_of_line = decoder.next_out_of_line();
19792 let handles_before = decoder.remaining_handles();
19793 if let Some((inlined, num_bytes, num_handles)) =
19794 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19795 {
19796 let member_inline_size =
19797 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19798 if inlined != (member_inline_size <= 4) {
19799 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19800 }
19801 let inner_offset;
19802 let mut inner_depth = depth.clone();
19803 if inlined {
19804 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19805 inner_offset = next_offset;
19806 } else {
19807 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19808 inner_depth.increment()?;
19809 }
19810 let val_ref =
19811 self.multi_ail_detected.get_or_insert_with(|| fidl::new_empty!(bool, D));
19812 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
19813 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19814 {
19815 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19816 }
19817 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19818 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19819 }
19820 }
19821
19822 next_offset += envelope_size;
19823 _next_ordinal_to_read += 1;
19824 if next_offset >= end_offset {
19825 return Ok(());
19826 }
19827
19828 while _next_ordinal_to_read < 27 {
19830 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19831 _next_ordinal_to_read += 1;
19832 next_offset += envelope_size;
19833 }
19834
19835 let next_out_of_line = decoder.next_out_of_line();
19836 let handles_before = decoder.remaining_handles();
19837 if let Some((inlined, num_bytes, num_handles)) =
19838 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19839 {
19840 let member_inline_size =
19841 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19842 if inlined != (member_inline_size <= 4) {
19843 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19844 }
19845 let inner_offset;
19846 let mut inner_depth = depth.clone();
19847 if inlined {
19848 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19849 inner_offset = next_offset;
19850 } else {
19851 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19852 inner_depth.increment()?;
19853 }
19854 let val_ref = self.extended_pan_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
19855 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
19856 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19857 {
19858 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19859 }
19860 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19861 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19862 }
19863 }
19864
19865 next_offset += envelope_size;
19866 _next_ordinal_to_read += 1;
19867 if next_offset >= end_offset {
19868 return Ok(());
19869 }
19870
19871 while _next_ordinal_to_read < 28 {
19873 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19874 _next_ordinal_to_read += 1;
19875 next_offset += envelope_size;
19876 }
19877
19878 let next_out_of_line = decoder.next_out_of_line();
19879 let handles_before = decoder.remaining_handles();
19880 if let Some((inlined, num_bytes, num_handles)) =
19881 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19882 {
19883 let member_inline_size = <fidl::encoding::Vector<BorderRoutingPeer, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19884 if inlined != (member_inline_size <= 4) {
19885 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19886 }
19887 let inner_offset;
19888 let mut inner_depth = depth.clone();
19889 if inlined {
19890 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19891 inner_offset = next_offset;
19892 } else {
19893 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19894 inner_depth.increment()?;
19895 }
19896 let val_ref = self.border_routing_peers.get_or_insert_with(
19897 || fidl::new_empty!(fidl::encoding::Vector<BorderRoutingPeer, 64>, D),
19898 );
19899 fidl::decode!(fidl::encoding::Vector<BorderRoutingPeer, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
19900 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19901 {
19902 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19903 }
19904 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19905 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19906 }
19907 }
19908
19909 next_offset += envelope_size;
19910 _next_ordinal_to_read += 1;
19911 if next_offset >= end_offset {
19912 return Ok(());
19913 }
19914
19915 while _next_ordinal_to_read < 29 {
19917 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19918 _next_ordinal_to_read += 1;
19919 next_offset += envelope_size;
19920 }
19921
19922 let next_out_of_line = decoder.next_out_of_line();
19923 let handles_before = decoder.remaining_handles();
19924 if let Some((inlined, num_bytes, num_handles)) =
19925 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19926 {
19927 let member_inline_size = <fidl::encoding::Vector<BorderRoutingRouter, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19928 if inlined != (member_inline_size <= 4) {
19929 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19930 }
19931 let inner_offset;
19932 let mut inner_depth = depth.clone();
19933 if inlined {
19934 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19935 inner_offset = next_offset;
19936 } else {
19937 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19938 inner_depth.increment()?;
19939 }
19940 let val_ref = self.border_routing_routers.get_or_insert_with(
19941 || fidl::new_empty!(fidl::encoding::Vector<BorderRoutingRouter, 64>, D),
19942 );
19943 fidl::decode!(fidl::encoding::Vector<BorderRoutingRouter, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
19944 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19945 {
19946 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19947 }
19948 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19949 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19950 }
19951 }
19952
19953 next_offset += envelope_size;
19954 _next_ordinal_to_read += 1;
19955 if next_offset >= end_offset {
19956 return Ok(());
19957 }
19958
19959 while _next_ordinal_to_read < 30 {
19961 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19962 _next_ordinal_to_read += 1;
19963 next_offset += envelope_size;
19964 }
19965
19966 let next_out_of_line = decoder.next_out_of_line();
19967 let handles_before = decoder.remaining_handles();
19968 if let Some((inlined, num_bytes, num_handles)) =
19969 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19970 {
19971 let member_inline_size =
19972 <OperationalDataset as fidl::encoding::TypeMarker>::inline_size(
19973 decoder.context,
19974 );
19975 if inlined != (member_inline_size <= 4) {
19976 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19977 }
19978 let inner_offset;
19979 let mut inner_depth = depth.clone();
19980 if inlined {
19981 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19982 inner_offset = next_offset;
19983 } else {
19984 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19985 inner_depth.increment()?;
19986 }
19987 let val_ref = self
19988 .active_dataset
19989 .get_or_insert_with(|| fidl::new_empty!(OperationalDataset, D));
19990 fidl::decode!(OperationalDataset, D, val_ref, decoder, inner_offset, inner_depth)?;
19991 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19992 {
19993 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19994 }
19995 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19996 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19997 }
19998 }
19999
20000 next_offset += envelope_size;
20001
20002 while next_offset < end_offset {
20004 _next_ordinal_to_read += 1;
20005 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20006 next_offset += envelope_size;
20007 }
20008
20009 Ok(())
20010 }
20011 }
20012
20013 impl TrelCounters {
20014 #[inline(always)]
20015 fn max_ordinal_present(&self) -> u64 {
20016 if let Some(_) = self.tx_packets {
20017 return 5;
20018 }
20019 if let Some(_) = self.tx_failure {
20020 return 4;
20021 }
20022 if let Some(_) = self.tx_bytes {
20023 return 3;
20024 }
20025 if let Some(_) = self.rx_packets {
20026 return 2;
20027 }
20028 if let Some(_) = self.rx_bytes {
20029 return 1;
20030 }
20031 0
20032 }
20033 }
20034
20035 impl fidl::encoding::ValueTypeMarker for TrelCounters {
20036 type Borrowed<'a> = &'a Self;
20037 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
20038 value
20039 }
20040 }
20041
20042 unsafe impl fidl::encoding::TypeMarker for TrelCounters {
20043 type Owned = Self;
20044
20045 #[inline(always)]
20046 fn inline_align(_context: fidl::encoding::Context) -> usize {
20047 8
20048 }
20049
20050 #[inline(always)]
20051 fn inline_size(_context: fidl::encoding::Context) -> usize {
20052 16
20053 }
20054 }
20055
20056 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TrelCounters, D>
20057 for &TrelCounters
20058 {
20059 unsafe fn encode(
20060 self,
20061 encoder: &mut fidl::encoding::Encoder<'_, D>,
20062 offset: usize,
20063 mut depth: fidl::encoding::Depth,
20064 ) -> fidl::Result<()> {
20065 encoder.debug_check_bounds::<TrelCounters>(offset);
20066 let max_ordinal: u64 = self.max_ordinal_present();
20068 encoder.write_num(max_ordinal, offset);
20069 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
20070 if max_ordinal == 0 {
20072 return Ok(());
20073 }
20074 depth.increment()?;
20075 let envelope_size = 8;
20076 let bytes_len = max_ordinal as usize * envelope_size;
20077 #[allow(unused_variables)]
20078 let offset = encoder.out_of_line_offset(bytes_len);
20079 let mut _prev_end_offset: usize = 0;
20080 if 1 > max_ordinal {
20081 return Ok(());
20082 }
20083
20084 let cur_offset: usize = (1 - 1) * envelope_size;
20087
20088 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20090
20091 fidl::encoding::encode_in_envelope_optional::<u64, D>(
20096 self.rx_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
20097 encoder,
20098 offset + cur_offset,
20099 depth,
20100 )?;
20101
20102 _prev_end_offset = cur_offset + envelope_size;
20103 if 2 > max_ordinal {
20104 return Ok(());
20105 }
20106
20107 let cur_offset: usize = (2 - 1) * envelope_size;
20110
20111 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20113
20114 fidl::encoding::encode_in_envelope_optional::<u64, D>(
20119 self.rx_packets.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
20120 encoder,
20121 offset + cur_offset,
20122 depth,
20123 )?;
20124
20125 _prev_end_offset = cur_offset + envelope_size;
20126 if 3 > max_ordinal {
20127 return Ok(());
20128 }
20129
20130 let cur_offset: usize = (3 - 1) * envelope_size;
20133
20134 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20136
20137 fidl::encoding::encode_in_envelope_optional::<u64, D>(
20142 self.tx_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
20143 encoder,
20144 offset + cur_offset,
20145 depth,
20146 )?;
20147
20148 _prev_end_offset = cur_offset + envelope_size;
20149 if 4 > max_ordinal {
20150 return Ok(());
20151 }
20152
20153 let cur_offset: usize = (4 - 1) * envelope_size;
20156
20157 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20159
20160 fidl::encoding::encode_in_envelope_optional::<u64, D>(
20165 self.tx_failure.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
20166 encoder,
20167 offset + cur_offset,
20168 depth,
20169 )?;
20170
20171 _prev_end_offset = cur_offset + envelope_size;
20172 if 5 > max_ordinal {
20173 return Ok(());
20174 }
20175
20176 let cur_offset: usize = (5 - 1) * envelope_size;
20179
20180 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20182
20183 fidl::encoding::encode_in_envelope_optional::<u64, D>(
20188 self.tx_packets.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
20189 encoder,
20190 offset + cur_offset,
20191 depth,
20192 )?;
20193
20194 _prev_end_offset = cur_offset + envelope_size;
20195
20196 Ok(())
20197 }
20198 }
20199
20200 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TrelCounters {
20201 #[inline(always)]
20202 fn new_empty() -> Self {
20203 Self::default()
20204 }
20205
20206 unsafe fn decode(
20207 &mut self,
20208 decoder: &mut fidl::encoding::Decoder<'_, D>,
20209 offset: usize,
20210 mut depth: fidl::encoding::Depth,
20211 ) -> fidl::Result<()> {
20212 decoder.debug_check_bounds::<Self>(offset);
20213 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
20214 None => return Err(fidl::Error::NotNullable),
20215 Some(len) => len,
20216 };
20217 if len == 0 {
20219 return Ok(());
20220 };
20221 depth.increment()?;
20222 let envelope_size = 8;
20223 let bytes_len = len * envelope_size;
20224 let offset = decoder.out_of_line_offset(bytes_len)?;
20225 let mut _next_ordinal_to_read = 0;
20227 let mut next_offset = offset;
20228 let end_offset = offset + bytes_len;
20229 _next_ordinal_to_read += 1;
20230 if next_offset >= end_offset {
20231 return Ok(());
20232 }
20233
20234 while _next_ordinal_to_read < 1 {
20236 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20237 _next_ordinal_to_read += 1;
20238 next_offset += envelope_size;
20239 }
20240
20241 let next_out_of_line = decoder.next_out_of_line();
20242 let handles_before = decoder.remaining_handles();
20243 if let Some((inlined, num_bytes, num_handles)) =
20244 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20245 {
20246 let member_inline_size =
20247 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20248 if inlined != (member_inline_size <= 4) {
20249 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20250 }
20251 let inner_offset;
20252 let mut inner_depth = depth.clone();
20253 if inlined {
20254 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20255 inner_offset = next_offset;
20256 } else {
20257 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20258 inner_depth.increment()?;
20259 }
20260 let val_ref = self.rx_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
20261 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
20262 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20263 {
20264 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20265 }
20266 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20267 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20268 }
20269 }
20270
20271 next_offset += envelope_size;
20272 _next_ordinal_to_read += 1;
20273 if next_offset >= end_offset {
20274 return Ok(());
20275 }
20276
20277 while _next_ordinal_to_read < 2 {
20279 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20280 _next_ordinal_to_read += 1;
20281 next_offset += envelope_size;
20282 }
20283
20284 let next_out_of_line = decoder.next_out_of_line();
20285 let handles_before = decoder.remaining_handles();
20286 if let Some((inlined, num_bytes, num_handles)) =
20287 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20288 {
20289 let member_inline_size =
20290 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20291 if inlined != (member_inline_size <= 4) {
20292 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20293 }
20294 let inner_offset;
20295 let mut inner_depth = depth.clone();
20296 if inlined {
20297 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20298 inner_offset = next_offset;
20299 } else {
20300 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20301 inner_depth.increment()?;
20302 }
20303 let val_ref = self.rx_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
20304 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
20305 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20306 {
20307 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20308 }
20309 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20310 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20311 }
20312 }
20313
20314 next_offset += envelope_size;
20315 _next_ordinal_to_read += 1;
20316 if next_offset >= end_offset {
20317 return Ok(());
20318 }
20319
20320 while _next_ordinal_to_read < 3 {
20322 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20323 _next_ordinal_to_read += 1;
20324 next_offset += envelope_size;
20325 }
20326
20327 let next_out_of_line = decoder.next_out_of_line();
20328 let handles_before = decoder.remaining_handles();
20329 if let Some((inlined, num_bytes, num_handles)) =
20330 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20331 {
20332 let member_inline_size =
20333 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20334 if inlined != (member_inline_size <= 4) {
20335 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20336 }
20337 let inner_offset;
20338 let mut inner_depth = depth.clone();
20339 if inlined {
20340 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20341 inner_offset = next_offset;
20342 } else {
20343 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20344 inner_depth.increment()?;
20345 }
20346 let val_ref = self.tx_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
20347 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
20348 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20349 {
20350 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20351 }
20352 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20353 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20354 }
20355 }
20356
20357 next_offset += envelope_size;
20358 _next_ordinal_to_read += 1;
20359 if next_offset >= end_offset {
20360 return Ok(());
20361 }
20362
20363 while _next_ordinal_to_read < 4 {
20365 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20366 _next_ordinal_to_read += 1;
20367 next_offset += envelope_size;
20368 }
20369
20370 let next_out_of_line = decoder.next_out_of_line();
20371 let handles_before = decoder.remaining_handles();
20372 if let Some((inlined, num_bytes, num_handles)) =
20373 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20374 {
20375 let member_inline_size =
20376 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20377 if inlined != (member_inline_size <= 4) {
20378 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20379 }
20380 let inner_offset;
20381 let mut inner_depth = depth.clone();
20382 if inlined {
20383 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20384 inner_offset = next_offset;
20385 } else {
20386 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20387 inner_depth.increment()?;
20388 }
20389 let val_ref = self.tx_failure.get_or_insert_with(|| fidl::new_empty!(u64, D));
20390 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
20391 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20392 {
20393 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20394 }
20395 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20396 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20397 }
20398 }
20399
20400 next_offset += envelope_size;
20401 _next_ordinal_to_read += 1;
20402 if next_offset >= end_offset {
20403 return Ok(());
20404 }
20405
20406 while _next_ordinal_to_read < 5 {
20408 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20409 _next_ordinal_to_read += 1;
20410 next_offset += envelope_size;
20411 }
20412
20413 let next_out_of_line = decoder.next_out_of_line();
20414 let handles_before = decoder.remaining_handles();
20415 if let Some((inlined, num_bytes, num_handles)) =
20416 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20417 {
20418 let member_inline_size =
20419 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20420 if inlined != (member_inline_size <= 4) {
20421 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20422 }
20423 let inner_offset;
20424 let mut inner_depth = depth.clone();
20425 if inlined {
20426 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20427 inner_offset = next_offset;
20428 } else {
20429 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20430 inner_depth.increment()?;
20431 }
20432 let val_ref = self.tx_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
20433 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
20434 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20435 {
20436 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20437 }
20438 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20439 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20440 }
20441 }
20442
20443 next_offset += envelope_size;
20444
20445 while next_offset < end_offset {
20447 _next_ordinal_to_read += 1;
20448 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20449 next_offset += envelope_size;
20450 }
20451
20452 Ok(())
20453 }
20454 }
20455
20456 impl TrelPeersInfo {
20457 #[inline(always)]
20458 fn max_ordinal_present(&self) -> u64 {
20459 if let Some(_) = self.num_trel_peers {
20460 return 1;
20461 }
20462 0
20463 }
20464 }
20465
20466 impl fidl::encoding::ValueTypeMarker for TrelPeersInfo {
20467 type Borrowed<'a> = &'a Self;
20468 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
20469 value
20470 }
20471 }
20472
20473 unsafe impl fidl::encoding::TypeMarker for TrelPeersInfo {
20474 type Owned = Self;
20475
20476 #[inline(always)]
20477 fn inline_align(_context: fidl::encoding::Context) -> usize {
20478 8
20479 }
20480
20481 #[inline(always)]
20482 fn inline_size(_context: fidl::encoding::Context) -> usize {
20483 16
20484 }
20485 }
20486
20487 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TrelPeersInfo, D>
20488 for &TrelPeersInfo
20489 {
20490 unsafe fn encode(
20491 self,
20492 encoder: &mut fidl::encoding::Encoder<'_, D>,
20493 offset: usize,
20494 mut depth: fidl::encoding::Depth,
20495 ) -> fidl::Result<()> {
20496 encoder.debug_check_bounds::<TrelPeersInfo>(offset);
20497 let max_ordinal: u64 = self.max_ordinal_present();
20499 encoder.write_num(max_ordinal, offset);
20500 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
20501 if max_ordinal == 0 {
20503 return Ok(());
20504 }
20505 depth.increment()?;
20506 let envelope_size = 8;
20507 let bytes_len = max_ordinal as usize * envelope_size;
20508 #[allow(unused_variables)]
20509 let offset = encoder.out_of_line_offset(bytes_len);
20510 let mut _prev_end_offset: usize = 0;
20511 if 1 > max_ordinal {
20512 return Ok(());
20513 }
20514
20515 let cur_offset: usize = (1 - 1) * envelope_size;
20518
20519 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20521
20522 fidl::encoding::encode_in_envelope_optional::<u16, D>(
20527 self.num_trel_peers.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
20528 encoder,
20529 offset + cur_offset,
20530 depth,
20531 )?;
20532
20533 _prev_end_offset = cur_offset + envelope_size;
20534
20535 Ok(())
20536 }
20537 }
20538
20539 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TrelPeersInfo {
20540 #[inline(always)]
20541 fn new_empty() -> Self {
20542 Self::default()
20543 }
20544
20545 unsafe fn decode(
20546 &mut self,
20547 decoder: &mut fidl::encoding::Decoder<'_, D>,
20548 offset: usize,
20549 mut depth: fidl::encoding::Depth,
20550 ) -> fidl::Result<()> {
20551 decoder.debug_check_bounds::<Self>(offset);
20552 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
20553 None => return Err(fidl::Error::NotNullable),
20554 Some(len) => len,
20555 };
20556 if len == 0 {
20558 return Ok(());
20559 };
20560 depth.increment()?;
20561 let envelope_size = 8;
20562 let bytes_len = len * envelope_size;
20563 let offset = decoder.out_of_line_offset(bytes_len)?;
20564 let mut _next_ordinal_to_read = 0;
20566 let mut next_offset = offset;
20567 let end_offset = offset + bytes_len;
20568 _next_ordinal_to_read += 1;
20569 if next_offset >= end_offset {
20570 return Ok(());
20571 }
20572
20573 while _next_ordinal_to_read < 1 {
20575 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20576 _next_ordinal_to_read += 1;
20577 next_offset += envelope_size;
20578 }
20579
20580 let next_out_of_line = decoder.next_out_of_line();
20581 let handles_before = decoder.remaining_handles();
20582 if let Some((inlined, num_bytes, num_handles)) =
20583 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20584 {
20585 let member_inline_size =
20586 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20587 if inlined != (member_inline_size <= 4) {
20588 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20589 }
20590 let inner_offset;
20591 let mut inner_depth = depth.clone();
20592 if inlined {
20593 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20594 inner_offset = next_offset;
20595 } else {
20596 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20597 inner_depth.increment()?;
20598 }
20599 let val_ref = self.num_trel_peers.get_or_insert_with(|| fidl::new_empty!(u16, D));
20600 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
20601 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20602 {
20603 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20604 }
20605 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20606 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20607 }
20608 }
20609
20610 next_offset += envelope_size;
20611
20612 while next_offset < end_offset {
20614 _next_ordinal_to_read += 1;
20615 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20616 next_offset += envelope_size;
20617 }
20618
20619 Ok(())
20620 }
20621 }
20622
20623 impl UpstreamDnsCounters {
20624 #[inline(always)]
20625 fn max_ordinal_present(&self) -> u64 {
20626 if let Some(_) = self.failures {
20627 return 3;
20628 }
20629 if let Some(_) = self.responses {
20630 return 2;
20631 }
20632 if let Some(_) = self.queries {
20633 return 1;
20634 }
20635 0
20636 }
20637 }
20638
20639 impl fidl::encoding::ValueTypeMarker for UpstreamDnsCounters {
20640 type Borrowed<'a> = &'a Self;
20641 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
20642 value
20643 }
20644 }
20645
20646 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsCounters {
20647 type Owned = Self;
20648
20649 #[inline(always)]
20650 fn inline_align(_context: fidl::encoding::Context) -> usize {
20651 8
20652 }
20653
20654 #[inline(always)]
20655 fn inline_size(_context: fidl::encoding::Context) -> usize {
20656 16
20657 }
20658 }
20659
20660 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UpstreamDnsCounters, D>
20661 for &UpstreamDnsCounters
20662 {
20663 unsafe fn encode(
20664 self,
20665 encoder: &mut fidl::encoding::Encoder<'_, D>,
20666 offset: usize,
20667 mut depth: fidl::encoding::Depth,
20668 ) -> fidl::Result<()> {
20669 encoder.debug_check_bounds::<UpstreamDnsCounters>(offset);
20670 let max_ordinal: u64 = self.max_ordinal_present();
20672 encoder.write_num(max_ordinal, offset);
20673 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
20674 if max_ordinal == 0 {
20676 return Ok(());
20677 }
20678 depth.increment()?;
20679 let envelope_size = 8;
20680 let bytes_len = max_ordinal as usize * envelope_size;
20681 #[allow(unused_variables)]
20682 let offset = encoder.out_of_line_offset(bytes_len);
20683 let mut _prev_end_offset: usize = 0;
20684 if 1 > max_ordinal {
20685 return Ok(());
20686 }
20687
20688 let cur_offset: usize = (1 - 1) * envelope_size;
20691
20692 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20694
20695 fidl::encoding::encode_in_envelope_optional::<u32, D>(
20700 self.queries.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
20701 encoder,
20702 offset + cur_offset,
20703 depth,
20704 )?;
20705
20706 _prev_end_offset = cur_offset + envelope_size;
20707 if 2 > max_ordinal {
20708 return Ok(());
20709 }
20710
20711 let cur_offset: usize = (2 - 1) * envelope_size;
20714
20715 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20717
20718 fidl::encoding::encode_in_envelope_optional::<u32, D>(
20723 self.responses.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
20724 encoder,
20725 offset + cur_offset,
20726 depth,
20727 )?;
20728
20729 _prev_end_offset = cur_offset + envelope_size;
20730 if 3 > max_ordinal {
20731 return Ok(());
20732 }
20733
20734 let cur_offset: usize = (3 - 1) * envelope_size;
20737
20738 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20740
20741 fidl::encoding::encode_in_envelope_optional::<u32, D>(
20746 self.failures.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
20747 encoder,
20748 offset + cur_offset,
20749 depth,
20750 )?;
20751
20752 _prev_end_offset = cur_offset + envelope_size;
20753
20754 Ok(())
20755 }
20756 }
20757
20758 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsCounters {
20759 #[inline(always)]
20760 fn new_empty() -> Self {
20761 Self::default()
20762 }
20763
20764 unsafe fn decode(
20765 &mut self,
20766 decoder: &mut fidl::encoding::Decoder<'_, D>,
20767 offset: usize,
20768 mut depth: fidl::encoding::Depth,
20769 ) -> fidl::Result<()> {
20770 decoder.debug_check_bounds::<Self>(offset);
20771 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
20772 None => return Err(fidl::Error::NotNullable),
20773 Some(len) => len,
20774 };
20775 if len == 0 {
20777 return Ok(());
20778 };
20779 depth.increment()?;
20780 let envelope_size = 8;
20781 let bytes_len = len * envelope_size;
20782 let offset = decoder.out_of_line_offset(bytes_len)?;
20783 let mut _next_ordinal_to_read = 0;
20785 let mut next_offset = offset;
20786 let end_offset = offset + bytes_len;
20787 _next_ordinal_to_read += 1;
20788 if next_offset >= end_offset {
20789 return Ok(());
20790 }
20791
20792 while _next_ordinal_to_read < 1 {
20794 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20795 _next_ordinal_to_read += 1;
20796 next_offset += envelope_size;
20797 }
20798
20799 let next_out_of_line = decoder.next_out_of_line();
20800 let handles_before = decoder.remaining_handles();
20801 if let Some((inlined, num_bytes, num_handles)) =
20802 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20803 {
20804 let member_inline_size =
20805 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20806 if inlined != (member_inline_size <= 4) {
20807 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20808 }
20809 let inner_offset;
20810 let mut inner_depth = depth.clone();
20811 if inlined {
20812 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20813 inner_offset = next_offset;
20814 } else {
20815 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20816 inner_depth.increment()?;
20817 }
20818 let val_ref = self.queries.get_or_insert_with(|| fidl::new_empty!(u32, D));
20819 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
20820 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20821 {
20822 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20823 }
20824 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20825 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20826 }
20827 }
20828
20829 next_offset += envelope_size;
20830 _next_ordinal_to_read += 1;
20831 if next_offset >= end_offset {
20832 return Ok(());
20833 }
20834
20835 while _next_ordinal_to_read < 2 {
20837 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20838 _next_ordinal_to_read += 1;
20839 next_offset += envelope_size;
20840 }
20841
20842 let next_out_of_line = decoder.next_out_of_line();
20843 let handles_before = decoder.remaining_handles();
20844 if let Some((inlined, num_bytes, num_handles)) =
20845 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20846 {
20847 let member_inline_size =
20848 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20849 if inlined != (member_inline_size <= 4) {
20850 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20851 }
20852 let inner_offset;
20853 let mut inner_depth = depth.clone();
20854 if inlined {
20855 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20856 inner_offset = next_offset;
20857 } else {
20858 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20859 inner_depth.increment()?;
20860 }
20861 let val_ref = self.responses.get_or_insert_with(|| fidl::new_empty!(u32, D));
20862 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
20863 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20864 {
20865 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20866 }
20867 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20868 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20869 }
20870 }
20871
20872 next_offset += envelope_size;
20873 _next_ordinal_to_read += 1;
20874 if next_offset >= end_offset {
20875 return Ok(());
20876 }
20877
20878 while _next_ordinal_to_read < 3 {
20880 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20881 _next_ordinal_to_read += 1;
20882 next_offset += envelope_size;
20883 }
20884
20885 let next_out_of_line = decoder.next_out_of_line();
20886 let handles_before = decoder.remaining_handles();
20887 if let Some((inlined, num_bytes, num_handles)) =
20888 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20889 {
20890 let member_inline_size =
20891 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20892 if inlined != (member_inline_size <= 4) {
20893 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20894 }
20895 let inner_offset;
20896 let mut inner_depth = depth.clone();
20897 if inlined {
20898 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20899 inner_offset = next_offset;
20900 } else {
20901 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20902 inner_depth.increment()?;
20903 }
20904 let val_ref = self.failures.get_or_insert_with(|| fidl::new_empty!(u32, D));
20905 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
20906 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20907 {
20908 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20909 }
20910 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20911 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20912 }
20913 }
20914
20915 next_offset += envelope_size;
20916
20917 while next_offset < end_offset {
20919 _next_ordinal_to_read += 1;
20920 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20921 next_offset += envelope_size;
20922 }
20923
20924 Ok(())
20925 }
20926 }
20927
20928 impl UpstreamDnsInfo {
20929 #[inline(always)]
20930 fn max_ordinal_present(&self) -> u64 {
20931 if let Some(_) = self.upstream_dns_query_state {
20932 return 1;
20933 }
20934 0
20935 }
20936 }
20937
20938 impl fidl::encoding::ValueTypeMarker for UpstreamDnsInfo {
20939 type Borrowed<'a> = &'a Self;
20940 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
20941 value
20942 }
20943 }
20944
20945 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsInfo {
20946 type Owned = Self;
20947
20948 #[inline(always)]
20949 fn inline_align(_context: fidl::encoding::Context) -> usize {
20950 8
20951 }
20952
20953 #[inline(always)]
20954 fn inline_size(_context: fidl::encoding::Context) -> usize {
20955 16
20956 }
20957 }
20958
20959 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UpstreamDnsInfo, D>
20960 for &UpstreamDnsInfo
20961 {
20962 unsafe fn encode(
20963 self,
20964 encoder: &mut fidl::encoding::Encoder<'_, D>,
20965 offset: usize,
20966 mut depth: fidl::encoding::Depth,
20967 ) -> fidl::Result<()> {
20968 encoder.debug_check_bounds::<UpstreamDnsInfo>(offset);
20969 let max_ordinal: u64 = self.max_ordinal_present();
20971 encoder.write_num(max_ordinal, offset);
20972 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
20973 if max_ordinal == 0 {
20975 return Ok(());
20976 }
20977 depth.increment()?;
20978 let envelope_size = 8;
20979 let bytes_len = max_ordinal as usize * envelope_size;
20980 #[allow(unused_variables)]
20981 let offset = encoder.out_of_line_offset(bytes_len);
20982 let mut _prev_end_offset: usize = 0;
20983 if 1 > max_ordinal {
20984 return Ok(());
20985 }
20986
20987 let cur_offset: usize = (1 - 1) * envelope_size;
20990
20991 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20993
20994 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsQueryState, D>(
20999 self.upstream_dns_query_state
21000 .as_ref()
21001 .map(<UpstreamDnsQueryState as fidl::encoding::ValueTypeMarker>::borrow),
21002 encoder,
21003 offset + cur_offset,
21004 depth,
21005 )?;
21006
21007 _prev_end_offset = cur_offset + envelope_size;
21008
21009 Ok(())
21010 }
21011 }
21012
21013 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsInfo {
21014 #[inline(always)]
21015 fn new_empty() -> Self {
21016 Self::default()
21017 }
21018
21019 unsafe fn decode(
21020 &mut self,
21021 decoder: &mut fidl::encoding::Decoder<'_, D>,
21022 offset: usize,
21023 mut depth: fidl::encoding::Depth,
21024 ) -> fidl::Result<()> {
21025 decoder.debug_check_bounds::<Self>(offset);
21026 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
21027 None => return Err(fidl::Error::NotNullable),
21028 Some(len) => len,
21029 };
21030 if len == 0 {
21032 return Ok(());
21033 };
21034 depth.increment()?;
21035 let envelope_size = 8;
21036 let bytes_len = len * envelope_size;
21037 let offset = decoder.out_of_line_offset(bytes_len)?;
21038 let mut _next_ordinal_to_read = 0;
21040 let mut next_offset = offset;
21041 let end_offset = offset + bytes_len;
21042 _next_ordinal_to_read += 1;
21043 if next_offset >= end_offset {
21044 return Ok(());
21045 }
21046
21047 while _next_ordinal_to_read < 1 {
21049 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21050 _next_ordinal_to_read += 1;
21051 next_offset += envelope_size;
21052 }
21053
21054 let next_out_of_line = decoder.next_out_of_line();
21055 let handles_before = decoder.remaining_handles();
21056 if let Some((inlined, num_bytes, num_handles)) =
21057 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21058 {
21059 let member_inline_size =
21060 <UpstreamDnsQueryState as fidl::encoding::TypeMarker>::inline_size(
21061 decoder.context,
21062 );
21063 if inlined != (member_inline_size <= 4) {
21064 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21065 }
21066 let inner_offset;
21067 let mut inner_depth = depth.clone();
21068 if inlined {
21069 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21070 inner_offset = next_offset;
21071 } else {
21072 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21073 inner_depth.increment()?;
21074 }
21075 let val_ref = self
21076 .upstream_dns_query_state
21077 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsQueryState, D));
21078 fidl::decode!(
21079 UpstreamDnsQueryState,
21080 D,
21081 val_ref,
21082 decoder,
21083 inner_offset,
21084 inner_depth
21085 )?;
21086 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21087 {
21088 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21089 }
21090 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21091 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21092 }
21093 }
21094
21095 next_offset += envelope_size;
21096
21097 while next_offset < end_offset {
21099 _next_ordinal_to_read += 1;
21100 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21101 next_offset += envelope_size;
21102 }
21103
21104 Ok(())
21105 }
21106 }
21107
21108 impl fidl::encoding::ValueTypeMarker for JoinParams {
21109 type Borrowed<'a> = &'a Self;
21110 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
21111 value
21112 }
21113 }
21114
21115 unsafe impl fidl::encoding::TypeMarker for JoinParams {
21116 type Owned = Self;
21117
21118 #[inline(always)]
21119 fn inline_align(_context: fidl::encoding::Context) -> usize {
21120 8
21121 }
21122
21123 #[inline(always)]
21124 fn inline_size(_context: fidl::encoding::Context) -> usize {
21125 16
21126 }
21127 }
21128
21129 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<JoinParams, D>
21130 for &JoinParams
21131 {
21132 #[inline]
21133 unsafe fn encode(
21134 self,
21135 encoder: &mut fidl::encoding::Encoder<'_, D>,
21136 offset: usize,
21137 _depth: fidl::encoding::Depth,
21138 ) -> fidl::Result<()> {
21139 encoder.debug_check_bounds::<JoinParams>(offset);
21140 encoder.write_num::<u64>(self.ordinal(), offset);
21141 match self {
21142 JoinParams::ProvisioningParameter(ref val) => {
21143 fidl::encoding::encode_in_envelope::<fidl_fuchsia_lowpan_device__common::ProvisioningParams, D>(
21144 <fidl_fuchsia_lowpan_device__common::ProvisioningParams as fidl::encoding::ValueTypeMarker>::borrow(val),
21145 encoder, offset + 8, _depth
21146 )
21147 }
21148 JoinParams::JoinerParameter(ref val) => {
21149 fidl::encoding::encode_in_envelope::<JoinerCommissioningParams, D>(
21150 <JoinerCommissioningParams as fidl::encoding::ValueTypeMarker>::borrow(val),
21151 encoder, offset + 8, _depth
21152 )
21153 }
21154 JoinParams::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
21155 }
21156 }
21157 }
21158
21159 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for JoinParams {
21160 #[inline(always)]
21161 fn new_empty() -> Self {
21162 Self::__SourceBreaking { unknown_ordinal: 0 }
21163 }
21164
21165 #[inline]
21166 unsafe fn decode(
21167 &mut self,
21168 decoder: &mut fidl::encoding::Decoder<'_, D>,
21169 offset: usize,
21170 mut depth: fidl::encoding::Depth,
21171 ) -> fidl::Result<()> {
21172 decoder.debug_check_bounds::<Self>(offset);
21173 #[allow(unused_variables)]
21174 let next_out_of_line = decoder.next_out_of_line();
21175 let handles_before = decoder.remaining_handles();
21176 let (ordinal, inlined, num_bytes, num_handles) =
21177 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
21178
21179 let member_inline_size = match ordinal {
21180 1 => <fidl_fuchsia_lowpan_device__common::ProvisioningParams as fidl::encoding::TypeMarker>::inline_size(decoder.context),
21181 2 => <JoinerCommissioningParams as fidl::encoding::TypeMarker>::inline_size(decoder.context),
21182 0 => return Err(fidl::Error::UnknownUnionTag),
21183 _ => num_bytes as usize,
21184 };
21185
21186 if inlined != (member_inline_size <= 4) {
21187 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21188 }
21189 let _inner_offset;
21190 if inlined {
21191 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
21192 _inner_offset = offset + 8;
21193 } else {
21194 depth.increment()?;
21195 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21196 }
21197 match ordinal {
21198 1 => {
21199 #[allow(irrefutable_let_patterns)]
21200 if let JoinParams::ProvisioningParameter(_) = self {
21201 } else {
21203 *self = JoinParams::ProvisioningParameter(fidl::new_empty!(
21205 fidl_fuchsia_lowpan_device__common::ProvisioningParams,
21206 D
21207 ));
21208 }
21209 #[allow(irrefutable_let_patterns)]
21210 if let JoinParams::ProvisioningParameter(ref mut val) = self {
21211 fidl::decode!(
21212 fidl_fuchsia_lowpan_device__common::ProvisioningParams,
21213 D,
21214 val,
21215 decoder,
21216 _inner_offset,
21217 depth
21218 )?;
21219 } else {
21220 unreachable!()
21221 }
21222 }
21223 2 => {
21224 #[allow(irrefutable_let_patterns)]
21225 if let JoinParams::JoinerParameter(_) = self {
21226 } else {
21228 *self = JoinParams::JoinerParameter(fidl::new_empty!(
21230 JoinerCommissioningParams,
21231 D
21232 ));
21233 }
21234 #[allow(irrefutable_let_patterns)]
21235 if let JoinParams::JoinerParameter(ref mut val) = self {
21236 fidl::decode!(
21237 JoinerCommissioningParams,
21238 D,
21239 val,
21240 decoder,
21241 _inner_offset,
21242 depth
21243 )?;
21244 } else {
21245 unreachable!()
21246 }
21247 }
21248 #[allow(deprecated)]
21249 ordinal => {
21250 for _ in 0..num_handles {
21251 decoder.drop_next_handle()?;
21252 }
21253 *self = JoinParams::__SourceBreaking { unknown_ordinal: ordinal };
21254 }
21255 }
21256 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
21257 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21258 }
21259 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21260 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21261 }
21262 Ok(())
21263 }
21264 }
21265
21266 impl fidl::encoding::ValueTypeMarker for ProvisioningProgress {
21267 type Borrowed<'a> = &'a Self;
21268 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
21269 value
21270 }
21271 }
21272
21273 unsafe impl fidl::encoding::TypeMarker for ProvisioningProgress {
21274 type Owned = Self;
21275
21276 #[inline(always)]
21277 fn inline_align(_context: fidl::encoding::Context) -> usize {
21278 8
21279 }
21280
21281 #[inline(always)]
21282 fn inline_size(_context: fidl::encoding::Context) -> usize {
21283 16
21284 }
21285 }
21286
21287 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProvisioningProgress, D>
21288 for &ProvisioningProgress
21289 {
21290 #[inline]
21291 unsafe fn encode(
21292 self,
21293 encoder: &mut fidl::encoding::Encoder<'_, D>,
21294 offset: usize,
21295 _depth: fidl::encoding::Depth,
21296 ) -> fidl::Result<()> {
21297 encoder.debug_check_bounds::<ProvisioningProgress>(offset);
21298 encoder.write_num::<u64>(self.ordinal(), offset);
21299 match self {
21300 ProvisioningProgress::Progress(ref val) => {
21301 fidl::encoding::encode_in_envelope::<f32, D>(
21302 <f32 as fidl::encoding::ValueTypeMarker>::borrow(val),
21303 encoder, offset + 8, _depth
21304 )
21305 }
21306 ProvisioningProgress::Identity(ref val) => {
21307 fidl::encoding::encode_in_envelope::<fidl_fuchsia_lowpan_device__common::Identity, D>(
21308 <fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::ValueTypeMarker>::borrow(val),
21309 encoder, offset + 8, _depth
21310 )
21311 }
21312 ProvisioningProgress::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
21313 }
21314 }
21315 }
21316
21317 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProvisioningProgress {
21318 #[inline(always)]
21319 fn new_empty() -> Self {
21320 Self::__SourceBreaking { unknown_ordinal: 0 }
21321 }
21322
21323 #[inline]
21324 unsafe fn decode(
21325 &mut self,
21326 decoder: &mut fidl::encoding::Decoder<'_, D>,
21327 offset: usize,
21328 mut depth: fidl::encoding::Depth,
21329 ) -> fidl::Result<()> {
21330 decoder.debug_check_bounds::<Self>(offset);
21331 #[allow(unused_variables)]
21332 let next_out_of_line = decoder.next_out_of_line();
21333 let handles_before = decoder.remaining_handles();
21334 let (ordinal, inlined, num_bytes, num_handles) =
21335 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
21336
21337 let member_inline_size = match ordinal {
21338 1 => <f32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
21339 2 => <fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::TypeMarker>::inline_size(decoder.context),
21340 0 => return Err(fidl::Error::UnknownUnionTag),
21341 _ => num_bytes as usize,
21342 };
21343
21344 if inlined != (member_inline_size <= 4) {
21345 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21346 }
21347 let _inner_offset;
21348 if inlined {
21349 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
21350 _inner_offset = offset + 8;
21351 } else {
21352 depth.increment()?;
21353 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21354 }
21355 match ordinal {
21356 1 => {
21357 #[allow(irrefutable_let_patterns)]
21358 if let ProvisioningProgress::Progress(_) = self {
21359 } else {
21361 *self = ProvisioningProgress::Progress(fidl::new_empty!(f32, D));
21363 }
21364 #[allow(irrefutable_let_patterns)]
21365 if let ProvisioningProgress::Progress(ref mut val) = self {
21366 fidl::decode!(f32, D, val, decoder, _inner_offset, depth)?;
21367 } else {
21368 unreachable!()
21369 }
21370 }
21371 2 => {
21372 #[allow(irrefutable_let_patterns)]
21373 if let ProvisioningProgress::Identity(_) = self {
21374 } else {
21376 *self = ProvisioningProgress::Identity(fidl::new_empty!(
21378 fidl_fuchsia_lowpan_device__common::Identity,
21379 D
21380 ));
21381 }
21382 #[allow(irrefutable_let_patterns)]
21383 if let ProvisioningProgress::Identity(ref mut val) = self {
21384 fidl::decode!(
21385 fidl_fuchsia_lowpan_device__common::Identity,
21386 D,
21387 val,
21388 decoder,
21389 _inner_offset,
21390 depth
21391 )?;
21392 } else {
21393 unreachable!()
21394 }
21395 }
21396 #[allow(deprecated)]
21397 ordinal => {
21398 for _ in 0..num_handles {
21399 decoder.drop_next_handle()?;
21400 }
21401 *self = ProvisioningProgress::__SourceBreaking { unknown_ordinal: ordinal };
21402 }
21403 }
21404 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
21405 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21406 }
21407 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21408 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21409 }
21410 Ok(())
21411 }
21412 }
21413}