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)]
923pub struct MultiRadioNeighborInfo {
924 pub extended_address: Option<Vec<u8>>,
928 pub thread_rloc: Option<u16>,
932 pub radio_link_info: Option<Vec<RadioLinkInfo>>,
938 #[doc(hidden)]
939 pub __source_breaking: fidl::marker::SourceBreaking,
940}
941
942impl fidl::Persistable for MultiRadioNeighborInfo {}
943
944#[derive(Clone, Debug, Default, PartialEq)]
945pub struct Nat64ErrorCounters {
946 pub unknown: Option<Nat64PacketCounters>,
948 pub illegal_packet: Option<Nat64PacketCounters>,
950 pub unsupported_protocol: Option<Nat64PacketCounters>,
952 pub no_mapping: Option<Nat64PacketCounters>,
954 #[doc(hidden)]
955 pub __source_breaking: fidl::marker::SourceBreaking,
956}
957
958impl fidl::Persistable for Nat64ErrorCounters {}
959
960#[derive(Clone, Debug, Default, PartialEq)]
961pub struct Nat64Info {
962 pub nat64_state: Option<BorderRoutingNat64State>,
964 pub nat64_mappings: Option<Vec<Nat64Mapping>>,
966 pub nat64_error_counters: Option<Nat64ErrorCounters>,
968 pub nat64_protocol_counters: Option<Nat64ProtocolCounters>,
970 #[doc(hidden)]
971 pub __source_breaking: fidl::marker::SourceBreaking,
972}
973
974impl fidl::Persistable for Nat64Info {}
975
976#[derive(Clone, Debug, Default, PartialEq)]
978pub struct Nat64Mapping {
979 pub mapping_id: Option<u64>,
981 pub ip4_addr: Option<Vec<u8>>,
983 pub ip6_addr: Option<Vec<u8>>,
985 pub remaining_time_ms: Option<u32>,
987 pub counters: Option<Nat64ProtocolCounters>,
989 #[doc(hidden)]
990 pub __source_breaking: fidl::marker::SourceBreaking,
991}
992
993impl fidl::Persistable for Nat64Mapping {}
994
995#[derive(Clone, Debug, Default, PartialEq)]
996pub struct Nat64PacketCounters {
997 pub ipv4_to_ipv6_packets: Option<u64>,
999 pub ipv6_to_ipv4_packets: Option<u64>,
1001 #[doc(hidden)]
1002 pub __source_breaking: fidl::marker::SourceBreaking,
1003}
1004
1005impl fidl::Persistable for Nat64PacketCounters {}
1006
1007#[derive(Clone, Debug, Default, PartialEq)]
1008pub struct Nat64ProtocolCounters {
1009 pub tcp: Option<Nat64TrafficCounters>,
1011 pub udp: Option<Nat64TrafficCounters>,
1013 pub icmp: Option<Nat64TrafficCounters>,
1015 pub total: Option<Nat64TrafficCounters>,
1017 #[doc(hidden)]
1018 pub __source_breaking: fidl::marker::SourceBreaking,
1019}
1020
1021impl fidl::Persistable for Nat64ProtocolCounters {}
1022
1023#[derive(Clone, Debug, Default, PartialEq)]
1024pub struct Nat64TrafficCounters {
1025 pub ipv4_to_ipv6_packets: Option<u64>,
1027 pub ipv4_to_ipv6_bytes: Option<u64>,
1029 pub ipv6_to_ipv4_packets: Option<u64>,
1031 pub ipv6_to_ipv4_bytes: Option<u64>,
1033 #[doc(hidden)]
1034 pub __source_breaking: fidl::marker::SourceBreaking,
1035}
1036
1037impl fidl::Persistable for Nat64TrafficCounters {}
1038
1039#[derive(Clone, Debug, Default, PartialEq)]
1041pub struct NetworkScanParameters {
1042 pub channels: Option<Vec<u16>>,
1046 pub tx_power_dbm: Option<i8>,
1057 #[doc(hidden)]
1058 pub __source_breaking: fidl::marker::SourceBreaking,
1059}
1060
1061impl fidl::Persistable for NetworkScanParameters {}
1062
1063#[derive(Clone, Debug, Default, PartialEq)]
1067pub struct OnMeshPrefix {
1068 pub subnet: Option<fidl_fuchsia_net__common::Ipv6AddressWithPrefix>,
1070 pub default_route_preference: Option<RoutePreference>,
1078 pub stable: Option<bool>,
1087 pub slaac_preferred: Option<bool>,
1096 pub slaac_valid: Option<bool>,
1105 #[doc(hidden)]
1106 pub __source_breaking: fidl::marker::SourceBreaking,
1107}
1108
1109impl fidl::Persistable for OnMeshPrefix {}
1110
1111#[derive(Clone, Debug, Default, PartialEq)]
1113pub struct OperationalDataset {
1114 pub active_timestamp: Option<i64>,
1118 pub pending_timestamp: Option<i64>,
1122 pub network_key: Option<Vec<u8>>,
1126 pub network_name: Option<Vec<u8>>,
1130 pub extended_pan_id: Option<Vec<u8>>,
1134 pub mesh_local_prefix: Option<Vec<u8>>,
1138 pub delay: Option<u32>,
1142 pub pan_id: Option<u16>,
1146 pub channel: Option<u16>,
1150 pub wakeup_channel: Option<u16>,
1154 pub pskc: Option<Vec<u8>>,
1158 pub security_policy: Option<SecurityPolicy>,
1162 pub channel_mask: Option<u32>,
1166 #[doc(hidden)]
1167 pub __source_breaking: fidl::marker::SourceBreaking,
1168}
1169
1170impl fidl::Persistable for OperationalDataset {}
1171
1172#[derive(Clone, Debug, Default, PartialEq)]
1174pub struct PdProcessedRaInfo {
1175 pub num_platform_ra_received: Option<u32>,
1179 pub num_platform_pio_processed: Option<u32>,
1183 pub last_platform_ra_msec: Option<u32>,
1187 #[doc(hidden)]
1188 pub __source_breaking: fidl::marker::SourceBreaking,
1189}
1190
1191impl fidl::Persistable for PdProcessedRaInfo {}
1192
1193#[derive(Clone, Debug, Default, PartialEq)]
1195pub struct RadioLinkInfo {
1196 pub link_type: Option<String>,
1202 pub preference: Option<u8>,
1206 #[doc(hidden)]
1207 pub __source_breaking: fidl::marker::SourceBreaking,
1208}
1209
1210impl fidl::Persistable for RadioLinkInfo {}
1211
1212#[derive(Clone, Debug, Default, PartialEq)]
1214pub struct RouterInfo {
1215 pub extended_address: Option<Vec<u8>>,
1219 pub thread_rloc: Option<u16>,
1223 pub router_id: Option<u8>,
1227 pub next_hop: Option<u8>,
1231 pub path_cost: Option<u8>,
1235 pub link_quality_in: Option<u8>,
1239 pub link_quality_out: Option<u8>,
1243 pub age: Option<i64>,
1247 pub link_established: Option<bool>,
1251 #[doc(hidden)]
1252 pub __source_breaking: fidl::marker::SourceBreaking,
1253}
1254
1255impl fidl::Persistable for RouterInfo {}
1256
1257#[derive(Clone, Debug, Default, PartialEq)]
1259pub struct SecurityPolicy {
1260 pub rotation_time: Option<u16>,
1264 pub obtain_network_key_enabled: Option<bool>,
1268 pub native_commissioning_enabled: Option<bool>,
1272 pub routers_enabled: Option<bool>,
1276 pub external_commissioning_enabled: Option<bool>,
1280 pub autonomous_enrollment_enabled: Option<bool>,
1284 pub network_key_provisioning_enabled: Option<bool>,
1288 pub toble_link_enabled: Option<bool>,
1292 pub nonccm_routers_enabled: Option<bool>,
1296 pub version_threshold_for_routing: Option<u8>,
1300 #[doc(hidden)]
1301 pub __source_breaking: fidl::marker::SourceBreaking,
1302}
1303
1304impl fidl::Persistable for SecurityPolicy {}
1305
1306#[derive(Clone, Debug, Default, PartialEq)]
1308pub struct SrpServerHost {
1309 pub name: Option<String>,
1313 pub deleted: Option<bool>,
1317 pub addresses: Option<Vec<fidl_fuchsia_net__common::Ipv6Address>>,
1321 #[doc(hidden)]
1322 pub __source_breaking: fidl::marker::SourceBreaking,
1323}
1324
1325impl fidl::Persistable for SrpServerHost {}
1326
1327#[derive(Clone, Debug, Default, PartialEq)]
1329pub struct SrpServerInfo {
1330 pub state: Option<SrpServerState>,
1334 pub port: Option<u16>,
1338 pub address_mode: Option<SrpServerAddressMode>,
1342 pub response_counters: Option<SrpServerResponseCounters>,
1346 pub hosts_registration: Option<SrpServerRegistration>,
1350 pub services_registration: Option<SrpServerRegistration>,
1354 pub hosts: Option<Vec<SrpServerHost>>,
1358 pub services: Option<Vec<SrpServerService>>,
1362 #[doc(hidden)]
1363 pub __source_breaking: fidl::marker::SourceBreaking,
1364}
1365
1366impl fidl::Persistable for SrpServerInfo {}
1367
1368#[derive(Clone, Debug, Default, PartialEq)]
1370pub struct SrpServerRegistration {
1371 pub fresh_count: Option<u32>,
1375 pub deleted_count: Option<u32>,
1379 pub lease_time_total: Option<i64>,
1383 pub key_lease_time_total: Option<i64>,
1387 pub remaining_lease_time_total: Option<i64>,
1391 pub remaining_key_lease_time_total: Option<i64>,
1395 #[doc(hidden)]
1396 pub __source_breaking: fidl::marker::SourceBreaking,
1397}
1398
1399impl fidl::Persistable for SrpServerRegistration {}
1400
1401#[derive(Clone, Debug, Default, PartialEq)]
1402pub struct SrpServerResponseCounters {
1403 pub success_response: Option<u32>,
1407 pub server_failure_response: Option<u32>,
1411 pub format_error_response: Option<u32>,
1415 pub name_exists_response: Option<u32>,
1419 pub refused_response: Option<u32>,
1423 pub other_response: Option<u32>,
1427 #[doc(hidden)]
1428 pub __source_breaking: fidl::marker::SourceBreaking,
1429}
1430
1431impl fidl::Persistable for SrpServerResponseCounters {}
1432
1433#[derive(Clone, Debug, Default, PartialEq)]
1435pub struct SrpServerService {
1436 pub instance_name: Option<String>,
1440 pub deleted: Option<bool>,
1444 pub subtypes: Option<Vec<String>>,
1453 pub port: Option<u16>,
1457 pub priority: Option<u16>,
1461 pub weight: Option<u16>,
1465 pub ttl: Option<i64>,
1469 pub lease: Option<i64>,
1473 pub key_lease: Option<i64>,
1477 pub txt_data: Option<Vec<DnsTxtEntry>>,
1481 pub host: Option<SrpServerHost>,
1485 #[doc(hidden)]
1486 pub __source_breaking: fidl::marker::SourceBreaking,
1487}
1488
1489impl fidl::Persistable for SrpServerService {}
1490
1491#[derive(Clone, Debug, Default, PartialEq)]
1498pub struct Telemetry {
1499 pub rssi: Option<i8>,
1501 pub tx_power: Option<i8>,
1503 pub channel_index: Option<u16>,
1505 pub partition_id: Option<u32>,
1507 pub stack_version: Option<String>,
1509 pub rcp_version: Option<String>,
1511 pub thread_link_mode: Option<u8>,
1517 pub thread_router_id: Option<u8>,
1521 pub thread_rloc: Option<u16>,
1525 pub thread_network_data_version: Option<u8>,
1529 pub thread_stable_network_data_version: Option<u8>,
1533 pub thread_network_data: Option<Vec<u8>>,
1538 pub thread_stable_network_data: Option<Vec<u8>>,
1543 pub thread_border_routing_counters: Option<BorderRoutingCounters>,
1547 pub srp_server_info: Option<SrpServerInfo>,
1551 pub dnssd_counters: Option<DnssdCounters>,
1555 pub leader_data: Option<LeaderData>,
1559 pub uptime: Option<i64>,
1563 pub nat64_info: Option<Nat64Info>,
1567 pub trel_counters: Option<TrelCounters>,
1571 pub trel_peers_info: Option<TrelPeersInfo>,
1575 pub upstream_dns_info: Option<UpstreamDnsInfo>,
1579 pub dhcp6pd_info: Option<Dhcp6PdInfo>,
1583 pub link_metrics_entries: Option<Vec<LinkMetricsEntry>>,
1587 pub border_agent_counters: Option<fidl_fuchsia_lowpan_device__common::BorderAgentCounters>,
1591 pub multi_ail_detected: Option<bool>,
1595 pub extended_pan_id: Option<u64>,
1600 pub border_routing_peers: Option<Vec<BorderRoutingPeer>>,
1604 pub border_routing_routers: Option<Vec<BorderRoutingRouter>>,
1608 pub active_dataset: Option<OperationalDataset>,
1612 pub multiradio_neighbor_info: Option<Vec<MultiRadioNeighborInfo>>,
1616 pub router_info: Option<Vec<RouterInfo>>,
1620 #[doc(hidden)]
1621 pub __source_breaking: fidl::marker::SourceBreaking,
1622}
1623
1624impl fidl::Persistable for Telemetry {}
1625
1626#[derive(Clone, Debug, Default, PartialEq)]
1630pub struct TrelCounters {
1631 pub rx_bytes: Option<u64>,
1633 pub rx_packets: Option<u64>,
1635 pub tx_bytes: Option<u64>,
1637 pub tx_failure: Option<u64>,
1639 pub tx_packets: Option<u64>,
1641 #[doc(hidden)]
1642 pub __source_breaking: fidl::marker::SourceBreaking,
1643}
1644
1645impl fidl::Persistable for TrelCounters {}
1646
1647#[derive(Clone, Debug, Default, PartialEq)]
1652pub struct TrelPeersInfo {
1653 pub num_trel_peers: Option<u16>,
1657 #[doc(hidden)]
1658 pub __source_breaking: fidl::marker::SourceBreaking,
1659}
1660
1661impl fidl::Persistable for TrelPeersInfo {}
1662
1663#[derive(Clone, Debug, Default, PartialEq)]
1667pub struct UpstreamDnsCounters {
1668 pub queries: Option<u32>,
1672 pub responses: Option<u32>,
1676 pub failures: Option<u32>,
1680 #[doc(hidden)]
1681 pub __source_breaking: fidl::marker::SourceBreaking,
1682}
1683
1684impl fidl::Persistable for UpstreamDnsCounters {}
1685
1686#[derive(Clone, Debug, Default, PartialEq)]
1691pub struct UpstreamDnsInfo {
1692 pub upstream_dns_query_state: Option<UpstreamDnsQueryState>,
1696 #[doc(hidden)]
1697 pub __source_breaking: fidl::marker::SourceBreaking,
1698}
1699
1700impl fidl::Persistable for UpstreamDnsInfo {}
1701
1702#[derive(Clone, Debug)]
1704pub enum JoinParams {
1705 ProvisioningParameter(fidl_fuchsia_lowpan_device__common::ProvisioningParams),
1707 JoinerParameter(JoinerCommissioningParams),
1713 #[doc(hidden)]
1714 __SourceBreaking { unknown_ordinal: u64 },
1715}
1716
1717#[macro_export]
1719macro_rules! JoinParamsUnknown {
1720 () => {
1721 _
1722 };
1723}
1724
1725impl PartialEq for JoinParams {
1727 fn eq(&self, other: &Self) -> bool {
1728 match (self, other) {
1729 (Self::ProvisioningParameter(x), Self::ProvisioningParameter(y)) => *x == *y,
1730 (Self::JoinerParameter(x), Self::JoinerParameter(y)) => *x == *y,
1731 _ => false,
1732 }
1733 }
1734}
1735
1736impl JoinParams {
1737 #[inline]
1738 pub fn ordinal(&self) -> u64 {
1739 match *self {
1740 Self::ProvisioningParameter(_) => 1,
1741 Self::JoinerParameter(_) => 2,
1742 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1743 }
1744 }
1745
1746 #[inline]
1747 pub fn unknown_variant_for_testing() -> Self {
1748 Self::__SourceBreaking { unknown_ordinal: 0 }
1749 }
1750
1751 #[inline]
1752 pub fn is_unknown(&self) -> bool {
1753 match self {
1754 Self::__SourceBreaking { .. } => true,
1755 _ => false,
1756 }
1757 }
1758}
1759
1760impl fidl::Persistable for JoinParams {}
1761
1762#[derive(Clone, Debug)]
1766pub enum ProvisioningProgress {
1767 Progress(f32),
1769 Identity(fidl_fuchsia_lowpan_device__common::Identity),
1771 #[doc(hidden)]
1772 __SourceBreaking { unknown_ordinal: u64 },
1773}
1774
1775#[macro_export]
1777macro_rules! ProvisioningProgressUnknown {
1778 () => {
1779 _
1780 };
1781}
1782
1783impl PartialEq for ProvisioningProgress {
1785 fn eq(&self, other: &Self) -> bool {
1786 match (self, other) {
1787 (Self::Progress(x), Self::Progress(y)) => *x == *y,
1788 (Self::Identity(x), Self::Identity(y)) => *x == *y,
1789 _ => false,
1790 }
1791 }
1792}
1793
1794impl ProvisioningProgress {
1795 #[inline]
1796 pub fn ordinal(&self) -> u64 {
1797 match *self {
1798 Self::Progress(_) => 1,
1799 Self::Identity(_) => 2,
1800 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1801 }
1802 }
1803
1804 #[inline]
1805 pub fn unknown_variant_for_testing() -> Self {
1806 Self::__SourceBreaking { unknown_ordinal: 0 }
1807 }
1808
1809 #[inline]
1810 pub fn is_unknown(&self) -> bool {
1811 match self {
1812 Self::__SourceBreaking { .. } => true,
1813 _ => false,
1814 }
1815 }
1816}
1817
1818impl fidl::Persistable for ProvisioningProgress {}
1819
1820pub mod beacon_info_stream_ordinals {
1821 pub const NEXT: u64 = 0x367a557363a340b6;
1822}
1823
1824pub mod device_ordinals {
1825 pub const GET_SUPPORTED_CHANNELS: u64 = 0x2d8b969a9bd70f23;
1826}
1827
1828pub mod device_connector_ordinals {
1829 pub const CONNECT: u64 = 0x296896c9304836cd;
1830}
1831
1832pub mod device_extra_ordinals {
1833 pub const FORM_NETWORK: u64 = 0x6a8135f84bfc90e;
1834 pub const JOIN_NETWORK: u64 = 0x3ea583bab79f81c0;
1835 pub const START_NETWORK_SCAN: u64 = 0x6288c73b79188b40;
1836}
1837
1838pub mod device_extra_connector_ordinals {
1839 pub const CONNECT: u64 = 0x3fcb37e4226c81e9;
1840}
1841
1842pub mod device_route_ordinals {
1843 pub const REGISTER_ON_MESH_PREFIX: u64 = 0x2c4135231eb97f61;
1844 pub const UNREGISTER_ON_MESH_PREFIX: u64 = 0x82d5184028b797f;
1845 pub const REGISTER_EXTERNAL_ROUTE: u64 = 0x75f70f0fc34a5a73;
1846 pub const UNREGISTER_EXTERNAL_ROUTE: u64 = 0x3769be353b1d7088;
1847}
1848
1849pub mod device_route_connector_ordinals {
1850 pub const CONNECT: u64 = 0x19cd5fdcb971f4ac;
1851}
1852
1853pub mod device_route_extra_ordinals {
1854 pub const GET_LOCAL_ON_MESH_PREFIXES: u64 = 0xf192c43311c811;
1855 pub const GET_LOCAL_EXTERNAL_ROUTES: u64 = 0x5a688c2e62c766a6;
1856}
1857
1858pub mod device_route_extra_connector_ordinals {
1859 pub const CONNECT: u64 = 0x12f72df7b1348fe2;
1860}
1861
1862pub mod legacy_joining_ordinals {
1863 pub const MAKE_JOINABLE: u64 = 0x1739a6ae36d5c5aa;
1864}
1865
1866pub mod legacy_joining_connector_ordinals {
1867 pub const CONNECT: u64 = 0x3c8dfeb943bb8d06;
1868}
1869
1870pub mod provisioning_monitor_ordinals {
1871 pub const WATCH_PROGRESS: u64 = 0xc35336fc43ac0c;
1872}
1873
1874pub mod telemetry_provider_ordinals {
1875 pub const GET_TELEMETRY: u64 = 0xc34f2fff7dacc41;
1876}
1877
1878pub mod telemetry_provider_connector_ordinals {
1879 pub const CONNECT: u64 = 0x24a5bf1be73e2fad;
1880}
1881
1882mod internal {
1883 use super::*;
1884 unsafe impl fidl::encoding::TypeMarker for Dhcp6PdState {
1885 type Owned = Self;
1886
1887 #[inline(always)]
1888 fn inline_align(_context: fidl::encoding::Context) -> usize {
1889 std::mem::align_of::<u32>()
1890 }
1891
1892 #[inline(always)]
1893 fn inline_size(_context: fidl::encoding::Context) -> usize {
1894 std::mem::size_of::<u32>()
1895 }
1896
1897 #[inline(always)]
1898 fn encode_is_copy() -> bool {
1899 false
1900 }
1901
1902 #[inline(always)]
1903 fn decode_is_copy() -> bool {
1904 false
1905 }
1906 }
1907
1908 impl fidl::encoding::ValueTypeMarker for Dhcp6PdState {
1909 type Borrowed<'a> = Self;
1910 #[inline(always)]
1911 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1912 *value
1913 }
1914 }
1915
1916 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Dhcp6PdState {
1917 #[inline]
1918 unsafe fn encode(
1919 self,
1920 encoder: &mut fidl::encoding::Encoder<'_, D>,
1921 offset: usize,
1922 _depth: fidl::encoding::Depth,
1923 ) -> fidl::Result<()> {
1924 encoder.debug_check_bounds::<Self>(offset);
1925 encoder.write_num(self.into_primitive(), offset);
1926 Ok(())
1927 }
1928 }
1929
1930 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dhcp6PdState {
1931 #[inline(always)]
1932 fn new_empty() -> Self {
1933 Self::unknown()
1934 }
1935
1936 #[inline]
1937 unsafe fn decode(
1938 &mut self,
1939 decoder: &mut fidl::encoding::Decoder<'_, D>,
1940 offset: usize,
1941 _depth: fidl::encoding::Depth,
1942 ) -> fidl::Result<()> {
1943 decoder.debug_check_bounds::<Self>(offset);
1944 let prim = decoder.read_num::<u32>(offset);
1945
1946 *self = Self::from_primitive_allow_unknown(prim);
1947 Ok(())
1948 }
1949 }
1950 unsafe impl fidl::encoding::TypeMarker for Nat64State {
1951 type Owned = Self;
1952
1953 #[inline(always)]
1954 fn inline_align(_context: fidl::encoding::Context) -> usize {
1955 std::mem::align_of::<u32>()
1956 }
1957
1958 #[inline(always)]
1959 fn inline_size(_context: fidl::encoding::Context) -> usize {
1960 std::mem::size_of::<u32>()
1961 }
1962
1963 #[inline(always)]
1964 fn encode_is_copy() -> bool {
1965 false
1966 }
1967
1968 #[inline(always)]
1969 fn decode_is_copy() -> bool {
1970 false
1971 }
1972 }
1973
1974 impl fidl::encoding::ValueTypeMarker for Nat64State {
1975 type Borrowed<'a> = Self;
1976 #[inline(always)]
1977 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1978 *value
1979 }
1980 }
1981
1982 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Nat64State {
1983 #[inline]
1984 unsafe fn encode(
1985 self,
1986 encoder: &mut fidl::encoding::Encoder<'_, D>,
1987 offset: usize,
1988 _depth: fidl::encoding::Depth,
1989 ) -> fidl::Result<()> {
1990 encoder.debug_check_bounds::<Self>(offset);
1991 encoder.write_num(self.into_primitive(), offset);
1992 Ok(())
1993 }
1994 }
1995
1996 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64State {
1997 #[inline(always)]
1998 fn new_empty() -> Self {
1999 Self::unknown()
2000 }
2001
2002 #[inline]
2003 unsafe fn decode(
2004 &mut self,
2005 decoder: &mut fidl::encoding::Decoder<'_, D>,
2006 offset: usize,
2007 _depth: fidl::encoding::Depth,
2008 ) -> fidl::Result<()> {
2009 decoder.debug_check_bounds::<Self>(offset);
2010 let prim = decoder.read_num::<u32>(offset);
2011
2012 *self = Self::from_primitive_allow_unknown(prim);
2013 Ok(())
2014 }
2015 }
2016 unsafe impl fidl::encoding::TypeMarker for ProvisionError {
2017 type Owned = Self;
2018
2019 #[inline(always)]
2020 fn inline_align(_context: fidl::encoding::Context) -> usize {
2021 std::mem::align_of::<i32>()
2022 }
2023
2024 #[inline(always)]
2025 fn inline_size(_context: fidl::encoding::Context) -> usize {
2026 std::mem::size_of::<i32>()
2027 }
2028
2029 #[inline(always)]
2030 fn encode_is_copy() -> bool {
2031 false
2032 }
2033
2034 #[inline(always)]
2035 fn decode_is_copy() -> bool {
2036 false
2037 }
2038 }
2039
2040 impl fidl::encoding::ValueTypeMarker for ProvisionError {
2041 type Borrowed<'a> = Self;
2042 #[inline(always)]
2043 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2044 *value
2045 }
2046 }
2047
2048 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ProvisionError {
2049 #[inline]
2050 unsafe fn encode(
2051 self,
2052 encoder: &mut fidl::encoding::Encoder<'_, D>,
2053 offset: usize,
2054 _depth: fidl::encoding::Depth,
2055 ) -> fidl::Result<()> {
2056 encoder.debug_check_bounds::<Self>(offset);
2057 encoder.write_num(self.into_primitive(), offset);
2058 Ok(())
2059 }
2060 }
2061
2062 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProvisionError {
2063 #[inline(always)]
2064 fn new_empty() -> Self {
2065 Self::unknown()
2066 }
2067
2068 #[inline]
2069 unsafe fn decode(
2070 &mut self,
2071 decoder: &mut fidl::encoding::Decoder<'_, D>,
2072 offset: usize,
2073 _depth: fidl::encoding::Depth,
2074 ) -> fidl::Result<()> {
2075 decoder.debug_check_bounds::<Self>(offset);
2076 let prim = decoder.read_num::<i32>(offset);
2077
2078 *self = Self::from_primitive_allow_unknown(prim);
2079 Ok(())
2080 }
2081 }
2082 unsafe impl fidl::encoding::TypeMarker for RoutePreference {
2083 type Owned = Self;
2084
2085 #[inline(always)]
2086 fn inline_align(_context: fidl::encoding::Context) -> usize {
2087 std::mem::align_of::<i8>()
2088 }
2089
2090 #[inline(always)]
2091 fn inline_size(_context: fidl::encoding::Context) -> usize {
2092 std::mem::size_of::<i8>()
2093 }
2094
2095 #[inline(always)]
2096 fn encode_is_copy() -> bool {
2097 true
2098 }
2099
2100 #[inline(always)]
2101 fn decode_is_copy() -> bool {
2102 false
2103 }
2104 }
2105
2106 impl fidl::encoding::ValueTypeMarker for RoutePreference {
2107 type Borrowed<'a> = Self;
2108 #[inline(always)]
2109 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2110 *value
2111 }
2112 }
2113
2114 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2115 for RoutePreference
2116 {
2117 #[inline]
2118 unsafe fn encode(
2119 self,
2120 encoder: &mut fidl::encoding::Encoder<'_, D>,
2121 offset: usize,
2122 _depth: fidl::encoding::Depth,
2123 ) -> fidl::Result<()> {
2124 encoder.debug_check_bounds::<Self>(offset);
2125 encoder.write_num(self.into_primitive(), offset);
2126 Ok(())
2127 }
2128 }
2129
2130 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoutePreference {
2131 #[inline(always)]
2132 fn new_empty() -> Self {
2133 Self::Low
2134 }
2135
2136 #[inline]
2137 unsafe fn decode(
2138 &mut self,
2139 decoder: &mut fidl::encoding::Decoder<'_, D>,
2140 offset: usize,
2141 _depth: fidl::encoding::Depth,
2142 ) -> fidl::Result<()> {
2143 decoder.debug_check_bounds::<Self>(offset);
2144 let prim = decoder.read_num::<i8>(offset);
2145
2146 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2147 Ok(())
2148 }
2149 }
2150 unsafe impl fidl::encoding::TypeMarker for SrpServerAddressMode {
2151 type Owned = Self;
2152
2153 #[inline(always)]
2154 fn inline_align(_context: fidl::encoding::Context) -> usize {
2155 std::mem::align_of::<u32>()
2156 }
2157
2158 #[inline(always)]
2159 fn inline_size(_context: fidl::encoding::Context) -> usize {
2160 std::mem::size_of::<u32>()
2161 }
2162
2163 #[inline(always)]
2164 fn encode_is_copy() -> bool {
2165 true
2166 }
2167
2168 #[inline(always)]
2169 fn decode_is_copy() -> bool {
2170 false
2171 }
2172 }
2173
2174 impl fidl::encoding::ValueTypeMarker for SrpServerAddressMode {
2175 type Borrowed<'a> = Self;
2176 #[inline(always)]
2177 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2178 *value
2179 }
2180 }
2181
2182 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2183 for SrpServerAddressMode
2184 {
2185 #[inline]
2186 unsafe fn encode(
2187 self,
2188 encoder: &mut fidl::encoding::Encoder<'_, D>,
2189 offset: usize,
2190 _depth: fidl::encoding::Depth,
2191 ) -> fidl::Result<()> {
2192 encoder.debug_check_bounds::<Self>(offset);
2193 encoder.write_num(self.into_primitive(), offset);
2194 Ok(())
2195 }
2196 }
2197
2198 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerAddressMode {
2199 #[inline(always)]
2200 fn new_empty() -> Self {
2201 Self::Unicast
2202 }
2203
2204 #[inline]
2205 unsafe fn decode(
2206 &mut self,
2207 decoder: &mut fidl::encoding::Decoder<'_, D>,
2208 offset: usize,
2209 _depth: fidl::encoding::Depth,
2210 ) -> fidl::Result<()> {
2211 decoder.debug_check_bounds::<Self>(offset);
2212 let prim = decoder.read_num::<u32>(offset);
2213
2214 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2215 Ok(())
2216 }
2217 }
2218 unsafe impl fidl::encoding::TypeMarker for SrpServerState {
2219 type Owned = Self;
2220
2221 #[inline(always)]
2222 fn inline_align(_context: fidl::encoding::Context) -> usize {
2223 std::mem::align_of::<u32>()
2224 }
2225
2226 #[inline(always)]
2227 fn inline_size(_context: fidl::encoding::Context) -> usize {
2228 std::mem::size_of::<u32>()
2229 }
2230
2231 #[inline(always)]
2232 fn encode_is_copy() -> bool {
2233 true
2234 }
2235
2236 #[inline(always)]
2237 fn decode_is_copy() -> bool {
2238 false
2239 }
2240 }
2241
2242 impl fidl::encoding::ValueTypeMarker for SrpServerState {
2243 type Borrowed<'a> = Self;
2244 #[inline(always)]
2245 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2246 *value
2247 }
2248 }
2249
2250 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for SrpServerState {
2251 #[inline]
2252 unsafe fn encode(
2253 self,
2254 encoder: &mut fidl::encoding::Encoder<'_, D>,
2255 offset: usize,
2256 _depth: fidl::encoding::Depth,
2257 ) -> fidl::Result<()> {
2258 encoder.debug_check_bounds::<Self>(offset);
2259 encoder.write_num(self.into_primitive(), offset);
2260 Ok(())
2261 }
2262 }
2263
2264 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerState {
2265 #[inline(always)]
2266 fn new_empty() -> Self {
2267 Self::Disabled
2268 }
2269
2270 #[inline]
2271 unsafe fn decode(
2272 &mut self,
2273 decoder: &mut fidl::encoding::Decoder<'_, D>,
2274 offset: usize,
2275 _depth: fidl::encoding::Depth,
2276 ) -> fidl::Result<()> {
2277 decoder.debug_check_bounds::<Self>(offset);
2278 let prim = decoder.read_num::<u32>(offset);
2279
2280 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2281 Ok(())
2282 }
2283 }
2284 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsQueryState {
2285 type Owned = Self;
2286
2287 #[inline(always)]
2288 fn inline_align(_context: fidl::encoding::Context) -> usize {
2289 std::mem::align_of::<u32>()
2290 }
2291
2292 #[inline(always)]
2293 fn inline_size(_context: fidl::encoding::Context) -> usize {
2294 std::mem::size_of::<u32>()
2295 }
2296
2297 #[inline(always)]
2298 fn encode_is_copy() -> bool {
2299 false
2300 }
2301
2302 #[inline(always)]
2303 fn decode_is_copy() -> bool {
2304 false
2305 }
2306 }
2307
2308 impl fidl::encoding::ValueTypeMarker for UpstreamDnsQueryState {
2309 type Borrowed<'a> = Self;
2310 #[inline(always)]
2311 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2312 *value
2313 }
2314 }
2315
2316 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2317 for UpstreamDnsQueryState
2318 {
2319 #[inline]
2320 unsafe fn encode(
2321 self,
2322 encoder: &mut fidl::encoding::Encoder<'_, D>,
2323 offset: usize,
2324 _depth: fidl::encoding::Depth,
2325 ) -> fidl::Result<()> {
2326 encoder.debug_check_bounds::<Self>(offset);
2327 encoder.write_num(self.into_primitive(), offset);
2328 Ok(())
2329 }
2330 }
2331
2332 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsQueryState {
2333 #[inline(always)]
2334 fn new_empty() -> Self {
2335 Self::unknown()
2336 }
2337
2338 #[inline]
2339 unsafe fn decode(
2340 &mut self,
2341 decoder: &mut fidl::encoding::Decoder<'_, D>,
2342 offset: usize,
2343 _depth: fidl::encoding::Depth,
2344 ) -> fidl::Result<()> {
2345 decoder.debug_check_bounds::<Self>(offset);
2346 let prim = decoder.read_num::<u32>(offset);
2347
2348 *self = Self::from_primitive_allow_unknown(prim);
2349 Ok(())
2350 }
2351 }
2352
2353 impl fidl::encoding::ValueTypeMarker for BeaconInfoStreamNextResponse {
2354 type Borrowed<'a> = &'a Self;
2355 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2356 value
2357 }
2358 }
2359
2360 unsafe impl fidl::encoding::TypeMarker for BeaconInfoStreamNextResponse {
2361 type Owned = Self;
2362
2363 #[inline(always)]
2364 fn inline_align(_context: fidl::encoding::Context) -> usize {
2365 8
2366 }
2367
2368 #[inline(always)]
2369 fn inline_size(_context: fidl::encoding::Context) -> usize {
2370 16
2371 }
2372 }
2373
2374 unsafe impl<D: fidl::encoding::ResourceDialect>
2375 fidl::encoding::Encode<BeaconInfoStreamNextResponse, D> for &BeaconInfoStreamNextResponse
2376 {
2377 #[inline]
2378 unsafe fn encode(
2379 self,
2380 encoder: &mut fidl::encoding::Encoder<'_, D>,
2381 offset: usize,
2382 _depth: fidl::encoding::Depth,
2383 ) -> fidl::Result<()> {
2384 encoder.debug_check_bounds::<BeaconInfoStreamNextResponse>(offset);
2385 fidl::encoding::Encode::<BeaconInfoStreamNextResponse, D>::encode(
2387 (
2388 <fidl::encoding::Vector<BeaconInfo, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.beacons),
2389 ),
2390 encoder, offset, _depth
2391 )
2392 }
2393 }
2394 unsafe impl<
2395 D: fidl::encoding::ResourceDialect,
2396 T0: fidl::encoding::Encode<fidl::encoding::Vector<BeaconInfo, 32>, D>,
2397 > fidl::encoding::Encode<BeaconInfoStreamNextResponse, D> for (T0,)
2398 {
2399 #[inline]
2400 unsafe fn encode(
2401 self,
2402 encoder: &mut fidl::encoding::Encoder<'_, D>,
2403 offset: usize,
2404 depth: fidl::encoding::Depth,
2405 ) -> fidl::Result<()> {
2406 encoder.debug_check_bounds::<BeaconInfoStreamNextResponse>(offset);
2407 self.0.encode(encoder, offset + 0, depth)?;
2411 Ok(())
2412 }
2413 }
2414
2415 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2416 for BeaconInfoStreamNextResponse
2417 {
2418 #[inline(always)]
2419 fn new_empty() -> Self {
2420 Self { beacons: fidl::new_empty!(fidl::encoding::Vector<BeaconInfo, 32>, D) }
2421 }
2422
2423 #[inline]
2424 unsafe fn decode(
2425 &mut self,
2426 decoder: &mut fidl::encoding::Decoder<'_, D>,
2427 offset: usize,
2428 _depth: fidl::encoding::Depth,
2429 ) -> fidl::Result<()> {
2430 decoder.debug_check_bounds::<Self>(offset);
2431 fidl::decode!(fidl::encoding::Vector<BeaconInfo, 32>, D, &mut self.beacons, decoder, offset + 0, _depth)?;
2433 Ok(())
2434 }
2435 }
2436
2437 impl fidl::encoding::ValueTypeMarker for DeviceGetSupportedChannelsResponse {
2438 type Borrowed<'a> = &'a Self;
2439 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2440 value
2441 }
2442 }
2443
2444 unsafe impl fidl::encoding::TypeMarker for DeviceGetSupportedChannelsResponse {
2445 type Owned = Self;
2446
2447 #[inline(always)]
2448 fn inline_align(_context: fidl::encoding::Context) -> usize {
2449 8
2450 }
2451
2452 #[inline(always)]
2453 fn inline_size(_context: fidl::encoding::Context) -> usize {
2454 16
2455 }
2456 }
2457
2458 unsafe impl<D: fidl::encoding::ResourceDialect>
2459 fidl::encoding::Encode<DeviceGetSupportedChannelsResponse, D>
2460 for &DeviceGetSupportedChannelsResponse
2461 {
2462 #[inline]
2463 unsafe fn encode(
2464 self,
2465 encoder: &mut fidl::encoding::Encoder<'_, D>,
2466 offset: usize,
2467 _depth: fidl::encoding::Depth,
2468 ) -> fidl::Result<()> {
2469 encoder.debug_check_bounds::<DeviceGetSupportedChannelsResponse>(offset);
2470 fidl::encoding::Encode::<DeviceGetSupportedChannelsResponse, D>::encode(
2472 (
2473 <fidl::encoding::Vector<ChannelInfo, 200> as fidl::encoding::ValueTypeMarker>::borrow(&self.channels_info),
2474 ),
2475 encoder, offset, _depth
2476 )
2477 }
2478 }
2479 unsafe impl<
2480 D: fidl::encoding::ResourceDialect,
2481 T0: fidl::encoding::Encode<fidl::encoding::Vector<ChannelInfo, 200>, D>,
2482 > fidl::encoding::Encode<DeviceGetSupportedChannelsResponse, D> for (T0,)
2483 {
2484 #[inline]
2485 unsafe fn encode(
2486 self,
2487 encoder: &mut fidl::encoding::Encoder<'_, D>,
2488 offset: usize,
2489 depth: fidl::encoding::Depth,
2490 ) -> fidl::Result<()> {
2491 encoder.debug_check_bounds::<DeviceGetSupportedChannelsResponse>(offset);
2492 self.0.encode(encoder, offset + 0, depth)?;
2496 Ok(())
2497 }
2498 }
2499
2500 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2501 for DeviceGetSupportedChannelsResponse
2502 {
2503 #[inline(always)]
2504 fn new_empty() -> Self {
2505 Self { channels_info: fidl::new_empty!(fidl::encoding::Vector<ChannelInfo, 200>, D) }
2506 }
2507
2508 #[inline]
2509 unsafe fn decode(
2510 &mut self,
2511 decoder: &mut fidl::encoding::Decoder<'_, D>,
2512 offset: usize,
2513 _depth: fidl::encoding::Depth,
2514 ) -> fidl::Result<()> {
2515 decoder.debug_check_bounds::<Self>(offset);
2516 fidl::decode!(fidl::encoding::Vector<ChannelInfo, 200>, D, &mut self.channels_info, decoder, offset + 0, _depth)?;
2518 Ok(())
2519 }
2520 }
2521
2522 impl fidl::encoding::ValueTypeMarker for DeviceRouteExtraGetLocalExternalRoutesResponse {
2523 type Borrowed<'a> = &'a Self;
2524 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2525 value
2526 }
2527 }
2528
2529 unsafe impl fidl::encoding::TypeMarker for DeviceRouteExtraGetLocalExternalRoutesResponse {
2530 type Owned = Self;
2531
2532 #[inline(always)]
2533 fn inline_align(_context: fidl::encoding::Context) -> usize {
2534 8
2535 }
2536
2537 #[inline(always)]
2538 fn inline_size(_context: fidl::encoding::Context) -> usize {
2539 16
2540 }
2541 }
2542
2543 unsafe impl<D: fidl::encoding::ResourceDialect>
2544 fidl::encoding::Encode<DeviceRouteExtraGetLocalExternalRoutesResponse, D>
2545 for &DeviceRouteExtraGetLocalExternalRoutesResponse
2546 {
2547 #[inline]
2548 unsafe fn encode(
2549 self,
2550 encoder: &mut fidl::encoding::Encoder<'_, D>,
2551 offset: usize,
2552 _depth: fidl::encoding::Depth,
2553 ) -> fidl::Result<()> {
2554 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalExternalRoutesResponse>(offset);
2555 fidl::encoding::Encode::<DeviceRouteExtraGetLocalExternalRoutesResponse, D>::encode(
2557 (
2558 <fidl::encoding::Vector<ExternalRoute, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.external_routes),
2559 ),
2560 encoder, offset, _depth
2561 )
2562 }
2563 }
2564 unsafe impl<
2565 D: fidl::encoding::ResourceDialect,
2566 T0: fidl::encoding::Encode<fidl::encoding::Vector<ExternalRoute, 32>, D>,
2567 > fidl::encoding::Encode<DeviceRouteExtraGetLocalExternalRoutesResponse, D> for (T0,)
2568 {
2569 #[inline]
2570 unsafe fn encode(
2571 self,
2572 encoder: &mut fidl::encoding::Encoder<'_, D>,
2573 offset: usize,
2574 depth: fidl::encoding::Depth,
2575 ) -> fidl::Result<()> {
2576 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalExternalRoutesResponse>(offset);
2577 self.0.encode(encoder, offset + 0, depth)?;
2581 Ok(())
2582 }
2583 }
2584
2585 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2586 for DeviceRouteExtraGetLocalExternalRoutesResponse
2587 {
2588 #[inline(always)]
2589 fn new_empty() -> Self {
2590 Self { external_routes: fidl::new_empty!(fidl::encoding::Vector<ExternalRoute, 32>, D) }
2591 }
2592
2593 #[inline]
2594 unsafe fn decode(
2595 &mut self,
2596 decoder: &mut fidl::encoding::Decoder<'_, D>,
2597 offset: usize,
2598 _depth: fidl::encoding::Depth,
2599 ) -> fidl::Result<()> {
2600 decoder.debug_check_bounds::<Self>(offset);
2601 fidl::decode!(fidl::encoding::Vector<ExternalRoute, 32>, D, &mut self.external_routes, decoder, offset + 0, _depth)?;
2603 Ok(())
2604 }
2605 }
2606
2607 impl fidl::encoding::ValueTypeMarker for DeviceRouteExtraGetLocalOnMeshPrefixesResponse {
2608 type Borrowed<'a> = &'a Self;
2609 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2610 value
2611 }
2612 }
2613
2614 unsafe impl fidl::encoding::TypeMarker for DeviceRouteExtraGetLocalOnMeshPrefixesResponse {
2615 type Owned = Self;
2616
2617 #[inline(always)]
2618 fn inline_align(_context: fidl::encoding::Context) -> usize {
2619 8
2620 }
2621
2622 #[inline(always)]
2623 fn inline_size(_context: fidl::encoding::Context) -> usize {
2624 16
2625 }
2626 }
2627
2628 unsafe impl<D: fidl::encoding::ResourceDialect>
2629 fidl::encoding::Encode<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D>
2630 for &DeviceRouteExtraGetLocalOnMeshPrefixesResponse
2631 {
2632 #[inline]
2633 unsafe fn encode(
2634 self,
2635 encoder: &mut fidl::encoding::Encoder<'_, D>,
2636 offset: usize,
2637 _depth: fidl::encoding::Depth,
2638 ) -> fidl::Result<()> {
2639 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse>(offset);
2640 fidl::encoding::Encode::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D>::encode(
2642 (
2643 <fidl::encoding::Vector<OnMeshPrefix, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.prefixes),
2644 ),
2645 encoder, offset, _depth
2646 )
2647 }
2648 }
2649 unsafe impl<
2650 D: fidl::encoding::ResourceDialect,
2651 T0: fidl::encoding::Encode<fidl::encoding::Vector<OnMeshPrefix, 32>, D>,
2652 > fidl::encoding::Encode<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D> for (T0,)
2653 {
2654 #[inline]
2655 unsafe fn encode(
2656 self,
2657 encoder: &mut fidl::encoding::Encoder<'_, D>,
2658 offset: usize,
2659 depth: fidl::encoding::Depth,
2660 ) -> fidl::Result<()> {
2661 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse>(offset);
2662 self.0.encode(encoder, offset + 0, depth)?;
2666 Ok(())
2667 }
2668 }
2669
2670 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2671 for DeviceRouteExtraGetLocalOnMeshPrefixesResponse
2672 {
2673 #[inline(always)]
2674 fn new_empty() -> Self {
2675 Self { prefixes: fidl::new_empty!(fidl::encoding::Vector<OnMeshPrefix, 32>, D) }
2676 }
2677
2678 #[inline]
2679 unsafe fn decode(
2680 &mut self,
2681 decoder: &mut fidl::encoding::Decoder<'_, D>,
2682 offset: usize,
2683 _depth: fidl::encoding::Depth,
2684 ) -> fidl::Result<()> {
2685 decoder.debug_check_bounds::<Self>(offset);
2686 fidl::decode!(fidl::encoding::Vector<OnMeshPrefix, 32>, D, &mut self.prefixes, decoder, offset + 0, _depth)?;
2688 Ok(())
2689 }
2690 }
2691
2692 impl fidl::encoding::ValueTypeMarker for DeviceRouteRegisterExternalRouteRequest {
2693 type Borrowed<'a> = &'a Self;
2694 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2695 value
2696 }
2697 }
2698
2699 unsafe impl fidl::encoding::TypeMarker for DeviceRouteRegisterExternalRouteRequest {
2700 type Owned = Self;
2701
2702 #[inline(always)]
2703 fn inline_align(_context: fidl::encoding::Context) -> usize {
2704 8
2705 }
2706
2707 #[inline(always)]
2708 fn inline_size(_context: fidl::encoding::Context) -> usize {
2709 16
2710 }
2711 }
2712
2713 unsafe impl<D: fidl::encoding::ResourceDialect>
2714 fidl::encoding::Encode<DeviceRouteRegisterExternalRouteRequest, D>
2715 for &DeviceRouteRegisterExternalRouteRequest
2716 {
2717 #[inline]
2718 unsafe fn encode(
2719 self,
2720 encoder: &mut fidl::encoding::Encoder<'_, D>,
2721 offset: usize,
2722 _depth: fidl::encoding::Depth,
2723 ) -> fidl::Result<()> {
2724 encoder.debug_check_bounds::<DeviceRouteRegisterExternalRouteRequest>(offset);
2725 fidl::encoding::Encode::<DeviceRouteRegisterExternalRouteRequest, D>::encode(
2727 (<ExternalRoute as fidl::encoding::ValueTypeMarker>::borrow(&self.external_route),),
2728 encoder,
2729 offset,
2730 _depth,
2731 )
2732 }
2733 }
2734 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ExternalRoute, D>>
2735 fidl::encoding::Encode<DeviceRouteRegisterExternalRouteRequest, D> for (T0,)
2736 {
2737 #[inline]
2738 unsafe fn encode(
2739 self,
2740 encoder: &mut fidl::encoding::Encoder<'_, D>,
2741 offset: usize,
2742 depth: fidl::encoding::Depth,
2743 ) -> fidl::Result<()> {
2744 encoder.debug_check_bounds::<DeviceRouteRegisterExternalRouteRequest>(offset);
2745 self.0.encode(encoder, offset + 0, depth)?;
2749 Ok(())
2750 }
2751 }
2752
2753 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2754 for DeviceRouteRegisterExternalRouteRequest
2755 {
2756 #[inline(always)]
2757 fn new_empty() -> Self {
2758 Self { external_route: fidl::new_empty!(ExternalRoute, D) }
2759 }
2760
2761 #[inline]
2762 unsafe fn decode(
2763 &mut self,
2764 decoder: &mut fidl::encoding::Decoder<'_, D>,
2765 offset: usize,
2766 _depth: fidl::encoding::Depth,
2767 ) -> fidl::Result<()> {
2768 decoder.debug_check_bounds::<Self>(offset);
2769 fidl::decode!(ExternalRoute, D, &mut self.external_route, decoder, offset + 0, _depth)?;
2771 Ok(())
2772 }
2773 }
2774
2775 impl fidl::encoding::ValueTypeMarker for DeviceRouteRegisterOnMeshPrefixRequest {
2776 type Borrowed<'a> = &'a Self;
2777 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2778 value
2779 }
2780 }
2781
2782 unsafe impl fidl::encoding::TypeMarker for DeviceRouteRegisterOnMeshPrefixRequest {
2783 type Owned = Self;
2784
2785 #[inline(always)]
2786 fn inline_align(_context: fidl::encoding::Context) -> usize {
2787 8
2788 }
2789
2790 #[inline(always)]
2791 fn inline_size(_context: fidl::encoding::Context) -> usize {
2792 16
2793 }
2794 }
2795
2796 unsafe impl<D: fidl::encoding::ResourceDialect>
2797 fidl::encoding::Encode<DeviceRouteRegisterOnMeshPrefixRequest, D>
2798 for &DeviceRouteRegisterOnMeshPrefixRequest
2799 {
2800 #[inline]
2801 unsafe fn encode(
2802 self,
2803 encoder: &mut fidl::encoding::Encoder<'_, D>,
2804 offset: usize,
2805 _depth: fidl::encoding::Depth,
2806 ) -> fidl::Result<()> {
2807 encoder.debug_check_bounds::<DeviceRouteRegisterOnMeshPrefixRequest>(offset);
2808 fidl::encoding::Encode::<DeviceRouteRegisterOnMeshPrefixRequest, D>::encode(
2810 (<OnMeshPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.prefix),),
2811 encoder,
2812 offset,
2813 _depth,
2814 )
2815 }
2816 }
2817 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<OnMeshPrefix, D>>
2818 fidl::encoding::Encode<DeviceRouteRegisterOnMeshPrefixRequest, D> for (T0,)
2819 {
2820 #[inline]
2821 unsafe fn encode(
2822 self,
2823 encoder: &mut fidl::encoding::Encoder<'_, D>,
2824 offset: usize,
2825 depth: fidl::encoding::Depth,
2826 ) -> fidl::Result<()> {
2827 encoder.debug_check_bounds::<DeviceRouteRegisterOnMeshPrefixRequest>(offset);
2828 self.0.encode(encoder, offset + 0, depth)?;
2832 Ok(())
2833 }
2834 }
2835
2836 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2837 for DeviceRouteRegisterOnMeshPrefixRequest
2838 {
2839 #[inline(always)]
2840 fn new_empty() -> Self {
2841 Self { prefix: fidl::new_empty!(OnMeshPrefix, D) }
2842 }
2843
2844 #[inline]
2845 unsafe fn decode(
2846 &mut self,
2847 decoder: &mut fidl::encoding::Decoder<'_, D>,
2848 offset: usize,
2849 _depth: fidl::encoding::Depth,
2850 ) -> fidl::Result<()> {
2851 decoder.debug_check_bounds::<Self>(offset);
2852 fidl::decode!(OnMeshPrefix, D, &mut self.prefix, decoder, offset + 0, _depth)?;
2854 Ok(())
2855 }
2856 }
2857
2858 impl fidl::encoding::ValueTypeMarker for DeviceRouteUnregisterExternalRouteRequest {
2859 type Borrowed<'a> = &'a Self;
2860 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2861 value
2862 }
2863 }
2864
2865 unsafe impl fidl::encoding::TypeMarker for DeviceRouteUnregisterExternalRouteRequest {
2866 type Owned = Self;
2867
2868 #[inline(always)]
2869 fn inline_align(_context: fidl::encoding::Context) -> usize {
2870 1
2871 }
2872
2873 #[inline(always)]
2874 fn inline_size(_context: fidl::encoding::Context) -> usize {
2875 17
2876 }
2877 }
2878
2879 unsafe impl<D: fidl::encoding::ResourceDialect>
2880 fidl::encoding::Encode<DeviceRouteUnregisterExternalRouteRequest, D>
2881 for &DeviceRouteUnregisterExternalRouteRequest
2882 {
2883 #[inline]
2884 unsafe fn encode(
2885 self,
2886 encoder: &mut fidl::encoding::Encoder<'_, D>,
2887 offset: usize,
2888 _depth: fidl::encoding::Depth,
2889 ) -> fidl::Result<()> {
2890 encoder.debug_check_bounds::<DeviceRouteUnregisterExternalRouteRequest>(offset);
2891 fidl::encoding::Encode::<DeviceRouteUnregisterExternalRouteRequest, D>::encode(
2893 (
2894 <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.subnet),
2895 ),
2896 encoder, offset, _depth
2897 )
2898 }
2899 }
2900 unsafe impl<
2901 D: fidl::encoding::ResourceDialect,
2902 T0: fidl::encoding::Encode<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>,
2903 > fidl::encoding::Encode<DeviceRouteUnregisterExternalRouteRequest, D> for (T0,)
2904 {
2905 #[inline]
2906 unsafe fn encode(
2907 self,
2908 encoder: &mut fidl::encoding::Encoder<'_, D>,
2909 offset: usize,
2910 depth: fidl::encoding::Depth,
2911 ) -> fidl::Result<()> {
2912 encoder.debug_check_bounds::<DeviceRouteUnregisterExternalRouteRequest>(offset);
2913 self.0.encode(encoder, offset + 0, depth)?;
2917 Ok(())
2918 }
2919 }
2920
2921 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2922 for DeviceRouteUnregisterExternalRouteRequest
2923 {
2924 #[inline(always)]
2925 fn new_empty() -> Self {
2926 Self { subnet: fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D) }
2927 }
2928
2929 #[inline]
2930 unsafe fn decode(
2931 &mut self,
2932 decoder: &mut fidl::encoding::Decoder<'_, D>,
2933 offset: usize,
2934 _depth: fidl::encoding::Depth,
2935 ) -> fidl::Result<()> {
2936 decoder.debug_check_bounds::<Self>(offset);
2937 fidl::decode!(
2939 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
2940 D,
2941 &mut self.subnet,
2942 decoder,
2943 offset + 0,
2944 _depth
2945 )?;
2946 Ok(())
2947 }
2948 }
2949
2950 impl fidl::encoding::ValueTypeMarker for DeviceRouteUnregisterOnMeshPrefixRequest {
2951 type Borrowed<'a> = &'a Self;
2952 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2953 value
2954 }
2955 }
2956
2957 unsafe impl fidl::encoding::TypeMarker for DeviceRouteUnregisterOnMeshPrefixRequest {
2958 type Owned = Self;
2959
2960 #[inline(always)]
2961 fn inline_align(_context: fidl::encoding::Context) -> usize {
2962 1
2963 }
2964
2965 #[inline(always)]
2966 fn inline_size(_context: fidl::encoding::Context) -> usize {
2967 17
2968 }
2969 }
2970
2971 unsafe impl<D: fidl::encoding::ResourceDialect>
2972 fidl::encoding::Encode<DeviceRouteUnregisterOnMeshPrefixRequest, D>
2973 for &DeviceRouteUnregisterOnMeshPrefixRequest
2974 {
2975 #[inline]
2976 unsafe fn encode(
2977 self,
2978 encoder: &mut fidl::encoding::Encoder<'_, D>,
2979 offset: usize,
2980 _depth: fidl::encoding::Depth,
2981 ) -> fidl::Result<()> {
2982 encoder.debug_check_bounds::<DeviceRouteUnregisterOnMeshPrefixRequest>(offset);
2983 fidl::encoding::Encode::<DeviceRouteUnregisterOnMeshPrefixRequest, D>::encode(
2985 (
2986 <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.subnet),
2987 ),
2988 encoder, offset, _depth
2989 )
2990 }
2991 }
2992 unsafe impl<
2993 D: fidl::encoding::ResourceDialect,
2994 T0: fidl::encoding::Encode<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>,
2995 > fidl::encoding::Encode<DeviceRouteUnregisterOnMeshPrefixRequest, D> for (T0,)
2996 {
2997 #[inline]
2998 unsafe fn encode(
2999 self,
3000 encoder: &mut fidl::encoding::Encoder<'_, D>,
3001 offset: usize,
3002 depth: fidl::encoding::Depth,
3003 ) -> fidl::Result<()> {
3004 encoder.debug_check_bounds::<DeviceRouteUnregisterOnMeshPrefixRequest>(offset);
3005 self.0.encode(encoder, offset + 0, depth)?;
3009 Ok(())
3010 }
3011 }
3012
3013 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3014 for DeviceRouteUnregisterOnMeshPrefixRequest
3015 {
3016 #[inline(always)]
3017 fn new_empty() -> Self {
3018 Self { subnet: fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D) }
3019 }
3020
3021 #[inline]
3022 unsafe fn decode(
3023 &mut self,
3024 decoder: &mut fidl::encoding::Decoder<'_, D>,
3025 offset: usize,
3026 _depth: fidl::encoding::Depth,
3027 ) -> fidl::Result<()> {
3028 decoder.debug_check_bounds::<Self>(offset);
3029 fidl::decode!(
3031 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
3032 D,
3033 &mut self.subnet,
3034 decoder,
3035 offset + 0,
3036 _depth
3037 )?;
3038 Ok(())
3039 }
3040 }
3041
3042 impl fidl::encoding::ValueTypeMarker for LegacyJoiningMakeJoinableRequest {
3043 type Borrowed<'a> = &'a Self;
3044 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3045 value
3046 }
3047 }
3048
3049 unsafe impl fidl::encoding::TypeMarker for LegacyJoiningMakeJoinableRequest {
3050 type Owned = Self;
3051
3052 #[inline(always)]
3053 fn inline_align(_context: fidl::encoding::Context) -> usize {
3054 8
3055 }
3056
3057 #[inline(always)]
3058 fn inline_size(_context: fidl::encoding::Context) -> usize {
3059 16
3060 }
3061 }
3062
3063 unsafe impl<D: fidl::encoding::ResourceDialect>
3064 fidl::encoding::Encode<LegacyJoiningMakeJoinableRequest, D>
3065 for &LegacyJoiningMakeJoinableRequest
3066 {
3067 #[inline]
3068 unsafe fn encode(
3069 self,
3070 encoder: &mut fidl::encoding::Encoder<'_, D>,
3071 offset: usize,
3072 _depth: fidl::encoding::Depth,
3073 ) -> fidl::Result<()> {
3074 encoder.debug_check_bounds::<LegacyJoiningMakeJoinableRequest>(offset);
3075 unsafe {
3076 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3078 (buf_ptr as *mut LegacyJoiningMakeJoinableRequest)
3079 .write_unaligned((self as *const LegacyJoiningMakeJoinableRequest).read());
3080 let padding_ptr = buf_ptr.offset(8) as *mut u64;
3083 let padding_mask = 0xffffffffffff0000u64;
3084 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
3085 }
3086 Ok(())
3087 }
3088 }
3089 unsafe impl<
3090 D: fidl::encoding::ResourceDialect,
3091 T0: fidl::encoding::Encode<i64, D>,
3092 T1: fidl::encoding::Encode<u16, D>,
3093 > fidl::encoding::Encode<LegacyJoiningMakeJoinableRequest, D> for (T0, T1)
3094 {
3095 #[inline]
3096 unsafe fn encode(
3097 self,
3098 encoder: &mut fidl::encoding::Encoder<'_, D>,
3099 offset: usize,
3100 depth: fidl::encoding::Depth,
3101 ) -> fidl::Result<()> {
3102 encoder.debug_check_bounds::<LegacyJoiningMakeJoinableRequest>(offset);
3103 unsafe {
3106 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
3107 (ptr as *mut u64).write_unaligned(0);
3108 }
3109 self.0.encode(encoder, offset + 0, depth)?;
3111 self.1.encode(encoder, offset + 8, depth)?;
3112 Ok(())
3113 }
3114 }
3115
3116 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3117 for LegacyJoiningMakeJoinableRequest
3118 {
3119 #[inline(always)]
3120 fn new_empty() -> Self {
3121 Self { duration: fidl::new_empty!(i64, D), port: fidl::new_empty!(u16, D) }
3122 }
3123
3124 #[inline]
3125 unsafe fn decode(
3126 &mut self,
3127 decoder: &mut fidl::encoding::Decoder<'_, D>,
3128 offset: usize,
3129 _depth: fidl::encoding::Depth,
3130 ) -> fidl::Result<()> {
3131 decoder.debug_check_bounds::<Self>(offset);
3132 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3133 let ptr = unsafe { buf_ptr.offset(8) };
3135 let padval = unsafe { (ptr as *const u64).read_unaligned() };
3136 let mask = 0xffffffffffff0000u64;
3137 let maskedval = padval & mask;
3138 if maskedval != 0 {
3139 return Err(fidl::Error::NonZeroPadding {
3140 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
3141 });
3142 }
3143 unsafe {
3145 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
3146 }
3147 Ok(())
3148 }
3149 }
3150
3151 impl fidl::encoding::ValueTypeMarker for ProvisioningMonitorWatchProgressResponse {
3152 type Borrowed<'a> = &'a Self;
3153 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3154 value
3155 }
3156 }
3157
3158 unsafe impl fidl::encoding::TypeMarker for ProvisioningMonitorWatchProgressResponse {
3159 type Owned = Self;
3160
3161 #[inline(always)]
3162 fn inline_align(_context: fidl::encoding::Context) -> usize {
3163 8
3164 }
3165
3166 #[inline(always)]
3167 fn inline_size(_context: fidl::encoding::Context) -> usize {
3168 16
3169 }
3170 }
3171
3172 unsafe impl<D: fidl::encoding::ResourceDialect>
3173 fidl::encoding::Encode<ProvisioningMonitorWatchProgressResponse, D>
3174 for &ProvisioningMonitorWatchProgressResponse
3175 {
3176 #[inline]
3177 unsafe fn encode(
3178 self,
3179 encoder: &mut fidl::encoding::Encoder<'_, D>,
3180 offset: usize,
3181 _depth: fidl::encoding::Depth,
3182 ) -> fidl::Result<()> {
3183 encoder.debug_check_bounds::<ProvisioningMonitorWatchProgressResponse>(offset);
3184 fidl::encoding::Encode::<ProvisioningMonitorWatchProgressResponse, D>::encode(
3186 (<ProvisioningProgress as fidl::encoding::ValueTypeMarker>::borrow(&self.progress),),
3187 encoder,
3188 offset,
3189 _depth,
3190 )
3191 }
3192 }
3193 unsafe impl<
3194 D: fidl::encoding::ResourceDialect,
3195 T0: fidl::encoding::Encode<ProvisioningProgress, D>,
3196 > fidl::encoding::Encode<ProvisioningMonitorWatchProgressResponse, D> for (T0,)
3197 {
3198 #[inline]
3199 unsafe fn encode(
3200 self,
3201 encoder: &mut fidl::encoding::Encoder<'_, D>,
3202 offset: usize,
3203 depth: fidl::encoding::Depth,
3204 ) -> fidl::Result<()> {
3205 encoder.debug_check_bounds::<ProvisioningMonitorWatchProgressResponse>(offset);
3206 self.0.encode(encoder, offset + 0, depth)?;
3210 Ok(())
3211 }
3212 }
3213
3214 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3215 for ProvisioningMonitorWatchProgressResponse
3216 {
3217 #[inline(always)]
3218 fn new_empty() -> Self {
3219 Self { progress: fidl::new_empty!(ProvisioningProgress, D) }
3220 }
3221
3222 #[inline]
3223 unsafe fn decode(
3224 &mut self,
3225 decoder: &mut fidl::encoding::Decoder<'_, D>,
3226 offset: usize,
3227 _depth: fidl::encoding::Depth,
3228 ) -> fidl::Result<()> {
3229 decoder.debug_check_bounds::<Self>(offset);
3230 fidl::decode!(
3232 ProvisioningProgress,
3233 D,
3234 &mut self.progress,
3235 decoder,
3236 offset + 0,
3237 _depth
3238 )?;
3239 Ok(())
3240 }
3241 }
3242
3243 impl fidl::encoding::ValueTypeMarker for TelemetryProviderGetTelemetryResponse {
3244 type Borrowed<'a> = &'a Self;
3245 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3246 value
3247 }
3248 }
3249
3250 unsafe impl fidl::encoding::TypeMarker for TelemetryProviderGetTelemetryResponse {
3251 type Owned = Self;
3252
3253 #[inline(always)]
3254 fn inline_align(_context: fidl::encoding::Context) -> usize {
3255 8
3256 }
3257
3258 #[inline(always)]
3259 fn inline_size(_context: fidl::encoding::Context) -> usize {
3260 16
3261 }
3262 }
3263
3264 unsafe impl<D: fidl::encoding::ResourceDialect>
3265 fidl::encoding::Encode<TelemetryProviderGetTelemetryResponse, D>
3266 for &TelemetryProviderGetTelemetryResponse
3267 {
3268 #[inline]
3269 unsafe fn encode(
3270 self,
3271 encoder: &mut fidl::encoding::Encoder<'_, D>,
3272 offset: usize,
3273 _depth: fidl::encoding::Depth,
3274 ) -> fidl::Result<()> {
3275 encoder.debug_check_bounds::<TelemetryProviderGetTelemetryResponse>(offset);
3276 fidl::encoding::Encode::<TelemetryProviderGetTelemetryResponse, D>::encode(
3278 (<Telemetry as fidl::encoding::ValueTypeMarker>::borrow(&self.telemetry),),
3279 encoder,
3280 offset,
3281 _depth,
3282 )
3283 }
3284 }
3285 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Telemetry, D>>
3286 fidl::encoding::Encode<TelemetryProviderGetTelemetryResponse, D> for (T0,)
3287 {
3288 #[inline]
3289 unsafe fn encode(
3290 self,
3291 encoder: &mut fidl::encoding::Encoder<'_, D>,
3292 offset: usize,
3293 depth: fidl::encoding::Depth,
3294 ) -> fidl::Result<()> {
3295 encoder.debug_check_bounds::<TelemetryProviderGetTelemetryResponse>(offset);
3296 self.0.encode(encoder, offset + 0, depth)?;
3300 Ok(())
3301 }
3302 }
3303
3304 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3305 for TelemetryProviderGetTelemetryResponse
3306 {
3307 #[inline(always)]
3308 fn new_empty() -> Self {
3309 Self { telemetry: fidl::new_empty!(Telemetry, D) }
3310 }
3311
3312 #[inline]
3313 unsafe fn decode(
3314 &mut self,
3315 decoder: &mut fidl::encoding::Decoder<'_, D>,
3316 offset: usize,
3317 _depth: fidl::encoding::Depth,
3318 ) -> fidl::Result<()> {
3319 decoder.debug_check_bounds::<Self>(offset);
3320 fidl::decode!(Telemetry, D, &mut self.telemetry, decoder, offset + 0, _depth)?;
3322 Ok(())
3323 }
3324 }
3325
3326 impl BeaconInfo {
3327 #[inline(always)]
3328 fn max_ordinal_present(&self) -> u64 {
3329 if let Some(_) = self.lqi {
3330 return 4;
3331 }
3332 if let Some(_) = self.rssi {
3333 return 3;
3334 }
3335 if let Some(_) = self.identity {
3336 return 2;
3337 }
3338 if let Some(_) = self.address {
3339 return 1;
3340 }
3341 0
3342 }
3343 }
3344
3345 impl fidl::encoding::ValueTypeMarker for BeaconInfo {
3346 type Borrowed<'a> = &'a Self;
3347 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3348 value
3349 }
3350 }
3351
3352 unsafe impl fidl::encoding::TypeMarker for BeaconInfo {
3353 type Owned = Self;
3354
3355 #[inline(always)]
3356 fn inline_align(_context: fidl::encoding::Context) -> usize {
3357 8
3358 }
3359
3360 #[inline(always)]
3361 fn inline_size(_context: fidl::encoding::Context) -> usize {
3362 16
3363 }
3364 }
3365
3366 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BeaconInfo, D>
3367 for &BeaconInfo
3368 {
3369 unsafe fn encode(
3370 self,
3371 encoder: &mut fidl::encoding::Encoder<'_, D>,
3372 offset: usize,
3373 mut depth: fidl::encoding::Depth,
3374 ) -> fidl::Result<()> {
3375 encoder.debug_check_bounds::<BeaconInfo>(offset);
3376 let max_ordinal: u64 = self.max_ordinal_present();
3378 encoder.write_num(max_ordinal, offset);
3379 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3380 if max_ordinal == 0 {
3382 return Ok(());
3383 }
3384 depth.increment()?;
3385 let envelope_size = 8;
3386 let bytes_len = max_ordinal as usize * envelope_size;
3387 #[allow(unused_variables)]
3388 let offset = encoder.out_of_line_offset(bytes_len);
3389 let mut _prev_end_offset: usize = 0;
3390 if 1 > max_ordinal {
3391 return Ok(());
3392 }
3393
3394 let cur_offset: usize = (1 - 1) * envelope_size;
3397
3398 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3400
3401 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan__common::MacAddress, D>(
3406 self.address.as_ref().map(<fidl_fuchsia_lowpan__common::MacAddress as fidl::encoding::ValueTypeMarker>::borrow),
3407 encoder, offset + cur_offset, depth
3408 )?;
3409
3410 _prev_end_offset = cur_offset + envelope_size;
3411 if 2 > max_ordinal {
3412 return Ok(());
3413 }
3414
3415 let cur_offset: usize = (2 - 1) * envelope_size;
3418
3419 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3421
3422 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan_device__common::Identity, D>(
3427 self.identity.as_ref().map(<fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::ValueTypeMarker>::borrow),
3428 encoder, offset + cur_offset, depth
3429 )?;
3430
3431 _prev_end_offset = cur_offset + envelope_size;
3432 if 3 > max_ordinal {
3433 return Ok(());
3434 }
3435
3436 let cur_offset: usize = (3 - 1) * envelope_size;
3439
3440 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3442
3443 fidl::encoding::encode_in_envelope_optional::<i8, D>(
3448 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
3449 encoder,
3450 offset + cur_offset,
3451 depth,
3452 )?;
3453
3454 _prev_end_offset = cur_offset + envelope_size;
3455 if 4 > max_ordinal {
3456 return Ok(());
3457 }
3458
3459 let cur_offset: usize = (4 - 1) * envelope_size;
3462
3463 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3465
3466 fidl::encoding::encode_in_envelope_optional::<u8, D>(
3471 self.lqi.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
3472 encoder,
3473 offset + cur_offset,
3474 depth,
3475 )?;
3476
3477 _prev_end_offset = cur_offset + envelope_size;
3478
3479 Ok(())
3480 }
3481 }
3482
3483 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BeaconInfo {
3484 #[inline(always)]
3485 fn new_empty() -> Self {
3486 Self::default()
3487 }
3488
3489 unsafe fn decode(
3490 &mut self,
3491 decoder: &mut fidl::encoding::Decoder<'_, D>,
3492 offset: usize,
3493 mut depth: fidl::encoding::Depth,
3494 ) -> fidl::Result<()> {
3495 decoder.debug_check_bounds::<Self>(offset);
3496 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3497 None => return Err(fidl::Error::NotNullable),
3498 Some(len) => len,
3499 };
3500 if len == 0 {
3502 return Ok(());
3503 };
3504 depth.increment()?;
3505 let envelope_size = 8;
3506 let bytes_len = len * envelope_size;
3507 let offset = decoder.out_of_line_offset(bytes_len)?;
3508 let mut _next_ordinal_to_read = 0;
3510 let mut next_offset = offset;
3511 let end_offset = offset + bytes_len;
3512 _next_ordinal_to_read += 1;
3513 if next_offset >= end_offset {
3514 return Ok(());
3515 }
3516
3517 while _next_ordinal_to_read < 1 {
3519 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3520 _next_ordinal_to_read += 1;
3521 next_offset += envelope_size;
3522 }
3523
3524 let next_out_of_line = decoder.next_out_of_line();
3525 let handles_before = decoder.remaining_handles();
3526 if let Some((inlined, num_bytes, num_handles)) =
3527 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3528 {
3529 let member_inline_size = <fidl_fuchsia_lowpan__common::MacAddress as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3530 if inlined != (member_inline_size <= 4) {
3531 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3532 }
3533 let inner_offset;
3534 let mut inner_depth = depth.clone();
3535 if inlined {
3536 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3537 inner_offset = next_offset;
3538 } else {
3539 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3540 inner_depth.increment()?;
3541 }
3542 let val_ref = self.address.get_or_insert_with(|| {
3543 fidl::new_empty!(fidl_fuchsia_lowpan__common::MacAddress, D)
3544 });
3545 fidl::decode!(
3546 fidl_fuchsia_lowpan__common::MacAddress,
3547 D,
3548 val_ref,
3549 decoder,
3550 inner_offset,
3551 inner_depth
3552 )?;
3553 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3554 {
3555 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3556 }
3557 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3558 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3559 }
3560 }
3561
3562 next_offset += envelope_size;
3563 _next_ordinal_to_read += 1;
3564 if next_offset >= end_offset {
3565 return Ok(());
3566 }
3567
3568 while _next_ordinal_to_read < 2 {
3570 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3571 _next_ordinal_to_read += 1;
3572 next_offset += envelope_size;
3573 }
3574
3575 let next_out_of_line = decoder.next_out_of_line();
3576 let handles_before = decoder.remaining_handles();
3577 if let Some((inlined, num_bytes, num_handles)) =
3578 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3579 {
3580 let member_inline_size = <fidl_fuchsia_lowpan_device__common::Identity 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.identity.get_or_insert_with(|| {
3594 fidl::new_empty!(fidl_fuchsia_lowpan_device__common::Identity, D)
3595 });
3596 fidl::decode!(
3597 fidl_fuchsia_lowpan_device__common::Identity,
3598 D,
3599 val_ref,
3600 decoder,
3601 inner_offset,
3602 inner_depth
3603 )?;
3604 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3605 {
3606 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3607 }
3608 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3609 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3610 }
3611 }
3612
3613 next_offset += envelope_size;
3614 _next_ordinal_to_read += 1;
3615 if next_offset >= end_offset {
3616 return Ok(());
3617 }
3618
3619 while _next_ordinal_to_read < 3 {
3621 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3622 _next_ordinal_to_read += 1;
3623 next_offset += envelope_size;
3624 }
3625
3626 let next_out_of_line = decoder.next_out_of_line();
3627 let handles_before = decoder.remaining_handles();
3628 if let Some((inlined, num_bytes, num_handles)) =
3629 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3630 {
3631 let member_inline_size =
3632 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3633 if inlined != (member_inline_size <= 4) {
3634 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3635 }
3636 let inner_offset;
3637 let mut inner_depth = depth.clone();
3638 if inlined {
3639 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3640 inner_offset = next_offset;
3641 } else {
3642 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3643 inner_depth.increment()?;
3644 }
3645 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
3646 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
3647 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3648 {
3649 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3650 }
3651 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3652 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3653 }
3654 }
3655
3656 next_offset += envelope_size;
3657 _next_ordinal_to_read += 1;
3658 if next_offset >= end_offset {
3659 return Ok(());
3660 }
3661
3662 while _next_ordinal_to_read < 4 {
3664 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3665 _next_ordinal_to_read += 1;
3666 next_offset += envelope_size;
3667 }
3668
3669 let next_out_of_line = decoder.next_out_of_line();
3670 let handles_before = decoder.remaining_handles();
3671 if let Some((inlined, num_bytes, num_handles)) =
3672 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3673 {
3674 let member_inline_size =
3675 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3676 if inlined != (member_inline_size <= 4) {
3677 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3678 }
3679 let inner_offset;
3680 let mut inner_depth = depth.clone();
3681 if inlined {
3682 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3683 inner_offset = next_offset;
3684 } else {
3685 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3686 inner_depth.increment()?;
3687 }
3688 let val_ref = self.lqi.get_or_insert_with(|| fidl::new_empty!(u8, D));
3689 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
3690 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3691 {
3692 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3693 }
3694 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3695 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3696 }
3697 }
3698
3699 next_offset += envelope_size;
3700
3701 while next_offset < end_offset {
3703 _next_ordinal_to_read += 1;
3704 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3705 next_offset += envelope_size;
3706 }
3707
3708 Ok(())
3709 }
3710 }
3711
3712 impl BorderRoutingCounters {
3713 #[inline(always)]
3714 fn max_ordinal_present(&self) -> u64 {
3715 if let Some(_) = self.outbound_internet_bytes {
3716 return 18;
3717 }
3718 if let Some(_) = self.outbound_internet_packets {
3719 return 17;
3720 }
3721 if let Some(_) = self.inbound_internet_bytes {
3722 return 16;
3723 }
3724 if let Some(_) = self.inbound_internet_packets {
3725 return 15;
3726 }
3727 if let Some(_) = self.rs_tx_failure {
3728 return 14;
3729 }
3730 if let Some(_) = self.rs_tx_success {
3731 return 13;
3732 }
3733 if let Some(_) = self.rs_rx {
3734 return 12;
3735 }
3736 if let Some(_) = self.ra_tx_failure {
3737 return 11;
3738 }
3739 if let Some(_) = self.ra_tx_success {
3740 return 10;
3741 }
3742 if let Some(_) = self.ra_rx {
3743 return 9;
3744 }
3745 if let Some(_) = self.outbound_multicast_bytes {
3746 return 8;
3747 }
3748 if let Some(_) = self.outbound_multicast_packets {
3749 return 7;
3750 }
3751 if let Some(_) = self.outbound_unicast_bytes {
3752 return 6;
3753 }
3754 if let Some(_) = self.outbound_unicast_packets {
3755 return 5;
3756 }
3757 if let Some(_) = self.inbound_multicast_bytes {
3758 return 4;
3759 }
3760 if let Some(_) = self.inbound_multicast_packets {
3761 return 3;
3762 }
3763 if let Some(_) = self.inbound_unicast_bytes {
3764 return 2;
3765 }
3766 if let Some(_) = self.inbound_unicast_packets {
3767 return 1;
3768 }
3769 0
3770 }
3771 }
3772
3773 impl fidl::encoding::ValueTypeMarker for BorderRoutingCounters {
3774 type Borrowed<'a> = &'a Self;
3775 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3776 value
3777 }
3778 }
3779
3780 unsafe impl fidl::encoding::TypeMarker for BorderRoutingCounters {
3781 type Owned = Self;
3782
3783 #[inline(always)]
3784 fn inline_align(_context: fidl::encoding::Context) -> usize {
3785 8
3786 }
3787
3788 #[inline(always)]
3789 fn inline_size(_context: fidl::encoding::Context) -> usize {
3790 16
3791 }
3792 }
3793
3794 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRoutingCounters, D>
3795 for &BorderRoutingCounters
3796 {
3797 unsafe fn encode(
3798 self,
3799 encoder: &mut fidl::encoding::Encoder<'_, D>,
3800 offset: usize,
3801 mut depth: fidl::encoding::Depth,
3802 ) -> fidl::Result<()> {
3803 encoder.debug_check_bounds::<BorderRoutingCounters>(offset);
3804 let max_ordinal: u64 = self.max_ordinal_present();
3806 encoder.write_num(max_ordinal, offset);
3807 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3808 if max_ordinal == 0 {
3810 return Ok(());
3811 }
3812 depth.increment()?;
3813 let envelope_size = 8;
3814 let bytes_len = max_ordinal as usize * envelope_size;
3815 #[allow(unused_variables)]
3816 let offset = encoder.out_of_line_offset(bytes_len);
3817 let mut _prev_end_offset: usize = 0;
3818 if 1 > max_ordinal {
3819 return Ok(());
3820 }
3821
3822 let cur_offset: usize = (1 - 1) * envelope_size;
3825
3826 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3828
3829 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3834 self.inbound_unicast_packets
3835 .as_ref()
3836 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3837 encoder,
3838 offset + cur_offset,
3839 depth,
3840 )?;
3841
3842 _prev_end_offset = cur_offset + envelope_size;
3843 if 2 > max_ordinal {
3844 return Ok(());
3845 }
3846
3847 let cur_offset: usize = (2 - 1) * envelope_size;
3850
3851 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3853
3854 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3859 self.inbound_unicast_bytes
3860 .as_ref()
3861 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3862 encoder,
3863 offset + cur_offset,
3864 depth,
3865 )?;
3866
3867 _prev_end_offset = cur_offset + envelope_size;
3868 if 3 > max_ordinal {
3869 return Ok(());
3870 }
3871
3872 let cur_offset: usize = (3 - 1) * envelope_size;
3875
3876 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3878
3879 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3884 self.inbound_multicast_packets
3885 .as_ref()
3886 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3887 encoder,
3888 offset + cur_offset,
3889 depth,
3890 )?;
3891
3892 _prev_end_offset = cur_offset + envelope_size;
3893 if 4 > max_ordinal {
3894 return Ok(());
3895 }
3896
3897 let cur_offset: usize = (4 - 1) * envelope_size;
3900
3901 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3903
3904 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3909 self.inbound_multicast_bytes
3910 .as_ref()
3911 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3912 encoder,
3913 offset + cur_offset,
3914 depth,
3915 )?;
3916
3917 _prev_end_offset = cur_offset + envelope_size;
3918 if 5 > max_ordinal {
3919 return Ok(());
3920 }
3921
3922 let cur_offset: usize = (5 - 1) * envelope_size;
3925
3926 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3928
3929 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3934 self.outbound_unicast_packets
3935 .as_ref()
3936 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3937 encoder,
3938 offset + cur_offset,
3939 depth,
3940 )?;
3941
3942 _prev_end_offset = cur_offset + envelope_size;
3943 if 6 > max_ordinal {
3944 return Ok(());
3945 }
3946
3947 let cur_offset: usize = (6 - 1) * envelope_size;
3950
3951 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3953
3954 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3959 self.outbound_unicast_bytes
3960 .as_ref()
3961 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3962 encoder,
3963 offset + cur_offset,
3964 depth,
3965 )?;
3966
3967 _prev_end_offset = cur_offset + envelope_size;
3968 if 7 > max_ordinal {
3969 return Ok(());
3970 }
3971
3972 let cur_offset: usize = (7 - 1) * envelope_size;
3975
3976 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3978
3979 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3984 self.outbound_multicast_packets
3985 .as_ref()
3986 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3987 encoder,
3988 offset + cur_offset,
3989 depth,
3990 )?;
3991
3992 _prev_end_offset = cur_offset + envelope_size;
3993 if 8 > max_ordinal {
3994 return Ok(());
3995 }
3996
3997 let cur_offset: usize = (8 - 1) * envelope_size;
4000
4001 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4003
4004 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4009 self.outbound_multicast_bytes
4010 .as_ref()
4011 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4012 encoder,
4013 offset + cur_offset,
4014 depth,
4015 )?;
4016
4017 _prev_end_offset = cur_offset + envelope_size;
4018 if 9 > max_ordinal {
4019 return Ok(());
4020 }
4021
4022 let cur_offset: usize = (9 - 1) * envelope_size;
4025
4026 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4028
4029 fidl::encoding::encode_in_envelope_optional::<u32, D>(
4034 self.ra_rx.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4035 encoder,
4036 offset + cur_offset,
4037 depth,
4038 )?;
4039
4040 _prev_end_offset = cur_offset + envelope_size;
4041 if 10 > max_ordinal {
4042 return Ok(());
4043 }
4044
4045 let cur_offset: usize = (10 - 1) * envelope_size;
4048
4049 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4051
4052 fidl::encoding::encode_in_envelope_optional::<u32, D>(
4057 self.ra_tx_success.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4058 encoder,
4059 offset + cur_offset,
4060 depth,
4061 )?;
4062
4063 _prev_end_offset = cur_offset + envelope_size;
4064 if 11 > max_ordinal {
4065 return Ok(());
4066 }
4067
4068 let cur_offset: usize = (11 - 1) * envelope_size;
4071
4072 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4074
4075 fidl::encoding::encode_in_envelope_optional::<u32, D>(
4080 self.ra_tx_failure.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4081 encoder,
4082 offset + cur_offset,
4083 depth,
4084 )?;
4085
4086 _prev_end_offset = cur_offset + envelope_size;
4087 if 12 > max_ordinal {
4088 return Ok(());
4089 }
4090
4091 let cur_offset: usize = (12 - 1) * envelope_size;
4094
4095 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4097
4098 fidl::encoding::encode_in_envelope_optional::<u32, D>(
4103 self.rs_rx.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4104 encoder,
4105 offset + cur_offset,
4106 depth,
4107 )?;
4108
4109 _prev_end_offset = cur_offset + envelope_size;
4110 if 13 > max_ordinal {
4111 return Ok(());
4112 }
4113
4114 let cur_offset: usize = (13 - 1) * envelope_size;
4117
4118 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4120
4121 fidl::encoding::encode_in_envelope_optional::<u32, D>(
4126 self.rs_tx_success.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4127 encoder,
4128 offset + cur_offset,
4129 depth,
4130 )?;
4131
4132 _prev_end_offset = cur_offset + envelope_size;
4133 if 14 > max_ordinal {
4134 return Ok(());
4135 }
4136
4137 let cur_offset: usize = (14 - 1) * envelope_size;
4140
4141 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4143
4144 fidl::encoding::encode_in_envelope_optional::<u32, D>(
4149 self.rs_tx_failure.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4150 encoder,
4151 offset + cur_offset,
4152 depth,
4153 )?;
4154
4155 _prev_end_offset = cur_offset + envelope_size;
4156 if 15 > max_ordinal {
4157 return Ok(());
4158 }
4159
4160 let cur_offset: usize = (15 - 1) * envelope_size;
4163
4164 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4166
4167 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4172 self.inbound_internet_packets
4173 .as_ref()
4174 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4175 encoder,
4176 offset + cur_offset,
4177 depth,
4178 )?;
4179
4180 _prev_end_offset = cur_offset + envelope_size;
4181 if 16 > max_ordinal {
4182 return Ok(());
4183 }
4184
4185 let cur_offset: usize = (16 - 1) * envelope_size;
4188
4189 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4191
4192 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4197 self.inbound_internet_bytes
4198 .as_ref()
4199 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4200 encoder,
4201 offset + cur_offset,
4202 depth,
4203 )?;
4204
4205 _prev_end_offset = cur_offset + envelope_size;
4206 if 17 > max_ordinal {
4207 return Ok(());
4208 }
4209
4210 let cur_offset: usize = (17 - 1) * envelope_size;
4213
4214 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4216
4217 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4222 self.outbound_internet_packets
4223 .as_ref()
4224 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4225 encoder,
4226 offset + cur_offset,
4227 depth,
4228 )?;
4229
4230 _prev_end_offset = cur_offset + envelope_size;
4231 if 18 > max_ordinal {
4232 return Ok(());
4233 }
4234
4235 let cur_offset: usize = (18 - 1) * envelope_size;
4238
4239 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4241
4242 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4247 self.outbound_internet_bytes
4248 .as_ref()
4249 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4250 encoder,
4251 offset + cur_offset,
4252 depth,
4253 )?;
4254
4255 _prev_end_offset = cur_offset + envelope_size;
4256
4257 Ok(())
4258 }
4259 }
4260
4261 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRoutingCounters {
4262 #[inline(always)]
4263 fn new_empty() -> Self {
4264 Self::default()
4265 }
4266
4267 unsafe fn decode(
4268 &mut self,
4269 decoder: &mut fidl::encoding::Decoder<'_, D>,
4270 offset: usize,
4271 mut depth: fidl::encoding::Depth,
4272 ) -> fidl::Result<()> {
4273 decoder.debug_check_bounds::<Self>(offset);
4274 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4275 None => return Err(fidl::Error::NotNullable),
4276 Some(len) => len,
4277 };
4278 if len == 0 {
4280 return Ok(());
4281 };
4282 depth.increment()?;
4283 let envelope_size = 8;
4284 let bytes_len = len * envelope_size;
4285 let offset = decoder.out_of_line_offset(bytes_len)?;
4286 let mut _next_ordinal_to_read = 0;
4288 let mut next_offset = offset;
4289 let end_offset = offset + bytes_len;
4290 _next_ordinal_to_read += 1;
4291 if next_offset >= end_offset {
4292 return Ok(());
4293 }
4294
4295 while _next_ordinal_to_read < 1 {
4297 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4298 _next_ordinal_to_read += 1;
4299 next_offset += envelope_size;
4300 }
4301
4302 let next_out_of_line = decoder.next_out_of_line();
4303 let handles_before = decoder.remaining_handles();
4304 if let Some((inlined, num_bytes, num_handles)) =
4305 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4306 {
4307 let member_inline_size =
4308 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4309 if inlined != (member_inline_size <= 4) {
4310 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4311 }
4312 let inner_offset;
4313 let mut inner_depth = depth.clone();
4314 if inlined {
4315 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4316 inner_offset = next_offset;
4317 } else {
4318 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4319 inner_depth.increment()?;
4320 }
4321 let val_ref =
4322 self.inbound_unicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4323 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4324 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4325 {
4326 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4327 }
4328 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4329 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4330 }
4331 }
4332
4333 next_offset += envelope_size;
4334 _next_ordinal_to_read += 1;
4335 if next_offset >= end_offset {
4336 return Ok(());
4337 }
4338
4339 while _next_ordinal_to_read < 2 {
4341 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4342 _next_ordinal_to_read += 1;
4343 next_offset += envelope_size;
4344 }
4345
4346 let next_out_of_line = decoder.next_out_of_line();
4347 let handles_before = decoder.remaining_handles();
4348 if let Some((inlined, num_bytes, num_handles)) =
4349 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4350 {
4351 let member_inline_size =
4352 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4353 if inlined != (member_inline_size <= 4) {
4354 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4355 }
4356 let inner_offset;
4357 let mut inner_depth = depth.clone();
4358 if inlined {
4359 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4360 inner_offset = next_offset;
4361 } else {
4362 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4363 inner_depth.increment()?;
4364 }
4365 let val_ref =
4366 self.inbound_unicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4367 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4368 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4369 {
4370 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4371 }
4372 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4373 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4374 }
4375 }
4376
4377 next_offset += envelope_size;
4378 _next_ordinal_to_read += 1;
4379 if next_offset >= end_offset {
4380 return Ok(());
4381 }
4382
4383 while _next_ordinal_to_read < 3 {
4385 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4386 _next_ordinal_to_read += 1;
4387 next_offset += envelope_size;
4388 }
4389
4390 let next_out_of_line = decoder.next_out_of_line();
4391 let handles_before = decoder.remaining_handles();
4392 if let Some((inlined, num_bytes, num_handles)) =
4393 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4394 {
4395 let member_inline_size =
4396 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4397 if inlined != (member_inline_size <= 4) {
4398 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4399 }
4400 let inner_offset;
4401 let mut inner_depth = depth.clone();
4402 if inlined {
4403 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4404 inner_offset = next_offset;
4405 } else {
4406 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4407 inner_depth.increment()?;
4408 }
4409 let val_ref =
4410 self.inbound_multicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4411 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4412 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4413 {
4414 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4415 }
4416 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4417 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4418 }
4419 }
4420
4421 next_offset += envelope_size;
4422 _next_ordinal_to_read += 1;
4423 if next_offset >= end_offset {
4424 return Ok(());
4425 }
4426
4427 while _next_ordinal_to_read < 4 {
4429 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4430 _next_ordinal_to_read += 1;
4431 next_offset += envelope_size;
4432 }
4433
4434 let next_out_of_line = decoder.next_out_of_line();
4435 let handles_before = decoder.remaining_handles();
4436 if let Some((inlined, num_bytes, num_handles)) =
4437 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4438 {
4439 let member_inline_size =
4440 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4441 if inlined != (member_inline_size <= 4) {
4442 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4443 }
4444 let inner_offset;
4445 let mut inner_depth = depth.clone();
4446 if inlined {
4447 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4448 inner_offset = next_offset;
4449 } else {
4450 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4451 inner_depth.increment()?;
4452 }
4453 let val_ref =
4454 self.inbound_multicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4455 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4456 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4457 {
4458 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4459 }
4460 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4461 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4462 }
4463 }
4464
4465 next_offset += envelope_size;
4466 _next_ordinal_to_read += 1;
4467 if next_offset >= end_offset {
4468 return Ok(());
4469 }
4470
4471 while _next_ordinal_to_read < 5 {
4473 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4474 _next_ordinal_to_read += 1;
4475 next_offset += envelope_size;
4476 }
4477
4478 let next_out_of_line = decoder.next_out_of_line();
4479 let handles_before = decoder.remaining_handles();
4480 if let Some((inlined, num_bytes, num_handles)) =
4481 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4482 {
4483 let member_inline_size =
4484 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4485 if inlined != (member_inline_size <= 4) {
4486 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4487 }
4488 let inner_offset;
4489 let mut inner_depth = depth.clone();
4490 if inlined {
4491 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4492 inner_offset = next_offset;
4493 } else {
4494 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4495 inner_depth.increment()?;
4496 }
4497 let val_ref =
4498 self.outbound_unicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4499 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4500 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4501 {
4502 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4503 }
4504 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4505 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4506 }
4507 }
4508
4509 next_offset += envelope_size;
4510 _next_ordinal_to_read += 1;
4511 if next_offset >= end_offset {
4512 return Ok(());
4513 }
4514
4515 while _next_ordinal_to_read < 6 {
4517 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4518 _next_ordinal_to_read += 1;
4519 next_offset += envelope_size;
4520 }
4521
4522 let next_out_of_line = decoder.next_out_of_line();
4523 let handles_before = decoder.remaining_handles();
4524 if let Some((inlined, num_bytes, num_handles)) =
4525 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4526 {
4527 let member_inline_size =
4528 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4529 if inlined != (member_inline_size <= 4) {
4530 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4531 }
4532 let inner_offset;
4533 let mut inner_depth = depth.clone();
4534 if inlined {
4535 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4536 inner_offset = next_offset;
4537 } else {
4538 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4539 inner_depth.increment()?;
4540 }
4541 let val_ref =
4542 self.outbound_unicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4543 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4544 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4545 {
4546 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4547 }
4548 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4549 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4550 }
4551 }
4552
4553 next_offset += envelope_size;
4554 _next_ordinal_to_read += 1;
4555 if next_offset >= end_offset {
4556 return Ok(());
4557 }
4558
4559 while _next_ordinal_to_read < 7 {
4561 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4562 _next_ordinal_to_read += 1;
4563 next_offset += envelope_size;
4564 }
4565
4566 let next_out_of_line = decoder.next_out_of_line();
4567 let handles_before = decoder.remaining_handles();
4568 if let Some((inlined, num_bytes, num_handles)) =
4569 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4570 {
4571 let member_inline_size =
4572 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4573 if inlined != (member_inline_size <= 4) {
4574 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4575 }
4576 let inner_offset;
4577 let mut inner_depth = depth.clone();
4578 if inlined {
4579 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4580 inner_offset = next_offset;
4581 } else {
4582 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4583 inner_depth.increment()?;
4584 }
4585 let val_ref =
4586 self.outbound_multicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4587 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4588 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4589 {
4590 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4591 }
4592 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4593 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4594 }
4595 }
4596
4597 next_offset += envelope_size;
4598 _next_ordinal_to_read += 1;
4599 if next_offset >= end_offset {
4600 return Ok(());
4601 }
4602
4603 while _next_ordinal_to_read < 8 {
4605 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4606 _next_ordinal_to_read += 1;
4607 next_offset += envelope_size;
4608 }
4609
4610 let next_out_of_line = decoder.next_out_of_line();
4611 let handles_before = decoder.remaining_handles();
4612 if let Some((inlined, num_bytes, num_handles)) =
4613 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4614 {
4615 let member_inline_size =
4616 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4617 if inlined != (member_inline_size <= 4) {
4618 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4619 }
4620 let inner_offset;
4621 let mut inner_depth = depth.clone();
4622 if inlined {
4623 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4624 inner_offset = next_offset;
4625 } else {
4626 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4627 inner_depth.increment()?;
4628 }
4629 let val_ref =
4630 self.outbound_multicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4631 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4632 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4633 {
4634 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4635 }
4636 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4637 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4638 }
4639 }
4640
4641 next_offset += envelope_size;
4642 _next_ordinal_to_read += 1;
4643 if next_offset >= end_offset {
4644 return Ok(());
4645 }
4646
4647 while _next_ordinal_to_read < 9 {
4649 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4650 _next_ordinal_to_read += 1;
4651 next_offset += envelope_size;
4652 }
4653
4654 let next_out_of_line = decoder.next_out_of_line();
4655 let handles_before = decoder.remaining_handles();
4656 if let Some((inlined, num_bytes, num_handles)) =
4657 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4658 {
4659 let member_inline_size =
4660 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4661 if inlined != (member_inline_size <= 4) {
4662 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4663 }
4664 let inner_offset;
4665 let mut inner_depth = depth.clone();
4666 if inlined {
4667 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4668 inner_offset = next_offset;
4669 } else {
4670 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4671 inner_depth.increment()?;
4672 }
4673 let val_ref = self.ra_rx.get_or_insert_with(|| fidl::new_empty!(u32, D));
4674 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4675 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4676 {
4677 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4678 }
4679 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4680 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4681 }
4682 }
4683
4684 next_offset += envelope_size;
4685 _next_ordinal_to_read += 1;
4686 if next_offset >= end_offset {
4687 return Ok(());
4688 }
4689
4690 while _next_ordinal_to_read < 10 {
4692 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4693 _next_ordinal_to_read += 1;
4694 next_offset += envelope_size;
4695 }
4696
4697 let next_out_of_line = decoder.next_out_of_line();
4698 let handles_before = decoder.remaining_handles();
4699 if let Some((inlined, num_bytes, num_handles)) =
4700 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4701 {
4702 let member_inline_size =
4703 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4704 if inlined != (member_inline_size <= 4) {
4705 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4706 }
4707 let inner_offset;
4708 let mut inner_depth = depth.clone();
4709 if inlined {
4710 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4711 inner_offset = next_offset;
4712 } else {
4713 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4714 inner_depth.increment()?;
4715 }
4716 let val_ref = self.ra_tx_success.get_or_insert_with(|| fidl::new_empty!(u32, D));
4717 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4718 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4719 {
4720 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4721 }
4722 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4723 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4724 }
4725 }
4726
4727 next_offset += envelope_size;
4728 _next_ordinal_to_read += 1;
4729 if next_offset >= end_offset {
4730 return Ok(());
4731 }
4732
4733 while _next_ordinal_to_read < 11 {
4735 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4736 _next_ordinal_to_read += 1;
4737 next_offset += envelope_size;
4738 }
4739
4740 let next_out_of_line = decoder.next_out_of_line();
4741 let handles_before = decoder.remaining_handles();
4742 if let Some((inlined, num_bytes, num_handles)) =
4743 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4744 {
4745 let member_inline_size =
4746 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4747 if inlined != (member_inline_size <= 4) {
4748 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4749 }
4750 let inner_offset;
4751 let mut inner_depth = depth.clone();
4752 if inlined {
4753 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4754 inner_offset = next_offset;
4755 } else {
4756 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4757 inner_depth.increment()?;
4758 }
4759 let val_ref = self.ra_tx_failure.get_or_insert_with(|| fidl::new_empty!(u32, D));
4760 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4761 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4762 {
4763 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4764 }
4765 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4766 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4767 }
4768 }
4769
4770 next_offset += envelope_size;
4771 _next_ordinal_to_read += 1;
4772 if next_offset >= end_offset {
4773 return Ok(());
4774 }
4775
4776 while _next_ordinal_to_read < 12 {
4778 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4779 _next_ordinal_to_read += 1;
4780 next_offset += envelope_size;
4781 }
4782
4783 let next_out_of_line = decoder.next_out_of_line();
4784 let handles_before = decoder.remaining_handles();
4785 if let Some((inlined, num_bytes, num_handles)) =
4786 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4787 {
4788 let member_inline_size =
4789 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4790 if inlined != (member_inline_size <= 4) {
4791 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4792 }
4793 let inner_offset;
4794 let mut inner_depth = depth.clone();
4795 if inlined {
4796 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4797 inner_offset = next_offset;
4798 } else {
4799 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4800 inner_depth.increment()?;
4801 }
4802 let val_ref = self.rs_rx.get_or_insert_with(|| fidl::new_empty!(u32, D));
4803 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4804 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4805 {
4806 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4807 }
4808 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4809 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4810 }
4811 }
4812
4813 next_offset += envelope_size;
4814 _next_ordinal_to_read += 1;
4815 if next_offset >= end_offset {
4816 return Ok(());
4817 }
4818
4819 while _next_ordinal_to_read < 13 {
4821 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4822 _next_ordinal_to_read += 1;
4823 next_offset += envelope_size;
4824 }
4825
4826 let next_out_of_line = decoder.next_out_of_line();
4827 let handles_before = decoder.remaining_handles();
4828 if let Some((inlined, num_bytes, num_handles)) =
4829 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4830 {
4831 let member_inline_size =
4832 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4833 if inlined != (member_inline_size <= 4) {
4834 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4835 }
4836 let inner_offset;
4837 let mut inner_depth = depth.clone();
4838 if inlined {
4839 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4840 inner_offset = next_offset;
4841 } else {
4842 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4843 inner_depth.increment()?;
4844 }
4845 let val_ref = self.rs_tx_success.get_or_insert_with(|| fidl::new_empty!(u32, D));
4846 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4847 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4848 {
4849 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4850 }
4851 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4852 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4853 }
4854 }
4855
4856 next_offset += envelope_size;
4857 _next_ordinal_to_read += 1;
4858 if next_offset >= end_offset {
4859 return Ok(());
4860 }
4861
4862 while _next_ordinal_to_read < 14 {
4864 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4865 _next_ordinal_to_read += 1;
4866 next_offset += envelope_size;
4867 }
4868
4869 let next_out_of_line = decoder.next_out_of_line();
4870 let handles_before = decoder.remaining_handles();
4871 if let Some((inlined, num_bytes, num_handles)) =
4872 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4873 {
4874 let member_inline_size =
4875 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4876 if inlined != (member_inline_size <= 4) {
4877 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4878 }
4879 let inner_offset;
4880 let mut inner_depth = depth.clone();
4881 if inlined {
4882 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4883 inner_offset = next_offset;
4884 } else {
4885 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4886 inner_depth.increment()?;
4887 }
4888 let val_ref = self.rs_tx_failure.get_or_insert_with(|| fidl::new_empty!(u32, D));
4889 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4890 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4891 {
4892 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4893 }
4894 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4895 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4896 }
4897 }
4898
4899 next_offset += envelope_size;
4900 _next_ordinal_to_read += 1;
4901 if next_offset >= end_offset {
4902 return Ok(());
4903 }
4904
4905 while _next_ordinal_to_read < 15 {
4907 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4908 _next_ordinal_to_read += 1;
4909 next_offset += envelope_size;
4910 }
4911
4912 let next_out_of_line = decoder.next_out_of_line();
4913 let handles_before = decoder.remaining_handles();
4914 if let Some((inlined, num_bytes, num_handles)) =
4915 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4916 {
4917 let member_inline_size =
4918 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4919 if inlined != (member_inline_size <= 4) {
4920 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4921 }
4922 let inner_offset;
4923 let mut inner_depth = depth.clone();
4924 if inlined {
4925 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4926 inner_offset = next_offset;
4927 } else {
4928 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4929 inner_depth.increment()?;
4930 }
4931 let val_ref =
4932 self.inbound_internet_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
4933 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4934 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4935 {
4936 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4937 }
4938 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4939 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4940 }
4941 }
4942
4943 next_offset += envelope_size;
4944 _next_ordinal_to_read += 1;
4945 if next_offset >= end_offset {
4946 return Ok(());
4947 }
4948
4949 while _next_ordinal_to_read < 16 {
4951 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4952 _next_ordinal_to_read += 1;
4953 next_offset += envelope_size;
4954 }
4955
4956 let next_out_of_line = decoder.next_out_of_line();
4957 let handles_before = decoder.remaining_handles();
4958 if let Some((inlined, num_bytes, num_handles)) =
4959 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4960 {
4961 let member_inline_size =
4962 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4963 if inlined != (member_inline_size <= 4) {
4964 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4965 }
4966 let inner_offset;
4967 let mut inner_depth = depth.clone();
4968 if inlined {
4969 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4970 inner_offset = next_offset;
4971 } else {
4972 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4973 inner_depth.increment()?;
4974 }
4975 let val_ref =
4976 self.inbound_internet_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
4977 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4978 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4979 {
4980 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4981 }
4982 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4983 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4984 }
4985 }
4986
4987 next_offset += envelope_size;
4988 _next_ordinal_to_read += 1;
4989 if next_offset >= end_offset {
4990 return Ok(());
4991 }
4992
4993 while _next_ordinal_to_read < 17 {
4995 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4996 _next_ordinal_to_read += 1;
4997 next_offset += envelope_size;
4998 }
4999
5000 let next_out_of_line = decoder.next_out_of_line();
5001 let handles_before = decoder.remaining_handles();
5002 if let Some((inlined, num_bytes, num_handles)) =
5003 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5004 {
5005 let member_inline_size =
5006 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5007 if inlined != (member_inline_size <= 4) {
5008 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5009 }
5010 let inner_offset;
5011 let mut inner_depth = depth.clone();
5012 if inlined {
5013 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5014 inner_offset = next_offset;
5015 } else {
5016 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5017 inner_depth.increment()?;
5018 }
5019 let val_ref =
5020 self.outbound_internet_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
5021 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5022 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5023 {
5024 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5025 }
5026 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5027 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5028 }
5029 }
5030
5031 next_offset += envelope_size;
5032 _next_ordinal_to_read += 1;
5033 if next_offset >= end_offset {
5034 return Ok(());
5035 }
5036
5037 while _next_ordinal_to_read < 18 {
5039 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5040 _next_ordinal_to_read += 1;
5041 next_offset += envelope_size;
5042 }
5043
5044 let next_out_of_line = decoder.next_out_of_line();
5045 let handles_before = decoder.remaining_handles();
5046 if let Some((inlined, num_bytes, num_handles)) =
5047 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5048 {
5049 let member_inline_size =
5050 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5051 if inlined != (member_inline_size <= 4) {
5052 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5053 }
5054 let inner_offset;
5055 let mut inner_depth = depth.clone();
5056 if inlined {
5057 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5058 inner_offset = next_offset;
5059 } else {
5060 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5061 inner_depth.increment()?;
5062 }
5063 let val_ref =
5064 self.outbound_internet_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
5065 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5066 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5067 {
5068 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5069 }
5070 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5071 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5072 }
5073 }
5074
5075 next_offset += envelope_size;
5076
5077 while next_offset < end_offset {
5079 _next_ordinal_to_read += 1;
5080 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5081 next_offset += envelope_size;
5082 }
5083
5084 Ok(())
5085 }
5086 }
5087
5088 impl BorderRoutingNat64State {
5089 #[inline(always)]
5090 fn max_ordinal_present(&self) -> u64 {
5091 if let Some(_) = self.translator_state {
5092 return 2;
5093 }
5094 if let Some(_) = self.prefix_manager_state {
5095 return 1;
5096 }
5097 0
5098 }
5099 }
5100
5101 impl fidl::encoding::ValueTypeMarker for BorderRoutingNat64State {
5102 type Borrowed<'a> = &'a Self;
5103 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5104 value
5105 }
5106 }
5107
5108 unsafe impl fidl::encoding::TypeMarker for BorderRoutingNat64State {
5109 type Owned = Self;
5110
5111 #[inline(always)]
5112 fn inline_align(_context: fidl::encoding::Context) -> usize {
5113 8
5114 }
5115
5116 #[inline(always)]
5117 fn inline_size(_context: fidl::encoding::Context) -> usize {
5118 16
5119 }
5120 }
5121
5122 unsafe impl<D: fidl::encoding::ResourceDialect>
5123 fidl::encoding::Encode<BorderRoutingNat64State, D> for &BorderRoutingNat64State
5124 {
5125 unsafe fn encode(
5126 self,
5127 encoder: &mut fidl::encoding::Encoder<'_, D>,
5128 offset: usize,
5129 mut depth: fidl::encoding::Depth,
5130 ) -> fidl::Result<()> {
5131 encoder.debug_check_bounds::<BorderRoutingNat64State>(offset);
5132 let max_ordinal: u64 = self.max_ordinal_present();
5134 encoder.write_num(max_ordinal, offset);
5135 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5136 if max_ordinal == 0 {
5138 return Ok(());
5139 }
5140 depth.increment()?;
5141 let envelope_size = 8;
5142 let bytes_len = max_ordinal as usize * envelope_size;
5143 #[allow(unused_variables)]
5144 let offset = encoder.out_of_line_offset(bytes_len);
5145 let mut _prev_end_offset: usize = 0;
5146 if 1 > max_ordinal {
5147 return Ok(());
5148 }
5149
5150 let cur_offset: usize = (1 - 1) * envelope_size;
5153
5154 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5156
5157 fidl::encoding::encode_in_envelope_optional::<Nat64State, D>(
5162 self.prefix_manager_state
5163 .as_ref()
5164 .map(<Nat64State as fidl::encoding::ValueTypeMarker>::borrow),
5165 encoder,
5166 offset + cur_offset,
5167 depth,
5168 )?;
5169
5170 _prev_end_offset = cur_offset + envelope_size;
5171 if 2 > max_ordinal {
5172 return Ok(());
5173 }
5174
5175 let cur_offset: usize = (2 - 1) * envelope_size;
5178
5179 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5181
5182 fidl::encoding::encode_in_envelope_optional::<Nat64State, D>(
5187 self.translator_state
5188 .as_ref()
5189 .map(<Nat64State as fidl::encoding::ValueTypeMarker>::borrow),
5190 encoder,
5191 offset + cur_offset,
5192 depth,
5193 )?;
5194
5195 _prev_end_offset = cur_offset + envelope_size;
5196
5197 Ok(())
5198 }
5199 }
5200
5201 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5202 for BorderRoutingNat64State
5203 {
5204 #[inline(always)]
5205 fn new_empty() -> Self {
5206 Self::default()
5207 }
5208
5209 unsafe fn decode(
5210 &mut self,
5211 decoder: &mut fidl::encoding::Decoder<'_, D>,
5212 offset: usize,
5213 mut depth: fidl::encoding::Depth,
5214 ) -> fidl::Result<()> {
5215 decoder.debug_check_bounds::<Self>(offset);
5216 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5217 None => return Err(fidl::Error::NotNullable),
5218 Some(len) => len,
5219 };
5220 if len == 0 {
5222 return Ok(());
5223 };
5224 depth.increment()?;
5225 let envelope_size = 8;
5226 let bytes_len = len * envelope_size;
5227 let offset = decoder.out_of_line_offset(bytes_len)?;
5228 let mut _next_ordinal_to_read = 0;
5230 let mut next_offset = offset;
5231 let end_offset = offset + bytes_len;
5232 _next_ordinal_to_read += 1;
5233 if next_offset >= end_offset {
5234 return Ok(());
5235 }
5236
5237 while _next_ordinal_to_read < 1 {
5239 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5240 _next_ordinal_to_read += 1;
5241 next_offset += envelope_size;
5242 }
5243
5244 let next_out_of_line = decoder.next_out_of_line();
5245 let handles_before = decoder.remaining_handles();
5246 if let Some((inlined, num_bytes, num_handles)) =
5247 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5248 {
5249 let member_inline_size =
5250 <Nat64State as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5251 if inlined != (member_inline_size <= 4) {
5252 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5253 }
5254 let inner_offset;
5255 let mut inner_depth = depth.clone();
5256 if inlined {
5257 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5258 inner_offset = next_offset;
5259 } else {
5260 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5261 inner_depth.increment()?;
5262 }
5263 let val_ref = self
5264 .prefix_manager_state
5265 .get_or_insert_with(|| fidl::new_empty!(Nat64State, D));
5266 fidl::decode!(Nat64State, D, val_ref, decoder, inner_offset, inner_depth)?;
5267 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5268 {
5269 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5270 }
5271 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5272 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5273 }
5274 }
5275
5276 next_offset += envelope_size;
5277 _next_ordinal_to_read += 1;
5278 if next_offset >= end_offset {
5279 return Ok(());
5280 }
5281
5282 while _next_ordinal_to_read < 2 {
5284 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5285 _next_ordinal_to_read += 1;
5286 next_offset += envelope_size;
5287 }
5288
5289 let next_out_of_line = decoder.next_out_of_line();
5290 let handles_before = decoder.remaining_handles();
5291 if let Some((inlined, num_bytes, num_handles)) =
5292 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5293 {
5294 let member_inline_size =
5295 <Nat64State as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5296 if inlined != (member_inline_size <= 4) {
5297 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5298 }
5299 let inner_offset;
5300 let mut inner_depth = depth.clone();
5301 if inlined {
5302 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5303 inner_offset = next_offset;
5304 } else {
5305 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5306 inner_depth.increment()?;
5307 }
5308 let val_ref =
5309 self.translator_state.get_or_insert_with(|| fidl::new_empty!(Nat64State, D));
5310 fidl::decode!(Nat64State, D, val_ref, decoder, inner_offset, inner_depth)?;
5311 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5312 {
5313 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5314 }
5315 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5316 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5317 }
5318 }
5319
5320 next_offset += envelope_size;
5321
5322 while next_offset < end_offset {
5324 _next_ordinal_to_read += 1;
5325 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5326 next_offset += envelope_size;
5327 }
5328
5329 Ok(())
5330 }
5331 }
5332
5333 impl BorderRoutingPeer {
5334 #[inline(always)]
5335 fn max_ordinal_present(&self) -> u64 {
5336 if let Some(_) = self.age {
5337 return 2;
5338 }
5339 if let Some(_) = self.thread_rloc {
5340 return 1;
5341 }
5342 0
5343 }
5344 }
5345
5346 impl fidl::encoding::ValueTypeMarker for BorderRoutingPeer {
5347 type Borrowed<'a> = &'a Self;
5348 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5349 value
5350 }
5351 }
5352
5353 unsafe impl fidl::encoding::TypeMarker for BorderRoutingPeer {
5354 type Owned = Self;
5355
5356 #[inline(always)]
5357 fn inline_align(_context: fidl::encoding::Context) -> usize {
5358 8
5359 }
5360
5361 #[inline(always)]
5362 fn inline_size(_context: fidl::encoding::Context) -> usize {
5363 16
5364 }
5365 }
5366
5367 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRoutingPeer, D>
5368 for &BorderRoutingPeer
5369 {
5370 unsafe fn encode(
5371 self,
5372 encoder: &mut fidl::encoding::Encoder<'_, D>,
5373 offset: usize,
5374 mut depth: fidl::encoding::Depth,
5375 ) -> fidl::Result<()> {
5376 encoder.debug_check_bounds::<BorderRoutingPeer>(offset);
5377 let max_ordinal: u64 = self.max_ordinal_present();
5379 encoder.write_num(max_ordinal, offset);
5380 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5381 if max_ordinal == 0 {
5383 return Ok(());
5384 }
5385 depth.increment()?;
5386 let envelope_size = 8;
5387 let bytes_len = max_ordinal as usize * envelope_size;
5388 #[allow(unused_variables)]
5389 let offset = encoder.out_of_line_offset(bytes_len);
5390 let mut _prev_end_offset: usize = 0;
5391 if 1 > max_ordinal {
5392 return Ok(());
5393 }
5394
5395 let cur_offset: usize = (1 - 1) * envelope_size;
5398
5399 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5401
5402 fidl::encoding::encode_in_envelope_optional::<u16, D>(
5407 self.thread_rloc.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5408 encoder,
5409 offset + cur_offset,
5410 depth,
5411 )?;
5412
5413 _prev_end_offset = cur_offset + envelope_size;
5414 if 2 > max_ordinal {
5415 return Ok(());
5416 }
5417
5418 let cur_offset: usize = (2 - 1) * envelope_size;
5421
5422 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5424
5425 fidl::encoding::encode_in_envelope_optional::<i64, D>(
5430 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
5431 encoder,
5432 offset + cur_offset,
5433 depth,
5434 )?;
5435
5436 _prev_end_offset = cur_offset + envelope_size;
5437
5438 Ok(())
5439 }
5440 }
5441
5442 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRoutingPeer {
5443 #[inline(always)]
5444 fn new_empty() -> Self {
5445 Self::default()
5446 }
5447
5448 unsafe fn decode(
5449 &mut self,
5450 decoder: &mut fidl::encoding::Decoder<'_, D>,
5451 offset: usize,
5452 mut depth: fidl::encoding::Depth,
5453 ) -> fidl::Result<()> {
5454 decoder.debug_check_bounds::<Self>(offset);
5455 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5456 None => return Err(fidl::Error::NotNullable),
5457 Some(len) => len,
5458 };
5459 if len == 0 {
5461 return Ok(());
5462 };
5463 depth.increment()?;
5464 let envelope_size = 8;
5465 let bytes_len = len * envelope_size;
5466 let offset = decoder.out_of_line_offset(bytes_len)?;
5467 let mut _next_ordinal_to_read = 0;
5469 let mut next_offset = offset;
5470 let end_offset = offset + bytes_len;
5471 _next_ordinal_to_read += 1;
5472 if next_offset >= end_offset {
5473 return Ok(());
5474 }
5475
5476 while _next_ordinal_to_read < 1 {
5478 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5479 _next_ordinal_to_read += 1;
5480 next_offset += envelope_size;
5481 }
5482
5483 let next_out_of_line = decoder.next_out_of_line();
5484 let handles_before = decoder.remaining_handles();
5485 if let Some((inlined, num_bytes, num_handles)) =
5486 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5487 {
5488 let member_inline_size =
5489 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5490 if inlined != (member_inline_size <= 4) {
5491 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5492 }
5493 let inner_offset;
5494 let mut inner_depth = depth.clone();
5495 if inlined {
5496 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5497 inner_offset = next_offset;
5498 } else {
5499 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5500 inner_depth.increment()?;
5501 }
5502 let val_ref = self.thread_rloc.get_or_insert_with(|| fidl::new_empty!(u16, D));
5503 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5504 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5505 {
5506 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5507 }
5508 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5509 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5510 }
5511 }
5512
5513 next_offset += envelope_size;
5514 _next_ordinal_to_read += 1;
5515 if next_offset >= end_offset {
5516 return Ok(());
5517 }
5518
5519 while _next_ordinal_to_read < 2 {
5521 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5522 _next_ordinal_to_read += 1;
5523 next_offset += envelope_size;
5524 }
5525
5526 let next_out_of_line = decoder.next_out_of_line();
5527 let handles_before = decoder.remaining_handles();
5528 if let Some((inlined, num_bytes, num_handles)) =
5529 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5530 {
5531 let member_inline_size =
5532 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5533 if inlined != (member_inline_size <= 4) {
5534 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5535 }
5536 let inner_offset;
5537 let mut inner_depth = depth.clone();
5538 if inlined {
5539 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5540 inner_offset = next_offset;
5541 } else {
5542 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5543 inner_depth.increment()?;
5544 }
5545 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
5546 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
5547 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5548 {
5549 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5550 }
5551 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5552 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5553 }
5554 }
5555
5556 next_offset += envelope_size;
5557
5558 while next_offset < end_offset {
5560 _next_ordinal_to_read += 1;
5561 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5562 next_offset += envelope_size;
5563 }
5564
5565 Ok(())
5566 }
5567 }
5568
5569 impl BorderRoutingRouter {
5570 #[inline(always)]
5571 fn max_ordinal_present(&self) -> u64 {
5572 if let Some(_) = self.is_peer_br {
5573 return 9;
5574 }
5575 if let Some(_) = self.is_reachable {
5576 return 8;
5577 }
5578 if let Some(_) = self.is_local_device {
5579 return 7;
5580 }
5581 if let Some(_) = self.snac_router_flag {
5582 return 6;
5583 }
5584 if let Some(_) = self.other_config_flag {
5585 return 5;
5586 }
5587 if let Some(_) = self.managed_address_config_flag {
5588 return 4;
5589 }
5590 if let Some(_) = self.age {
5591 return 3;
5592 }
5593 if let Some(_) = self.duration_since_last_update {
5594 return 2;
5595 }
5596 if let Some(_) = self.address {
5597 return 1;
5598 }
5599 0
5600 }
5601 }
5602
5603 impl fidl::encoding::ValueTypeMarker for BorderRoutingRouter {
5604 type Borrowed<'a> = &'a Self;
5605 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5606 value
5607 }
5608 }
5609
5610 unsafe impl fidl::encoding::TypeMarker for BorderRoutingRouter {
5611 type Owned = Self;
5612
5613 #[inline(always)]
5614 fn inline_align(_context: fidl::encoding::Context) -> usize {
5615 8
5616 }
5617
5618 #[inline(always)]
5619 fn inline_size(_context: fidl::encoding::Context) -> usize {
5620 16
5621 }
5622 }
5623
5624 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRoutingRouter, D>
5625 for &BorderRoutingRouter
5626 {
5627 unsafe fn encode(
5628 self,
5629 encoder: &mut fidl::encoding::Encoder<'_, D>,
5630 offset: usize,
5631 mut depth: fidl::encoding::Depth,
5632 ) -> fidl::Result<()> {
5633 encoder.debug_check_bounds::<BorderRoutingRouter>(offset);
5634 let max_ordinal: u64 = self.max_ordinal_present();
5636 encoder.write_num(max_ordinal, offset);
5637 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5638 if max_ordinal == 0 {
5640 return Ok(());
5641 }
5642 depth.increment()?;
5643 let envelope_size = 8;
5644 let bytes_len = max_ordinal as usize * envelope_size;
5645 #[allow(unused_variables)]
5646 let offset = encoder.out_of_line_offset(bytes_len);
5647 let mut _prev_end_offset: usize = 0;
5648 if 1 > max_ordinal {
5649 return Ok(());
5650 }
5651
5652 let cur_offset: usize = (1 - 1) * envelope_size;
5655
5656 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5658
5659 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
5664 self.address.as_ref().map(
5665 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
5666 ),
5667 encoder,
5668 offset + cur_offset,
5669 depth,
5670 )?;
5671
5672 _prev_end_offset = cur_offset + envelope_size;
5673 if 2 > max_ordinal {
5674 return Ok(());
5675 }
5676
5677 let cur_offset: usize = (2 - 1) * envelope_size;
5680
5681 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5683
5684 fidl::encoding::encode_in_envelope_optional::<i64, D>(
5689 self.duration_since_last_update
5690 .as_ref()
5691 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
5692 encoder,
5693 offset + cur_offset,
5694 depth,
5695 )?;
5696
5697 _prev_end_offset = cur_offset + envelope_size;
5698 if 3 > max_ordinal {
5699 return Ok(());
5700 }
5701
5702 let cur_offset: usize = (3 - 1) * envelope_size;
5705
5706 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5708
5709 fidl::encoding::encode_in_envelope_optional::<i64, D>(
5714 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
5715 encoder,
5716 offset + cur_offset,
5717 depth,
5718 )?;
5719
5720 _prev_end_offset = cur_offset + envelope_size;
5721 if 4 > max_ordinal {
5722 return Ok(());
5723 }
5724
5725 let cur_offset: usize = (4 - 1) * envelope_size;
5728
5729 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5731
5732 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5737 self.managed_address_config_flag
5738 .as_ref()
5739 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5740 encoder,
5741 offset + cur_offset,
5742 depth,
5743 )?;
5744
5745 _prev_end_offset = cur_offset + envelope_size;
5746 if 5 > max_ordinal {
5747 return Ok(());
5748 }
5749
5750 let cur_offset: usize = (5 - 1) * envelope_size;
5753
5754 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5756
5757 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5762 self.other_config_flag
5763 .as_ref()
5764 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5765 encoder,
5766 offset + cur_offset,
5767 depth,
5768 )?;
5769
5770 _prev_end_offset = cur_offset + envelope_size;
5771 if 6 > max_ordinal {
5772 return Ok(());
5773 }
5774
5775 let cur_offset: usize = (6 - 1) * envelope_size;
5778
5779 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5781
5782 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5787 self.snac_router_flag
5788 .as_ref()
5789 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5790 encoder,
5791 offset + cur_offset,
5792 depth,
5793 )?;
5794
5795 _prev_end_offset = cur_offset + envelope_size;
5796 if 7 > max_ordinal {
5797 return Ok(());
5798 }
5799
5800 let cur_offset: usize = (7 - 1) * envelope_size;
5803
5804 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5806
5807 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5812 self.is_local_device
5813 .as_ref()
5814 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5815 encoder,
5816 offset + cur_offset,
5817 depth,
5818 )?;
5819
5820 _prev_end_offset = cur_offset + envelope_size;
5821 if 8 > max_ordinal {
5822 return Ok(());
5823 }
5824
5825 let cur_offset: usize = (8 - 1) * envelope_size;
5828
5829 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5831
5832 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5837 self.is_reachable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5838 encoder,
5839 offset + cur_offset,
5840 depth,
5841 )?;
5842
5843 _prev_end_offset = cur_offset + envelope_size;
5844 if 9 > max_ordinal {
5845 return Ok(());
5846 }
5847
5848 let cur_offset: usize = (9 - 1) * envelope_size;
5851
5852 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5854
5855 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5860 self.is_peer_br.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5861 encoder,
5862 offset + cur_offset,
5863 depth,
5864 )?;
5865
5866 _prev_end_offset = cur_offset + envelope_size;
5867
5868 Ok(())
5869 }
5870 }
5871
5872 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRoutingRouter {
5873 #[inline(always)]
5874 fn new_empty() -> Self {
5875 Self::default()
5876 }
5877
5878 unsafe fn decode(
5879 &mut self,
5880 decoder: &mut fidl::encoding::Decoder<'_, D>,
5881 offset: usize,
5882 mut depth: fidl::encoding::Depth,
5883 ) -> fidl::Result<()> {
5884 decoder.debug_check_bounds::<Self>(offset);
5885 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5886 None => return Err(fidl::Error::NotNullable),
5887 Some(len) => len,
5888 };
5889 if len == 0 {
5891 return Ok(());
5892 };
5893 depth.increment()?;
5894 let envelope_size = 8;
5895 let bytes_len = len * envelope_size;
5896 let offset = decoder.out_of_line_offset(bytes_len)?;
5897 let mut _next_ordinal_to_read = 0;
5899 let mut next_offset = offset;
5900 let end_offset = offset + bytes_len;
5901 _next_ordinal_to_read += 1;
5902 if next_offset >= end_offset {
5903 return Ok(());
5904 }
5905
5906 while _next_ordinal_to_read < 1 {
5908 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5909 _next_ordinal_to_read += 1;
5910 next_offset += envelope_size;
5911 }
5912
5913 let next_out_of_line = decoder.next_out_of_line();
5914 let handles_before = decoder.remaining_handles();
5915 if let Some((inlined, num_bytes, num_handles)) =
5916 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5917 {
5918 let member_inline_size =
5919 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
5920 decoder.context,
5921 );
5922 if inlined != (member_inline_size <= 4) {
5923 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5924 }
5925 let inner_offset;
5926 let mut inner_depth = depth.clone();
5927 if inlined {
5928 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5929 inner_offset = next_offset;
5930 } else {
5931 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5932 inner_depth.increment()?;
5933 }
5934 let val_ref = self
5935 .address
5936 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
5937 fidl::decode!(
5938 fidl::encoding::BoundedString<64>,
5939 D,
5940 val_ref,
5941 decoder,
5942 inner_offset,
5943 inner_depth
5944 )?;
5945 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5946 {
5947 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5948 }
5949 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5950 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5951 }
5952 }
5953
5954 next_offset += envelope_size;
5955 _next_ordinal_to_read += 1;
5956 if next_offset >= end_offset {
5957 return Ok(());
5958 }
5959
5960 while _next_ordinal_to_read < 2 {
5962 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5963 _next_ordinal_to_read += 1;
5964 next_offset += envelope_size;
5965 }
5966
5967 let next_out_of_line = decoder.next_out_of_line();
5968 let handles_before = decoder.remaining_handles();
5969 if let Some((inlined, num_bytes, num_handles)) =
5970 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5971 {
5972 let member_inline_size =
5973 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5974 if inlined != (member_inline_size <= 4) {
5975 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5976 }
5977 let inner_offset;
5978 let mut inner_depth = depth.clone();
5979 if inlined {
5980 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5981 inner_offset = next_offset;
5982 } else {
5983 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5984 inner_depth.increment()?;
5985 }
5986 let val_ref =
5987 self.duration_since_last_update.get_or_insert_with(|| fidl::new_empty!(i64, D));
5988 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
5989 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5990 {
5991 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5992 }
5993 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5994 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5995 }
5996 }
5997
5998 next_offset += envelope_size;
5999 _next_ordinal_to_read += 1;
6000 if next_offset >= end_offset {
6001 return Ok(());
6002 }
6003
6004 while _next_ordinal_to_read < 3 {
6006 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6007 _next_ordinal_to_read += 1;
6008 next_offset += envelope_size;
6009 }
6010
6011 let next_out_of_line = decoder.next_out_of_line();
6012 let handles_before = decoder.remaining_handles();
6013 if let Some((inlined, num_bytes, num_handles)) =
6014 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6015 {
6016 let member_inline_size =
6017 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6018 if inlined != (member_inline_size <= 4) {
6019 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6020 }
6021 let inner_offset;
6022 let mut inner_depth = depth.clone();
6023 if inlined {
6024 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6025 inner_offset = next_offset;
6026 } else {
6027 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6028 inner_depth.increment()?;
6029 }
6030 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
6031 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
6032 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6033 {
6034 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6035 }
6036 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6037 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6038 }
6039 }
6040
6041 next_offset += envelope_size;
6042 _next_ordinal_to_read += 1;
6043 if next_offset >= end_offset {
6044 return Ok(());
6045 }
6046
6047 while _next_ordinal_to_read < 4 {
6049 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6050 _next_ordinal_to_read += 1;
6051 next_offset += envelope_size;
6052 }
6053
6054 let next_out_of_line = decoder.next_out_of_line();
6055 let handles_before = decoder.remaining_handles();
6056 if let Some((inlined, num_bytes, num_handles)) =
6057 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6058 {
6059 let member_inline_size =
6060 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6061 if inlined != (member_inline_size <= 4) {
6062 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6063 }
6064 let inner_offset;
6065 let mut inner_depth = depth.clone();
6066 if inlined {
6067 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6068 inner_offset = next_offset;
6069 } else {
6070 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6071 inner_depth.increment()?;
6072 }
6073 let val_ref = self
6074 .managed_address_config_flag
6075 .get_or_insert_with(|| fidl::new_empty!(bool, D));
6076 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6077 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6078 {
6079 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6080 }
6081 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6082 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6083 }
6084 }
6085
6086 next_offset += envelope_size;
6087 _next_ordinal_to_read += 1;
6088 if next_offset >= end_offset {
6089 return Ok(());
6090 }
6091
6092 while _next_ordinal_to_read < 5 {
6094 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6095 _next_ordinal_to_read += 1;
6096 next_offset += envelope_size;
6097 }
6098
6099 let next_out_of_line = decoder.next_out_of_line();
6100 let handles_before = decoder.remaining_handles();
6101 if let Some((inlined, num_bytes, num_handles)) =
6102 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6103 {
6104 let member_inline_size =
6105 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6106 if inlined != (member_inline_size <= 4) {
6107 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6108 }
6109 let inner_offset;
6110 let mut inner_depth = depth.clone();
6111 if inlined {
6112 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6113 inner_offset = next_offset;
6114 } else {
6115 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6116 inner_depth.increment()?;
6117 }
6118 let val_ref =
6119 self.other_config_flag.get_or_insert_with(|| fidl::new_empty!(bool, D));
6120 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6121 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6122 {
6123 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6124 }
6125 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6126 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6127 }
6128 }
6129
6130 next_offset += envelope_size;
6131 _next_ordinal_to_read += 1;
6132 if next_offset >= end_offset {
6133 return Ok(());
6134 }
6135
6136 while _next_ordinal_to_read < 6 {
6138 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6139 _next_ordinal_to_read += 1;
6140 next_offset += envelope_size;
6141 }
6142
6143 let next_out_of_line = decoder.next_out_of_line();
6144 let handles_before = decoder.remaining_handles();
6145 if let Some((inlined, num_bytes, num_handles)) =
6146 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6147 {
6148 let member_inline_size =
6149 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6150 if inlined != (member_inline_size <= 4) {
6151 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6152 }
6153 let inner_offset;
6154 let mut inner_depth = depth.clone();
6155 if inlined {
6156 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6157 inner_offset = next_offset;
6158 } else {
6159 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6160 inner_depth.increment()?;
6161 }
6162 let val_ref =
6163 self.snac_router_flag.get_or_insert_with(|| fidl::new_empty!(bool, D));
6164 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6165 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6166 {
6167 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6168 }
6169 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6170 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6171 }
6172 }
6173
6174 next_offset += envelope_size;
6175 _next_ordinal_to_read += 1;
6176 if next_offset >= end_offset {
6177 return Ok(());
6178 }
6179
6180 while _next_ordinal_to_read < 7 {
6182 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6183 _next_ordinal_to_read += 1;
6184 next_offset += envelope_size;
6185 }
6186
6187 let next_out_of_line = decoder.next_out_of_line();
6188 let handles_before = decoder.remaining_handles();
6189 if let Some((inlined, num_bytes, num_handles)) =
6190 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6191 {
6192 let member_inline_size =
6193 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6194 if inlined != (member_inline_size <= 4) {
6195 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6196 }
6197 let inner_offset;
6198 let mut inner_depth = depth.clone();
6199 if inlined {
6200 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6201 inner_offset = next_offset;
6202 } else {
6203 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6204 inner_depth.increment()?;
6205 }
6206 let val_ref = self.is_local_device.get_or_insert_with(|| fidl::new_empty!(bool, D));
6207 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6208 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6209 {
6210 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6211 }
6212 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6213 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6214 }
6215 }
6216
6217 next_offset += envelope_size;
6218 _next_ordinal_to_read += 1;
6219 if next_offset >= end_offset {
6220 return Ok(());
6221 }
6222
6223 while _next_ordinal_to_read < 8 {
6225 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6226 _next_ordinal_to_read += 1;
6227 next_offset += envelope_size;
6228 }
6229
6230 let next_out_of_line = decoder.next_out_of_line();
6231 let handles_before = decoder.remaining_handles();
6232 if let Some((inlined, num_bytes, num_handles)) =
6233 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6234 {
6235 let member_inline_size =
6236 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6237 if inlined != (member_inline_size <= 4) {
6238 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6239 }
6240 let inner_offset;
6241 let mut inner_depth = depth.clone();
6242 if inlined {
6243 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6244 inner_offset = next_offset;
6245 } else {
6246 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6247 inner_depth.increment()?;
6248 }
6249 let val_ref = self.is_reachable.get_or_insert_with(|| fidl::new_empty!(bool, D));
6250 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6251 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6252 {
6253 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6254 }
6255 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6256 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6257 }
6258 }
6259
6260 next_offset += envelope_size;
6261 _next_ordinal_to_read += 1;
6262 if next_offset >= end_offset {
6263 return Ok(());
6264 }
6265
6266 while _next_ordinal_to_read < 9 {
6268 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6269 _next_ordinal_to_read += 1;
6270 next_offset += envelope_size;
6271 }
6272
6273 let next_out_of_line = decoder.next_out_of_line();
6274 let handles_before = decoder.remaining_handles();
6275 if let Some((inlined, num_bytes, num_handles)) =
6276 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6277 {
6278 let member_inline_size =
6279 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6280 if inlined != (member_inline_size <= 4) {
6281 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6282 }
6283 let inner_offset;
6284 let mut inner_depth = depth.clone();
6285 if inlined {
6286 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6287 inner_offset = next_offset;
6288 } else {
6289 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6290 inner_depth.increment()?;
6291 }
6292 let val_ref = self.is_peer_br.get_or_insert_with(|| fidl::new_empty!(bool, D));
6293 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6294 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6295 {
6296 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6297 }
6298 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6299 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6300 }
6301 }
6302
6303 next_offset += envelope_size;
6304
6305 while next_offset < end_offset {
6307 _next_ordinal_to_read += 1;
6308 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6309 next_offset += envelope_size;
6310 }
6311
6312 Ok(())
6313 }
6314 }
6315
6316 impl ChannelInfo {
6317 #[inline(always)]
6318 fn max_ordinal_present(&self) -> u64 {
6319 if let Some(_) = self.masked_by_regulatory_domain {
6320 return 6;
6321 }
6322 if let Some(_) = self.spectrum_bandwidth_hz {
6323 return 5;
6324 }
6325 if let Some(_) = self.spectrum_center_frequency_hz {
6326 return 4;
6327 }
6328 if let Some(_) = self.max_transmit_power_dbm {
6329 return 3;
6330 }
6331 if let Some(_) = self.id {
6332 return 2;
6333 }
6334 if let Some(_) = self.index {
6335 return 1;
6336 }
6337 0
6338 }
6339 }
6340
6341 impl fidl::encoding::ValueTypeMarker for ChannelInfo {
6342 type Borrowed<'a> = &'a Self;
6343 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6344 value
6345 }
6346 }
6347
6348 unsafe impl fidl::encoding::TypeMarker for ChannelInfo {
6349 type Owned = Self;
6350
6351 #[inline(always)]
6352 fn inline_align(_context: fidl::encoding::Context) -> usize {
6353 8
6354 }
6355
6356 #[inline(always)]
6357 fn inline_size(_context: fidl::encoding::Context) -> usize {
6358 16
6359 }
6360 }
6361
6362 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChannelInfo, D>
6363 for &ChannelInfo
6364 {
6365 unsafe fn encode(
6366 self,
6367 encoder: &mut fidl::encoding::Encoder<'_, D>,
6368 offset: usize,
6369 mut depth: fidl::encoding::Depth,
6370 ) -> fidl::Result<()> {
6371 encoder.debug_check_bounds::<ChannelInfo>(offset);
6372 let max_ordinal: u64 = self.max_ordinal_present();
6374 encoder.write_num(max_ordinal, offset);
6375 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6376 if max_ordinal == 0 {
6378 return Ok(());
6379 }
6380 depth.increment()?;
6381 let envelope_size = 8;
6382 let bytes_len = max_ordinal as usize * envelope_size;
6383 #[allow(unused_variables)]
6384 let offset = encoder.out_of_line_offset(bytes_len);
6385 let mut _prev_end_offset: usize = 0;
6386 if 1 > max_ordinal {
6387 return Ok(());
6388 }
6389
6390 let cur_offset: usize = (1 - 1) * envelope_size;
6393
6394 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6396
6397 fidl::encoding::encode_in_envelope_optional::<u16, D>(
6402 self.index.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6403 encoder,
6404 offset + cur_offset,
6405 depth,
6406 )?;
6407
6408 _prev_end_offset = cur_offset + envelope_size;
6409 if 2 > max_ordinal {
6410 return Ok(());
6411 }
6412
6413 let cur_offset: usize = (2 - 1) * envelope_size;
6416
6417 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6419
6420 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<16>, D>(
6425 self.id.as_ref().map(
6426 <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow,
6427 ),
6428 encoder,
6429 offset + cur_offset,
6430 depth,
6431 )?;
6432
6433 _prev_end_offset = cur_offset + envelope_size;
6434 if 3 > max_ordinal {
6435 return Ok(());
6436 }
6437
6438 let cur_offset: usize = (3 - 1) * envelope_size;
6441
6442 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6444
6445 fidl::encoding::encode_in_envelope_optional::<i8, D>(
6450 self.max_transmit_power_dbm
6451 .as_ref()
6452 .map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
6453 encoder,
6454 offset + cur_offset,
6455 depth,
6456 )?;
6457
6458 _prev_end_offset = cur_offset + envelope_size;
6459 if 4 > max_ordinal {
6460 return Ok(());
6461 }
6462
6463 let cur_offset: usize = (4 - 1) * envelope_size;
6466
6467 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6469
6470 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6475 self.spectrum_center_frequency_hz
6476 .as_ref()
6477 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6478 encoder,
6479 offset + cur_offset,
6480 depth,
6481 )?;
6482
6483 _prev_end_offset = cur_offset + envelope_size;
6484 if 5 > max_ordinal {
6485 return Ok(());
6486 }
6487
6488 let cur_offset: usize = (5 - 1) * envelope_size;
6491
6492 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6494
6495 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6500 self.spectrum_bandwidth_hz
6501 .as_ref()
6502 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6503 encoder,
6504 offset + cur_offset,
6505 depth,
6506 )?;
6507
6508 _prev_end_offset = cur_offset + envelope_size;
6509 if 6 > max_ordinal {
6510 return Ok(());
6511 }
6512
6513 let cur_offset: usize = (6 - 1) * envelope_size;
6516
6517 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6519
6520 fidl::encoding::encode_in_envelope_optional::<bool, D>(
6525 self.masked_by_regulatory_domain
6526 .as_ref()
6527 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6528 encoder,
6529 offset + cur_offset,
6530 depth,
6531 )?;
6532
6533 _prev_end_offset = cur_offset + envelope_size;
6534
6535 Ok(())
6536 }
6537 }
6538
6539 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChannelInfo {
6540 #[inline(always)]
6541 fn new_empty() -> Self {
6542 Self::default()
6543 }
6544
6545 unsafe fn decode(
6546 &mut self,
6547 decoder: &mut fidl::encoding::Decoder<'_, D>,
6548 offset: usize,
6549 mut depth: fidl::encoding::Depth,
6550 ) -> fidl::Result<()> {
6551 decoder.debug_check_bounds::<Self>(offset);
6552 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6553 None => return Err(fidl::Error::NotNullable),
6554 Some(len) => len,
6555 };
6556 if len == 0 {
6558 return Ok(());
6559 };
6560 depth.increment()?;
6561 let envelope_size = 8;
6562 let bytes_len = len * envelope_size;
6563 let offset = decoder.out_of_line_offset(bytes_len)?;
6564 let mut _next_ordinal_to_read = 0;
6566 let mut next_offset = offset;
6567 let end_offset = offset + bytes_len;
6568 _next_ordinal_to_read += 1;
6569 if next_offset >= end_offset {
6570 return Ok(());
6571 }
6572
6573 while _next_ordinal_to_read < 1 {
6575 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6576 _next_ordinal_to_read += 1;
6577 next_offset += envelope_size;
6578 }
6579
6580 let next_out_of_line = decoder.next_out_of_line();
6581 let handles_before = decoder.remaining_handles();
6582 if let Some((inlined, num_bytes, num_handles)) =
6583 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6584 {
6585 let member_inline_size =
6586 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6587 if inlined != (member_inline_size <= 4) {
6588 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6589 }
6590 let inner_offset;
6591 let mut inner_depth = depth.clone();
6592 if inlined {
6593 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6594 inner_offset = next_offset;
6595 } else {
6596 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6597 inner_depth.increment()?;
6598 }
6599 let val_ref = self.index.get_or_insert_with(|| fidl::new_empty!(u16, D));
6600 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6601 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6602 {
6603 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6604 }
6605 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6606 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6607 }
6608 }
6609
6610 next_offset += envelope_size;
6611 _next_ordinal_to_read += 1;
6612 if next_offset >= end_offset {
6613 return Ok(());
6614 }
6615
6616 while _next_ordinal_to_read < 2 {
6618 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6619 _next_ordinal_to_read += 1;
6620 next_offset += envelope_size;
6621 }
6622
6623 let next_out_of_line = decoder.next_out_of_line();
6624 let handles_before = decoder.remaining_handles();
6625 if let Some((inlined, num_bytes, num_handles)) =
6626 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6627 {
6628 let member_inline_size =
6629 <fidl::encoding::BoundedString<16> as fidl::encoding::TypeMarker>::inline_size(
6630 decoder.context,
6631 );
6632 if inlined != (member_inline_size <= 4) {
6633 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6634 }
6635 let inner_offset;
6636 let mut inner_depth = depth.clone();
6637 if inlined {
6638 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6639 inner_offset = next_offset;
6640 } else {
6641 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6642 inner_depth.increment()?;
6643 }
6644 let val_ref = self
6645 .id
6646 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<16>, D));
6647 fidl::decode!(
6648 fidl::encoding::BoundedString<16>,
6649 D,
6650 val_ref,
6651 decoder,
6652 inner_offset,
6653 inner_depth
6654 )?;
6655 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6656 {
6657 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6658 }
6659 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6660 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6661 }
6662 }
6663
6664 next_offset += envelope_size;
6665 _next_ordinal_to_read += 1;
6666 if next_offset >= end_offset {
6667 return Ok(());
6668 }
6669
6670 while _next_ordinal_to_read < 3 {
6672 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6673 _next_ordinal_to_read += 1;
6674 next_offset += envelope_size;
6675 }
6676
6677 let next_out_of_line = decoder.next_out_of_line();
6678 let handles_before = decoder.remaining_handles();
6679 if let Some((inlined, num_bytes, num_handles)) =
6680 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6681 {
6682 let member_inline_size =
6683 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6684 if inlined != (member_inline_size <= 4) {
6685 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6686 }
6687 let inner_offset;
6688 let mut inner_depth = depth.clone();
6689 if inlined {
6690 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6691 inner_offset = next_offset;
6692 } else {
6693 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6694 inner_depth.increment()?;
6695 }
6696 let val_ref =
6697 self.max_transmit_power_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
6698 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
6699 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6700 {
6701 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6702 }
6703 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6704 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6705 }
6706 }
6707
6708 next_offset += envelope_size;
6709 _next_ordinal_to_read += 1;
6710 if next_offset >= end_offset {
6711 return Ok(());
6712 }
6713
6714 while _next_ordinal_to_read < 4 {
6716 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6717 _next_ordinal_to_read += 1;
6718 next_offset += envelope_size;
6719 }
6720
6721 let next_out_of_line = decoder.next_out_of_line();
6722 let handles_before = decoder.remaining_handles();
6723 if let Some((inlined, num_bytes, num_handles)) =
6724 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6725 {
6726 let member_inline_size =
6727 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6728 if inlined != (member_inline_size <= 4) {
6729 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6730 }
6731 let inner_offset;
6732 let mut inner_depth = depth.clone();
6733 if inlined {
6734 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6735 inner_offset = next_offset;
6736 } else {
6737 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6738 inner_depth.increment()?;
6739 }
6740 let val_ref = self
6741 .spectrum_center_frequency_hz
6742 .get_or_insert_with(|| fidl::new_empty!(u64, D));
6743 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6744 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6745 {
6746 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6747 }
6748 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6749 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6750 }
6751 }
6752
6753 next_offset += envelope_size;
6754 _next_ordinal_to_read += 1;
6755 if next_offset >= end_offset {
6756 return Ok(());
6757 }
6758
6759 while _next_ordinal_to_read < 5 {
6761 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6762 _next_ordinal_to_read += 1;
6763 next_offset += envelope_size;
6764 }
6765
6766 let next_out_of_line = decoder.next_out_of_line();
6767 let handles_before = decoder.remaining_handles();
6768 if let Some((inlined, num_bytes, num_handles)) =
6769 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6770 {
6771 let member_inline_size =
6772 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6773 if inlined != (member_inline_size <= 4) {
6774 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6775 }
6776 let inner_offset;
6777 let mut inner_depth = depth.clone();
6778 if inlined {
6779 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6780 inner_offset = next_offset;
6781 } else {
6782 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6783 inner_depth.increment()?;
6784 }
6785 let val_ref =
6786 self.spectrum_bandwidth_hz.get_or_insert_with(|| fidl::new_empty!(u64, D));
6787 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6788 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6789 {
6790 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6791 }
6792 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6793 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6794 }
6795 }
6796
6797 next_offset += envelope_size;
6798 _next_ordinal_to_read += 1;
6799 if next_offset >= end_offset {
6800 return Ok(());
6801 }
6802
6803 while _next_ordinal_to_read < 6 {
6805 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6806 _next_ordinal_to_read += 1;
6807 next_offset += envelope_size;
6808 }
6809
6810 let next_out_of_line = decoder.next_out_of_line();
6811 let handles_before = decoder.remaining_handles();
6812 if let Some((inlined, num_bytes, num_handles)) =
6813 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6814 {
6815 let member_inline_size =
6816 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6817 if inlined != (member_inline_size <= 4) {
6818 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6819 }
6820 let inner_offset;
6821 let mut inner_depth = depth.clone();
6822 if inlined {
6823 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6824 inner_offset = next_offset;
6825 } else {
6826 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6827 inner_depth.increment()?;
6828 }
6829 let val_ref = self
6830 .masked_by_regulatory_domain
6831 .get_or_insert_with(|| fidl::new_empty!(bool, D));
6832 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6833 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6834 {
6835 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6836 }
6837 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6838 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6839 }
6840 }
6841
6842 next_offset += envelope_size;
6843
6844 while next_offset < end_offset {
6846 _next_ordinal_to_read += 1;
6847 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6848 next_offset += envelope_size;
6849 }
6850
6851 Ok(())
6852 }
6853 }
6854
6855 impl Dhcp6PdInfo {
6856 #[inline(always)]
6857 fn max_ordinal_present(&self) -> u64 {
6858 if let Some(_) = self.hashed_pd_prefix {
6859 return 3;
6860 }
6861 if let Some(_) = self.pd_processed_ra_info {
6862 return 2;
6863 }
6864 if let Some(_) = self.dhcp6pd_state {
6865 return 1;
6866 }
6867 0
6868 }
6869 }
6870
6871 impl fidl::encoding::ValueTypeMarker for Dhcp6PdInfo {
6872 type Borrowed<'a> = &'a Self;
6873 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6874 value
6875 }
6876 }
6877
6878 unsafe impl fidl::encoding::TypeMarker for Dhcp6PdInfo {
6879 type Owned = Self;
6880
6881 #[inline(always)]
6882 fn inline_align(_context: fidl::encoding::Context) -> usize {
6883 8
6884 }
6885
6886 #[inline(always)]
6887 fn inline_size(_context: fidl::encoding::Context) -> usize {
6888 16
6889 }
6890 }
6891
6892 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Dhcp6PdInfo, D>
6893 for &Dhcp6PdInfo
6894 {
6895 unsafe fn encode(
6896 self,
6897 encoder: &mut fidl::encoding::Encoder<'_, D>,
6898 offset: usize,
6899 mut depth: fidl::encoding::Depth,
6900 ) -> fidl::Result<()> {
6901 encoder.debug_check_bounds::<Dhcp6PdInfo>(offset);
6902 let max_ordinal: u64 = self.max_ordinal_present();
6904 encoder.write_num(max_ordinal, offset);
6905 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6906 if max_ordinal == 0 {
6908 return Ok(());
6909 }
6910 depth.increment()?;
6911 let envelope_size = 8;
6912 let bytes_len = max_ordinal as usize * envelope_size;
6913 #[allow(unused_variables)]
6914 let offset = encoder.out_of_line_offset(bytes_len);
6915 let mut _prev_end_offset: usize = 0;
6916 if 1 > max_ordinal {
6917 return Ok(());
6918 }
6919
6920 let cur_offset: usize = (1 - 1) * envelope_size;
6923
6924 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6926
6927 fidl::encoding::encode_in_envelope_optional::<Dhcp6PdState, D>(
6932 self.dhcp6pd_state
6933 .as_ref()
6934 .map(<Dhcp6PdState as fidl::encoding::ValueTypeMarker>::borrow),
6935 encoder,
6936 offset + cur_offset,
6937 depth,
6938 )?;
6939
6940 _prev_end_offset = cur_offset + envelope_size;
6941 if 2 > max_ordinal {
6942 return Ok(());
6943 }
6944
6945 let cur_offset: usize = (2 - 1) * envelope_size;
6948
6949 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6951
6952 fidl::encoding::encode_in_envelope_optional::<PdProcessedRaInfo, D>(
6957 self.pd_processed_ra_info
6958 .as_ref()
6959 .map(<PdProcessedRaInfo as fidl::encoding::ValueTypeMarker>::borrow),
6960 encoder,
6961 offset + cur_offset,
6962 depth,
6963 )?;
6964
6965 _prev_end_offset = cur_offset + envelope_size;
6966 if 3 > max_ordinal {
6967 return Ok(());
6968 }
6969
6970 let cur_offset: usize = (3 - 1) * envelope_size;
6973
6974 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6976
6977 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
6982 self.hashed_pd_prefix.as_ref().map(
6983 <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
6984 ),
6985 encoder,
6986 offset + cur_offset,
6987 depth,
6988 )?;
6989
6990 _prev_end_offset = cur_offset + envelope_size;
6991
6992 Ok(())
6993 }
6994 }
6995
6996 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dhcp6PdInfo {
6997 #[inline(always)]
6998 fn new_empty() -> Self {
6999 Self::default()
7000 }
7001
7002 unsafe fn decode(
7003 &mut self,
7004 decoder: &mut fidl::encoding::Decoder<'_, D>,
7005 offset: usize,
7006 mut depth: fidl::encoding::Depth,
7007 ) -> fidl::Result<()> {
7008 decoder.debug_check_bounds::<Self>(offset);
7009 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7010 None => return Err(fidl::Error::NotNullable),
7011 Some(len) => len,
7012 };
7013 if len == 0 {
7015 return Ok(());
7016 };
7017 depth.increment()?;
7018 let envelope_size = 8;
7019 let bytes_len = len * envelope_size;
7020 let offset = decoder.out_of_line_offset(bytes_len)?;
7021 let mut _next_ordinal_to_read = 0;
7023 let mut next_offset = offset;
7024 let end_offset = offset + bytes_len;
7025 _next_ordinal_to_read += 1;
7026 if next_offset >= end_offset {
7027 return Ok(());
7028 }
7029
7030 while _next_ordinal_to_read < 1 {
7032 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7033 _next_ordinal_to_read += 1;
7034 next_offset += envelope_size;
7035 }
7036
7037 let next_out_of_line = decoder.next_out_of_line();
7038 let handles_before = decoder.remaining_handles();
7039 if let Some((inlined, num_bytes, num_handles)) =
7040 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7041 {
7042 let member_inline_size =
7043 <Dhcp6PdState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7044 if inlined != (member_inline_size <= 4) {
7045 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7046 }
7047 let inner_offset;
7048 let mut inner_depth = depth.clone();
7049 if inlined {
7050 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7051 inner_offset = next_offset;
7052 } else {
7053 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7054 inner_depth.increment()?;
7055 }
7056 let val_ref =
7057 self.dhcp6pd_state.get_or_insert_with(|| fidl::new_empty!(Dhcp6PdState, D));
7058 fidl::decode!(Dhcp6PdState, D, val_ref, decoder, inner_offset, inner_depth)?;
7059 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7060 {
7061 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7062 }
7063 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7064 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7065 }
7066 }
7067
7068 next_offset += envelope_size;
7069 _next_ordinal_to_read += 1;
7070 if next_offset >= end_offset {
7071 return Ok(());
7072 }
7073
7074 while _next_ordinal_to_read < 2 {
7076 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7077 _next_ordinal_to_read += 1;
7078 next_offset += envelope_size;
7079 }
7080
7081 let next_out_of_line = decoder.next_out_of_line();
7082 let handles_before = decoder.remaining_handles();
7083 if let Some((inlined, num_bytes, num_handles)) =
7084 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7085 {
7086 let member_inline_size =
7087 <PdProcessedRaInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7088 if inlined != (member_inline_size <= 4) {
7089 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7090 }
7091 let inner_offset;
7092 let mut inner_depth = depth.clone();
7093 if inlined {
7094 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7095 inner_offset = next_offset;
7096 } else {
7097 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7098 inner_depth.increment()?;
7099 }
7100 let val_ref = self
7101 .pd_processed_ra_info
7102 .get_or_insert_with(|| fidl::new_empty!(PdProcessedRaInfo, D));
7103 fidl::decode!(PdProcessedRaInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
7104 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7105 {
7106 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7107 }
7108 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7109 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7110 }
7111 }
7112
7113 next_offset += envelope_size;
7114 _next_ordinal_to_read += 1;
7115 if next_offset >= end_offset {
7116 return Ok(());
7117 }
7118
7119 while _next_ordinal_to_read < 3 {
7121 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7122 _next_ordinal_to_read += 1;
7123 next_offset += envelope_size;
7124 }
7125
7126 let next_out_of_line = decoder.next_out_of_line();
7127 let handles_before = decoder.remaining_handles();
7128 if let Some((inlined, num_bytes, num_handles)) =
7129 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7130 {
7131 let member_inline_size =
7132 <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
7133 decoder.context,
7134 );
7135 if inlined != (member_inline_size <= 4) {
7136 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7137 }
7138 let inner_offset;
7139 let mut inner_depth = depth.clone();
7140 if inlined {
7141 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7142 inner_offset = next_offset;
7143 } else {
7144 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7145 inner_depth.increment()?;
7146 }
7147 let val_ref = self
7148 .hashed_pd_prefix
7149 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
7150 fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
7151 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7152 {
7153 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7154 }
7155 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7156 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7157 }
7158 }
7159
7160 next_offset += envelope_size;
7161
7162 while next_offset < end_offset {
7164 _next_ordinal_to_read += 1;
7165 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7166 next_offset += envelope_size;
7167 }
7168
7169 Ok(())
7170 }
7171 }
7172
7173 impl DnsTxtEntry {
7174 #[inline(always)]
7175 fn max_ordinal_present(&self) -> u64 {
7176 if let Some(_) = self.value {
7177 return 2;
7178 }
7179 if let Some(_) = self.key {
7180 return 1;
7181 }
7182 0
7183 }
7184 }
7185
7186 impl fidl::encoding::ValueTypeMarker for DnsTxtEntry {
7187 type Borrowed<'a> = &'a Self;
7188 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7189 value
7190 }
7191 }
7192
7193 unsafe impl fidl::encoding::TypeMarker for DnsTxtEntry {
7194 type Owned = Self;
7195
7196 #[inline(always)]
7197 fn inline_align(_context: fidl::encoding::Context) -> usize {
7198 8
7199 }
7200
7201 #[inline(always)]
7202 fn inline_size(_context: fidl::encoding::Context) -> usize {
7203 16
7204 }
7205 }
7206
7207 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DnsTxtEntry, D>
7208 for &DnsTxtEntry
7209 {
7210 unsafe fn encode(
7211 self,
7212 encoder: &mut fidl::encoding::Encoder<'_, D>,
7213 offset: usize,
7214 mut depth: fidl::encoding::Depth,
7215 ) -> fidl::Result<()> {
7216 encoder.debug_check_bounds::<DnsTxtEntry>(offset);
7217 let max_ordinal: u64 = self.max_ordinal_present();
7219 encoder.write_num(max_ordinal, offset);
7220 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7221 if max_ordinal == 0 {
7223 return Ok(());
7224 }
7225 depth.increment()?;
7226 let envelope_size = 8;
7227 let bytes_len = max_ordinal as usize * envelope_size;
7228 #[allow(unused_variables)]
7229 let offset = encoder.out_of_line_offset(bytes_len);
7230 let mut _prev_end_offset: usize = 0;
7231 if 1 > max_ordinal {
7232 return Ok(());
7233 }
7234
7235 let cur_offset: usize = (1 - 1) * envelope_size;
7238
7239 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7241
7242 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
7247 self.key.as_ref().map(
7248 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
7249 ),
7250 encoder,
7251 offset + cur_offset,
7252 depth,
7253 )?;
7254
7255 _prev_end_offset = cur_offset + envelope_size;
7256 if 2 > max_ordinal {
7257 return Ok(());
7258 }
7259
7260 let cur_offset: usize = (2 - 1) * envelope_size;
7263
7264 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7266
7267 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 253>, D>(
7272 self.value.as_ref().map(
7273 <fidl::encoding::Vector<u8, 253> as fidl::encoding::ValueTypeMarker>::borrow,
7274 ),
7275 encoder,
7276 offset + cur_offset,
7277 depth,
7278 )?;
7279
7280 _prev_end_offset = cur_offset + envelope_size;
7281
7282 Ok(())
7283 }
7284 }
7285
7286 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DnsTxtEntry {
7287 #[inline(always)]
7288 fn new_empty() -> Self {
7289 Self::default()
7290 }
7291
7292 unsafe fn decode(
7293 &mut self,
7294 decoder: &mut fidl::encoding::Decoder<'_, D>,
7295 offset: usize,
7296 mut depth: fidl::encoding::Depth,
7297 ) -> fidl::Result<()> {
7298 decoder.debug_check_bounds::<Self>(offset);
7299 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7300 None => return Err(fidl::Error::NotNullable),
7301 Some(len) => len,
7302 };
7303 if len == 0 {
7305 return Ok(());
7306 };
7307 depth.increment()?;
7308 let envelope_size = 8;
7309 let bytes_len = len * envelope_size;
7310 let offset = decoder.out_of_line_offset(bytes_len)?;
7311 let mut _next_ordinal_to_read = 0;
7313 let mut next_offset = offset;
7314 let end_offset = offset + bytes_len;
7315 _next_ordinal_to_read += 1;
7316 if next_offset >= end_offset {
7317 return Ok(());
7318 }
7319
7320 while _next_ordinal_to_read < 1 {
7322 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7323 _next_ordinal_to_read += 1;
7324 next_offset += envelope_size;
7325 }
7326
7327 let next_out_of_line = decoder.next_out_of_line();
7328 let handles_before = decoder.remaining_handles();
7329 if let Some((inlined, num_bytes, num_handles)) =
7330 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7331 {
7332 let member_inline_size =
7333 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
7334 decoder.context,
7335 );
7336 if inlined != (member_inline_size <= 4) {
7337 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7338 }
7339 let inner_offset;
7340 let mut inner_depth = depth.clone();
7341 if inlined {
7342 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7343 inner_offset = next_offset;
7344 } else {
7345 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7346 inner_depth.increment()?;
7347 }
7348 let val_ref = self
7349 .key
7350 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
7351 fidl::decode!(
7352 fidl::encoding::BoundedString<64>,
7353 D,
7354 val_ref,
7355 decoder,
7356 inner_offset,
7357 inner_depth
7358 )?;
7359 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7360 {
7361 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7362 }
7363 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7364 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7365 }
7366 }
7367
7368 next_offset += envelope_size;
7369 _next_ordinal_to_read += 1;
7370 if next_offset >= end_offset {
7371 return Ok(());
7372 }
7373
7374 while _next_ordinal_to_read < 2 {
7376 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7377 _next_ordinal_to_read += 1;
7378 next_offset += envelope_size;
7379 }
7380
7381 let next_out_of_line = decoder.next_out_of_line();
7382 let handles_before = decoder.remaining_handles();
7383 if let Some((inlined, num_bytes, num_handles)) =
7384 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7385 {
7386 let member_inline_size =
7387 <fidl::encoding::Vector<u8, 253> as fidl::encoding::TypeMarker>::inline_size(
7388 decoder.context,
7389 );
7390 if inlined != (member_inline_size <= 4) {
7391 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7392 }
7393 let inner_offset;
7394 let mut inner_depth = depth.clone();
7395 if inlined {
7396 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7397 inner_offset = next_offset;
7398 } else {
7399 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7400 inner_depth.increment()?;
7401 }
7402 let val_ref = self
7403 .value
7404 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 253>, D));
7405 fidl::decode!(fidl::encoding::Vector<u8, 253>, D, val_ref, decoder, inner_offset, inner_depth)?;
7406 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7407 {
7408 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7409 }
7410 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7411 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7412 }
7413 }
7414
7415 next_offset += envelope_size;
7416
7417 while next_offset < end_offset {
7419 _next_ordinal_to_read += 1;
7420 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7421 next_offset += envelope_size;
7422 }
7423
7424 Ok(())
7425 }
7426 }
7427
7428 impl DnssdCounters {
7429 #[inline(always)]
7430 fn max_ordinal_present(&self) -> u64 {
7431 if let Some(_) = self.upstream_dns_counters {
7432 return 8;
7433 }
7434 if let Some(_) = self.resolved_by_srp {
7435 return 7;
7436 }
7437 if let Some(_) = self.other_response {
7438 return 6;
7439 }
7440 if let Some(_) = self.not_implemented_response {
7441 return 5;
7442 }
7443 if let Some(_) = self.name_error_response {
7444 return 4;
7445 }
7446 if let Some(_) = self.format_error_response {
7447 return 3;
7448 }
7449 if let Some(_) = self.server_failure_response {
7450 return 2;
7451 }
7452 if let Some(_) = self.success_response {
7453 return 1;
7454 }
7455 0
7456 }
7457 }
7458
7459 impl fidl::encoding::ValueTypeMarker for DnssdCounters {
7460 type Borrowed<'a> = &'a Self;
7461 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7462 value
7463 }
7464 }
7465
7466 unsafe impl fidl::encoding::TypeMarker for DnssdCounters {
7467 type Owned = Self;
7468
7469 #[inline(always)]
7470 fn inline_align(_context: fidl::encoding::Context) -> usize {
7471 8
7472 }
7473
7474 #[inline(always)]
7475 fn inline_size(_context: fidl::encoding::Context) -> usize {
7476 16
7477 }
7478 }
7479
7480 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DnssdCounters, D>
7481 for &DnssdCounters
7482 {
7483 unsafe fn encode(
7484 self,
7485 encoder: &mut fidl::encoding::Encoder<'_, D>,
7486 offset: usize,
7487 mut depth: fidl::encoding::Depth,
7488 ) -> fidl::Result<()> {
7489 encoder.debug_check_bounds::<DnssdCounters>(offset);
7490 let max_ordinal: u64 = self.max_ordinal_present();
7492 encoder.write_num(max_ordinal, offset);
7493 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7494 if max_ordinal == 0 {
7496 return Ok(());
7497 }
7498 depth.increment()?;
7499 let envelope_size = 8;
7500 let bytes_len = max_ordinal as usize * envelope_size;
7501 #[allow(unused_variables)]
7502 let offset = encoder.out_of_line_offset(bytes_len);
7503 let mut _prev_end_offset: usize = 0;
7504 if 1 > max_ordinal {
7505 return Ok(());
7506 }
7507
7508 let cur_offset: usize = (1 - 1) * envelope_size;
7511
7512 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7514
7515 fidl::encoding::encode_in_envelope_optional::<u32, D>(
7520 self.success_response
7521 .as_ref()
7522 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7523 encoder,
7524 offset + cur_offset,
7525 depth,
7526 )?;
7527
7528 _prev_end_offset = cur_offset + envelope_size;
7529 if 2 > max_ordinal {
7530 return Ok(());
7531 }
7532
7533 let cur_offset: usize = (2 - 1) * envelope_size;
7536
7537 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7539
7540 fidl::encoding::encode_in_envelope_optional::<u32, D>(
7545 self.server_failure_response
7546 .as_ref()
7547 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7548 encoder,
7549 offset + cur_offset,
7550 depth,
7551 )?;
7552
7553 _prev_end_offset = cur_offset + envelope_size;
7554 if 3 > max_ordinal {
7555 return Ok(());
7556 }
7557
7558 let cur_offset: usize = (3 - 1) * envelope_size;
7561
7562 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7564
7565 fidl::encoding::encode_in_envelope_optional::<u32, D>(
7570 self.format_error_response
7571 .as_ref()
7572 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7573 encoder,
7574 offset + cur_offset,
7575 depth,
7576 )?;
7577
7578 _prev_end_offset = cur_offset + envelope_size;
7579 if 4 > max_ordinal {
7580 return Ok(());
7581 }
7582
7583 let cur_offset: usize = (4 - 1) * envelope_size;
7586
7587 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7589
7590 fidl::encoding::encode_in_envelope_optional::<u32, D>(
7595 self.name_error_response
7596 .as_ref()
7597 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7598 encoder,
7599 offset + cur_offset,
7600 depth,
7601 )?;
7602
7603 _prev_end_offset = cur_offset + envelope_size;
7604 if 5 > max_ordinal {
7605 return Ok(());
7606 }
7607
7608 let cur_offset: usize = (5 - 1) * envelope_size;
7611
7612 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7614
7615 fidl::encoding::encode_in_envelope_optional::<u32, D>(
7620 self.not_implemented_response
7621 .as_ref()
7622 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7623 encoder,
7624 offset + cur_offset,
7625 depth,
7626 )?;
7627
7628 _prev_end_offset = cur_offset + envelope_size;
7629 if 6 > max_ordinal {
7630 return Ok(());
7631 }
7632
7633 let cur_offset: usize = (6 - 1) * envelope_size;
7636
7637 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7639
7640 fidl::encoding::encode_in_envelope_optional::<u32, D>(
7645 self.other_response.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7646 encoder,
7647 offset + cur_offset,
7648 depth,
7649 )?;
7650
7651 _prev_end_offset = cur_offset + envelope_size;
7652 if 7 > max_ordinal {
7653 return Ok(());
7654 }
7655
7656 let cur_offset: usize = (7 - 1) * envelope_size;
7659
7660 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7662
7663 fidl::encoding::encode_in_envelope_optional::<u32, D>(
7668 self.resolved_by_srp.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7669 encoder,
7670 offset + cur_offset,
7671 depth,
7672 )?;
7673
7674 _prev_end_offset = cur_offset + envelope_size;
7675 if 8 > max_ordinal {
7676 return Ok(());
7677 }
7678
7679 let cur_offset: usize = (8 - 1) * envelope_size;
7682
7683 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7685
7686 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsCounters, D>(
7691 self.upstream_dns_counters
7692 .as_ref()
7693 .map(<UpstreamDnsCounters as fidl::encoding::ValueTypeMarker>::borrow),
7694 encoder,
7695 offset + cur_offset,
7696 depth,
7697 )?;
7698
7699 _prev_end_offset = cur_offset + envelope_size;
7700
7701 Ok(())
7702 }
7703 }
7704
7705 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DnssdCounters {
7706 #[inline(always)]
7707 fn new_empty() -> Self {
7708 Self::default()
7709 }
7710
7711 unsafe fn decode(
7712 &mut self,
7713 decoder: &mut fidl::encoding::Decoder<'_, D>,
7714 offset: usize,
7715 mut depth: fidl::encoding::Depth,
7716 ) -> fidl::Result<()> {
7717 decoder.debug_check_bounds::<Self>(offset);
7718 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7719 None => return Err(fidl::Error::NotNullable),
7720 Some(len) => len,
7721 };
7722 if len == 0 {
7724 return Ok(());
7725 };
7726 depth.increment()?;
7727 let envelope_size = 8;
7728 let bytes_len = len * envelope_size;
7729 let offset = decoder.out_of_line_offset(bytes_len)?;
7730 let mut _next_ordinal_to_read = 0;
7732 let mut next_offset = offset;
7733 let end_offset = offset + bytes_len;
7734 _next_ordinal_to_read += 1;
7735 if next_offset >= end_offset {
7736 return Ok(());
7737 }
7738
7739 while _next_ordinal_to_read < 1 {
7741 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7742 _next_ordinal_to_read += 1;
7743 next_offset += envelope_size;
7744 }
7745
7746 let next_out_of_line = decoder.next_out_of_line();
7747 let handles_before = decoder.remaining_handles();
7748 if let Some((inlined, num_bytes, num_handles)) =
7749 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7750 {
7751 let member_inline_size =
7752 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7753 if inlined != (member_inline_size <= 4) {
7754 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7755 }
7756 let inner_offset;
7757 let mut inner_depth = depth.clone();
7758 if inlined {
7759 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7760 inner_offset = next_offset;
7761 } else {
7762 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7763 inner_depth.increment()?;
7764 }
7765 let val_ref = self.success_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
7766 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7767 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7768 {
7769 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7770 }
7771 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7772 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7773 }
7774 }
7775
7776 next_offset += envelope_size;
7777 _next_ordinal_to_read += 1;
7778 if next_offset >= end_offset {
7779 return Ok(());
7780 }
7781
7782 while _next_ordinal_to_read < 2 {
7784 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7785 _next_ordinal_to_read += 1;
7786 next_offset += envelope_size;
7787 }
7788
7789 let next_out_of_line = decoder.next_out_of_line();
7790 let handles_before = decoder.remaining_handles();
7791 if let Some((inlined, num_bytes, num_handles)) =
7792 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7793 {
7794 let member_inline_size =
7795 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7796 if inlined != (member_inline_size <= 4) {
7797 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7798 }
7799 let inner_offset;
7800 let mut inner_depth = depth.clone();
7801 if inlined {
7802 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7803 inner_offset = next_offset;
7804 } else {
7805 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7806 inner_depth.increment()?;
7807 }
7808 let val_ref =
7809 self.server_failure_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
7810 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7811 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7812 {
7813 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7814 }
7815 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7816 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7817 }
7818 }
7819
7820 next_offset += envelope_size;
7821 _next_ordinal_to_read += 1;
7822 if next_offset >= end_offset {
7823 return Ok(());
7824 }
7825
7826 while _next_ordinal_to_read < 3 {
7828 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7829 _next_ordinal_to_read += 1;
7830 next_offset += envelope_size;
7831 }
7832
7833 let next_out_of_line = decoder.next_out_of_line();
7834 let handles_before = decoder.remaining_handles();
7835 if let Some((inlined, num_bytes, num_handles)) =
7836 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7837 {
7838 let member_inline_size =
7839 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7840 if inlined != (member_inline_size <= 4) {
7841 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7842 }
7843 let inner_offset;
7844 let mut inner_depth = depth.clone();
7845 if inlined {
7846 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7847 inner_offset = next_offset;
7848 } else {
7849 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7850 inner_depth.increment()?;
7851 }
7852 let val_ref =
7853 self.format_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
7854 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7855 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7856 {
7857 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7858 }
7859 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7860 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7861 }
7862 }
7863
7864 next_offset += envelope_size;
7865 _next_ordinal_to_read += 1;
7866 if next_offset >= end_offset {
7867 return Ok(());
7868 }
7869
7870 while _next_ordinal_to_read < 4 {
7872 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7873 _next_ordinal_to_read += 1;
7874 next_offset += envelope_size;
7875 }
7876
7877 let next_out_of_line = decoder.next_out_of_line();
7878 let handles_before = decoder.remaining_handles();
7879 if let Some((inlined, num_bytes, num_handles)) =
7880 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7881 {
7882 let member_inline_size =
7883 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7884 if inlined != (member_inline_size <= 4) {
7885 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7886 }
7887 let inner_offset;
7888 let mut inner_depth = depth.clone();
7889 if inlined {
7890 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7891 inner_offset = next_offset;
7892 } else {
7893 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7894 inner_depth.increment()?;
7895 }
7896 let val_ref =
7897 self.name_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
7898 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7899 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7900 {
7901 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7902 }
7903 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7904 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7905 }
7906 }
7907
7908 next_offset += envelope_size;
7909 _next_ordinal_to_read += 1;
7910 if next_offset >= end_offset {
7911 return Ok(());
7912 }
7913
7914 while _next_ordinal_to_read < 5 {
7916 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7917 _next_ordinal_to_read += 1;
7918 next_offset += envelope_size;
7919 }
7920
7921 let next_out_of_line = decoder.next_out_of_line();
7922 let handles_before = decoder.remaining_handles();
7923 if let Some((inlined, num_bytes, num_handles)) =
7924 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7925 {
7926 let member_inline_size =
7927 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7928 if inlined != (member_inline_size <= 4) {
7929 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7930 }
7931 let inner_offset;
7932 let mut inner_depth = depth.clone();
7933 if inlined {
7934 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7935 inner_offset = next_offset;
7936 } else {
7937 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7938 inner_depth.increment()?;
7939 }
7940 let val_ref =
7941 self.not_implemented_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
7942 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7943 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7944 {
7945 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7946 }
7947 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7948 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7949 }
7950 }
7951
7952 next_offset += envelope_size;
7953 _next_ordinal_to_read += 1;
7954 if next_offset >= end_offset {
7955 return Ok(());
7956 }
7957
7958 while _next_ordinal_to_read < 6 {
7960 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7961 _next_ordinal_to_read += 1;
7962 next_offset += envelope_size;
7963 }
7964
7965 let next_out_of_line = decoder.next_out_of_line();
7966 let handles_before = decoder.remaining_handles();
7967 if let Some((inlined, num_bytes, num_handles)) =
7968 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7969 {
7970 let member_inline_size =
7971 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7972 if inlined != (member_inline_size <= 4) {
7973 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7974 }
7975 let inner_offset;
7976 let mut inner_depth = depth.clone();
7977 if inlined {
7978 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7979 inner_offset = next_offset;
7980 } else {
7981 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7982 inner_depth.increment()?;
7983 }
7984 let val_ref = self.other_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
7985 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7986 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7987 {
7988 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7989 }
7990 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7991 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7992 }
7993 }
7994
7995 next_offset += envelope_size;
7996 _next_ordinal_to_read += 1;
7997 if next_offset >= end_offset {
7998 return Ok(());
7999 }
8000
8001 while _next_ordinal_to_read < 7 {
8003 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8004 _next_ordinal_to_read += 1;
8005 next_offset += envelope_size;
8006 }
8007
8008 let next_out_of_line = decoder.next_out_of_line();
8009 let handles_before = decoder.remaining_handles();
8010 if let Some((inlined, num_bytes, num_handles)) =
8011 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8012 {
8013 let member_inline_size =
8014 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8015 if inlined != (member_inline_size <= 4) {
8016 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8017 }
8018 let inner_offset;
8019 let mut inner_depth = depth.clone();
8020 if inlined {
8021 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8022 inner_offset = next_offset;
8023 } else {
8024 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8025 inner_depth.increment()?;
8026 }
8027 let val_ref = self.resolved_by_srp.get_or_insert_with(|| fidl::new_empty!(u32, D));
8028 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
8029 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8030 {
8031 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8032 }
8033 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8034 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8035 }
8036 }
8037
8038 next_offset += envelope_size;
8039 _next_ordinal_to_read += 1;
8040 if next_offset >= end_offset {
8041 return Ok(());
8042 }
8043
8044 while _next_ordinal_to_read < 8 {
8046 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8047 _next_ordinal_to_read += 1;
8048 next_offset += envelope_size;
8049 }
8050
8051 let next_out_of_line = decoder.next_out_of_line();
8052 let handles_before = decoder.remaining_handles();
8053 if let Some((inlined, num_bytes, num_handles)) =
8054 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8055 {
8056 let member_inline_size =
8057 <UpstreamDnsCounters as fidl::encoding::TypeMarker>::inline_size(
8058 decoder.context,
8059 );
8060 if inlined != (member_inline_size <= 4) {
8061 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8062 }
8063 let inner_offset;
8064 let mut inner_depth = depth.clone();
8065 if inlined {
8066 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8067 inner_offset = next_offset;
8068 } else {
8069 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8070 inner_depth.increment()?;
8071 }
8072 let val_ref = self
8073 .upstream_dns_counters
8074 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsCounters, D));
8075 fidl::decode!(UpstreamDnsCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
8076 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8077 {
8078 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8079 }
8080 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8081 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8082 }
8083 }
8084
8085 next_offset += envelope_size;
8086
8087 while next_offset < end_offset {
8089 _next_ordinal_to_read += 1;
8090 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8091 next_offset += envelope_size;
8092 }
8093
8094 Ok(())
8095 }
8096 }
8097
8098 impl ExternalRoute {
8099 #[inline(always)]
8100 fn max_ordinal_present(&self) -> u64 {
8101 if let Some(_) = self.stable {
8102 return 3;
8103 }
8104 if let Some(_) = self.route_preference {
8105 return 2;
8106 }
8107 if let Some(_) = self.subnet {
8108 return 1;
8109 }
8110 0
8111 }
8112 }
8113
8114 impl fidl::encoding::ValueTypeMarker for ExternalRoute {
8115 type Borrowed<'a> = &'a Self;
8116 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8117 value
8118 }
8119 }
8120
8121 unsafe impl fidl::encoding::TypeMarker for ExternalRoute {
8122 type Owned = Self;
8123
8124 #[inline(always)]
8125 fn inline_align(_context: fidl::encoding::Context) -> usize {
8126 8
8127 }
8128
8129 #[inline(always)]
8130 fn inline_size(_context: fidl::encoding::Context) -> usize {
8131 16
8132 }
8133 }
8134
8135 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExternalRoute, D>
8136 for &ExternalRoute
8137 {
8138 unsafe fn encode(
8139 self,
8140 encoder: &mut fidl::encoding::Encoder<'_, D>,
8141 offset: usize,
8142 mut depth: fidl::encoding::Depth,
8143 ) -> fidl::Result<()> {
8144 encoder.debug_check_bounds::<ExternalRoute>(offset);
8145 let max_ordinal: u64 = self.max_ordinal_present();
8147 encoder.write_num(max_ordinal, offset);
8148 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8149 if max_ordinal == 0 {
8151 return Ok(());
8152 }
8153 depth.increment()?;
8154 let envelope_size = 8;
8155 let bytes_len = max_ordinal as usize * envelope_size;
8156 #[allow(unused_variables)]
8157 let offset = encoder.out_of_line_offset(bytes_len);
8158 let mut _prev_end_offset: usize = 0;
8159 if 1 > max_ordinal {
8160 return Ok(());
8161 }
8162
8163 let cur_offset: usize = (1 - 1) * envelope_size;
8166
8167 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8169
8170 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>(
8175 self.subnet.as_ref().map(<fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow),
8176 encoder, offset + cur_offset, depth
8177 )?;
8178
8179 _prev_end_offset = cur_offset + envelope_size;
8180 if 2 > max_ordinal {
8181 return Ok(());
8182 }
8183
8184 let cur_offset: usize = (2 - 1) * envelope_size;
8187
8188 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8190
8191 fidl::encoding::encode_in_envelope_optional::<RoutePreference, D>(
8196 self.route_preference
8197 .as_ref()
8198 .map(<RoutePreference as fidl::encoding::ValueTypeMarker>::borrow),
8199 encoder,
8200 offset + cur_offset,
8201 depth,
8202 )?;
8203
8204 _prev_end_offset = cur_offset + envelope_size;
8205 if 3 > max_ordinal {
8206 return Ok(());
8207 }
8208
8209 let cur_offset: usize = (3 - 1) * envelope_size;
8212
8213 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8215
8216 fidl::encoding::encode_in_envelope_optional::<bool, D>(
8221 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
8222 encoder,
8223 offset + cur_offset,
8224 depth,
8225 )?;
8226
8227 _prev_end_offset = cur_offset + envelope_size;
8228
8229 Ok(())
8230 }
8231 }
8232
8233 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExternalRoute {
8234 #[inline(always)]
8235 fn new_empty() -> Self {
8236 Self::default()
8237 }
8238
8239 unsafe fn decode(
8240 &mut self,
8241 decoder: &mut fidl::encoding::Decoder<'_, D>,
8242 offset: usize,
8243 mut depth: fidl::encoding::Depth,
8244 ) -> fidl::Result<()> {
8245 decoder.debug_check_bounds::<Self>(offset);
8246 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8247 None => return Err(fidl::Error::NotNullable),
8248 Some(len) => len,
8249 };
8250 if len == 0 {
8252 return Ok(());
8253 };
8254 depth.increment()?;
8255 let envelope_size = 8;
8256 let bytes_len = len * envelope_size;
8257 let offset = decoder.out_of_line_offset(bytes_len)?;
8258 let mut _next_ordinal_to_read = 0;
8260 let mut next_offset = offset;
8261 let end_offset = offset + bytes_len;
8262 _next_ordinal_to_read += 1;
8263 if next_offset >= end_offset {
8264 return Ok(());
8265 }
8266
8267 while _next_ordinal_to_read < 1 {
8269 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8270 _next_ordinal_to_read += 1;
8271 next_offset += envelope_size;
8272 }
8273
8274 let next_out_of_line = decoder.next_out_of_line();
8275 let handles_before = decoder.remaining_handles();
8276 if let Some((inlined, num_bytes, num_handles)) =
8277 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8278 {
8279 let member_inline_size = <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8280 if inlined != (member_inline_size <= 4) {
8281 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8282 }
8283 let inner_offset;
8284 let mut inner_depth = depth.clone();
8285 if inlined {
8286 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8287 inner_offset = next_offset;
8288 } else {
8289 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8290 inner_depth.increment()?;
8291 }
8292 let val_ref = self.subnet.get_or_insert_with(|| {
8293 fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D)
8294 });
8295 fidl::decode!(
8296 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
8297 D,
8298 val_ref,
8299 decoder,
8300 inner_offset,
8301 inner_depth
8302 )?;
8303 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8304 {
8305 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8306 }
8307 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8308 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8309 }
8310 }
8311
8312 next_offset += envelope_size;
8313 _next_ordinal_to_read += 1;
8314 if next_offset >= end_offset {
8315 return Ok(());
8316 }
8317
8318 while _next_ordinal_to_read < 2 {
8320 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8321 _next_ordinal_to_read += 1;
8322 next_offset += envelope_size;
8323 }
8324
8325 let next_out_of_line = decoder.next_out_of_line();
8326 let handles_before = decoder.remaining_handles();
8327 if let Some((inlined, num_bytes, num_handles)) =
8328 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8329 {
8330 let member_inline_size =
8331 <RoutePreference as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8332 if inlined != (member_inline_size <= 4) {
8333 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8334 }
8335 let inner_offset;
8336 let mut inner_depth = depth.clone();
8337 if inlined {
8338 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8339 inner_offset = next_offset;
8340 } else {
8341 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8342 inner_depth.increment()?;
8343 }
8344 let val_ref = self
8345 .route_preference
8346 .get_or_insert_with(|| fidl::new_empty!(RoutePreference, D));
8347 fidl::decode!(RoutePreference, D, val_ref, decoder, inner_offset, inner_depth)?;
8348 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8349 {
8350 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8351 }
8352 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8353 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8354 }
8355 }
8356
8357 next_offset += envelope_size;
8358 _next_ordinal_to_read += 1;
8359 if next_offset >= end_offset {
8360 return Ok(());
8361 }
8362
8363 while _next_ordinal_to_read < 3 {
8365 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8366 _next_ordinal_to_read += 1;
8367 next_offset += envelope_size;
8368 }
8369
8370 let next_out_of_line = decoder.next_out_of_line();
8371 let handles_before = decoder.remaining_handles();
8372 if let Some((inlined, num_bytes, num_handles)) =
8373 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8374 {
8375 let member_inline_size =
8376 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8377 if inlined != (member_inline_size <= 4) {
8378 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8379 }
8380 let inner_offset;
8381 let mut inner_depth = depth.clone();
8382 if inlined {
8383 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8384 inner_offset = next_offset;
8385 } else {
8386 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8387 inner_depth.increment()?;
8388 }
8389 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
8390 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
8391 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8392 {
8393 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8394 }
8395 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8396 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8397 }
8398 }
8399
8400 next_offset += envelope_size;
8401
8402 while next_offset < end_offset {
8404 _next_ordinal_to_read += 1;
8405 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8406 next_offset += envelope_size;
8407 }
8408
8409 Ok(())
8410 }
8411 }
8412
8413 impl JoinerCommissioningParams {
8414 #[inline(always)]
8415 fn max_ordinal_present(&self) -> u64 {
8416 if let Some(_) = self.vendor_data_string {
8417 return 6;
8418 }
8419 if let Some(_) = self.vendor_sw_version {
8420 return 5;
8421 }
8422 if let Some(_) = self.vendor_model {
8423 return 4;
8424 }
8425 if let Some(_) = self.vendor_name {
8426 return 3;
8427 }
8428 if let Some(_) = self.provisioning_url {
8429 return 2;
8430 }
8431 if let Some(_) = self.pskd {
8432 return 1;
8433 }
8434 0
8435 }
8436 }
8437
8438 impl fidl::encoding::ValueTypeMarker for JoinerCommissioningParams {
8439 type Borrowed<'a> = &'a Self;
8440 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8441 value
8442 }
8443 }
8444
8445 unsafe impl fidl::encoding::TypeMarker for JoinerCommissioningParams {
8446 type Owned = Self;
8447
8448 #[inline(always)]
8449 fn inline_align(_context: fidl::encoding::Context) -> usize {
8450 8
8451 }
8452
8453 #[inline(always)]
8454 fn inline_size(_context: fidl::encoding::Context) -> usize {
8455 16
8456 }
8457 }
8458
8459 unsafe impl<D: fidl::encoding::ResourceDialect>
8460 fidl::encoding::Encode<JoinerCommissioningParams, D> for &JoinerCommissioningParams
8461 {
8462 unsafe fn encode(
8463 self,
8464 encoder: &mut fidl::encoding::Encoder<'_, D>,
8465 offset: usize,
8466 mut depth: fidl::encoding::Depth,
8467 ) -> fidl::Result<()> {
8468 encoder.debug_check_bounds::<JoinerCommissioningParams>(offset);
8469 let max_ordinal: u64 = self.max_ordinal_present();
8471 encoder.write_num(max_ordinal, offset);
8472 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8473 if max_ordinal == 0 {
8475 return Ok(());
8476 }
8477 depth.increment()?;
8478 let envelope_size = 8;
8479 let bytes_len = max_ordinal as usize * envelope_size;
8480 #[allow(unused_variables)]
8481 let offset = encoder.out_of_line_offset(bytes_len);
8482 let mut _prev_end_offset: usize = 0;
8483 if 1 > max_ordinal {
8484 return Ok(());
8485 }
8486
8487 let cur_offset: usize = (1 - 1) * envelope_size;
8490
8491 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8493
8494 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
8499 self.pskd.as_ref().map(
8500 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
8501 ),
8502 encoder,
8503 offset + cur_offset,
8504 depth,
8505 )?;
8506
8507 _prev_end_offset = cur_offset + envelope_size;
8508 if 2 > max_ordinal {
8509 return Ok(());
8510 }
8511
8512 let cur_offset: usize = (2 - 1) * envelope_size;
8515
8516 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8518
8519 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
8524 self.provisioning_url.as_ref().map(
8525 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
8526 ),
8527 encoder,
8528 offset + cur_offset,
8529 depth,
8530 )?;
8531
8532 _prev_end_offset = cur_offset + envelope_size;
8533 if 3 > max_ordinal {
8534 return Ok(());
8535 }
8536
8537 let cur_offset: usize = (3 - 1) * envelope_size;
8540
8541 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8543
8544 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
8549 self.vendor_name.as_ref().map(
8550 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
8551 ),
8552 encoder,
8553 offset + cur_offset,
8554 depth,
8555 )?;
8556
8557 _prev_end_offset = cur_offset + envelope_size;
8558 if 4 > max_ordinal {
8559 return Ok(());
8560 }
8561
8562 let cur_offset: usize = (4 - 1) * envelope_size;
8565
8566 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8568
8569 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
8574 self.vendor_model.as_ref().map(
8575 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
8576 ),
8577 encoder,
8578 offset + cur_offset,
8579 depth,
8580 )?;
8581
8582 _prev_end_offset = cur_offset + envelope_size;
8583 if 5 > max_ordinal {
8584 return Ok(());
8585 }
8586
8587 let cur_offset: usize = (5 - 1) * envelope_size;
8590
8591 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8593
8594 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<16>, D>(
8599 self.vendor_sw_version.as_ref().map(
8600 <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow,
8601 ),
8602 encoder,
8603 offset + cur_offset,
8604 depth,
8605 )?;
8606
8607 _prev_end_offset = cur_offset + envelope_size;
8608 if 6 > max_ordinal {
8609 return Ok(());
8610 }
8611
8612 let cur_offset: usize = (6 - 1) * envelope_size;
8615
8616 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8618
8619 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
8624 self.vendor_data_string.as_ref().map(
8625 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
8626 ),
8627 encoder,
8628 offset + cur_offset,
8629 depth,
8630 )?;
8631
8632 _prev_end_offset = cur_offset + envelope_size;
8633
8634 Ok(())
8635 }
8636 }
8637
8638 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8639 for JoinerCommissioningParams
8640 {
8641 #[inline(always)]
8642 fn new_empty() -> Self {
8643 Self::default()
8644 }
8645
8646 unsafe fn decode(
8647 &mut self,
8648 decoder: &mut fidl::encoding::Decoder<'_, D>,
8649 offset: usize,
8650 mut depth: fidl::encoding::Depth,
8651 ) -> fidl::Result<()> {
8652 decoder.debug_check_bounds::<Self>(offset);
8653 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8654 None => return Err(fidl::Error::NotNullable),
8655 Some(len) => len,
8656 };
8657 if len == 0 {
8659 return Ok(());
8660 };
8661 depth.increment()?;
8662 let envelope_size = 8;
8663 let bytes_len = len * envelope_size;
8664 let offset = decoder.out_of_line_offset(bytes_len)?;
8665 let mut _next_ordinal_to_read = 0;
8667 let mut next_offset = offset;
8668 let end_offset = offset + bytes_len;
8669 _next_ordinal_to_read += 1;
8670 if next_offset >= end_offset {
8671 return Ok(());
8672 }
8673
8674 while _next_ordinal_to_read < 1 {
8676 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8677 _next_ordinal_to_read += 1;
8678 next_offset += envelope_size;
8679 }
8680
8681 let next_out_of_line = decoder.next_out_of_line();
8682 let handles_before = decoder.remaining_handles();
8683 if let Some((inlined, num_bytes, num_handles)) =
8684 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8685 {
8686 let member_inline_size =
8687 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
8688 decoder.context,
8689 );
8690 if inlined != (member_inline_size <= 4) {
8691 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8692 }
8693 let inner_offset;
8694 let mut inner_depth = depth.clone();
8695 if inlined {
8696 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8697 inner_offset = next_offset;
8698 } else {
8699 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8700 inner_depth.increment()?;
8701 }
8702 let val_ref = self
8703 .pskd
8704 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
8705 fidl::decode!(
8706 fidl::encoding::BoundedString<32>,
8707 D,
8708 val_ref,
8709 decoder,
8710 inner_offset,
8711 inner_depth
8712 )?;
8713 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8714 {
8715 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8716 }
8717 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8718 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8719 }
8720 }
8721
8722 next_offset += envelope_size;
8723 _next_ordinal_to_read += 1;
8724 if next_offset >= end_offset {
8725 return Ok(());
8726 }
8727
8728 while _next_ordinal_to_read < 2 {
8730 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8731 _next_ordinal_to_read += 1;
8732 next_offset += envelope_size;
8733 }
8734
8735 let next_out_of_line = decoder.next_out_of_line();
8736 let handles_before = decoder.remaining_handles();
8737 if let Some((inlined, num_bytes, num_handles)) =
8738 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8739 {
8740 let member_inline_size =
8741 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
8742 decoder.context,
8743 );
8744 if inlined != (member_inline_size <= 4) {
8745 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8746 }
8747 let inner_offset;
8748 let mut inner_depth = depth.clone();
8749 if inlined {
8750 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8751 inner_offset = next_offset;
8752 } else {
8753 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8754 inner_depth.increment()?;
8755 }
8756 let val_ref = self
8757 .provisioning_url
8758 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
8759 fidl::decode!(
8760 fidl::encoding::BoundedString<64>,
8761 D,
8762 val_ref,
8763 decoder,
8764 inner_offset,
8765 inner_depth
8766 )?;
8767 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8768 {
8769 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8770 }
8771 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8772 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8773 }
8774 }
8775
8776 next_offset += envelope_size;
8777 _next_ordinal_to_read += 1;
8778 if next_offset >= end_offset {
8779 return Ok(());
8780 }
8781
8782 while _next_ordinal_to_read < 3 {
8784 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8785 _next_ordinal_to_read += 1;
8786 next_offset += envelope_size;
8787 }
8788
8789 let next_out_of_line = decoder.next_out_of_line();
8790 let handles_before = decoder.remaining_handles();
8791 if let Some((inlined, num_bytes, num_handles)) =
8792 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8793 {
8794 let member_inline_size =
8795 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
8796 decoder.context,
8797 );
8798 if inlined != (member_inline_size <= 4) {
8799 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8800 }
8801 let inner_offset;
8802 let mut inner_depth = depth.clone();
8803 if inlined {
8804 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8805 inner_offset = next_offset;
8806 } else {
8807 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8808 inner_depth.increment()?;
8809 }
8810 let val_ref = self
8811 .vendor_name
8812 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
8813 fidl::decode!(
8814 fidl::encoding::BoundedString<32>,
8815 D,
8816 val_ref,
8817 decoder,
8818 inner_offset,
8819 inner_depth
8820 )?;
8821 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8822 {
8823 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8824 }
8825 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8826 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8827 }
8828 }
8829
8830 next_offset += envelope_size;
8831 _next_ordinal_to_read += 1;
8832 if next_offset >= end_offset {
8833 return Ok(());
8834 }
8835
8836 while _next_ordinal_to_read < 4 {
8838 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8839 _next_ordinal_to_read += 1;
8840 next_offset += envelope_size;
8841 }
8842
8843 let next_out_of_line = decoder.next_out_of_line();
8844 let handles_before = decoder.remaining_handles();
8845 if let Some((inlined, num_bytes, num_handles)) =
8846 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8847 {
8848 let member_inline_size =
8849 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
8850 decoder.context,
8851 );
8852 if inlined != (member_inline_size <= 4) {
8853 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8854 }
8855 let inner_offset;
8856 let mut inner_depth = depth.clone();
8857 if inlined {
8858 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8859 inner_offset = next_offset;
8860 } else {
8861 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8862 inner_depth.increment()?;
8863 }
8864 let val_ref = self
8865 .vendor_model
8866 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
8867 fidl::decode!(
8868 fidl::encoding::BoundedString<32>,
8869 D,
8870 val_ref,
8871 decoder,
8872 inner_offset,
8873 inner_depth
8874 )?;
8875 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8876 {
8877 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8878 }
8879 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8880 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8881 }
8882 }
8883
8884 next_offset += envelope_size;
8885 _next_ordinal_to_read += 1;
8886 if next_offset >= end_offset {
8887 return Ok(());
8888 }
8889
8890 while _next_ordinal_to_read < 5 {
8892 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8893 _next_ordinal_to_read += 1;
8894 next_offset += envelope_size;
8895 }
8896
8897 let next_out_of_line = decoder.next_out_of_line();
8898 let handles_before = decoder.remaining_handles();
8899 if let Some((inlined, num_bytes, num_handles)) =
8900 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8901 {
8902 let member_inline_size =
8903 <fidl::encoding::BoundedString<16> as fidl::encoding::TypeMarker>::inline_size(
8904 decoder.context,
8905 );
8906 if inlined != (member_inline_size <= 4) {
8907 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8908 }
8909 let inner_offset;
8910 let mut inner_depth = depth.clone();
8911 if inlined {
8912 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8913 inner_offset = next_offset;
8914 } else {
8915 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8916 inner_depth.increment()?;
8917 }
8918 let val_ref = self
8919 .vendor_sw_version
8920 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<16>, D));
8921 fidl::decode!(
8922 fidl::encoding::BoundedString<16>,
8923 D,
8924 val_ref,
8925 decoder,
8926 inner_offset,
8927 inner_depth
8928 )?;
8929 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8930 {
8931 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8932 }
8933 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8934 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8935 }
8936 }
8937
8938 next_offset += envelope_size;
8939 _next_ordinal_to_read += 1;
8940 if next_offset >= end_offset {
8941 return Ok(());
8942 }
8943
8944 while _next_ordinal_to_read < 6 {
8946 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8947 _next_ordinal_to_read += 1;
8948 next_offset += envelope_size;
8949 }
8950
8951 let next_out_of_line = decoder.next_out_of_line();
8952 let handles_before = decoder.remaining_handles();
8953 if let Some((inlined, num_bytes, num_handles)) =
8954 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8955 {
8956 let member_inline_size =
8957 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
8958 decoder.context,
8959 );
8960 if inlined != (member_inline_size <= 4) {
8961 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8962 }
8963 let inner_offset;
8964 let mut inner_depth = depth.clone();
8965 if inlined {
8966 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8967 inner_offset = next_offset;
8968 } else {
8969 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8970 inner_depth.increment()?;
8971 }
8972 let val_ref = self
8973 .vendor_data_string
8974 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
8975 fidl::decode!(
8976 fidl::encoding::BoundedString<64>,
8977 D,
8978 val_ref,
8979 decoder,
8980 inner_offset,
8981 inner_depth
8982 )?;
8983 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8984 {
8985 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8986 }
8987 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8988 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8989 }
8990 }
8991
8992 next_offset += envelope_size;
8993
8994 while next_offset < end_offset {
8996 _next_ordinal_to_read += 1;
8997 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8998 next_offset += envelope_size;
8999 }
9000
9001 Ok(())
9002 }
9003 }
9004
9005 impl LeaderData {
9006 #[inline(always)]
9007 fn max_ordinal_present(&self) -> u64 {
9008 if let Some(_) = self.router_id {
9009 return 5;
9010 }
9011 if let Some(_) = self.stable_network_data_version {
9012 return 4;
9013 }
9014 if let Some(_) = self.network_data_version {
9015 return 3;
9016 }
9017 if let Some(_) = self.weight {
9018 return 2;
9019 }
9020 if let Some(_) = self.partition_id {
9021 return 1;
9022 }
9023 0
9024 }
9025 }
9026
9027 impl fidl::encoding::ValueTypeMarker for LeaderData {
9028 type Borrowed<'a> = &'a Self;
9029 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9030 value
9031 }
9032 }
9033
9034 unsafe impl fidl::encoding::TypeMarker for LeaderData {
9035 type Owned = Self;
9036
9037 #[inline(always)]
9038 fn inline_align(_context: fidl::encoding::Context) -> usize {
9039 8
9040 }
9041
9042 #[inline(always)]
9043 fn inline_size(_context: fidl::encoding::Context) -> usize {
9044 16
9045 }
9046 }
9047
9048 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LeaderData, D>
9049 for &LeaderData
9050 {
9051 unsafe fn encode(
9052 self,
9053 encoder: &mut fidl::encoding::Encoder<'_, D>,
9054 offset: usize,
9055 mut depth: fidl::encoding::Depth,
9056 ) -> fidl::Result<()> {
9057 encoder.debug_check_bounds::<LeaderData>(offset);
9058 let max_ordinal: u64 = self.max_ordinal_present();
9060 encoder.write_num(max_ordinal, offset);
9061 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9062 if max_ordinal == 0 {
9064 return Ok(());
9065 }
9066 depth.increment()?;
9067 let envelope_size = 8;
9068 let bytes_len = max_ordinal as usize * envelope_size;
9069 #[allow(unused_variables)]
9070 let offset = encoder.out_of_line_offset(bytes_len);
9071 let mut _prev_end_offset: usize = 0;
9072 if 1 > max_ordinal {
9073 return Ok(());
9074 }
9075
9076 let cur_offset: usize = (1 - 1) * envelope_size;
9079
9080 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9082
9083 fidl::encoding::encode_in_envelope_optional::<u32, D>(
9088 self.partition_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
9089 encoder,
9090 offset + cur_offset,
9091 depth,
9092 )?;
9093
9094 _prev_end_offset = cur_offset + envelope_size;
9095 if 2 > max_ordinal {
9096 return Ok(());
9097 }
9098
9099 let cur_offset: usize = (2 - 1) * envelope_size;
9102
9103 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9105
9106 fidl::encoding::encode_in_envelope_optional::<u8, D>(
9111 self.weight.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
9112 encoder,
9113 offset + cur_offset,
9114 depth,
9115 )?;
9116
9117 _prev_end_offset = cur_offset + envelope_size;
9118 if 3 > max_ordinal {
9119 return Ok(());
9120 }
9121
9122 let cur_offset: usize = (3 - 1) * envelope_size;
9125
9126 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9128
9129 fidl::encoding::encode_in_envelope_optional::<u8, D>(
9134 self.network_data_version
9135 .as_ref()
9136 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
9137 encoder,
9138 offset + cur_offset,
9139 depth,
9140 )?;
9141
9142 _prev_end_offset = cur_offset + envelope_size;
9143 if 4 > max_ordinal {
9144 return Ok(());
9145 }
9146
9147 let cur_offset: usize = (4 - 1) * envelope_size;
9150
9151 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9153
9154 fidl::encoding::encode_in_envelope_optional::<u8, D>(
9159 self.stable_network_data_version
9160 .as_ref()
9161 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
9162 encoder,
9163 offset + cur_offset,
9164 depth,
9165 )?;
9166
9167 _prev_end_offset = cur_offset + envelope_size;
9168 if 5 > max_ordinal {
9169 return Ok(());
9170 }
9171
9172 let cur_offset: usize = (5 - 1) * envelope_size;
9175
9176 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9178
9179 fidl::encoding::encode_in_envelope_optional::<u8, D>(
9184 self.router_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
9185 encoder,
9186 offset + cur_offset,
9187 depth,
9188 )?;
9189
9190 _prev_end_offset = cur_offset + envelope_size;
9191
9192 Ok(())
9193 }
9194 }
9195
9196 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LeaderData {
9197 #[inline(always)]
9198 fn new_empty() -> Self {
9199 Self::default()
9200 }
9201
9202 unsafe fn decode(
9203 &mut self,
9204 decoder: &mut fidl::encoding::Decoder<'_, D>,
9205 offset: usize,
9206 mut depth: fidl::encoding::Depth,
9207 ) -> fidl::Result<()> {
9208 decoder.debug_check_bounds::<Self>(offset);
9209 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9210 None => return Err(fidl::Error::NotNullable),
9211 Some(len) => len,
9212 };
9213 if len == 0 {
9215 return Ok(());
9216 };
9217 depth.increment()?;
9218 let envelope_size = 8;
9219 let bytes_len = len * envelope_size;
9220 let offset = decoder.out_of_line_offset(bytes_len)?;
9221 let mut _next_ordinal_to_read = 0;
9223 let mut next_offset = offset;
9224 let end_offset = offset + bytes_len;
9225 _next_ordinal_to_read += 1;
9226 if next_offset >= end_offset {
9227 return Ok(());
9228 }
9229
9230 while _next_ordinal_to_read < 1 {
9232 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9233 _next_ordinal_to_read += 1;
9234 next_offset += envelope_size;
9235 }
9236
9237 let next_out_of_line = decoder.next_out_of_line();
9238 let handles_before = decoder.remaining_handles();
9239 if let Some((inlined, num_bytes, num_handles)) =
9240 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9241 {
9242 let member_inline_size =
9243 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9244 if inlined != (member_inline_size <= 4) {
9245 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9246 }
9247 let inner_offset;
9248 let mut inner_depth = depth.clone();
9249 if inlined {
9250 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9251 inner_offset = next_offset;
9252 } else {
9253 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9254 inner_depth.increment()?;
9255 }
9256 let val_ref = self.partition_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
9257 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
9258 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9259 {
9260 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9261 }
9262 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9263 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9264 }
9265 }
9266
9267 next_offset += envelope_size;
9268 _next_ordinal_to_read += 1;
9269 if next_offset >= end_offset {
9270 return Ok(());
9271 }
9272
9273 while _next_ordinal_to_read < 2 {
9275 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9276 _next_ordinal_to_read += 1;
9277 next_offset += envelope_size;
9278 }
9279
9280 let next_out_of_line = decoder.next_out_of_line();
9281 let handles_before = decoder.remaining_handles();
9282 if let Some((inlined, num_bytes, num_handles)) =
9283 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9284 {
9285 let member_inline_size =
9286 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9287 if inlined != (member_inline_size <= 4) {
9288 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9289 }
9290 let inner_offset;
9291 let mut inner_depth = depth.clone();
9292 if inlined {
9293 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9294 inner_offset = next_offset;
9295 } else {
9296 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9297 inner_depth.increment()?;
9298 }
9299 let val_ref = self.weight.get_or_insert_with(|| fidl::new_empty!(u8, D));
9300 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9301 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9302 {
9303 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9304 }
9305 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9306 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9307 }
9308 }
9309
9310 next_offset += envelope_size;
9311 _next_ordinal_to_read += 1;
9312 if next_offset >= end_offset {
9313 return Ok(());
9314 }
9315
9316 while _next_ordinal_to_read < 3 {
9318 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9319 _next_ordinal_to_read += 1;
9320 next_offset += envelope_size;
9321 }
9322
9323 let next_out_of_line = decoder.next_out_of_line();
9324 let handles_before = decoder.remaining_handles();
9325 if let Some((inlined, num_bytes, num_handles)) =
9326 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9327 {
9328 let member_inline_size =
9329 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9330 if inlined != (member_inline_size <= 4) {
9331 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9332 }
9333 let inner_offset;
9334 let mut inner_depth = depth.clone();
9335 if inlined {
9336 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9337 inner_offset = next_offset;
9338 } else {
9339 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9340 inner_depth.increment()?;
9341 }
9342 let val_ref =
9343 self.network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
9344 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9345 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9346 {
9347 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9348 }
9349 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9350 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9351 }
9352 }
9353
9354 next_offset += envelope_size;
9355 _next_ordinal_to_read += 1;
9356 if next_offset >= end_offset {
9357 return Ok(());
9358 }
9359
9360 while _next_ordinal_to_read < 4 {
9362 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9363 _next_ordinal_to_read += 1;
9364 next_offset += envelope_size;
9365 }
9366
9367 let next_out_of_line = decoder.next_out_of_line();
9368 let handles_before = decoder.remaining_handles();
9369 if let Some((inlined, num_bytes, num_handles)) =
9370 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9371 {
9372 let member_inline_size =
9373 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9374 if inlined != (member_inline_size <= 4) {
9375 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9376 }
9377 let inner_offset;
9378 let mut inner_depth = depth.clone();
9379 if inlined {
9380 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9381 inner_offset = next_offset;
9382 } else {
9383 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9384 inner_depth.increment()?;
9385 }
9386 let val_ref =
9387 self.stable_network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
9388 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9389 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9390 {
9391 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9392 }
9393 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9394 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9395 }
9396 }
9397
9398 next_offset += envelope_size;
9399 _next_ordinal_to_read += 1;
9400 if next_offset >= end_offset {
9401 return Ok(());
9402 }
9403
9404 while _next_ordinal_to_read < 5 {
9406 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9407 _next_ordinal_to_read += 1;
9408 next_offset += envelope_size;
9409 }
9410
9411 let next_out_of_line = decoder.next_out_of_line();
9412 let handles_before = decoder.remaining_handles();
9413 if let Some((inlined, num_bytes, num_handles)) =
9414 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9415 {
9416 let member_inline_size =
9417 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9418 if inlined != (member_inline_size <= 4) {
9419 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9420 }
9421 let inner_offset;
9422 let mut inner_depth = depth.clone();
9423 if inlined {
9424 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9425 inner_offset = next_offset;
9426 } else {
9427 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9428 inner_depth.increment()?;
9429 }
9430 let val_ref = self.router_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
9431 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9432 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9433 {
9434 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9435 }
9436 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9437 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9438 }
9439 }
9440
9441 next_offset += envelope_size;
9442
9443 while next_offset < end_offset {
9445 _next_ordinal_to_read += 1;
9446 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9447 next_offset += envelope_size;
9448 }
9449
9450 Ok(())
9451 }
9452 }
9453
9454 impl LinkMetricsEntry {
9455 #[inline(always)]
9456 fn max_ordinal_present(&self) -> u64 {
9457 if let Some(_) = self.rssi {
9458 return 2;
9459 }
9460 if let Some(_) = self.link_margin {
9461 return 1;
9462 }
9463 0
9464 }
9465 }
9466
9467 impl fidl::encoding::ValueTypeMarker for LinkMetricsEntry {
9468 type Borrowed<'a> = &'a Self;
9469 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9470 value
9471 }
9472 }
9473
9474 unsafe impl fidl::encoding::TypeMarker for LinkMetricsEntry {
9475 type Owned = Self;
9476
9477 #[inline(always)]
9478 fn inline_align(_context: fidl::encoding::Context) -> usize {
9479 8
9480 }
9481
9482 #[inline(always)]
9483 fn inline_size(_context: fidl::encoding::Context) -> usize {
9484 16
9485 }
9486 }
9487
9488 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LinkMetricsEntry, D>
9489 for &LinkMetricsEntry
9490 {
9491 unsafe fn encode(
9492 self,
9493 encoder: &mut fidl::encoding::Encoder<'_, D>,
9494 offset: usize,
9495 mut depth: fidl::encoding::Depth,
9496 ) -> fidl::Result<()> {
9497 encoder.debug_check_bounds::<LinkMetricsEntry>(offset);
9498 let max_ordinal: u64 = self.max_ordinal_present();
9500 encoder.write_num(max_ordinal, offset);
9501 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9502 if max_ordinal == 0 {
9504 return Ok(());
9505 }
9506 depth.increment()?;
9507 let envelope_size = 8;
9508 let bytes_len = max_ordinal as usize * envelope_size;
9509 #[allow(unused_variables)]
9510 let offset = encoder.out_of_line_offset(bytes_len);
9511 let mut _prev_end_offset: usize = 0;
9512 if 1 > max_ordinal {
9513 return Ok(());
9514 }
9515
9516 let cur_offset: usize = (1 - 1) * envelope_size;
9519
9520 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9522
9523 fidl::encoding::encode_in_envelope_optional::<u8, D>(
9528 self.link_margin.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
9529 encoder,
9530 offset + cur_offset,
9531 depth,
9532 )?;
9533
9534 _prev_end_offset = cur_offset + envelope_size;
9535 if 2 > max_ordinal {
9536 return Ok(());
9537 }
9538
9539 let cur_offset: usize = (2 - 1) * envelope_size;
9542
9543 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9545
9546 fidl::encoding::encode_in_envelope_optional::<i8, D>(
9551 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
9552 encoder,
9553 offset + cur_offset,
9554 depth,
9555 )?;
9556
9557 _prev_end_offset = cur_offset + envelope_size;
9558
9559 Ok(())
9560 }
9561 }
9562
9563 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LinkMetricsEntry {
9564 #[inline(always)]
9565 fn new_empty() -> Self {
9566 Self::default()
9567 }
9568
9569 unsafe fn decode(
9570 &mut self,
9571 decoder: &mut fidl::encoding::Decoder<'_, D>,
9572 offset: usize,
9573 mut depth: fidl::encoding::Depth,
9574 ) -> fidl::Result<()> {
9575 decoder.debug_check_bounds::<Self>(offset);
9576 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9577 None => return Err(fidl::Error::NotNullable),
9578 Some(len) => len,
9579 };
9580 if len == 0 {
9582 return Ok(());
9583 };
9584 depth.increment()?;
9585 let envelope_size = 8;
9586 let bytes_len = len * envelope_size;
9587 let offset = decoder.out_of_line_offset(bytes_len)?;
9588 let mut _next_ordinal_to_read = 0;
9590 let mut next_offset = offset;
9591 let end_offset = offset + bytes_len;
9592 _next_ordinal_to_read += 1;
9593 if next_offset >= end_offset {
9594 return Ok(());
9595 }
9596
9597 while _next_ordinal_to_read < 1 {
9599 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9600 _next_ordinal_to_read += 1;
9601 next_offset += envelope_size;
9602 }
9603
9604 let next_out_of_line = decoder.next_out_of_line();
9605 let handles_before = decoder.remaining_handles();
9606 if let Some((inlined, num_bytes, num_handles)) =
9607 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9608 {
9609 let member_inline_size =
9610 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9611 if inlined != (member_inline_size <= 4) {
9612 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9613 }
9614 let inner_offset;
9615 let mut inner_depth = depth.clone();
9616 if inlined {
9617 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9618 inner_offset = next_offset;
9619 } else {
9620 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9621 inner_depth.increment()?;
9622 }
9623 let val_ref = self.link_margin.get_or_insert_with(|| fidl::new_empty!(u8, D));
9624 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9625 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9626 {
9627 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9628 }
9629 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9630 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9631 }
9632 }
9633
9634 next_offset += envelope_size;
9635 _next_ordinal_to_read += 1;
9636 if next_offset >= end_offset {
9637 return Ok(());
9638 }
9639
9640 while _next_ordinal_to_read < 2 {
9642 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9643 _next_ordinal_to_read += 1;
9644 next_offset += envelope_size;
9645 }
9646
9647 let next_out_of_line = decoder.next_out_of_line();
9648 let handles_before = decoder.remaining_handles();
9649 if let Some((inlined, num_bytes, num_handles)) =
9650 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9651 {
9652 let member_inline_size =
9653 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9654 if inlined != (member_inline_size <= 4) {
9655 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9656 }
9657 let inner_offset;
9658 let mut inner_depth = depth.clone();
9659 if inlined {
9660 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9661 inner_offset = next_offset;
9662 } else {
9663 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9664 inner_depth.increment()?;
9665 }
9666 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
9667 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
9668 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9669 {
9670 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9671 }
9672 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9673 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9674 }
9675 }
9676
9677 next_offset += envelope_size;
9678
9679 while next_offset < end_offset {
9681 _next_ordinal_to_read += 1;
9682 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9683 next_offset += envelope_size;
9684 }
9685
9686 Ok(())
9687 }
9688 }
9689
9690 impl MultiRadioNeighborInfo {
9691 #[inline(always)]
9692 fn max_ordinal_present(&self) -> u64 {
9693 if let Some(_) = self.radio_link_info {
9694 return 3;
9695 }
9696 if let Some(_) = self.thread_rloc {
9697 return 2;
9698 }
9699 if let Some(_) = self.extended_address {
9700 return 1;
9701 }
9702 0
9703 }
9704 }
9705
9706 impl fidl::encoding::ValueTypeMarker for MultiRadioNeighborInfo {
9707 type Borrowed<'a> = &'a Self;
9708 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9709 value
9710 }
9711 }
9712
9713 unsafe impl fidl::encoding::TypeMarker for MultiRadioNeighborInfo {
9714 type Owned = Self;
9715
9716 #[inline(always)]
9717 fn inline_align(_context: fidl::encoding::Context) -> usize {
9718 8
9719 }
9720
9721 #[inline(always)]
9722 fn inline_size(_context: fidl::encoding::Context) -> usize {
9723 16
9724 }
9725 }
9726
9727 unsafe impl<D: fidl::encoding::ResourceDialect>
9728 fidl::encoding::Encode<MultiRadioNeighborInfo, D> for &MultiRadioNeighborInfo
9729 {
9730 unsafe fn encode(
9731 self,
9732 encoder: &mut fidl::encoding::Encoder<'_, D>,
9733 offset: usize,
9734 mut depth: fidl::encoding::Depth,
9735 ) -> fidl::Result<()> {
9736 encoder.debug_check_bounds::<MultiRadioNeighborInfo>(offset);
9737 let max_ordinal: u64 = self.max_ordinal_present();
9739 encoder.write_num(max_ordinal, offset);
9740 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9741 if max_ordinal == 0 {
9743 return Ok(());
9744 }
9745 depth.increment()?;
9746 let envelope_size = 8;
9747 let bytes_len = max_ordinal as usize * envelope_size;
9748 #[allow(unused_variables)]
9749 let offset = encoder.out_of_line_offset(bytes_len);
9750 let mut _prev_end_offset: usize = 0;
9751 if 1 > max_ordinal {
9752 return Ok(());
9753 }
9754
9755 let cur_offset: usize = (1 - 1) * envelope_size;
9758
9759 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9761
9762 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
9767 self.extended_address.as_ref().map(
9768 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
9769 ),
9770 encoder,
9771 offset + cur_offset,
9772 depth,
9773 )?;
9774
9775 _prev_end_offset = cur_offset + envelope_size;
9776 if 2 > max_ordinal {
9777 return Ok(());
9778 }
9779
9780 let cur_offset: usize = (2 - 1) * envelope_size;
9783
9784 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9786
9787 fidl::encoding::encode_in_envelope_optional::<u16, D>(
9792 self.thread_rloc.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
9793 encoder,
9794 offset + cur_offset,
9795 depth,
9796 )?;
9797
9798 _prev_end_offset = cur_offset + envelope_size;
9799 if 3 > max_ordinal {
9800 return Ok(());
9801 }
9802
9803 let cur_offset: usize = (3 - 1) * envelope_size;
9806
9807 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9809
9810 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<RadioLinkInfo, 5>, D>(
9815 self.radio_link_info.as_ref().map(<fidl::encoding::Vector<RadioLinkInfo, 5> as fidl::encoding::ValueTypeMarker>::borrow),
9816 encoder, offset + cur_offset, depth
9817 )?;
9818
9819 _prev_end_offset = cur_offset + envelope_size;
9820
9821 Ok(())
9822 }
9823 }
9824
9825 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9826 for MultiRadioNeighborInfo
9827 {
9828 #[inline(always)]
9829 fn new_empty() -> Self {
9830 Self::default()
9831 }
9832
9833 unsafe fn decode(
9834 &mut self,
9835 decoder: &mut fidl::encoding::Decoder<'_, D>,
9836 offset: usize,
9837 mut depth: fidl::encoding::Depth,
9838 ) -> fidl::Result<()> {
9839 decoder.debug_check_bounds::<Self>(offset);
9840 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9841 None => return Err(fidl::Error::NotNullable),
9842 Some(len) => len,
9843 };
9844 if len == 0 {
9846 return Ok(());
9847 };
9848 depth.increment()?;
9849 let envelope_size = 8;
9850 let bytes_len = len * envelope_size;
9851 let offset = decoder.out_of_line_offset(bytes_len)?;
9852 let mut _next_ordinal_to_read = 0;
9854 let mut next_offset = offset;
9855 let end_offset = offset + bytes_len;
9856 _next_ordinal_to_read += 1;
9857 if next_offset >= end_offset {
9858 return Ok(());
9859 }
9860
9861 while _next_ordinal_to_read < 1 {
9863 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9864 _next_ordinal_to_read += 1;
9865 next_offset += envelope_size;
9866 }
9867
9868 let next_out_of_line = decoder.next_out_of_line();
9869 let handles_before = decoder.remaining_handles();
9870 if let Some((inlined, num_bytes, num_handles)) =
9871 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9872 {
9873 let member_inline_size =
9874 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
9875 decoder.context,
9876 );
9877 if inlined != (member_inline_size <= 4) {
9878 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9879 }
9880 let inner_offset;
9881 let mut inner_depth = depth.clone();
9882 if inlined {
9883 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9884 inner_offset = next_offset;
9885 } else {
9886 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9887 inner_depth.increment()?;
9888 }
9889 let val_ref = self
9890 .extended_address
9891 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
9892 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
9893 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9894 {
9895 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9896 }
9897 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9898 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9899 }
9900 }
9901
9902 next_offset += envelope_size;
9903 _next_ordinal_to_read += 1;
9904 if next_offset >= end_offset {
9905 return Ok(());
9906 }
9907
9908 while _next_ordinal_to_read < 2 {
9910 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9911 _next_ordinal_to_read += 1;
9912 next_offset += envelope_size;
9913 }
9914
9915 let next_out_of_line = decoder.next_out_of_line();
9916 let handles_before = decoder.remaining_handles();
9917 if let Some((inlined, num_bytes, num_handles)) =
9918 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9919 {
9920 let member_inline_size =
9921 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9922 if inlined != (member_inline_size <= 4) {
9923 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9924 }
9925 let inner_offset;
9926 let mut inner_depth = depth.clone();
9927 if inlined {
9928 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9929 inner_offset = next_offset;
9930 } else {
9931 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9932 inner_depth.increment()?;
9933 }
9934 let val_ref = self.thread_rloc.get_or_insert_with(|| fidl::new_empty!(u16, D));
9935 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
9936 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9937 {
9938 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9939 }
9940 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9941 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9942 }
9943 }
9944
9945 next_offset += envelope_size;
9946 _next_ordinal_to_read += 1;
9947 if next_offset >= end_offset {
9948 return Ok(());
9949 }
9950
9951 while _next_ordinal_to_read < 3 {
9953 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9954 _next_ordinal_to_read += 1;
9955 next_offset += envelope_size;
9956 }
9957
9958 let next_out_of_line = decoder.next_out_of_line();
9959 let handles_before = decoder.remaining_handles();
9960 if let Some((inlined, num_bytes, num_handles)) =
9961 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9962 {
9963 let member_inline_size = <fidl::encoding::Vector<RadioLinkInfo, 5> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9964 if inlined != (member_inline_size <= 4) {
9965 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9966 }
9967 let inner_offset;
9968 let mut inner_depth = depth.clone();
9969 if inlined {
9970 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9971 inner_offset = next_offset;
9972 } else {
9973 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9974 inner_depth.increment()?;
9975 }
9976 let val_ref = self.radio_link_info.get_or_insert_with(
9977 || fidl::new_empty!(fidl::encoding::Vector<RadioLinkInfo, 5>, D),
9978 );
9979 fidl::decode!(fidl::encoding::Vector<RadioLinkInfo, 5>, D, val_ref, decoder, inner_offset, inner_depth)?;
9980 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9981 {
9982 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9983 }
9984 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9985 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9986 }
9987 }
9988
9989 next_offset += envelope_size;
9990
9991 while next_offset < end_offset {
9993 _next_ordinal_to_read += 1;
9994 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9995 next_offset += envelope_size;
9996 }
9997
9998 Ok(())
9999 }
10000 }
10001
10002 impl Nat64ErrorCounters {
10003 #[inline(always)]
10004 fn max_ordinal_present(&self) -> u64 {
10005 if let Some(_) = self.no_mapping {
10006 return 4;
10007 }
10008 if let Some(_) = self.unsupported_protocol {
10009 return 3;
10010 }
10011 if let Some(_) = self.illegal_packet {
10012 return 2;
10013 }
10014 if let Some(_) = self.unknown {
10015 return 1;
10016 }
10017 0
10018 }
10019 }
10020
10021 impl fidl::encoding::ValueTypeMarker for Nat64ErrorCounters {
10022 type Borrowed<'a> = &'a Self;
10023 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10024 value
10025 }
10026 }
10027
10028 unsafe impl fidl::encoding::TypeMarker for Nat64ErrorCounters {
10029 type Owned = Self;
10030
10031 #[inline(always)]
10032 fn inline_align(_context: fidl::encoding::Context) -> usize {
10033 8
10034 }
10035
10036 #[inline(always)]
10037 fn inline_size(_context: fidl::encoding::Context) -> usize {
10038 16
10039 }
10040 }
10041
10042 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64ErrorCounters, D>
10043 for &Nat64ErrorCounters
10044 {
10045 unsafe fn encode(
10046 self,
10047 encoder: &mut fidl::encoding::Encoder<'_, D>,
10048 offset: usize,
10049 mut depth: fidl::encoding::Depth,
10050 ) -> fidl::Result<()> {
10051 encoder.debug_check_bounds::<Nat64ErrorCounters>(offset);
10052 let max_ordinal: u64 = self.max_ordinal_present();
10054 encoder.write_num(max_ordinal, offset);
10055 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10056 if max_ordinal == 0 {
10058 return Ok(());
10059 }
10060 depth.increment()?;
10061 let envelope_size = 8;
10062 let bytes_len = max_ordinal as usize * envelope_size;
10063 #[allow(unused_variables)]
10064 let offset = encoder.out_of_line_offset(bytes_len);
10065 let mut _prev_end_offset: usize = 0;
10066 if 1 > max_ordinal {
10067 return Ok(());
10068 }
10069
10070 let cur_offset: usize = (1 - 1) * envelope_size;
10073
10074 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10076
10077 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
10082 self.unknown
10083 .as_ref()
10084 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
10085 encoder,
10086 offset + cur_offset,
10087 depth,
10088 )?;
10089
10090 _prev_end_offset = cur_offset + envelope_size;
10091 if 2 > max_ordinal {
10092 return Ok(());
10093 }
10094
10095 let cur_offset: usize = (2 - 1) * envelope_size;
10098
10099 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10101
10102 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
10107 self.illegal_packet
10108 .as_ref()
10109 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
10110 encoder,
10111 offset + cur_offset,
10112 depth,
10113 )?;
10114
10115 _prev_end_offset = cur_offset + envelope_size;
10116 if 3 > max_ordinal {
10117 return Ok(());
10118 }
10119
10120 let cur_offset: usize = (3 - 1) * envelope_size;
10123
10124 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10126
10127 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
10132 self.unsupported_protocol
10133 .as_ref()
10134 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
10135 encoder,
10136 offset + cur_offset,
10137 depth,
10138 )?;
10139
10140 _prev_end_offset = cur_offset + envelope_size;
10141 if 4 > max_ordinal {
10142 return Ok(());
10143 }
10144
10145 let cur_offset: usize = (4 - 1) * envelope_size;
10148
10149 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10151
10152 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
10157 self.no_mapping
10158 .as_ref()
10159 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
10160 encoder,
10161 offset + cur_offset,
10162 depth,
10163 )?;
10164
10165 _prev_end_offset = cur_offset + envelope_size;
10166
10167 Ok(())
10168 }
10169 }
10170
10171 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64ErrorCounters {
10172 #[inline(always)]
10173 fn new_empty() -> Self {
10174 Self::default()
10175 }
10176
10177 unsafe fn decode(
10178 &mut self,
10179 decoder: &mut fidl::encoding::Decoder<'_, D>,
10180 offset: usize,
10181 mut depth: fidl::encoding::Depth,
10182 ) -> fidl::Result<()> {
10183 decoder.debug_check_bounds::<Self>(offset);
10184 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10185 None => return Err(fidl::Error::NotNullable),
10186 Some(len) => len,
10187 };
10188 if len == 0 {
10190 return Ok(());
10191 };
10192 depth.increment()?;
10193 let envelope_size = 8;
10194 let bytes_len = len * envelope_size;
10195 let offset = decoder.out_of_line_offset(bytes_len)?;
10196 let mut _next_ordinal_to_read = 0;
10198 let mut next_offset = offset;
10199 let end_offset = offset + bytes_len;
10200 _next_ordinal_to_read += 1;
10201 if next_offset >= end_offset {
10202 return Ok(());
10203 }
10204
10205 while _next_ordinal_to_read < 1 {
10207 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10208 _next_ordinal_to_read += 1;
10209 next_offset += envelope_size;
10210 }
10211
10212 let next_out_of_line = decoder.next_out_of_line();
10213 let handles_before = decoder.remaining_handles();
10214 if let Some((inlined, num_bytes, num_handles)) =
10215 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10216 {
10217 let member_inline_size =
10218 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
10219 decoder.context,
10220 );
10221 if inlined != (member_inline_size <= 4) {
10222 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10223 }
10224 let inner_offset;
10225 let mut inner_depth = depth.clone();
10226 if inlined {
10227 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10228 inner_offset = next_offset;
10229 } else {
10230 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10231 inner_depth.increment()?;
10232 }
10233 let val_ref =
10234 self.unknown.get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
10235 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
10236 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10237 {
10238 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10239 }
10240 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10241 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10242 }
10243 }
10244
10245 next_offset += envelope_size;
10246 _next_ordinal_to_read += 1;
10247 if next_offset >= end_offset {
10248 return Ok(());
10249 }
10250
10251 while _next_ordinal_to_read < 2 {
10253 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10254 _next_ordinal_to_read += 1;
10255 next_offset += envelope_size;
10256 }
10257
10258 let next_out_of_line = decoder.next_out_of_line();
10259 let handles_before = decoder.remaining_handles();
10260 if let Some((inlined, num_bytes, num_handles)) =
10261 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10262 {
10263 let member_inline_size =
10264 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
10265 decoder.context,
10266 );
10267 if inlined != (member_inline_size <= 4) {
10268 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10269 }
10270 let inner_offset;
10271 let mut inner_depth = depth.clone();
10272 if inlined {
10273 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10274 inner_offset = next_offset;
10275 } else {
10276 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10277 inner_depth.increment()?;
10278 }
10279 let val_ref = self
10280 .illegal_packet
10281 .get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
10282 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
10283 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10284 {
10285 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10286 }
10287 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10288 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10289 }
10290 }
10291
10292 next_offset += envelope_size;
10293 _next_ordinal_to_read += 1;
10294 if next_offset >= end_offset {
10295 return Ok(());
10296 }
10297
10298 while _next_ordinal_to_read < 3 {
10300 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10301 _next_ordinal_to_read += 1;
10302 next_offset += envelope_size;
10303 }
10304
10305 let next_out_of_line = decoder.next_out_of_line();
10306 let handles_before = decoder.remaining_handles();
10307 if let Some((inlined, num_bytes, num_handles)) =
10308 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10309 {
10310 let member_inline_size =
10311 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
10312 decoder.context,
10313 );
10314 if inlined != (member_inline_size <= 4) {
10315 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10316 }
10317 let inner_offset;
10318 let mut inner_depth = depth.clone();
10319 if inlined {
10320 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10321 inner_offset = next_offset;
10322 } else {
10323 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10324 inner_depth.increment()?;
10325 }
10326 let val_ref = self
10327 .unsupported_protocol
10328 .get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
10329 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
10330 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10331 {
10332 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10333 }
10334 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10335 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10336 }
10337 }
10338
10339 next_offset += envelope_size;
10340 _next_ordinal_to_read += 1;
10341 if next_offset >= end_offset {
10342 return Ok(());
10343 }
10344
10345 while _next_ordinal_to_read < 4 {
10347 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10348 _next_ordinal_to_read += 1;
10349 next_offset += envelope_size;
10350 }
10351
10352 let next_out_of_line = decoder.next_out_of_line();
10353 let handles_before = decoder.remaining_handles();
10354 if let Some((inlined, num_bytes, num_handles)) =
10355 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10356 {
10357 let member_inline_size =
10358 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
10359 decoder.context,
10360 );
10361 if inlined != (member_inline_size <= 4) {
10362 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10363 }
10364 let inner_offset;
10365 let mut inner_depth = depth.clone();
10366 if inlined {
10367 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10368 inner_offset = next_offset;
10369 } else {
10370 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10371 inner_depth.increment()?;
10372 }
10373 let val_ref =
10374 self.no_mapping.get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
10375 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
10376 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10377 {
10378 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10379 }
10380 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10381 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10382 }
10383 }
10384
10385 next_offset += envelope_size;
10386
10387 while next_offset < end_offset {
10389 _next_ordinal_to_read += 1;
10390 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10391 next_offset += envelope_size;
10392 }
10393
10394 Ok(())
10395 }
10396 }
10397
10398 impl Nat64Info {
10399 #[inline(always)]
10400 fn max_ordinal_present(&self) -> u64 {
10401 if let Some(_) = self.nat64_protocol_counters {
10402 return 4;
10403 }
10404 if let Some(_) = self.nat64_error_counters {
10405 return 3;
10406 }
10407 if let Some(_) = self.nat64_mappings {
10408 return 2;
10409 }
10410 if let Some(_) = self.nat64_state {
10411 return 1;
10412 }
10413 0
10414 }
10415 }
10416
10417 impl fidl::encoding::ValueTypeMarker for Nat64Info {
10418 type Borrowed<'a> = &'a Self;
10419 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10420 value
10421 }
10422 }
10423
10424 unsafe impl fidl::encoding::TypeMarker for Nat64Info {
10425 type Owned = Self;
10426
10427 #[inline(always)]
10428 fn inline_align(_context: fidl::encoding::Context) -> usize {
10429 8
10430 }
10431
10432 #[inline(always)]
10433 fn inline_size(_context: fidl::encoding::Context) -> usize {
10434 16
10435 }
10436 }
10437
10438 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64Info, D>
10439 for &Nat64Info
10440 {
10441 unsafe fn encode(
10442 self,
10443 encoder: &mut fidl::encoding::Encoder<'_, D>,
10444 offset: usize,
10445 mut depth: fidl::encoding::Depth,
10446 ) -> fidl::Result<()> {
10447 encoder.debug_check_bounds::<Nat64Info>(offset);
10448 let max_ordinal: u64 = self.max_ordinal_present();
10450 encoder.write_num(max_ordinal, offset);
10451 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10452 if max_ordinal == 0 {
10454 return Ok(());
10455 }
10456 depth.increment()?;
10457 let envelope_size = 8;
10458 let bytes_len = max_ordinal as usize * envelope_size;
10459 #[allow(unused_variables)]
10460 let offset = encoder.out_of_line_offset(bytes_len);
10461 let mut _prev_end_offset: usize = 0;
10462 if 1 > max_ordinal {
10463 return Ok(());
10464 }
10465
10466 let cur_offset: usize = (1 - 1) * envelope_size;
10469
10470 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10472
10473 fidl::encoding::encode_in_envelope_optional::<BorderRoutingNat64State, D>(
10478 self.nat64_state
10479 .as_ref()
10480 .map(<BorderRoutingNat64State as fidl::encoding::ValueTypeMarker>::borrow),
10481 encoder,
10482 offset + cur_offset,
10483 depth,
10484 )?;
10485
10486 _prev_end_offset = cur_offset + envelope_size;
10487 if 2 > max_ordinal {
10488 return Ok(());
10489 }
10490
10491 let cur_offset: usize = (2 - 1) * envelope_size;
10494
10495 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10497
10498 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Nat64Mapping>, D>(
10503 self.nat64_mappings.as_ref().map(<fidl::encoding::UnboundedVector<Nat64Mapping> as fidl::encoding::ValueTypeMarker>::borrow),
10504 encoder, offset + cur_offset, depth
10505 )?;
10506
10507 _prev_end_offset = cur_offset + envelope_size;
10508 if 3 > max_ordinal {
10509 return Ok(());
10510 }
10511
10512 let cur_offset: usize = (3 - 1) * envelope_size;
10515
10516 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10518
10519 fidl::encoding::encode_in_envelope_optional::<Nat64ErrorCounters, D>(
10524 self.nat64_error_counters
10525 .as_ref()
10526 .map(<Nat64ErrorCounters as fidl::encoding::ValueTypeMarker>::borrow),
10527 encoder,
10528 offset + cur_offset,
10529 depth,
10530 )?;
10531
10532 _prev_end_offset = cur_offset + envelope_size;
10533 if 4 > max_ordinal {
10534 return Ok(());
10535 }
10536
10537 let cur_offset: usize = (4 - 1) * envelope_size;
10540
10541 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10543
10544 fidl::encoding::encode_in_envelope_optional::<Nat64ProtocolCounters, D>(
10549 self.nat64_protocol_counters
10550 .as_ref()
10551 .map(<Nat64ProtocolCounters as fidl::encoding::ValueTypeMarker>::borrow),
10552 encoder,
10553 offset + cur_offset,
10554 depth,
10555 )?;
10556
10557 _prev_end_offset = cur_offset + envelope_size;
10558
10559 Ok(())
10560 }
10561 }
10562
10563 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64Info {
10564 #[inline(always)]
10565 fn new_empty() -> Self {
10566 Self::default()
10567 }
10568
10569 unsafe fn decode(
10570 &mut self,
10571 decoder: &mut fidl::encoding::Decoder<'_, D>,
10572 offset: usize,
10573 mut depth: fidl::encoding::Depth,
10574 ) -> fidl::Result<()> {
10575 decoder.debug_check_bounds::<Self>(offset);
10576 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10577 None => return Err(fidl::Error::NotNullable),
10578 Some(len) => len,
10579 };
10580 if len == 0 {
10582 return Ok(());
10583 };
10584 depth.increment()?;
10585 let envelope_size = 8;
10586 let bytes_len = len * envelope_size;
10587 let offset = decoder.out_of_line_offset(bytes_len)?;
10588 let mut _next_ordinal_to_read = 0;
10590 let mut next_offset = offset;
10591 let end_offset = offset + bytes_len;
10592 _next_ordinal_to_read += 1;
10593 if next_offset >= end_offset {
10594 return Ok(());
10595 }
10596
10597 while _next_ordinal_to_read < 1 {
10599 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10600 _next_ordinal_to_read += 1;
10601 next_offset += envelope_size;
10602 }
10603
10604 let next_out_of_line = decoder.next_out_of_line();
10605 let handles_before = decoder.remaining_handles();
10606 if let Some((inlined, num_bytes, num_handles)) =
10607 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10608 {
10609 let member_inline_size =
10610 <BorderRoutingNat64State as fidl::encoding::TypeMarker>::inline_size(
10611 decoder.context,
10612 );
10613 if inlined != (member_inline_size <= 4) {
10614 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10615 }
10616 let inner_offset;
10617 let mut inner_depth = depth.clone();
10618 if inlined {
10619 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10620 inner_offset = next_offset;
10621 } else {
10622 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10623 inner_depth.increment()?;
10624 }
10625 let val_ref = self
10626 .nat64_state
10627 .get_or_insert_with(|| fidl::new_empty!(BorderRoutingNat64State, D));
10628 fidl::decode!(
10629 BorderRoutingNat64State,
10630 D,
10631 val_ref,
10632 decoder,
10633 inner_offset,
10634 inner_depth
10635 )?;
10636 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10637 {
10638 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10639 }
10640 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10641 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10642 }
10643 }
10644
10645 next_offset += envelope_size;
10646 _next_ordinal_to_read += 1;
10647 if next_offset >= end_offset {
10648 return Ok(());
10649 }
10650
10651 while _next_ordinal_to_read < 2 {
10653 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10654 _next_ordinal_to_read += 1;
10655 next_offset += envelope_size;
10656 }
10657
10658 let next_out_of_line = decoder.next_out_of_line();
10659 let handles_before = decoder.remaining_handles();
10660 if let Some((inlined, num_bytes, num_handles)) =
10661 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10662 {
10663 let member_inline_size = <fidl::encoding::UnboundedVector<Nat64Mapping> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10664 if inlined != (member_inline_size <= 4) {
10665 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10666 }
10667 let inner_offset;
10668 let mut inner_depth = depth.clone();
10669 if inlined {
10670 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10671 inner_offset = next_offset;
10672 } else {
10673 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10674 inner_depth.increment()?;
10675 }
10676 let val_ref = self.nat64_mappings.get_or_insert_with(|| {
10677 fidl::new_empty!(fidl::encoding::UnboundedVector<Nat64Mapping>, D)
10678 });
10679 fidl::decode!(
10680 fidl::encoding::UnboundedVector<Nat64Mapping>,
10681 D,
10682 val_ref,
10683 decoder,
10684 inner_offset,
10685 inner_depth
10686 )?;
10687 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10688 {
10689 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10690 }
10691 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10692 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10693 }
10694 }
10695
10696 next_offset += envelope_size;
10697 _next_ordinal_to_read += 1;
10698 if next_offset >= end_offset {
10699 return Ok(());
10700 }
10701
10702 while _next_ordinal_to_read < 3 {
10704 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10705 _next_ordinal_to_read += 1;
10706 next_offset += envelope_size;
10707 }
10708
10709 let next_out_of_line = decoder.next_out_of_line();
10710 let handles_before = decoder.remaining_handles();
10711 if let Some((inlined, num_bytes, num_handles)) =
10712 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10713 {
10714 let member_inline_size =
10715 <Nat64ErrorCounters as fidl::encoding::TypeMarker>::inline_size(
10716 decoder.context,
10717 );
10718 if inlined != (member_inline_size <= 4) {
10719 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10720 }
10721 let inner_offset;
10722 let mut inner_depth = depth.clone();
10723 if inlined {
10724 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10725 inner_offset = next_offset;
10726 } else {
10727 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10728 inner_depth.increment()?;
10729 }
10730 let val_ref = self
10731 .nat64_error_counters
10732 .get_or_insert_with(|| fidl::new_empty!(Nat64ErrorCounters, D));
10733 fidl::decode!(Nat64ErrorCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
10734 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10735 {
10736 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10737 }
10738 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10739 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10740 }
10741 }
10742
10743 next_offset += envelope_size;
10744 _next_ordinal_to_read += 1;
10745 if next_offset >= end_offset {
10746 return Ok(());
10747 }
10748
10749 while _next_ordinal_to_read < 4 {
10751 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10752 _next_ordinal_to_read += 1;
10753 next_offset += envelope_size;
10754 }
10755
10756 let next_out_of_line = decoder.next_out_of_line();
10757 let handles_before = decoder.remaining_handles();
10758 if let Some((inlined, num_bytes, num_handles)) =
10759 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10760 {
10761 let member_inline_size =
10762 <Nat64ProtocolCounters as fidl::encoding::TypeMarker>::inline_size(
10763 decoder.context,
10764 );
10765 if inlined != (member_inline_size <= 4) {
10766 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10767 }
10768 let inner_offset;
10769 let mut inner_depth = depth.clone();
10770 if inlined {
10771 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10772 inner_offset = next_offset;
10773 } else {
10774 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10775 inner_depth.increment()?;
10776 }
10777 let val_ref = self
10778 .nat64_protocol_counters
10779 .get_or_insert_with(|| fidl::new_empty!(Nat64ProtocolCounters, D));
10780 fidl::decode!(
10781 Nat64ProtocolCounters,
10782 D,
10783 val_ref,
10784 decoder,
10785 inner_offset,
10786 inner_depth
10787 )?;
10788 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10789 {
10790 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10791 }
10792 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10793 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10794 }
10795 }
10796
10797 next_offset += envelope_size;
10798
10799 while next_offset < end_offset {
10801 _next_ordinal_to_read += 1;
10802 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10803 next_offset += envelope_size;
10804 }
10805
10806 Ok(())
10807 }
10808 }
10809
10810 impl Nat64Mapping {
10811 #[inline(always)]
10812 fn max_ordinal_present(&self) -> u64 {
10813 if let Some(_) = self.counters {
10814 return 5;
10815 }
10816 if let Some(_) = self.remaining_time_ms {
10817 return 4;
10818 }
10819 if let Some(_) = self.ip6_addr {
10820 return 3;
10821 }
10822 if let Some(_) = self.ip4_addr {
10823 return 2;
10824 }
10825 if let Some(_) = self.mapping_id {
10826 return 1;
10827 }
10828 0
10829 }
10830 }
10831
10832 impl fidl::encoding::ValueTypeMarker for Nat64Mapping {
10833 type Borrowed<'a> = &'a Self;
10834 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10835 value
10836 }
10837 }
10838
10839 unsafe impl fidl::encoding::TypeMarker for Nat64Mapping {
10840 type Owned = Self;
10841
10842 #[inline(always)]
10843 fn inline_align(_context: fidl::encoding::Context) -> usize {
10844 8
10845 }
10846
10847 #[inline(always)]
10848 fn inline_size(_context: fidl::encoding::Context) -> usize {
10849 16
10850 }
10851 }
10852
10853 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64Mapping, D>
10854 for &Nat64Mapping
10855 {
10856 unsafe fn encode(
10857 self,
10858 encoder: &mut fidl::encoding::Encoder<'_, D>,
10859 offset: usize,
10860 mut depth: fidl::encoding::Depth,
10861 ) -> fidl::Result<()> {
10862 encoder.debug_check_bounds::<Nat64Mapping>(offset);
10863 let max_ordinal: u64 = self.max_ordinal_present();
10865 encoder.write_num(max_ordinal, offset);
10866 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10867 if max_ordinal == 0 {
10869 return Ok(());
10870 }
10871 depth.increment()?;
10872 let envelope_size = 8;
10873 let bytes_len = max_ordinal as usize * envelope_size;
10874 #[allow(unused_variables)]
10875 let offset = encoder.out_of_line_offset(bytes_len);
10876 let mut _prev_end_offset: usize = 0;
10877 if 1 > max_ordinal {
10878 return Ok(());
10879 }
10880
10881 let cur_offset: usize = (1 - 1) * envelope_size;
10884
10885 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10887
10888 fidl::encoding::encode_in_envelope_optional::<u64, D>(
10893 self.mapping_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
10894 encoder,
10895 offset + cur_offset,
10896 depth,
10897 )?;
10898
10899 _prev_end_offset = cur_offset + envelope_size;
10900 if 2 > max_ordinal {
10901 return Ok(());
10902 }
10903
10904 let cur_offset: usize = (2 - 1) * envelope_size;
10907
10908 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10910
10911 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
10916 self.ip4_addr.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
10917 encoder, offset + cur_offset, depth
10918 )?;
10919
10920 _prev_end_offset = cur_offset + envelope_size;
10921 if 3 > max_ordinal {
10922 return Ok(());
10923 }
10924
10925 let cur_offset: usize = (3 - 1) * envelope_size;
10928
10929 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10931
10932 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
10937 self.ip6_addr.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
10938 encoder, offset + cur_offset, depth
10939 )?;
10940
10941 _prev_end_offset = cur_offset + envelope_size;
10942 if 4 > max_ordinal {
10943 return Ok(());
10944 }
10945
10946 let cur_offset: usize = (4 - 1) * envelope_size;
10949
10950 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10952
10953 fidl::encoding::encode_in_envelope_optional::<u32, D>(
10958 self.remaining_time_ms
10959 .as_ref()
10960 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
10961 encoder,
10962 offset + cur_offset,
10963 depth,
10964 )?;
10965
10966 _prev_end_offset = cur_offset + envelope_size;
10967 if 5 > max_ordinal {
10968 return Ok(());
10969 }
10970
10971 let cur_offset: usize = (5 - 1) * envelope_size;
10974
10975 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10977
10978 fidl::encoding::encode_in_envelope_optional::<Nat64ProtocolCounters, D>(
10983 self.counters
10984 .as_ref()
10985 .map(<Nat64ProtocolCounters as fidl::encoding::ValueTypeMarker>::borrow),
10986 encoder,
10987 offset + cur_offset,
10988 depth,
10989 )?;
10990
10991 _prev_end_offset = cur_offset + envelope_size;
10992
10993 Ok(())
10994 }
10995 }
10996
10997 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64Mapping {
10998 #[inline(always)]
10999 fn new_empty() -> Self {
11000 Self::default()
11001 }
11002
11003 unsafe fn decode(
11004 &mut self,
11005 decoder: &mut fidl::encoding::Decoder<'_, D>,
11006 offset: usize,
11007 mut depth: fidl::encoding::Depth,
11008 ) -> fidl::Result<()> {
11009 decoder.debug_check_bounds::<Self>(offset);
11010 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11011 None => return Err(fidl::Error::NotNullable),
11012 Some(len) => len,
11013 };
11014 if len == 0 {
11016 return Ok(());
11017 };
11018 depth.increment()?;
11019 let envelope_size = 8;
11020 let bytes_len = len * envelope_size;
11021 let offset = decoder.out_of_line_offset(bytes_len)?;
11022 let mut _next_ordinal_to_read = 0;
11024 let mut next_offset = offset;
11025 let end_offset = offset + bytes_len;
11026 _next_ordinal_to_read += 1;
11027 if next_offset >= end_offset {
11028 return Ok(());
11029 }
11030
11031 while _next_ordinal_to_read < 1 {
11033 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11034 _next_ordinal_to_read += 1;
11035 next_offset += envelope_size;
11036 }
11037
11038 let next_out_of_line = decoder.next_out_of_line();
11039 let handles_before = decoder.remaining_handles();
11040 if let Some((inlined, num_bytes, num_handles)) =
11041 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11042 {
11043 let member_inline_size =
11044 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11045 if inlined != (member_inline_size <= 4) {
11046 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11047 }
11048 let inner_offset;
11049 let mut inner_depth = depth.clone();
11050 if inlined {
11051 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11052 inner_offset = next_offset;
11053 } else {
11054 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11055 inner_depth.increment()?;
11056 }
11057 let val_ref = self.mapping_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
11058 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
11059 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11060 {
11061 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11062 }
11063 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11064 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11065 }
11066 }
11067
11068 next_offset += envelope_size;
11069 _next_ordinal_to_read += 1;
11070 if next_offset >= end_offset {
11071 return Ok(());
11072 }
11073
11074 while _next_ordinal_to_read < 2 {
11076 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11077 _next_ordinal_to_read += 1;
11078 next_offset += envelope_size;
11079 }
11080
11081 let next_out_of_line = decoder.next_out_of_line();
11082 let handles_before = decoder.remaining_handles();
11083 if let Some((inlined, num_bytes, num_handles)) =
11084 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11085 {
11086 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11087 if inlined != (member_inline_size <= 4) {
11088 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11089 }
11090 let inner_offset;
11091 let mut inner_depth = depth.clone();
11092 if inlined {
11093 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11094 inner_offset = next_offset;
11095 } else {
11096 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11097 inner_depth.increment()?;
11098 }
11099 let val_ref = self.ip4_addr.get_or_insert_with(|| {
11100 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
11101 });
11102 fidl::decode!(
11103 fidl::encoding::UnboundedVector<u8>,
11104 D,
11105 val_ref,
11106 decoder,
11107 inner_offset,
11108 inner_depth
11109 )?;
11110 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11111 {
11112 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11113 }
11114 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11115 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11116 }
11117 }
11118
11119 next_offset += envelope_size;
11120 _next_ordinal_to_read += 1;
11121 if next_offset >= end_offset {
11122 return Ok(());
11123 }
11124
11125 while _next_ordinal_to_read < 3 {
11127 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11128 _next_ordinal_to_read += 1;
11129 next_offset += envelope_size;
11130 }
11131
11132 let next_out_of_line = decoder.next_out_of_line();
11133 let handles_before = decoder.remaining_handles();
11134 if let Some((inlined, num_bytes, num_handles)) =
11135 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11136 {
11137 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11138 if inlined != (member_inline_size <= 4) {
11139 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11140 }
11141 let inner_offset;
11142 let mut inner_depth = depth.clone();
11143 if inlined {
11144 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11145 inner_offset = next_offset;
11146 } else {
11147 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11148 inner_depth.increment()?;
11149 }
11150 let val_ref = self.ip6_addr.get_or_insert_with(|| {
11151 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
11152 });
11153 fidl::decode!(
11154 fidl::encoding::UnboundedVector<u8>,
11155 D,
11156 val_ref,
11157 decoder,
11158 inner_offset,
11159 inner_depth
11160 )?;
11161 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11162 {
11163 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11164 }
11165 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11166 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11167 }
11168 }
11169
11170 next_offset += envelope_size;
11171 _next_ordinal_to_read += 1;
11172 if next_offset >= end_offset {
11173 return Ok(());
11174 }
11175
11176 while _next_ordinal_to_read < 4 {
11178 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11179 _next_ordinal_to_read += 1;
11180 next_offset += envelope_size;
11181 }
11182
11183 let next_out_of_line = decoder.next_out_of_line();
11184 let handles_before = decoder.remaining_handles();
11185 if let Some((inlined, num_bytes, num_handles)) =
11186 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11187 {
11188 let member_inline_size =
11189 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11190 if inlined != (member_inline_size <= 4) {
11191 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11192 }
11193 let inner_offset;
11194 let mut inner_depth = depth.clone();
11195 if inlined {
11196 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11197 inner_offset = next_offset;
11198 } else {
11199 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11200 inner_depth.increment()?;
11201 }
11202 let val_ref =
11203 self.remaining_time_ms.get_or_insert_with(|| fidl::new_empty!(u32, D));
11204 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
11205 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11206 {
11207 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11208 }
11209 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11210 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11211 }
11212 }
11213
11214 next_offset += envelope_size;
11215 _next_ordinal_to_read += 1;
11216 if next_offset >= end_offset {
11217 return Ok(());
11218 }
11219
11220 while _next_ordinal_to_read < 5 {
11222 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11223 _next_ordinal_to_read += 1;
11224 next_offset += envelope_size;
11225 }
11226
11227 let next_out_of_line = decoder.next_out_of_line();
11228 let handles_before = decoder.remaining_handles();
11229 if let Some((inlined, num_bytes, num_handles)) =
11230 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11231 {
11232 let member_inline_size =
11233 <Nat64ProtocolCounters as fidl::encoding::TypeMarker>::inline_size(
11234 decoder.context,
11235 );
11236 if inlined != (member_inline_size <= 4) {
11237 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11238 }
11239 let inner_offset;
11240 let mut inner_depth = depth.clone();
11241 if inlined {
11242 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11243 inner_offset = next_offset;
11244 } else {
11245 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11246 inner_depth.increment()?;
11247 }
11248 let val_ref =
11249 self.counters.get_or_insert_with(|| fidl::new_empty!(Nat64ProtocolCounters, D));
11250 fidl::decode!(
11251 Nat64ProtocolCounters,
11252 D,
11253 val_ref,
11254 decoder,
11255 inner_offset,
11256 inner_depth
11257 )?;
11258 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11259 {
11260 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11261 }
11262 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11263 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11264 }
11265 }
11266
11267 next_offset += envelope_size;
11268
11269 while next_offset < end_offset {
11271 _next_ordinal_to_read += 1;
11272 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11273 next_offset += envelope_size;
11274 }
11275
11276 Ok(())
11277 }
11278 }
11279
11280 impl Nat64PacketCounters {
11281 #[inline(always)]
11282 fn max_ordinal_present(&self) -> u64 {
11283 if let Some(_) = self.ipv6_to_ipv4_packets {
11284 return 2;
11285 }
11286 if let Some(_) = self.ipv4_to_ipv6_packets {
11287 return 1;
11288 }
11289 0
11290 }
11291 }
11292
11293 impl fidl::encoding::ValueTypeMarker for Nat64PacketCounters {
11294 type Borrowed<'a> = &'a Self;
11295 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11296 value
11297 }
11298 }
11299
11300 unsafe impl fidl::encoding::TypeMarker for Nat64PacketCounters {
11301 type Owned = Self;
11302
11303 #[inline(always)]
11304 fn inline_align(_context: fidl::encoding::Context) -> usize {
11305 8
11306 }
11307
11308 #[inline(always)]
11309 fn inline_size(_context: fidl::encoding::Context) -> usize {
11310 16
11311 }
11312 }
11313
11314 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64PacketCounters, D>
11315 for &Nat64PacketCounters
11316 {
11317 unsafe fn encode(
11318 self,
11319 encoder: &mut fidl::encoding::Encoder<'_, D>,
11320 offset: usize,
11321 mut depth: fidl::encoding::Depth,
11322 ) -> fidl::Result<()> {
11323 encoder.debug_check_bounds::<Nat64PacketCounters>(offset);
11324 let max_ordinal: u64 = self.max_ordinal_present();
11326 encoder.write_num(max_ordinal, offset);
11327 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11328 if max_ordinal == 0 {
11330 return Ok(());
11331 }
11332 depth.increment()?;
11333 let envelope_size = 8;
11334 let bytes_len = max_ordinal as usize * envelope_size;
11335 #[allow(unused_variables)]
11336 let offset = encoder.out_of_line_offset(bytes_len);
11337 let mut _prev_end_offset: usize = 0;
11338 if 1 > max_ordinal {
11339 return Ok(());
11340 }
11341
11342 let cur_offset: usize = (1 - 1) * envelope_size;
11345
11346 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11348
11349 fidl::encoding::encode_in_envelope_optional::<u64, D>(
11354 self.ipv4_to_ipv6_packets
11355 .as_ref()
11356 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
11357 encoder,
11358 offset + cur_offset,
11359 depth,
11360 )?;
11361
11362 _prev_end_offset = cur_offset + envelope_size;
11363 if 2 > max_ordinal {
11364 return Ok(());
11365 }
11366
11367 let cur_offset: usize = (2 - 1) * envelope_size;
11370
11371 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11373
11374 fidl::encoding::encode_in_envelope_optional::<u64, D>(
11379 self.ipv6_to_ipv4_packets
11380 .as_ref()
11381 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
11382 encoder,
11383 offset + cur_offset,
11384 depth,
11385 )?;
11386
11387 _prev_end_offset = cur_offset + envelope_size;
11388
11389 Ok(())
11390 }
11391 }
11392
11393 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64PacketCounters {
11394 #[inline(always)]
11395 fn new_empty() -> Self {
11396 Self::default()
11397 }
11398
11399 unsafe fn decode(
11400 &mut self,
11401 decoder: &mut fidl::encoding::Decoder<'_, D>,
11402 offset: usize,
11403 mut depth: fidl::encoding::Depth,
11404 ) -> fidl::Result<()> {
11405 decoder.debug_check_bounds::<Self>(offset);
11406 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11407 None => return Err(fidl::Error::NotNullable),
11408 Some(len) => len,
11409 };
11410 if len == 0 {
11412 return Ok(());
11413 };
11414 depth.increment()?;
11415 let envelope_size = 8;
11416 let bytes_len = len * envelope_size;
11417 let offset = decoder.out_of_line_offset(bytes_len)?;
11418 let mut _next_ordinal_to_read = 0;
11420 let mut next_offset = offset;
11421 let end_offset = offset + bytes_len;
11422 _next_ordinal_to_read += 1;
11423 if next_offset >= end_offset {
11424 return Ok(());
11425 }
11426
11427 while _next_ordinal_to_read < 1 {
11429 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11430 _next_ordinal_to_read += 1;
11431 next_offset += envelope_size;
11432 }
11433
11434 let next_out_of_line = decoder.next_out_of_line();
11435 let handles_before = decoder.remaining_handles();
11436 if let Some((inlined, num_bytes, num_handles)) =
11437 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11438 {
11439 let member_inline_size =
11440 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11441 if inlined != (member_inline_size <= 4) {
11442 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11443 }
11444 let inner_offset;
11445 let mut inner_depth = depth.clone();
11446 if inlined {
11447 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11448 inner_offset = next_offset;
11449 } else {
11450 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11451 inner_depth.increment()?;
11452 }
11453 let val_ref =
11454 self.ipv4_to_ipv6_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
11455 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
11456 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11457 {
11458 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11459 }
11460 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11461 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11462 }
11463 }
11464
11465 next_offset += envelope_size;
11466 _next_ordinal_to_read += 1;
11467 if next_offset >= end_offset {
11468 return Ok(());
11469 }
11470
11471 while _next_ordinal_to_read < 2 {
11473 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11474 _next_ordinal_to_read += 1;
11475 next_offset += envelope_size;
11476 }
11477
11478 let next_out_of_line = decoder.next_out_of_line();
11479 let handles_before = decoder.remaining_handles();
11480 if let Some((inlined, num_bytes, num_handles)) =
11481 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11482 {
11483 let member_inline_size =
11484 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11485 if inlined != (member_inline_size <= 4) {
11486 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11487 }
11488 let inner_offset;
11489 let mut inner_depth = depth.clone();
11490 if inlined {
11491 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11492 inner_offset = next_offset;
11493 } else {
11494 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11495 inner_depth.increment()?;
11496 }
11497 let val_ref =
11498 self.ipv6_to_ipv4_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
11499 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
11500 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11501 {
11502 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11503 }
11504 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11505 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11506 }
11507 }
11508
11509 next_offset += envelope_size;
11510
11511 while next_offset < end_offset {
11513 _next_ordinal_to_read += 1;
11514 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11515 next_offset += envelope_size;
11516 }
11517
11518 Ok(())
11519 }
11520 }
11521
11522 impl Nat64ProtocolCounters {
11523 #[inline(always)]
11524 fn max_ordinal_present(&self) -> u64 {
11525 if let Some(_) = self.total {
11526 return 4;
11527 }
11528 if let Some(_) = self.icmp {
11529 return 3;
11530 }
11531 if let Some(_) = self.udp {
11532 return 2;
11533 }
11534 if let Some(_) = self.tcp {
11535 return 1;
11536 }
11537 0
11538 }
11539 }
11540
11541 impl fidl::encoding::ValueTypeMarker for Nat64ProtocolCounters {
11542 type Borrowed<'a> = &'a Self;
11543 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11544 value
11545 }
11546 }
11547
11548 unsafe impl fidl::encoding::TypeMarker for Nat64ProtocolCounters {
11549 type Owned = Self;
11550
11551 #[inline(always)]
11552 fn inline_align(_context: fidl::encoding::Context) -> usize {
11553 8
11554 }
11555
11556 #[inline(always)]
11557 fn inline_size(_context: fidl::encoding::Context) -> usize {
11558 16
11559 }
11560 }
11561
11562 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64ProtocolCounters, D>
11563 for &Nat64ProtocolCounters
11564 {
11565 unsafe fn encode(
11566 self,
11567 encoder: &mut fidl::encoding::Encoder<'_, D>,
11568 offset: usize,
11569 mut depth: fidl::encoding::Depth,
11570 ) -> fidl::Result<()> {
11571 encoder.debug_check_bounds::<Nat64ProtocolCounters>(offset);
11572 let max_ordinal: u64 = self.max_ordinal_present();
11574 encoder.write_num(max_ordinal, offset);
11575 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11576 if max_ordinal == 0 {
11578 return Ok(());
11579 }
11580 depth.increment()?;
11581 let envelope_size = 8;
11582 let bytes_len = max_ordinal as usize * envelope_size;
11583 #[allow(unused_variables)]
11584 let offset = encoder.out_of_line_offset(bytes_len);
11585 let mut _prev_end_offset: usize = 0;
11586 if 1 > max_ordinal {
11587 return Ok(());
11588 }
11589
11590 let cur_offset: usize = (1 - 1) * envelope_size;
11593
11594 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11596
11597 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
11602 self.tcp
11603 .as_ref()
11604 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
11605 encoder,
11606 offset + cur_offset,
11607 depth,
11608 )?;
11609
11610 _prev_end_offset = cur_offset + envelope_size;
11611 if 2 > max_ordinal {
11612 return Ok(());
11613 }
11614
11615 let cur_offset: usize = (2 - 1) * envelope_size;
11618
11619 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11621
11622 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
11627 self.udp
11628 .as_ref()
11629 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
11630 encoder,
11631 offset + cur_offset,
11632 depth,
11633 )?;
11634
11635 _prev_end_offset = cur_offset + envelope_size;
11636 if 3 > max_ordinal {
11637 return Ok(());
11638 }
11639
11640 let cur_offset: usize = (3 - 1) * envelope_size;
11643
11644 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11646
11647 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
11652 self.icmp
11653 .as_ref()
11654 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
11655 encoder,
11656 offset + cur_offset,
11657 depth,
11658 )?;
11659
11660 _prev_end_offset = cur_offset + envelope_size;
11661 if 4 > max_ordinal {
11662 return Ok(());
11663 }
11664
11665 let cur_offset: usize = (4 - 1) * envelope_size;
11668
11669 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11671
11672 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
11677 self.total
11678 .as_ref()
11679 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
11680 encoder,
11681 offset + cur_offset,
11682 depth,
11683 )?;
11684
11685 _prev_end_offset = cur_offset + envelope_size;
11686
11687 Ok(())
11688 }
11689 }
11690
11691 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64ProtocolCounters {
11692 #[inline(always)]
11693 fn new_empty() -> Self {
11694 Self::default()
11695 }
11696
11697 unsafe fn decode(
11698 &mut self,
11699 decoder: &mut fidl::encoding::Decoder<'_, D>,
11700 offset: usize,
11701 mut depth: fidl::encoding::Depth,
11702 ) -> fidl::Result<()> {
11703 decoder.debug_check_bounds::<Self>(offset);
11704 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11705 None => return Err(fidl::Error::NotNullable),
11706 Some(len) => len,
11707 };
11708 if len == 0 {
11710 return Ok(());
11711 };
11712 depth.increment()?;
11713 let envelope_size = 8;
11714 let bytes_len = len * envelope_size;
11715 let offset = decoder.out_of_line_offset(bytes_len)?;
11716 let mut _next_ordinal_to_read = 0;
11718 let mut next_offset = offset;
11719 let end_offset = offset + bytes_len;
11720 _next_ordinal_to_read += 1;
11721 if next_offset >= end_offset {
11722 return Ok(());
11723 }
11724
11725 while _next_ordinal_to_read < 1 {
11727 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11728 _next_ordinal_to_read += 1;
11729 next_offset += envelope_size;
11730 }
11731
11732 let next_out_of_line = decoder.next_out_of_line();
11733 let handles_before = decoder.remaining_handles();
11734 if let Some((inlined, num_bytes, num_handles)) =
11735 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11736 {
11737 let member_inline_size =
11738 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
11739 decoder.context,
11740 );
11741 if inlined != (member_inline_size <= 4) {
11742 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11743 }
11744 let inner_offset;
11745 let mut inner_depth = depth.clone();
11746 if inlined {
11747 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11748 inner_offset = next_offset;
11749 } else {
11750 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11751 inner_depth.increment()?;
11752 }
11753 let val_ref =
11754 self.tcp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
11755 fidl::decode!(
11756 Nat64TrafficCounters,
11757 D,
11758 val_ref,
11759 decoder,
11760 inner_offset,
11761 inner_depth
11762 )?;
11763 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11764 {
11765 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11766 }
11767 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11768 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11769 }
11770 }
11771
11772 next_offset += envelope_size;
11773 _next_ordinal_to_read += 1;
11774 if next_offset >= end_offset {
11775 return Ok(());
11776 }
11777
11778 while _next_ordinal_to_read < 2 {
11780 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11781 _next_ordinal_to_read += 1;
11782 next_offset += envelope_size;
11783 }
11784
11785 let next_out_of_line = decoder.next_out_of_line();
11786 let handles_before = decoder.remaining_handles();
11787 if let Some((inlined, num_bytes, num_handles)) =
11788 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11789 {
11790 let member_inline_size =
11791 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
11792 decoder.context,
11793 );
11794 if inlined != (member_inline_size <= 4) {
11795 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11796 }
11797 let inner_offset;
11798 let mut inner_depth = depth.clone();
11799 if inlined {
11800 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11801 inner_offset = next_offset;
11802 } else {
11803 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11804 inner_depth.increment()?;
11805 }
11806 let val_ref =
11807 self.udp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
11808 fidl::decode!(
11809 Nat64TrafficCounters,
11810 D,
11811 val_ref,
11812 decoder,
11813 inner_offset,
11814 inner_depth
11815 )?;
11816 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11817 {
11818 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11819 }
11820 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11821 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11822 }
11823 }
11824
11825 next_offset += envelope_size;
11826 _next_ordinal_to_read += 1;
11827 if next_offset >= end_offset {
11828 return Ok(());
11829 }
11830
11831 while _next_ordinal_to_read < 3 {
11833 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11834 _next_ordinal_to_read += 1;
11835 next_offset += envelope_size;
11836 }
11837
11838 let next_out_of_line = decoder.next_out_of_line();
11839 let handles_before = decoder.remaining_handles();
11840 if let Some((inlined, num_bytes, num_handles)) =
11841 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11842 {
11843 let member_inline_size =
11844 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
11845 decoder.context,
11846 );
11847 if inlined != (member_inline_size <= 4) {
11848 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11849 }
11850 let inner_offset;
11851 let mut inner_depth = depth.clone();
11852 if inlined {
11853 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11854 inner_offset = next_offset;
11855 } else {
11856 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11857 inner_depth.increment()?;
11858 }
11859 let val_ref =
11860 self.icmp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
11861 fidl::decode!(
11862 Nat64TrafficCounters,
11863 D,
11864 val_ref,
11865 decoder,
11866 inner_offset,
11867 inner_depth
11868 )?;
11869 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11870 {
11871 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11872 }
11873 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11874 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11875 }
11876 }
11877
11878 next_offset += envelope_size;
11879 _next_ordinal_to_read += 1;
11880 if next_offset >= end_offset {
11881 return Ok(());
11882 }
11883
11884 while _next_ordinal_to_read < 4 {
11886 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11887 _next_ordinal_to_read += 1;
11888 next_offset += envelope_size;
11889 }
11890
11891 let next_out_of_line = decoder.next_out_of_line();
11892 let handles_before = decoder.remaining_handles();
11893 if let Some((inlined, num_bytes, num_handles)) =
11894 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11895 {
11896 let member_inline_size =
11897 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
11898 decoder.context,
11899 );
11900 if inlined != (member_inline_size <= 4) {
11901 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11902 }
11903 let inner_offset;
11904 let mut inner_depth = depth.clone();
11905 if inlined {
11906 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11907 inner_offset = next_offset;
11908 } else {
11909 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11910 inner_depth.increment()?;
11911 }
11912 let val_ref =
11913 self.total.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
11914 fidl::decode!(
11915 Nat64TrafficCounters,
11916 D,
11917 val_ref,
11918 decoder,
11919 inner_offset,
11920 inner_depth
11921 )?;
11922 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11923 {
11924 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11925 }
11926 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11927 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11928 }
11929 }
11930
11931 next_offset += envelope_size;
11932
11933 while next_offset < end_offset {
11935 _next_ordinal_to_read += 1;
11936 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11937 next_offset += envelope_size;
11938 }
11939
11940 Ok(())
11941 }
11942 }
11943
11944 impl Nat64TrafficCounters {
11945 #[inline(always)]
11946 fn max_ordinal_present(&self) -> u64 {
11947 if let Some(_) = self.ipv6_to_ipv4_bytes {
11948 return 4;
11949 }
11950 if let Some(_) = self.ipv6_to_ipv4_packets {
11951 return 3;
11952 }
11953 if let Some(_) = self.ipv4_to_ipv6_bytes {
11954 return 2;
11955 }
11956 if let Some(_) = self.ipv4_to_ipv6_packets {
11957 return 1;
11958 }
11959 0
11960 }
11961 }
11962
11963 impl fidl::encoding::ValueTypeMarker for Nat64TrafficCounters {
11964 type Borrowed<'a> = &'a Self;
11965 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11966 value
11967 }
11968 }
11969
11970 unsafe impl fidl::encoding::TypeMarker for Nat64TrafficCounters {
11971 type Owned = Self;
11972
11973 #[inline(always)]
11974 fn inline_align(_context: fidl::encoding::Context) -> usize {
11975 8
11976 }
11977
11978 #[inline(always)]
11979 fn inline_size(_context: fidl::encoding::Context) -> usize {
11980 16
11981 }
11982 }
11983
11984 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64TrafficCounters, D>
11985 for &Nat64TrafficCounters
11986 {
11987 unsafe fn encode(
11988 self,
11989 encoder: &mut fidl::encoding::Encoder<'_, D>,
11990 offset: usize,
11991 mut depth: fidl::encoding::Depth,
11992 ) -> fidl::Result<()> {
11993 encoder.debug_check_bounds::<Nat64TrafficCounters>(offset);
11994 let max_ordinal: u64 = self.max_ordinal_present();
11996 encoder.write_num(max_ordinal, offset);
11997 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11998 if max_ordinal == 0 {
12000 return Ok(());
12001 }
12002 depth.increment()?;
12003 let envelope_size = 8;
12004 let bytes_len = max_ordinal as usize * envelope_size;
12005 #[allow(unused_variables)]
12006 let offset = encoder.out_of_line_offset(bytes_len);
12007 let mut _prev_end_offset: usize = 0;
12008 if 1 > max_ordinal {
12009 return Ok(());
12010 }
12011
12012 let cur_offset: usize = (1 - 1) * envelope_size;
12015
12016 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12018
12019 fidl::encoding::encode_in_envelope_optional::<u64, D>(
12024 self.ipv4_to_ipv6_packets
12025 .as_ref()
12026 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
12027 encoder,
12028 offset + cur_offset,
12029 depth,
12030 )?;
12031
12032 _prev_end_offset = cur_offset + envelope_size;
12033 if 2 > max_ordinal {
12034 return Ok(());
12035 }
12036
12037 let cur_offset: usize = (2 - 1) * envelope_size;
12040
12041 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12043
12044 fidl::encoding::encode_in_envelope_optional::<u64, D>(
12049 self.ipv4_to_ipv6_bytes
12050 .as_ref()
12051 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
12052 encoder,
12053 offset + cur_offset,
12054 depth,
12055 )?;
12056
12057 _prev_end_offset = cur_offset + envelope_size;
12058 if 3 > max_ordinal {
12059 return Ok(());
12060 }
12061
12062 let cur_offset: usize = (3 - 1) * envelope_size;
12065
12066 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12068
12069 fidl::encoding::encode_in_envelope_optional::<u64, D>(
12074 self.ipv6_to_ipv4_packets
12075 .as_ref()
12076 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
12077 encoder,
12078 offset + cur_offset,
12079 depth,
12080 )?;
12081
12082 _prev_end_offset = cur_offset + envelope_size;
12083 if 4 > max_ordinal {
12084 return Ok(());
12085 }
12086
12087 let cur_offset: usize = (4 - 1) * envelope_size;
12090
12091 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12093
12094 fidl::encoding::encode_in_envelope_optional::<u64, D>(
12099 self.ipv6_to_ipv4_bytes
12100 .as_ref()
12101 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
12102 encoder,
12103 offset + cur_offset,
12104 depth,
12105 )?;
12106
12107 _prev_end_offset = cur_offset + envelope_size;
12108
12109 Ok(())
12110 }
12111 }
12112
12113 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64TrafficCounters {
12114 #[inline(always)]
12115 fn new_empty() -> Self {
12116 Self::default()
12117 }
12118
12119 unsafe fn decode(
12120 &mut self,
12121 decoder: &mut fidl::encoding::Decoder<'_, D>,
12122 offset: usize,
12123 mut depth: fidl::encoding::Depth,
12124 ) -> fidl::Result<()> {
12125 decoder.debug_check_bounds::<Self>(offset);
12126 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12127 None => return Err(fidl::Error::NotNullable),
12128 Some(len) => len,
12129 };
12130 if len == 0 {
12132 return Ok(());
12133 };
12134 depth.increment()?;
12135 let envelope_size = 8;
12136 let bytes_len = len * envelope_size;
12137 let offset = decoder.out_of_line_offset(bytes_len)?;
12138 let mut _next_ordinal_to_read = 0;
12140 let mut next_offset = offset;
12141 let end_offset = offset + bytes_len;
12142 _next_ordinal_to_read += 1;
12143 if next_offset >= end_offset {
12144 return Ok(());
12145 }
12146
12147 while _next_ordinal_to_read < 1 {
12149 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12150 _next_ordinal_to_read += 1;
12151 next_offset += envelope_size;
12152 }
12153
12154 let next_out_of_line = decoder.next_out_of_line();
12155 let handles_before = decoder.remaining_handles();
12156 if let Some((inlined, num_bytes, num_handles)) =
12157 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12158 {
12159 let member_inline_size =
12160 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12161 if inlined != (member_inline_size <= 4) {
12162 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12163 }
12164 let inner_offset;
12165 let mut inner_depth = depth.clone();
12166 if inlined {
12167 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12168 inner_offset = next_offset;
12169 } else {
12170 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12171 inner_depth.increment()?;
12172 }
12173 let val_ref =
12174 self.ipv4_to_ipv6_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
12175 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
12176 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12177 {
12178 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12179 }
12180 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12181 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12182 }
12183 }
12184
12185 next_offset += envelope_size;
12186 _next_ordinal_to_read += 1;
12187 if next_offset >= end_offset {
12188 return Ok(());
12189 }
12190
12191 while _next_ordinal_to_read < 2 {
12193 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12194 _next_ordinal_to_read += 1;
12195 next_offset += envelope_size;
12196 }
12197
12198 let next_out_of_line = decoder.next_out_of_line();
12199 let handles_before = decoder.remaining_handles();
12200 if let Some((inlined, num_bytes, num_handles)) =
12201 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12202 {
12203 let member_inline_size =
12204 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12205 if inlined != (member_inline_size <= 4) {
12206 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12207 }
12208 let inner_offset;
12209 let mut inner_depth = depth.clone();
12210 if inlined {
12211 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12212 inner_offset = next_offset;
12213 } else {
12214 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12215 inner_depth.increment()?;
12216 }
12217 let val_ref =
12218 self.ipv4_to_ipv6_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
12219 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
12220 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12221 {
12222 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12223 }
12224 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12225 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12226 }
12227 }
12228
12229 next_offset += envelope_size;
12230 _next_ordinal_to_read += 1;
12231 if next_offset >= end_offset {
12232 return Ok(());
12233 }
12234
12235 while _next_ordinal_to_read < 3 {
12237 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12238 _next_ordinal_to_read += 1;
12239 next_offset += envelope_size;
12240 }
12241
12242 let next_out_of_line = decoder.next_out_of_line();
12243 let handles_before = decoder.remaining_handles();
12244 if let Some((inlined, num_bytes, num_handles)) =
12245 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12246 {
12247 let member_inline_size =
12248 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12249 if inlined != (member_inline_size <= 4) {
12250 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12251 }
12252 let inner_offset;
12253 let mut inner_depth = depth.clone();
12254 if inlined {
12255 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12256 inner_offset = next_offset;
12257 } else {
12258 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12259 inner_depth.increment()?;
12260 }
12261 let val_ref =
12262 self.ipv6_to_ipv4_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
12263 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
12264 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12265 {
12266 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12267 }
12268 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12269 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12270 }
12271 }
12272
12273 next_offset += envelope_size;
12274 _next_ordinal_to_read += 1;
12275 if next_offset >= end_offset {
12276 return Ok(());
12277 }
12278
12279 while _next_ordinal_to_read < 4 {
12281 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12282 _next_ordinal_to_read += 1;
12283 next_offset += envelope_size;
12284 }
12285
12286 let next_out_of_line = decoder.next_out_of_line();
12287 let handles_before = decoder.remaining_handles();
12288 if let Some((inlined, num_bytes, num_handles)) =
12289 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12290 {
12291 let member_inline_size =
12292 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12293 if inlined != (member_inline_size <= 4) {
12294 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12295 }
12296 let inner_offset;
12297 let mut inner_depth = depth.clone();
12298 if inlined {
12299 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12300 inner_offset = next_offset;
12301 } else {
12302 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12303 inner_depth.increment()?;
12304 }
12305 let val_ref =
12306 self.ipv6_to_ipv4_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
12307 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
12308 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12309 {
12310 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12311 }
12312 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12313 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12314 }
12315 }
12316
12317 next_offset += envelope_size;
12318
12319 while next_offset < end_offset {
12321 _next_ordinal_to_read += 1;
12322 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12323 next_offset += envelope_size;
12324 }
12325
12326 Ok(())
12327 }
12328 }
12329
12330 impl NetworkScanParameters {
12331 #[inline(always)]
12332 fn max_ordinal_present(&self) -> u64 {
12333 if let Some(_) = self.tx_power_dbm {
12334 return 2;
12335 }
12336 if let Some(_) = self.channels {
12337 return 1;
12338 }
12339 0
12340 }
12341 }
12342
12343 impl fidl::encoding::ValueTypeMarker for NetworkScanParameters {
12344 type Borrowed<'a> = &'a Self;
12345 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12346 value
12347 }
12348 }
12349
12350 unsafe impl fidl::encoding::TypeMarker for NetworkScanParameters {
12351 type Owned = Self;
12352
12353 #[inline(always)]
12354 fn inline_align(_context: fidl::encoding::Context) -> usize {
12355 8
12356 }
12357
12358 #[inline(always)]
12359 fn inline_size(_context: fidl::encoding::Context) -> usize {
12360 16
12361 }
12362 }
12363
12364 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetworkScanParameters, D>
12365 for &NetworkScanParameters
12366 {
12367 unsafe fn encode(
12368 self,
12369 encoder: &mut fidl::encoding::Encoder<'_, D>,
12370 offset: usize,
12371 mut depth: fidl::encoding::Depth,
12372 ) -> fidl::Result<()> {
12373 encoder.debug_check_bounds::<NetworkScanParameters>(offset);
12374 let max_ordinal: u64 = self.max_ordinal_present();
12376 encoder.write_num(max_ordinal, offset);
12377 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12378 if max_ordinal == 0 {
12380 return Ok(());
12381 }
12382 depth.increment()?;
12383 let envelope_size = 8;
12384 let bytes_len = max_ordinal as usize * envelope_size;
12385 #[allow(unused_variables)]
12386 let offset = encoder.out_of_line_offset(bytes_len);
12387 let mut _prev_end_offset: usize = 0;
12388 if 1 > max_ordinal {
12389 return Ok(());
12390 }
12391
12392 let cur_offset: usize = (1 - 1) * envelope_size;
12395
12396 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12398
12399 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u16, 200>, D>(
12404 self.channels.as_ref().map(
12405 <fidl::encoding::Vector<u16, 200> as fidl::encoding::ValueTypeMarker>::borrow,
12406 ),
12407 encoder,
12408 offset + cur_offset,
12409 depth,
12410 )?;
12411
12412 _prev_end_offset = cur_offset + envelope_size;
12413 if 2 > max_ordinal {
12414 return Ok(());
12415 }
12416
12417 let cur_offset: usize = (2 - 1) * envelope_size;
12420
12421 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12423
12424 fidl::encoding::encode_in_envelope_optional::<i8, D>(
12429 self.tx_power_dbm.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
12430 encoder,
12431 offset + cur_offset,
12432 depth,
12433 )?;
12434
12435 _prev_end_offset = cur_offset + envelope_size;
12436
12437 Ok(())
12438 }
12439 }
12440
12441 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkScanParameters {
12442 #[inline(always)]
12443 fn new_empty() -> Self {
12444 Self::default()
12445 }
12446
12447 unsafe fn decode(
12448 &mut self,
12449 decoder: &mut fidl::encoding::Decoder<'_, D>,
12450 offset: usize,
12451 mut depth: fidl::encoding::Depth,
12452 ) -> fidl::Result<()> {
12453 decoder.debug_check_bounds::<Self>(offset);
12454 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12455 None => return Err(fidl::Error::NotNullable),
12456 Some(len) => len,
12457 };
12458 if len == 0 {
12460 return Ok(());
12461 };
12462 depth.increment()?;
12463 let envelope_size = 8;
12464 let bytes_len = len * envelope_size;
12465 let offset = decoder.out_of_line_offset(bytes_len)?;
12466 let mut _next_ordinal_to_read = 0;
12468 let mut next_offset = offset;
12469 let end_offset = offset + bytes_len;
12470 _next_ordinal_to_read += 1;
12471 if next_offset >= end_offset {
12472 return Ok(());
12473 }
12474
12475 while _next_ordinal_to_read < 1 {
12477 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12478 _next_ordinal_to_read += 1;
12479 next_offset += envelope_size;
12480 }
12481
12482 let next_out_of_line = decoder.next_out_of_line();
12483 let handles_before = decoder.remaining_handles();
12484 if let Some((inlined, num_bytes, num_handles)) =
12485 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12486 {
12487 let member_inline_size =
12488 <fidl::encoding::Vector<u16, 200> as fidl::encoding::TypeMarker>::inline_size(
12489 decoder.context,
12490 );
12491 if inlined != (member_inline_size <= 4) {
12492 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12493 }
12494 let inner_offset;
12495 let mut inner_depth = depth.clone();
12496 if inlined {
12497 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12498 inner_offset = next_offset;
12499 } else {
12500 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12501 inner_depth.increment()?;
12502 }
12503 let val_ref = self
12504 .channels
12505 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u16, 200>, D));
12506 fidl::decode!(fidl::encoding::Vector<u16, 200>, D, val_ref, decoder, inner_offset, inner_depth)?;
12507 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12508 {
12509 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12510 }
12511 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12512 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12513 }
12514 }
12515
12516 next_offset += envelope_size;
12517 _next_ordinal_to_read += 1;
12518 if next_offset >= end_offset {
12519 return Ok(());
12520 }
12521
12522 while _next_ordinal_to_read < 2 {
12524 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12525 _next_ordinal_to_read += 1;
12526 next_offset += envelope_size;
12527 }
12528
12529 let next_out_of_line = decoder.next_out_of_line();
12530 let handles_before = decoder.remaining_handles();
12531 if let Some((inlined, num_bytes, num_handles)) =
12532 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12533 {
12534 let member_inline_size =
12535 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12536 if inlined != (member_inline_size <= 4) {
12537 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12538 }
12539 let inner_offset;
12540 let mut inner_depth = depth.clone();
12541 if inlined {
12542 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12543 inner_offset = next_offset;
12544 } else {
12545 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12546 inner_depth.increment()?;
12547 }
12548 let val_ref = self.tx_power_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
12549 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
12550 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12551 {
12552 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12553 }
12554 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12555 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12556 }
12557 }
12558
12559 next_offset += envelope_size;
12560
12561 while next_offset < end_offset {
12563 _next_ordinal_to_read += 1;
12564 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12565 next_offset += envelope_size;
12566 }
12567
12568 Ok(())
12569 }
12570 }
12571
12572 impl OnMeshPrefix {
12573 #[inline(always)]
12574 fn max_ordinal_present(&self) -> u64 {
12575 if let Some(_) = self.slaac_valid {
12576 return 5;
12577 }
12578 if let Some(_) = self.slaac_preferred {
12579 return 4;
12580 }
12581 if let Some(_) = self.stable {
12582 return 3;
12583 }
12584 if let Some(_) = self.default_route_preference {
12585 return 2;
12586 }
12587 if let Some(_) = self.subnet {
12588 return 1;
12589 }
12590 0
12591 }
12592 }
12593
12594 impl fidl::encoding::ValueTypeMarker for OnMeshPrefix {
12595 type Borrowed<'a> = &'a Self;
12596 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12597 value
12598 }
12599 }
12600
12601 unsafe impl fidl::encoding::TypeMarker for OnMeshPrefix {
12602 type Owned = Self;
12603
12604 #[inline(always)]
12605 fn inline_align(_context: fidl::encoding::Context) -> usize {
12606 8
12607 }
12608
12609 #[inline(always)]
12610 fn inline_size(_context: fidl::encoding::Context) -> usize {
12611 16
12612 }
12613 }
12614
12615 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OnMeshPrefix, D>
12616 for &OnMeshPrefix
12617 {
12618 unsafe fn encode(
12619 self,
12620 encoder: &mut fidl::encoding::Encoder<'_, D>,
12621 offset: usize,
12622 mut depth: fidl::encoding::Depth,
12623 ) -> fidl::Result<()> {
12624 encoder.debug_check_bounds::<OnMeshPrefix>(offset);
12625 let max_ordinal: u64 = self.max_ordinal_present();
12627 encoder.write_num(max_ordinal, offset);
12628 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12629 if max_ordinal == 0 {
12631 return Ok(());
12632 }
12633 depth.increment()?;
12634 let envelope_size = 8;
12635 let bytes_len = max_ordinal as usize * envelope_size;
12636 #[allow(unused_variables)]
12637 let offset = encoder.out_of_line_offset(bytes_len);
12638 let mut _prev_end_offset: usize = 0;
12639 if 1 > max_ordinal {
12640 return Ok(());
12641 }
12642
12643 let cur_offset: usize = (1 - 1) * envelope_size;
12646
12647 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12649
12650 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>(
12655 self.subnet.as_ref().map(<fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow),
12656 encoder, offset + cur_offset, depth
12657 )?;
12658
12659 _prev_end_offset = cur_offset + envelope_size;
12660 if 2 > max_ordinal {
12661 return Ok(());
12662 }
12663
12664 let cur_offset: usize = (2 - 1) * envelope_size;
12667
12668 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12670
12671 fidl::encoding::encode_in_envelope_optional::<RoutePreference, D>(
12676 self.default_route_preference
12677 .as_ref()
12678 .map(<RoutePreference as fidl::encoding::ValueTypeMarker>::borrow),
12679 encoder,
12680 offset + cur_offset,
12681 depth,
12682 )?;
12683
12684 _prev_end_offset = cur_offset + envelope_size;
12685 if 3 > max_ordinal {
12686 return Ok(());
12687 }
12688
12689 let cur_offset: usize = (3 - 1) * envelope_size;
12692
12693 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12695
12696 fidl::encoding::encode_in_envelope_optional::<bool, D>(
12701 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12702 encoder,
12703 offset + cur_offset,
12704 depth,
12705 )?;
12706
12707 _prev_end_offset = cur_offset + envelope_size;
12708 if 4 > max_ordinal {
12709 return Ok(());
12710 }
12711
12712 let cur_offset: usize = (4 - 1) * envelope_size;
12715
12716 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12718
12719 fidl::encoding::encode_in_envelope_optional::<bool, D>(
12724 self.slaac_preferred
12725 .as_ref()
12726 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12727 encoder,
12728 offset + cur_offset,
12729 depth,
12730 )?;
12731
12732 _prev_end_offset = cur_offset + envelope_size;
12733 if 5 > max_ordinal {
12734 return Ok(());
12735 }
12736
12737 let cur_offset: usize = (5 - 1) * envelope_size;
12740
12741 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12743
12744 fidl::encoding::encode_in_envelope_optional::<bool, D>(
12749 self.slaac_valid.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12750 encoder,
12751 offset + cur_offset,
12752 depth,
12753 )?;
12754
12755 _prev_end_offset = cur_offset + envelope_size;
12756
12757 Ok(())
12758 }
12759 }
12760
12761 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OnMeshPrefix {
12762 #[inline(always)]
12763 fn new_empty() -> Self {
12764 Self::default()
12765 }
12766
12767 unsafe fn decode(
12768 &mut self,
12769 decoder: &mut fidl::encoding::Decoder<'_, D>,
12770 offset: usize,
12771 mut depth: fidl::encoding::Depth,
12772 ) -> fidl::Result<()> {
12773 decoder.debug_check_bounds::<Self>(offset);
12774 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12775 None => return Err(fidl::Error::NotNullable),
12776 Some(len) => len,
12777 };
12778 if len == 0 {
12780 return Ok(());
12781 };
12782 depth.increment()?;
12783 let envelope_size = 8;
12784 let bytes_len = len * envelope_size;
12785 let offset = decoder.out_of_line_offset(bytes_len)?;
12786 let mut _next_ordinal_to_read = 0;
12788 let mut next_offset = offset;
12789 let end_offset = offset + bytes_len;
12790 _next_ordinal_to_read += 1;
12791 if next_offset >= end_offset {
12792 return Ok(());
12793 }
12794
12795 while _next_ordinal_to_read < 1 {
12797 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12798 _next_ordinal_to_read += 1;
12799 next_offset += envelope_size;
12800 }
12801
12802 let next_out_of_line = decoder.next_out_of_line();
12803 let handles_before = decoder.remaining_handles();
12804 if let Some((inlined, num_bytes, num_handles)) =
12805 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12806 {
12807 let member_inline_size = <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12808 if inlined != (member_inline_size <= 4) {
12809 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12810 }
12811 let inner_offset;
12812 let mut inner_depth = depth.clone();
12813 if inlined {
12814 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12815 inner_offset = next_offset;
12816 } else {
12817 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12818 inner_depth.increment()?;
12819 }
12820 let val_ref = self.subnet.get_or_insert_with(|| {
12821 fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D)
12822 });
12823 fidl::decode!(
12824 fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
12825 D,
12826 val_ref,
12827 decoder,
12828 inner_offset,
12829 inner_depth
12830 )?;
12831 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12832 {
12833 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12834 }
12835 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12836 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12837 }
12838 }
12839
12840 next_offset += envelope_size;
12841 _next_ordinal_to_read += 1;
12842 if next_offset >= end_offset {
12843 return Ok(());
12844 }
12845
12846 while _next_ordinal_to_read < 2 {
12848 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12849 _next_ordinal_to_read += 1;
12850 next_offset += envelope_size;
12851 }
12852
12853 let next_out_of_line = decoder.next_out_of_line();
12854 let handles_before = decoder.remaining_handles();
12855 if let Some((inlined, num_bytes, num_handles)) =
12856 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12857 {
12858 let member_inline_size =
12859 <RoutePreference as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12860 if inlined != (member_inline_size <= 4) {
12861 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12862 }
12863 let inner_offset;
12864 let mut inner_depth = depth.clone();
12865 if inlined {
12866 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12867 inner_offset = next_offset;
12868 } else {
12869 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12870 inner_depth.increment()?;
12871 }
12872 let val_ref = self
12873 .default_route_preference
12874 .get_or_insert_with(|| fidl::new_empty!(RoutePreference, D));
12875 fidl::decode!(RoutePreference, D, val_ref, decoder, inner_offset, inner_depth)?;
12876 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12877 {
12878 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12879 }
12880 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12881 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12882 }
12883 }
12884
12885 next_offset += envelope_size;
12886 _next_ordinal_to_read += 1;
12887 if next_offset >= end_offset {
12888 return Ok(());
12889 }
12890
12891 while _next_ordinal_to_read < 3 {
12893 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12894 _next_ordinal_to_read += 1;
12895 next_offset += envelope_size;
12896 }
12897
12898 let next_out_of_line = decoder.next_out_of_line();
12899 let handles_before = decoder.remaining_handles();
12900 if let Some((inlined, num_bytes, num_handles)) =
12901 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12902 {
12903 let member_inline_size =
12904 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12905 if inlined != (member_inline_size <= 4) {
12906 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12907 }
12908 let inner_offset;
12909 let mut inner_depth = depth.clone();
12910 if inlined {
12911 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12912 inner_offset = next_offset;
12913 } else {
12914 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12915 inner_depth.increment()?;
12916 }
12917 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
12918 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
12919 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12920 {
12921 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12922 }
12923 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12924 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12925 }
12926 }
12927
12928 next_offset += envelope_size;
12929 _next_ordinal_to_read += 1;
12930 if next_offset >= end_offset {
12931 return Ok(());
12932 }
12933
12934 while _next_ordinal_to_read < 4 {
12936 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12937 _next_ordinal_to_read += 1;
12938 next_offset += envelope_size;
12939 }
12940
12941 let next_out_of_line = decoder.next_out_of_line();
12942 let handles_before = decoder.remaining_handles();
12943 if let Some((inlined, num_bytes, num_handles)) =
12944 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12945 {
12946 let member_inline_size =
12947 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12948 if inlined != (member_inline_size <= 4) {
12949 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12950 }
12951 let inner_offset;
12952 let mut inner_depth = depth.clone();
12953 if inlined {
12954 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12955 inner_offset = next_offset;
12956 } else {
12957 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12958 inner_depth.increment()?;
12959 }
12960 let val_ref = self.slaac_preferred.get_or_insert_with(|| fidl::new_empty!(bool, D));
12961 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
12962 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12963 {
12964 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12965 }
12966 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12967 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12968 }
12969 }
12970
12971 next_offset += envelope_size;
12972 _next_ordinal_to_read += 1;
12973 if next_offset >= end_offset {
12974 return Ok(());
12975 }
12976
12977 while _next_ordinal_to_read < 5 {
12979 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12980 _next_ordinal_to_read += 1;
12981 next_offset += envelope_size;
12982 }
12983
12984 let next_out_of_line = decoder.next_out_of_line();
12985 let handles_before = decoder.remaining_handles();
12986 if let Some((inlined, num_bytes, num_handles)) =
12987 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12988 {
12989 let member_inline_size =
12990 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12991 if inlined != (member_inline_size <= 4) {
12992 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12993 }
12994 let inner_offset;
12995 let mut inner_depth = depth.clone();
12996 if inlined {
12997 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12998 inner_offset = next_offset;
12999 } else {
13000 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13001 inner_depth.increment()?;
13002 }
13003 let val_ref = self.slaac_valid.get_or_insert_with(|| fidl::new_empty!(bool, D));
13004 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
13005 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13006 {
13007 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13008 }
13009 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13010 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13011 }
13012 }
13013
13014 next_offset += envelope_size;
13015
13016 while next_offset < end_offset {
13018 _next_ordinal_to_read += 1;
13019 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13020 next_offset += envelope_size;
13021 }
13022
13023 Ok(())
13024 }
13025 }
13026
13027 impl OperationalDataset {
13028 #[inline(always)]
13029 fn max_ordinal_present(&self) -> u64 {
13030 if let Some(_) = self.channel_mask {
13031 return 13;
13032 }
13033 if let Some(_) = self.security_policy {
13034 return 12;
13035 }
13036 if let Some(_) = self.pskc {
13037 return 11;
13038 }
13039 if let Some(_) = self.wakeup_channel {
13040 return 10;
13041 }
13042 if let Some(_) = self.channel {
13043 return 9;
13044 }
13045 if let Some(_) = self.pan_id {
13046 return 8;
13047 }
13048 if let Some(_) = self.delay {
13049 return 7;
13050 }
13051 if let Some(_) = self.mesh_local_prefix {
13052 return 6;
13053 }
13054 if let Some(_) = self.extended_pan_id {
13055 return 5;
13056 }
13057 if let Some(_) = self.network_name {
13058 return 4;
13059 }
13060 if let Some(_) = self.network_key {
13061 return 3;
13062 }
13063 if let Some(_) = self.pending_timestamp {
13064 return 2;
13065 }
13066 if let Some(_) = self.active_timestamp {
13067 return 1;
13068 }
13069 0
13070 }
13071 }
13072
13073 impl fidl::encoding::ValueTypeMarker for OperationalDataset {
13074 type Borrowed<'a> = &'a Self;
13075 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13076 value
13077 }
13078 }
13079
13080 unsafe impl fidl::encoding::TypeMarker for OperationalDataset {
13081 type Owned = Self;
13082
13083 #[inline(always)]
13084 fn inline_align(_context: fidl::encoding::Context) -> usize {
13085 8
13086 }
13087
13088 #[inline(always)]
13089 fn inline_size(_context: fidl::encoding::Context) -> usize {
13090 16
13091 }
13092 }
13093
13094 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OperationalDataset, D>
13095 for &OperationalDataset
13096 {
13097 unsafe fn encode(
13098 self,
13099 encoder: &mut fidl::encoding::Encoder<'_, D>,
13100 offset: usize,
13101 mut depth: fidl::encoding::Depth,
13102 ) -> fidl::Result<()> {
13103 encoder.debug_check_bounds::<OperationalDataset>(offset);
13104 let max_ordinal: u64 = self.max_ordinal_present();
13106 encoder.write_num(max_ordinal, offset);
13107 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13108 if max_ordinal == 0 {
13110 return Ok(());
13111 }
13112 depth.increment()?;
13113 let envelope_size = 8;
13114 let bytes_len = max_ordinal as usize * envelope_size;
13115 #[allow(unused_variables)]
13116 let offset = encoder.out_of_line_offset(bytes_len);
13117 let mut _prev_end_offset: usize = 0;
13118 if 1 > max_ordinal {
13119 return Ok(());
13120 }
13121
13122 let cur_offset: usize = (1 - 1) * envelope_size;
13125
13126 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13128
13129 fidl::encoding::encode_in_envelope_optional::<i64, D>(
13134 self.active_timestamp
13135 .as_ref()
13136 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
13137 encoder,
13138 offset + cur_offset,
13139 depth,
13140 )?;
13141
13142 _prev_end_offset = cur_offset + envelope_size;
13143 if 2 > max_ordinal {
13144 return Ok(());
13145 }
13146
13147 let cur_offset: usize = (2 - 1) * envelope_size;
13150
13151 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13153
13154 fidl::encoding::encode_in_envelope_optional::<i64, D>(
13159 self.pending_timestamp
13160 .as_ref()
13161 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
13162 encoder,
13163 offset + cur_offset,
13164 depth,
13165 )?;
13166
13167 _prev_end_offset = cur_offset + envelope_size;
13168 if 3 > max_ordinal {
13169 return Ok(());
13170 }
13171
13172 let cur_offset: usize = (3 - 1) * envelope_size;
13175
13176 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13178
13179 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 16>, D>(
13184 self.network_key.as_ref().map(
13185 <fidl::encoding::Vector<u8, 16> as fidl::encoding::ValueTypeMarker>::borrow,
13186 ),
13187 encoder,
13188 offset + cur_offset,
13189 depth,
13190 )?;
13191
13192 _prev_end_offset = cur_offset + envelope_size;
13193 if 4 > max_ordinal {
13194 return Ok(());
13195 }
13196
13197 let cur_offset: usize = (4 - 1) * envelope_size;
13200
13201 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13203
13204 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 17>, D>(
13209 self.network_name.as_ref().map(
13210 <fidl::encoding::Vector<u8, 17> as fidl::encoding::ValueTypeMarker>::borrow,
13211 ),
13212 encoder,
13213 offset + cur_offset,
13214 depth,
13215 )?;
13216
13217 _prev_end_offset = cur_offset + envelope_size;
13218 if 5 > max_ordinal {
13219 return Ok(());
13220 }
13221
13222 let cur_offset: usize = (5 - 1) * envelope_size;
13225
13226 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13228
13229 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
13234 self.extended_pan_id.as_ref().map(
13235 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
13236 ),
13237 encoder,
13238 offset + cur_offset,
13239 depth,
13240 )?;
13241
13242 _prev_end_offset = cur_offset + envelope_size;
13243 if 6 > max_ordinal {
13244 return Ok(());
13245 }
13246
13247 let cur_offset: usize = (6 - 1) * envelope_size;
13250
13251 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13253
13254 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
13259 self.mesh_local_prefix.as_ref().map(
13260 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
13261 ),
13262 encoder,
13263 offset + cur_offset,
13264 depth,
13265 )?;
13266
13267 _prev_end_offset = cur_offset + envelope_size;
13268 if 7 > max_ordinal {
13269 return Ok(());
13270 }
13271
13272 let cur_offset: usize = (7 - 1) * envelope_size;
13275
13276 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13278
13279 fidl::encoding::encode_in_envelope_optional::<u32, D>(
13284 self.delay.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13285 encoder,
13286 offset + cur_offset,
13287 depth,
13288 )?;
13289
13290 _prev_end_offset = cur_offset + envelope_size;
13291 if 8 > max_ordinal {
13292 return Ok(());
13293 }
13294
13295 let cur_offset: usize = (8 - 1) * envelope_size;
13298
13299 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13301
13302 fidl::encoding::encode_in_envelope_optional::<u16, D>(
13307 self.pan_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
13308 encoder,
13309 offset + cur_offset,
13310 depth,
13311 )?;
13312
13313 _prev_end_offset = cur_offset + envelope_size;
13314 if 9 > max_ordinal {
13315 return Ok(());
13316 }
13317
13318 let cur_offset: usize = (9 - 1) * envelope_size;
13321
13322 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13324
13325 fidl::encoding::encode_in_envelope_optional::<u16, D>(
13330 self.channel.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
13331 encoder,
13332 offset + cur_offset,
13333 depth,
13334 )?;
13335
13336 _prev_end_offset = cur_offset + envelope_size;
13337 if 10 > max_ordinal {
13338 return Ok(());
13339 }
13340
13341 let cur_offset: usize = (10 - 1) * envelope_size;
13344
13345 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13347
13348 fidl::encoding::encode_in_envelope_optional::<u16, D>(
13353 self.wakeup_channel.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
13354 encoder,
13355 offset + cur_offset,
13356 depth,
13357 )?;
13358
13359 _prev_end_offset = cur_offset + envelope_size;
13360 if 11 > max_ordinal {
13361 return Ok(());
13362 }
13363
13364 let cur_offset: usize = (11 - 1) * envelope_size;
13367
13368 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13370
13371 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 16>, D>(
13376 self.pskc.as_ref().map(
13377 <fidl::encoding::Vector<u8, 16> as fidl::encoding::ValueTypeMarker>::borrow,
13378 ),
13379 encoder,
13380 offset + cur_offset,
13381 depth,
13382 )?;
13383
13384 _prev_end_offset = cur_offset + envelope_size;
13385 if 12 > max_ordinal {
13386 return Ok(());
13387 }
13388
13389 let cur_offset: usize = (12 - 1) * envelope_size;
13392
13393 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13395
13396 fidl::encoding::encode_in_envelope_optional::<SecurityPolicy, D>(
13401 self.security_policy
13402 .as_ref()
13403 .map(<SecurityPolicy as fidl::encoding::ValueTypeMarker>::borrow),
13404 encoder,
13405 offset + cur_offset,
13406 depth,
13407 )?;
13408
13409 _prev_end_offset = cur_offset + envelope_size;
13410 if 13 > max_ordinal {
13411 return Ok(());
13412 }
13413
13414 let cur_offset: usize = (13 - 1) * envelope_size;
13417
13418 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13420
13421 fidl::encoding::encode_in_envelope_optional::<u32, D>(
13426 self.channel_mask.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13427 encoder,
13428 offset + cur_offset,
13429 depth,
13430 )?;
13431
13432 _prev_end_offset = cur_offset + envelope_size;
13433
13434 Ok(())
13435 }
13436 }
13437
13438 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OperationalDataset {
13439 #[inline(always)]
13440 fn new_empty() -> Self {
13441 Self::default()
13442 }
13443
13444 unsafe fn decode(
13445 &mut self,
13446 decoder: &mut fidl::encoding::Decoder<'_, D>,
13447 offset: usize,
13448 mut depth: fidl::encoding::Depth,
13449 ) -> fidl::Result<()> {
13450 decoder.debug_check_bounds::<Self>(offset);
13451 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13452 None => return Err(fidl::Error::NotNullable),
13453 Some(len) => len,
13454 };
13455 if len == 0 {
13457 return Ok(());
13458 };
13459 depth.increment()?;
13460 let envelope_size = 8;
13461 let bytes_len = len * envelope_size;
13462 let offset = decoder.out_of_line_offset(bytes_len)?;
13463 let mut _next_ordinal_to_read = 0;
13465 let mut next_offset = offset;
13466 let end_offset = offset + bytes_len;
13467 _next_ordinal_to_read += 1;
13468 if next_offset >= end_offset {
13469 return Ok(());
13470 }
13471
13472 while _next_ordinal_to_read < 1 {
13474 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13475 _next_ordinal_to_read += 1;
13476 next_offset += envelope_size;
13477 }
13478
13479 let next_out_of_line = decoder.next_out_of_line();
13480 let handles_before = decoder.remaining_handles();
13481 if let Some((inlined, num_bytes, num_handles)) =
13482 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13483 {
13484 let member_inline_size =
13485 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13486 if inlined != (member_inline_size <= 4) {
13487 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13488 }
13489 let inner_offset;
13490 let mut inner_depth = depth.clone();
13491 if inlined {
13492 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13493 inner_offset = next_offset;
13494 } else {
13495 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13496 inner_depth.increment()?;
13497 }
13498 let val_ref = self.active_timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
13499 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
13500 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13501 {
13502 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13503 }
13504 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13505 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13506 }
13507 }
13508
13509 next_offset += envelope_size;
13510 _next_ordinal_to_read += 1;
13511 if next_offset >= end_offset {
13512 return Ok(());
13513 }
13514
13515 while _next_ordinal_to_read < 2 {
13517 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13518 _next_ordinal_to_read += 1;
13519 next_offset += envelope_size;
13520 }
13521
13522 let next_out_of_line = decoder.next_out_of_line();
13523 let handles_before = decoder.remaining_handles();
13524 if let Some((inlined, num_bytes, num_handles)) =
13525 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13526 {
13527 let member_inline_size =
13528 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13529 if inlined != (member_inline_size <= 4) {
13530 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13531 }
13532 let inner_offset;
13533 let mut inner_depth = depth.clone();
13534 if inlined {
13535 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13536 inner_offset = next_offset;
13537 } else {
13538 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13539 inner_depth.increment()?;
13540 }
13541 let val_ref =
13542 self.pending_timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
13543 fidl::decode!(i64, 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 < 3 {
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 <fidl::encoding::Vector<u8, 16> as fidl::encoding::TypeMarker>::inline_size(
13573 decoder.context,
13574 );
13575 if inlined != (member_inline_size <= 4) {
13576 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13577 }
13578 let inner_offset;
13579 let mut inner_depth = depth.clone();
13580 if inlined {
13581 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13582 inner_offset = next_offset;
13583 } else {
13584 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13585 inner_depth.increment()?;
13586 }
13587 let val_ref = self
13588 .network_key
13589 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 16>, D));
13590 fidl::decode!(fidl::encoding::Vector<u8, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
13591 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13592 {
13593 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13594 }
13595 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13596 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13597 }
13598 }
13599
13600 next_offset += envelope_size;
13601 _next_ordinal_to_read += 1;
13602 if next_offset >= end_offset {
13603 return Ok(());
13604 }
13605
13606 while _next_ordinal_to_read < 4 {
13608 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13609 _next_ordinal_to_read += 1;
13610 next_offset += envelope_size;
13611 }
13612
13613 let next_out_of_line = decoder.next_out_of_line();
13614 let handles_before = decoder.remaining_handles();
13615 if let Some((inlined, num_bytes, num_handles)) =
13616 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13617 {
13618 let member_inline_size =
13619 <fidl::encoding::Vector<u8, 17> as fidl::encoding::TypeMarker>::inline_size(
13620 decoder.context,
13621 );
13622 if inlined != (member_inline_size <= 4) {
13623 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13624 }
13625 let inner_offset;
13626 let mut inner_depth = depth.clone();
13627 if inlined {
13628 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13629 inner_offset = next_offset;
13630 } else {
13631 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13632 inner_depth.increment()?;
13633 }
13634 let val_ref = self
13635 .network_name
13636 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 17>, D));
13637 fidl::decode!(fidl::encoding::Vector<u8, 17>, D, val_ref, decoder, inner_offset, inner_depth)?;
13638 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13639 {
13640 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13641 }
13642 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13643 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13644 }
13645 }
13646
13647 next_offset += envelope_size;
13648 _next_ordinal_to_read += 1;
13649 if next_offset >= end_offset {
13650 return Ok(());
13651 }
13652
13653 while _next_ordinal_to_read < 5 {
13655 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13656 _next_ordinal_to_read += 1;
13657 next_offset += envelope_size;
13658 }
13659
13660 let next_out_of_line = decoder.next_out_of_line();
13661 let handles_before = decoder.remaining_handles();
13662 if let Some((inlined, num_bytes, num_handles)) =
13663 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13664 {
13665 let member_inline_size =
13666 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
13667 decoder.context,
13668 );
13669 if inlined != (member_inline_size <= 4) {
13670 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13671 }
13672 let inner_offset;
13673 let mut inner_depth = depth.clone();
13674 if inlined {
13675 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13676 inner_offset = next_offset;
13677 } else {
13678 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13679 inner_depth.increment()?;
13680 }
13681 let val_ref = self
13682 .extended_pan_id
13683 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
13684 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
13685 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13686 {
13687 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13688 }
13689 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13690 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13691 }
13692 }
13693
13694 next_offset += envelope_size;
13695 _next_ordinal_to_read += 1;
13696 if next_offset >= end_offset {
13697 return Ok(());
13698 }
13699
13700 while _next_ordinal_to_read < 6 {
13702 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13703 _next_ordinal_to_read += 1;
13704 next_offset += envelope_size;
13705 }
13706
13707 let next_out_of_line = decoder.next_out_of_line();
13708 let handles_before = decoder.remaining_handles();
13709 if let Some((inlined, num_bytes, num_handles)) =
13710 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13711 {
13712 let member_inline_size =
13713 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
13714 decoder.context,
13715 );
13716 if inlined != (member_inline_size <= 4) {
13717 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13718 }
13719 let inner_offset;
13720 let mut inner_depth = depth.clone();
13721 if inlined {
13722 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13723 inner_offset = next_offset;
13724 } else {
13725 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13726 inner_depth.increment()?;
13727 }
13728 let val_ref = self
13729 .mesh_local_prefix
13730 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
13731 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
13732 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13733 {
13734 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13735 }
13736 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13737 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13738 }
13739 }
13740
13741 next_offset += envelope_size;
13742 _next_ordinal_to_read += 1;
13743 if next_offset >= end_offset {
13744 return Ok(());
13745 }
13746
13747 while _next_ordinal_to_read < 7 {
13749 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13750 _next_ordinal_to_read += 1;
13751 next_offset += envelope_size;
13752 }
13753
13754 let next_out_of_line = decoder.next_out_of_line();
13755 let handles_before = decoder.remaining_handles();
13756 if let Some((inlined, num_bytes, num_handles)) =
13757 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13758 {
13759 let member_inline_size =
13760 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13761 if inlined != (member_inline_size <= 4) {
13762 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13763 }
13764 let inner_offset;
13765 let mut inner_depth = depth.clone();
13766 if inlined {
13767 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13768 inner_offset = next_offset;
13769 } else {
13770 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13771 inner_depth.increment()?;
13772 }
13773 let val_ref = self.delay.get_or_insert_with(|| fidl::new_empty!(u32, D));
13774 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13775 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13776 {
13777 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13778 }
13779 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13780 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13781 }
13782 }
13783
13784 next_offset += envelope_size;
13785 _next_ordinal_to_read += 1;
13786 if next_offset >= end_offset {
13787 return Ok(());
13788 }
13789
13790 while _next_ordinal_to_read < 8 {
13792 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13793 _next_ordinal_to_read += 1;
13794 next_offset += envelope_size;
13795 }
13796
13797 let next_out_of_line = decoder.next_out_of_line();
13798 let handles_before = decoder.remaining_handles();
13799 if let Some((inlined, num_bytes, num_handles)) =
13800 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13801 {
13802 let member_inline_size =
13803 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13804 if inlined != (member_inline_size <= 4) {
13805 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13806 }
13807 let inner_offset;
13808 let mut inner_depth = depth.clone();
13809 if inlined {
13810 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13811 inner_offset = next_offset;
13812 } else {
13813 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13814 inner_depth.increment()?;
13815 }
13816 let val_ref = self.pan_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
13817 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
13818 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13819 {
13820 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13821 }
13822 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13823 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13824 }
13825 }
13826
13827 next_offset += envelope_size;
13828 _next_ordinal_to_read += 1;
13829 if next_offset >= end_offset {
13830 return Ok(());
13831 }
13832
13833 while _next_ordinal_to_read < 9 {
13835 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13836 _next_ordinal_to_read += 1;
13837 next_offset += envelope_size;
13838 }
13839
13840 let next_out_of_line = decoder.next_out_of_line();
13841 let handles_before = decoder.remaining_handles();
13842 if let Some((inlined, num_bytes, num_handles)) =
13843 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13844 {
13845 let member_inline_size =
13846 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13847 if inlined != (member_inline_size <= 4) {
13848 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13849 }
13850 let inner_offset;
13851 let mut inner_depth = depth.clone();
13852 if inlined {
13853 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13854 inner_offset = next_offset;
13855 } else {
13856 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13857 inner_depth.increment()?;
13858 }
13859 let val_ref = self.channel.get_or_insert_with(|| fidl::new_empty!(u16, D));
13860 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
13861 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13862 {
13863 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13864 }
13865 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13866 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13867 }
13868 }
13869
13870 next_offset += envelope_size;
13871 _next_ordinal_to_read += 1;
13872 if next_offset >= end_offset {
13873 return Ok(());
13874 }
13875
13876 while _next_ordinal_to_read < 10 {
13878 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13879 _next_ordinal_to_read += 1;
13880 next_offset += envelope_size;
13881 }
13882
13883 let next_out_of_line = decoder.next_out_of_line();
13884 let handles_before = decoder.remaining_handles();
13885 if let Some((inlined, num_bytes, num_handles)) =
13886 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13887 {
13888 let member_inline_size =
13889 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13890 if inlined != (member_inline_size <= 4) {
13891 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13892 }
13893 let inner_offset;
13894 let mut inner_depth = depth.clone();
13895 if inlined {
13896 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13897 inner_offset = next_offset;
13898 } else {
13899 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13900 inner_depth.increment()?;
13901 }
13902 let val_ref = self.wakeup_channel.get_or_insert_with(|| fidl::new_empty!(u16, D));
13903 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
13904 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13905 {
13906 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13907 }
13908 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13909 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13910 }
13911 }
13912
13913 next_offset += envelope_size;
13914 _next_ordinal_to_read += 1;
13915 if next_offset >= end_offset {
13916 return Ok(());
13917 }
13918
13919 while _next_ordinal_to_read < 11 {
13921 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13922 _next_ordinal_to_read += 1;
13923 next_offset += envelope_size;
13924 }
13925
13926 let next_out_of_line = decoder.next_out_of_line();
13927 let handles_before = decoder.remaining_handles();
13928 if let Some((inlined, num_bytes, num_handles)) =
13929 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13930 {
13931 let member_inline_size =
13932 <fidl::encoding::Vector<u8, 16> as fidl::encoding::TypeMarker>::inline_size(
13933 decoder.context,
13934 );
13935 if inlined != (member_inline_size <= 4) {
13936 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13937 }
13938 let inner_offset;
13939 let mut inner_depth = depth.clone();
13940 if inlined {
13941 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13942 inner_offset = next_offset;
13943 } else {
13944 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13945 inner_depth.increment()?;
13946 }
13947 let val_ref = self
13948 .pskc
13949 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 16>, D));
13950 fidl::decode!(fidl::encoding::Vector<u8, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
13951 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13952 {
13953 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13954 }
13955 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13956 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13957 }
13958 }
13959
13960 next_offset += envelope_size;
13961 _next_ordinal_to_read += 1;
13962 if next_offset >= end_offset {
13963 return Ok(());
13964 }
13965
13966 while _next_ordinal_to_read < 12 {
13968 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13969 _next_ordinal_to_read += 1;
13970 next_offset += envelope_size;
13971 }
13972
13973 let next_out_of_line = decoder.next_out_of_line();
13974 let handles_before = decoder.remaining_handles();
13975 if let Some((inlined, num_bytes, num_handles)) =
13976 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13977 {
13978 let member_inline_size =
13979 <SecurityPolicy as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13980 if inlined != (member_inline_size <= 4) {
13981 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13982 }
13983 let inner_offset;
13984 let mut inner_depth = depth.clone();
13985 if inlined {
13986 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13987 inner_offset = next_offset;
13988 } else {
13989 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13990 inner_depth.increment()?;
13991 }
13992 let val_ref =
13993 self.security_policy.get_or_insert_with(|| fidl::new_empty!(SecurityPolicy, D));
13994 fidl::decode!(SecurityPolicy, D, val_ref, decoder, inner_offset, inner_depth)?;
13995 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13996 {
13997 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13998 }
13999 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14000 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14001 }
14002 }
14003
14004 next_offset += envelope_size;
14005 _next_ordinal_to_read += 1;
14006 if next_offset >= end_offset {
14007 return Ok(());
14008 }
14009
14010 while _next_ordinal_to_read < 13 {
14012 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14013 _next_ordinal_to_read += 1;
14014 next_offset += envelope_size;
14015 }
14016
14017 let next_out_of_line = decoder.next_out_of_line();
14018 let handles_before = decoder.remaining_handles();
14019 if let Some((inlined, num_bytes, num_handles)) =
14020 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14021 {
14022 let member_inline_size =
14023 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14024 if inlined != (member_inline_size <= 4) {
14025 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14026 }
14027 let inner_offset;
14028 let mut inner_depth = depth.clone();
14029 if inlined {
14030 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14031 inner_offset = next_offset;
14032 } else {
14033 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14034 inner_depth.increment()?;
14035 }
14036 let val_ref = self.channel_mask.get_or_insert_with(|| fidl::new_empty!(u32, D));
14037 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
14038 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14039 {
14040 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14041 }
14042 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14043 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14044 }
14045 }
14046
14047 next_offset += envelope_size;
14048
14049 while next_offset < end_offset {
14051 _next_ordinal_to_read += 1;
14052 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14053 next_offset += envelope_size;
14054 }
14055
14056 Ok(())
14057 }
14058 }
14059
14060 impl PdProcessedRaInfo {
14061 #[inline(always)]
14062 fn max_ordinal_present(&self) -> u64 {
14063 if let Some(_) = self.last_platform_ra_msec {
14064 return 3;
14065 }
14066 if let Some(_) = self.num_platform_pio_processed {
14067 return 2;
14068 }
14069 if let Some(_) = self.num_platform_ra_received {
14070 return 1;
14071 }
14072 0
14073 }
14074 }
14075
14076 impl fidl::encoding::ValueTypeMarker for PdProcessedRaInfo {
14077 type Borrowed<'a> = &'a Self;
14078 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14079 value
14080 }
14081 }
14082
14083 unsafe impl fidl::encoding::TypeMarker for PdProcessedRaInfo {
14084 type Owned = Self;
14085
14086 #[inline(always)]
14087 fn inline_align(_context: fidl::encoding::Context) -> usize {
14088 8
14089 }
14090
14091 #[inline(always)]
14092 fn inline_size(_context: fidl::encoding::Context) -> usize {
14093 16
14094 }
14095 }
14096
14097 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PdProcessedRaInfo, D>
14098 for &PdProcessedRaInfo
14099 {
14100 unsafe fn encode(
14101 self,
14102 encoder: &mut fidl::encoding::Encoder<'_, D>,
14103 offset: usize,
14104 mut depth: fidl::encoding::Depth,
14105 ) -> fidl::Result<()> {
14106 encoder.debug_check_bounds::<PdProcessedRaInfo>(offset);
14107 let max_ordinal: u64 = self.max_ordinal_present();
14109 encoder.write_num(max_ordinal, offset);
14110 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14111 if max_ordinal == 0 {
14113 return Ok(());
14114 }
14115 depth.increment()?;
14116 let envelope_size = 8;
14117 let bytes_len = max_ordinal as usize * envelope_size;
14118 #[allow(unused_variables)]
14119 let offset = encoder.out_of_line_offset(bytes_len);
14120 let mut _prev_end_offset: usize = 0;
14121 if 1 > max_ordinal {
14122 return Ok(());
14123 }
14124
14125 let cur_offset: usize = (1 - 1) * envelope_size;
14128
14129 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14131
14132 fidl::encoding::encode_in_envelope_optional::<u32, D>(
14137 self.num_platform_ra_received
14138 .as_ref()
14139 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
14140 encoder,
14141 offset + cur_offset,
14142 depth,
14143 )?;
14144
14145 _prev_end_offset = cur_offset + envelope_size;
14146 if 2 > max_ordinal {
14147 return Ok(());
14148 }
14149
14150 let cur_offset: usize = (2 - 1) * envelope_size;
14153
14154 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14156
14157 fidl::encoding::encode_in_envelope_optional::<u32, D>(
14162 self.num_platform_pio_processed
14163 .as_ref()
14164 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
14165 encoder,
14166 offset + cur_offset,
14167 depth,
14168 )?;
14169
14170 _prev_end_offset = cur_offset + envelope_size;
14171 if 3 > max_ordinal {
14172 return Ok(());
14173 }
14174
14175 let cur_offset: usize = (3 - 1) * envelope_size;
14178
14179 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14181
14182 fidl::encoding::encode_in_envelope_optional::<u32, D>(
14187 self.last_platform_ra_msec
14188 .as_ref()
14189 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
14190 encoder,
14191 offset + cur_offset,
14192 depth,
14193 )?;
14194
14195 _prev_end_offset = cur_offset + envelope_size;
14196
14197 Ok(())
14198 }
14199 }
14200
14201 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PdProcessedRaInfo {
14202 #[inline(always)]
14203 fn new_empty() -> Self {
14204 Self::default()
14205 }
14206
14207 unsafe fn decode(
14208 &mut self,
14209 decoder: &mut fidl::encoding::Decoder<'_, D>,
14210 offset: usize,
14211 mut depth: fidl::encoding::Depth,
14212 ) -> fidl::Result<()> {
14213 decoder.debug_check_bounds::<Self>(offset);
14214 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14215 None => return Err(fidl::Error::NotNullable),
14216 Some(len) => len,
14217 };
14218 if len == 0 {
14220 return Ok(());
14221 };
14222 depth.increment()?;
14223 let envelope_size = 8;
14224 let bytes_len = len * envelope_size;
14225 let offset = decoder.out_of_line_offset(bytes_len)?;
14226 let mut _next_ordinal_to_read = 0;
14228 let mut next_offset = offset;
14229 let end_offset = offset + bytes_len;
14230 _next_ordinal_to_read += 1;
14231 if next_offset >= end_offset {
14232 return Ok(());
14233 }
14234
14235 while _next_ordinal_to_read < 1 {
14237 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14238 _next_ordinal_to_read += 1;
14239 next_offset += envelope_size;
14240 }
14241
14242 let next_out_of_line = decoder.next_out_of_line();
14243 let handles_before = decoder.remaining_handles();
14244 if let Some((inlined, num_bytes, num_handles)) =
14245 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14246 {
14247 let member_inline_size =
14248 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14249 if inlined != (member_inline_size <= 4) {
14250 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14251 }
14252 let inner_offset;
14253 let mut inner_depth = depth.clone();
14254 if inlined {
14255 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14256 inner_offset = next_offset;
14257 } else {
14258 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14259 inner_depth.increment()?;
14260 }
14261 let val_ref =
14262 self.num_platform_ra_received.get_or_insert_with(|| fidl::new_empty!(u32, D));
14263 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
14264 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14265 {
14266 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14267 }
14268 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14269 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14270 }
14271 }
14272
14273 next_offset += envelope_size;
14274 _next_ordinal_to_read += 1;
14275 if next_offset >= end_offset {
14276 return Ok(());
14277 }
14278
14279 while _next_ordinal_to_read < 2 {
14281 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14282 _next_ordinal_to_read += 1;
14283 next_offset += envelope_size;
14284 }
14285
14286 let next_out_of_line = decoder.next_out_of_line();
14287 let handles_before = decoder.remaining_handles();
14288 if let Some((inlined, num_bytes, num_handles)) =
14289 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14290 {
14291 let member_inline_size =
14292 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14293 if inlined != (member_inline_size <= 4) {
14294 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14295 }
14296 let inner_offset;
14297 let mut inner_depth = depth.clone();
14298 if inlined {
14299 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14300 inner_offset = next_offset;
14301 } else {
14302 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14303 inner_depth.increment()?;
14304 }
14305 let val_ref =
14306 self.num_platform_pio_processed.get_or_insert_with(|| fidl::new_empty!(u32, D));
14307 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
14308 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14309 {
14310 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14311 }
14312 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14313 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14314 }
14315 }
14316
14317 next_offset += envelope_size;
14318 _next_ordinal_to_read += 1;
14319 if next_offset >= end_offset {
14320 return Ok(());
14321 }
14322
14323 while _next_ordinal_to_read < 3 {
14325 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14326 _next_ordinal_to_read += 1;
14327 next_offset += envelope_size;
14328 }
14329
14330 let next_out_of_line = decoder.next_out_of_line();
14331 let handles_before = decoder.remaining_handles();
14332 if let Some((inlined, num_bytes, num_handles)) =
14333 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14334 {
14335 let member_inline_size =
14336 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14337 if inlined != (member_inline_size <= 4) {
14338 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14339 }
14340 let inner_offset;
14341 let mut inner_depth = depth.clone();
14342 if inlined {
14343 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14344 inner_offset = next_offset;
14345 } else {
14346 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14347 inner_depth.increment()?;
14348 }
14349 let val_ref =
14350 self.last_platform_ra_msec.get_or_insert_with(|| fidl::new_empty!(u32, D));
14351 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
14352 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14353 {
14354 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14355 }
14356 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14357 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14358 }
14359 }
14360
14361 next_offset += envelope_size;
14362
14363 while next_offset < end_offset {
14365 _next_ordinal_to_read += 1;
14366 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14367 next_offset += envelope_size;
14368 }
14369
14370 Ok(())
14371 }
14372 }
14373
14374 impl RadioLinkInfo {
14375 #[inline(always)]
14376 fn max_ordinal_present(&self) -> u64 {
14377 if let Some(_) = self.preference {
14378 return 2;
14379 }
14380 if let Some(_) = self.link_type {
14381 return 1;
14382 }
14383 0
14384 }
14385 }
14386
14387 impl fidl::encoding::ValueTypeMarker for RadioLinkInfo {
14388 type Borrowed<'a> = &'a Self;
14389 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14390 value
14391 }
14392 }
14393
14394 unsafe impl fidl::encoding::TypeMarker for RadioLinkInfo {
14395 type Owned = Self;
14396
14397 #[inline(always)]
14398 fn inline_align(_context: fidl::encoding::Context) -> usize {
14399 8
14400 }
14401
14402 #[inline(always)]
14403 fn inline_size(_context: fidl::encoding::Context) -> usize {
14404 16
14405 }
14406 }
14407
14408 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RadioLinkInfo, D>
14409 for &RadioLinkInfo
14410 {
14411 unsafe fn encode(
14412 self,
14413 encoder: &mut fidl::encoding::Encoder<'_, D>,
14414 offset: usize,
14415 mut depth: fidl::encoding::Depth,
14416 ) -> fidl::Result<()> {
14417 encoder.debug_check_bounds::<RadioLinkInfo>(offset);
14418 let max_ordinal: u64 = self.max_ordinal_present();
14420 encoder.write_num(max_ordinal, offset);
14421 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14422 if max_ordinal == 0 {
14424 return Ok(());
14425 }
14426 depth.increment()?;
14427 let envelope_size = 8;
14428 let bytes_len = max_ordinal as usize * envelope_size;
14429 #[allow(unused_variables)]
14430 let offset = encoder.out_of_line_offset(bytes_len);
14431 let mut _prev_end_offset: usize = 0;
14432 if 1 > max_ordinal {
14433 return Ok(());
14434 }
14435
14436 let cur_offset: usize = (1 - 1) * envelope_size;
14439
14440 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14442
14443 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<10>, D>(
14448 self.link_type.as_ref().map(
14449 <fidl::encoding::BoundedString<10> as fidl::encoding::ValueTypeMarker>::borrow,
14450 ),
14451 encoder,
14452 offset + cur_offset,
14453 depth,
14454 )?;
14455
14456 _prev_end_offset = cur_offset + envelope_size;
14457 if 2 > max_ordinal {
14458 return Ok(());
14459 }
14460
14461 let cur_offset: usize = (2 - 1) * envelope_size;
14464
14465 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14467
14468 fidl::encoding::encode_in_envelope_optional::<u8, D>(
14473 self.preference.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
14474 encoder,
14475 offset + cur_offset,
14476 depth,
14477 )?;
14478
14479 _prev_end_offset = cur_offset + envelope_size;
14480
14481 Ok(())
14482 }
14483 }
14484
14485 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RadioLinkInfo {
14486 #[inline(always)]
14487 fn new_empty() -> Self {
14488 Self::default()
14489 }
14490
14491 unsafe fn decode(
14492 &mut self,
14493 decoder: &mut fidl::encoding::Decoder<'_, D>,
14494 offset: usize,
14495 mut depth: fidl::encoding::Depth,
14496 ) -> fidl::Result<()> {
14497 decoder.debug_check_bounds::<Self>(offset);
14498 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14499 None => return Err(fidl::Error::NotNullable),
14500 Some(len) => len,
14501 };
14502 if len == 0 {
14504 return Ok(());
14505 };
14506 depth.increment()?;
14507 let envelope_size = 8;
14508 let bytes_len = len * envelope_size;
14509 let offset = decoder.out_of_line_offset(bytes_len)?;
14510 let mut _next_ordinal_to_read = 0;
14512 let mut next_offset = offset;
14513 let end_offset = offset + bytes_len;
14514 _next_ordinal_to_read += 1;
14515 if next_offset >= end_offset {
14516 return Ok(());
14517 }
14518
14519 while _next_ordinal_to_read < 1 {
14521 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14522 _next_ordinal_to_read += 1;
14523 next_offset += envelope_size;
14524 }
14525
14526 let next_out_of_line = decoder.next_out_of_line();
14527 let handles_before = decoder.remaining_handles();
14528 if let Some((inlined, num_bytes, num_handles)) =
14529 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14530 {
14531 let member_inline_size =
14532 <fidl::encoding::BoundedString<10> as fidl::encoding::TypeMarker>::inline_size(
14533 decoder.context,
14534 );
14535 if inlined != (member_inline_size <= 4) {
14536 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14537 }
14538 let inner_offset;
14539 let mut inner_depth = depth.clone();
14540 if inlined {
14541 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14542 inner_offset = next_offset;
14543 } else {
14544 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14545 inner_depth.increment()?;
14546 }
14547 let val_ref = self
14548 .link_type
14549 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<10>, D));
14550 fidl::decode!(
14551 fidl::encoding::BoundedString<10>,
14552 D,
14553 val_ref,
14554 decoder,
14555 inner_offset,
14556 inner_depth
14557 )?;
14558 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14559 {
14560 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14561 }
14562 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14563 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14564 }
14565 }
14566
14567 next_offset += envelope_size;
14568 _next_ordinal_to_read += 1;
14569 if next_offset >= end_offset {
14570 return Ok(());
14571 }
14572
14573 while _next_ordinal_to_read < 2 {
14575 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14576 _next_ordinal_to_read += 1;
14577 next_offset += envelope_size;
14578 }
14579
14580 let next_out_of_line = decoder.next_out_of_line();
14581 let handles_before = decoder.remaining_handles();
14582 if let Some((inlined, num_bytes, num_handles)) =
14583 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14584 {
14585 let member_inline_size =
14586 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14587 if inlined != (member_inline_size <= 4) {
14588 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14589 }
14590 let inner_offset;
14591 let mut inner_depth = depth.clone();
14592 if inlined {
14593 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14594 inner_offset = next_offset;
14595 } else {
14596 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14597 inner_depth.increment()?;
14598 }
14599 let val_ref = self.preference.get_or_insert_with(|| fidl::new_empty!(u8, D));
14600 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14601 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14602 {
14603 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14604 }
14605 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14606 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14607 }
14608 }
14609
14610 next_offset += envelope_size;
14611
14612 while next_offset < end_offset {
14614 _next_ordinal_to_read += 1;
14615 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14616 next_offset += envelope_size;
14617 }
14618
14619 Ok(())
14620 }
14621 }
14622
14623 impl RouterInfo {
14624 #[inline(always)]
14625 fn max_ordinal_present(&self) -> u64 {
14626 if let Some(_) = self.link_established {
14627 return 9;
14628 }
14629 if let Some(_) = self.age {
14630 return 8;
14631 }
14632 if let Some(_) = self.link_quality_out {
14633 return 7;
14634 }
14635 if let Some(_) = self.link_quality_in {
14636 return 6;
14637 }
14638 if let Some(_) = self.path_cost {
14639 return 5;
14640 }
14641 if let Some(_) = self.next_hop {
14642 return 4;
14643 }
14644 if let Some(_) = self.router_id {
14645 return 3;
14646 }
14647 if let Some(_) = self.thread_rloc {
14648 return 2;
14649 }
14650 if let Some(_) = self.extended_address {
14651 return 1;
14652 }
14653 0
14654 }
14655 }
14656
14657 impl fidl::encoding::ValueTypeMarker for RouterInfo {
14658 type Borrowed<'a> = &'a Self;
14659 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14660 value
14661 }
14662 }
14663
14664 unsafe impl fidl::encoding::TypeMarker for RouterInfo {
14665 type Owned = Self;
14666
14667 #[inline(always)]
14668 fn inline_align(_context: fidl::encoding::Context) -> usize {
14669 8
14670 }
14671
14672 #[inline(always)]
14673 fn inline_size(_context: fidl::encoding::Context) -> usize {
14674 16
14675 }
14676 }
14677
14678 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RouterInfo, D>
14679 for &RouterInfo
14680 {
14681 unsafe fn encode(
14682 self,
14683 encoder: &mut fidl::encoding::Encoder<'_, D>,
14684 offset: usize,
14685 mut depth: fidl::encoding::Depth,
14686 ) -> fidl::Result<()> {
14687 encoder.debug_check_bounds::<RouterInfo>(offset);
14688 let max_ordinal: u64 = self.max_ordinal_present();
14690 encoder.write_num(max_ordinal, offset);
14691 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14692 if max_ordinal == 0 {
14694 return Ok(());
14695 }
14696 depth.increment()?;
14697 let envelope_size = 8;
14698 let bytes_len = max_ordinal as usize * envelope_size;
14699 #[allow(unused_variables)]
14700 let offset = encoder.out_of_line_offset(bytes_len);
14701 let mut _prev_end_offset: usize = 0;
14702 if 1 > max_ordinal {
14703 return Ok(());
14704 }
14705
14706 let cur_offset: usize = (1 - 1) * envelope_size;
14709
14710 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14712
14713 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
14718 self.extended_address.as_ref().map(
14719 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
14720 ),
14721 encoder,
14722 offset + cur_offset,
14723 depth,
14724 )?;
14725
14726 _prev_end_offset = cur_offset + envelope_size;
14727 if 2 > max_ordinal {
14728 return Ok(());
14729 }
14730
14731 let cur_offset: usize = (2 - 1) * envelope_size;
14734
14735 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14737
14738 fidl::encoding::encode_in_envelope_optional::<u16, D>(
14743 self.thread_rloc.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
14744 encoder,
14745 offset + cur_offset,
14746 depth,
14747 )?;
14748
14749 _prev_end_offset = cur_offset + envelope_size;
14750 if 3 > max_ordinal {
14751 return Ok(());
14752 }
14753
14754 let cur_offset: usize = (3 - 1) * envelope_size;
14757
14758 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14760
14761 fidl::encoding::encode_in_envelope_optional::<u8, D>(
14766 self.router_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
14767 encoder,
14768 offset + cur_offset,
14769 depth,
14770 )?;
14771
14772 _prev_end_offset = cur_offset + envelope_size;
14773 if 4 > max_ordinal {
14774 return Ok(());
14775 }
14776
14777 let cur_offset: usize = (4 - 1) * envelope_size;
14780
14781 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14783
14784 fidl::encoding::encode_in_envelope_optional::<u8, D>(
14789 self.next_hop.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
14790 encoder,
14791 offset + cur_offset,
14792 depth,
14793 )?;
14794
14795 _prev_end_offset = cur_offset + envelope_size;
14796 if 5 > max_ordinal {
14797 return Ok(());
14798 }
14799
14800 let cur_offset: usize = (5 - 1) * envelope_size;
14803
14804 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14806
14807 fidl::encoding::encode_in_envelope_optional::<u8, D>(
14812 self.path_cost.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
14813 encoder,
14814 offset + cur_offset,
14815 depth,
14816 )?;
14817
14818 _prev_end_offset = cur_offset + envelope_size;
14819 if 6 > max_ordinal {
14820 return Ok(());
14821 }
14822
14823 let cur_offset: usize = (6 - 1) * envelope_size;
14826
14827 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14829
14830 fidl::encoding::encode_in_envelope_optional::<u8, D>(
14835 self.link_quality_in.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
14836 encoder,
14837 offset + cur_offset,
14838 depth,
14839 )?;
14840
14841 _prev_end_offset = cur_offset + envelope_size;
14842 if 7 > max_ordinal {
14843 return Ok(());
14844 }
14845
14846 let cur_offset: usize = (7 - 1) * envelope_size;
14849
14850 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14852
14853 fidl::encoding::encode_in_envelope_optional::<u8, D>(
14858 self.link_quality_out.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
14859 encoder,
14860 offset + cur_offset,
14861 depth,
14862 )?;
14863
14864 _prev_end_offset = cur_offset + envelope_size;
14865 if 8 > max_ordinal {
14866 return Ok(());
14867 }
14868
14869 let cur_offset: usize = (8 - 1) * envelope_size;
14872
14873 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14875
14876 fidl::encoding::encode_in_envelope_optional::<i64, D>(
14881 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
14882 encoder,
14883 offset + cur_offset,
14884 depth,
14885 )?;
14886
14887 _prev_end_offset = cur_offset + envelope_size;
14888 if 9 > max_ordinal {
14889 return Ok(());
14890 }
14891
14892 let cur_offset: usize = (9 - 1) * envelope_size;
14895
14896 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14898
14899 fidl::encoding::encode_in_envelope_optional::<bool, D>(
14904 self.link_established
14905 .as_ref()
14906 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
14907 encoder,
14908 offset + cur_offset,
14909 depth,
14910 )?;
14911
14912 _prev_end_offset = cur_offset + envelope_size;
14913
14914 Ok(())
14915 }
14916 }
14917
14918 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RouterInfo {
14919 #[inline(always)]
14920 fn new_empty() -> Self {
14921 Self::default()
14922 }
14923
14924 unsafe fn decode(
14925 &mut self,
14926 decoder: &mut fidl::encoding::Decoder<'_, D>,
14927 offset: usize,
14928 mut depth: fidl::encoding::Depth,
14929 ) -> fidl::Result<()> {
14930 decoder.debug_check_bounds::<Self>(offset);
14931 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14932 None => return Err(fidl::Error::NotNullable),
14933 Some(len) => len,
14934 };
14935 if len == 0 {
14937 return Ok(());
14938 };
14939 depth.increment()?;
14940 let envelope_size = 8;
14941 let bytes_len = len * envelope_size;
14942 let offset = decoder.out_of_line_offset(bytes_len)?;
14943 let mut _next_ordinal_to_read = 0;
14945 let mut next_offset = offset;
14946 let end_offset = offset + bytes_len;
14947 _next_ordinal_to_read += 1;
14948 if next_offset >= end_offset {
14949 return Ok(());
14950 }
14951
14952 while _next_ordinal_to_read < 1 {
14954 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14955 _next_ordinal_to_read += 1;
14956 next_offset += envelope_size;
14957 }
14958
14959 let next_out_of_line = decoder.next_out_of_line();
14960 let handles_before = decoder.remaining_handles();
14961 if let Some((inlined, num_bytes, num_handles)) =
14962 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14963 {
14964 let member_inline_size =
14965 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
14966 decoder.context,
14967 );
14968 if inlined != (member_inline_size <= 4) {
14969 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14970 }
14971 let inner_offset;
14972 let mut inner_depth = depth.clone();
14973 if inlined {
14974 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14975 inner_offset = next_offset;
14976 } else {
14977 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14978 inner_depth.increment()?;
14979 }
14980 let val_ref = self
14981 .extended_address
14982 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
14983 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
14984 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14985 {
14986 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14987 }
14988 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14989 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14990 }
14991 }
14992
14993 next_offset += envelope_size;
14994 _next_ordinal_to_read += 1;
14995 if next_offset >= end_offset {
14996 return Ok(());
14997 }
14998
14999 while _next_ordinal_to_read < 2 {
15001 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15002 _next_ordinal_to_read += 1;
15003 next_offset += envelope_size;
15004 }
15005
15006 let next_out_of_line = decoder.next_out_of_line();
15007 let handles_before = decoder.remaining_handles();
15008 if let Some((inlined, num_bytes, num_handles)) =
15009 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15010 {
15011 let member_inline_size =
15012 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15013 if inlined != (member_inline_size <= 4) {
15014 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15015 }
15016 let inner_offset;
15017 let mut inner_depth = depth.clone();
15018 if inlined {
15019 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15020 inner_offset = next_offset;
15021 } else {
15022 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15023 inner_depth.increment()?;
15024 }
15025 let val_ref = self.thread_rloc.get_or_insert_with(|| fidl::new_empty!(u16, D));
15026 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
15027 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15028 {
15029 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15030 }
15031 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15032 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15033 }
15034 }
15035
15036 next_offset += envelope_size;
15037 _next_ordinal_to_read += 1;
15038 if next_offset >= end_offset {
15039 return Ok(());
15040 }
15041
15042 while _next_ordinal_to_read < 3 {
15044 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15045 _next_ordinal_to_read += 1;
15046 next_offset += envelope_size;
15047 }
15048
15049 let next_out_of_line = decoder.next_out_of_line();
15050 let handles_before = decoder.remaining_handles();
15051 if let Some((inlined, num_bytes, num_handles)) =
15052 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15053 {
15054 let member_inline_size =
15055 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15056 if inlined != (member_inline_size <= 4) {
15057 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15058 }
15059 let inner_offset;
15060 let mut inner_depth = depth.clone();
15061 if inlined {
15062 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15063 inner_offset = next_offset;
15064 } else {
15065 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15066 inner_depth.increment()?;
15067 }
15068 let val_ref = self.router_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
15069 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
15070 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15071 {
15072 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15073 }
15074 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15075 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15076 }
15077 }
15078
15079 next_offset += envelope_size;
15080 _next_ordinal_to_read += 1;
15081 if next_offset >= end_offset {
15082 return Ok(());
15083 }
15084
15085 while _next_ordinal_to_read < 4 {
15087 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15088 _next_ordinal_to_read += 1;
15089 next_offset += envelope_size;
15090 }
15091
15092 let next_out_of_line = decoder.next_out_of_line();
15093 let handles_before = decoder.remaining_handles();
15094 if let Some((inlined, num_bytes, num_handles)) =
15095 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15096 {
15097 let member_inline_size =
15098 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15099 if inlined != (member_inline_size <= 4) {
15100 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15101 }
15102 let inner_offset;
15103 let mut inner_depth = depth.clone();
15104 if inlined {
15105 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15106 inner_offset = next_offset;
15107 } else {
15108 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15109 inner_depth.increment()?;
15110 }
15111 let val_ref = self.next_hop.get_or_insert_with(|| fidl::new_empty!(u8, D));
15112 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
15113 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15114 {
15115 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15116 }
15117 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15118 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15119 }
15120 }
15121
15122 next_offset += envelope_size;
15123 _next_ordinal_to_read += 1;
15124 if next_offset >= end_offset {
15125 return Ok(());
15126 }
15127
15128 while _next_ordinal_to_read < 5 {
15130 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15131 _next_ordinal_to_read += 1;
15132 next_offset += envelope_size;
15133 }
15134
15135 let next_out_of_line = decoder.next_out_of_line();
15136 let handles_before = decoder.remaining_handles();
15137 if let Some((inlined, num_bytes, num_handles)) =
15138 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15139 {
15140 let member_inline_size =
15141 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15142 if inlined != (member_inline_size <= 4) {
15143 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15144 }
15145 let inner_offset;
15146 let mut inner_depth = depth.clone();
15147 if inlined {
15148 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15149 inner_offset = next_offset;
15150 } else {
15151 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15152 inner_depth.increment()?;
15153 }
15154 let val_ref = self.path_cost.get_or_insert_with(|| fidl::new_empty!(u8, D));
15155 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
15156 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15157 {
15158 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15159 }
15160 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15161 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15162 }
15163 }
15164
15165 next_offset += envelope_size;
15166 _next_ordinal_to_read += 1;
15167 if next_offset >= end_offset {
15168 return Ok(());
15169 }
15170
15171 while _next_ordinal_to_read < 6 {
15173 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15174 _next_ordinal_to_read += 1;
15175 next_offset += envelope_size;
15176 }
15177
15178 let next_out_of_line = decoder.next_out_of_line();
15179 let handles_before = decoder.remaining_handles();
15180 if let Some((inlined, num_bytes, num_handles)) =
15181 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15182 {
15183 let member_inline_size =
15184 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15185 if inlined != (member_inline_size <= 4) {
15186 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15187 }
15188 let inner_offset;
15189 let mut inner_depth = depth.clone();
15190 if inlined {
15191 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15192 inner_offset = next_offset;
15193 } else {
15194 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15195 inner_depth.increment()?;
15196 }
15197 let val_ref = self.link_quality_in.get_or_insert_with(|| fidl::new_empty!(u8, D));
15198 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
15199 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15200 {
15201 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15202 }
15203 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15204 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15205 }
15206 }
15207
15208 next_offset += envelope_size;
15209 _next_ordinal_to_read += 1;
15210 if next_offset >= end_offset {
15211 return Ok(());
15212 }
15213
15214 while _next_ordinal_to_read < 7 {
15216 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15217 _next_ordinal_to_read += 1;
15218 next_offset += envelope_size;
15219 }
15220
15221 let next_out_of_line = decoder.next_out_of_line();
15222 let handles_before = decoder.remaining_handles();
15223 if let Some((inlined, num_bytes, num_handles)) =
15224 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15225 {
15226 let member_inline_size =
15227 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15228 if inlined != (member_inline_size <= 4) {
15229 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15230 }
15231 let inner_offset;
15232 let mut inner_depth = depth.clone();
15233 if inlined {
15234 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15235 inner_offset = next_offset;
15236 } else {
15237 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15238 inner_depth.increment()?;
15239 }
15240 let val_ref = self.link_quality_out.get_or_insert_with(|| fidl::new_empty!(u8, D));
15241 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
15242 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15243 {
15244 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15245 }
15246 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15247 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15248 }
15249 }
15250
15251 next_offset += envelope_size;
15252 _next_ordinal_to_read += 1;
15253 if next_offset >= end_offset {
15254 return Ok(());
15255 }
15256
15257 while _next_ordinal_to_read < 8 {
15259 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15260 _next_ordinal_to_read += 1;
15261 next_offset += envelope_size;
15262 }
15263
15264 let next_out_of_line = decoder.next_out_of_line();
15265 let handles_before = decoder.remaining_handles();
15266 if let Some((inlined, num_bytes, num_handles)) =
15267 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15268 {
15269 let member_inline_size =
15270 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15271 if inlined != (member_inline_size <= 4) {
15272 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15273 }
15274 let inner_offset;
15275 let mut inner_depth = depth.clone();
15276 if inlined {
15277 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15278 inner_offset = next_offset;
15279 } else {
15280 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15281 inner_depth.increment()?;
15282 }
15283 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
15284 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
15285 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15286 {
15287 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15288 }
15289 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15290 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15291 }
15292 }
15293
15294 next_offset += envelope_size;
15295 _next_ordinal_to_read += 1;
15296 if next_offset >= end_offset {
15297 return Ok(());
15298 }
15299
15300 while _next_ordinal_to_read < 9 {
15302 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15303 _next_ordinal_to_read += 1;
15304 next_offset += envelope_size;
15305 }
15306
15307 let next_out_of_line = decoder.next_out_of_line();
15308 let handles_before = decoder.remaining_handles();
15309 if let Some((inlined, num_bytes, num_handles)) =
15310 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15311 {
15312 let member_inline_size =
15313 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15314 if inlined != (member_inline_size <= 4) {
15315 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15316 }
15317 let inner_offset;
15318 let mut inner_depth = depth.clone();
15319 if inlined {
15320 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15321 inner_offset = next_offset;
15322 } else {
15323 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15324 inner_depth.increment()?;
15325 }
15326 let val_ref =
15327 self.link_established.get_or_insert_with(|| fidl::new_empty!(bool, D));
15328 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
15329 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15330 {
15331 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15332 }
15333 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15334 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15335 }
15336 }
15337
15338 next_offset += envelope_size;
15339
15340 while next_offset < end_offset {
15342 _next_ordinal_to_read += 1;
15343 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15344 next_offset += envelope_size;
15345 }
15346
15347 Ok(())
15348 }
15349 }
15350
15351 impl SecurityPolicy {
15352 #[inline(always)]
15353 fn max_ordinal_present(&self) -> u64 {
15354 if let Some(_) = self.version_threshold_for_routing {
15355 return 10;
15356 }
15357 if let Some(_) = self.nonccm_routers_enabled {
15358 return 9;
15359 }
15360 if let Some(_) = self.toble_link_enabled {
15361 return 8;
15362 }
15363 if let Some(_) = self.network_key_provisioning_enabled {
15364 return 7;
15365 }
15366 if let Some(_) = self.autonomous_enrollment_enabled {
15367 return 6;
15368 }
15369 if let Some(_) = self.external_commissioning_enabled {
15370 return 5;
15371 }
15372 if let Some(_) = self.routers_enabled {
15373 return 4;
15374 }
15375 if let Some(_) = self.native_commissioning_enabled {
15376 return 3;
15377 }
15378 if let Some(_) = self.obtain_network_key_enabled {
15379 return 2;
15380 }
15381 if let Some(_) = self.rotation_time {
15382 return 1;
15383 }
15384 0
15385 }
15386 }
15387
15388 impl fidl::encoding::ValueTypeMarker for SecurityPolicy {
15389 type Borrowed<'a> = &'a Self;
15390 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15391 value
15392 }
15393 }
15394
15395 unsafe impl fidl::encoding::TypeMarker for SecurityPolicy {
15396 type Owned = Self;
15397
15398 #[inline(always)]
15399 fn inline_align(_context: fidl::encoding::Context) -> usize {
15400 8
15401 }
15402
15403 #[inline(always)]
15404 fn inline_size(_context: fidl::encoding::Context) -> usize {
15405 16
15406 }
15407 }
15408
15409 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SecurityPolicy, D>
15410 for &SecurityPolicy
15411 {
15412 unsafe fn encode(
15413 self,
15414 encoder: &mut fidl::encoding::Encoder<'_, D>,
15415 offset: usize,
15416 mut depth: fidl::encoding::Depth,
15417 ) -> fidl::Result<()> {
15418 encoder.debug_check_bounds::<SecurityPolicy>(offset);
15419 let max_ordinal: u64 = self.max_ordinal_present();
15421 encoder.write_num(max_ordinal, offset);
15422 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15423 if max_ordinal == 0 {
15425 return Ok(());
15426 }
15427 depth.increment()?;
15428 let envelope_size = 8;
15429 let bytes_len = max_ordinal as usize * envelope_size;
15430 #[allow(unused_variables)]
15431 let offset = encoder.out_of_line_offset(bytes_len);
15432 let mut _prev_end_offset: usize = 0;
15433 if 1 > max_ordinal {
15434 return Ok(());
15435 }
15436
15437 let cur_offset: usize = (1 - 1) * envelope_size;
15440
15441 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15443
15444 fidl::encoding::encode_in_envelope_optional::<u16, D>(
15449 self.rotation_time.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
15450 encoder,
15451 offset + cur_offset,
15452 depth,
15453 )?;
15454
15455 _prev_end_offset = cur_offset + envelope_size;
15456 if 2 > max_ordinal {
15457 return Ok(());
15458 }
15459
15460 let cur_offset: usize = (2 - 1) * envelope_size;
15463
15464 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15466
15467 fidl::encoding::encode_in_envelope_optional::<bool, D>(
15472 self.obtain_network_key_enabled
15473 .as_ref()
15474 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
15475 encoder,
15476 offset + cur_offset,
15477 depth,
15478 )?;
15479
15480 _prev_end_offset = cur_offset + envelope_size;
15481 if 3 > max_ordinal {
15482 return Ok(());
15483 }
15484
15485 let cur_offset: usize = (3 - 1) * envelope_size;
15488
15489 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15491
15492 fidl::encoding::encode_in_envelope_optional::<bool, D>(
15497 self.native_commissioning_enabled
15498 .as_ref()
15499 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
15500 encoder,
15501 offset + cur_offset,
15502 depth,
15503 )?;
15504
15505 _prev_end_offset = cur_offset + envelope_size;
15506 if 4 > max_ordinal {
15507 return Ok(());
15508 }
15509
15510 let cur_offset: usize = (4 - 1) * envelope_size;
15513
15514 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15516
15517 fidl::encoding::encode_in_envelope_optional::<bool, D>(
15522 self.routers_enabled
15523 .as_ref()
15524 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
15525 encoder,
15526 offset + cur_offset,
15527 depth,
15528 )?;
15529
15530 _prev_end_offset = cur_offset + envelope_size;
15531 if 5 > max_ordinal {
15532 return Ok(());
15533 }
15534
15535 let cur_offset: usize = (5 - 1) * envelope_size;
15538
15539 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15541
15542 fidl::encoding::encode_in_envelope_optional::<bool, D>(
15547 self.external_commissioning_enabled
15548 .as_ref()
15549 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
15550 encoder,
15551 offset + cur_offset,
15552 depth,
15553 )?;
15554
15555 _prev_end_offset = cur_offset + envelope_size;
15556 if 6 > max_ordinal {
15557 return Ok(());
15558 }
15559
15560 let cur_offset: usize = (6 - 1) * envelope_size;
15563
15564 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15566
15567 fidl::encoding::encode_in_envelope_optional::<bool, D>(
15572 self.autonomous_enrollment_enabled
15573 .as_ref()
15574 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
15575 encoder,
15576 offset + cur_offset,
15577 depth,
15578 )?;
15579
15580 _prev_end_offset = cur_offset + envelope_size;
15581 if 7 > max_ordinal {
15582 return Ok(());
15583 }
15584
15585 let cur_offset: usize = (7 - 1) * envelope_size;
15588
15589 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15591
15592 fidl::encoding::encode_in_envelope_optional::<bool, D>(
15597 self.network_key_provisioning_enabled
15598 .as_ref()
15599 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
15600 encoder,
15601 offset + cur_offset,
15602 depth,
15603 )?;
15604
15605 _prev_end_offset = cur_offset + envelope_size;
15606 if 8 > max_ordinal {
15607 return Ok(());
15608 }
15609
15610 let cur_offset: usize = (8 - 1) * envelope_size;
15613
15614 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15616
15617 fidl::encoding::encode_in_envelope_optional::<bool, D>(
15622 self.toble_link_enabled
15623 .as_ref()
15624 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
15625 encoder,
15626 offset + cur_offset,
15627 depth,
15628 )?;
15629
15630 _prev_end_offset = cur_offset + envelope_size;
15631 if 9 > max_ordinal {
15632 return Ok(());
15633 }
15634
15635 let cur_offset: usize = (9 - 1) * envelope_size;
15638
15639 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15641
15642 fidl::encoding::encode_in_envelope_optional::<bool, D>(
15647 self.nonccm_routers_enabled
15648 .as_ref()
15649 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
15650 encoder,
15651 offset + cur_offset,
15652 depth,
15653 )?;
15654
15655 _prev_end_offset = cur_offset + envelope_size;
15656 if 10 > max_ordinal {
15657 return Ok(());
15658 }
15659
15660 let cur_offset: usize = (10 - 1) * envelope_size;
15663
15664 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15666
15667 fidl::encoding::encode_in_envelope_optional::<u8, D>(
15672 self.version_threshold_for_routing
15673 .as_ref()
15674 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
15675 encoder,
15676 offset + cur_offset,
15677 depth,
15678 )?;
15679
15680 _prev_end_offset = cur_offset + envelope_size;
15681
15682 Ok(())
15683 }
15684 }
15685
15686 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SecurityPolicy {
15687 #[inline(always)]
15688 fn new_empty() -> Self {
15689 Self::default()
15690 }
15691
15692 unsafe fn decode(
15693 &mut self,
15694 decoder: &mut fidl::encoding::Decoder<'_, D>,
15695 offset: usize,
15696 mut depth: fidl::encoding::Depth,
15697 ) -> fidl::Result<()> {
15698 decoder.debug_check_bounds::<Self>(offset);
15699 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15700 None => return Err(fidl::Error::NotNullable),
15701 Some(len) => len,
15702 };
15703 if len == 0 {
15705 return Ok(());
15706 };
15707 depth.increment()?;
15708 let envelope_size = 8;
15709 let bytes_len = len * envelope_size;
15710 let offset = decoder.out_of_line_offset(bytes_len)?;
15711 let mut _next_ordinal_to_read = 0;
15713 let mut next_offset = offset;
15714 let end_offset = offset + bytes_len;
15715 _next_ordinal_to_read += 1;
15716 if next_offset >= end_offset {
15717 return Ok(());
15718 }
15719
15720 while _next_ordinal_to_read < 1 {
15722 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15723 _next_ordinal_to_read += 1;
15724 next_offset += envelope_size;
15725 }
15726
15727 let next_out_of_line = decoder.next_out_of_line();
15728 let handles_before = decoder.remaining_handles();
15729 if let Some((inlined, num_bytes, num_handles)) =
15730 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15731 {
15732 let member_inline_size =
15733 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15734 if inlined != (member_inline_size <= 4) {
15735 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15736 }
15737 let inner_offset;
15738 let mut inner_depth = depth.clone();
15739 if inlined {
15740 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15741 inner_offset = next_offset;
15742 } else {
15743 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15744 inner_depth.increment()?;
15745 }
15746 let val_ref = self.rotation_time.get_or_insert_with(|| fidl::new_empty!(u16, D));
15747 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
15748 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15749 {
15750 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15751 }
15752 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15753 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15754 }
15755 }
15756
15757 next_offset += envelope_size;
15758 _next_ordinal_to_read += 1;
15759 if next_offset >= end_offset {
15760 return Ok(());
15761 }
15762
15763 while _next_ordinal_to_read < 2 {
15765 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15766 _next_ordinal_to_read += 1;
15767 next_offset += envelope_size;
15768 }
15769
15770 let next_out_of_line = decoder.next_out_of_line();
15771 let handles_before = decoder.remaining_handles();
15772 if let Some((inlined, num_bytes, num_handles)) =
15773 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15774 {
15775 let member_inline_size =
15776 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15777 if inlined != (member_inline_size <= 4) {
15778 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15779 }
15780 let inner_offset;
15781 let mut inner_depth = depth.clone();
15782 if inlined {
15783 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15784 inner_offset = next_offset;
15785 } else {
15786 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15787 inner_depth.increment()?;
15788 }
15789 let val_ref = self
15790 .obtain_network_key_enabled
15791 .get_or_insert_with(|| fidl::new_empty!(bool, D));
15792 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
15793 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15794 {
15795 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15796 }
15797 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15798 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15799 }
15800 }
15801
15802 next_offset += envelope_size;
15803 _next_ordinal_to_read += 1;
15804 if next_offset >= end_offset {
15805 return Ok(());
15806 }
15807
15808 while _next_ordinal_to_read < 3 {
15810 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15811 _next_ordinal_to_read += 1;
15812 next_offset += envelope_size;
15813 }
15814
15815 let next_out_of_line = decoder.next_out_of_line();
15816 let handles_before = decoder.remaining_handles();
15817 if let Some((inlined, num_bytes, num_handles)) =
15818 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15819 {
15820 let member_inline_size =
15821 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15822 if inlined != (member_inline_size <= 4) {
15823 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15824 }
15825 let inner_offset;
15826 let mut inner_depth = depth.clone();
15827 if inlined {
15828 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15829 inner_offset = next_offset;
15830 } else {
15831 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15832 inner_depth.increment()?;
15833 }
15834 let val_ref = self
15835 .native_commissioning_enabled
15836 .get_or_insert_with(|| fidl::new_empty!(bool, D));
15837 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
15838 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15839 {
15840 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15841 }
15842 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15843 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15844 }
15845 }
15846
15847 next_offset += envelope_size;
15848 _next_ordinal_to_read += 1;
15849 if next_offset >= end_offset {
15850 return Ok(());
15851 }
15852
15853 while _next_ordinal_to_read < 4 {
15855 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15856 _next_ordinal_to_read += 1;
15857 next_offset += envelope_size;
15858 }
15859
15860 let next_out_of_line = decoder.next_out_of_line();
15861 let handles_before = decoder.remaining_handles();
15862 if let Some((inlined, num_bytes, num_handles)) =
15863 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15864 {
15865 let member_inline_size =
15866 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15867 if inlined != (member_inline_size <= 4) {
15868 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15869 }
15870 let inner_offset;
15871 let mut inner_depth = depth.clone();
15872 if inlined {
15873 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15874 inner_offset = next_offset;
15875 } else {
15876 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15877 inner_depth.increment()?;
15878 }
15879 let val_ref = self.routers_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
15880 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
15881 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15882 {
15883 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15884 }
15885 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15886 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15887 }
15888 }
15889
15890 next_offset += envelope_size;
15891 _next_ordinal_to_read += 1;
15892 if next_offset >= end_offset {
15893 return Ok(());
15894 }
15895
15896 while _next_ordinal_to_read < 5 {
15898 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15899 _next_ordinal_to_read += 1;
15900 next_offset += envelope_size;
15901 }
15902
15903 let next_out_of_line = decoder.next_out_of_line();
15904 let handles_before = decoder.remaining_handles();
15905 if let Some((inlined, num_bytes, num_handles)) =
15906 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15907 {
15908 let member_inline_size =
15909 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15910 if inlined != (member_inline_size <= 4) {
15911 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15912 }
15913 let inner_offset;
15914 let mut inner_depth = depth.clone();
15915 if inlined {
15916 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15917 inner_offset = next_offset;
15918 } else {
15919 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15920 inner_depth.increment()?;
15921 }
15922 let val_ref = self
15923 .external_commissioning_enabled
15924 .get_or_insert_with(|| fidl::new_empty!(bool, D));
15925 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
15926 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15927 {
15928 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15929 }
15930 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15931 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15932 }
15933 }
15934
15935 next_offset += envelope_size;
15936 _next_ordinal_to_read += 1;
15937 if next_offset >= end_offset {
15938 return Ok(());
15939 }
15940
15941 while _next_ordinal_to_read < 6 {
15943 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15944 _next_ordinal_to_read += 1;
15945 next_offset += envelope_size;
15946 }
15947
15948 let next_out_of_line = decoder.next_out_of_line();
15949 let handles_before = decoder.remaining_handles();
15950 if let Some((inlined, num_bytes, num_handles)) =
15951 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15952 {
15953 let member_inline_size =
15954 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15955 if inlined != (member_inline_size <= 4) {
15956 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15957 }
15958 let inner_offset;
15959 let mut inner_depth = depth.clone();
15960 if inlined {
15961 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15962 inner_offset = next_offset;
15963 } else {
15964 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15965 inner_depth.increment()?;
15966 }
15967 let val_ref = self
15968 .autonomous_enrollment_enabled
15969 .get_or_insert_with(|| fidl::new_empty!(bool, D));
15970 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
15971 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15972 {
15973 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15974 }
15975 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15976 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15977 }
15978 }
15979
15980 next_offset += envelope_size;
15981 _next_ordinal_to_read += 1;
15982 if next_offset >= end_offset {
15983 return Ok(());
15984 }
15985
15986 while _next_ordinal_to_read < 7 {
15988 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15989 _next_ordinal_to_read += 1;
15990 next_offset += envelope_size;
15991 }
15992
15993 let next_out_of_line = decoder.next_out_of_line();
15994 let handles_before = decoder.remaining_handles();
15995 if let Some((inlined, num_bytes, num_handles)) =
15996 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15997 {
15998 let member_inline_size =
15999 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16000 if inlined != (member_inline_size <= 4) {
16001 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16002 }
16003 let inner_offset;
16004 let mut inner_depth = depth.clone();
16005 if inlined {
16006 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16007 inner_offset = next_offset;
16008 } else {
16009 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16010 inner_depth.increment()?;
16011 }
16012 let val_ref = self
16013 .network_key_provisioning_enabled
16014 .get_or_insert_with(|| fidl::new_empty!(bool, D));
16015 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
16016 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16017 {
16018 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16019 }
16020 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16021 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16022 }
16023 }
16024
16025 next_offset += envelope_size;
16026 _next_ordinal_to_read += 1;
16027 if next_offset >= end_offset {
16028 return Ok(());
16029 }
16030
16031 while _next_ordinal_to_read < 8 {
16033 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16034 _next_ordinal_to_read += 1;
16035 next_offset += envelope_size;
16036 }
16037
16038 let next_out_of_line = decoder.next_out_of_line();
16039 let handles_before = decoder.remaining_handles();
16040 if let Some((inlined, num_bytes, num_handles)) =
16041 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16042 {
16043 let member_inline_size =
16044 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16045 if inlined != (member_inline_size <= 4) {
16046 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16047 }
16048 let inner_offset;
16049 let mut inner_depth = depth.clone();
16050 if inlined {
16051 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16052 inner_offset = next_offset;
16053 } else {
16054 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16055 inner_depth.increment()?;
16056 }
16057 let val_ref =
16058 self.toble_link_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
16059 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
16060 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16061 {
16062 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16063 }
16064 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16065 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16066 }
16067 }
16068
16069 next_offset += envelope_size;
16070 _next_ordinal_to_read += 1;
16071 if next_offset >= end_offset {
16072 return Ok(());
16073 }
16074
16075 while _next_ordinal_to_read < 9 {
16077 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16078 _next_ordinal_to_read += 1;
16079 next_offset += envelope_size;
16080 }
16081
16082 let next_out_of_line = decoder.next_out_of_line();
16083 let handles_before = decoder.remaining_handles();
16084 if let Some((inlined, num_bytes, num_handles)) =
16085 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16086 {
16087 let member_inline_size =
16088 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16089 if inlined != (member_inline_size <= 4) {
16090 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16091 }
16092 let inner_offset;
16093 let mut inner_depth = depth.clone();
16094 if inlined {
16095 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16096 inner_offset = next_offset;
16097 } else {
16098 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16099 inner_depth.increment()?;
16100 }
16101 let val_ref =
16102 self.nonccm_routers_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
16103 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
16104 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16105 {
16106 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16107 }
16108 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16109 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16110 }
16111 }
16112
16113 next_offset += envelope_size;
16114 _next_ordinal_to_read += 1;
16115 if next_offset >= end_offset {
16116 return Ok(());
16117 }
16118
16119 while _next_ordinal_to_read < 10 {
16121 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16122 _next_ordinal_to_read += 1;
16123 next_offset += envelope_size;
16124 }
16125
16126 let next_out_of_line = decoder.next_out_of_line();
16127 let handles_before = decoder.remaining_handles();
16128 if let Some((inlined, num_bytes, num_handles)) =
16129 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16130 {
16131 let member_inline_size =
16132 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16133 if inlined != (member_inline_size <= 4) {
16134 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16135 }
16136 let inner_offset;
16137 let mut inner_depth = depth.clone();
16138 if inlined {
16139 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16140 inner_offset = next_offset;
16141 } else {
16142 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16143 inner_depth.increment()?;
16144 }
16145 let val_ref = self
16146 .version_threshold_for_routing
16147 .get_or_insert_with(|| fidl::new_empty!(u8, D));
16148 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
16149 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16150 {
16151 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16152 }
16153 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16154 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16155 }
16156 }
16157
16158 next_offset += envelope_size;
16159
16160 while next_offset < end_offset {
16162 _next_ordinal_to_read += 1;
16163 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16164 next_offset += envelope_size;
16165 }
16166
16167 Ok(())
16168 }
16169 }
16170
16171 impl SrpServerHost {
16172 #[inline(always)]
16173 fn max_ordinal_present(&self) -> u64 {
16174 if let Some(_) = self.addresses {
16175 return 3;
16176 }
16177 if let Some(_) = self.deleted {
16178 return 2;
16179 }
16180 if let Some(_) = self.name {
16181 return 1;
16182 }
16183 0
16184 }
16185 }
16186
16187 impl fidl::encoding::ValueTypeMarker for SrpServerHost {
16188 type Borrowed<'a> = &'a Self;
16189 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16190 value
16191 }
16192 }
16193
16194 unsafe impl fidl::encoding::TypeMarker for SrpServerHost {
16195 type Owned = Self;
16196
16197 #[inline(always)]
16198 fn inline_align(_context: fidl::encoding::Context) -> usize {
16199 8
16200 }
16201
16202 #[inline(always)]
16203 fn inline_size(_context: fidl::encoding::Context) -> usize {
16204 16
16205 }
16206 }
16207
16208 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerHost, D>
16209 for &SrpServerHost
16210 {
16211 unsafe fn encode(
16212 self,
16213 encoder: &mut fidl::encoding::Encoder<'_, D>,
16214 offset: usize,
16215 mut depth: fidl::encoding::Depth,
16216 ) -> fidl::Result<()> {
16217 encoder.debug_check_bounds::<SrpServerHost>(offset);
16218 let max_ordinal: u64 = self.max_ordinal_present();
16220 encoder.write_num(max_ordinal, offset);
16221 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16222 if max_ordinal == 0 {
16224 return Ok(());
16225 }
16226 depth.increment()?;
16227 let envelope_size = 8;
16228 let bytes_len = max_ordinal as usize * envelope_size;
16229 #[allow(unused_variables)]
16230 let offset = encoder.out_of_line_offset(bytes_len);
16231 let mut _prev_end_offset: usize = 0;
16232 if 1 > max_ordinal {
16233 return Ok(());
16234 }
16235
16236 let cur_offset: usize = (1 - 1) * envelope_size;
16239
16240 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16242
16243 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
16248 self.name.as_ref().map(
16249 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
16250 ),
16251 encoder,
16252 offset + cur_offset,
16253 depth,
16254 )?;
16255
16256 _prev_end_offset = cur_offset + envelope_size;
16257 if 2 > max_ordinal {
16258 return Ok(());
16259 }
16260
16261 let cur_offset: usize = (2 - 1) * envelope_size;
16264
16265 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16267
16268 fidl::encoding::encode_in_envelope_optional::<bool, D>(
16273 self.deleted.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
16274 encoder,
16275 offset + cur_offset,
16276 depth,
16277 )?;
16278
16279 _prev_end_offset = cur_offset + envelope_size;
16280 if 3 > max_ordinal {
16281 return Ok(());
16282 }
16283
16284 let cur_offset: usize = (3 - 1) * envelope_size;
16287
16288 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16290
16291 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_net__common::Ipv6Address, 16>, D>(
16296 self.addresses.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_net__common::Ipv6Address, 16> as fidl::encoding::ValueTypeMarker>::borrow),
16297 encoder, offset + cur_offset, depth
16298 )?;
16299
16300 _prev_end_offset = cur_offset + envelope_size;
16301
16302 Ok(())
16303 }
16304 }
16305
16306 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerHost {
16307 #[inline(always)]
16308 fn new_empty() -> Self {
16309 Self::default()
16310 }
16311
16312 unsafe fn decode(
16313 &mut self,
16314 decoder: &mut fidl::encoding::Decoder<'_, D>,
16315 offset: usize,
16316 mut depth: fidl::encoding::Depth,
16317 ) -> fidl::Result<()> {
16318 decoder.debug_check_bounds::<Self>(offset);
16319 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16320 None => return Err(fidl::Error::NotNullable),
16321 Some(len) => len,
16322 };
16323 if len == 0 {
16325 return Ok(());
16326 };
16327 depth.increment()?;
16328 let envelope_size = 8;
16329 let bytes_len = len * envelope_size;
16330 let offset = decoder.out_of_line_offset(bytes_len)?;
16331 let mut _next_ordinal_to_read = 0;
16333 let mut next_offset = offset;
16334 let end_offset = offset + bytes_len;
16335 _next_ordinal_to_read += 1;
16336 if next_offset >= end_offset {
16337 return Ok(());
16338 }
16339
16340 while _next_ordinal_to_read < 1 {
16342 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16343 _next_ordinal_to_read += 1;
16344 next_offset += envelope_size;
16345 }
16346
16347 let next_out_of_line = decoder.next_out_of_line();
16348 let handles_before = decoder.remaining_handles();
16349 if let Some((inlined, num_bytes, num_handles)) =
16350 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16351 {
16352 let member_inline_size =
16353 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
16354 decoder.context,
16355 );
16356 if inlined != (member_inline_size <= 4) {
16357 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16358 }
16359 let inner_offset;
16360 let mut inner_depth = depth.clone();
16361 if inlined {
16362 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16363 inner_offset = next_offset;
16364 } else {
16365 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16366 inner_depth.increment()?;
16367 }
16368 let val_ref = self
16369 .name
16370 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
16371 fidl::decode!(
16372 fidl::encoding::BoundedString<255>,
16373 D,
16374 val_ref,
16375 decoder,
16376 inner_offset,
16377 inner_depth
16378 )?;
16379 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16380 {
16381 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16382 }
16383 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16384 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16385 }
16386 }
16387
16388 next_offset += envelope_size;
16389 _next_ordinal_to_read += 1;
16390 if next_offset >= end_offset {
16391 return Ok(());
16392 }
16393
16394 while _next_ordinal_to_read < 2 {
16396 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16397 _next_ordinal_to_read += 1;
16398 next_offset += envelope_size;
16399 }
16400
16401 let next_out_of_line = decoder.next_out_of_line();
16402 let handles_before = decoder.remaining_handles();
16403 if let Some((inlined, num_bytes, num_handles)) =
16404 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16405 {
16406 let member_inline_size =
16407 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16408 if inlined != (member_inline_size <= 4) {
16409 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16410 }
16411 let inner_offset;
16412 let mut inner_depth = depth.clone();
16413 if inlined {
16414 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16415 inner_offset = next_offset;
16416 } else {
16417 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16418 inner_depth.increment()?;
16419 }
16420 let val_ref = self.deleted.get_or_insert_with(|| fidl::new_empty!(bool, D));
16421 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
16422 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16423 {
16424 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16425 }
16426 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16427 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16428 }
16429 }
16430
16431 next_offset += envelope_size;
16432 _next_ordinal_to_read += 1;
16433 if next_offset >= end_offset {
16434 return Ok(());
16435 }
16436
16437 while _next_ordinal_to_read < 3 {
16439 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16440 _next_ordinal_to_read += 1;
16441 next_offset += envelope_size;
16442 }
16443
16444 let next_out_of_line = decoder.next_out_of_line();
16445 let handles_before = decoder.remaining_handles();
16446 if let Some((inlined, num_bytes, num_handles)) =
16447 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16448 {
16449 let member_inline_size = <fidl::encoding::Vector<
16450 fidl_fuchsia_net__common::Ipv6Address,
16451 16,
16452 > as fidl::encoding::TypeMarker>::inline_size(
16453 decoder.context
16454 );
16455 if inlined != (member_inline_size <= 4) {
16456 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16457 }
16458 let inner_offset;
16459 let mut inner_depth = depth.clone();
16460 if inlined {
16461 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16462 inner_offset = next_offset;
16463 } else {
16464 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16465 inner_depth.increment()?;
16466 }
16467 let val_ref =
16468 self.addresses.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net__common::Ipv6Address, 16>, D));
16469 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net__common::Ipv6Address, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
16470 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16471 {
16472 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16473 }
16474 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16475 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16476 }
16477 }
16478
16479 next_offset += envelope_size;
16480
16481 while next_offset < end_offset {
16483 _next_ordinal_to_read += 1;
16484 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16485 next_offset += envelope_size;
16486 }
16487
16488 Ok(())
16489 }
16490 }
16491
16492 impl SrpServerInfo {
16493 #[inline(always)]
16494 fn max_ordinal_present(&self) -> u64 {
16495 if let Some(_) = self.services {
16496 return 8;
16497 }
16498 if let Some(_) = self.hosts {
16499 return 7;
16500 }
16501 if let Some(_) = self.services_registration {
16502 return 6;
16503 }
16504 if let Some(_) = self.hosts_registration {
16505 return 5;
16506 }
16507 if let Some(_) = self.response_counters {
16508 return 4;
16509 }
16510 if let Some(_) = self.address_mode {
16511 return 3;
16512 }
16513 if let Some(_) = self.port {
16514 return 2;
16515 }
16516 if let Some(_) = self.state {
16517 return 1;
16518 }
16519 0
16520 }
16521 }
16522
16523 impl fidl::encoding::ValueTypeMarker for SrpServerInfo {
16524 type Borrowed<'a> = &'a Self;
16525 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16526 value
16527 }
16528 }
16529
16530 unsafe impl fidl::encoding::TypeMarker for SrpServerInfo {
16531 type Owned = Self;
16532
16533 #[inline(always)]
16534 fn inline_align(_context: fidl::encoding::Context) -> usize {
16535 8
16536 }
16537
16538 #[inline(always)]
16539 fn inline_size(_context: fidl::encoding::Context) -> usize {
16540 16
16541 }
16542 }
16543
16544 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerInfo, D>
16545 for &SrpServerInfo
16546 {
16547 unsafe fn encode(
16548 self,
16549 encoder: &mut fidl::encoding::Encoder<'_, D>,
16550 offset: usize,
16551 mut depth: fidl::encoding::Depth,
16552 ) -> fidl::Result<()> {
16553 encoder.debug_check_bounds::<SrpServerInfo>(offset);
16554 let max_ordinal: u64 = self.max_ordinal_present();
16556 encoder.write_num(max_ordinal, offset);
16557 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16558 if max_ordinal == 0 {
16560 return Ok(());
16561 }
16562 depth.increment()?;
16563 let envelope_size = 8;
16564 let bytes_len = max_ordinal as usize * envelope_size;
16565 #[allow(unused_variables)]
16566 let offset = encoder.out_of_line_offset(bytes_len);
16567 let mut _prev_end_offset: usize = 0;
16568 if 1 > max_ordinal {
16569 return Ok(());
16570 }
16571
16572 let cur_offset: usize = (1 - 1) * envelope_size;
16575
16576 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16578
16579 fidl::encoding::encode_in_envelope_optional::<SrpServerState, D>(
16584 self.state
16585 .as_ref()
16586 .map(<SrpServerState as fidl::encoding::ValueTypeMarker>::borrow),
16587 encoder,
16588 offset + cur_offset,
16589 depth,
16590 )?;
16591
16592 _prev_end_offset = cur_offset + envelope_size;
16593 if 2 > max_ordinal {
16594 return Ok(());
16595 }
16596
16597 let cur_offset: usize = (2 - 1) * envelope_size;
16600
16601 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16603
16604 fidl::encoding::encode_in_envelope_optional::<u16, D>(
16609 self.port.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
16610 encoder,
16611 offset + cur_offset,
16612 depth,
16613 )?;
16614
16615 _prev_end_offset = cur_offset + envelope_size;
16616 if 3 > max_ordinal {
16617 return Ok(());
16618 }
16619
16620 let cur_offset: usize = (3 - 1) * envelope_size;
16623
16624 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16626
16627 fidl::encoding::encode_in_envelope_optional::<SrpServerAddressMode, D>(
16632 self.address_mode
16633 .as_ref()
16634 .map(<SrpServerAddressMode as fidl::encoding::ValueTypeMarker>::borrow),
16635 encoder,
16636 offset + cur_offset,
16637 depth,
16638 )?;
16639
16640 _prev_end_offset = cur_offset + envelope_size;
16641 if 4 > max_ordinal {
16642 return Ok(());
16643 }
16644
16645 let cur_offset: usize = (4 - 1) * envelope_size;
16648
16649 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16651
16652 fidl::encoding::encode_in_envelope_optional::<SrpServerResponseCounters, D>(
16657 self.response_counters
16658 .as_ref()
16659 .map(<SrpServerResponseCounters as fidl::encoding::ValueTypeMarker>::borrow),
16660 encoder,
16661 offset + cur_offset,
16662 depth,
16663 )?;
16664
16665 _prev_end_offset = cur_offset + envelope_size;
16666 if 5 > max_ordinal {
16667 return Ok(());
16668 }
16669
16670 let cur_offset: usize = (5 - 1) * envelope_size;
16673
16674 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16676
16677 fidl::encoding::encode_in_envelope_optional::<SrpServerRegistration, D>(
16682 self.hosts_registration
16683 .as_ref()
16684 .map(<SrpServerRegistration as fidl::encoding::ValueTypeMarker>::borrow),
16685 encoder,
16686 offset + cur_offset,
16687 depth,
16688 )?;
16689
16690 _prev_end_offset = cur_offset + envelope_size;
16691 if 6 > max_ordinal {
16692 return Ok(());
16693 }
16694
16695 let cur_offset: usize = (6 - 1) * envelope_size;
16698
16699 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16701
16702 fidl::encoding::encode_in_envelope_optional::<SrpServerRegistration, D>(
16707 self.services_registration
16708 .as_ref()
16709 .map(<SrpServerRegistration as fidl::encoding::ValueTypeMarker>::borrow),
16710 encoder,
16711 offset + cur_offset,
16712 depth,
16713 )?;
16714
16715 _prev_end_offset = cur_offset + envelope_size;
16716 if 7 > max_ordinal {
16717 return Ok(());
16718 }
16719
16720 let cur_offset: usize = (7 - 1) * envelope_size;
16723
16724 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16726
16727 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<SrpServerHost, 64>, D>(
16732 self.hosts.as_ref().map(<fidl::encoding::Vector<SrpServerHost, 64> as fidl::encoding::ValueTypeMarker>::borrow),
16733 encoder, offset + cur_offset, depth
16734 )?;
16735
16736 _prev_end_offset = cur_offset + envelope_size;
16737 if 8 > max_ordinal {
16738 return Ok(());
16739 }
16740
16741 let cur_offset: usize = (8 - 1) * envelope_size;
16744
16745 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16747
16748 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<SrpServerService, 64>, D>(
16753 self.services.as_ref().map(<fidl::encoding::Vector<SrpServerService, 64> as fidl::encoding::ValueTypeMarker>::borrow),
16754 encoder, offset + cur_offset, depth
16755 )?;
16756
16757 _prev_end_offset = cur_offset + envelope_size;
16758
16759 Ok(())
16760 }
16761 }
16762
16763 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerInfo {
16764 #[inline(always)]
16765 fn new_empty() -> Self {
16766 Self::default()
16767 }
16768
16769 unsafe fn decode(
16770 &mut self,
16771 decoder: &mut fidl::encoding::Decoder<'_, D>,
16772 offset: usize,
16773 mut depth: fidl::encoding::Depth,
16774 ) -> fidl::Result<()> {
16775 decoder.debug_check_bounds::<Self>(offset);
16776 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16777 None => return Err(fidl::Error::NotNullable),
16778 Some(len) => len,
16779 };
16780 if len == 0 {
16782 return Ok(());
16783 };
16784 depth.increment()?;
16785 let envelope_size = 8;
16786 let bytes_len = len * envelope_size;
16787 let offset = decoder.out_of_line_offset(bytes_len)?;
16788 let mut _next_ordinal_to_read = 0;
16790 let mut next_offset = offset;
16791 let end_offset = offset + bytes_len;
16792 _next_ordinal_to_read += 1;
16793 if next_offset >= end_offset {
16794 return Ok(());
16795 }
16796
16797 while _next_ordinal_to_read < 1 {
16799 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16800 _next_ordinal_to_read += 1;
16801 next_offset += envelope_size;
16802 }
16803
16804 let next_out_of_line = decoder.next_out_of_line();
16805 let handles_before = decoder.remaining_handles();
16806 if let Some((inlined, num_bytes, num_handles)) =
16807 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16808 {
16809 let member_inline_size =
16810 <SrpServerState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16811 if inlined != (member_inline_size <= 4) {
16812 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16813 }
16814 let inner_offset;
16815 let mut inner_depth = depth.clone();
16816 if inlined {
16817 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16818 inner_offset = next_offset;
16819 } else {
16820 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16821 inner_depth.increment()?;
16822 }
16823 let val_ref = self.state.get_or_insert_with(|| fidl::new_empty!(SrpServerState, D));
16824 fidl::decode!(SrpServerState, D, val_ref, decoder, inner_offset, inner_depth)?;
16825 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16826 {
16827 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16828 }
16829 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16830 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16831 }
16832 }
16833
16834 next_offset += envelope_size;
16835 _next_ordinal_to_read += 1;
16836 if next_offset >= end_offset {
16837 return Ok(());
16838 }
16839
16840 while _next_ordinal_to_read < 2 {
16842 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16843 _next_ordinal_to_read += 1;
16844 next_offset += envelope_size;
16845 }
16846
16847 let next_out_of_line = decoder.next_out_of_line();
16848 let handles_before = decoder.remaining_handles();
16849 if let Some((inlined, num_bytes, num_handles)) =
16850 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16851 {
16852 let member_inline_size =
16853 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16854 if inlined != (member_inline_size <= 4) {
16855 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16856 }
16857 let inner_offset;
16858 let mut inner_depth = depth.clone();
16859 if inlined {
16860 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16861 inner_offset = next_offset;
16862 } else {
16863 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16864 inner_depth.increment()?;
16865 }
16866 let val_ref = self.port.get_or_insert_with(|| fidl::new_empty!(u16, D));
16867 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
16868 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16869 {
16870 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16871 }
16872 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16873 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16874 }
16875 }
16876
16877 next_offset += envelope_size;
16878 _next_ordinal_to_read += 1;
16879 if next_offset >= end_offset {
16880 return Ok(());
16881 }
16882
16883 while _next_ordinal_to_read < 3 {
16885 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16886 _next_ordinal_to_read += 1;
16887 next_offset += envelope_size;
16888 }
16889
16890 let next_out_of_line = decoder.next_out_of_line();
16891 let handles_before = decoder.remaining_handles();
16892 if let Some((inlined, num_bytes, num_handles)) =
16893 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16894 {
16895 let member_inline_size =
16896 <SrpServerAddressMode as fidl::encoding::TypeMarker>::inline_size(
16897 decoder.context,
16898 );
16899 if inlined != (member_inline_size <= 4) {
16900 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16901 }
16902 let inner_offset;
16903 let mut inner_depth = depth.clone();
16904 if inlined {
16905 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16906 inner_offset = next_offset;
16907 } else {
16908 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16909 inner_depth.increment()?;
16910 }
16911 let val_ref = self
16912 .address_mode
16913 .get_or_insert_with(|| fidl::new_empty!(SrpServerAddressMode, D));
16914 fidl::decode!(
16915 SrpServerAddressMode,
16916 D,
16917 val_ref,
16918 decoder,
16919 inner_offset,
16920 inner_depth
16921 )?;
16922 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16923 {
16924 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16925 }
16926 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16927 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16928 }
16929 }
16930
16931 next_offset += envelope_size;
16932 _next_ordinal_to_read += 1;
16933 if next_offset >= end_offset {
16934 return Ok(());
16935 }
16936
16937 while _next_ordinal_to_read < 4 {
16939 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16940 _next_ordinal_to_read += 1;
16941 next_offset += envelope_size;
16942 }
16943
16944 let next_out_of_line = decoder.next_out_of_line();
16945 let handles_before = decoder.remaining_handles();
16946 if let Some((inlined, num_bytes, num_handles)) =
16947 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16948 {
16949 let member_inline_size =
16950 <SrpServerResponseCounters as fidl::encoding::TypeMarker>::inline_size(
16951 decoder.context,
16952 );
16953 if inlined != (member_inline_size <= 4) {
16954 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16955 }
16956 let inner_offset;
16957 let mut inner_depth = depth.clone();
16958 if inlined {
16959 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16960 inner_offset = next_offset;
16961 } else {
16962 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16963 inner_depth.increment()?;
16964 }
16965 let val_ref = self
16966 .response_counters
16967 .get_or_insert_with(|| fidl::new_empty!(SrpServerResponseCounters, D));
16968 fidl::decode!(
16969 SrpServerResponseCounters,
16970 D,
16971 val_ref,
16972 decoder,
16973 inner_offset,
16974 inner_depth
16975 )?;
16976 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16977 {
16978 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16979 }
16980 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16981 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16982 }
16983 }
16984
16985 next_offset += envelope_size;
16986 _next_ordinal_to_read += 1;
16987 if next_offset >= end_offset {
16988 return Ok(());
16989 }
16990
16991 while _next_ordinal_to_read < 5 {
16993 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16994 _next_ordinal_to_read += 1;
16995 next_offset += envelope_size;
16996 }
16997
16998 let next_out_of_line = decoder.next_out_of_line();
16999 let handles_before = decoder.remaining_handles();
17000 if let Some((inlined, num_bytes, num_handles)) =
17001 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17002 {
17003 let member_inline_size =
17004 <SrpServerRegistration as fidl::encoding::TypeMarker>::inline_size(
17005 decoder.context,
17006 );
17007 if inlined != (member_inline_size <= 4) {
17008 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17009 }
17010 let inner_offset;
17011 let mut inner_depth = depth.clone();
17012 if inlined {
17013 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17014 inner_offset = next_offset;
17015 } else {
17016 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17017 inner_depth.increment()?;
17018 }
17019 let val_ref = self
17020 .hosts_registration
17021 .get_or_insert_with(|| fidl::new_empty!(SrpServerRegistration, D));
17022 fidl::decode!(
17023 SrpServerRegistration,
17024 D,
17025 val_ref,
17026 decoder,
17027 inner_offset,
17028 inner_depth
17029 )?;
17030 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17031 {
17032 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17033 }
17034 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17035 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17036 }
17037 }
17038
17039 next_offset += envelope_size;
17040 _next_ordinal_to_read += 1;
17041 if next_offset >= end_offset {
17042 return Ok(());
17043 }
17044
17045 while _next_ordinal_to_read < 6 {
17047 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17048 _next_ordinal_to_read += 1;
17049 next_offset += envelope_size;
17050 }
17051
17052 let next_out_of_line = decoder.next_out_of_line();
17053 let handles_before = decoder.remaining_handles();
17054 if let Some((inlined, num_bytes, num_handles)) =
17055 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17056 {
17057 let member_inline_size =
17058 <SrpServerRegistration as fidl::encoding::TypeMarker>::inline_size(
17059 decoder.context,
17060 );
17061 if inlined != (member_inline_size <= 4) {
17062 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17063 }
17064 let inner_offset;
17065 let mut inner_depth = depth.clone();
17066 if inlined {
17067 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17068 inner_offset = next_offset;
17069 } else {
17070 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17071 inner_depth.increment()?;
17072 }
17073 let val_ref = self
17074 .services_registration
17075 .get_or_insert_with(|| fidl::new_empty!(SrpServerRegistration, D));
17076 fidl::decode!(
17077 SrpServerRegistration,
17078 D,
17079 val_ref,
17080 decoder,
17081 inner_offset,
17082 inner_depth
17083 )?;
17084 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17085 {
17086 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17087 }
17088 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17089 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17090 }
17091 }
17092
17093 next_offset += envelope_size;
17094 _next_ordinal_to_read += 1;
17095 if next_offset >= end_offset {
17096 return Ok(());
17097 }
17098
17099 while _next_ordinal_to_read < 7 {
17101 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17102 _next_ordinal_to_read += 1;
17103 next_offset += envelope_size;
17104 }
17105
17106 let next_out_of_line = decoder.next_out_of_line();
17107 let handles_before = decoder.remaining_handles();
17108 if let Some((inlined, num_bytes, num_handles)) =
17109 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17110 {
17111 let member_inline_size = <fidl::encoding::Vector<SrpServerHost, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17112 if inlined != (member_inline_size <= 4) {
17113 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17114 }
17115 let inner_offset;
17116 let mut inner_depth = depth.clone();
17117 if inlined {
17118 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17119 inner_offset = next_offset;
17120 } else {
17121 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17122 inner_depth.increment()?;
17123 }
17124 let val_ref = self.hosts.get_or_insert_with(
17125 || fidl::new_empty!(fidl::encoding::Vector<SrpServerHost, 64>, D),
17126 );
17127 fidl::decode!(fidl::encoding::Vector<SrpServerHost, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
17128 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17129 {
17130 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17131 }
17132 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17133 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17134 }
17135 }
17136
17137 next_offset += envelope_size;
17138 _next_ordinal_to_read += 1;
17139 if next_offset >= end_offset {
17140 return Ok(());
17141 }
17142
17143 while _next_ordinal_to_read < 8 {
17145 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17146 _next_ordinal_to_read += 1;
17147 next_offset += envelope_size;
17148 }
17149
17150 let next_out_of_line = decoder.next_out_of_line();
17151 let handles_before = decoder.remaining_handles();
17152 if let Some((inlined, num_bytes, num_handles)) =
17153 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17154 {
17155 let member_inline_size = <fidl::encoding::Vector<SrpServerService, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17156 if inlined != (member_inline_size <= 4) {
17157 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17158 }
17159 let inner_offset;
17160 let mut inner_depth = depth.clone();
17161 if inlined {
17162 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17163 inner_offset = next_offset;
17164 } else {
17165 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17166 inner_depth.increment()?;
17167 }
17168 let val_ref = self.services.get_or_insert_with(
17169 || fidl::new_empty!(fidl::encoding::Vector<SrpServerService, 64>, D),
17170 );
17171 fidl::decode!(fidl::encoding::Vector<SrpServerService, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
17172 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17173 {
17174 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17175 }
17176 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17177 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17178 }
17179 }
17180
17181 next_offset += envelope_size;
17182
17183 while next_offset < end_offset {
17185 _next_ordinal_to_read += 1;
17186 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17187 next_offset += envelope_size;
17188 }
17189
17190 Ok(())
17191 }
17192 }
17193
17194 impl SrpServerRegistration {
17195 #[inline(always)]
17196 fn max_ordinal_present(&self) -> u64 {
17197 if let Some(_) = self.remaining_key_lease_time_total {
17198 return 6;
17199 }
17200 if let Some(_) = self.remaining_lease_time_total {
17201 return 5;
17202 }
17203 if let Some(_) = self.key_lease_time_total {
17204 return 4;
17205 }
17206 if let Some(_) = self.lease_time_total {
17207 return 3;
17208 }
17209 if let Some(_) = self.deleted_count {
17210 return 2;
17211 }
17212 if let Some(_) = self.fresh_count {
17213 return 1;
17214 }
17215 0
17216 }
17217 }
17218
17219 impl fidl::encoding::ValueTypeMarker for SrpServerRegistration {
17220 type Borrowed<'a> = &'a Self;
17221 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17222 value
17223 }
17224 }
17225
17226 unsafe impl fidl::encoding::TypeMarker for SrpServerRegistration {
17227 type Owned = Self;
17228
17229 #[inline(always)]
17230 fn inline_align(_context: fidl::encoding::Context) -> usize {
17231 8
17232 }
17233
17234 #[inline(always)]
17235 fn inline_size(_context: fidl::encoding::Context) -> usize {
17236 16
17237 }
17238 }
17239
17240 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerRegistration, D>
17241 for &SrpServerRegistration
17242 {
17243 unsafe fn encode(
17244 self,
17245 encoder: &mut fidl::encoding::Encoder<'_, D>,
17246 offset: usize,
17247 mut depth: fidl::encoding::Depth,
17248 ) -> fidl::Result<()> {
17249 encoder.debug_check_bounds::<SrpServerRegistration>(offset);
17250 let max_ordinal: u64 = self.max_ordinal_present();
17252 encoder.write_num(max_ordinal, offset);
17253 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17254 if max_ordinal == 0 {
17256 return Ok(());
17257 }
17258 depth.increment()?;
17259 let envelope_size = 8;
17260 let bytes_len = max_ordinal as usize * envelope_size;
17261 #[allow(unused_variables)]
17262 let offset = encoder.out_of_line_offset(bytes_len);
17263 let mut _prev_end_offset: usize = 0;
17264 if 1 > max_ordinal {
17265 return Ok(());
17266 }
17267
17268 let cur_offset: usize = (1 - 1) * envelope_size;
17271
17272 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17274
17275 fidl::encoding::encode_in_envelope_optional::<u32, D>(
17280 self.fresh_count.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
17281 encoder,
17282 offset + cur_offset,
17283 depth,
17284 )?;
17285
17286 _prev_end_offset = cur_offset + envelope_size;
17287 if 2 > max_ordinal {
17288 return Ok(());
17289 }
17290
17291 let cur_offset: usize = (2 - 1) * envelope_size;
17294
17295 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17297
17298 fidl::encoding::encode_in_envelope_optional::<u32, D>(
17303 self.deleted_count.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
17304 encoder,
17305 offset + cur_offset,
17306 depth,
17307 )?;
17308
17309 _prev_end_offset = cur_offset + envelope_size;
17310 if 3 > max_ordinal {
17311 return Ok(());
17312 }
17313
17314 let cur_offset: usize = (3 - 1) * envelope_size;
17317
17318 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17320
17321 fidl::encoding::encode_in_envelope_optional::<i64, D>(
17326 self.lease_time_total
17327 .as_ref()
17328 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
17329 encoder,
17330 offset + cur_offset,
17331 depth,
17332 )?;
17333
17334 _prev_end_offset = cur_offset + envelope_size;
17335 if 4 > max_ordinal {
17336 return Ok(());
17337 }
17338
17339 let cur_offset: usize = (4 - 1) * envelope_size;
17342
17343 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17345
17346 fidl::encoding::encode_in_envelope_optional::<i64, D>(
17351 self.key_lease_time_total
17352 .as_ref()
17353 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
17354 encoder,
17355 offset + cur_offset,
17356 depth,
17357 )?;
17358
17359 _prev_end_offset = cur_offset + envelope_size;
17360 if 5 > max_ordinal {
17361 return Ok(());
17362 }
17363
17364 let cur_offset: usize = (5 - 1) * envelope_size;
17367
17368 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17370
17371 fidl::encoding::encode_in_envelope_optional::<i64, D>(
17376 self.remaining_lease_time_total
17377 .as_ref()
17378 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
17379 encoder,
17380 offset + cur_offset,
17381 depth,
17382 )?;
17383
17384 _prev_end_offset = cur_offset + envelope_size;
17385 if 6 > max_ordinal {
17386 return Ok(());
17387 }
17388
17389 let cur_offset: usize = (6 - 1) * envelope_size;
17392
17393 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17395
17396 fidl::encoding::encode_in_envelope_optional::<i64, D>(
17401 self.remaining_key_lease_time_total
17402 .as_ref()
17403 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
17404 encoder,
17405 offset + cur_offset,
17406 depth,
17407 )?;
17408
17409 _prev_end_offset = cur_offset + envelope_size;
17410
17411 Ok(())
17412 }
17413 }
17414
17415 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerRegistration {
17416 #[inline(always)]
17417 fn new_empty() -> Self {
17418 Self::default()
17419 }
17420
17421 unsafe fn decode(
17422 &mut self,
17423 decoder: &mut fidl::encoding::Decoder<'_, D>,
17424 offset: usize,
17425 mut depth: fidl::encoding::Depth,
17426 ) -> fidl::Result<()> {
17427 decoder.debug_check_bounds::<Self>(offset);
17428 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17429 None => return Err(fidl::Error::NotNullable),
17430 Some(len) => len,
17431 };
17432 if len == 0 {
17434 return Ok(());
17435 };
17436 depth.increment()?;
17437 let envelope_size = 8;
17438 let bytes_len = len * envelope_size;
17439 let offset = decoder.out_of_line_offset(bytes_len)?;
17440 let mut _next_ordinal_to_read = 0;
17442 let mut next_offset = offset;
17443 let end_offset = offset + bytes_len;
17444 _next_ordinal_to_read += 1;
17445 if next_offset >= end_offset {
17446 return Ok(());
17447 }
17448
17449 while _next_ordinal_to_read < 1 {
17451 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17452 _next_ordinal_to_read += 1;
17453 next_offset += envelope_size;
17454 }
17455
17456 let next_out_of_line = decoder.next_out_of_line();
17457 let handles_before = decoder.remaining_handles();
17458 if let Some((inlined, num_bytes, num_handles)) =
17459 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17460 {
17461 let member_inline_size =
17462 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17463 if inlined != (member_inline_size <= 4) {
17464 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17465 }
17466 let inner_offset;
17467 let mut inner_depth = depth.clone();
17468 if inlined {
17469 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17470 inner_offset = next_offset;
17471 } else {
17472 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17473 inner_depth.increment()?;
17474 }
17475 let val_ref = self.fresh_count.get_or_insert_with(|| fidl::new_empty!(u32, D));
17476 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
17477 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17478 {
17479 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17480 }
17481 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17482 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17483 }
17484 }
17485
17486 next_offset += envelope_size;
17487 _next_ordinal_to_read += 1;
17488 if next_offset >= end_offset {
17489 return Ok(());
17490 }
17491
17492 while _next_ordinal_to_read < 2 {
17494 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17495 _next_ordinal_to_read += 1;
17496 next_offset += envelope_size;
17497 }
17498
17499 let next_out_of_line = decoder.next_out_of_line();
17500 let handles_before = decoder.remaining_handles();
17501 if let Some((inlined, num_bytes, num_handles)) =
17502 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17503 {
17504 let member_inline_size =
17505 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17506 if inlined != (member_inline_size <= 4) {
17507 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17508 }
17509 let inner_offset;
17510 let mut inner_depth = depth.clone();
17511 if inlined {
17512 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17513 inner_offset = next_offset;
17514 } else {
17515 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17516 inner_depth.increment()?;
17517 }
17518 let val_ref = self.deleted_count.get_or_insert_with(|| fidl::new_empty!(u32, D));
17519 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
17520 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17521 {
17522 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17523 }
17524 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17525 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17526 }
17527 }
17528
17529 next_offset += envelope_size;
17530 _next_ordinal_to_read += 1;
17531 if next_offset >= end_offset {
17532 return Ok(());
17533 }
17534
17535 while _next_ordinal_to_read < 3 {
17537 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17538 _next_ordinal_to_read += 1;
17539 next_offset += envelope_size;
17540 }
17541
17542 let next_out_of_line = decoder.next_out_of_line();
17543 let handles_before = decoder.remaining_handles();
17544 if let Some((inlined, num_bytes, num_handles)) =
17545 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17546 {
17547 let member_inline_size =
17548 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17549 if inlined != (member_inline_size <= 4) {
17550 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17551 }
17552 let inner_offset;
17553 let mut inner_depth = depth.clone();
17554 if inlined {
17555 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17556 inner_offset = next_offset;
17557 } else {
17558 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17559 inner_depth.increment()?;
17560 }
17561 let val_ref = self.lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
17562 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
17563 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17564 {
17565 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17566 }
17567 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17568 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17569 }
17570 }
17571
17572 next_offset += envelope_size;
17573 _next_ordinal_to_read += 1;
17574 if next_offset >= end_offset {
17575 return Ok(());
17576 }
17577
17578 while _next_ordinal_to_read < 4 {
17580 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17581 _next_ordinal_to_read += 1;
17582 next_offset += envelope_size;
17583 }
17584
17585 let next_out_of_line = decoder.next_out_of_line();
17586 let handles_before = decoder.remaining_handles();
17587 if let Some((inlined, num_bytes, num_handles)) =
17588 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17589 {
17590 let member_inline_size =
17591 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17592 if inlined != (member_inline_size <= 4) {
17593 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17594 }
17595 let inner_offset;
17596 let mut inner_depth = depth.clone();
17597 if inlined {
17598 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17599 inner_offset = next_offset;
17600 } else {
17601 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17602 inner_depth.increment()?;
17603 }
17604 let val_ref =
17605 self.key_lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
17606 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
17607 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17608 {
17609 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17610 }
17611 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17612 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17613 }
17614 }
17615
17616 next_offset += envelope_size;
17617 _next_ordinal_to_read += 1;
17618 if next_offset >= end_offset {
17619 return Ok(());
17620 }
17621
17622 while _next_ordinal_to_read < 5 {
17624 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17625 _next_ordinal_to_read += 1;
17626 next_offset += envelope_size;
17627 }
17628
17629 let next_out_of_line = decoder.next_out_of_line();
17630 let handles_before = decoder.remaining_handles();
17631 if let Some((inlined, num_bytes, num_handles)) =
17632 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17633 {
17634 let member_inline_size =
17635 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17636 if inlined != (member_inline_size <= 4) {
17637 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17638 }
17639 let inner_offset;
17640 let mut inner_depth = depth.clone();
17641 if inlined {
17642 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17643 inner_offset = next_offset;
17644 } else {
17645 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17646 inner_depth.increment()?;
17647 }
17648 let val_ref =
17649 self.remaining_lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
17650 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
17651 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17652 {
17653 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17654 }
17655 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17656 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17657 }
17658 }
17659
17660 next_offset += envelope_size;
17661 _next_ordinal_to_read += 1;
17662 if next_offset >= end_offset {
17663 return Ok(());
17664 }
17665
17666 while _next_ordinal_to_read < 6 {
17668 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17669 _next_ordinal_to_read += 1;
17670 next_offset += envelope_size;
17671 }
17672
17673 let next_out_of_line = decoder.next_out_of_line();
17674 let handles_before = decoder.remaining_handles();
17675 if let Some((inlined, num_bytes, num_handles)) =
17676 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17677 {
17678 let member_inline_size =
17679 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17680 if inlined != (member_inline_size <= 4) {
17681 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17682 }
17683 let inner_offset;
17684 let mut inner_depth = depth.clone();
17685 if inlined {
17686 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17687 inner_offset = next_offset;
17688 } else {
17689 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17690 inner_depth.increment()?;
17691 }
17692 let val_ref = self
17693 .remaining_key_lease_time_total
17694 .get_or_insert_with(|| fidl::new_empty!(i64, D));
17695 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
17696 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17697 {
17698 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17699 }
17700 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17701 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17702 }
17703 }
17704
17705 next_offset += envelope_size;
17706
17707 while next_offset < end_offset {
17709 _next_ordinal_to_read += 1;
17710 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17711 next_offset += envelope_size;
17712 }
17713
17714 Ok(())
17715 }
17716 }
17717
17718 impl SrpServerResponseCounters {
17719 #[inline(always)]
17720 fn max_ordinal_present(&self) -> u64 {
17721 if let Some(_) = self.other_response {
17722 return 6;
17723 }
17724 if let Some(_) = self.refused_response {
17725 return 5;
17726 }
17727 if let Some(_) = self.name_exists_response {
17728 return 4;
17729 }
17730 if let Some(_) = self.format_error_response {
17731 return 3;
17732 }
17733 if let Some(_) = self.server_failure_response {
17734 return 2;
17735 }
17736 if let Some(_) = self.success_response {
17737 return 1;
17738 }
17739 0
17740 }
17741 }
17742
17743 impl fidl::encoding::ValueTypeMarker for SrpServerResponseCounters {
17744 type Borrowed<'a> = &'a Self;
17745 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17746 value
17747 }
17748 }
17749
17750 unsafe impl fidl::encoding::TypeMarker for SrpServerResponseCounters {
17751 type Owned = Self;
17752
17753 #[inline(always)]
17754 fn inline_align(_context: fidl::encoding::Context) -> usize {
17755 8
17756 }
17757
17758 #[inline(always)]
17759 fn inline_size(_context: fidl::encoding::Context) -> usize {
17760 16
17761 }
17762 }
17763
17764 unsafe impl<D: fidl::encoding::ResourceDialect>
17765 fidl::encoding::Encode<SrpServerResponseCounters, D> for &SrpServerResponseCounters
17766 {
17767 unsafe fn encode(
17768 self,
17769 encoder: &mut fidl::encoding::Encoder<'_, D>,
17770 offset: usize,
17771 mut depth: fidl::encoding::Depth,
17772 ) -> fidl::Result<()> {
17773 encoder.debug_check_bounds::<SrpServerResponseCounters>(offset);
17774 let max_ordinal: u64 = self.max_ordinal_present();
17776 encoder.write_num(max_ordinal, offset);
17777 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17778 if max_ordinal == 0 {
17780 return Ok(());
17781 }
17782 depth.increment()?;
17783 let envelope_size = 8;
17784 let bytes_len = max_ordinal as usize * envelope_size;
17785 #[allow(unused_variables)]
17786 let offset = encoder.out_of_line_offset(bytes_len);
17787 let mut _prev_end_offset: usize = 0;
17788 if 1 > max_ordinal {
17789 return Ok(());
17790 }
17791
17792 let cur_offset: usize = (1 - 1) * envelope_size;
17795
17796 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17798
17799 fidl::encoding::encode_in_envelope_optional::<u32, D>(
17804 self.success_response
17805 .as_ref()
17806 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
17807 encoder,
17808 offset + cur_offset,
17809 depth,
17810 )?;
17811
17812 _prev_end_offset = cur_offset + envelope_size;
17813 if 2 > max_ordinal {
17814 return Ok(());
17815 }
17816
17817 let cur_offset: usize = (2 - 1) * envelope_size;
17820
17821 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17823
17824 fidl::encoding::encode_in_envelope_optional::<u32, D>(
17829 self.server_failure_response
17830 .as_ref()
17831 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
17832 encoder,
17833 offset + cur_offset,
17834 depth,
17835 )?;
17836
17837 _prev_end_offset = cur_offset + envelope_size;
17838 if 3 > max_ordinal {
17839 return Ok(());
17840 }
17841
17842 let cur_offset: usize = (3 - 1) * envelope_size;
17845
17846 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17848
17849 fidl::encoding::encode_in_envelope_optional::<u32, D>(
17854 self.format_error_response
17855 .as_ref()
17856 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
17857 encoder,
17858 offset + cur_offset,
17859 depth,
17860 )?;
17861
17862 _prev_end_offset = cur_offset + envelope_size;
17863 if 4 > max_ordinal {
17864 return Ok(());
17865 }
17866
17867 let cur_offset: usize = (4 - 1) * envelope_size;
17870
17871 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17873
17874 fidl::encoding::encode_in_envelope_optional::<u32, D>(
17879 self.name_exists_response
17880 .as_ref()
17881 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
17882 encoder,
17883 offset + cur_offset,
17884 depth,
17885 )?;
17886
17887 _prev_end_offset = cur_offset + envelope_size;
17888 if 5 > max_ordinal {
17889 return Ok(());
17890 }
17891
17892 let cur_offset: usize = (5 - 1) * envelope_size;
17895
17896 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17898
17899 fidl::encoding::encode_in_envelope_optional::<u32, D>(
17904 self.refused_response
17905 .as_ref()
17906 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
17907 encoder,
17908 offset + cur_offset,
17909 depth,
17910 )?;
17911
17912 _prev_end_offset = cur_offset + envelope_size;
17913 if 6 > max_ordinal {
17914 return Ok(());
17915 }
17916
17917 let cur_offset: usize = (6 - 1) * envelope_size;
17920
17921 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17923
17924 fidl::encoding::encode_in_envelope_optional::<u32, D>(
17929 self.other_response.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
17930 encoder,
17931 offset + cur_offset,
17932 depth,
17933 )?;
17934
17935 _prev_end_offset = cur_offset + envelope_size;
17936
17937 Ok(())
17938 }
17939 }
17940
17941 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
17942 for SrpServerResponseCounters
17943 {
17944 #[inline(always)]
17945 fn new_empty() -> Self {
17946 Self::default()
17947 }
17948
17949 unsafe fn decode(
17950 &mut self,
17951 decoder: &mut fidl::encoding::Decoder<'_, D>,
17952 offset: usize,
17953 mut depth: fidl::encoding::Depth,
17954 ) -> fidl::Result<()> {
17955 decoder.debug_check_bounds::<Self>(offset);
17956 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17957 None => return Err(fidl::Error::NotNullable),
17958 Some(len) => len,
17959 };
17960 if len == 0 {
17962 return Ok(());
17963 };
17964 depth.increment()?;
17965 let envelope_size = 8;
17966 let bytes_len = len * envelope_size;
17967 let offset = decoder.out_of_line_offset(bytes_len)?;
17968 let mut _next_ordinal_to_read = 0;
17970 let mut next_offset = offset;
17971 let end_offset = offset + bytes_len;
17972 _next_ordinal_to_read += 1;
17973 if next_offset >= end_offset {
17974 return Ok(());
17975 }
17976
17977 while _next_ordinal_to_read < 1 {
17979 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17980 _next_ordinal_to_read += 1;
17981 next_offset += envelope_size;
17982 }
17983
17984 let next_out_of_line = decoder.next_out_of_line();
17985 let handles_before = decoder.remaining_handles();
17986 if let Some((inlined, num_bytes, num_handles)) =
17987 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17988 {
17989 let member_inline_size =
17990 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17991 if inlined != (member_inline_size <= 4) {
17992 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17993 }
17994 let inner_offset;
17995 let mut inner_depth = depth.clone();
17996 if inlined {
17997 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17998 inner_offset = next_offset;
17999 } else {
18000 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18001 inner_depth.increment()?;
18002 }
18003 let val_ref = self.success_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
18004 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
18005 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18006 {
18007 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18008 }
18009 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18010 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18011 }
18012 }
18013
18014 next_offset += envelope_size;
18015 _next_ordinal_to_read += 1;
18016 if next_offset >= end_offset {
18017 return Ok(());
18018 }
18019
18020 while _next_ordinal_to_read < 2 {
18022 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18023 _next_ordinal_to_read += 1;
18024 next_offset += envelope_size;
18025 }
18026
18027 let next_out_of_line = decoder.next_out_of_line();
18028 let handles_before = decoder.remaining_handles();
18029 if let Some((inlined, num_bytes, num_handles)) =
18030 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18031 {
18032 let member_inline_size =
18033 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18034 if inlined != (member_inline_size <= 4) {
18035 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18036 }
18037 let inner_offset;
18038 let mut inner_depth = depth.clone();
18039 if inlined {
18040 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18041 inner_offset = next_offset;
18042 } else {
18043 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18044 inner_depth.increment()?;
18045 }
18046 let val_ref =
18047 self.server_failure_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
18048 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
18049 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18050 {
18051 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18052 }
18053 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18054 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18055 }
18056 }
18057
18058 next_offset += envelope_size;
18059 _next_ordinal_to_read += 1;
18060 if next_offset >= end_offset {
18061 return Ok(());
18062 }
18063
18064 while _next_ordinal_to_read < 3 {
18066 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18067 _next_ordinal_to_read += 1;
18068 next_offset += envelope_size;
18069 }
18070
18071 let next_out_of_line = decoder.next_out_of_line();
18072 let handles_before = decoder.remaining_handles();
18073 if let Some((inlined, num_bytes, num_handles)) =
18074 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18075 {
18076 let member_inline_size =
18077 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18078 if inlined != (member_inline_size <= 4) {
18079 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18080 }
18081 let inner_offset;
18082 let mut inner_depth = depth.clone();
18083 if inlined {
18084 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18085 inner_offset = next_offset;
18086 } else {
18087 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18088 inner_depth.increment()?;
18089 }
18090 let val_ref =
18091 self.format_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
18092 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
18093 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18094 {
18095 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18096 }
18097 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18098 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18099 }
18100 }
18101
18102 next_offset += envelope_size;
18103 _next_ordinal_to_read += 1;
18104 if next_offset >= end_offset {
18105 return Ok(());
18106 }
18107
18108 while _next_ordinal_to_read < 4 {
18110 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18111 _next_ordinal_to_read += 1;
18112 next_offset += envelope_size;
18113 }
18114
18115 let next_out_of_line = decoder.next_out_of_line();
18116 let handles_before = decoder.remaining_handles();
18117 if let Some((inlined, num_bytes, num_handles)) =
18118 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18119 {
18120 let member_inline_size =
18121 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18122 if inlined != (member_inline_size <= 4) {
18123 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18124 }
18125 let inner_offset;
18126 let mut inner_depth = depth.clone();
18127 if inlined {
18128 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18129 inner_offset = next_offset;
18130 } else {
18131 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18132 inner_depth.increment()?;
18133 }
18134 let val_ref =
18135 self.name_exists_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
18136 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
18137 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18138 {
18139 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18140 }
18141 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18142 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18143 }
18144 }
18145
18146 next_offset += envelope_size;
18147 _next_ordinal_to_read += 1;
18148 if next_offset >= end_offset {
18149 return Ok(());
18150 }
18151
18152 while _next_ordinal_to_read < 5 {
18154 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18155 _next_ordinal_to_read += 1;
18156 next_offset += envelope_size;
18157 }
18158
18159 let next_out_of_line = decoder.next_out_of_line();
18160 let handles_before = decoder.remaining_handles();
18161 if let Some((inlined, num_bytes, num_handles)) =
18162 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18163 {
18164 let member_inline_size =
18165 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18166 if inlined != (member_inline_size <= 4) {
18167 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18168 }
18169 let inner_offset;
18170 let mut inner_depth = depth.clone();
18171 if inlined {
18172 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18173 inner_offset = next_offset;
18174 } else {
18175 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18176 inner_depth.increment()?;
18177 }
18178 let val_ref = self.refused_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
18179 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
18180 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18181 {
18182 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18183 }
18184 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18185 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18186 }
18187 }
18188
18189 next_offset += envelope_size;
18190 _next_ordinal_to_read += 1;
18191 if next_offset >= end_offset {
18192 return Ok(());
18193 }
18194
18195 while _next_ordinal_to_read < 6 {
18197 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18198 _next_ordinal_to_read += 1;
18199 next_offset += envelope_size;
18200 }
18201
18202 let next_out_of_line = decoder.next_out_of_line();
18203 let handles_before = decoder.remaining_handles();
18204 if let Some((inlined, num_bytes, num_handles)) =
18205 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18206 {
18207 let member_inline_size =
18208 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18209 if inlined != (member_inline_size <= 4) {
18210 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18211 }
18212 let inner_offset;
18213 let mut inner_depth = depth.clone();
18214 if inlined {
18215 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18216 inner_offset = next_offset;
18217 } else {
18218 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18219 inner_depth.increment()?;
18220 }
18221 let val_ref = self.other_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
18222 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
18223 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18224 {
18225 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18226 }
18227 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18228 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18229 }
18230 }
18231
18232 next_offset += envelope_size;
18233
18234 while next_offset < end_offset {
18236 _next_ordinal_to_read += 1;
18237 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18238 next_offset += envelope_size;
18239 }
18240
18241 Ok(())
18242 }
18243 }
18244
18245 impl SrpServerService {
18246 #[inline(always)]
18247 fn max_ordinal_present(&self) -> u64 {
18248 if let Some(_) = self.host {
18249 return 11;
18250 }
18251 if let Some(_) = self.txt_data {
18252 return 10;
18253 }
18254 if let Some(_) = self.key_lease {
18255 return 9;
18256 }
18257 if let Some(_) = self.lease {
18258 return 8;
18259 }
18260 if let Some(_) = self.ttl {
18261 return 7;
18262 }
18263 if let Some(_) = self.weight {
18264 return 6;
18265 }
18266 if let Some(_) = self.priority {
18267 return 5;
18268 }
18269 if let Some(_) = self.port {
18270 return 4;
18271 }
18272 if let Some(_) = self.subtypes {
18273 return 3;
18274 }
18275 if let Some(_) = self.deleted {
18276 return 2;
18277 }
18278 if let Some(_) = self.instance_name {
18279 return 1;
18280 }
18281 0
18282 }
18283 }
18284
18285 impl fidl::encoding::ValueTypeMarker for SrpServerService {
18286 type Borrowed<'a> = &'a Self;
18287 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
18288 value
18289 }
18290 }
18291
18292 unsafe impl fidl::encoding::TypeMarker for SrpServerService {
18293 type Owned = Self;
18294
18295 #[inline(always)]
18296 fn inline_align(_context: fidl::encoding::Context) -> usize {
18297 8
18298 }
18299
18300 #[inline(always)]
18301 fn inline_size(_context: fidl::encoding::Context) -> usize {
18302 16
18303 }
18304 }
18305
18306 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerService, D>
18307 for &SrpServerService
18308 {
18309 unsafe fn encode(
18310 self,
18311 encoder: &mut fidl::encoding::Encoder<'_, D>,
18312 offset: usize,
18313 mut depth: fidl::encoding::Depth,
18314 ) -> fidl::Result<()> {
18315 encoder.debug_check_bounds::<SrpServerService>(offset);
18316 let max_ordinal: u64 = self.max_ordinal_present();
18318 encoder.write_num(max_ordinal, offset);
18319 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
18320 if max_ordinal == 0 {
18322 return Ok(());
18323 }
18324 depth.increment()?;
18325 let envelope_size = 8;
18326 let bytes_len = max_ordinal as usize * envelope_size;
18327 #[allow(unused_variables)]
18328 let offset = encoder.out_of_line_offset(bytes_len);
18329 let mut _prev_end_offset: usize = 0;
18330 if 1 > max_ordinal {
18331 return Ok(());
18332 }
18333
18334 let cur_offset: usize = (1 - 1) * envelope_size;
18337
18338 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18340
18341 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
18346 self.instance_name.as_ref().map(
18347 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
18348 ),
18349 encoder,
18350 offset + cur_offset,
18351 depth,
18352 )?;
18353
18354 _prev_end_offset = cur_offset + envelope_size;
18355 if 2 > max_ordinal {
18356 return Ok(());
18357 }
18358
18359 let cur_offset: usize = (2 - 1) * envelope_size;
18362
18363 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18365
18366 fidl::encoding::encode_in_envelope_optional::<bool, D>(
18371 self.deleted.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
18372 encoder,
18373 offset + cur_offset,
18374 depth,
18375 )?;
18376
18377 _prev_end_offset = cur_offset + envelope_size;
18378 if 3 > max_ordinal {
18379 return Ok(());
18380 }
18381
18382 let cur_offset: usize = (3 - 1) * envelope_size;
18385
18386 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18388
18389 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 6>, D>(
18394 self.subtypes.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 6> as fidl::encoding::ValueTypeMarker>::borrow),
18395 encoder, offset + cur_offset, depth
18396 )?;
18397
18398 _prev_end_offset = cur_offset + envelope_size;
18399 if 4 > max_ordinal {
18400 return Ok(());
18401 }
18402
18403 let cur_offset: usize = (4 - 1) * envelope_size;
18406
18407 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18409
18410 fidl::encoding::encode_in_envelope_optional::<u16, D>(
18415 self.port.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
18416 encoder,
18417 offset + cur_offset,
18418 depth,
18419 )?;
18420
18421 _prev_end_offset = cur_offset + envelope_size;
18422 if 5 > max_ordinal {
18423 return Ok(());
18424 }
18425
18426 let cur_offset: usize = (5 - 1) * envelope_size;
18429
18430 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18432
18433 fidl::encoding::encode_in_envelope_optional::<u16, D>(
18438 self.priority.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
18439 encoder,
18440 offset + cur_offset,
18441 depth,
18442 )?;
18443
18444 _prev_end_offset = cur_offset + envelope_size;
18445 if 6 > max_ordinal {
18446 return Ok(());
18447 }
18448
18449 let cur_offset: usize = (6 - 1) * envelope_size;
18452
18453 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18455
18456 fidl::encoding::encode_in_envelope_optional::<u16, D>(
18461 self.weight.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
18462 encoder,
18463 offset + cur_offset,
18464 depth,
18465 )?;
18466
18467 _prev_end_offset = cur_offset + envelope_size;
18468 if 7 > max_ordinal {
18469 return Ok(());
18470 }
18471
18472 let cur_offset: usize = (7 - 1) * envelope_size;
18475
18476 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18478
18479 fidl::encoding::encode_in_envelope_optional::<i64, D>(
18484 self.ttl.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
18485 encoder,
18486 offset + cur_offset,
18487 depth,
18488 )?;
18489
18490 _prev_end_offset = cur_offset + envelope_size;
18491 if 8 > max_ordinal {
18492 return Ok(());
18493 }
18494
18495 let cur_offset: usize = (8 - 1) * envelope_size;
18498
18499 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18501
18502 fidl::encoding::encode_in_envelope_optional::<i64, D>(
18507 self.lease.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
18508 encoder,
18509 offset + cur_offset,
18510 depth,
18511 )?;
18512
18513 _prev_end_offset = cur_offset + envelope_size;
18514 if 9 > max_ordinal {
18515 return Ok(());
18516 }
18517
18518 let cur_offset: usize = (9 - 1) * envelope_size;
18521
18522 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18524
18525 fidl::encoding::encode_in_envelope_optional::<i64, D>(
18530 self.key_lease.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
18531 encoder,
18532 offset + cur_offset,
18533 depth,
18534 )?;
18535
18536 _prev_end_offset = cur_offset + envelope_size;
18537 if 10 > max_ordinal {
18538 return Ok(());
18539 }
18540
18541 let cur_offset: usize = (10 - 1) * envelope_size;
18544
18545 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18547
18548 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<DnsTxtEntry>, D>(
18553 self.txt_data.as_ref().map(<fidl::encoding::UnboundedVector<DnsTxtEntry> as fidl::encoding::ValueTypeMarker>::borrow),
18554 encoder, offset + cur_offset, depth
18555 )?;
18556
18557 _prev_end_offset = cur_offset + envelope_size;
18558 if 11 > max_ordinal {
18559 return Ok(());
18560 }
18561
18562 let cur_offset: usize = (11 - 1) * envelope_size;
18565
18566 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18568
18569 fidl::encoding::encode_in_envelope_optional::<SrpServerHost, D>(
18574 self.host.as_ref().map(<SrpServerHost as fidl::encoding::ValueTypeMarker>::borrow),
18575 encoder,
18576 offset + cur_offset,
18577 depth,
18578 )?;
18579
18580 _prev_end_offset = cur_offset + envelope_size;
18581
18582 Ok(())
18583 }
18584 }
18585
18586 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerService {
18587 #[inline(always)]
18588 fn new_empty() -> Self {
18589 Self::default()
18590 }
18591
18592 unsafe fn decode(
18593 &mut self,
18594 decoder: &mut fidl::encoding::Decoder<'_, D>,
18595 offset: usize,
18596 mut depth: fidl::encoding::Depth,
18597 ) -> fidl::Result<()> {
18598 decoder.debug_check_bounds::<Self>(offset);
18599 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
18600 None => return Err(fidl::Error::NotNullable),
18601 Some(len) => len,
18602 };
18603 if len == 0 {
18605 return Ok(());
18606 };
18607 depth.increment()?;
18608 let envelope_size = 8;
18609 let bytes_len = len * envelope_size;
18610 let offset = decoder.out_of_line_offset(bytes_len)?;
18611 let mut _next_ordinal_to_read = 0;
18613 let mut next_offset = offset;
18614 let end_offset = offset + bytes_len;
18615 _next_ordinal_to_read += 1;
18616 if next_offset >= end_offset {
18617 return Ok(());
18618 }
18619
18620 while _next_ordinal_to_read < 1 {
18622 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18623 _next_ordinal_to_read += 1;
18624 next_offset += envelope_size;
18625 }
18626
18627 let next_out_of_line = decoder.next_out_of_line();
18628 let handles_before = decoder.remaining_handles();
18629 if let Some((inlined, num_bytes, num_handles)) =
18630 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18631 {
18632 let member_inline_size =
18633 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
18634 decoder.context,
18635 );
18636 if inlined != (member_inline_size <= 4) {
18637 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18638 }
18639 let inner_offset;
18640 let mut inner_depth = depth.clone();
18641 if inlined {
18642 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18643 inner_offset = next_offset;
18644 } else {
18645 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18646 inner_depth.increment()?;
18647 }
18648 let val_ref = self
18649 .instance_name
18650 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
18651 fidl::decode!(
18652 fidl::encoding::BoundedString<255>,
18653 D,
18654 val_ref,
18655 decoder,
18656 inner_offset,
18657 inner_depth
18658 )?;
18659 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18660 {
18661 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18662 }
18663 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18664 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18665 }
18666 }
18667
18668 next_offset += envelope_size;
18669 _next_ordinal_to_read += 1;
18670 if next_offset >= end_offset {
18671 return Ok(());
18672 }
18673
18674 while _next_ordinal_to_read < 2 {
18676 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18677 _next_ordinal_to_read += 1;
18678 next_offset += envelope_size;
18679 }
18680
18681 let next_out_of_line = decoder.next_out_of_line();
18682 let handles_before = decoder.remaining_handles();
18683 if let Some((inlined, num_bytes, num_handles)) =
18684 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18685 {
18686 let member_inline_size =
18687 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18688 if inlined != (member_inline_size <= 4) {
18689 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18690 }
18691 let inner_offset;
18692 let mut inner_depth = depth.clone();
18693 if inlined {
18694 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18695 inner_offset = next_offset;
18696 } else {
18697 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18698 inner_depth.increment()?;
18699 }
18700 let val_ref = self.deleted.get_or_insert_with(|| fidl::new_empty!(bool, D));
18701 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
18702 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18703 {
18704 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18705 }
18706 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18707 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18708 }
18709 }
18710
18711 next_offset += envelope_size;
18712 _next_ordinal_to_read += 1;
18713 if next_offset >= end_offset {
18714 return Ok(());
18715 }
18716
18717 while _next_ordinal_to_read < 3 {
18719 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18720 _next_ordinal_to_read += 1;
18721 next_offset += envelope_size;
18722 }
18723
18724 let next_out_of_line = decoder.next_out_of_line();
18725 let handles_before = decoder.remaining_handles();
18726 if let Some((inlined, num_bytes, num_handles)) =
18727 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18728 {
18729 let member_inline_size = <fidl::encoding::Vector<
18730 fidl::encoding::BoundedString<63>,
18731 6,
18732 > as fidl::encoding::TypeMarker>::inline_size(
18733 decoder.context
18734 );
18735 if inlined != (member_inline_size <= 4) {
18736 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18737 }
18738 let inner_offset;
18739 let mut inner_depth = depth.clone();
18740 if inlined {
18741 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18742 inner_offset = next_offset;
18743 } else {
18744 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18745 inner_depth.increment()?;
18746 }
18747 let val_ref = self.subtypes.get_or_insert_with(|| {
18748 fidl::new_empty!(
18749 fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 6>,
18750 D
18751 )
18752 });
18753 fidl::decode!(
18754 fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 6>,
18755 D,
18756 val_ref,
18757 decoder,
18758 inner_offset,
18759 inner_depth
18760 )?;
18761 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18762 {
18763 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18764 }
18765 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18766 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18767 }
18768 }
18769
18770 next_offset += envelope_size;
18771 _next_ordinal_to_read += 1;
18772 if next_offset >= end_offset {
18773 return Ok(());
18774 }
18775
18776 while _next_ordinal_to_read < 4 {
18778 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18779 _next_ordinal_to_read += 1;
18780 next_offset += envelope_size;
18781 }
18782
18783 let next_out_of_line = decoder.next_out_of_line();
18784 let handles_before = decoder.remaining_handles();
18785 if let Some((inlined, num_bytes, num_handles)) =
18786 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18787 {
18788 let member_inline_size =
18789 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18790 if inlined != (member_inline_size <= 4) {
18791 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18792 }
18793 let inner_offset;
18794 let mut inner_depth = depth.clone();
18795 if inlined {
18796 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18797 inner_offset = next_offset;
18798 } else {
18799 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18800 inner_depth.increment()?;
18801 }
18802 let val_ref = self.port.get_or_insert_with(|| fidl::new_empty!(u16, D));
18803 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
18804 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18805 {
18806 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18807 }
18808 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18809 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18810 }
18811 }
18812
18813 next_offset += envelope_size;
18814 _next_ordinal_to_read += 1;
18815 if next_offset >= end_offset {
18816 return Ok(());
18817 }
18818
18819 while _next_ordinal_to_read < 5 {
18821 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18822 _next_ordinal_to_read += 1;
18823 next_offset += envelope_size;
18824 }
18825
18826 let next_out_of_line = decoder.next_out_of_line();
18827 let handles_before = decoder.remaining_handles();
18828 if let Some((inlined, num_bytes, num_handles)) =
18829 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18830 {
18831 let member_inline_size =
18832 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18833 if inlined != (member_inline_size <= 4) {
18834 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18835 }
18836 let inner_offset;
18837 let mut inner_depth = depth.clone();
18838 if inlined {
18839 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18840 inner_offset = next_offset;
18841 } else {
18842 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18843 inner_depth.increment()?;
18844 }
18845 let val_ref = self.priority.get_or_insert_with(|| fidl::new_empty!(u16, D));
18846 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
18847 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18848 {
18849 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18850 }
18851 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18852 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18853 }
18854 }
18855
18856 next_offset += envelope_size;
18857 _next_ordinal_to_read += 1;
18858 if next_offset >= end_offset {
18859 return Ok(());
18860 }
18861
18862 while _next_ordinal_to_read < 6 {
18864 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18865 _next_ordinal_to_read += 1;
18866 next_offset += envelope_size;
18867 }
18868
18869 let next_out_of_line = decoder.next_out_of_line();
18870 let handles_before = decoder.remaining_handles();
18871 if let Some((inlined, num_bytes, num_handles)) =
18872 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18873 {
18874 let member_inline_size =
18875 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18876 if inlined != (member_inline_size <= 4) {
18877 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18878 }
18879 let inner_offset;
18880 let mut inner_depth = depth.clone();
18881 if inlined {
18882 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18883 inner_offset = next_offset;
18884 } else {
18885 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18886 inner_depth.increment()?;
18887 }
18888 let val_ref = self.weight.get_or_insert_with(|| fidl::new_empty!(u16, D));
18889 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
18890 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18891 {
18892 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18893 }
18894 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18895 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18896 }
18897 }
18898
18899 next_offset += envelope_size;
18900 _next_ordinal_to_read += 1;
18901 if next_offset >= end_offset {
18902 return Ok(());
18903 }
18904
18905 while _next_ordinal_to_read < 7 {
18907 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18908 _next_ordinal_to_read += 1;
18909 next_offset += envelope_size;
18910 }
18911
18912 let next_out_of_line = decoder.next_out_of_line();
18913 let handles_before = decoder.remaining_handles();
18914 if let Some((inlined, num_bytes, num_handles)) =
18915 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18916 {
18917 let member_inline_size =
18918 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18919 if inlined != (member_inline_size <= 4) {
18920 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18921 }
18922 let inner_offset;
18923 let mut inner_depth = depth.clone();
18924 if inlined {
18925 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18926 inner_offset = next_offset;
18927 } else {
18928 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18929 inner_depth.increment()?;
18930 }
18931 let val_ref = self.ttl.get_or_insert_with(|| fidl::new_empty!(i64, D));
18932 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
18933 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18934 {
18935 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18936 }
18937 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18938 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18939 }
18940 }
18941
18942 next_offset += envelope_size;
18943 _next_ordinal_to_read += 1;
18944 if next_offset >= end_offset {
18945 return Ok(());
18946 }
18947
18948 while _next_ordinal_to_read < 8 {
18950 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18951 _next_ordinal_to_read += 1;
18952 next_offset += envelope_size;
18953 }
18954
18955 let next_out_of_line = decoder.next_out_of_line();
18956 let handles_before = decoder.remaining_handles();
18957 if let Some((inlined, num_bytes, num_handles)) =
18958 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18959 {
18960 let member_inline_size =
18961 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18962 if inlined != (member_inline_size <= 4) {
18963 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18964 }
18965 let inner_offset;
18966 let mut inner_depth = depth.clone();
18967 if inlined {
18968 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18969 inner_offset = next_offset;
18970 } else {
18971 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18972 inner_depth.increment()?;
18973 }
18974 let val_ref = self.lease.get_or_insert_with(|| fidl::new_empty!(i64, D));
18975 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
18976 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18977 {
18978 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18979 }
18980 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18981 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18982 }
18983 }
18984
18985 next_offset += envelope_size;
18986 _next_ordinal_to_read += 1;
18987 if next_offset >= end_offset {
18988 return Ok(());
18989 }
18990
18991 while _next_ordinal_to_read < 9 {
18993 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18994 _next_ordinal_to_read += 1;
18995 next_offset += envelope_size;
18996 }
18997
18998 let next_out_of_line = decoder.next_out_of_line();
18999 let handles_before = decoder.remaining_handles();
19000 if let Some((inlined, num_bytes, num_handles)) =
19001 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19002 {
19003 let member_inline_size =
19004 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19005 if inlined != (member_inline_size <= 4) {
19006 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19007 }
19008 let inner_offset;
19009 let mut inner_depth = depth.clone();
19010 if inlined {
19011 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19012 inner_offset = next_offset;
19013 } else {
19014 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19015 inner_depth.increment()?;
19016 }
19017 let val_ref = self.key_lease.get_or_insert_with(|| fidl::new_empty!(i64, D));
19018 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
19019 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19020 {
19021 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19022 }
19023 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19024 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19025 }
19026 }
19027
19028 next_offset += envelope_size;
19029 _next_ordinal_to_read += 1;
19030 if next_offset >= end_offset {
19031 return Ok(());
19032 }
19033
19034 while _next_ordinal_to_read < 10 {
19036 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19037 _next_ordinal_to_read += 1;
19038 next_offset += envelope_size;
19039 }
19040
19041 let next_out_of_line = decoder.next_out_of_line();
19042 let handles_before = decoder.remaining_handles();
19043 if let Some((inlined, num_bytes, num_handles)) =
19044 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19045 {
19046 let member_inline_size = <fidl::encoding::UnboundedVector<DnsTxtEntry> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19047 if inlined != (member_inline_size <= 4) {
19048 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19049 }
19050 let inner_offset;
19051 let mut inner_depth = depth.clone();
19052 if inlined {
19053 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19054 inner_offset = next_offset;
19055 } else {
19056 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19057 inner_depth.increment()?;
19058 }
19059 let val_ref = self.txt_data.get_or_insert_with(|| {
19060 fidl::new_empty!(fidl::encoding::UnboundedVector<DnsTxtEntry>, D)
19061 });
19062 fidl::decode!(
19063 fidl::encoding::UnboundedVector<DnsTxtEntry>,
19064 D,
19065 val_ref,
19066 decoder,
19067 inner_offset,
19068 inner_depth
19069 )?;
19070 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19071 {
19072 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19073 }
19074 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19075 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19076 }
19077 }
19078
19079 next_offset += envelope_size;
19080 _next_ordinal_to_read += 1;
19081 if next_offset >= end_offset {
19082 return Ok(());
19083 }
19084
19085 while _next_ordinal_to_read < 11 {
19087 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19088 _next_ordinal_to_read += 1;
19089 next_offset += envelope_size;
19090 }
19091
19092 let next_out_of_line = decoder.next_out_of_line();
19093 let handles_before = decoder.remaining_handles();
19094 if let Some((inlined, num_bytes, num_handles)) =
19095 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19096 {
19097 let member_inline_size =
19098 <SrpServerHost as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19099 if inlined != (member_inline_size <= 4) {
19100 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19101 }
19102 let inner_offset;
19103 let mut inner_depth = depth.clone();
19104 if inlined {
19105 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19106 inner_offset = next_offset;
19107 } else {
19108 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19109 inner_depth.increment()?;
19110 }
19111 let val_ref = self.host.get_or_insert_with(|| fidl::new_empty!(SrpServerHost, D));
19112 fidl::decode!(SrpServerHost, D, val_ref, decoder, inner_offset, inner_depth)?;
19113 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19114 {
19115 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19116 }
19117 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19118 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19119 }
19120 }
19121
19122 next_offset += envelope_size;
19123
19124 while next_offset < end_offset {
19126 _next_ordinal_to_read += 1;
19127 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19128 next_offset += envelope_size;
19129 }
19130
19131 Ok(())
19132 }
19133 }
19134
19135 impl Telemetry {
19136 #[inline(always)]
19137 fn max_ordinal_present(&self) -> u64 {
19138 if let Some(_) = self.router_info {
19139 return 32;
19140 }
19141 if let Some(_) = self.multiradio_neighbor_info {
19142 return 31;
19143 }
19144 if let Some(_) = self.active_dataset {
19145 return 30;
19146 }
19147 if let Some(_) = self.border_routing_routers {
19148 return 29;
19149 }
19150 if let Some(_) = self.border_routing_peers {
19151 return 28;
19152 }
19153 if let Some(_) = self.extended_pan_id {
19154 return 27;
19155 }
19156 if let Some(_) = self.multi_ail_detected {
19157 return 26;
19158 }
19159 if let Some(_) = self.border_agent_counters {
19160 return 25;
19161 }
19162 if let Some(_) = self.link_metrics_entries {
19163 return 24;
19164 }
19165 if let Some(_) = self.dhcp6pd_info {
19166 return 23;
19167 }
19168 if let Some(_) = self.upstream_dns_info {
19169 return 22;
19170 }
19171 if let Some(_) = self.trel_peers_info {
19172 return 21;
19173 }
19174 if let Some(_) = self.trel_counters {
19175 return 20;
19176 }
19177 if let Some(_) = self.nat64_info {
19178 return 19;
19179 }
19180 if let Some(_) = self.uptime {
19181 return 18;
19182 }
19183 if let Some(_) = self.leader_data {
19184 return 17;
19185 }
19186 if let Some(_) = self.dnssd_counters {
19187 return 16;
19188 }
19189 if let Some(_) = self.srp_server_info {
19190 return 15;
19191 }
19192 if let Some(_) = self.thread_border_routing_counters {
19193 return 14;
19194 }
19195 if let Some(_) = self.thread_stable_network_data {
19196 return 13;
19197 }
19198 if let Some(_) = self.thread_network_data {
19199 return 12;
19200 }
19201 if let Some(_) = self.thread_stable_network_data_version {
19202 return 11;
19203 }
19204 if let Some(_) = self.thread_network_data_version {
19205 return 10;
19206 }
19207 if let Some(_) = self.thread_rloc {
19208 return 9;
19209 }
19210 if let Some(_) = self.thread_router_id {
19211 return 8;
19212 }
19213 if let Some(_) = self.thread_link_mode {
19214 return 7;
19215 }
19216 if let Some(_) = self.rcp_version {
19217 return 6;
19218 }
19219 if let Some(_) = self.stack_version {
19220 return 5;
19221 }
19222 if let Some(_) = self.partition_id {
19223 return 4;
19224 }
19225 if let Some(_) = self.channel_index {
19226 return 3;
19227 }
19228 if let Some(_) = self.tx_power {
19229 return 2;
19230 }
19231 if let Some(_) = self.rssi {
19232 return 1;
19233 }
19234 0
19235 }
19236 }
19237
19238 impl fidl::encoding::ValueTypeMarker for Telemetry {
19239 type Borrowed<'a> = &'a Self;
19240 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
19241 value
19242 }
19243 }
19244
19245 unsafe impl fidl::encoding::TypeMarker for Telemetry {
19246 type Owned = Self;
19247
19248 #[inline(always)]
19249 fn inline_align(_context: fidl::encoding::Context) -> usize {
19250 8
19251 }
19252
19253 #[inline(always)]
19254 fn inline_size(_context: fidl::encoding::Context) -> usize {
19255 16
19256 }
19257 }
19258
19259 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Telemetry, D>
19260 for &Telemetry
19261 {
19262 unsafe fn encode(
19263 self,
19264 encoder: &mut fidl::encoding::Encoder<'_, D>,
19265 offset: usize,
19266 mut depth: fidl::encoding::Depth,
19267 ) -> fidl::Result<()> {
19268 encoder.debug_check_bounds::<Telemetry>(offset);
19269 let max_ordinal: u64 = self.max_ordinal_present();
19271 encoder.write_num(max_ordinal, offset);
19272 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
19273 if max_ordinal == 0 {
19275 return Ok(());
19276 }
19277 depth.increment()?;
19278 let envelope_size = 8;
19279 let bytes_len = max_ordinal as usize * envelope_size;
19280 #[allow(unused_variables)]
19281 let offset = encoder.out_of_line_offset(bytes_len);
19282 let mut _prev_end_offset: usize = 0;
19283 if 1 > max_ordinal {
19284 return Ok(());
19285 }
19286
19287 let cur_offset: usize = (1 - 1) * envelope_size;
19290
19291 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19293
19294 fidl::encoding::encode_in_envelope_optional::<i8, D>(
19299 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
19300 encoder,
19301 offset + cur_offset,
19302 depth,
19303 )?;
19304
19305 _prev_end_offset = cur_offset + envelope_size;
19306 if 2 > max_ordinal {
19307 return Ok(());
19308 }
19309
19310 let cur_offset: usize = (2 - 1) * envelope_size;
19313
19314 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19316
19317 fidl::encoding::encode_in_envelope_optional::<i8, D>(
19322 self.tx_power.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
19323 encoder,
19324 offset + cur_offset,
19325 depth,
19326 )?;
19327
19328 _prev_end_offset = cur_offset + envelope_size;
19329 if 3 > max_ordinal {
19330 return Ok(());
19331 }
19332
19333 let cur_offset: usize = (3 - 1) * envelope_size;
19336
19337 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19339
19340 fidl::encoding::encode_in_envelope_optional::<u16, D>(
19345 self.channel_index.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
19346 encoder,
19347 offset + cur_offset,
19348 depth,
19349 )?;
19350
19351 _prev_end_offset = cur_offset + envelope_size;
19352 if 4 > max_ordinal {
19353 return Ok(());
19354 }
19355
19356 let cur_offset: usize = (4 - 1) * envelope_size;
19359
19360 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19362
19363 fidl::encoding::encode_in_envelope_optional::<u32, D>(
19368 self.partition_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
19369 encoder,
19370 offset + cur_offset,
19371 depth,
19372 )?;
19373
19374 _prev_end_offset = cur_offset + envelope_size;
19375 if 5 > max_ordinal {
19376 return Ok(());
19377 }
19378
19379 let cur_offset: usize = (5 - 1) * envelope_size;
19382
19383 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19385
19386 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
19391 self.stack_version.as_ref().map(
19392 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
19393 ),
19394 encoder,
19395 offset + cur_offset,
19396 depth,
19397 )?;
19398
19399 _prev_end_offset = cur_offset + envelope_size;
19400 if 6 > max_ordinal {
19401 return Ok(());
19402 }
19403
19404 let cur_offset: usize = (6 - 1) * envelope_size;
19407
19408 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19410
19411 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
19416 self.rcp_version.as_ref().map(
19417 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
19418 ),
19419 encoder,
19420 offset + cur_offset,
19421 depth,
19422 )?;
19423
19424 _prev_end_offset = cur_offset + envelope_size;
19425 if 7 > max_ordinal {
19426 return Ok(());
19427 }
19428
19429 let cur_offset: usize = (7 - 1) * envelope_size;
19432
19433 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19435
19436 fidl::encoding::encode_in_envelope_optional::<u8, D>(
19441 self.thread_link_mode.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
19442 encoder,
19443 offset + cur_offset,
19444 depth,
19445 )?;
19446
19447 _prev_end_offset = cur_offset + envelope_size;
19448 if 8 > max_ordinal {
19449 return Ok(());
19450 }
19451
19452 let cur_offset: usize = (8 - 1) * envelope_size;
19455
19456 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19458
19459 fidl::encoding::encode_in_envelope_optional::<u8, D>(
19464 self.thread_router_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
19465 encoder,
19466 offset + cur_offset,
19467 depth,
19468 )?;
19469
19470 _prev_end_offset = cur_offset + envelope_size;
19471 if 9 > max_ordinal {
19472 return Ok(());
19473 }
19474
19475 let cur_offset: usize = (9 - 1) * envelope_size;
19478
19479 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19481
19482 fidl::encoding::encode_in_envelope_optional::<u16, D>(
19487 self.thread_rloc.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
19488 encoder,
19489 offset + cur_offset,
19490 depth,
19491 )?;
19492
19493 _prev_end_offset = cur_offset + envelope_size;
19494 if 10 > max_ordinal {
19495 return Ok(());
19496 }
19497
19498 let cur_offset: usize = (10 - 1) * envelope_size;
19501
19502 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19504
19505 fidl::encoding::encode_in_envelope_optional::<u8, D>(
19510 self.thread_network_data_version
19511 .as_ref()
19512 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
19513 encoder,
19514 offset + cur_offset,
19515 depth,
19516 )?;
19517
19518 _prev_end_offset = cur_offset + envelope_size;
19519 if 11 > max_ordinal {
19520 return Ok(());
19521 }
19522
19523 let cur_offset: usize = (11 - 1) * envelope_size;
19526
19527 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19529
19530 fidl::encoding::encode_in_envelope_optional::<u8, D>(
19535 self.thread_stable_network_data_version
19536 .as_ref()
19537 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
19538 encoder,
19539 offset + cur_offset,
19540 depth,
19541 )?;
19542
19543 _prev_end_offset = cur_offset + envelope_size;
19544 if 12 > max_ordinal {
19545 return Ok(());
19546 }
19547
19548 let cur_offset: usize = (12 - 1) * envelope_size;
19551
19552 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19554
19555 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 255>, D>(
19560 self.thread_network_data.as_ref().map(
19561 <fidl::encoding::Vector<u8, 255> as fidl::encoding::ValueTypeMarker>::borrow,
19562 ),
19563 encoder,
19564 offset + cur_offset,
19565 depth,
19566 )?;
19567
19568 _prev_end_offset = cur_offset + envelope_size;
19569 if 13 > max_ordinal {
19570 return Ok(());
19571 }
19572
19573 let cur_offset: usize = (13 - 1) * envelope_size;
19576
19577 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19579
19580 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 255>, D>(
19585 self.thread_stable_network_data.as_ref().map(
19586 <fidl::encoding::Vector<u8, 255> as fidl::encoding::ValueTypeMarker>::borrow,
19587 ),
19588 encoder,
19589 offset + cur_offset,
19590 depth,
19591 )?;
19592
19593 _prev_end_offset = cur_offset + envelope_size;
19594 if 14 > max_ordinal {
19595 return Ok(());
19596 }
19597
19598 let cur_offset: usize = (14 - 1) * envelope_size;
19601
19602 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19604
19605 fidl::encoding::encode_in_envelope_optional::<BorderRoutingCounters, D>(
19610 self.thread_border_routing_counters
19611 .as_ref()
19612 .map(<BorderRoutingCounters as fidl::encoding::ValueTypeMarker>::borrow),
19613 encoder,
19614 offset + cur_offset,
19615 depth,
19616 )?;
19617
19618 _prev_end_offset = cur_offset + envelope_size;
19619 if 15 > max_ordinal {
19620 return Ok(());
19621 }
19622
19623 let cur_offset: usize = (15 - 1) * envelope_size;
19626
19627 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19629
19630 fidl::encoding::encode_in_envelope_optional::<SrpServerInfo, D>(
19635 self.srp_server_info
19636 .as_ref()
19637 .map(<SrpServerInfo as fidl::encoding::ValueTypeMarker>::borrow),
19638 encoder,
19639 offset + cur_offset,
19640 depth,
19641 )?;
19642
19643 _prev_end_offset = cur_offset + envelope_size;
19644 if 16 > max_ordinal {
19645 return Ok(());
19646 }
19647
19648 let cur_offset: usize = (16 - 1) * envelope_size;
19651
19652 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19654
19655 fidl::encoding::encode_in_envelope_optional::<DnssdCounters, D>(
19660 self.dnssd_counters
19661 .as_ref()
19662 .map(<DnssdCounters as fidl::encoding::ValueTypeMarker>::borrow),
19663 encoder,
19664 offset + cur_offset,
19665 depth,
19666 )?;
19667
19668 _prev_end_offset = cur_offset + envelope_size;
19669 if 17 > max_ordinal {
19670 return Ok(());
19671 }
19672
19673 let cur_offset: usize = (17 - 1) * envelope_size;
19676
19677 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19679
19680 fidl::encoding::encode_in_envelope_optional::<LeaderData, D>(
19685 self.leader_data
19686 .as_ref()
19687 .map(<LeaderData as fidl::encoding::ValueTypeMarker>::borrow),
19688 encoder,
19689 offset + cur_offset,
19690 depth,
19691 )?;
19692
19693 _prev_end_offset = cur_offset + envelope_size;
19694 if 18 > max_ordinal {
19695 return Ok(());
19696 }
19697
19698 let cur_offset: usize = (18 - 1) * envelope_size;
19701
19702 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19704
19705 fidl::encoding::encode_in_envelope_optional::<i64, D>(
19710 self.uptime.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
19711 encoder,
19712 offset + cur_offset,
19713 depth,
19714 )?;
19715
19716 _prev_end_offset = cur_offset + envelope_size;
19717 if 19 > max_ordinal {
19718 return Ok(());
19719 }
19720
19721 let cur_offset: usize = (19 - 1) * envelope_size;
19724
19725 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19727
19728 fidl::encoding::encode_in_envelope_optional::<Nat64Info, D>(
19733 self.nat64_info
19734 .as_ref()
19735 .map(<Nat64Info as fidl::encoding::ValueTypeMarker>::borrow),
19736 encoder,
19737 offset + cur_offset,
19738 depth,
19739 )?;
19740
19741 _prev_end_offset = cur_offset + envelope_size;
19742 if 20 > max_ordinal {
19743 return Ok(());
19744 }
19745
19746 let cur_offset: usize = (20 - 1) * envelope_size;
19749
19750 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19752
19753 fidl::encoding::encode_in_envelope_optional::<TrelCounters, D>(
19758 self.trel_counters
19759 .as_ref()
19760 .map(<TrelCounters as fidl::encoding::ValueTypeMarker>::borrow),
19761 encoder,
19762 offset + cur_offset,
19763 depth,
19764 )?;
19765
19766 _prev_end_offset = cur_offset + envelope_size;
19767 if 21 > max_ordinal {
19768 return Ok(());
19769 }
19770
19771 let cur_offset: usize = (21 - 1) * envelope_size;
19774
19775 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19777
19778 fidl::encoding::encode_in_envelope_optional::<TrelPeersInfo, D>(
19783 self.trel_peers_info
19784 .as_ref()
19785 .map(<TrelPeersInfo as fidl::encoding::ValueTypeMarker>::borrow),
19786 encoder,
19787 offset + cur_offset,
19788 depth,
19789 )?;
19790
19791 _prev_end_offset = cur_offset + envelope_size;
19792 if 22 > max_ordinal {
19793 return Ok(());
19794 }
19795
19796 let cur_offset: usize = (22 - 1) * envelope_size;
19799
19800 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19802
19803 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsInfo, D>(
19808 self.upstream_dns_info
19809 .as_ref()
19810 .map(<UpstreamDnsInfo as fidl::encoding::ValueTypeMarker>::borrow),
19811 encoder,
19812 offset + cur_offset,
19813 depth,
19814 )?;
19815
19816 _prev_end_offset = cur_offset + envelope_size;
19817 if 23 > max_ordinal {
19818 return Ok(());
19819 }
19820
19821 let cur_offset: usize = (23 - 1) * envelope_size;
19824
19825 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19827
19828 fidl::encoding::encode_in_envelope_optional::<Dhcp6PdInfo, D>(
19833 self.dhcp6pd_info
19834 .as_ref()
19835 .map(<Dhcp6PdInfo as fidl::encoding::ValueTypeMarker>::borrow),
19836 encoder,
19837 offset + cur_offset,
19838 depth,
19839 )?;
19840
19841 _prev_end_offset = cur_offset + envelope_size;
19842 if 24 > max_ordinal {
19843 return Ok(());
19844 }
19845
19846 let cur_offset: usize = (24 - 1) * envelope_size;
19849
19850 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19852
19853 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<LinkMetricsEntry, 64>, D>(
19858 self.link_metrics_entries.as_ref().map(<fidl::encoding::Vector<LinkMetricsEntry, 64> as fidl::encoding::ValueTypeMarker>::borrow),
19859 encoder, offset + cur_offset, depth
19860 )?;
19861
19862 _prev_end_offset = cur_offset + envelope_size;
19863 if 25 > max_ordinal {
19864 return Ok(());
19865 }
19866
19867 let cur_offset: usize = (25 - 1) * envelope_size;
19870
19871 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19873
19874 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan_device__common::BorderAgentCounters, D>(
19879 self.border_agent_counters.as_ref().map(<fidl_fuchsia_lowpan_device__common::BorderAgentCounters as fidl::encoding::ValueTypeMarker>::borrow),
19880 encoder, offset + cur_offset, depth
19881 )?;
19882
19883 _prev_end_offset = cur_offset + envelope_size;
19884 if 26 > max_ordinal {
19885 return Ok(());
19886 }
19887
19888 let cur_offset: usize = (26 - 1) * envelope_size;
19891
19892 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19894
19895 fidl::encoding::encode_in_envelope_optional::<bool, D>(
19900 self.multi_ail_detected
19901 .as_ref()
19902 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
19903 encoder,
19904 offset + cur_offset,
19905 depth,
19906 )?;
19907
19908 _prev_end_offset = cur_offset + envelope_size;
19909 if 27 > max_ordinal {
19910 return Ok(());
19911 }
19912
19913 let cur_offset: usize = (27 - 1) * envelope_size;
19916
19917 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19919
19920 fidl::encoding::encode_in_envelope_optional::<u64, D>(
19925 self.extended_pan_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
19926 encoder,
19927 offset + cur_offset,
19928 depth,
19929 )?;
19930
19931 _prev_end_offset = cur_offset + envelope_size;
19932 if 28 > max_ordinal {
19933 return Ok(());
19934 }
19935
19936 let cur_offset: usize = (28 - 1) * envelope_size;
19939
19940 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19942
19943 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BorderRoutingPeer, 64>, D>(
19948 self.border_routing_peers.as_ref().map(<fidl::encoding::Vector<BorderRoutingPeer, 64> as fidl::encoding::ValueTypeMarker>::borrow),
19949 encoder, offset + cur_offset, depth
19950 )?;
19951
19952 _prev_end_offset = cur_offset + envelope_size;
19953 if 29 > max_ordinal {
19954 return Ok(());
19955 }
19956
19957 let cur_offset: usize = (29 - 1) * envelope_size;
19960
19961 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19963
19964 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BorderRoutingRouter, 64>, D>(
19969 self.border_routing_routers.as_ref().map(<fidl::encoding::Vector<BorderRoutingRouter, 64> as fidl::encoding::ValueTypeMarker>::borrow),
19970 encoder, offset + cur_offset, depth
19971 )?;
19972
19973 _prev_end_offset = cur_offset + envelope_size;
19974 if 30 > max_ordinal {
19975 return Ok(());
19976 }
19977
19978 let cur_offset: usize = (30 - 1) * envelope_size;
19981
19982 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19984
19985 fidl::encoding::encode_in_envelope_optional::<OperationalDataset, D>(
19990 self.active_dataset
19991 .as_ref()
19992 .map(<OperationalDataset as fidl::encoding::ValueTypeMarker>::borrow),
19993 encoder,
19994 offset + cur_offset,
19995 depth,
19996 )?;
19997
19998 _prev_end_offset = cur_offset + envelope_size;
19999 if 31 > max_ordinal {
20000 return Ok(());
20001 }
20002
20003 let cur_offset: usize = (31 - 1) * envelope_size;
20006
20007 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20009
20010 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<MultiRadioNeighborInfo, 64>, D>(
20015 self.multiradio_neighbor_info.as_ref().map(<fidl::encoding::Vector<MultiRadioNeighborInfo, 64> as fidl::encoding::ValueTypeMarker>::borrow),
20016 encoder, offset + cur_offset, depth
20017 )?;
20018
20019 _prev_end_offset = cur_offset + envelope_size;
20020 if 32 > max_ordinal {
20021 return Ok(());
20022 }
20023
20024 let cur_offset: usize = (32 - 1) * envelope_size;
20027
20028 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20030
20031 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<RouterInfo, 64>, D>(
20036 self.router_info.as_ref().map(<fidl::encoding::Vector<RouterInfo, 64> as fidl::encoding::ValueTypeMarker>::borrow),
20037 encoder, offset + cur_offset, depth
20038 )?;
20039
20040 _prev_end_offset = cur_offset + envelope_size;
20041
20042 Ok(())
20043 }
20044 }
20045
20046 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Telemetry {
20047 #[inline(always)]
20048 fn new_empty() -> Self {
20049 Self::default()
20050 }
20051
20052 unsafe fn decode(
20053 &mut self,
20054 decoder: &mut fidl::encoding::Decoder<'_, D>,
20055 offset: usize,
20056 mut depth: fidl::encoding::Depth,
20057 ) -> fidl::Result<()> {
20058 decoder.debug_check_bounds::<Self>(offset);
20059 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
20060 None => return Err(fidl::Error::NotNullable),
20061 Some(len) => len,
20062 };
20063 if len == 0 {
20065 return Ok(());
20066 };
20067 depth.increment()?;
20068 let envelope_size = 8;
20069 let bytes_len = len * envelope_size;
20070 let offset = decoder.out_of_line_offset(bytes_len)?;
20071 let mut _next_ordinal_to_read = 0;
20073 let mut next_offset = offset;
20074 let end_offset = offset + bytes_len;
20075 _next_ordinal_to_read += 1;
20076 if next_offset >= end_offset {
20077 return Ok(());
20078 }
20079
20080 while _next_ordinal_to_read < 1 {
20082 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20083 _next_ordinal_to_read += 1;
20084 next_offset += envelope_size;
20085 }
20086
20087 let next_out_of_line = decoder.next_out_of_line();
20088 let handles_before = decoder.remaining_handles();
20089 if let Some((inlined, num_bytes, num_handles)) =
20090 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20091 {
20092 let member_inline_size =
20093 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20094 if inlined != (member_inline_size <= 4) {
20095 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20096 }
20097 let inner_offset;
20098 let mut inner_depth = depth.clone();
20099 if inlined {
20100 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20101 inner_offset = next_offset;
20102 } else {
20103 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20104 inner_depth.increment()?;
20105 }
20106 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
20107 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
20108 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20109 {
20110 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20111 }
20112 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20113 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20114 }
20115 }
20116
20117 next_offset += envelope_size;
20118 _next_ordinal_to_read += 1;
20119 if next_offset >= end_offset {
20120 return Ok(());
20121 }
20122
20123 while _next_ordinal_to_read < 2 {
20125 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20126 _next_ordinal_to_read += 1;
20127 next_offset += envelope_size;
20128 }
20129
20130 let next_out_of_line = decoder.next_out_of_line();
20131 let handles_before = decoder.remaining_handles();
20132 if let Some((inlined, num_bytes, num_handles)) =
20133 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20134 {
20135 let member_inline_size =
20136 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20137 if inlined != (member_inline_size <= 4) {
20138 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20139 }
20140 let inner_offset;
20141 let mut inner_depth = depth.clone();
20142 if inlined {
20143 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20144 inner_offset = next_offset;
20145 } else {
20146 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20147 inner_depth.increment()?;
20148 }
20149 let val_ref = self.tx_power.get_or_insert_with(|| fidl::new_empty!(i8, D));
20150 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
20151 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20152 {
20153 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20154 }
20155 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20156 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20157 }
20158 }
20159
20160 next_offset += envelope_size;
20161 _next_ordinal_to_read += 1;
20162 if next_offset >= end_offset {
20163 return Ok(());
20164 }
20165
20166 while _next_ordinal_to_read < 3 {
20168 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20169 _next_ordinal_to_read += 1;
20170 next_offset += envelope_size;
20171 }
20172
20173 let next_out_of_line = decoder.next_out_of_line();
20174 let handles_before = decoder.remaining_handles();
20175 if let Some((inlined, num_bytes, num_handles)) =
20176 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20177 {
20178 let member_inline_size =
20179 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20180 if inlined != (member_inline_size <= 4) {
20181 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20182 }
20183 let inner_offset;
20184 let mut inner_depth = depth.clone();
20185 if inlined {
20186 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20187 inner_offset = next_offset;
20188 } else {
20189 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20190 inner_depth.increment()?;
20191 }
20192 let val_ref = self.channel_index.get_or_insert_with(|| fidl::new_empty!(u16, D));
20193 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
20194 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20195 {
20196 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20197 }
20198 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20199 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20200 }
20201 }
20202
20203 next_offset += envelope_size;
20204 _next_ordinal_to_read += 1;
20205 if next_offset >= end_offset {
20206 return Ok(());
20207 }
20208
20209 while _next_ordinal_to_read < 4 {
20211 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20212 _next_ordinal_to_read += 1;
20213 next_offset += envelope_size;
20214 }
20215
20216 let next_out_of_line = decoder.next_out_of_line();
20217 let handles_before = decoder.remaining_handles();
20218 if let Some((inlined, num_bytes, num_handles)) =
20219 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20220 {
20221 let member_inline_size =
20222 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20223 if inlined != (member_inline_size <= 4) {
20224 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20225 }
20226 let inner_offset;
20227 let mut inner_depth = depth.clone();
20228 if inlined {
20229 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20230 inner_offset = next_offset;
20231 } else {
20232 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20233 inner_depth.increment()?;
20234 }
20235 let val_ref = self.partition_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
20236 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
20237 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20238 {
20239 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20240 }
20241 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20242 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20243 }
20244 }
20245
20246 next_offset += envelope_size;
20247 _next_ordinal_to_read += 1;
20248 if next_offset >= end_offset {
20249 return Ok(());
20250 }
20251
20252 while _next_ordinal_to_read < 5 {
20254 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20255 _next_ordinal_to_read += 1;
20256 next_offset += envelope_size;
20257 }
20258
20259 let next_out_of_line = decoder.next_out_of_line();
20260 let handles_before = decoder.remaining_handles();
20261 if let Some((inlined, num_bytes, num_handles)) =
20262 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20263 {
20264 let member_inline_size =
20265 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
20266 decoder.context,
20267 );
20268 if inlined != (member_inline_size <= 4) {
20269 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20270 }
20271 let inner_offset;
20272 let mut inner_depth = depth.clone();
20273 if inlined {
20274 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20275 inner_offset = next_offset;
20276 } else {
20277 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20278 inner_depth.increment()?;
20279 }
20280 let val_ref = self
20281 .stack_version
20282 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
20283 fidl::decode!(
20284 fidl::encoding::BoundedString<256>,
20285 D,
20286 val_ref,
20287 decoder,
20288 inner_offset,
20289 inner_depth
20290 )?;
20291 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20292 {
20293 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20294 }
20295 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20296 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20297 }
20298 }
20299
20300 next_offset += envelope_size;
20301 _next_ordinal_to_read += 1;
20302 if next_offset >= end_offset {
20303 return Ok(());
20304 }
20305
20306 while _next_ordinal_to_read < 6 {
20308 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20309 _next_ordinal_to_read += 1;
20310 next_offset += envelope_size;
20311 }
20312
20313 let next_out_of_line = decoder.next_out_of_line();
20314 let handles_before = decoder.remaining_handles();
20315 if let Some((inlined, num_bytes, num_handles)) =
20316 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20317 {
20318 let member_inline_size =
20319 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
20320 decoder.context,
20321 );
20322 if inlined != (member_inline_size <= 4) {
20323 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20324 }
20325 let inner_offset;
20326 let mut inner_depth = depth.clone();
20327 if inlined {
20328 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20329 inner_offset = next_offset;
20330 } else {
20331 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20332 inner_depth.increment()?;
20333 }
20334 let val_ref = self
20335 .rcp_version
20336 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
20337 fidl::decode!(
20338 fidl::encoding::BoundedString<256>,
20339 D,
20340 val_ref,
20341 decoder,
20342 inner_offset,
20343 inner_depth
20344 )?;
20345 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20346 {
20347 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20348 }
20349 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20350 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20351 }
20352 }
20353
20354 next_offset += envelope_size;
20355 _next_ordinal_to_read += 1;
20356 if next_offset >= end_offset {
20357 return Ok(());
20358 }
20359
20360 while _next_ordinal_to_read < 7 {
20362 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20363 _next_ordinal_to_read += 1;
20364 next_offset += envelope_size;
20365 }
20366
20367 let next_out_of_line = decoder.next_out_of_line();
20368 let handles_before = decoder.remaining_handles();
20369 if let Some((inlined, num_bytes, num_handles)) =
20370 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20371 {
20372 let member_inline_size =
20373 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20374 if inlined != (member_inline_size <= 4) {
20375 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20376 }
20377 let inner_offset;
20378 let mut inner_depth = depth.clone();
20379 if inlined {
20380 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20381 inner_offset = next_offset;
20382 } else {
20383 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20384 inner_depth.increment()?;
20385 }
20386 let val_ref = self.thread_link_mode.get_or_insert_with(|| fidl::new_empty!(u8, D));
20387 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
20388 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20389 {
20390 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20391 }
20392 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20393 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20394 }
20395 }
20396
20397 next_offset += envelope_size;
20398 _next_ordinal_to_read += 1;
20399 if next_offset >= end_offset {
20400 return Ok(());
20401 }
20402
20403 while _next_ordinal_to_read < 8 {
20405 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20406 _next_ordinal_to_read += 1;
20407 next_offset += envelope_size;
20408 }
20409
20410 let next_out_of_line = decoder.next_out_of_line();
20411 let handles_before = decoder.remaining_handles();
20412 if let Some((inlined, num_bytes, num_handles)) =
20413 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20414 {
20415 let member_inline_size =
20416 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20417 if inlined != (member_inline_size <= 4) {
20418 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20419 }
20420 let inner_offset;
20421 let mut inner_depth = depth.clone();
20422 if inlined {
20423 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20424 inner_offset = next_offset;
20425 } else {
20426 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20427 inner_depth.increment()?;
20428 }
20429 let val_ref = self.thread_router_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
20430 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
20431 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20432 {
20433 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20434 }
20435 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20436 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20437 }
20438 }
20439
20440 next_offset += envelope_size;
20441 _next_ordinal_to_read += 1;
20442 if next_offset >= end_offset {
20443 return Ok(());
20444 }
20445
20446 while _next_ordinal_to_read < 9 {
20448 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20449 _next_ordinal_to_read += 1;
20450 next_offset += envelope_size;
20451 }
20452
20453 let next_out_of_line = decoder.next_out_of_line();
20454 let handles_before = decoder.remaining_handles();
20455 if let Some((inlined, num_bytes, num_handles)) =
20456 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20457 {
20458 let member_inline_size =
20459 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20460 if inlined != (member_inline_size <= 4) {
20461 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20462 }
20463 let inner_offset;
20464 let mut inner_depth = depth.clone();
20465 if inlined {
20466 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20467 inner_offset = next_offset;
20468 } else {
20469 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20470 inner_depth.increment()?;
20471 }
20472 let val_ref = self.thread_rloc.get_or_insert_with(|| fidl::new_empty!(u16, D));
20473 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
20474 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20475 {
20476 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20477 }
20478 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20479 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20480 }
20481 }
20482
20483 next_offset += envelope_size;
20484 _next_ordinal_to_read += 1;
20485 if next_offset >= end_offset {
20486 return Ok(());
20487 }
20488
20489 while _next_ordinal_to_read < 10 {
20491 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20492 _next_ordinal_to_read += 1;
20493 next_offset += envelope_size;
20494 }
20495
20496 let next_out_of_line = decoder.next_out_of_line();
20497 let handles_before = decoder.remaining_handles();
20498 if let Some((inlined, num_bytes, num_handles)) =
20499 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20500 {
20501 let member_inline_size =
20502 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20503 if inlined != (member_inline_size <= 4) {
20504 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20505 }
20506 let inner_offset;
20507 let mut inner_depth = depth.clone();
20508 if inlined {
20509 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20510 inner_offset = next_offset;
20511 } else {
20512 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20513 inner_depth.increment()?;
20514 }
20515 let val_ref =
20516 self.thread_network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
20517 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
20518 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20519 {
20520 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20521 }
20522 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20523 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20524 }
20525 }
20526
20527 next_offset += envelope_size;
20528 _next_ordinal_to_read += 1;
20529 if next_offset >= end_offset {
20530 return Ok(());
20531 }
20532
20533 while _next_ordinal_to_read < 11 {
20535 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20536 _next_ordinal_to_read += 1;
20537 next_offset += envelope_size;
20538 }
20539
20540 let next_out_of_line = decoder.next_out_of_line();
20541 let handles_before = decoder.remaining_handles();
20542 if let Some((inlined, num_bytes, num_handles)) =
20543 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20544 {
20545 let member_inline_size =
20546 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20547 if inlined != (member_inline_size <= 4) {
20548 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20549 }
20550 let inner_offset;
20551 let mut inner_depth = depth.clone();
20552 if inlined {
20553 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20554 inner_offset = next_offset;
20555 } else {
20556 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20557 inner_depth.increment()?;
20558 }
20559 let val_ref = self
20560 .thread_stable_network_data_version
20561 .get_or_insert_with(|| fidl::new_empty!(u8, D));
20562 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
20563 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20564 {
20565 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20566 }
20567 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20568 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20569 }
20570 }
20571
20572 next_offset += envelope_size;
20573 _next_ordinal_to_read += 1;
20574 if next_offset >= end_offset {
20575 return Ok(());
20576 }
20577
20578 while _next_ordinal_to_read < 12 {
20580 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20581 _next_ordinal_to_read += 1;
20582 next_offset += envelope_size;
20583 }
20584
20585 let next_out_of_line = decoder.next_out_of_line();
20586 let handles_before = decoder.remaining_handles();
20587 if let Some((inlined, num_bytes, num_handles)) =
20588 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20589 {
20590 let member_inline_size =
20591 <fidl::encoding::Vector<u8, 255> as fidl::encoding::TypeMarker>::inline_size(
20592 decoder.context,
20593 );
20594 if inlined != (member_inline_size <= 4) {
20595 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20596 }
20597 let inner_offset;
20598 let mut inner_depth = depth.clone();
20599 if inlined {
20600 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20601 inner_offset = next_offset;
20602 } else {
20603 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20604 inner_depth.increment()?;
20605 }
20606 let val_ref = self
20607 .thread_network_data
20608 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 255>, D));
20609 fidl::decode!(fidl::encoding::Vector<u8, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
20610 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20611 {
20612 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20613 }
20614 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20615 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20616 }
20617 }
20618
20619 next_offset += envelope_size;
20620 _next_ordinal_to_read += 1;
20621 if next_offset >= end_offset {
20622 return Ok(());
20623 }
20624
20625 while _next_ordinal_to_read < 13 {
20627 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20628 _next_ordinal_to_read += 1;
20629 next_offset += envelope_size;
20630 }
20631
20632 let next_out_of_line = decoder.next_out_of_line();
20633 let handles_before = decoder.remaining_handles();
20634 if let Some((inlined, num_bytes, num_handles)) =
20635 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20636 {
20637 let member_inline_size =
20638 <fidl::encoding::Vector<u8, 255> as fidl::encoding::TypeMarker>::inline_size(
20639 decoder.context,
20640 );
20641 if inlined != (member_inline_size <= 4) {
20642 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20643 }
20644 let inner_offset;
20645 let mut inner_depth = depth.clone();
20646 if inlined {
20647 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20648 inner_offset = next_offset;
20649 } else {
20650 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20651 inner_depth.increment()?;
20652 }
20653 let val_ref = self
20654 .thread_stable_network_data
20655 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 255>, D));
20656 fidl::decode!(fidl::encoding::Vector<u8, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
20657 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20658 {
20659 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20660 }
20661 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20662 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20663 }
20664 }
20665
20666 next_offset += envelope_size;
20667 _next_ordinal_to_read += 1;
20668 if next_offset >= end_offset {
20669 return Ok(());
20670 }
20671
20672 while _next_ordinal_to_read < 14 {
20674 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20675 _next_ordinal_to_read += 1;
20676 next_offset += envelope_size;
20677 }
20678
20679 let next_out_of_line = decoder.next_out_of_line();
20680 let handles_before = decoder.remaining_handles();
20681 if let Some((inlined, num_bytes, num_handles)) =
20682 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20683 {
20684 let member_inline_size =
20685 <BorderRoutingCounters as fidl::encoding::TypeMarker>::inline_size(
20686 decoder.context,
20687 );
20688 if inlined != (member_inline_size <= 4) {
20689 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20690 }
20691 let inner_offset;
20692 let mut inner_depth = depth.clone();
20693 if inlined {
20694 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20695 inner_offset = next_offset;
20696 } else {
20697 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20698 inner_depth.increment()?;
20699 }
20700 let val_ref = self
20701 .thread_border_routing_counters
20702 .get_or_insert_with(|| fidl::new_empty!(BorderRoutingCounters, D));
20703 fidl::decode!(
20704 BorderRoutingCounters,
20705 D,
20706 val_ref,
20707 decoder,
20708 inner_offset,
20709 inner_depth
20710 )?;
20711 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20712 {
20713 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20714 }
20715 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20716 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20717 }
20718 }
20719
20720 next_offset += envelope_size;
20721 _next_ordinal_to_read += 1;
20722 if next_offset >= end_offset {
20723 return Ok(());
20724 }
20725
20726 while _next_ordinal_to_read < 15 {
20728 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20729 _next_ordinal_to_read += 1;
20730 next_offset += envelope_size;
20731 }
20732
20733 let next_out_of_line = decoder.next_out_of_line();
20734 let handles_before = decoder.remaining_handles();
20735 if let Some((inlined, num_bytes, num_handles)) =
20736 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20737 {
20738 let member_inline_size =
20739 <SrpServerInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20740 if inlined != (member_inline_size <= 4) {
20741 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20742 }
20743 let inner_offset;
20744 let mut inner_depth = depth.clone();
20745 if inlined {
20746 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20747 inner_offset = next_offset;
20748 } else {
20749 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20750 inner_depth.increment()?;
20751 }
20752 let val_ref =
20753 self.srp_server_info.get_or_insert_with(|| fidl::new_empty!(SrpServerInfo, D));
20754 fidl::decode!(SrpServerInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
20755 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20756 {
20757 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20758 }
20759 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20760 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20761 }
20762 }
20763
20764 next_offset += envelope_size;
20765 _next_ordinal_to_read += 1;
20766 if next_offset >= end_offset {
20767 return Ok(());
20768 }
20769
20770 while _next_ordinal_to_read < 16 {
20772 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20773 _next_ordinal_to_read += 1;
20774 next_offset += envelope_size;
20775 }
20776
20777 let next_out_of_line = decoder.next_out_of_line();
20778 let handles_before = decoder.remaining_handles();
20779 if let Some((inlined, num_bytes, num_handles)) =
20780 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20781 {
20782 let member_inline_size =
20783 <DnssdCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20784 if inlined != (member_inline_size <= 4) {
20785 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20786 }
20787 let inner_offset;
20788 let mut inner_depth = depth.clone();
20789 if inlined {
20790 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20791 inner_offset = next_offset;
20792 } else {
20793 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20794 inner_depth.increment()?;
20795 }
20796 let val_ref =
20797 self.dnssd_counters.get_or_insert_with(|| fidl::new_empty!(DnssdCounters, D));
20798 fidl::decode!(DnssdCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
20799 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20800 {
20801 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20802 }
20803 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20804 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20805 }
20806 }
20807
20808 next_offset += envelope_size;
20809 _next_ordinal_to_read += 1;
20810 if next_offset >= end_offset {
20811 return Ok(());
20812 }
20813
20814 while _next_ordinal_to_read < 17 {
20816 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20817 _next_ordinal_to_read += 1;
20818 next_offset += envelope_size;
20819 }
20820
20821 let next_out_of_line = decoder.next_out_of_line();
20822 let handles_before = decoder.remaining_handles();
20823 if let Some((inlined, num_bytes, num_handles)) =
20824 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20825 {
20826 let member_inline_size =
20827 <LeaderData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20828 if inlined != (member_inline_size <= 4) {
20829 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20830 }
20831 let inner_offset;
20832 let mut inner_depth = depth.clone();
20833 if inlined {
20834 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20835 inner_offset = next_offset;
20836 } else {
20837 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20838 inner_depth.increment()?;
20839 }
20840 let val_ref =
20841 self.leader_data.get_or_insert_with(|| fidl::new_empty!(LeaderData, D));
20842 fidl::decode!(LeaderData, D, val_ref, decoder, inner_offset, inner_depth)?;
20843 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20844 {
20845 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20846 }
20847 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20848 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20849 }
20850 }
20851
20852 next_offset += envelope_size;
20853 _next_ordinal_to_read += 1;
20854 if next_offset >= end_offset {
20855 return Ok(());
20856 }
20857
20858 while _next_ordinal_to_read < 18 {
20860 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20861 _next_ordinal_to_read += 1;
20862 next_offset += envelope_size;
20863 }
20864
20865 let next_out_of_line = decoder.next_out_of_line();
20866 let handles_before = decoder.remaining_handles();
20867 if let Some((inlined, num_bytes, num_handles)) =
20868 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20869 {
20870 let member_inline_size =
20871 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20872 if inlined != (member_inline_size <= 4) {
20873 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20874 }
20875 let inner_offset;
20876 let mut inner_depth = depth.clone();
20877 if inlined {
20878 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20879 inner_offset = next_offset;
20880 } else {
20881 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20882 inner_depth.increment()?;
20883 }
20884 let val_ref = self.uptime.get_or_insert_with(|| fidl::new_empty!(i64, D));
20885 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
20886 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20887 {
20888 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20889 }
20890 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20891 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20892 }
20893 }
20894
20895 next_offset += envelope_size;
20896 _next_ordinal_to_read += 1;
20897 if next_offset >= end_offset {
20898 return Ok(());
20899 }
20900
20901 while _next_ordinal_to_read < 19 {
20903 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20904 _next_ordinal_to_read += 1;
20905 next_offset += envelope_size;
20906 }
20907
20908 let next_out_of_line = decoder.next_out_of_line();
20909 let handles_before = decoder.remaining_handles();
20910 if let Some((inlined, num_bytes, num_handles)) =
20911 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20912 {
20913 let member_inline_size =
20914 <Nat64Info as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20915 if inlined != (member_inline_size <= 4) {
20916 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20917 }
20918 let inner_offset;
20919 let mut inner_depth = depth.clone();
20920 if inlined {
20921 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20922 inner_offset = next_offset;
20923 } else {
20924 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20925 inner_depth.increment()?;
20926 }
20927 let val_ref = self.nat64_info.get_or_insert_with(|| fidl::new_empty!(Nat64Info, D));
20928 fidl::decode!(Nat64Info, D, val_ref, decoder, inner_offset, inner_depth)?;
20929 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20930 {
20931 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20932 }
20933 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20934 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20935 }
20936 }
20937
20938 next_offset += envelope_size;
20939 _next_ordinal_to_read += 1;
20940 if next_offset >= end_offset {
20941 return Ok(());
20942 }
20943
20944 while _next_ordinal_to_read < 20 {
20946 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20947 _next_ordinal_to_read += 1;
20948 next_offset += envelope_size;
20949 }
20950
20951 let next_out_of_line = decoder.next_out_of_line();
20952 let handles_before = decoder.remaining_handles();
20953 if let Some((inlined, num_bytes, num_handles)) =
20954 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20955 {
20956 let member_inline_size =
20957 <TrelCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20958 if inlined != (member_inline_size <= 4) {
20959 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20960 }
20961 let inner_offset;
20962 let mut inner_depth = depth.clone();
20963 if inlined {
20964 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20965 inner_offset = next_offset;
20966 } else {
20967 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20968 inner_depth.increment()?;
20969 }
20970 let val_ref =
20971 self.trel_counters.get_or_insert_with(|| fidl::new_empty!(TrelCounters, D));
20972 fidl::decode!(TrelCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
20973 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20974 {
20975 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20976 }
20977 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20978 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20979 }
20980 }
20981
20982 next_offset += envelope_size;
20983 _next_ordinal_to_read += 1;
20984 if next_offset >= end_offset {
20985 return Ok(());
20986 }
20987
20988 while _next_ordinal_to_read < 21 {
20990 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20991 _next_ordinal_to_read += 1;
20992 next_offset += envelope_size;
20993 }
20994
20995 let next_out_of_line = decoder.next_out_of_line();
20996 let handles_before = decoder.remaining_handles();
20997 if let Some((inlined, num_bytes, num_handles)) =
20998 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20999 {
21000 let member_inline_size =
21001 <TrelPeersInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21002 if inlined != (member_inline_size <= 4) {
21003 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21004 }
21005 let inner_offset;
21006 let mut inner_depth = depth.clone();
21007 if inlined {
21008 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21009 inner_offset = next_offset;
21010 } else {
21011 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21012 inner_depth.increment()?;
21013 }
21014 let val_ref =
21015 self.trel_peers_info.get_or_insert_with(|| fidl::new_empty!(TrelPeersInfo, D));
21016 fidl::decode!(TrelPeersInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
21017 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21018 {
21019 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21020 }
21021 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21022 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21023 }
21024 }
21025
21026 next_offset += envelope_size;
21027 _next_ordinal_to_read += 1;
21028 if next_offset >= end_offset {
21029 return Ok(());
21030 }
21031
21032 while _next_ordinal_to_read < 22 {
21034 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21035 _next_ordinal_to_read += 1;
21036 next_offset += envelope_size;
21037 }
21038
21039 let next_out_of_line = decoder.next_out_of_line();
21040 let handles_before = decoder.remaining_handles();
21041 if let Some((inlined, num_bytes, num_handles)) =
21042 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21043 {
21044 let member_inline_size =
21045 <UpstreamDnsInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21046 if inlined != (member_inline_size <= 4) {
21047 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21048 }
21049 let inner_offset;
21050 let mut inner_depth = depth.clone();
21051 if inlined {
21052 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21053 inner_offset = next_offset;
21054 } else {
21055 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21056 inner_depth.increment()?;
21057 }
21058 let val_ref = self
21059 .upstream_dns_info
21060 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsInfo, D));
21061 fidl::decode!(UpstreamDnsInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
21062 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21063 {
21064 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21065 }
21066 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21067 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21068 }
21069 }
21070
21071 next_offset += envelope_size;
21072 _next_ordinal_to_read += 1;
21073 if next_offset >= end_offset {
21074 return Ok(());
21075 }
21076
21077 while _next_ordinal_to_read < 23 {
21079 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21080 _next_ordinal_to_read += 1;
21081 next_offset += envelope_size;
21082 }
21083
21084 let next_out_of_line = decoder.next_out_of_line();
21085 let handles_before = decoder.remaining_handles();
21086 if let Some((inlined, num_bytes, num_handles)) =
21087 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21088 {
21089 let member_inline_size =
21090 <Dhcp6PdInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21091 if inlined != (member_inline_size <= 4) {
21092 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21093 }
21094 let inner_offset;
21095 let mut inner_depth = depth.clone();
21096 if inlined {
21097 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21098 inner_offset = next_offset;
21099 } else {
21100 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21101 inner_depth.increment()?;
21102 }
21103 let val_ref =
21104 self.dhcp6pd_info.get_or_insert_with(|| fidl::new_empty!(Dhcp6PdInfo, D));
21105 fidl::decode!(Dhcp6PdInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
21106 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21107 {
21108 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21109 }
21110 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21111 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21112 }
21113 }
21114
21115 next_offset += envelope_size;
21116 _next_ordinal_to_read += 1;
21117 if next_offset >= end_offset {
21118 return Ok(());
21119 }
21120
21121 while _next_ordinal_to_read < 24 {
21123 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21124 _next_ordinal_to_read += 1;
21125 next_offset += envelope_size;
21126 }
21127
21128 let next_out_of_line = decoder.next_out_of_line();
21129 let handles_before = decoder.remaining_handles();
21130 if let Some((inlined, num_bytes, num_handles)) =
21131 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21132 {
21133 let member_inline_size = <fidl::encoding::Vector<LinkMetricsEntry, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21134 if inlined != (member_inline_size <= 4) {
21135 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21136 }
21137 let inner_offset;
21138 let mut inner_depth = depth.clone();
21139 if inlined {
21140 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21141 inner_offset = next_offset;
21142 } else {
21143 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21144 inner_depth.increment()?;
21145 }
21146 let val_ref = self.link_metrics_entries.get_or_insert_with(
21147 || fidl::new_empty!(fidl::encoding::Vector<LinkMetricsEntry, 64>, D),
21148 );
21149 fidl::decode!(fidl::encoding::Vector<LinkMetricsEntry, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
21150 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21151 {
21152 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21153 }
21154 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21155 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21156 }
21157 }
21158
21159 next_offset += envelope_size;
21160 _next_ordinal_to_read += 1;
21161 if next_offset >= end_offset {
21162 return Ok(());
21163 }
21164
21165 while _next_ordinal_to_read < 25 {
21167 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21168 _next_ordinal_to_read += 1;
21169 next_offset += envelope_size;
21170 }
21171
21172 let next_out_of_line = decoder.next_out_of_line();
21173 let handles_before = decoder.remaining_handles();
21174 if let Some((inlined, num_bytes, num_handles)) =
21175 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21176 {
21177 let member_inline_size = <fidl_fuchsia_lowpan_device__common::BorderAgentCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21178 if inlined != (member_inline_size <= 4) {
21179 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21180 }
21181 let inner_offset;
21182 let mut inner_depth = depth.clone();
21183 if inlined {
21184 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21185 inner_offset = next_offset;
21186 } else {
21187 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21188 inner_depth.increment()?;
21189 }
21190 let val_ref = self.border_agent_counters.get_or_insert_with(|| {
21191 fidl::new_empty!(fidl_fuchsia_lowpan_device__common::BorderAgentCounters, D)
21192 });
21193 fidl::decode!(
21194 fidl_fuchsia_lowpan_device__common::BorderAgentCounters,
21195 D,
21196 val_ref,
21197 decoder,
21198 inner_offset,
21199 inner_depth
21200 )?;
21201 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21202 {
21203 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21204 }
21205 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21206 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21207 }
21208 }
21209
21210 next_offset += envelope_size;
21211 _next_ordinal_to_read += 1;
21212 if next_offset >= end_offset {
21213 return Ok(());
21214 }
21215
21216 while _next_ordinal_to_read < 26 {
21218 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21219 _next_ordinal_to_read += 1;
21220 next_offset += envelope_size;
21221 }
21222
21223 let next_out_of_line = decoder.next_out_of_line();
21224 let handles_before = decoder.remaining_handles();
21225 if let Some((inlined, num_bytes, num_handles)) =
21226 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21227 {
21228 let member_inline_size =
21229 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21230 if inlined != (member_inline_size <= 4) {
21231 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21232 }
21233 let inner_offset;
21234 let mut inner_depth = depth.clone();
21235 if inlined {
21236 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21237 inner_offset = next_offset;
21238 } else {
21239 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21240 inner_depth.increment()?;
21241 }
21242 let val_ref =
21243 self.multi_ail_detected.get_or_insert_with(|| fidl::new_empty!(bool, D));
21244 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
21245 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21246 {
21247 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21248 }
21249 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21250 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21251 }
21252 }
21253
21254 next_offset += envelope_size;
21255 _next_ordinal_to_read += 1;
21256 if next_offset >= end_offset {
21257 return Ok(());
21258 }
21259
21260 while _next_ordinal_to_read < 27 {
21262 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21263 _next_ordinal_to_read += 1;
21264 next_offset += envelope_size;
21265 }
21266
21267 let next_out_of_line = decoder.next_out_of_line();
21268 let handles_before = decoder.remaining_handles();
21269 if let Some((inlined, num_bytes, num_handles)) =
21270 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21271 {
21272 let member_inline_size =
21273 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21274 if inlined != (member_inline_size <= 4) {
21275 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21276 }
21277 let inner_offset;
21278 let mut inner_depth = depth.clone();
21279 if inlined {
21280 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21281 inner_offset = next_offset;
21282 } else {
21283 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21284 inner_depth.increment()?;
21285 }
21286 let val_ref = self.extended_pan_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
21287 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
21288 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21289 {
21290 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21291 }
21292 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21293 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21294 }
21295 }
21296
21297 next_offset += envelope_size;
21298 _next_ordinal_to_read += 1;
21299 if next_offset >= end_offset {
21300 return Ok(());
21301 }
21302
21303 while _next_ordinal_to_read < 28 {
21305 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21306 _next_ordinal_to_read += 1;
21307 next_offset += envelope_size;
21308 }
21309
21310 let next_out_of_line = decoder.next_out_of_line();
21311 let handles_before = decoder.remaining_handles();
21312 if let Some((inlined, num_bytes, num_handles)) =
21313 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21314 {
21315 let member_inline_size = <fidl::encoding::Vector<BorderRoutingPeer, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21316 if inlined != (member_inline_size <= 4) {
21317 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21318 }
21319 let inner_offset;
21320 let mut inner_depth = depth.clone();
21321 if inlined {
21322 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21323 inner_offset = next_offset;
21324 } else {
21325 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21326 inner_depth.increment()?;
21327 }
21328 let val_ref = self.border_routing_peers.get_or_insert_with(
21329 || fidl::new_empty!(fidl::encoding::Vector<BorderRoutingPeer, 64>, D),
21330 );
21331 fidl::decode!(fidl::encoding::Vector<BorderRoutingPeer, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
21332 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21333 {
21334 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21335 }
21336 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21337 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21338 }
21339 }
21340
21341 next_offset += envelope_size;
21342 _next_ordinal_to_read += 1;
21343 if next_offset >= end_offset {
21344 return Ok(());
21345 }
21346
21347 while _next_ordinal_to_read < 29 {
21349 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21350 _next_ordinal_to_read += 1;
21351 next_offset += envelope_size;
21352 }
21353
21354 let next_out_of_line = decoder.next_out_of_line();
21355 let handles_before = decoder.remaining_handles();
21356 if let Some((inlined, num_bytes, num_handles)) =
21357 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21358 {
21359 let member_inline_size = <fidl::encoding::Vector<BorderRoutingRouter, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21360 if inlined != (member_inline_size <= 4) {
21361 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21362 }
21363 let inner_offset;
21364 let mut inner_depth = depth.clone();
21365 if inlined {
21366 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21367 inner_offset = next_offset;
21368 } else {
21369 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21370 inner_depth.increment()?;
21371 }
21372 let val_ref = self.border_routing_routers.get_or_insert_with(
21373 || fidl::new_empty!(fidl::encoding::Vector<BorderRoutingRouter, 64>, D),
21374 );
21375 fidl::decode!(fidl::encoding::Vector<BorderRoutingRouter, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
21376 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21377 {
21378 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21379 }
21380 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21381 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21382 }
21383 }
21384
21385 next_offset += envelope_size;
21386 _next_ordinal_to_read += 1;
21387 if next_offset >= end_offset {
21388 return Ok(());
21389 }
21390
21391 while _next_ordinal_to_read < 30 {
21393 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21394 _next_ordinal_to_read += 1;
21395 next_offset += envelope_size;
21396 }
21397
21398 let next_out_of_line = decoder.next_out_of_line();
21399 let handles_before = decoder.remaining_handles();
21400 if let Some((inlined, num_bytes, num_handles)) =
21401 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21402 {
21403 let member_inline_size =
21404 <OperationalDataset as fidl::encoding::TypeMarker>::inline_size(
21405 decoder.context,
21406 );
21407 if inlined != (member_inline_size <= 4) {
21408 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21409 }
21410 let inner_offset;
21411 let mut inner_depth = depth.clone();
21412 if inlined {
21413 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21414 inner_offset = next_offset;
21415 } else {
21416 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21417 inner_depth.increment()?;
21418 }
21419 let val_ref = self
21420 .active_dataset
21421 .get_or_insert_with(|| fidl::new_empty!(OperationalDataset, D));
21422 fidl::decode!(OperationalDataset, D, val_ref, decoder, inner_offset, inner_depth)?;
21423 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21424 {
21425 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21426 }
21427 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21428 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21429 }
21430 }
21431
21432 next_offset += envelope_size;
21433 _next_ordinal_to_read += 1;
21434 if next_offset >= end_offset {
21435 return Ok(());
21436 }
21437
21438 while _next_ordinal_to_read < 31 {
21440 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21441 _next_ordinal_to_read += 1;
21442 next_offset += envelope_size;
21443 }
21444
21445 let next_out_of_line = decoder.next_out_of_line();
21446 let handles_before = decoder.remaining_handles();
21447 if let Some((inlined, num_bytes, num_handles)) =
21448 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21449 {
21450 let member_inline_size = <fidl::encoding::Vector<MultiRadioNeighborInfo, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21451 if inlined != (member_inline_size <= 4) {
21452 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21453 }
21454 let inner_offset;
21455 let mut inner_depth = depth.clone();
21456 if inlined {
21457 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21458 inner_offset = next_offset;
21459 } else {
21460 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21461 inner_depth.increment()?;
21462 }
21463 let val_ref = self.multiradio_neighbor_info.get_or_insert_with(
21464 || fidl::new_empty!(fidl::encoding::Vector<MultiRadioNeighborInfo, 64>, D),
21465 );
21466 fidl::decode!(fidl::encoding::Vector<MultiRadioNeighborInfo, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
21467 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21468 {
21469 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21470 }
21471 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21472 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21473 }
21474 }
21475
21476 next_offset += envelope_size;
21477 _next_ordinal_to_read += 1;
21478 if next_offset >= end_offset {
21479 return Ok(());
21480 }
21481
21482 while _next_ordinal_to_read < 32 {
21484 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21485 _next_ordinal_to_read += 1;
21486 next_offset += envelope_size;
21487 }
21488
21489 let next_out_of_line = decoder.next_out_of_line();
21490 let handles_before = decoder.remaining_handles();
21491 if let Some((inlined, num_bytes, num_handles)) =
21492 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21493 {
21494 let member_inline_size = <fidl::encoding::Vector<RouterInfo, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21495 if inlined != (member_inline_size <= 4) {
21496 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21497 }
21498 let inner_offset;
21499 let mut inner_depth = depth.clone();
21500 if inlined {
21501 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21502 inner_offset = next_offset;
21503 } else {
21504 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21505 inner_depth.increment()?;
21506 }
21507 let val_ref = self.router_info.get_or_insert_with(
21508 || fidl::new_empty!(fidl::encoding::Vector<RouterInfo, 64>, D),
21509 );
21510 fidl::decode!(fidl::encoding::Vector<RouterInfo, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
21511 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21512 {
21513 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21514 }
21515 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21516 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21517 }
21518 }
21519
21520 next_offset += envelope_size;
21521
21522 while next_offset < end_offset {
21524 _next_ordinal_to_read += 1;
21525 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21526 next_offset += envelope_size;
21527 }
21528
21529 Ok(())
21530 }
21531 }
21532
21533 impl TrelCounters {
21534 #[inline(always)]
21535 fn max_ordinal_present(&self) -> u64 {
21536 if let Some(_) = self.tx_packets {
21537 return 5;
21538 }
21539 if let Some(_) = self.tx_failure {
21540 return 4;
21541 }
21542 if let Some(_) = self.tx_bytes {
21543 return 3;
21544 }
21545 if let Some(_) = self.rx_packets {
21546 return 2;
21547 }
21548 if let Some(_) = self.rx_bytes {
21549 return 1;
21550 }
21551 0
21552 }
21553 }
21554
21555 impl fidl::encoding::ValueTypeMarker for TrelCounters {
21556 type Borrowed<'a> = &'a Self;
21557 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
21558 value
21559 }
21560 }
21561
21562 unsafe impl fidl::encoding::TypeMarker for TrelCounters {
21563 type Owned = Self;
21564
21565 #[inline(always)]
21566 fn inline_align(_context: fidl::encoding::Context) -> usize {
21567 8
21568 }
21569
21570 #[inline(always)]
21571 fn inline_size(_context: fidl::encoding::Context) -> usize {
21572 16
21573 }
21574 }
21575
21576 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TrelCounters, D>
21577 for &TrelCounters
21578 {
21579 unsafe fn encode(
21580 self,
21581 encoder: &mut fidl::encoding::Encoder<'_, D>,
21582 offset: usize,
21583 mut depth: fidl::encoding::Depth,
21584 ) -> fidl::Result<()> {
21585 encoder.debug_check_bounds::<TrelCounters>(offset);
21586 let max_ordinal: u64 = self.max_ordinal_present();
21588 encoder.write_num(max_ordinal, offset);
21589 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
21590 if max_ordinal == 0 {
21592 return Ok(());
21593 }
21594 depth.increment()?;
21595 let envelope_size = 8;
21596 let bytes_len = max_ordinal as usize * envelope_size;
21597 #[allow(unused_variables)]
21598 let offset = encoder.out_of_line_offset(bytes_len);
21599 let mut _prev_end_offset: usize = 0;
21600 if 1 > max_ordinal {
21601 return Ok(());
21602 }
21603
21604 let cur_offset: usize = (1 - 1) * envelope_size;
21607
21608 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21610
21611 fidl::encoding::encode_in_envelope_optional::<u64, D>(
21616 self.rx_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
21617 encoder,
21618 offset + cur_offset,
21619 depth,
21620 )?;
21621
21622 _prev_end_offset = cur_offset + envelope_size;
21623 if 2 > max_ordinal {
21624 return Ok(());
21625 }
21626
21627 let cur_offset: usize = (2 - 1) * envelope_size;
21630
21631 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21633
21634 fidl::encoding::encode_in_envelope_optional::<u64, D>(
21639 self.rx_packets.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
21640 encoder,
21641 offset + cur_offset,
21642 depth,
21643 )?;
21644
21645 _prev_end_offset = cur_offset + envelope_size;
21646 if 3 > max_ordinal {
21647 return Ok(());
21648 }
21649
21650 let cur_offset: usize = (3 - 1) * envelope_size;
21653
21654 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21656
21657 fidl::encoding::encode_in_envelope_optional::<u64, D>(
21662 self.tx_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
21663 encoder,
21664 offset + cur_offset,
21665 depth,
21666 )?;
21667
21668 _prev_end_offset = cur_offset + envelope_size;
21669 if 4 > max_ordinal {
21670 return Ok(());
21671 }
21672
21673 let cur_offset: usize = (4 - 1) * envelope_size;
21676
21677 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21679
21680 fidl::encoding::encode_in_envelope_optional::<u64, D>(
21685 self.tx_failure.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
21686 encoder,
21687 offset + cur_offset,
21688 depth,
21689 )?;
21690
21691 _prev_end_offset = cur_offset + envelope_size;
21692 if 5 > max_ordinal {
21693 return Ok(());
21694 }
21695
21696 let cur_offset: usize = (5 - 1) * envelope_size;
21699
21700 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21702
21703 fidl::encoding::encode_in_envelope_optional::<u64, D>(
21708 self.tx_packets.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
21709 encoder,
21710 offset + cur_offset,
21711 depth,
21712 )?;
21713
21714 _prev_end_offset = cur_offset + envelope_size;
21715
21716 Ok(())
21717 }
21718 }
21719
21720 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TrelCounters {
21721 #[inline(always)]
21722 fn new_empty() -> Self {
21723 Self::default()
21724 }
21725
21726 unsafe fn decode(
21727 &mut self,
21728 decoder: &mut fidl::encoding::Decoder<'_, D>,
21729 offset: usize,
21730 mut depth: fidl::encoding::Depth,
21731 ) -> fidl::Result<()> {
21732 decoder.debug_check_bounds::<Self>(offset);
21733 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
21734 None => return Err(fidl::Error::NotNullable),
21735 Some(len) => len,
21736 };
21737 if len == 0 {
21739 return Ok(());
21740 };
21741 depth.increment()?;
21742 let envelope_size = 8;
21743 let bytes_len = len * envelope_size;
21744 let offset = decoder.out_of_line_offset(bytes_len)?;
21745 let mut _next_ordinal_to_read = 0;
21747 let mut next_offset = offset;
21748 let end_offset = offset + bytes_len;
21749 _next_ordinal_to_read += 1;
21750 if next_offset >= end_offset {
21751 return Ok(());
21752 }
21753
21754 while _next_ordinal_to_read < 1 {
21756 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21757 _next_ordinal_to_read += 1;
21758 next_offset += envelope_size;
21759 }
21760
21761 let next_out_of_line = decoder.next_out_of_line();
21762 let handles_before = decoder.remaining_handles();
21763 if let Some((inlined, num_bytes, num_handles)) =
21764 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21765 {
21766 let member_inline_size =
21767 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21768 if inlined != (member_inline_size <= 4) {
21769 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21770 }
21771 let inner_offset;
21772 let mut inner_depth = depth.clone();
21773 if inlined {
21774 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21775 inner_offset = next_offset;
21776 } else {
21777 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21778 inner_depth.increment()?;
21779 }
21780 let val_ref = self.rx_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
21781 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
21782 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21783 {
21784 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21785 }
21786 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21787 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21788 }
21789 }
21790
21791 next_offset += envelope_size;
21792 _next_ordinal_to_read += 1;
21793 if next_offset >= end_offset {
21794 return Ok(());
21795 }
21796
21797 while _next_ordinal_to_read < 2 {
21799 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21800 _next_ordinal_to_read += 1;
21801 next_offset += envelope_size;
21802 }
21803
21804 let next_out_of_line = decoder.next_out_of_line();
21805 let handles_before = decoder.remaining_handles();
21806 if let Some((inlined, num_bytes, num_handles)) =
21807 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21808 {
21809 let member_inline_size =
21810 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21811 if inlined != (member_inline_size <= 4) {
21812 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21813 }
21814 let inner_offset;
21815 let mut inner_depth = depth.clone();
21816 if inlined {
21817 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21818 inner_offset = next_offset;
21819 } else {
21820 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21821 inner_depth.increment()?;
21822 }
21823 let val_ref = self.rx_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
21824 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
21825 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21826 {
21827 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21828 }
21829 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21830 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21831 }
21832 }
21833
21834 next_offset += envelope_size;
21835 _next_ordinal_to_read += 1;
21836 if next_offset >= end_offset {
21837 return Ok(());
21838 }
21839
21840 while _next_ordinal_to_read < 3 {
21842 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21843 _next_ordinal_to_read += 1;
21844 next_offset += envelope_size;
21845 }
21846
21847 let next_out_of_line = decoder.next_out_of_line();
21848 let handles_before = decoder.remaining_handles();
21849 if let Some((inlined, num_bytes, num_handles)) =
21850 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21851 {
21852 let member_inline_size =
21853 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21854 if inlined != (member_inline_size <= 4) {
21855 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21856 }
21857 let inner_offset;
21858 let mut inner_depth = depth.clone();
21859 if inlined {
21860 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21861 inner_offset = next_offset;
21862 } else {
21863 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21864 inner_depth.increment()?;
21865 }
21866 let val_ref = self.tx_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
21867 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
21868 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21869 {
21870 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21871 }
21872 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21873 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21874 }
21875 }
21876
21877 next_offset += envelope_size;
21878 _next_ordinal_to_read += 1;
21879 if next_offset >= end_offset {
21880 return Ok(());
21881 }
21882
21883 while _next_ordinal_to_read < 4 {
21885 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21886 _next_ordinal_to_read += 1;
21887 next_offset += envelope_size;
21888 }
21889
21890 let next_out_of_line = decoder.next_out_of_line();
21891 let handles_before = decoder.remaining_handles();
21892 if let Some((inlined, num_bytes, num_handles)) =
21893 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21894 {
21895 let member_inline_size =
21896 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21897 if inlined != (member_inline_size <= 4) {
21898 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21899 }
21900 let inner_offset;
21901 let mut inner_depth = depth.clone();
21902 if inlined {
21903 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21904 inner_offset = next_offset;
21905 } else {
21906 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21907 inner_depth.increment()?;
21908 }
21909 let val_ref = self.tx_failure.get_or_insert_with(|| fidl::new_empty!(u64, D));
21910 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
21911 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21912 {
21913 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21914 }
21915 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21916 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21917 }
21918 }
21919
21920 next_offset += envelope_size;
21921 _next_ordinal_to_read += 1;
21922 if next_offset >= end_offset {
21923 return Ok(());
21924 }
21925
21926 while _next_ordinal_to_read < 5 {
21928 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21929 _next_ordinal_to_read += 1;
21930 next_offset += envelope_size;
21931 }
21932
21933 let next_out_of_line = decoder.next_out_of_line();
21934 let handles_before = decoder.remaining_handles();
21935 if let Some((inlined, num_bytes, num_handles)) =
21936 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21937 {
21938 let member_inline_size =
21939 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21940 if inlined != (member_inline_size <= 4) {
21941 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21942 }
21943 let inner_offset;
21944 let mut inner_depth = depth.clone();
21945 if inlined {
21946 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21947 inner_offset = next_offset;
21948 } else {
21949 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21950 inner_depth.increment()?;
21951 }
21952 let val_ref = self.tx_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
21953 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
21954 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21955 {
21956 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21957 }
21958 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21959 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21960 }
21961 }
21962
21963 next_offset += envelope_size;
21964
21965 while next_offset < end_offset {
21967 _next_ordinal_to_read += 1;
21968 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21969 next_offset += envelope_size;
21970 }
21971
21972 Ok(())
21973 }
21974 }
21975
21976 impl TrelPeersInfo {
21977 #[inline(always)]
21978 fn max_ordinal_present(&self) -> u64 {
21979 if let Some(_) = self.num_trel_peers {
21980 return 1;
21981 }
21982 0
21983 }
21984 }
21985
21986 impl fidl::encoding::ValueTypeMarker for TrelPeersInfo {
21987 type Borrowed<'a> = &'a Self;
21988 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
21989 value
21990 }
21991 }
21992
21993 unsafe impl fidl::encoding::TypeMarker for TrelPeersInfo {
21994 type Owned = Self;
21995
21996 #[inline(always)]
21997 fn inline_align(_context: fidl::encoding::Context) -> usize {
21998 8
21999 }
22000
22001 #[inline(always)]
22002 fn inline_size(_context: fidl::encoding::Context) -> usize {
22003 16
22004 }
22005 }
22006
22007 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TrelPeersInfo, D>
22008 for &TrelPeersInfo
22009 {
22010 unsafe fn encode(
22011 self,
22012 encoder: &mut fidl::encoding::Encoder<'_, D>,
22013 offset: usize,
22014 mut depth: fidl::encoding::Depth,
22015 ) -> fidl::Result<()> {
22016 encoder.debug_check_bounds::<TrelPeersInfo>(offset);
22017 let max_ordinal: u64 = self.max_ordinal_present();
22019 encoder.write_num(max_ordinal, offset);
22020 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
22021 if max_ordinal == 0 {
22023 return Ok(());
22024 }
22025 depth.increment()?;
22026 let envelope_size = 8;
22027 let bytes_len = max_ordinal as usize * envelope_size;
22028 #[allow(unused_variables)]
22029 let offset = encoder.out_of_line_offset(bytes_len);
22030 let mut _prev_end_offset: usize = 0;
22031 if 1 > max_ordinal {
22032 return Ok(());
22033 }
22034
22035 let cur_offset: usize = (1 - 1) * envelope_size;
22038
22039 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22041
22042 fidl::encoding::encode_in_envelope_optional::<u16, D>(
22047 self.num_trel_peers.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
22048 encoder,
22049 offset + cur_offset,
22050 depth,
22051 )?;
22052
22053 _prev_end_offset = cur_offset + envelope_size;
22054
22055 Ok(())
22056 }
22057 }
22058
22059 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TrelPeersInfo {
22060 #[inline(always)]
22061 fn new_empty() -> Self {
22062 Self::default()
22063 }
22064
22065 unsafe fn decode(
22066 &mut self,
22067 decoder: &mut fidl::encoding::Decoder<'_, D>,
22068 offset: usize,
22069 mut depth: fidl::encoding::Depth,
22070 ) -> fidl::Result<()> {
22071 decoder.debug_check_bounds::<Self>(offset);
22072 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
22073 None => return Err(fidl::Error::NotNullable),
22074 Some(len) => len,
22075 };
22076 if len == 0 {
22078 return Ok(());
22079 };
22080 depth.increment()?;
22081 let envelope_size = 8;
22082 let bytes_len = len * envelope_size;
22083 let offset = decoder.out_of_line_offset(bytes_len)?;
22084 let mut _next_ordinal_to_read = 0;
22086 let mut next_offset = offset;
22087 let end_offset = offset + bytes_len;
22088 _next_ordinal_to_read += 1;
22089 if next_offset >= end_offset {
22090 return Ok(());
22091 }
22092
22093 while _next_ordinal_to_read < 1 {
22095 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22096 _next_ordinal_to_read += 1;
22097 next_offset += envelope_size;
22098 }
22099
22100 let next_out_of_line = decoder.next_out_of_line();
22101 let handles_before = decoder.remaining_handles();
22102 if let Some((inlined, num_bytes, num_handles)) =
22103 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22104 {
22105 let member_inline_size =
22106 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22107 if inlined != (member_inline_size <= 4) {
22108 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22109 }
22110 let inner_offset;
22111 let mut inner_depth = depth.clone();
22112 if inlined {
22113 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22114 inner_offset = next_offset;
22115 } else {
22116 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22117 inner_depth.increment()?;
22118 }
22119 let val_ref = self.num_trel_peers.get_or_insert_with(|| fidl::new_empty!(u16, D));
22120 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
22121 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22122 {
22123 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22124 }
22125 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22126 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22127 }
22128 }
22129
22130 next_offset += envelope_size;
22131
22132 while next_offset < end_offset {
22134 _next_ordinal_to_read += 1;
22135 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22136 next_offset += envelope_size;
22137 }
22138
22139 Ok(())
22140 }
22141 }
22142
22143 impl UpstreamDnsCounters {
22144 #[inline(always)]
22145 fn max_ordinal_present(&self) -> u64 {
22146 if let Some(_) = self.failures {
22147 return 3;
22148 }
22149 if let Some(_) = self.responses {
22150 return 2;
22151 }
22152 if let Some(_) = self.queries {
22153 return 1;
22154 }
22155 0
22156 }
22157 }
22158
22159 impl fidl::encoding::ValueTypeMarker for UpstreamDnsCounters {
22160 type Borrowed<'a> = &'a Self;
22161 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
22162 value
22163 }
22164 }
22165
22166 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsCounters {
22167 type Owned = Self;
22168
22169 #[inline(always)]
22170 fn inline_align(_context: fidl::encoding::Context) -> usize {
22171 8
22172 }
22173
22174 #[inline(always)]
22175 fn inline_size(_context: fidl::encoding::Context) -> usize {
22176 16
22177 }
22178 }
22179
22180 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UpstreamDnsCounters, D>
22181 for &UpstreamDnsCounters
22182 {
22183 unsafe fn encode(
22184 self,
22185 encoder: &mut fidl::encoding::Encoder<'_, D>,
22186 offset: usize,
22187 mut depth: fidl::encoding::Depth,
22188 ) -> fidl::Result<()> {
22189 encoder.debug_check_bounds::<UpstreamDnsCounters>(offset);
22190 let max_ordinal: u64 = self.max_ordinal_present();
22192 encoder.write_num(max_ordinal, offset);
22193 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
22194 if max_ordinal == 0 {
22196 return Ok(());
22197 }
22198 depth.increment()?;
22199 let envelope_size = 8;
22200 let bytes_len = max_ordinal as usize * envelope_size;
22201 #[allow(unused_variables)]
22202 let offset = encoder.out_of_line_offset(bytes_len);
22203 let mut _prev_end_offset: usize = 0;
22204 if 1 > max_ordinal {
22205 return Ok(());
22206 }
22207
22208 let cur_offset: usize = (1 - 1) * envelope_size;
22211
22212 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22214
22215 fidl::encoding::encode_in_envelope_optional::<u32, D>(
22220 self.queries.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
22221 encoder,
22222 offset + cur_offset,
22223 depth,
22224 )?;
22225
22226 _prev_end_offset = cur_offset + envelope_size;
22227 if 2 > max_ordinal {
22228 return Ok(());
22229 }
22230
22231 let cur_offset: usize = (2 - 1) * envelope_size;
22234
22235 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22237
22238 fidl::encoding::encode_in_envelope_optional::<u32, D>(
22243 self.responses.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
22244 encoder,
22245 offset + cur_offset,
22246 depth,
22247 )?;
22248
22249 _prev_end_offset = cur_offset + envelope_size;
22250 if 3 > max_ordinal {
22251 return Ok(());
22252 }
22253
22254 let cur_offset: usize = (3 - 1) * envelope_size;
22257
22258 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22260
22261 fidl::encoding::encode_in_envelope_optional::<u32, D>(
22266 self.failures.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
22267 encoder,
22268 offset + cur_offset,
22269 depth,
22270 )?;
22271
22272 _prev_end_offset = cur_offset + envelope_size;
22273
22274 Ok(())
22275 }
22276 }
22277
22278 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsCounters {
22279 #[inline(always)]
22280 fn new_empty() -> Self {
22281 Self::default()
22282 }
22283
22284 unsafe fn decode(
22285 &mut self,
22286 decoder: &mut fidl::encoding::Decoder<'_, D>,
22287 offset: usize,
22288 mut depth: fidl::encoding::Depth,
22289 ) -> fidl::Result<()> {
22290 decoder.debug_check_bounds::<Self>(offset);
22291 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
22292 None => return Err(fidl::Error::NotNullable),
22293 Some(len) => len,
22294 };
22295 if len == 0 {
22297 return Ok(());
22298 };
22299 depth.increment()?;
22300 let envelope_size = 8;
22301 let bytes_len = len * envelope_size;
22302 let offset = decoder.out_of_line_offset(bytes_len)?;
22303 let mut _next_ordinal_to_read = 0;
22305 let mut next_offset = offset;
22306 let end_offset = offset + bytes_len;
22307 _next_ordinal_to_read += 1;
22308 if next_offset >= end_offset {
22309 return Ok(());
22310 }
22311
22312 while _next_ordinal_to_read < 1 {
22314 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22315 _next_ordinal_to_read += 1;
22316 next_offset += envelope_size;
22317 }
22318
22319 let next_out_of_line = decoder.next_out_of_line();
22320 let handles_before = decoder.remaining_handles();
22321 if let Some((inlined, num_bytes, num_handles)) =
22322 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22323 {
22324 let member_inline_size =
22325 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22326 if inlined != (member_inline_size <= 4) {
22327 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22328 }
22329 let inner_offset;
22330 let mut inner_depth = depth.clone();
22331 if inlined {
22332 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22333 inner_offset = next_offset;
22334 } else {
22335 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22336 inner_depth.increment()?;
22337 }
22338 let val_ref = self.queries.get_or_insert_with(|| fidl::new_empty!(u32, D));
22339 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
22340 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22341 {
22342 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22343 }
22344 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22345 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22346 }
22347 }
22348
22349 next_offset += envelope_size;
22350 _next_ordinal_to_read += 1;
22351 if next_offset >= end_offset {
22352 return Ok(());
22353 }
22354
22355 while _next_ordinal_to_read < 2 {
22357 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22358 _next_ordinal_to_read += 1;
22359 next_offset += envelope_size;
22360 }
22361
22362 let next_out_of_line = decoder.next_out_of_line();
22363 let handles_before = decoder.remaining_handles();
22364 if let Some((inlined, num_bytes, num_handles)) =
22365 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22366 {
22367 let member_inline_size =
22368 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22369 if inlined != (member_inline_size <= 4) {
22370 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22371 }
22372 let inner_offset;
22373 let mut inner_depth = depth.clone();
22374 if inlined {
22375 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22376 inner_offset = next_offset;
22377 } else {
22378 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22379 inner_depth.increment()?;
22380 }
22381 let val_ref = self.responses.get_or_insert_with(|| fidl::new_empty!(u32, D));
22382 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
22383 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22384 {
22385 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22386 }
22387 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22388 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22389 }
22390 }
22391
22392 next_offset += envelope_size;
22393 _next_ordinal_to_read += 1;
22394 if next_offset >= end_offset {
22395 return Ok(());
22396 }
22397
22398 while _next_ordinal_to_read < 3 {
22400 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22401 _next_ordinal_to_read += 1;
22402 next_offset += envelope_size;
22403 }
22404
22405 let next_out_of_line = decoder.next_out_of_line();
22406 let handles_before = decoder.remaining_handles();
22407 if let Some((inlined, num_bytes, num_handles)) =
22408 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22409 {
22410 let member_inline_size =
22411 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22412 if inlined != (member_inline_size <= 4) {
22413 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22414 }
22415 let inner_offset;
22416 let mut inner_depth = depth.clone();
22417 if inlined {
22418 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22419 inner_offset = next_offset;
22420 } else {
22421 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22422 inner_depth.increment()?;
22423 }
22424 let val_ref = self.failures.get_or_insert_with(|| fidl::new_empty!(u32, D));
22425 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
22426 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22427 {
22428 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22429 }
22430 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22431 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22432 }
22433 }
22434
22435 next_offset += envelope_size;
22436
22437 while next_offset < end_offset {
22439 _next_ordinal_to_read += 1;
22440 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22441 next_offset += envelope_size;
22442 }
22443
22444 Ok(())
22445 }
22446 }
22447
22448 impl UpstreamDnsInfo {
22449 #[inline(always)]
22450 fn max_ordinal_present(&self) -> u64 {
22451 if let Some(_) = self.upstream_dns_query_state {
22452 return 1;
22453 }
22454 0
22455 }
22456 }
22457
22458 impl fidl::encoding::ValueTypeMarker for UpstreamDnsInfo {
22459 type Borrowed<'a> = &'a Self;
22460 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
22461 value
22462 }
22463 }
22464
22465 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsInfo {
22466 type Owned = Self;
22467
22468 #[inline(always)]
22469 fn inline_align(_context: fidl::encoding::Context) -> usize {
22470 8
22471 }
22472
22473 #[inline(always)]
22474 fn inline_size(_context: fidl::encoding::Context) -> usize {
22475 16
22476 }
22477 }
22478
22479 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UpstreamDnsInfo, D>
22480 for &UpstreamDnsInfo
22481 {
22482 unsafe fn encode(
22483 self,
22484 encoder: &mut fidl::encoding::Encoder<'_, D>,
22485 offset: usize,
22486 mut depth: fidl::encoding::Depth,
22487 ) -> fidl::Result<()> {
22488 encoder.debug_check_bounds::<UpstreamDnsInfo>(offset);
22489 let max_ordinal: u64 = self.max_ordinal_present();
22491 encoder.write_num(max_ordinal, offset);
22492 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
22493 if max_ordinal == 0 {
22495 return Ok(());
22496 }
22497 depth.increment()?;
22498 let envelope_size = 8;
22499 let bytes_len = max_ordinal as usize * envelope_size;
22500 #[allow(unused_variables)]
22501 let offset = encoder.out_of_line_offset(bytes_len);
22502 let mut _prev_end_offset: usize = 0;
22503 if 1 > max_ordinal {
22504 return Ok(());
22505 }
22506
22507 let cur_offset: usize = (1 - 1) * envelope_size;
22510
22511 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22513
22514 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsQueryState, D>(
22519 self.upstream_dns_query_state
22520 .as_ref()
22521 .map(<UpstreamDnsQueryState as fidl::encoding::ValueTypeMarker>::borrow),
22522 encoder,
22523 offset + cur_offset,
22524 depth,
22525 )?;
22526
22527 _prev_end_offset = cur_offset + envelope_size;
22528
22529 Ok(())
22530 }
22531 }
22532
22533 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsInfo {
22534 #[inline(always)]
22535 fn new_empty() -> Self {
22536 Self::default()
22537 }
22538
22539 unsafe fn decode(
22540 &mut self,
22541 decoder: &mut fidl::encoding::Decoder<'_, D>,
22542 offset: usize,
22543 mut depth: fidl::encoding::Depth,
22544 ) -> fidl::Result<()> {
22545 decoder.debug_check_bounds::<Self>(offset);
22546 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
22547 None => return Err(fidl::Error::NotNullable),
22548 Some(len) => len,
22549 };
22550 if len == 0 {
22552 return Ok(());
22553 };
22554 depth.increment()?;
22555 let envelope_size = 8;
22556 let bytes_len = len * envelope_size;
22557 let offset = decoder.out_of_line_offset(bytes_len)?;
22558 let mut _next_ordinal_to_read = 0;
22560 let mut next_offset = offset;
22561 let end_offset = offset + bytes_len;
22562 _next_ordinal_to_read += 1;
22563 if next_offset >= end_offset {
22564 return Ok(());
22565 }
22566
22567 while _next_ordinal_to_read < 1 {
22569 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22570 _next_ordinal_to_read += 1;
22571 next_offset += envelope_size;
22572 }
22573
22574 let next_out_of_line = decoder.next_out_of_line();
22575 let handles_before = decoder.remaining_handles();
22576 if let Some((inlined, num_bytes, num_handles)) =
22577 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22578 {
22579 let member_inline_size =
22580 <UpstreamDnsQueryState as fidl::encoding::TypeMarker>::inline_size(
22581 decoder.context,
22582 );
22583 if inlined != (member_inline_size <= 4) {
22584 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22585 }
22586 let inner_offset;
22587 let mut inner_depth = depth.clone();
22588 if inlined {
22589 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22590 inner_offset = next_offset;
22591 } else {
22592 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22593 inner_depth.increment()?;
22594 }
22595 let val_ref = self
22596 .upstream_dns_query_state
22597 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsQueryState, D));
22598 fidl::decode!(
22599 UpstreamDnsQueryState,
22600 D,
22601 val_ref,
22602 decoder,
22603 inner_offset,
22604 inner_depth
22605 )?;
22606 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22607 {
22608 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22609 }
22610 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22611 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22612 }
22613 }
22614
22615 next_offset += envelope_size;
22616
22617 while next_offset < end_offset {
22619 _next_ordinal_to_read += 1;
22620 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22621 next_offset += envelope_size;
22622 }
22623
22624 Ok(())
22625 }
22626 }
22627
22628 impl fidl::encoding::ValueTypeMarker for JoinParams {
22629 type Borrowed<'a> = &'a Self;
22630 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
22631 value
22632 }
22633 }
22634
22635 unsafe impl fidl::encoding::TypeMarker for JoinParams {
22636 type Owned = Self;
22637
22638 #[inline(always)]
22639 fn inline_align(_context: fidl::encoding::Context) -> usize {
22640 8
22641 }
22642
22643 #[inline(always)]
22644 fn inline_size(_context: fidl::encoding::Context) -> usize {
22645 16
22646 }
22647 }
22648
22649 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<JoinParams, D>
22650 for &JoinParams
22651 {
22652 #[inline]
22653 unsafe fn encode(
22654 self,
22655 encoder: &mut fidl::encoding::Encoder<'_, D>,
22656 offset: usize,
22657 _depth: fidl::encoding::Depth,
22658 ) -> fidl::Result<()> {
22659 encoder.debug_check_bounds::<JoinParams>(offset);
22660 encoder.write_num::<u64>(self.ordinal(), offset);
22661 match self {
22662 JoinParams::ProvisioningParameter(ref val) => {
22663 fidl::encoding::encode_in_envelope::<fidl_fuchsia_lowpan_device__common::ProvisioningParams, D>(
22664 <fidl_fuchsia_lowpan_device__common::ProvisioningParams as fidl::encoding::ValueTypeMarker>::borrow(val),
22665 encoder, offset + 8, _depth
22666 )
22667 }
22668 JoinParams::JoinerParameter(ref val) => {
22669 fidl::encoding::encode_in_envelope::<JoinerCommissioningParams, D>(
22670 <JoinerCommissioningParams as fidl::encoding::ValueTypeMarker>::borrow(val),
22671 encoder, offset + 8, _depth
22672 )
22673 }
22674 JoinParams::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
22675 }
22676 }
22677 }
22678
22679 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for JoinParams {
22680 #[inline(always)]
22681 fn new_empty() -> Self {
22682 Self::__SourceBreaking { unknown_ordinal: 0 }
22683 }
22684
22685 #[inline]
22686 unsafe fn decode(
22687 &mut self,
22688 decoder: &mut fidl::encoding::Decoder<'_, D>,
22689 offset: usize,
22690 mut depth: fidl::encoding::Depth,
22691 ) -> fidl::Result<()> {
22692 decoder.debug_check_bounds::<Self>(offset);
22693 #[allow(unused_variables)]
22694 let next_out_of_line = decoder.next_out_of_line();
22695 let handles_before = decoder.remaining_handles();
22696 let (ordinal, inlined, num_bytes, num_handles) =
22697 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
22698
22699 let member_inline_size = match ordinal {
22700 1 => <fidl_fuchsia_lowpan_device__common::ProvisioningParams as fidl::encoding::TypeMarker>::inline_size(decoder.context),
22701 2 => <JoinerCommissioningParams as fidl::encoding::TypeMarker>::inline_size(decoder.context),
22702 0 => return Err(fidl::Error::UnknownUnionTag),
22703 _ => num_bytes as usize,
22704 };
22705
22706 if inlined != (member_inline_size <= 4) {
22707 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22708 }
22709 let _inner_offset;
22710 if inlined {
22711 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
22712 _inner_offset = offset + 8;
22713 } else {
22714 depth.increment()?;
22715 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22716 }
22717 match ordinal {
22718 1 => {
22719 #[allow(irrefutable_let_patterns)]
22720 if let JoinParams::ProvisioningParameter(_) = self {
22721 } else {
22723 *self = JoinParams::ProvisioningParameter(fidl::new_empty!(
22725 fidl_fuchsia_lowpan_device__common::ProvisioningParams,
22726 D
22727 ));
22728 }
22729 #[allow(irrefutable_let_patterns)]
22730 if let JoinParams::ProvisioningParameter(ref mut val) = self {
22731 fidl::decode!(
22732 fidl_fuchsia_lowpan_device__common::ProvisioningParams,
22733 D,
22734 val,
22735 decoder,
22736 _inner_offset,
22737 depth
22738 )?;
22739 } else {
22740 unreachable!()
22741 }
22742 }
22743 2 => {
22744 #[allow(irrefutable_let_patterns)]
22745 if let JoinParams::JoinerParameter(_) = self {
22746 } else {
22748 *self = JoinParams::JoinerParameter(fidl::new_empty!(
22750 JoinerCommissioningParams,
22751 D
22752 ));
22753 }
22754 #[allow(irrefutable_let_patterns)]
22755 if let JoinParams::JoinerParameter(ref mut val) = self {
22756 fidl::decode!(
22757 JoinerCommissioningParams,
22758 D,
22759 val,
22760 decoder,
22761 _inner_offset,
22762 depth
22763 )?;
22764 } else {
22765 unreachable!()
22766 }
22767 }
22768 #[allow(deprecated)]
22769 ordinal => {
22770 for _ in 0..num_handles {
22771 decoder.drop_next_handle()?;
22772 }
22773 *self = JoinParams::__SourceBreaking { unknown_ordinal: ordinal };
22774 }
22775 }
22776 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
22777 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22778 }
22779 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22780 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22781 }
22782 Ok(())
22783 }
22784 }
22785
22786 impl fidl::encoding::ValueTypeMarker for ProvisioningProgress {
22787 type Borrowed<'a> = &'a Self;
22788 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
22789 value
22790 }
22791 }
22792
22793 unsafe impl fidl::encoding::TypeMarker for ProvisioningProgress {
22794 type Owned = Self;
22795
22796 #[inline(always)]
22797 fn inline_align(_context: fidl::encoding::Context) -> usize {
22798 8
22799 }
22800
22801 #[inline(always)]
22802 fn inline_size(_context: fidl::encoding::Context) -> usize {
22803 16
22804 }
22805 }
22806
22807 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProvisioningProgress, D>
22808 for &ProvisioningProgress
22809 {
22810 #[inline]
22811 unsafe fn encode(
22812 self,
22813 encoder: &mut fidl::encoding::Encoder<'_, D>,
22814 offset: usize,
22815 _depth: fidl::encoding::Depth,
22816 ) -> fidl::Result<()> {
22817 encoder.debug_check_bounds::<ProvisioningProgress>(offset);
22818 encoder.write_num::<u64>(self.ordinal(), offset);
22819 match self {
22820 ProvisioningProgress::Progress(ref val) => {
22821 fidl::encoding::encode_in_envelope::<f32, D>(
22822 <f32 as fidl::encoding::ValueTypeMarker>::borrow(val),
22823 encoder, offset + 8, _depth
22824 )
22825 }
22826 ProvisioningProgress::Identity(ref val) => {
22827 fidl::encoding::encode_in_envelope::<fidl_fuchsia_lowpan_device__common::Identity, D>(
22828 <fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::ValueTypeMarker>::borrow(val),
22829 encoder, offset + 8, _depth
22830 )
22831 }
22832 ProvisioningProgress::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
22833 }
22834 }
22835 }
22836
22837 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProvisioningProgress {
22838 #[inline(always)]
22839 fn new_empty() -> Self {
22840 Self::__SourceBreaking { unknown_ordinal: 0 }
22841 }
22842
22843 #[inline]
22844 unsafe fn decode(
22845 &mut self,
22846 decoder: &mut fidl::encoding::Decoder<'_, D>,
22847 offset: usize,
22848 mut depth: fidl::encoding::Depth,
22849 ) -> fidl::Result<()> {
22850 decoder.debug_check_bounds::<Self>(offset);
22851 #[allow(unused_variables)]
22852 let next_out_of_line = decoder.next_out_of_line();
22853 let handles_before = decoder.remaining_handles();
22854 let (ordinal, inlined, num_bytes, num_handles) =
22855 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
22856
22857 let member_inline_size = match ordinal {
22858 1 => <f32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
22859 2 => <fidl_fuchsia_lowpan_device__common::Identity as fidl::encoding::TypeMarker>::inline_size(decoder.context),
22860 0 => return Err(fidl::Error::UnknownUnionTag),
22861 _ => num_bytes as usize,
22862 };
22863
22864 if inlined != (member_inline_size <= 4) {
22865 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22866 }
22867 let _inner_offset;
22868 if inlined {
22869 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
22870 _inner_offset = offset + 8;
22871 } else {
22872 depth.increment()?;
22873 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22874 }
22875 match ordinal {
22876 1 => {
22877 #[allow(irrefutable_let_patterns)]
22878 if let ProvisioningProgress::Progress(_) = self {
22879 } else {
22881 *self = ProvisioningProgress::Progress(fidl::new_empty!(f32, D));
22883 }
22884 #[allow(irrefutable_let_patterns)]
22885 if let ProvisioningProgress::Progress(ref mut val) = self {
22886 fidl::decode!(f32, D, val, decoder, _inner_offset, depth)?;
22887 } else {
22888 unreachable!()
22889 }
22890 }
22891 2 => {
22892 #[allow(irrefutable_let_patterns)]
22893 if let ProvisioningProgress::Identity(_) = self {
22894 } else {
22896 *self = ProvisioningProgress::Identity(fidl::new_empty!(
22898 fidl_fuchsia_lowpan_device__common::Identity,
22899 D
22900 ));
22901 }
22902 #[allow(irrefutable_let_patterns)]
22903 if let ProvisioningProgress::Identity(ref mut val) = self {
22904 fidl::decode!(
22905 fidl_fuchsia_lowpan_device__common::Identity,
22906 D,
22907 val,
22908 decoder,
22909 _inner_offset,
22910 depth
22911 )?;
22912 } else {
22913 unreachable!()
22914 }
22915 }
22916 #[allow(deprecated)]
22917 ordinal => {
22918 for _ in 0..num_handles {
22919 decoder.drop_next_handle()?;
22920 }
22921 *self = ProvisioningProgress::__SourceBreaking { unknown_ordinal: ordinal };
22922 }
22923 }
22924 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
22925 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22926 }
22927 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22928 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22929 }
22930 Ok(())
22931 }
22932 }
22933}