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_IP6_SOCK_ADDR_STRING_SIZE: u32 = 48;
14
15pub const MAX_IPV6_MULTICAST_ADDRS: u32 = 32;
18
19pub const MAX_IPV6_UNICAST_ADDRS: u32 = 32;
22
23pub const MAX_LOWPAN_CONTEXTS: u32 = 32;
26
27pub const MAX_NEIGHBOR_INSPECT_ENTRIES: u32 = 64;
30
31pub const MAX_ON_MESH_PREFIXES: u32 = 32;
32
33pub const MAX_PROVISION_URL_LEN: u16 = 64;
34
35pub const MAX_SERVER_DATA_SIZE: u32 = 252;
39
40pub const MAX_SERVICE_DATA_SIZE: u32 = 252;
43
44pub const MAX_SERVICE_ENTRIES: u32 = 32;
47
48pub const MAX_SRP_INSPECT_ENTRIES: u32 = 64;
51
52pub const MAX_STEERING_DATA_LENGTH: u32 = 16;
55
56pub const MAX_THREAD_NEIGHBOR_HISTORY_ENTRIES: u32 = 64;
57
58pub const MAX_THREAD_NET_DATA_PREFIX_HISTORY_ENTRIES: u32 = 32;
59
60pub const MAX_THREAD_NET_DATA_ROUTE_HISTORY_ENTRIES: u32 = 32;
61
62pub const MAX_THREAD_NET_INFO_HISTORY_ENTRIES: u32 = 32;
63
64pub const MAX_THREAD_ROUTER_HISTORY_ENTRIES: u32 = 256;
65
66pub const MAX_UDP_SOCKETS: u32 = 32;
69
70pub const MAX_VENDOR_DATA_LEN: u16 = 64;
71
72pub const MAX_VENDOR_MODEL_LEN: u16 = 32;
73
74pub const MAX_VENDOR_NAME_LEN: u16 = 32;
75
76pub const MAX_VENDOR_SW_VER_LEN: u16 = 16;
77
78pub const PSKD_LEN: u16 = 32;
79
80#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
82#[repr(u8)]
83pub enum AddressOrigin {
84 Thread = 0,
86 Slaac = 1,
88 Dhcpv6 = 2,
90 Manual = 3,
92}
93
94impl AddressOrigin {
95 #[inline]
96 pub fn from_primitive(prim: u8) -> Option<Self> {
97 match prim {
98 0 => Some(Self::Thread),
99 1 => Some(Self::Slaac),
100 2 => Some(Self::Dhcpv6),
101 3 => Some(Self::Manual),
102 _ => None,
103 }
104 }
105
106 #[inline]
107 pub const fn into_primitive(self) -> u8 {
108 self as u8
109 }
110}
111
112#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
117#[repr(u8)]
118pub enum CacheEntryState {
119 Cached = 0,
120 Snooped = 1,
121 Query = 2,
122 Retry = 3,
123}
124
125impl CacheEntryState {
126 #[inline]
127 pub fn from_primitive(prim: u8) -> Option<Self> {
128 match prim {
129 0 => Some(Self::Cached),
130 1 => Some(Self::Snooped),
131 2 => Some(Self::Query),
132 3 => Some(Self::Retry),
133 _ => None,
134 }
135 }
136
137 #[inline]
138 pub const fn into_primitive(self) -> u8 {
139 self as u8
140 }
141}
142
143#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
145pub enum Dhcp6PdState {
146 Dhcp6PdStateUnspecified,
147 Dhcp6PdStateDisabled,
149 Dhcp6PdStateStopped,
151 Dhcp6PdStateRunning,
153 Dhcp6PdStateIdle,
155 #[doc(hidden)]
156 __SourceBreaking {
157 unknown_ordinal: u32,
158 },
159}
160
161#[macro_export]
163macro_rules! Dhcp6PdStateUnknown {
164 () => {
165 _
166 };
167}
168
169impl Dhcp6PdState {
170 #[inline]
171 pub fn from_primitive(prim: u32) -> Option<Self> {
172 match prim {
173 0 => Some(Self::Dhcp6PdStateUnspecified),
174 1 => Some(Self::Dhcp6PdStateDisabled),
175 2 => Some(Self::Dhcp6PdStateStopped),
176 3 => Some(Self::Dhcp6PdStateRunning),
177 4 => Some(Self::Dhcp6PdStateIdle),
178 _ => None,
179 }
180 }
181
182 #[inline]
183 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
184 match prim {
185 0 => Self::Dhcp6PdStateUnspecified,
186 1 => Self::Dhcp6PdStateDisabled,
187 2 => Self::Dhcp6PdStateStopped,
188 3 => Self::Dhcp6PdStateRunning,
189 4 => Self::Dhcp6PdStateIdle,
190 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
191 }
192 }
193
194 #[inline]
195 pub fn unknown() -> Self {
196 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
197 }
198
199 #[inline]
200 pub const fn into_primitive(self) -> u32 {
201 match self {
202 Self::Dhcp6PdStateUnspecified => 0,
203 Self::Dhcp6PdStateDisabled => 1,
204 Self::Dhcp6PdStateStopped => 2,
205 Self::Dhcp6PdStateRunning => 3,
206 Self::Dhcp6PdStateIdle => 4,
207 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
208 }
209 }
210
211 #[inline]
212 pub fn is_unknown(&self) -> bool {
213 match self {
214 Self::__SourceBreaking { unknown_ordinal: _ } => true,
215 _ => false,
216 }
217 }
218}
219
220#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
225#[repr(u8)]
226pub enum HistoryTrackerNeighborEvent {
227 Added = 0,
228 Removed = 1,
229 Changed = 2,
230 Restoring = 3,
231}
232
233impl HistoryTrackerNeighborEvent {
234 #[inline]
235 pub fn from_primitive(prim: u8) -> Option<Self> {
236 match prim {
237 0 => Some(Self::Added),
238 1 => Some(Self::Removed),
239 2 => Some(Self::Changed),
240 3 => Some(Self::Restoring),
241 _ => None,
242 }
243 }
244
245 #[inline]
246 pub const fn into_primitive(self) -> u8 {
247 self as u8
248 }
249}
250
251#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
256#[repr(u8)]
257pub enum HistoryTrackerNetDataEvent {
258 Added = 0,
259 Removed = 1,
260}
261
262impl HistoryTrackerNetDataEvent {
263 #[inline]
264 pub fn from_primitive(prim: u8) -> Option<Self> {
265 match prim {
266 0 => Some(Self::Added),
267 1 => Some(Self::Removed),
268 _ => None,
269 }
270 }
271
272 #[inline]
273 pub const fn into_primitive(self) -> u8 {
274 self as u8
275 }
276}
277
278#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
283#[repr(u8)]
284pub enum HistoryTrackerRouterEvent {
285 Added = 0,
286 Removed = 1,
287 NextHopChanged = 2,
288 PathCostChanged = 3,
289}
290
291impl HistoryTrackerRouterEvent {
292 #[inline]
293 pub fn from_primitive(prim: u8) -> Option<Self> {
294 match prim {
295 0 => Some(Self::Added),
296 1 => Some(Self::Removed),
297 2 => Some(Self::NextHopChanged),
298 3 => Some(Self::PathCostChanged),
299 _ => None,
300 }
301 }
302
303 #[inline]
304 pub const fn into_primitive(self) -> u8 {
305 self as u8
306 }
307}
308
309#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
310pub enum Nat64State {
311 Nat64StateUnspecified,
312 Nat64StateDisabled,
313 Nat64StateNotRunning,
314 Nat64StateIdle,
315 Nat64StateActive,
316 #[doc(hidden)]
317 __SourceBreaking {
318 unknown_ordinal: u32,
319 },
320}
321
322#[macro_export]
324macro_rules! Nat64StateUnknown {
325 () => {
326 _
327 };
328}
329
330impl Nat64State {
331 #[inline]
332 pub fn from_primitive(prim: u32) -> Option<Self> {
333 match prim {
334 0 => Some(Self::Nat64StateUnspecified),
335 1 => Some(Self::Nat64StateDisabled),
336 2 => Some(Self::Nat64StateNotRunning),
337 3 => Some(Self::Nat64StateIdle),
338 4 => Some(Self::Nat64StateActive),
339 _ => None,
340 }
341 }
342
343 #[inline]
344 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
345 match prim {
346 0 => Self::Nat64StateUnspecified,
347 1 => Self::Nat64StateDisabled,
348 2 => Self::Nat64StateNotRunning,
349 3 => Self::Nat64StateIdle,
350 4 => Self::Nat64StateActive,
351 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
352 }
353 }
354
355 #[inline]
356 pub fn unknown() -> Self {
357 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
358 }
359
360 #[inline]
361 pub const fn into_primitive(self) -> u32 {
362 match self {
363 Self::Nat64StateUnspecified => 0,
364 Self::Nat64StateDisabled => 1,
365 Self::Nat64StateNotRunning => 2,
366 Self::Nat64StateIdle => 3,
367 Self::Nat64StateActive => 4,
368 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
369 }
370 }
371
372 #[inline]
373 pub fn is_unknown(&self) -> bool {
374 match self {
375 Self::__SourceBreaking { unknown_ordinal: _ } => true,
376 _ => false,
377 }
378 }
379}
380
381#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
385pub enum ProvisionError {
386 CredentialRejected,
391 NetworkNotFound,
394 NetworkAlreadyExists,
397 Canceled,
400 #[doc(hidden)]
401 __SourceBreaking { unknown_ordinal: i32 },
402}
403
404#[macro_export]
406macro_rules! ProvisionErrorUnknown {
407 () => {
408 _
409 };
410}
411
412impl ProvisionError {
413 #[inline]
414 pub fn from_primitive(prim: i32) -> Option<Self> {
415 match prim {
416 1 => Some(Self::CredentialRejected),
417 2 => Some(Self::NetworkNotFound),
418 3 => Some(Self::NetworkAlreadyExists),
419 4 => Some(Self::Canceled),
420 _ => None,
421 }
422 }
423
424 #[inline]
425 pub fn from_primitive_allow_unknown(prim: i32) -> Self {
426 match prim {
427 1 => Self::CredentialRejected,
428 2 => Self::NetworkNotFound,
429 3 => Self::NetworkAlreadyExists,
430 4 => Self::Canceled,
431 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
432 }
433 }
434
435 #[inline]
436 pub fn unknown() -> Self {
437 Self::__SourceBreaking { unknown_ordinal: 0x7fffffff }
438 }
439
440 #[inline]
441 pub const fn into_primitive(self) -> i32 {
442 match self {
443 Self::CredentialRejected => 1,
444 Self::NetworkNotFound => 2,
445 Self::NetworkAlreadyExists => 3,
446 Self::Canceled => 4,
447 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
448 }
449 }
450
451 #[inline]
452 pub fn is_unknown(&self) -> bool {
453 match self {
454 Self::__SourceBreaking { unknown_ordinal: _ } => true,
455 _ => false,
456 }
457 }
458}
459
460#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
462#[repr(i8)]
463pub enum RoutePreference {
464 Low = -1,
466 Medium = 0,
468 High = 1,
470}
471
472impl RoutePreference {
473 #[inline]
474 pub fn from_primitive(prim: i8) -> Option<Self> {
475 match prim {
476 -1 => Some(Self::Low),
477 0 => Some(Self::Medium),
478 1 => Some(Self::High),
479 _ => None,
480 }
481 }
482
483 #[inline]
484 pub const fn into_primitive(self) -> i8 {
485 self as i8
486 }
487}
488
489#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
490#[repr(u32)]
491pub enum SrpServerAddressMode {
492 Unicast = 1,
494 Anycast = 2,
496}
497
498impl SrpServerAddressMode {
499 #[inline]
500 pub fn from_primitive(prim: u32) -> Option<Self> {
501 match prim {
502 1 => Some(Self::Unicast),
503 2 => Some(Self::Anycast),
504 _ => None,
505 }
506 }
507
508 #[inline]
509 pub const fn into_primitive(self) -> u32 {
510 self as u32
511 }
512}
513
514#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
515#[repr(u32)]
516pub enum SrpServerState {
517 Disabled = 1,
519 Running = 2,
521 Stopped = 3,
523}
524
525impl SrpServerState {
526 #[inline]
527 pub fn from_primitive(prim: u32) -> Option<Self> {
528 match prim {
529 1 => Some(Self::Disabled),
530 2 => Some(Self::Running),
531 3 => Some(Self::Stopped),
532 _ => None,
533 }
534 }
535
536 #[inline]
537 pub const fn into_primitive(self) -> u32 {
538 self as u32
539 }
540}
541
542#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
544pub enum UpstreamDnsQueryState {
545 UpstreamdnsQueryStateUnspecified,
546 UpstreamdnsQueryStateEnabled,
547 UpstreamdnsQueryStateDisabled,
548 #[doc(hidden)]
549 __SourceBreaking {
550 unknown_ordinal: u32,
551 },
552}
553
554#[macro_export]
556macro_rules! UpstreamDnsQueryStateUnknown {
557 () => {
558 _
559 };
560}
561
562impl UpstreamDnsQueryState {
563 #[inline]
564 pub fn from_primitive(prim: u32) -> Option<Self> {
565 match prim {
566 0 => Some(Self::UpstreamdnsQueryStateUnspecified),
567 1 => Some(Self::UpstreamdnsQueryStateEnabled),
568 2 => Some(Self::UpstreamdnsQueryStateDisabled),
569 _ => None,
570 }
571 }
572
573 #[inline]
574 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
575 match prim {
576 0 => Self::UpstreamdnsQueryStateUnspecified,
577 1 => Self::UpstreamdnsQueryStateEnabled,
578 2 => Self::UpstreamdnsQueryStateDisabled,
579 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
580 }
581 }
582
583 #[inline]
584 pub fn unknown() -> Self {
585 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
586 }
587
588 #[inline]
589 pub const fn into_primitive(self) -> u32 {
590 match self {
591 Self::UpstreamdnsQueryStateUnspecified => 0,
592 Self::UpstreamdnsQueryStateEnabled => 1,
593 Self::UpstreamdnsQueryStateDisabled => 2,
594 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
595 }
596 }
597
598 #[inline]
599 pub fn is_unknown(&self) -> bool {
600 match self {
601 Self::__SourceBreaking { unknown_ordinal: _ } => true,
602 _ => false,
603 }
604 }
605}
606
607#[derive(Clone, Debug, PartialEq)]
608pub struct BeaconInfoStreamNextResponse {
609 pub beacons: Vec<BeaconInfo>,
610}
611
612impl fidl::Persistable for BeaconInfoStreamNextResponse {}
613
614#[derive(Clone, Debug, PartialEq)]
615pub struct DeviceGetSupportedChannelsResponse {
616 pub channels_info: Vec<ChannelInfo>,
617}
618
619impl fidl::Persistable for DeviceGetSupportedChannelsResponse {}
620
621#[derive(Clone, Debug, PartialEq)]
622pub struct DeviceRouteExtraGetLocalExternalRoutesResponse {
623 pub external_routes: Vec<ExternalRoute>,
624}
625
626impl fidl::Persistable for DeviceRouteExtraGetLocalExternalRoutesResponse {}
627
628#[derive(Clone, Debug, PartialEq)]
629pub struct DeviceRouteExtraGetLocalOnMeshPrefixesResponse {
630 pub prefixes: Vec<OnMeshPrefix>,
631}
632
633impl fidl::Persistable for DeviceRouteExtraGetLocalOnMeshPrefixesResponse {}
634
635#[derive(Clone, Debug, PartialEq)]
636pub struct DeviceRouteRegisterExternalRouteRequest {
637 pub external_route: ExternalRoute,
638}
639
640impl fidl::Persistable for DeviceRouteRegisterExternalRouteRequest {}
641
642#[derive(Clone, Debug, PartialEq)]
643pub struct DeviceRouteRegisterOnMeshPrefixRequest {
644 pub prefix: OnMeshPrefix,
645}
646
647impl fidl::Persistable for DeviceRouteRegisterOnMeshPrefixRequest {}
648
649#[derive(Clone, Debug, PartialEq)]
650pub struct DeviceRouteUnregisterExternalRouteRequest {
651 pub subnet: fidl_fuchsia_net_common::Ipv6AddressWithPrefix,
652}
653
654impl fidl::Persistable for DeviceRouteUnregisterExternalRouteRequest {}
655
656#[derive(Clone, Debug, PartialEq)]
657pub struct DeviceRouteUnregisterOnMeshPrefixRequest {
658 pub subnet: fidl_fuchsia_net_common::Ipv6AddressWithPrefix,
659}
660
661impl fidl::Persistable for DeviceRouteUnregisterOnMeshPrefixRequest {}
662
663#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
664#[repr(C)]
665pub struct LegacyJoiningMakeJoinableRequest {
666 pub duration: i64,
667 pub port: u16,
668}
669
670impl fidl::Persistable for LegacyJoiningMakeJoinableRequest {}
671
672#[derive(Clone, Debug, PartialEq)]
673pub struct ProvisioningMonitorWatchProgressResponse {
674 pub progress: ProvisioningProgress,
675}
676
677impl fidl::Persistable for ProvisioningMonitorWatchProgressResponse {}
678
679#[derive(Clone, Debug, PartialEq)]
680pub struct TelemetryProviderGetTelemetryResponse {
681 pub telemetry: Telemetry,
682}
683
684impl fidl::Persistable for TelemetryProviderGetTelemetryResponse {}
685
686#[derive(Clone, Debug, Default, PartialEq)]
687pub struct BeaconInfo {
688 pub address: Option<fidl_fuchsia_lowpan_common::MacAddress>,
690 pub identity: Option<fidl_fuchsia_lowpan_device_common::Identity>,
693 pub rssi: Option<i8>,
698 pub lqi: Option<u8>,
712 #[doc(hidden)]
713 pub __source_breaking: fidl::marker::SourceBreaking,
714}
715
716impl fidl::Persistable for BeaconInfo {}
717
718#[derive(Clone, Debug, Default, PartialEq)]
722pub struct BorderRouterConfig {
723 pub prefix: Option<String>,
727 pub preference: Option<i8>,
731 pub preferred: Option<bool>,
735 pub slaac: Option<bool>,
739 pub dhcp: Option<bool>,
743 pub configure: Option<bool>,
747 pub default_route: Option<bool>,
751 pub on_mesh: Option<bool>,
755 pub stable: Option<bool>,
759 pub nd_dns: Option<bool>,
763 pub dp: Option<bool>,
767 pub rloc16: Option<u16>,
771 #[doc(hidden)]
772 pub __source_breaking: fidl::marker::SourceBreaking,
773}
774
775impl fidl::Persistable for BorderRouterConfig {}
776
777#[derive(Clone, Debug, Default, PartialEq)]
779pub struct BorderRoutingCounters {
780 pub inbound_unicast_packets: Option<u64>,
784 pub inbound_unicast_bytes: Option<u64>,
788 pub inbound_multicast_packets: Option<u64>,
792 pub inbound_multicast_bytes: Option<u64>,
796 pub outbound_unicast_packets: Option<u64>,
800 pub outbound_unicast_bytes: Option<u64>,
804 pub outbound_multicast_packets: Option<u64>,
808 pub outbound_multicast_bytes: Option<u64>,
812 pub ra_rx: Option<u32>,
816 pub ra_tx_success: Option<u32>,
820 pub ra_tx_failure: Option<u32>,
824 pub rs_rx: Option<u32>,
828 pub rs_tx_success: Option<u32>,
832 pub rs_tx_failure: Option<u32>,
836 pub inbound_internet_packets: Option<u64>,
840 pub inbound_internet_bytes: Option<u64>,
844 pub outbound_internet_packets: Option<u64>,
848 pub outbound_internet_bytes: Option<u64>,
852 #[doc(hidden)]
853 pub __source_breaking: fidl::marker::SourceBreaking,
854}
855
856impl fidl::Persistable for BorderRoutingCounters {}
857
858#[derive(Clone, Debug, Default, PartialEq)]
860pub struct BorderRoutingNat64State {
861 pub prefix_manager_state: Option<Nat64State>,
863 pub translator_state: Option<Nat64State>,
865 #[doc(hidden)]
866 pub __source_breaking: fidl::marker::SourceBreaking,
867}
868
869impl fidl::Persistable for BorderRoutingNat64State {}
870
871#[derive(Clone, Debug, Default, PartialEq)]
873pub struct BorderRoutingPeer {
874 pub thread_rloc: Option<u16>,
878 pub age: Option<i64>,
882 #[doc(hidden)]
883 pub __source_breaking: fidl::marker::SourceBreaking,
884}
885
886impl fidl::Persistable for BorderRoutingPeer {}
887
888#[derive(Clone, Debug, Default, PartialEq)]
890pub struct BorderRoutingPrefixTable {
891 pub router: Option<BorderRoutingRouter>,
895 pub prefix: Option<String>,
899 pub is_on_link: Option<bool>,
903 pub duration_since_last_update: Option<i64>,
907 pub valid_lifetime: Option<u32>,
911 pub preference: Option<i8>,
915 pub preferred_lifetime: Option<u32>,
919 #[doc(hidden)]
920 pub __source_breaking: fidl::marker::SourceBreaking,
921}
922
923impl fidl::Persistable for BorderRoutingPrefixTable {}
924
925#[derive(Clone, Debug, Default, PartialEq)]
928pub struct BorderRoutingRdnss {
929 pub router: Option<BorderRoutingRouter>,
933 pub address: Option<fidl_fuchsia_net_common::Ipv6Address>,
937 pub duration_since_last_update: Option<i64>,
941 pub lifetime: Option<u32>,
945 #[doc(hidden)]
946 pub __source_breaking: fidl::marker::SourceBreaking,
947}
948
949impl fidl::Persistable for BorderRoutingRdnss {}
950
951#[derive(Clone, Debug, Default, PartialEq)]
953pub struct BorderRoutingRouter {
954 pub address: Option<String>,
958 pub duration_since_last_update: Option<i64>,
962 pub age: Option<i64>,
966 pub managed_address_config_flag: Option<bool>,
970 pub other_config_flag: Option<bool>,
974 pub snac_router_flag: Option<bool>,
978 pub is_local_device: Option<bool>,
982 pub is_reachable: Option<bool>,
986 pub is_peer_br: Option<bool>,
990 #[doc(hidden)]
991 pub __source_breaking: fidl::marker::SourceBreaking,
992}
993
994impl fidl::Persistable for BorderRoutingRouter {}
995
996#[derive(Clone, Debug, Default, PartialEq)]
997pub struct ChannelInfo {
998 pub index: Option<u16>,
1001 pub id: Option<String>,
1017 pub max_transmit_power_dbm: Option<i8>,
1020 pub spectrum_center_frequency_hz: Option<u64>,
1043 pub spectrum_bandwidth_hz: Option<u64>,
1050 pub masked_by_regulatory_domain: Option<bool>,
1054 #[doc(hidden)]
1055 pub __source_breaking: fidl::marker::SourceBreaking,
1056}
1057
1058impl fidl::Persistable for ChannelInfo {}
1059
1060#[derive(Clone, Debug, Default, PartialEq)]
1064pub struct CommissioningDataset {
1065 pub locator: Option<u16>,
1069 pub session_id: Option<u16>,
1073 pub steering_data: Option<Vec<u8>>,
1077 pub joiner_udp_port: Option<u16>,
1081 pub is_locator_set: Option<bool>,
1085 pub is_session_id_set: Option<bool>,
1089 pub is_steering_data_set: Option<bool>,
1093 pub is_joiner_udp_port_set: Option<bool>,
1097 pub has_extra_tlv: Option<bool>,
1101 #[doc(hidden)]
1102 pub __source_breaking: fidl::marker::SourceBreaking,
1103}
1104
1105impl fidl::Persistable for CommissioningDataset {}
1106
1107#[derive(Clone, Debug, Default, PartialEq)]
1109pub struct Dhcp6PdInfo {
1110 pub dhcp6pd_state: Option<Dhcp6PdState>,
1114 pub pd_processed_ra_info: Option<PdProcessedRaInfo>,
1118 pub hashed_pd_prefix: Option<Vec<u8>>,
1122 #[doc(hidden)]
1123 pub __source_breaking: fidl::marker::SourceBreaking,
1124}
1125
1126impl fidl::Persistable for Dhcp6PdInfo {}
1127
1128#[derive(Clone, Debug, Default, PartialEq)]
1130pub struct DnsTxtEntry {
1131 pub key: Option<String>,
1138 pub value: Option<Vec<u8>>,
1145 #[doc(hidden)]
1146 pub __source_breaking: fidl::marker::SourceBreaking,
1147}
1148
1149impl fidl::Persistable for DnsTxtEntry {}
1150
1151#[derive(Clone, Debug, Default, PartialEq)]
1153pub struct DnssdCounters {
1154 pub success_response: Option<u32>,
1158 pub server_failure_response: Option<u32>,
1162 pub format_error_response: Option<u32>,
1166 pub name_error_response: Option<u32>,
1170 pub not_implemented_response: Option<u32>,
1174 pub other_response: Option<u32>,
1178 pub resolved_by_srp: Option<u32>,
1182 pub upstream_dns_counters: Option<UpstreamDnsCounters>,
1186 #[doc(hidden)]
1187 pub __source_breaking: fidl::marker::SourceBreaking,
1188}
1189
1190impl fidl::Persistable for DnssdCounters {}
1191
1192#[derive(Clone, Debug, Default, PartialEq)]
1194pub struct EidCacheEntry {
1195 pub target: Option<fidl_fuchsia_net_common::Ipv6Address>,
1199 pub rloc16: Option<u16>,
1203 pub state: Option<CacheEntryState>,
1207 pub can_evict: Option<bool>,
1211 pub ramp_down: Option<bool>,
1215 pub valid_last_trans: Option<bool>,
1219 pub last_trans_time: Option<i64>,
1223 pub mesh_local_eid: Option<fidl_fuchsia_net_common::Ipv6Address>,
1227 pub timeout: Option<i64>,
1231 pub retry_delay: Option<i64>,
1235 #[doc(hidden)]
1236 pub __source_breaking: fidl::marker::SourceBreaking,
1237}
1238
1239impl fidl::Persistable for EidCacheEntry {}
1240
1241#[derive(Clone, Debug, Default, PartialEq)]
1245pub struct ExternalRoute {
1246 pub subnet: Option<fidl_fuchsia_net_common::Ipv6AddressWithPrefix>,
1248 pub route_preference: Option<RoutePreference>,
1255 pub stable: Option<bool>,
1264 #[doc(hidden)]
1265 pub __source_breaking: fidl::marker::SourceBreaking,
1266}
1267
1268impl fidl::Persistable for ExternalRoute {}
1269
1270#[derive(Clone, Debug, Default, PartialEq)]
1274pub struct ExternalRouteConfig {
1275 pub prefix: Option<String>,
1279 pub rloc16: Option<u16>,
1283 pub preference: Option<i8>,
1287 pub nat64: Option<bool>,
1291 pub stable: Option<bool>,
1295 pub next_hop_is_this_device: Option<bool>,
1299 pub adv_pio: Option<bool>,
1303 #[doc(hidden)]
1304 pub __source_breaking: fidl::marker::SourceBreaking,
1305}
1306
1307impl fidl::Persistable for ExternalRouteConfig {}
1308
1309#[derive(Clone, Debug, Default, PartialEq)]
1314pub struct JoinerCommissioningParams {
1315 pub pskd: Option<String>,
1317 pub provisioning_url: Option<String>,
1319 pub vendor_name: Option<String>,
1321 pub vendor_model: Option<String>,
1323 pub vendor_sw_version: Option<String>,
1325 pub vendor_data_string: Option<String>,
1327 #[doc(hidden)]
1328 pub __source_breaking: fidl::marker::SourceBreaking,
1329}
1330
1331impl fidl::Persistable for JoinerCommissioningParams {}
1332
1333#[derive(Clone, Debug, Default, PartialEq)]
1335pub struct LeaderData {
1336 pub partition_id: Option<u32>,
1340 pub weight: Option<u8>,
1344 pub network_data_version: Option<u8>,
1348 pub stable_network_data_version: Option<u8>,
1352 pub router_id: Option<u8>,
1356 #[doc(hidden)]
1357 pub __source_breaking: fidl::marker::SourceBreaking,
1358}
1359
1360impl fidl::Persistable for LeaderData {}
1361
1362#[derive(Clone, Debug, Default, PartialEq)]
1364pub struct LinkMetricsEntry {
1365 pub link_margin: Option<u8>,
1367 pub rssi: Option<i8>,
1369 pub extended_address: Option<Vec<u8>>,
1371 #[doc(hidden)]
1372 pub __source_breaking: fidl::marker::SourceBreaking,
1373}
1374
1375impl fidl::Persistable for LinkMetricsEntry {}
1376
1377#[derive(Clone, Debug, Default, PartialEq)]
1381pub struct LowpanContextInfo {
1382 pub context_id: Option<u8>,
1386 pub compress_flag: Option<bool>,
1390 pub stable: Option<bool>,
1394 pub prefix: Option<String>,
1398 #[doc(hidden)]
1399 pub __source_breaking: fidl::marker::SourceBreaking,
1400}
1401
1402impl fidl::Persistable for LowpanContextInfo {}
1403
1404#[derive(Clone, Debug, Default, PartialEq)]
1406pub struct MultiRadioNeighborInfo {
1407 pub extended_address: Option<Vec<u8>>,
1411 pub thread_rloc: Option<u16>,
1415 pub radio_link_info: Option<Vec<RadioLinkInfo>>,
1421 #[doc(hidden)]
1422 pub __source_breaking: fidl::marker::SourceBreaking,
1423}
1424
1425impl fidl::Persistable for MultiRadioNeighborInfo {}
1426
1427#[derive(Clone, Debug, Default, PartialEq)]
1428pub struct Nat64ErrorCounters {
1429 pub unknown: Option<Nat64PacketCounters>,
1431 pub illegal_packet: Option<Nat64PacketCounters>,
1433 pub unsupported_protocol: Option<Nat64PacketCounters>,
1435 pub no_mapping: Option<Nat64PacketCounters>,
1437 #[doc(hidden)]
1438 pub __source_breaking: fidl::marker::SourceBreaking,
1439}
1440
1441impl fidl::Persistable for Nat64ErrorCounters {}
1442
1443#[derive(Clone, Debug, Default, PartialEq)]
1444pub struct Nat64Info {
1445 pub nat64_state: Option<BorderRoutingNat64State>,
1447 pub nat64_mappings: Option<Vec<Nat64Mapping>>,
1449 pub nat64_error_counters: Option<Nat64ErrorCounters>,
1451 pub nat64_protocol_counters: Option<Nat64ProtocolCounters>,
1453 #[doc(hidden)]
1454 pub __source_breaking: fidl::marker::SourceBreaking,
1455}
1456
1457impl fidl::Persistable for Nat64Info {}
1458
1459#[derive(Clone, Debug, Default, PartialEq)]
1461pub struct Nat64Mapping {
1462 pub mapping_id: Option<u64>,
1464 pub ip4_addr: Option<Vec<u8>>,
1466 pub ip6_addr: Option<Vec<u8>>,
1468 pub remaining_time_ms: Option<u32>,
1470 pub counters: Option<Nat64ProtocolCounters>,
1472 #[doc(hidden)]
1473 pub __source_breaking: fidl::marker::SourceBreaking,
1474}
1475
1476impl fidl::Persistable for Nat64Mapping {}
1477
1478#[derive(Clone, Debug, Default, PartialEq)]
1479pub struct Nat64PacketCounters {
1480 pub ipv4_to_ipv6_packets: Option<u64>,
1482 pub ipv6_to_ipv4_packets: Option<u64>,
1484 #[doc(hidden)]
1485 pub __source_breaking: fidl::marker::SourceBreaking,
1486}
1487
1488impl fidl::Persistable for Nat64PacketCounters {}
1489
1490#[derive(Clone, Debug, Default, PartialEq)]
1491pub struct Nat64ProtocolCounters {
1492 pub tcp: Option<Nat64TrafficCounters>,
1494 pub udp: Option<Nat64TrafficCounters>,
1496 pub icmp: Option<Nat64TrafficCounters>,
1498 pub total: Option<Nat64TrafficCounters>,
1500 #[doc(hidden)]
1501 pub __source_breaking: fidl::marker::SourceBreaking,
1502}
1503
1504impl fidl::Persistable for Nat64ProtocolCounters {}
1505
1506#[derive(Clone, Debug, Default, PartialEq)]
1507pub struct Nat64TrafficCounters {
1508 pub ipv4_to_ipv6_packets: Option<u64>,
1510 pub ipv4_to_ipv6_bytes: Option<u64>,
1512 pub ipv6_to_ipv4_packets: Option<u64>,
1514 pub ipv6_to_ipv4_bytes: Option<u64>,
1516 #[doc(hidden)]
1517 pub __source_breaking: fidl::marker::SourceBreaking,
1518}
1519
1520impl fidl::Persistable for Nat64TrafficCounters {}
1521
1522#[derive(Clone, Debug, Default, PartialEq)]
1526pub struct NetifAddress {
1527 pub address: Option<fidl_fuchsia_net_common::Ipv6Address>,
1531 pub prefix_length: Option<u8>,
1535 pub origin: Option<AddressOrigin>,
1539 pub preferred: Option<bool>,
1543 pub valid: Option<bool>,
1547 #[doc(hidden)]
1548 pub __source_breaking: fidl::marker::SourceBreaking,
1549}
1550
1551impl fidl::Persistable for NetifAddress {}
1552
1553#[derive(Clone, Debug, Default, PartialEq)]
1555pub struct NetworkData {
1556 pub on_mesh_prefixes: Option<Vec<BorderRouterConfig>>,
1560 pub external_routes: Option<Vec<ExternalRouteConfig>>,
1564 pub services: Option<Vec<ServiceConfig>>,
1568 pub contexts: Option<Vec<LowpanContextInfo>>,
1572 pub commissioning_dataset: Option<CommissioningDataset>,
1576 #[doc(hidden)]
1577 pub __source_breaking: fidl::marker::SourceBreaking,
1578}
1579
1580impl fidl::Persistable for NetworkData {}
1581
1582#[derive(Clone, Debug, Default, PartialEq)]
1584pub struct NetworkScanParameters {
1585 pub channels: Option<Vec<u16>>,
1589 pub tx_power_dbm: Option<i8>,
1600 #[doc(hidden)]
1601 pub __source_breaking: fidl::marker::SourceBreaking,
1602}
1603
1604impl fidl::Persistable for NetworkScanParameters {}
1605
1606#[derive(Clone, Debug, Default, PartialEq)]
1610pub struct OnMeshPrefix {
1611 pub subnet: Option<fidl_fuchsia_net_common::Ipv6AddressWithPrefix>,
1613 pub default_route_preference: Option<RoutePreference>,
1621 pub stable: Option<bool>,
1630 pub slaac_preferred: Option<bool>,
1639 pub slaac_valid: Option<bool>,
1648 #[doc(hidden)]
1649 pub __source_breaking: fidl::marker::SourceBreaking,
1650}
1651
1652impl fidl::Persistable for OnMeshPrefix {}
1653
1654#[derive(Clone, Debug, Default, PartialEq)]
1656pub struct OperationalDataset {
1657 pub active_timestamp: Option<i64>,
1661 pub pending_timestamp: Option<i64>,
1665 pub network_key: Option<Vec<u8>>,
1669 pub network_name: Option<Vec<u8>>,
1673 pub extended_pan_id: Option<Vec<u8>>,
1677 pub mesh_local_prefix: Option<Vec<u8>>,
1681 pub delay: Option<u32>,
1685 pub pan_id: Option<u16>,
1689 pub channel: Option<u16>,
1693 pub wakeup_channel: Option<u16>,
1697 pub pskc: Option<Vec<u8>>,
1701 pub security_policy: Option<SecurityPolicy>,
1705 pub channel_mask: Option<u32>,
1709 #[doc(hidden)]
1710 pub __source_breaking: fidl::marker::SourceBreaking,
1711}
1712
1713impl fidl::Persistable for OperationalDataset {}
1714
1715#[derive(Clone, Debug, Default, PartialEq)]
1717pub struct PdProcessedRaInfo {
1718 pub num_platform_ra_received: Option<u32>,
1722 pub num_platform_pio_processed: Option<u32>,
1726 pub last_platform_ra_msec: Option<u32>,
1730 #[doc(hidden)]
1731 pub __source_breaking: fidl::marker::SourceBreaking,
1732}
1733
1734impl fidl::Persistable for PdProcessedRaInfo {}
1735
1736#[derive(Clone, Debug, Default, PartialEq)]
1738pub struct RadioLinkInfo {
1739 pub link_type: Option<String>,
1745 pub preference: Option<u8>,
1749 #[doc(hidden)]
1750 pub __source_breaking: fidl::marker::SourceBreaking,
1751}
1752
1753impl fidl::Persistable for RadioLinkInfo {}
1754
1755#[derive(Clone, Debug, Default, PartialEq)]
1757pub struct RouterInfo {
1758 pub extended_address: Option<Vec<u8>>,
1762 pub thread_rloc: Option<u16>,
1766 pub router_id: Option<u8>,
1770 pub next_hop: Option<u8>,
1774 pub path_cost: Option<u8>,
1778 pub link_quality_in: Option<u8>,
1782 pub link_quality_out: Option<u8>,
1786 pub age: Option<i64>,
1790 pub link_established: Option<bool>,
1794 #[doc(hidden)]
1795 pub __source_breaking: fidl::marker::SourceBreaking,
1796}
1797
1798impl fidl::Persistable for RouterInfo {}
1799
1800#[derive(Clone, Debug, Default, PartialEq)]
1802pub struct SecurityPolicy {
1803 pub rotation_time: Option<u16>,
1807 pub obtain_network_key_enabled: Option<bool>,
1811 pub native_commissioning_enabled: Option<bool>,
1815 pub routers_enabled: Option<bool>,
1819 pub external_commissioning_enabled: Option<bool>,
1823 pub autonomous_enrollment_enabled: Option<bool>,
1827 pub network_key_provisioning_enabled: Option<bool>,
1831 pub toble_link_enabled: Option<bool>,
1835 pub nonccm_routers_enabled: Option<bool>,
1839 pub version_threshold_for_routing: Option<u8>,
1843 #[doc(hidden)]
1844 pub __source_breaking: fidl::marker::SourceBreaking,
1845}
1846
1847impl fidl::Persistable for SecurityPolicy {}
1848
1849#[derive(Clone, Debug, Default, PartialEq)]
1853pub struct ServerConfig {
1854 pub stable: Option<bool>,
1858 pub server_data_length: Option<u8>,
1862 pub server_data: Option<Vec<u8>>,
1866 pub rloc16: Option<u16>,
1870 #[doc(hidden)]
1871 pub __source_breaking: fidl::marker::SourceBreaking,
1872}
1873
1874impl fidl::Persistable for ServerConfig {}
1875
1876#[derive(Clone, Debug, Default, PartialEq)]
1880pub struct ServiceConfig {
1881 pub service_id: Option<u8>,
1885 pub enterprise_number: Option<u32>,
1889 pub service_data_length: Option<u8>,
1893 pub service_data: Option<Vec<u8>>,
1897 pub server_config: Option<ServerConfig>,
1901 #[doc(hidden)]
1902 pub __source_breaking: fidl::marker::SourceBreaking,
1903}
1904
1905impl fidl::Persistable for ServiceConfig {}
1906
1907#[derive(Clone, Debug, Default, PartialEq)]
1909pub struct SrpServerHost {
1910 pub name: Option<String>,
1914 pub deleted: Option<bool>,
1918 pub addresses: Option<Vec<fidl_fuchsia_net_common::Ipv6Address>>,
1922 #[doc(hidden)]
1923 pub __source_breaking: fidl::marker::SourceBreaking,
1924}
1925
1926impl fidl::Persistable for SrpServerHost {}
1927
1928#[derive(Clone, Debug, Default, PartialEq)]
1930pub struct SrpServerInfo {
1931 pub state: Option<SrpServerState>,
1935 pub port: Option<u16>,
1939 pub address_mode: Option<SrpServerAddressMode>,
1943 pub response_counters: Option<SrpServerResponseCounters>,
1947 pub hosts_registration: Option<SrpServerRegistration>,
1951 pub services_registration: Option<SrpServerRegistration>,
1955 pub hosts: Option<Vec<SrpServerHost>>,
1959 pub services: Option<Vec<SrpServerService>>,
1963 #[doc(hidden)]
1964 pub __source_breaking: fidl::marker::SourceBreaking,
1965}
1966
1967impl fidl::Persistable for SrpServerInfo {}
1968
1969#[derive(Clone, Debug, Default, PartialEq)]
1971pub struct SrpServerRegistration {
1972 pub fresh_count: Option<u32>,
1976 pub deleted_count: Option<u32>,
1980 pub lease_time_total: Option<i64>,
1984 pub key_lease_time_total: Option<i64>,
1988 pub remaining_lease_time_total: Option<i64>,
1992 pub remaining_key_lease_time_total: Option<i64>,
1996 #[doc(hidden)]
1997 pub __source_breaking: fidl::marker::SourceBreaking,
1998}
1999
2000impl fidl::Persistable for SrpServerRegistration {}
2001
2002#[derive(Clone, Debug, Default, PartialEq)]
2003pub struct SrpServerResponseCounters {
2004 pub success_response: Option<u32>,
2008 pub server_failure_response: Option<u32>,
2012 pub format_error_response: Option<u32>,
2016 pub name_exists_response: Option<u32>,
2020 pub refused_response: Option<u32>,
2024 pub other_response: Option<u32>,
2028 #[doc(hidden)]
2029 pub __source_breaking: fidl::marker::SourceBreaking,
2030}
2031
2032impl fidl::Persistable for SrpServerResponseCounters {}
2033
2034#[derive(Clone, Debug, Default, PartialEq)]
2036pub struct SrpServerService {
2037 pub instance_name: Option<String>,
2041 pub deleted: Option<bool>,
2045 pub subtypes: Option<Vec<String>>,
2054 pub port: Option<u16>,
2058 pub priority: Option<u16>,
2062 pub weight: Option<u16>,
2066 pub ttl: Option<i64>,
2070 pub lease: Option<i64>,
2074 pub key_lease: Option<i64>,
2078 pub txt_data: Option<Vec<DnsTxtEntry>>,
2082 pub host: Option<SrpServerHost>,
2086 #[doc(hidden)]
2087 pub __source_breaking: fidl::marker::SourceBreaking,
2088}
2089
2090impl fidl::Persistable for SrpServerService {}
2091
2092#[derive(Clone, Debug, Default, PartialEq)]
2099pub struct Telemetry {
2100 pub rssi: Option<i8>,
2102 pub tx_power: Option<i8>,
2104 pub channel_index: Option<u16>,
2106 pub partition_id: Option<u32>,
2108 pub stack_version: Option<String>,
2110 pub rcp_version: Option<String>,
2112 pub thread_link_mode: Option<u8>,
2118 pub thread_router_id: Option<u8>,
2122 pub thread_rloc: Option<u16>,
2126 pub thread_network_data_version: Option<u8>,
2130 pub thread_stable_network_data_version: Option<u8>,
2134 pub thread_network_data: Option<Vec<u8>>,
2139 pub thread_stable_network_data: Option<Vec<u8>>,
2144 pub thread_border_routing_counters: Option<BorderRoutingCounters>,
2148 pub srp_server_info: Option<SrpServerInfo>,
2152 pub dnssd_counters: Option<DnssdCounters>,
2156 pub leader_data: Option<LeaderData>,
2160 pub uptime: Option<i64>,
2164 pub nat64_info: Option<Nat64Info>,
2168 pub trel_counters: Option<TrelCounters>,
2172 pub trel_peers_info: Option<TrelPeersInfo>,
2176 pub upstream_dns_info: Option<UpstreamDnsInfo>,
2180 pub dhcp6pd_info: Option<Dhcp6PdInfo>,
2184 pub link_metrics_entries: Option<Vec<LinkMetricsEntry>>,
2188 pub border_agent_counters: Option<fidl_fuchsia_lowpan_device_common::BorderAgentCounters>,
2192 pub multi_ail_detected: Option<bool>,
2196 pub extended_pan_id: Option<u64>,
2201 pub border_routing_peers: Option<Vec<BorderRoutingPeer>>,
2205 pub border_routing_routers: Option<Vec<BorderRoutingRouter>>,
2209 pub active_dataset: Option<OperationalDataset>,
2213 pub multiradio_neighbor_info: Option<Vec<MultiRadioNeighborInfo>>,
2217 pub router_info: Option<Vec<RouterInfo>>,
2221 pub network_data: Option<NetworkData>,
2225 pub history_report: Option<ThreadHistoryReport>,
2229 pub ipaddrs: Option<Vec<NetifAddress>>,
2233 pub ipmaddrs: Option<Vec<fidl_fuchsia_net_common::Ipv6Address>>,
2237 pub border_routing_prefixes: Option<Vec<BorderRoutingPrefixTable>>,
2242 pub border_routing_rdnsses: Option<Vec<BorderRoutingRdnss>>,
2247 pub netstat: Option<Vec<UdpSocket>>,
2251 pub eid_cache_entries: Option<Vec<EidCacheEntry>>,
2255 pub cca_threshold: Option<i8>,
2259 #[doc(hidden)]
2260 pub __source_breaking: fidl::marker::SourceBreaking,
2261}
2262
2263impl fidl::Persistable for Telemetry {}
2264
2265#[derive(Clone, Debug, Default, PartialEq)]
2267pub struct ThreadHistoryReport {
2268 pub net_info_history: Option<Vec<ThreadNetworkInfoEntry>>,
2272 pub neighbor_info_history: Option<Vec<ThreadNeighborInfoEntry>>,
2276 pub router_info_history: Option<Vec<ThreadRouterInfoEntry>>,
2280 pub prefix_info_history: Option<Vec<ThreadNetDataPrefixInfoEntry>>,
2284 pub route_info_history: Option<Vec<ThreadNetDataRouteInfoEntry>>,
2288 #[doc(hidden)]
2289 pub __source_breaking: fidl::marker::SourceBreaking,
2290}
2291
2292impl fidl::Persistable for ThreadHistoryReport {}
2293
2294#[derive(Clone, Debug, Default, PartialEq)]
2298pub struct ThreadLinkMode {
2299 pub rx_on_when_idle: Option<bool>,
2303 pub device_type: Option<bool>,
2307 pub network_data: Option<bool>,
2311 #[doc(hidden)]
2312 pub __source_breaking: fidl::marker::SourceBreaking,
2313}
2314
2315impl fidl::Persistable for ThreadLinkMode {}
2316
2317#[derive(Clone, Debug, Default, PartialEq)]
2319pub struct ThreadNeighborInfoEntry {
2320 pub age: Option<i64>,
2324 pub is_child: Option<bool>,
2328 pub event: Option<HistoryTrackerNeighborEvent>,
2336 pub extended_address: Option<Vec<u8>>,
2340 pub rloc16: Option<u16>,
2344 pub mode: Option<ThreadLinkMode>,
2348 pub avg_rssi: Option<i32>,
2353 #[doc(hidden)]
2354 pub __source_breaking: fidl::marker::SourceBreaking,
2355}
2356
2357impl fidl::Persistable for ThreadNeighborInfoEntry {}
2358
2359#[derive(Clone, Debug, Default, PartialEq)]
2361pub struct ThreadNetDataPrefixInfoEntry {
2362 pub age: Option<i64>,
2366 pub event: Option<HistoryTrackerNetDataEvent>,
2372 pub on_mesh_prefix: Option<BorderRouterConfig>,
2376 #[doc(hidden)]
2377 pub __source_breaking: fidl::marker::SourceBreaking,
2378}
2379
2380impl fidl::Persistable for ThreadNetDataPrefixInfoEntry {}
2381
2382#[derive(Clone, Debug, Default, PartialEq)]
2384pub struct ThreadNetDataRouteInfoEntry {
2385 pub age: Option<i64>,
2389 pub event: Option<HistoryTrackerNetDataEvent>,
2395 pub external_route: Option<ExternalRouteConfig>,
2399 #[doc(hidden)]
2400 pub __source_breaking: fidl::marker::SourceBreaking,
2401}
2402
2403impl fidl::Persistable for ThreadNetDataRouteInfoEntry {}
2404
2405#[derive(Clone, Debug, Default, PartialEq)]
2407pub struct ThreadNetworkInfoEntry {
2408 pub age: Option<i64>,
2412 pub role: Option<fidl_fuchsia_lowpan_device_common::Role>,
2420 pub mode: Option<ThreadLinkMode>,
2424 pub rloc16: Option<u16>,
2428 pub partition_id: Option<u32>,
2432 #[doc(hidden)]
2433 pub __source_breaking: fidl::marker::SourceBreaking,
2434}
2435
2436impl fidl::Persistable for ThreadNetworkInfoEntry {}
2437
2438#[derive(Clone, Debug, Default, PartialEq)]
2440pub struct ThreadRouterInfoEntry {
2441 pub age: Option<i64>,
2445 pub event: Option<HistoryTrackerRouterEvent>,
2453 pub router_id: Option<u8>,
2457 pub router_rloc16: Option<u16>,
2461 pub next_hop_id: Option<u8>,
2465 pub next_hop_rloc16: Option<u16>,
2469 pub old_path_cost: Option<u8>,
2473 pub new_path_cost: Option<u8>,
2477 #[doc(hidden)]
2478 pub __source_breaking: fidl::marker::SourceBreaking,
2479}
2480
2481impl fidl::Persistable for ThreadRouterInfoEntry {}
2482
2483#[derive(Clone, Debug, Default, PartialEq)]
2488pub struct TrelCounters {
2489 pub rx_bytes: Option<u64>,
2491 pub rx_packets: Option<u64>,
2493 pub tx_bytes: Option<u64>,
2495 pub tx_failure: Option<u64>,
2497 pub tx_packets: Option<u64>,
2499 #[doc(hidden)]
2500 pub __source_breaking: fidl::marker::SourceBreaking,
2501}
2502
2503impl fidl::Persistable for TrelCounters {}
2504
2505#[derive(Clone, Debug, Default, PartialEq)]
2509pub struct TrelPeer {
2510 pub extended_address: Option<Vec<u8>>,
2514 pub extended_pan_id: Option<Vec<u8>>,
2518 pub sock_address: Option<String>,
2522 #[doc(hidden)]
2523 pub __source_breaking: fidl::marker::SourceBreaking,
2524}
2525
2526impl fidl::Persistable for TrelPeer {}
2527
2528#[derive(Clone, Debug, Default, PartialEq)]
2533pub struct TrelPeersInfo {
2534 pub num_trel_peers: Option<u16>,
2538 pub trel_peers: Option<Vec<TrelPeer>>,
2542 #[doc(hidden)]
2543 pub __source_breaking: fidl::marker::SourceBreaking,
2544}
2545
2546impl fidl::Persistable for TrelPeersInfo {}
2547
2548#[derive(Clone, Debug, Default, PartialEq)]
2550pub struct UdpSocket {
2551 pub sock_name: Option<String>,
2555 pub peer_name: Option<String>,
2559 #[doc(hidden)]
2560 pub __source_breaking: fidl::marker::SourceBreaking,
2561}
2562
2563impl fidl::Persistable for UdpSocket {}
2564
2565#[derive(Clone, Debug, Default, PartialEq)]
2569pub struct UpstreamDnsCounters {
2570 pub queries: Option<u32>,
2574 pub responses: Option<u32>,
2578 pub failures: Option<u32>,
2582 #[doc(hidden)]
2583 pub __source_breaking: fidl::marker::SourceBreaking,
2584}
2585
2586impl fidl::Persistable for UpstreamDnsCounters {}
2587
2588#[derive(Clone, Debug, Default, PartialEq)]
2593pub struct UpstreamDnsInfo {
2594 pub upstream_dns_query_state: Option<UpstreamDnsQueryState>,
2598 #[doc(hidden)]
2599 pub __source_breaking: fidl::marker::SourceBreaking,
2600}
2601
2602impl fidl::Persistable for UpstreamDnsInfo {}
2603
2604#[derive(Clone, Debug)]
2606pub enum JoinParams {
2607 ProvisioningParameter(fidl_fuchsia_lowpan_device_common::ProvisioningParams),
2609 JoinerParameter(JoinerCommissioningParams),
2615 #[doc(hidden)]
2616 __SourceBreaking { unknown_ordinal: u64 },
2617}
2618
2619#[macro_export]
2621macro_rules! JoinParamsUnknown {
2622 () => {
2623 _
2624 };
2625}
2626
2627impl PartialEq for JoinParams {
2629 fn eq(&self, other: &Self) -> bool {
2630 match (self, other) {
2631 (Self::ProvisioningParameter(x), Self::ProvisioningParameter(y)) => *x == *y,
2632 (Self::JoinerParameter(x), Self::JoinerParameter(y)) => *x == *y,
2633 _ => false,
2634 }
2635 }
2636}
2637
2638impl JoinParams {
2639 #[inline]
2640 pub fn ordinal(&self) -> u64 {
2641 match *self {
2642 Self::ProvisioningParameter(_) => 1,
2643 Self::JoinerParameter(_) => 2,
2644 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2645 }
2646 }
2647
2648 #[inline]
2649 pub fn unknown_variant_for_testing() -> Self {
2650 Self::__SourceBreaking { unknown_ordinal: 0 }
2651 }
2652
2653 #[inline]
2654 pub fn is_unknown(&self) -> bool {
2655 match self {
2656 Self::__SourceBreaking { .. } => true,
2657 _ => false,
2658 }
2659 }
2660}
2661
2662impl fidl::Persistable for JoinParams {}
2663
2664#[derive(Clone, Debug)]
2668pub enum ProvisioningProgress {
2669 Progress(f32),
2671 Identity(fidl_fuchsia_lowpan_device_common::Identity),
2673 #[doc(hidden)]
2674 __SourceBreaking { unknown_ordinal: u64 },
2675}
2676
2677#[macro_export]
2679macro_rules! ProvisioningProgressUnknown {
2680 () => {
2681 _
2682 };
2683}
2684
2685impl PartialEq for ProvisioningProgress {
2687 fn eq(&self, other: &Self) -> bool {
2688 match (self, other) {
2689 (Self::Progress(x), Self::Progress(y)) => *x == *y,
2690 (Self::Identity(x), Self::Identity(y)) => *x == *y,
2691 _ => false,
2692 }
2693 }
2694}
2695
2696impl ProvisioningProgress {
2697 #[inline]
2698 pub fn ordinal(&self) -> u64 {
2699 match *self {
2700 Self::Progress(_) => 1,
2701 Self::Identity(_) => 2,
2702 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
2703 }
2704 }
2705
2706 #[inline]
2707 pub fn unknown_variant_for_testing() -> Self {
2708 Self::__SourceBreaking { unknown_ordinal: 0 }
2709 }
2710
2711 #[inline]
2712 pub fn is_unknown(&self) -> bool {
2713 match self {
2714 Self::__SourceBreaking { .. } => true,
2715 _ => false,
2716 }
2717 }
2718}
2719
2720impl fidl::Persistable for ProvisioningProgress {}
2721
2722pub mod beacon_info_stream_ordinals {
2723 pub const NEXT: u64 = 0x367a557363a340b6;
2724}
2725
2726pub mod device_ordinals {
2727 pub const GET_SUPPORTED_CHANNELS: u64 = 0x2d8b969a9bd70f23;
2728}
2729
2730pub mod device_connector_ordinals {
2731 pub const CONNECT: u64 = 0x296896c9304836cd;
2732}
2733
2734pub mod device_extra_ordinals {
2735 pub const FORM_NETWORK: u64 = 0x6a8135f84bfc90e;
2736 pub const JOIN_NETWORK: u64 = 0x3ea583bab79f81c0;
2737 pub const START_NETWORK_SCAN: u64 = 0x6288c73b79188b40;
2738}
2739
2740pub mod device_extra_connector_ordinals {
2741 pub const CONNECT: u64 = 0x3fcb37e4226c81e9;
2742}
2743
2744pub mod device_route_ordinals {
2745 pub const REGISTER_ON_MESH_PREFIX: u64 = 0x2c4135231eb97f61;
2746 pub const UNREGISTER_ON_MESH_PREFIX: u64 = 0x82d5184028b797f;
2747 pub const REGISTER_EXTERNAL_ROUTE: u64 = 0x75f70f0fc34a5a73;
2748 pub const UNREGISTER_EXTERNAL_ROUTE: u64 = 0x3769be353b1d7088;
2749}
2750
2751pub mod device_route_connector_ordinals {
2752 pub const CONNECT: u64 = 0x19cd5fdcb971f4ac;
2753}
2754
2755pub mod device_route_extra_ordinals {
2756 pub const GET_LOCAL_ON_MESH_PREFIXES: u64 = 0xf192c43311c811;
2757 pub const GET_LOCAL_EXTERNAL_ROUTES: u64 = 0x5a688c2e62c766a6;
2758}
2759
2760pub mod device_route_extra_connector_ordinals {
2761 pub const CONNECT: u64 = 0x12f72df7b1348fe2;
2762}
2763
2764pub mod legacy_joining_ordinals {
2765 pub const MAKE_JOINABLE: u64 = 0x1739a6ae36d5c5aa;
2766}
2767
2768pub mod legacy_joining_connector_ordinals {
2769 pub const CONNECT: u64 = 0x3c8dfeb943bb8d06;
2770}
2771
2772pub mod provisioning_monitor_ordinals {
2773 pub const WATCH_PROGRESS: u64 = 0xc35336fc43ac0c;
2774}
2775
2776pub mod telemetry_provider_ordinals {
2777 pub const GET_TELEMETRY: u64 = 0xc34f2fff7dacc41;
2778}
2779
2780pub mod telemetry_provider_connector_ordinals {
2781 pub const CONNECT: u64 = 0x24a5bf1be73e2fad;
2782}
2783
2784mod internal {
2785 use super::*;
2786 unsafe impl fidl::encoding::TypeMarker for AddressOrigin {
2787 type Owned = Self;
2788
2789 #[inline(always)]
2790 fn inline_align(_context: fidl::encoding::Context) -> usize {
2791 std::mem::align_of::<u8>()
2792 }
2793
2794 #[inline(always)]
2795 fn inline_size(_context: fidl::encoding::Context) -> usize {
2796 std::mem::size_of::<u8>()
2797 }
2798
2799 #[inline(always)]
2800 fn encode_is_copy() -> bool {
2801 true
2802 }
2803
2804 #[inline(always)]
2805 fn decode_is_copy() -> bool {
2806 false
2807 }
2808 }
2809
2810 impl fidl::encoding::ValueTypeMarker for AddressOrigin {
2811 type Borrowed<'a> = Self;
2812 #[inline(always)]
2813 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2814 *value
2815 }
2816 }
2817
2818 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for AddressOrigin {
2819 #[inline]
2820 unsafe fn encode(
2821 self,
2822 encoder: &mut fidl::encoding::Encoder<'_, D>,
2823 offset: usize,
2824 _depth: fidl::encoding::Depth,
2825 ) -> fidl::Result<()> {
2826 encoder.debug_check_bounds::<Self>(offset);
2827 encoder.write_num(self.into_primitive(), offset);
2828 Ok(())
2829 }
2830 }
2831
2832 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AddressOrigin {
2833 #[inline(always)]
2834 fn new_empty() -> Self {
2835 Self::Thread
2836 }
2837
2838 #[inline]
2839 unsafe fn decode(
2840 &mut self,
2841 decoder: &mut fidl::encoding::Decoder<'_, D>,
2842 offset: usize,
2843 _depth: fidl::encoding::Depth,
2844 ) -> fidl::Result<()> {
2845 decoder.debug_check_bounds::<Self>(offset);
2846 let prim = decoder.read_num::<u8>(offset);
2847
2848 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2849 Ok(())
2850 }
2851 }
2852 unsafe impl fidl::encoding::TypeMarker for CacheEntryState {
2853 type Owned = Self;
2854
2855 #[inline(always)]
2856 fn inline_align(_context: fidl::encoding::Context) -> usize {
2857 std::mem::align_of::<u8>()
2858 }
2859
2860 #[inline(always)]
2861 fn inline_size(_context: fidl::encoding::Context) -> usize {
2862 std::mem::size_of::<u8>()
2863 }
2864
2865 #[inline(always)]
2866 fn encode_is_copy() -> bool {
2867 true
2868 }
2869
2870 #[inline(always)]
2871 fn decode_is_copy() -> bool {
2872 false
2873 }
2874 }
2875
2876 impl fidl::encoding::ValueTypeMarker for CacheEntryState {
2877 type Borrowed<'a> = Self;
2878 #[inline(always)]
2879 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2880 *value
2881 }
2882 }
2883
2884 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2885 for CacheEntryState
2886 {
2887 #[inline]
2888 unsafe fn encode(
2889 self,
2890 encoder: &mut fidl::encoding::Encoder<'_, D>,
2891 offset: usize,
2892 _depth: fidl::encoding::Depth,
2893 ) -> fidl::Result<()> {
2894 encoder.debug_check_bounds::<Self>(offset);
2895 encoder.write_num(self.into_primitive(), offset);
2896 Ok(())
2897 }
2898 }
2899
2900 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CacheEntryState {
2901 #[inline(always)]
2902 fn new_empty() -> Self {
2903 Self::Cached
2904 }
2905
2906 #[inline]
2907 unsafe fn decode(
2908 &mut self,
2909 decoder: &mut fidl::encoding::Decoder<'_, D>,
2910 offset: usize,
2911 _depth: fidl::encoding::Depth,
2912 ) -> fidl::Result<()> {
2913 decoder.debug_check_bounds::<Self>(offset);
2914 let prim = decoder.read_num::<u8>(offset);
2915
2916 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2917 Ok(())
2918 }
2919 }
2920 unsafe impl fidl::encoding::TypeMarker for Dhcp6PdState {
2921 type Owned = Self;
2922
2923 #[inline(always)]
2924 fn inline_align(_context: fidl::encoding::Context) -> usize {
2925 std::mem::align_of::<u32>()
2926 }
2927
2928 #[inline(always)]
2929 fn inline_size(_context: fidl::encoding::Context) -> usize {
2930 std::mem::size_of::<u32>()
2931 }
2932
2933 #[inline(always)]
2934 fn encode_is_copy() -> bool {
2935 false
2936 }
2937
2938 #[inline(always)]
2939 fn decode_is_copy() -> bool {
2940 false
2941 }
2942 }
2943
2944 impl fidl::encoding::ValueTypeMarker for Dhcp6PdState {
2945 type Borrowed<'a> = Self;
2946 #[inline(always)]
2947 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2948 *value
2949 }
2950 }
2951
2952 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Dhcp6PdState {
2953 #[inline]
2954 unsafe fn encode(
2955 self,
2956 encoder: &mut fidl::encoding::Encoder<'_, D>,
2957 offset: usize,
2958 _depth: fidl::encoding::Depth,
2959 ) -> fidl::Result<()> {
2960 encoder.debug_check_bounds::<Self>(offset);
2961 encoder.write_num(self.into_primitive(), offset);
2962 Ok(())
2963 }
2964 }
2965
2966 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dhcp6PdState {
2967 #[inline(always)]
2968 fn new_empty() -> Self {
2969 Self::unknown()
2970 }
2971
2972 #[inline]
2973 unsafe fn decode(
2974 &mut self,
2975 decoder: &mut fidl::encoding::Decoder<'_, D>,
2976 offset: usize,
2977 _depth: fidl::encoding::Depth,
2978 ) -> fidl::Result<()> {
2979 decoder.debug_check_bounds::<Self>(offset);
2980 let prim = decoder.read_num::<u32>(offset);
2981
2982 *self = Self::from_primitive_allow_unknown(prim);
2983 Ok(())
2984 }
2985 }
2986 unsafe impl fidl::encoding::TypeMarker for HistoryTrackerNeighborEvent {
2987 type Owned = Self;
2988
2989 #[inline(always)]
2990 fn inline_align(_context: fidl::encoding::Context) -> usize {
2991 std::mem::align_of::<u8>()
2992 }
2993
2994 #[inline(always)]
2995 fn inline_size(_context: fidl::encoding::Context) -> usize {
2996 std::mem::size_of::<u8>()
2997 }
2998
2999 #[inline(always)]
3000 fn encode_is_copy() -> bool {
3001 true
3002 }
3003
3004 #[inline(always)]
3005 fn decode_is_copy() -> bool {
3006 false
3007 }
3008 }
3009
3010 impl fidl::encoding::ValueTypeMarker for HistoryTrackerNeighborEvent {
3011 type Borrowed<'a> = Self;
3012 #[inline(always)]
3013 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3014 *value
3015 }
3016 }
3017
3018 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3019 for HistoryTrackerNeighborEvent
3020 {
3021 #[inline]
3022 unsafe fn encode(
3023 self,
3024 encoder: &mut fidl::encoding::Encoder<'_, D>,
3025 offset: usize,
3026 _depth: fidl::encoding::Depth,
3027 ) -> fidl::Result<()> {
3028 encoder.debug_check_bounds::<Self>(offset);
3029 encoder.write_num(self.into_primitive(), offset);
3030 Ok(())
3031 }
3032 }
3033
3034 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3035 for HistoryTrackerNeighborEvent
3036 {
3037 #[inline(always)]
3038 fn new_empty() -> Self {
3039 Self::Added
3040 }
3041
3042 #[inline]
3043 unsafe fn decode(
3044 &mut self,
3045 decoder: &mut fidl::encoding::Decoder<'_, D>,
3046 offset: usize,
3047 _depth: fidl::encoding::Depth,
3048 ) -> fidl::Result<()> {
3049 decoder.debug_check_bounds::<Self>(offset);
3050 let prim = decoder.read_num::<u8>(offset);
3051
3052 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3053 Ok(())
3054 }
3055 }
3056 unsafe impl fidl::encoding::TypeMarker for HistoryTrackerNetDataEvent {
3057 type Owned = Self;
3058
3059 #[inline(always)]
3060 fn inline_align(_context: fidl::encoding::Context) -> usize {
3061 std::mem::align_of::<u8>()
3062 }
3063
3064 #[inline(always)]
3065 fn inline_size(_context: fidl::encoding::Context) -> usize {
3066 std::mem::size_of::<u8>()
3067 }
3068
3069 #[inline(always)]
3070 fn encode_is_copy() -> bool {
3071 true
3072 }
3073
3074 #[inline(always)]
3075 fn decode_is_copy() -> bool {
3076 false
3077 }
3078 }
3079
3080 impl fidl::encoding::ValueTypeMarker for HistoryTrackerNetDataEvent {
3081 type Borrowed<'a> = Self;
3082 #[inline(always)]
3083 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3084 *value
3085 }
3086 }
3087
3088 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3089 for HistoryTrackerNetDataEvent
3090 {
3091 #[inline]
3092 unsafe fn encode(
3093 self,
3094 encoder: &mut fidl::encoding::Encoder<'_, D>,
3095 offset: usize,
3096 _depth: fidl::encoding::Depth,
3097 ) -> fidl::Result<()> {
3098 encoder.debug_check_bounds::<Self>(offset);
3099 encoder.write_num(self.into_primitive(), offset);
3100 Ok(())
3101 }
3102 }
3103
3104 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3105 for HistoryTrackerNetDataEvent
3106 {
3107 #[inline(always)]
3108 fn new_empty() -> Self {
3109 Self::Added
3110 }
3111
3112 #[inline]
3113 unsafe fn decode(
3114 &mut self,
3115 decoder: &mut fidl::encoding::Decoder<'_, D>,
3116 offset: usize,
3117 _depth: fidl::encoding::Depth,
3118 ) -> fidl::Result<()> {
3119 decoder.debug_check_bounds::<Self>(offset);
3120 let prim = decoder.read_num::<u8>(offset);
3121
3122 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3123 Ok(())
3124 }
3125 }
3126 unsafe impl fidl::encoding::TypeMarker for HistoryTrackerRouterEvent {
3127 type Owned = Self;
3128
3129 #[inline(always)]
3130 fn inline_align(_context: fidl::encoding::Context) -> usize {
3131 std::mem::align_of::<u8>()
3132 }
3133
3134 #[inline(always)]
3135 fn inline_size(_context: fidl::encoding::Context) -> usize {
3136 std::mem::size_of::<u8>()
3137 }
3138
3139 #[inline(always)]
3140 fn encode_is_copy() -> bool {
3141 true
3142 }
3143
3144 #[inline(always)]
3145 fn decode_is_copy() -> bool {
3146 false
3147 }
3148 }
3149
3150 impl fidl::encoding::ValueTypeMarker for HistoryTrackerRouterEvent {
3151 type Borrowed<'a> = Self;
3152 #[inline(always)]
3153 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3154 *value
3155 }
3156 }
3157
3158 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3159 for HistoryTrackerRouterEvent
3160 {
3161 #[inline]
3162 unsafe fn encode(
3163 self,
3164 encoder: &mut fidl::encoding::Encoder<'_, D>,
3165 offset: usize,
3166 _depth: fidl::encoding::Depth,
3167 ) -> fidl::Result<()> {
3168 encoder.debug_check_bounds::<Self>(offset);
3169 encoder.write_num(self.into_primitive(), offset);
3170 Ok(())
3171 }
3172 }
3173
3174 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3175 for HistoryTrackerRouterEvent
3176 {
3177 #[inline(always)]
3178 fn new_empty() -> Self {
3179 Self::Added
3180 }
3181
3182 #[inline]
3183 unsafe fn decode(
3184 &mut self,
3185 decoder: &mut fidl::encoding::Decoder<'_, D>,
3186 offset: usize,
3187 _depth: fidl::encoding::Depth,
3188 ) -> fidl::Result<()> {
3189 decoder.debug_check_bounds::<Self>(offset);
3190 let prim = decoder.read_num::<u8>(offset);
3191
3192 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3193 Ok(())
3194 }
3195 }
3196 unsafe impl fidl::encoding::TypeMarker for Nat64State {
3197 type Owned = Self;
3198
3199 #[inline(always)]
3200 fn inline_align(_context: fidl::encoding::Context) -> usize {
3201 std::mem::align_of::<u32>()
3202 }
3203
3204 #[inline(always)]
3205 fn inline_size(_context: fidl::encoding::Context) -> usize {
3206 std::mem::size_of::<u32>()
3207 }
3208
3209 #[inline(always)]
3210 fn encode_is_copy() -> bool {
3211 false
3212 }
3213
3214 #[inline(always)]
3215 fn decode_is_copy() -> bool {
3216 false
3217 }
3218 }
3219
3220 impl fidl::encoding::ValueTypeMarker for Nat64State {
3221 type Borrowed<'a> = Self;
3222 #[inline(always)]
3223 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3224 *value
3225 }
3226 }
3227
3228 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Nat64State {
3229 #[inline]
3230 unsafe fn encode(
3231 self,
3232 encoder: &mut fidl::encoding::Encoder<'_, D>,
3233 offset: usize,
3234 _depth: fidl::encoding::Depth,
3235 ) -> fidl::Result<()> {
3236 encoder.debug_check_bounds::<Self>(offset);
3237 encoder.write_num(self.into_primitive(), offset);
3238 Ok(())
3239 }
3240 }
3241
3242 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64State {
3243 #[inline(always)]
3244 fn new_empty() -> Self {
3245 Self::unknown()
3246 }
3247
3248 #[inline]
3249 unsafe fn decode(
3250 &mut self,
3251 decoder: &mut fidl::encoding::Decoder<'_, D>,
3252 offset: usize,
3253 _depth: fidl::encoding::Depth,
3254 ) -> fidl::Result<()> {
3255 decoder.debug_check_bounds::<Self>(offset);
3256 let prim = decoder.read_num::<u32>(offset);
3257
3258 *self = Self::from_primitive_allow_unknown(prim);
3259 Ok(())
3260 }
3261 }
3262 unsafe impl fidl::encoding::TypeMarker for ProvisionError {
3263 type Owned = Self;
3264
3265 #[inline(always)]
3266 fn inline_align(_context: fidl::encoding::Context) -> usize {
3267 std::mem::align_of::<i32>()
3268 }
3269
3270 #[inline(always)]
3271 fn inline_size(_context: fidl::encoding::Context) -> usize {
3272 std::mem::size_of::<i32>()
3273 }
3274
3275 #[inline(always)]
3276 fn encode_is_copy() -> bool {
3277 false
3278 }
3279
3280 #[inline(always)]
3281 fn decode_is_copy() -> bool {
3282 false
3283 }
3284 }
3285
3286 impl fidl::encoding::ValueTypeMarker for ProvisionError {
3287 type Borrowed<'a> = Self;
3288 #[inline(always)]
3289 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3290 *value
3291 }
3292 }
3293
3294 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ProvisionError {
3295 #[inline]
3296 unsafe fn encode(
3297 self,
3298 encoder: &mut fidl::encoding::Encoder<'_, D>,
3299 offset: usize,
3300 _depth: fidl::encoding::Depth,
3301 ) -> fidl::Result<()> {
3302 encoder.debug_check_bounds::<Self>(offset);
3303 encoder.write_num(self.into_primitive(), offset);
3304 Ok(())
3305 }
3306 }
3307
3308 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProvisionError {
3309 #[inline(always)]
3310 fn new_empty() -> Self {
3311 Self::unknown()
3312 }
3313
3314 #[inline]
3315 unsafe fn decode(
3316 &mut self,
3317 decoder: &mut fidl::encoding::Decoder<'_, D>,
3318 offset: usize,
3319 _depth: fidl::encoding::Depth,
3320 ) -> fidl::Result<()> {
3321 decoder.debug_check_bounds::<Self>(offset);
3322 let prim = decoder.read_num::<i32>(offset);
3323
3324 *self = Self::from_primitive_allow_unknown(prim);
3325 Ok(())
3326 }
3327 }
3328 unsafe impl fidl::encoding::TypeMarker for RoutePreference {
3329 type Owned = Self;
3330
3331 #[inline(always)]
3332 fn inline_align(_context: fidl::encoding::Context) -> usize {
3333 std::mem::align_of::<i8>()
3334 }
3335
3336 #[inline(always)]
3337 fn inline_size(_context: fidl::encoding::Context) -> usize {
3338 std::mem::size_of::<i8>()
3339 }
3340
3341 #[inline(always)]
3342 fn encode_is_copy() -> bool {
3343 true
3344 }
3345
3346 #[inline(always)]
3347 fn decode_is_copy() -> bool {
3348 false
3349 }
3350 }
3351
3352 impl fidl::encoding::ValueTypeMarker for RoutePreference {
3353 type Borrowed<'a> = Self;
3354 #[inline(always)]
3355 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3356 *value
3357 }
3358 }
3359
3360 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3361 for RoutePreference
3362 {
3363 #[inline]
3364 unsafe fn encode(
3365 self,
3366 encoder: &mut fidl::encoding::Encoder<'_, D>,
3367 offset: usize,
3368 _depth: fidl::encoding::Depth,
3369 ) -> fidl::Result<()> {
3370 encoder.debug_check_bounds::<Self>(offset);
3371 encoder.write_num(self.into_primitive(), offset);
3372 Ok(())
3373 }
3374 }
3375
3376 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoutePreference {
3377 #[inline(always)]
3378 fn new_empty() -> Self {
3379 Self::Low
3380 }
3381
3382 #[inline]
3383 unsafe fn decode(
3384 &mut self,
3385 decoder: &mut fidl::encoding::Decoder<'_, D>,
3386 offset: usize,
3387 _depth: fidl::encoding::Depth,
3388 ) -> fidl::Result<()> {
3389 decoder.debug_check_bounds::<Self>(offset);
3390 let prim = decoder.read_num::<i8>(offset);
3391
3392 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3393 Ok(())
3394 }
3395 }
3396 unsafe impl fidl::encoding::TypeMarker for SrpServerAddressMode {
3397 type Owned = Self;
3398
3399 #[inline(always)]
3400 fn inline_align(_context: fidl::encoding::Context) -> usize {
3401 std::mem::align_of::<u32>()
3402 }
3403
3404 #[inline(always)]
3405 fn inline_size(_context: fidl::encoding::Context) -> usize {
3406 std::mem::size_of::<u32>()
3407 }
3408
3409 #[inline(always)]
3410 fn encode_is_copy() -> bool {
3411 true
3412 }
3413
3414 #[inline(always)]
3415 fn decode_is_copy() -> bool {
3416 false
3417 }
3418 }
3419
3420 impl fidl::encoding::ValueTypeMarker for SrpServerAddressMode {
3421 type Borrowed<'a> = Self;
3422 #[inline(always)]
3423 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3424 *value
3425 }
3426 }
3427
3428 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3429 for SrpServerAddressMode
3430 {
3431 #[inline]
3432 unsafe fn encode(
3433 self,
3434 encoder: &mut fidl::encoding::Encoder<'_, D>,
3435 offset: usize,
3436 _depth: fidl::encoding::Depth,
3437 ) -> fidl::Result<()> {
3438 encoder.debug_check_bounds::<Self>(offset);
3439 encoder.write_num(self.into_primitive(), offset);
3440 Ok(())
3441 }
3442 }
3443
3444 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerAddressMode {
3445 #[inline(always)]
3446 fn new_empty() -> Self {
3447 Self::Unicast
3448 }
3449
3450 #[inline]
3451 unsafe fn decode(
3452 &mut self,
3453 decoder: &mut fidl::encoding::Decoder<'_, D>,
3454 offset: usize,
3455 _depth: fidl::encoding::Depth,
3456 ) -> fidl::Result<()> {
3457 decoder.debug_check_bounds::<Self>(offset);
3458 let prim = decoder.read_num::<u32>(offset);
3459
3460 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3461 Ok(())
3462 }
3463 }
3464 unsafe impl fidl::encoding::TypeMarker for SrpServerState {
3465 type Owned = Self;
3466
3467 #[inline(always)]
3468 fn inline_align(_context: fidl::encoding::Context) -> usize {
3469 std::mem::align_of::<u32>()
3470 }
3471
3472 #[inline(always)]
3473 fn inline_size(_context: fidl::encoding::Context) -> usize {
3474 std::mem::size_of::<u32>()
3475 }
3476
3477 #[inline(always)]
3478 fn encode_is_copy() -> bool {
3479 true
3480 }
3481
3482 #[inline(always)]
3483 fn decode_is_copy() -> bool {
3484 false
3485 }
3486 }
3487
3488 impl fidl::encoding::ValueTypeMarker for SrpServerState {
3489 type Borrowed<'a> = Self;
3490 #[inline(always)]
3491 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3492 *value
3493 }
3494 }
3495
3496 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for SrpServerState {
3497 #[inline]
3498 unsafe fn encode(
3499 self,
3500 encoder: &mut fidl::encoding::Encoder<'_, D>,
3501 offset: usize,
3502 _depth: fidl::encoding::Depth,
3503 ) -> fidl::Result<()> {
3504 encoder.debug_check_bounds::<Self>(offset);
3505 encoder.write_num(self.into_primitive(), offset);
3506 Ok(())
3507 }
3508 }
3509
3510 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerState {
3511 #[inline(always)]
3512 fn new_empty() -> Self {
3513 Self::Disabled
3514 }
3515
3516 #[inline]
3517 unsafe fn decode(
3518 &mut self,
3519 decoder: &mut fidl::encoding::Decoder<'_, D>,
3520 offset: usize,
3521 _depth: fidl::encoding::Depth,
3522 ) -> fidl::Result<()> {
3523 decoder.debug_check_bounds::<Self>(offset);
3524 let prim = decoder.read_num::<u32>(offset);
3525
3526 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
3527 Ok(())
3528 }
3529 }
3530 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsQueryState {
3531 type Owned = Self;
3532
3533 #[inline(always)]
3534 fn inline_align(_context: fidl::encoding::Context) -> usize {
3535 std::mem::align_of::<u32>()
3536 }
3537
3538 #[inline(always)]
3539 fn inline_size(_context: fidl::encoding::Context) -> usize {
3540 std::mem::size_of::<u32>()
3541 }
3542
3543 #[inline(always)]
3544 fn encode_is_copy() -> bool {
3545 false
3546 }
3547
3548 #[inline(always)]
3549 fn decode_is_copy() -> bool {
3550 false
3551 }
3552 }
3553
3554 impl fidl::encoding::ValueTypeMarker for UpstreamDnsQueryState {
3555 type Borrowed<'a> = Self;
3556 #[inline(always)]
3557 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3558 *value
3559 }
3560 }
3561
3562 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
3563 for UpstreamDnsQueryState
3564 {
3565 #[inline]
3566 unsafe fn encode(
3567 self,
3568 encoder: &mut fidl::encoding::Encoder<'_, D>,
3569 offset: usize,
3570 _depth: fidl::encoding::Depth,
3571 ) -> fidl::Result<()> {
3572 encoder.debug_check_bounds::<Self>(offset);
3573 encoder.write_num(self.into_primitive(), offset);
3574 Ok(())
3575 }
3576 }
3577
3578 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsQueryState {
3579 #[inline(always)]
3580 fn new_empty() -> Self {
3581 Self::unknown()
3582 }
3583
3584 #[inline]
3585 unsafe fn decode(
3586 &mut self,
3587 decoder: &mut fidl::encoding::Decoder<'_, D>,
3588 offset: usize,
3589 _depth: fidl::encoding::Depth,
3590 ) -> fidl::Result<()> {
3591 decoder.debug_check_bounds::<Self>(offset);
3592 let prim = decoder.read_num::<u32>(offset);
3593
3594 *self = Self::from_primitive_allow_unknown(prim);
3595 Ok(())
3596 }
3597 }
3598
3599 impl fidl::encoding::ValueTypeMarker for BeaconInfoStreamNextResponse {
3600 type Borrowed<'a> = &'a Self;
3601 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3602 value
3603 }
3604 }
3605
3606 unsafe impl fidl::encoding::TypeMarker for BeaconInfoStreamNextResponse {
3607 type Owned = Self;
3608
3609 #[inline(always)]
3610 fn inline_align(_context: fidl::encoding::Context) -> usize {
3611 8
3612 }
3613
3614 #[inline(always)]
3615 fn inline_size(_context: fidl::encoding::Context) -> usize {
3616 16
3617 }
3618 }
3619
3620 unsafe impl<D: fidl::encoding::ResourceDialect>
3621 fidl::encoding::Encode<BeaconInfoStreamNextResponse, D> for &BeaconInfoStreamNextResponse
3622 {
3623 #[inline]
3624 unsafe fn encode(
3625 self,
3626 encoder: &mut fidl::encoding::Encoder<'_, D>,
3627 offset: usize,
3628 _depth: fidl::encoding::Depth,
3629 ) -> fidl::Result<()> {
3630 encoder.debug_check_bounds::<BeaconInfoStreamNextResponse>(offset);
3631 fidl::encoding::Encode::<BeaconInfoStreamNextResponse, D>::encode(
3633 (
3634 <fidl::encoding::Vector<BeaconInfo, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.beacons),
3635 ),
3636 encoder, offset, _depth
3637 )
3638 }
3639 }
3640 unsafe impl<
3641 D: fidl::encoding::ResourceDialect,
3642 T0: fidl::encoding::Encode<fidl::encoding::Vector<BeaconInfo, 32>, D>,
3643 > fidl::encoding::Encode<BeaconInfoStreamNextResponse, D> for (T0,)
3644 {
3645 #[inline]
3646 unsafe fn encode(
3647 self,
3648 encoder: &mut fidl::encoding::Encoder<'_, D>,
3649 offset: usize,
3650 depth: fidl::encoding::Depth,
3651 ) -> fidl::Result<()> {
3652 encoder.debug_check_bounds::<BeaconInfoStreamNextResponse>(offset);
3653 self.0.encode(encoder, offset + 0, depth)?;
3657 Ok(())
3658 }
3659 }
3660
3661 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3662 for BeaconInfoStreamNextResponse
3663 {
3664 #[inline(always)]
3665 fn new_empty() -> Self {
3666 Self { beacons: fidl::new_empty!(fidl::encoding::Vector<BeaconInfo, 32>, D) }
3667 }
3668
3669 #[inline]
3670 unsafe fn decode(
3671 &mut self,
3672 decoder: &mut fidl::encoding::Decoder<'_, D>,
3673 offset: usize,
3674 _depth: fidl::encoding::Depth,
3675 ) -> fidl::Result<()> {
3676 decoder.debug_check_bounds::<Self>(offset);
3677 fidl::decode!(fidl::encoding::Vector<BeaconInfo, 32>, D, &mut self.beacons, decoder, offset + 0, _depth)?;
3679 Ok(())
3680 }
3681 }
3682
3683 impl fidl::encoding::ValueTypeMarker for DeviceGetSupportedChannelsResponse {
3684 type Borrowed<'a> = &'a Self;
3685 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3686 value
3687 }
3688 }
3689
3690 unsafe impl fidl::encoding::TypeMarker for DeviceGetSupportedChannelsResponse {
3691 type Owned = Self;
3692
3693 #[inline(always)]
3694 fn inline_align(_context: fidl::encoding::Context) -> usize {
3695 8
3696 }
3697
3698 #[inline(always)]
3699 fn inline_size(_context: fidl::encoding::Context) -> usize {
3700 16
3701 }
3702 }
3703
3704 unsafe impl<D: fidl::encoding::ResourceDialect>
3705 fidl::encoding::Encode<DeviceGetSupportedChannelsResponse, D>
3706 for &DeviceGetSupportedChannelsResponse
3707 {
3708 #[inline]
3709 unsafe fn encode(
3710 self,
3711 encoder: &mut fidl::encoding::Encoder<'_, D>,
3712 offset: usize,
3713 _depth: fidl::encoding::Depth,
3714 ) -> fidl::Result<()> {
3715 encoder.debug_check_bounds::<DeviceGetSupportedChannelsResponse>(offset);
3716 fidl::encoding::Encode::<DeviceGetSupportedChannelsResponse, D>::encode(
3718 (
3719 <fidl::encoding::Vector<ChannelInfo, 200> as fidl::encoding::ValueTypeMarker>::borrow(&self.channels_info),
3720 ),
3721 encoder, offset, _depth
3722 )
3723 }
3724 }
3725 unsafe impl<
3726 D: fidl::encoding::ResourceDialect,
3727 T0: fidl::encoding::Encode<fidl::encoding::Vector<ChannelInfo, 200>, D>,
3728 > fidl::encoding::Encode<DeviceGetSupportedChannelsResponse, D> for (T0,)
3729 {
3730 #[inline]
3731 unsafe fn encode(
3732 self,
3733 encoder: &mut fidl::encoding::Encoder<'_, D>,
3734 offset: usize,
3735 depth: fidl::encoding::Depth,
3736 ) -> fidl::Result<()> {
3737 encoder.debug_check_bounds::<DeviceGetSupportedChannelsResponse>(offset);
3738 self.0.encode(encoder, offset + 0, depth)?;
3742 Ok(())
3743 }
3744 }
3745
3746 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3747 for DeviceGetSupportedChannelsResponse
3748 {
3749 #[inline(always)]
3750 fn new_empty() -> Self {
3751 Self { channels_info: fidl::new_empty!(fidl::encoding::Vector<ChannelInfo, 200>, D) }
3752 }
3753
3754 #[inline]
3755 unsafe fn decode(
3756 &mut self,
3757 decoder: &mut fidl::encoding::Decoder<'_, D>,
3758 offset: usize,
3759 _depth: fidl::encoding::Depth,
3760 ) -> fidl::Result<()> {
3761 decoder.debug_check_bounds::<Self>(offset);
3762 fidl::decode!(fidl::encoding::Vector<ChannelInfo, 200>, D, &mut self.channels_info, decoder, offset + 0, _depth)?;
3764 Ok(())
3765 }
3766 }
3767
3768 impl fidl::encoding::ValueTypeMarker for DeviceRouteExtraGetLocalExternalRoutesResponse {
3769 type Borrowed<'a> = &'a Self;
3770 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3771 value
3772 }
3773 }
3774
3775 unsafe impl fidl::encoding::TypeMarker for DeviceRouteExtraGetLocalExternalRoutesResponse {
3776 type Owned = Self;
3777
3778 #[inline(always)]
3779 fn inline_align(_context: fidl::encoding::Context) -> usize {
3780 8
3781 }
3782
3783 #[inline(always)]
3784 fn inline_size(_context: fidl::encoding::Context) -> usize {
3785 16
3786 }
3787 }
3788
3789 unsafe impl<D: fidl::encoding::ResourceDialect>
3790 fidl::encoding::Encode<DeviceRouteExtraGetLocalExternalRoutesResponse, D>
3791 for &DeviceRouteExtraGetLocalExternalRoutesResponse
3792 {
3793 #[inline]
3794 unsafe fn encode(
3795 self,
3796 encoder: &mut fidl::encoding::Encoder<'_, D>,
3797 offset: usize,
3798 _depth: fidl::encoding::Depth,
3799 ) -> fidl::Result<()> {
3800 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalExternalRoutesResponse>(offset);
3801 fidl::encoding::Encode::<DeviceRouteExtraGetLocalExternalRoutesResponse, D>::encode(
3803 (
3804 <fidl::encoding::Vector<ExternalRoute, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.external_routes),
3805 ),
3806 encoder, offset, _depth
3807 )
3808 }
3809 }
3810 unsafe impl<
3811 D: fidl::encoding::ResourceDialect,
3812 T0: fidl::encoding::Encode<fidl::encoding::Vector<ExternalRoute, 32>, D>,
3813 > fidl::encoding::Encode<DeviceRouteExtraGetLocalExternalRoutesResponse, D> for (T0,)
3814 {
3815 #[inline]
3816 unsafe fn encode(
3817 self,
3818 encoder: &mut fidl::encoding::Encoder<'_, D>,
3819 offset: usize,
3820 depth: fidl::encoding::Depth,
3821 ) -> fidl::Result<()> {
3822 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalExternalRoutesResponse>(offset);
3823 self.0.encode(encoder, offset + 0, depth)?;
3827 Ok(())
3828 }
3829 }
3830
3831 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3832 for DeviceRouteExtraGetLocalExternalRoutesResponse
3833 {
3834 #[inline(always)]
3835 fn new_empty() -> Self {
3836 Self { external_routes: fidl::new_empty!(fidl::encoding::Vector<ExternalRoute, 32>, D) }
3837 }
3838
3839 #[inline]
3840 unsafe fn decode(
3841 &mut self,
3842 decoder: &mut fidl::encoding::Decoder<'_, D>,
3843 offset: usize,
3844 _depth: fidl::encoding::Depth,
3845 ) -> fidl::Result<()> {
3846 decoder.debug_check_bounds::<Self>(offset);
3847 fidl::decode!(fidl::encoding::Vector<ExternalRoute, 32>, D, &mut self.external_routes, decoder, offset + 0, _depth)?;
3849 Ok(())
3850 }
3851 }
3852
3853 impl fidl::encoding::ValueTypeMarker for DeviceRouteExtraGetLocalOnMeshPrefixesResponse {
3854 type Borrowed<'a> = &'a Self;
3855 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3856 value
3857 }
3858 }
3859
3860 unsafe impl fidl::encoding::TypeMarker for DeviceRouteExtraGetLocalOnMeshPrefixesResponse {
3861 type Owned = Self;
3862
3863 #[inline(always)]
3864 fn inline_align(_context: fidl::encoding::Context) -> usize {
3865 8
3866 }
3867
3868 #[inline(always)]
3869 fn inline_size(_context: fidl::encoding::Context) -> usize {
3870 16
3871 }
3872 }
3873
3874 unsafe impl<D: fidl::encoding::ResourceDialect>
3875 fidl::encoding::Encode<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D>
3876 for &DeviceRouteExtraGetLocalOnMeshPrefixesResponse
3877 {
3878 #[inline]
3879 unsafe fn encode(
3880 self,
3881 encoder: &mut fidl::encoding::Encoder<'_, D>,
3882 offset: usize,
3883 _depth: fidl::encoding::Depth,
3884 ) -> fidl::Result<()> {
3885 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse>(offset);
3886 fidl::encoding::Encode::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D>::encode(
3888 (
3889 <fidl::encoding::Vector<OnMeshPrefix, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.prefixes),
3890 ),
3891 encoder, offset, _depth
3892 )
3893 }
3894 }
3895 unsafe impl<
3896 D: fidl::encoding::ResourceDialect,
3897 T0: fidl::encoding::Encode<fidl::encoding::Vector<OnMeshPrefix, 32>, D>,
3898 > fidl::encoding::Encode<DeviceRouteExtraGetLocalOnMeshPrefixesResponse, D> for (T0,)
3899 {
3900 #[inline]
3901 unsafe fn encode(
3902 self,
3903 encoder: &mut fidl::encoding::Encoder<'_, D>,
3904 offset: usize,
3905 depth: fidl::encoding::Depth,
3906 ) -> fidl::Result<()> {
3907 encoder.debug_check_bounds::<DeviceRouteExtraGetLocalOnMeshPrefixesResponse>(offset);
3908 self.0.encode(encoder, offset + 0, depth)?;
3912 Ok(())
3913 }
3914 }
3915
3916 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3917 for DeviceRouteExtraGetLocalOnMeshPrefixesResponse
3918 {
3919 #[inline(always)]
3920 fn new_empty() -> Self {
3921 Self { prefixes: fidl::new_empty!(fidl::encoding::Vector<OnMeshPrefix, 32>, D) }
3922 }
3923
3924 #[inline]
3925 unsafe fn decode(
3926 &mut self,
3927 decoder: &mut fidl::encoding::Decoder<'_, D>,
3928 offset: usize,
3929 _depth: fidl::encoding::Depth,
3930 ) -> fidl::Result<()> {
3931 decoder.debug_check_bounds::<Self>(offset);
3932 fidl::decode!(fidl::encoding::Vector<OnMeshPrefix, 32>, D, &mut self.prefixes, decoder, offset + 0, _depth)?;
3934 Ok(())
3935 }
3936 }
3937
3938 impl fidl::encoding::ValueTypeMarker for DeviceRouteRegisterExternalRouteRequest {
3939 type Borrowed<'a> = &'a Self;
3940 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3941 value
3942 }
3943 }
3944
3945 unsafe impl fidl::encoding::TypeMarker for DeviceRouteRegisterExternalRouteRequest {
3946 type Owned = Self;
3947
3948 #[inline(always)]
3949 fn inline_align(_context: fidl::encoding::Context) -> usize {
3950 8
3951 }
3952
3953 #[inline(always)]
3954 fn inline_size(_context: fidl::encoding::Context) -> usize {
3955 16
3956 }
3957 }
3958
3959 unsafe impl<D: fidl::encoding::ResourceDialect>
3960 fidl::encoding::Encode<DeviceRouteRegisterExternalRouteRequest, D>
3961 for &DeviceRouteRegisterExternalRouteRequest
3962 {
3963 #[inline]
3964 unsafe fn encode(
3965 self,
3966 encoder: &mut fidl::encoding::Encoder<'_, D>,
3967 offset: usize,
3968 _depth: fidl::encoding::Depth,
3969 ) -> fidl::Result<()> {
3970 encoder.debug_check_bounds::<DeviceRouteRegisterExternalRouteRequest>(offset);
3971 fidl::encoding::Encode::<DeviceRouteRegisterExternalRouteRequest, D>::encode(
3973 (<ExternalRoute as fidl::encoding::ValueTypeMarker>::borrow(&self.external_route),),
3974 encoder,
3975 offset,
3976 _depth,
3977 )
3978 }
3979 }
3980 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ExternalRoute, D>>
3981 fidl::encoding::Encode<DeviceRouteRegisterExternalRouteRequest, D> for (T0,)
3982 {
3983 #[inline]
3984 unsafe fn encode(
3985 self,
3986 encoder: &mut fidl::encoding::Encoder<'_, D>,
3987 offset: usize,
3988 depth: fidl::encoding::Depth,
3989 ) -> fidl::Result<()> {
3990 encoder.debug_check_bounds::<DeviceRouteRegisterExternalRouteRequest>(offset);
3991 self.0.encode(encoder, offset + 0, depth)?;
3995 Ok(())
3996 }
3997 }
3998
3999 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4000 for DeviceRouteRegisterExternalRouteRequest
4001 {
4002 #[inline(always)]
4003 fn new_empty() -> Self {
4004 Self { external_route: fidl::new_empty!(ExternalRoute, D) }
4005 }
4006
4007 #[inline]
4008 unsafe fn decode(
4009 &mut self,
4010 decoder: &mut fidl::encoding::Decoder<'_, D>,
4011 offset: usize,
4012 _depth: fidl::encoding::Depth,
4013 ) -> fidl::Result<()> {
4014 decoder.debug_check_bounds::<Self>(offset);
4015 fidl::decode!(ExternalRoute, D, &mut self.external_route, decoder, offset + 0, _depth)?;
4017 Ok(())
4018 }
4019 }
4020
4021 impl fidl::encoding::ValueTypeMarker for DeviceRouteRegisterOnMeshPrefixRequest {
4022 type Borrowed<'a> = &'a Self;
4023 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4024 value
4025 }
4026 }
4027
4028 unsafe impl fidl::encoding::TypeMarker for DeviceRouteRegisterOnMeshPrefixRequest {
4029 type Owned = Self;
4030
4031 #[inline(always)]
4032 fn inline_align(_context: fidl::encoding::Context) -> usize {
4033 8
4034 }
4035
4036 #[inline(always)]
4037 fn inline_size(_context: fidl::encoding::Context) -> usize {
4038 16
4039 }
4040 }
4041
4042 unsafe impl<D: fidl::encoding::ResourceDialect>
4043 fidl::encoding::Encode<DeviceRouteRegisterOnMeshPrefixRequest, D>
4044 for &DeviceRouteRegisterOnMeshPrefixRequest
4045 {
4046 #[inline]
4047 unsafe fn encode(
4048 self,
4049 encoder: &mut fidl::encoding::Encoder<'_, D>,
4050 offset: usize,
4051 _depth: fidl::encoding::Depth,
4052 ) -> fidl::Result<()> {
4053 encoder.debug_check_bounds::<DeviceRouteRegisterOnMeshPrefixRequest>(offset);
4054 fidl::encoding::Encode::<DeviceRouteRegisterOnMeshPrefixRequest, D>::encode(
4056 (<OnMeshPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.prefix),),
4057 encoder,
4058 offset,
4059 _depth,
4060 )
4061 }
4062 }
4063 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<OnMeshPrefix, D>>
4064 fidl::encoding::Encode<DeviceRouteRegisterOnMeshPrefixRequest, D> for (T0,)
4065 {
4066 #[inline]
4067 unsafe fn encode(
4068 self,
4069 encoder: &mut fidl::encoding::Encoder<'_, D>,
4070 offset: usize,
4071 depth: fidl::encoding::Depth,
4072 ) -> fidl::Result<()> {
4073 encoder.debug_check_bounds::<DeviceRouteRegisterOnMeshPrefixRequest>(offset);
4074 self.0.encode(encoder, offset + 0, depth)?;
4078 Ok(())
4079 }
4080 }
4081
4082 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4083 for DeviceRouteRegisterOnMeshPrefixRequest
4084 {
4085 #[inline(always)]
4086 fn new_empty() -> Self {
4087 Self { prefix: fidl::new_empty!(OnMeshPrefix, D) }
4088 }
4089
4090 #[inline]
4091 unsafe fn decode(
4092 &mut self,
4093 decoder: &mut fidl::encoding::Decoder<'_, D>,
4094 offset: usize,
4095 _depth: fidl::encoding::Depth,
4096 ) -> fidl::Result<()> {
4097 decoder.debug_check_bounds::<Self>(offset);
4098 fidl::decode!(OnMeshPrefix, D, &mut self.prefix, decoder, offset + 0, _depth)?;
4100 Ok(())
4101 }
4102 }
4103
4104 impl fidl::encoding::ValueTypeMarker for DeviceRouteUnregisterExternalRouteRequest {
4105 type Borrowed<'a> = &'a Self;
4106 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4107 value
4108 }
4109 }
4110
4111 unsafe impl fidl::encoding::TypeMarker for DeviceRouteUnregisterExternalRouteRequest {
4112 type Owned = Self;
4113
4114 #[inline(always)]
4115 fn inline_align(_context: fidl::encoding::Context) -> usize {
4116 1
4117 }
4118
4119 #[inline(always)]
4120 fn inline_size(_context: fidl::encoding::Context) -> usize {
4121 17
4122 }
4123 }
4124
4125 unsafe impl<D: fidl::encoding::ResourceDialect>
4126 fidl::encoding::Encode<DeviceRouteUnregisterExternalRouteRequest, D>
4127 for &DeviceRouteUnregisterExternalRouteRequest
4128 {
4129 #[inline]
4130 unsafe fn encode(
4131 self,
4132 encoder: &mut fidl::encoding::Encoder<'_, D>,
4133 offset: usize,
4134 _depth: fidl::encoding::Depth,
4135 ) -> fidl::Result<()> {
4136 encoder.debug_check_bounds::<DeviceRouteUnregisterExternalRouteRequest>(offset);
4137 fidl::encoding::Encode::<DeviceRouteUnregisterExternalRouteRequest, D>::encode(
4139 (
4140 <fidl_fuchsia_net_common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.subnet),
4141 ),
4142 encoder, offset, _depth
4143 )
4144 }
4145 }
4146 unsafe impl<
4147 D: fidl::encoding::ResourceDialect,
4148 T0: fidl::encoding::Encode<fidl_fuchsia_net_common::Ipv6AddressWithPrefix, D>,
4149 > fidl::encoding::Encode<DeviceRouteUnregisterExternalRouteRequest, D> for (T0,)
4150 {
4151 #[inline]
4152 unsafe fn encode(
4153 self,
4154 encoder: &mut fidl::encoding::Encoder<'_, D>,
4155 offset: usize,
4156 depth: fidl::encoding::Depth,
4157 ) -> fidl::Result<()> {
4158 encoder.debug_check_bounds::<DeviceRouteUnregisterExternalRouteRequest>(offset);
4159 self.0.encode(encoder, offset + 0, depth)?;
4163 Ok(())
4164 }
4165 }
4166
4167 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4168 for DeviceRouteUnregisterExternalRouteRequest
4169 {
4170 #[inline(always)]
4171 fn new_empty() -> Self {
4172 Self { subnet: fidl::new_empty!(fidl_fuchsia_net_common::Ipv6AddressWithPrefix, D) }
4173 }
4174
4175 #[inline]
4176 unsafe fn decode(
4177 &mut self,
4178 decoder: &mut fidl::encoding::Decoder<'_, D>,
4179 offset: usize,
4180 _depth: fidl::encoding::Depth,
4181 ) -> fidl::Result<()> {
4182 decoder.debug_check_bounds::<Self>(offset);
4183 fidl::decode!(
4185 fidl_fuchsia_net_common::Ipv6AddressWithPrefix,
4186 D,
4187 &mut self.subnet,
4188 decoder,
4189 offset + 0,
4190 _depth
4191 )?;
4192 Ok(())
4193 }
4194 }
4195
4196 impl fidl::encoding::ValueTypeMarker for DeviceRouteUnregisterOnMeshPrefixRequest {
4197 type Borrowed<'a> = &'a Self;
4198 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4199 value
4200 }
4201 }
4202
4203 unsafe impl fidl::encoding::TypeMarker for DeviceRouteUnregisterOnMeshPrefixRequest {
4204 type Owned = Self;
4205
4206 #[inline(always)]
4207 fn inline_align(_context: fidl::encoding::Context) -> usize {
4208 1
4209 }
4210
4211 #[inline(always)]
4212 fn inline_size(_context: fidl::encoding::Context) -> usize {
4213 17
4214 }
4215 }
4216
4217 unsafe impl<D: fidl::encoding::ResourceDialect>
4218 fidl::encoding::Encode<DeviceRouteUnregisterOnMeshPrefixRequest, D>
4219 for &DeviceRouteUnregisterOnMeshPrefixRequest
4220 {
4221 #[inline]
4222 unsafe fn encode(
4223 self,
4224 encoder: &mut fidl::encoding::Encoder<'_, D>,
4225 offset: usize,
4226 _depth: fidl::encoding::Depth,
4227 ) -> fidl::Result<()> {
4228 encoder.debug_check_bounds::<DeviceRouteUnregisterOnMeshPrefixRequest>(offset);
4229 fidl::encoding::Encode::<DeviceRouteUnregisterOnMeshPrefixRequest, D>::encode(
4231 (
4232 <fidl_fuchsia_net_common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow(&self.subnet),
4233 ),
4234 encoder, offset, _depth
4235 )
4236 }
4237 }
4238 unsafe impl<
4239 D: fidl::encoding::ResourceDialect,
4240 T0: fidl::encoding::Encode<fidl_fuchsia_net_common::Ipv6AddressWithPrefix, D>,
4241 > fidl::encoding::Encode<DeviceRouteUnregisterOnMeshPrefixRequest, D> for (T0,)
4242 {
4243 #[inline]
4244 unsafe fn encode(
4245 self,
4246 encoder: &mut fidl::encoding::Encoder<'_, D>,
4247 offset: usize,
4248 depth: fidl::encoding::Depth,
4249 ) -> fidl::Result<()> {
4250 encoder.debug_check_bounds::<DeviceRouteUnregisterOnMeshPrefixRequest>(offset);
4251 self.0.encode(encoder, offset + 0, depth)?;
4255 Ok(())
4256 }
4257 }
4258
4259 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4260 for DeviceRouteUnregisterOnMeshPrefixRequest
4261 {
4262 #[inline(always)]
4263 fn new_empty() -> Self {
4264 Self { subnet: fidl::new_empty!(fidl_fuchsia_net_common::Ipv6AddressWithPrefix, D) }
4265 }
4266
4267 #[inline]
4268 unsafe fn decode(
4269 &mut self,
4270 decoder: &mut fidl::encoding::Decoder<'_, D>,
4271 offset: usize,
4272 _depth: fidl::encoding::Depth,
4273 ) -> fidl::Result<()> {
4274 decoder.debug_check_bounds::<Self>(offset);
4275 fidl::decode!(
4277 fidl_fuchsia_net_common::Ipv6AddressWithPrefix,
4278 D,
4279 &mut self.subnet,
4280 decoder,
4281 offset + 0,
4282 _depth
4283 )?;
4284 Ok(())
4285 }
4286 }
4287
4288 impl fidl::encoding::ValueTypeMarker for LegacyJoiningMakeJoinableRequest {
4289 type Borrowed<'a> = &'a Self;
4290 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4291 value
4292 }
4293 }
4294
4295 unsafe impl fidl::encoding::TypeMarker for LegacyJoiningMakeJoinableRequest {
4296 type Owned = Self;
4297
4298 #[inline(always)]
4299 fn inline_align(_context: fidl::encoding::Context) -> usize {
4300 8
4301 }
4302
4303 #[inline(always)]
4304 fn inline_size(_context: fidl::encoding::Context) -> usize {
4305 16
4306 }
4307 }
4308
4309 unsafe impl<D: fidl::encoding::ResourceDialect>
4310 fidl::encoding::Encode<LegacyJoiningMakeJoinableRequest, D>
4311 for &LegacyJoiningMakeJoinableRequest
4312 {
4313 #[inline]
4314 unsafe fn encode(
4315 self,
4316 encoder: &mut fidl::encoding::Encoder<'_, D>,
4317 offset: usize,
4318 _depth: fidl::encoding::Depth,
4319 ) -> fidl::Result<()> {
4320 encoder.debug_check_bounds::<LegacyJoiningMakeJoinableRequest>(offset);
4321 unsafe {
4322 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
4324 (buf_ptr as *mut LegacyJoiningMakeJoinableRequest)
4325 .write_unaligned((self as *const LegacyJoiningMakeJoinableRequest).read());
4326 let padding_ptr = buf_ptr.offset(8) as *mut u64;
4329 let padding_mask = 0xffffffffffff0000u64;
4330 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
4331 }
4332 Ok(())
4333 }
4334 }
4335 unsafe impl<
4336 D: fidl::encoding::ResourceDialect,
4337 T0: fidl::encoding::Encode<i64, D>,
4338 T1: fidl::encoding::Encode<u16, D>,
4339 > fidl::encoding::Encode<LegacyJoiningMakeJoinableRequest, D> for (T0, T1)
4340 {
4341 #[inline]
4342 unsafe fn encode(
4343 self,
4344 encoder: &mut fidl::encoding::Encoder<'_, D>,
4345 offset: usize,
4346 depth: fidl::encoding::Depth,
4347 ) -> fidl::Result<()> {
4348 encoder.debug_check_bounds::<LegacyJoiningMakeJoinableRequest>(offset);
4349 unsafe {
4352 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4353 (ptr as *mut u64).write_unaligned(0);
4354 }
4355 self.0.encode(encoder, offset + 0, depth)?;
4357 self.1.encode(encoder, offset + 8, depth)?;
4358 Ok(())
4359 }
4360 }
4361
4362 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4363 for LegacyJoiningMakeJoinableRequest
4364 {
4365 #[inline(always)]
4366 fn new_empty() -> Self {
4367 Self { duration: fidl::new_empty!(i64, D), port: fidl::new_empty!(u16, D) }
4368 }
4369
4370 #[inline]
4371 unsafe fn decode(
4372 &mut self,
4373 decoder: &mut fidl::encoding::Decoder<'_, D>,
4374 offset: usize,
4375 _depth: fidl::encoding::Depth,
4376 ) -> fidl::Result<()> {
4377 decoder.debug_check_bounds::<Self>(offset);
4378 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
4379 let ptr = unsafe { buf_ptr.offset(8) };
4381 let padval = unsafe { (ptr as *const u64).read_unaligned() };
4382 let mask = 0xffffffffffff0000u64;
4383 let maskedval = padval & mask;
4384 if maskedval != 0 {
4385 return Err(fidl::Error::NonZeroPadding {
4386 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4387 });
4388 }
4389 unsafe {
4391 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
4392 }
4393 Ok(())
4394 }
4395 }
4396
4397 impl fidl::encoding::ValueTypeMarker for ProvisioningMonitorWatchProgressResponse {
4398 type Borrowed<'a> = &'a Self;
4399 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4400 value
4401 }
4402 }
4403
4404 unsafe impl fidl::encoding::TypeMarker for ProvisioningMonitorWatchProgressResponse {
4405 type Owned = Self;
4406
4407 #[inline(always)]
4408 fn inline_align(_context: fidl::encoding::Context) -> usize {
4409 8
4410 }
4411
4412 #[inline(always)]
4413 fn inline_size(_context: fidl::encoding::Context) -> usize {
4414 16
4415 }
4416 }
4417
4418 unsafe impl<D: fidl::encoding::ResourceDialect>
4419 fidl::encoding::Encode<ProvisioningMonitorWatchProgressResponse, D>
4420 for &ProvisioningMonitorWatchProgressResponse
4421 {
4422 #[inline]
4423 unsafe fn encode(
4424 self,
4425 encoder: &mut fidl::encoding::Encoder<'_, D>,
4426 offset: usize,
4427 _depth: fidl::encoding::Depth,
4428 ) -> fidl::Result<()> {
4429 encoder.debug_check_bounds::<ProvisioningMonitorWatchProgressResponse>(offset);
4430 fidl::encoding::Encode::<ProvisioningMonitorWatchProgressResponse, D>::encode(
4432 (<ProvisioningProgress as fidl::encoding::ValueTypeMarker>::borrow(&self.progress),),
4433 encoder,
4434 offset,
4435 _depth,
4436 )
4437 }
4438 }
4439 unsafe impl<
4440 D: fidl::encoding::ResourceDialect,
4441 T0: fidl::encoding::Encode<ProvisioningProgress, D>,
4442 > fidl::encoding::Encode<ProvisioningMonitorWatchProgressResponse, D> for (T0,)
4443 {
4444 #[inline]
4445 unsafe fn encode(
4446 self,
4447 encoder: &mut fidl::encoding::Encoder<'_, D>,
4448 offset: usize,
4449 depth: fidl::encoding::Depth,
4450 ) -> fidl::Result<()> {
4451 encoder.debug_check_bounds::<ProvisioningMonitorWatchProgressResponse>(offset);
4452 self.0.encode(encoder, offset + 0, depth)?;
4456 Ok(())
4457 }
4458 }
4459
4460 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4461 for ProvisioningMonitorWatchProgressResponse
4462 {
4463 #[inline(always)]
4464 fn new_empty() -> Self {
4465 Self { progress: fidl::new_empty!(ProvisioningProgress, D) }
4466 }
4467
4468 #[inline]
4469 unsafe fn decode(
4470 &mut self,
4471 decoder: &mut fidl::encoding::Decoder<'_, D>,
4472 offset: usize,
4473 _depth: fidl::encoding::Depth,
4474 ) -> fidl::Result<()> {
4475 decoder.debug_check_bounds::<Self>(offset);
4476 fidl::decode!(
4478 ProvisioningProgress,
4479 D,
4480 &mut self.progress,
4481 decoder,
4482 offset + 0,
4483 _depth
4484 )?;
4485 Ok(())
4486 }
4487 }
4488
4489 impl fidl::encoding::ValueTypeMarker for TelemetryProviderGetTelemetryResponse {
4490 type Borrowed<'a> = &'a Self;
4491 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4492 value
4493 }
4494 }
4495
4496 unsafe impl fidl::encoding::TypeMarker for TelemetryProviderGetTelemetryResponse {
4497 type Owned = Self;
4498
4499 #[inline(always)]
4500 fn inline_align(_context: fidl::encoding::Context) -> usize {
4501 8
4502 }
4503
4504 #[inline(always)]
4505 fn inline_size(_context: fidl::encoding::Context) -> usize {
4506 16
4507 }
4508 }
4509
4510 unsafe impl<D: fidl::encoding::ResourceDialect>
4511 fidl::encoding::Encode<TelemetryProviderGetTelemetryResponse, D>
4512 for &TelemetryProviderGetTelemetryResponse
4513 {
4514 #[inline]
4515 unsafe fn encode(
4516 self,
4517 encoder: &mut fidl::encoding::Encoder<'_, D>,
4518 offset: usize,
4519 _depth: fidl::encoding::Depth,
4520 ) -> fidl::Result<()> {
4521 encoder.debug_check_bounds::<TelemetryProviderGetTelemetryResponse>(offset);
4522 fidl::encoding::Encode::<TelemetryProviderGetTelemetryResponse, D>::encode(
4524 (<Telemetry as fidl::encoding::ValueTypeMarker>::borrow(&self.telemetry),),
4525 encoder,
4526 offset,
4527 _depth,
4528 )
4529 }
4530 }
4531 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Telemetry, D>>
4532 fidl::encoding::Encode<TelemetryProviderGetTelemetryResponse, D> for (T0,)
4533 {
4534 #[inline]
4535 unsafe fn encode(
4536 self,
4537 encoder: &mut fidl::encoding::Encoder<'_, D>,
4538 offset: usize,
4539 depth: fidl::encoding::Depth,
4540 ) -> fidl::Result<()> {
4541 encoder.debug_check_bounds::<TelemetryProviderGetTelemetryResponse>(offset);
4542 self.0.encode(encoder, offset + 0, depth)?;
4546 Ok(())
4547 }
4548 }
4549
4550 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4551 for TelemetryProviderGetTelemetryResponse
4552 {
4553 #[inline(always)]
4554 fn new_empty() -> Self {
4555 Self { telemetry: fidl::new_empty!(Telemetry, D) }
4556 }
4557
4558 #[inline]
4559 unsafe fn decode(
4560 &mut self,
4561 decoder: &mut fidl::encoding::Decoder<'_, D>,
4562 offset: usize,
4563 _depth: fidl::encoding::Depth,
4564 ) -> fidl::Result<()> {
4565 decoder.debug_check_bounds::<Self>(offset);
4566 fidl::decode!(Telemetry, D, &mut self.telemetry, decoder, offset + 0, _depth)?;
4568 Ok(())
4569 }
4570 }
4571
4572 impl BeaconInfo {
4573 #[inline(always)]
4574 fn max_ordinal_present(&self) -> u64 {
4575 if let Some(_) = self.lqi {
4576 return 4;
4577 }
4578 if let Some(_) = self.rssi {
4579 return 3;
4580 }
4581 if let Some(_) = self.identity {
4582 return 2;
4583 }
4584 if let Some(_) = self.address {
4585 return 1;
4586 }
4587 0
4588 }
4589 }
4590
4591 impl fidl::encoding::ValueTypeMarker for BeaconInfo {
4592 type Borrowed<'a> = &'a Self;
4593 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4594 value
4595 }
4596 }
4597
4598 unsafe impl fidl::encoding::TypeMarker for BeaconInfo {
4599 type Owned = Self;
4600
4601 #[inline(always)]
4602 fn inline_align(_context: fidl::encoding::Context) -> usize {
4603 8
4604 }
4605
4606 #[inline(always)]
4607 fn inline_size(_context: fidl::encoding::Context) -> usize {
4608 16
4609 }
4610 }
4611
4612 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BeaconInfo, D>
4613 for &BeaconInfo
4614 {
4615 unsafe fn encode(
4616 self,
4617 encoder: &mut fidl::encoding::Encoder<'_, D>,
4618 offset: usize,
4619 mut depth: fidl::encoding::Depth,
4620 ) -> fidl::Result<()> {
4621 encoder.debug_check_bounds::<BeaconInfo>(offset);
4622 let max_ordinal: u64 = self.max_ordinal_present();
4624 encoder.write_num(max_ordinal, offset);
4625 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4626 if max_ordinal == 0 {
4628 return Ok(());
4629 }
4630 depth.increment()?;
4631 let envelope_size = 8;
4632 let bytes_len = max_ordinal as usize * envelope_size;
4633 #[allow(unused_variables)]
4634 let offset = encoder.out_of_line_offset(bytes_len);
4635 let mut _prev_end_offset: usize = 0;
4636 if 1 > max_ordinal {
4637 return Ok(());
4638 }
4639
4640 let cur_offset: usize = (1 - 1) * envelope_size;
4643
4644 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4646
4647 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan_common::MacAddress, D>(
4652 self.address.as_ref().map(<fidl_fuchsia_lowpan_common::MacAddress as fidl::encoding::ValueTypeMarker>::borrow),
4653 encoder, offset + cur_offset, depth
4654 )?;
4655
4656 _prev_end_offset = cur_offset + envelope_size;
4657 if 2 > max_ordinal {
4658 return Ok(());
4659 }
4660
4661 let cur_offset: usize = (2 - 1) * envelope_size;
4664
4665 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4667
4668 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan_device_common::Identity, D>(
4673 self.identity.as_ref().map(<fidl_fuchsia_lowpan_device_common::Identity as fidl::encoding::ValueTypeMarker>::borrow),
4674 encoder, offset + cur_offset, depth
4675 )?;
4676
4677 _prev_end_offset = cur_offset + envelope_size;
4678 if 3 > max_ordinal {
4679 return Ok(());
4680 }
4681
4682 let cur_offset: usize = (3 - 1) * envelope_size;
4685
4686 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4688
4689 fidl::encoding::encode_in_envelope_optional::<i8, D>(
4694 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
4695 encoder,
4696 offset + cur_offset,
4697 depth,
4698 )?;
4699
4700 _prev_end_offset = cur_offset + envelope_size;
4701 if 4 > max_ordinal {
4702 return Ok(());
4703 }
4704
4705 let cur_offset: usize = (4 - 1) * envelope_size;
4708
4709 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4711
4712 fidl::encoding::encode_in_envelope_optional::<u8, D>(
4717 self.lqi.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
4718 encoder,
4719 offset + cur_offset,
4720 depth,
4721 )?;
4722
4723 _prev_end_offset = cur_offset + envelope_size;
4724
4725 Ok(())
4726 }
4727 }
4728
4729 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BeaconInfo {
4730 #[inline(always)]
4731 fn new_empty() -> Self {
4732 Self::default()
4733 }
4734
4735 unsafe fn decode(
4736 &mut self,
4737 decoder: &mut fidl::encoding::Decoder<'_, D>,
4738 offset: usize,
4739 mut depth: fidl::encoding::Depth,
4740 ) -> fidl::Result<()> {
4741 decoder.debug_check_bounds::<Self>(offset);
4742 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4743 None => return Err(fidl::Error::NotNullable),
4744 Some(len) => len,
4745 };
4746 if len == 0 {
4748 return Ok(());
4749 };
4750 depth.increment()?;
4751 let envelope_size = 8;
4752 let bytes_len = len * envelope_size;
4753 let offset = decoder.out_of_line_offset(bytes_len)?;
4754 let mut _next_ordinal_to_read = 0;
4756 let mut next_offset = offset;
4757 let end_offset = offset + bytes_len;
4758 _next_ordinal_to_read += 1;
4759 if next_offset >= end_offset {
4760 return Ok(());
4761 }
4762
4763 while _next_ordinal_to_read < 1 {
4765 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4766 _next_ordinal_to_read += 1;
4767 next_offset += envelope_size;
4768 }
4769
4770 let next_out_of_line = decoder.next_out_of_line();
4771 let handles_before = decoder.remaining_handles();
4772 if let Some((inlined, num_bytes, num_handles)) =
4773 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4774 {
4775 let member_inline_size = <fidl_fuchsia_lowpan_common::MacAddress as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4776 if inlined != (member_inline_size <= 4) {
4777 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4778 }
4779 let inner_offset;
4780 let mut inner_depth = depth.clone();
4781 if inlined {
4782 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4783 inner_offset = next_offset;
4784 } else {
4785 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4786 inner_depth.increment()?;
4787 }
4788 let val_ref = self.address.get_or_insert_with(|| {
4789 fidl::new_empty!(fidl_fuchsia_lowpan_common::MacAddress, D)
4790 });
4791 fidl::decode!(
4792 fidl_fuchsia_lowpan_common::MacAddress,
4793 D,
4794 val_ref,
4795 decoder,
4796 inner_offset,
4797 inner_depth
4798 )?;
4799 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4800 {
4801 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4802 }
4803 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4804 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4805 }
4806 }
4807
4808 next_offset += envelope_size;
4809 _next_ordinal_to_read += 1;
4810 if next_offset >= end_offset {
4811 return Ok(());
4812 }
4813
4814 while _next_ordinal_to_read < 2 {
4816 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4817 _next_ordinal_to_read += 1;
4818 next_offset += envelope_size;
4819 }
4820
4821 let next_out_of_line = decoder.next_out_of_line();
4822 let handles_before = decoder.remaining_handles();
4823 if let Some((inlined, num_bytes, num_handles)) =
4824 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4825 {
4826 let member_inline_size = <fidl_fuchsia_lowpan_device_common::Identity as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4827 if inlined != (member_inline_size <= 4) {
4828 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4829 }
4830 let inner_offset;
4831 let mut inner_depth = depth.clone();
4832 if inlined {
4833 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4834 inner_offset = next_offset;
4835 } else {
4836 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4837 inner_depth.increment()?;
4838 }
4839 let val_ref = self.identity.get_or_insert_with(|| {
4840 fidl::new_empty!(fidl_fuchsia_lowpan_device_common::Identity, D)
4841 });
4842 fidl::decode!(
4843 fidl_fuchsia_lowpan_device_common::Identity,
4844 D,
4845 val_ref,
4846 decoder,
4847 inner_offset,
4848 inner_depth
4849 )?;
4850 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4851 {
4852 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4853 }
4854 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4855 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4856 }
4857 }
4858
4859 next_offset += envelope_size;
4860 _next_ordinal_to_read += 1;
4861 if next_offset >= end_offset {
4862 return Ok(());
4863 }
4864
4865 while _next_ordinal_to_read < 3 {
4867 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4868 _next_ordinal_to_read += 1;
4869 next_offset += envelope_size;
4870 }
4871
4872 let next_out_of_line = decoder.next_out_of_line();
4873 let handles_before = decoder.remaining_handles();
4874 if let Some((inlined, num_bytes, num_handles)) =
4875 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4876 {
4877 let member_inline_size =
4878 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4879 if inlined != (member_inline_size <= 4) {
4880 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4881 }
4882 let inner_offset;
4883 let mut inner_depth = depth.clone();
4884 if inlined {
4885 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4886 inner_offset = next_offset;
4887 } else {
4888 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4889 inner_depth.increment()?;
4890 }
4891 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
4892 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
4893 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4894 {
4895 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4896 }
4897 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4898 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4899 }
4900 }
4901
4902 next_offset += envelope_size;
4903 _next_ordinal_to_read += 1;
4904 if next_offset >= end_offset {
4905 return Ok(());
4906 }
4907
4908 while _next_ordinal_to_read < 4 {
4910 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4911 _next_ordinal_to_read += 1;
4912 next_offset += envelope_size;
4913 }
4914
4915 let next_out_of_line = decoder.next_out_of_line();
4916 let handles_before = decoder.remaining_handles();
4917 if let Some((inlined, num_bytes, num_handles)) =
4918 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4919 {
4920 let member_inline_size =
4921 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4922 if inlined != (member_inline_size <= 4) {
4923 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4924 }
4925 let inner_offset;
4926 let mut inner_depth = depth.clone();
4927 if inlined {
4928 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4929 inner_offset = next_offset;
4930 } else {
4931 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4932 inner_depth.increment()?;
4933 }
4934 let val_ref = self.lqi.get_or_insert_with(|| fidl::new_empty!(u8, D));
4935 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
4936 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4937 {
4938 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4939 }
4940 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4941 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4942 }
4943 }
4944
4945 next_offset += envelope_size;
4946
4947 while next_offset < end_offset {
4949 _next_ordinal_to_read += 1;
4950 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4951 next_offset += envelope_size;
4952 }
4953
4954 Ok(())
4955 }
4956 }
4957
4958 impl BorderRouterConfig {
4959 #[inline(always)]
4960 fn max_ordinal_present(&self) -> u64 {
4961 if let Some(_) = self.rloc16 {
4962 return 12;
4963 }
4964 if let Some(_) = self.dp {
4965 return 11;
4966 }
4967 if let Some(_) = self.nd_dns {
4968 return 10;
4969 }
4970 if let Some(_) = self.stable {
4971 return 9;
4972 }
4973 if let Some(_) = self.on_mesh {
4974 return 8;
4975 }
4976 if let Some(_) = self.default_route {
4977 return 7;
4978 }
4979 if let Some(_) = self.configure {
4980 return 6;
4981 }
4982 if let Some(_) = self.dhcp {
4983 return 5;
4984 }
4985 if let Some(_) = self.slaac {
4986 return 4;
4987 }
4988 if let Some(_) = self.preferred {
4989 return 3;
4990 }
4991 if let Some(_) = self.preference {
4992 return 2;
4993 }
4994 if let Some(_) = self.prefix {
4995 return 1;
4996 }
4997 0
4998 }
4999 }
5000
5001 impl fidl::encoding::ValueTypeMarker for BorderRouterConfig {
5002 type Borrowed<'a> = &'a Self;
5003 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5004 value
5005 }
5006 }
5007
5008 unsafe impl fidl::encoding::TypeMarker for BorderRouterConfig {
5009 type Owned = Self;
5010
5011 #[inline(always)]
5012 fn inline_align(_context: fidl::encoding::Context) -> usize {
5013 8
5014 }
5015
5016 #[inline(always)]
5017 fn inline_size(_context: fidl::encoding::Context) -> usize {
5018 16
5019 }
5020 }
5021
5022 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRouterConfig, D>
5023 for &BorderRouterConfig
5024 {
5025 unsafe fn encode(
5026 self,
5027 encoder: &mut fidl::encoding::Encoder<'_, D>,
5028 offset: usize,
5029 mut depth: fidl::encoding::Depth,
5030 ) -> fidl::Result<()> {
5031 encoder.debug_check_bounds::<BorderRouterConfig>(offset);
5032 let max_ordinal: u64 = self.max_ordinal_present();
5034 encoder.write_num(max_ordinal, offset);
5035 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5036 if max_ordinal == 0 {
5038 return Ok(());
5039 }
5040 depth.increment()?;
5041 let envelope_size = 8;
5042 let bytes_len = max_ordinal as usize * envelope_size;
5043 #[allow(unused_variables)]
5044 let offset = encoder.out_of_line_offset(bytes_len);
5045 let mut _prev_end_offset: usize = 0;
5046 if 1 > max_ordinal {
5047 return Ok(());
5048 }
5049
5050 let cur_offset: usize = (1 - 1) * envelope_size;
5053
5054 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5056
5057 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
5062 self.prefix.as_ref().map(
5063 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
5064 ),
5065 encoder,
5066 offset + cur_offset,
5067 depth,
5068 )?;
5069
5070 _prev_end_offset = cur_offset + envelope_size;
5071 if 2 > max_ordinal {
5072 return Ok(());
5073 }
5074
5075 let cur_offset: usize = (2 - 1) * envelope_size;
5078
5079 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5081
5082 fidl::encoding::encode_in_envelope_optional::<i8, D>(
5087 self.preference.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
5088 encoder,
5089 offset + cur_offset,
5090 depth,
5091 )?;
5092
5093 _prev_end_offset = cur_offset + envelope_size;
5094 if 3 > max_ordinal {
5095 return Ok(());
5096 }
5097
5098 let cur_offset: usize = (3 - 1) * envelope_size;
5101
5102 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5104
5105 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5110 self.preferred.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5111 encoder,
5112 offset + cur_offset,
5113 depth,
5114 )?;
5115
5116 _prev_end_offset = cur_offset + envelope_size;
5117 if 4 > max_ordinal {
5118 return Ok(());
5119 }
5120
5121 let cur_offset: usize = (4 - 1) * envelope_size;
5124
5125 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5127
5128 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5133 self.slaac.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5134 encoder,
5135 offset + cur_offset,
5136 depth,
5137 )?;
5138
5139 _prev_end_offset = cur_offset + envelope_size;
5140 if 5 > max_ordinal {
5141 return Ok(());
5142 }
5143
5144 let cur_offset: usize = (5 - 1) * envelope_size;
5147
5148 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5150
5151 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5156 self.dhcp.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5157 encoder,
5158 offset + cur_offset,
5159 depth,
5160 )?;
5161
5162 _prev_end_offset = cur_offset + envelope_size;
5163 if 6 > max_ordinal {
5164 return Ok(());
5165 }
5166
5167 let cur_offset: usize = (6 - 1) * envelope_size;
5170
5171 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5173
5174 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5179 self.configure.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5180 encoder,
5181 offset + cur_offset,
5182 depth,
5183 )?;
5184
5185 _prev_end_offset = cur_offset + envelope_size;
5186 if 7 > max_ordinal {
5187 return Ok(());
5188 }
5189
5190 let cur_offset: usize = (7 - 1) * envelope_size;
5193
5194 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5196
5197 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5202 self.default_route.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5203 encoder,
5204 offset + cur_offset,
5205 depth,
5206 )?;
5207
5208 _prev_end_offset = cur_offset + envelope_size;
5209 if 8 > max_ordinal {
5210 return Ok(());
5211 }
5212
5213 let cur_offset: usize = (8 - 1) * envelope_size;
5216
5217 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5219
5220 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5225 self.on_mesh.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5226 encoder,
5227 offset + cur_offset,
5228 depth,
5229 )?;
5230
5231 _prev_end_offset = cur_offset + envelope_size;
5232 if 9 > max_ordinal {
5233 return Ok(());
5234 }
5235
5236 let cur_offset: usize = (9 - 1) * envelope_size;
5239
5240 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5242
5243 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5248 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5249 encoder,
5250 offset + cur_offset,
5251 depth,
5252 )?;
5253
5254 _prev_end_offset = cur_offset + envelope_size;
5255 if 10 > max_ordinal {
5256 return Ok(());
5257 }
5258
5259 let cur_offset: usize = (10 - 1) * envelope_size;
5262
5263 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5265
5266 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5271 self.nd_dns.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5272 encoder,
5273 offset + cur_offset,
5274 depth,
5275 )?;
5276
5277 _prev_end_offset = cur_offset + envelope_size;
5278 if 11 > max_ordinal {
5279 return Ok(());
5280 }
5281
5282 let cur_offset: usize = (11 - 1) * envelope_size;
5285
5286 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5288
5289 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5294 self.dp.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5295 encoder,
5296 offset + cur_offset,
5297 depth,
5298 )?;
5299
5300 _prev_end_offset = cur_offset + envelope_size;
5301 if 12 > max_ordinal {
5302 return Ok(());
5303 }
5304
5305 let cur_offset: usize = (12 - 1) * envelope_size;
5308
5309 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5311
5312 fidl::encoding::encode_in_envelope_optional::<u16, D>(
5317 self.rloc16.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5318 encoder,
5319 offset + cur_offset,
5320 depth,
5321 )?;
5322
5323 _prev_end_offset = cur_offset + envelope_size;
5324
5325 Ok(())
5326 }
5327 }
5328
5329 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRouterConfig {
5330 #[inline(always)]
5331 fn new_empty() -> Self {
5332 Self::default()
5333 }
5334
5335 unsafe fn decode(
5336 &mut self,
5337 decoder: &mut fidl::encoding::Decoder<'_, D>,
5338 offset: usize,
5339 mut depth: fidl::encoding::Depth,
5340 ) -> fidl::Result<()> {
5341 decoder.debug_check_bounds::<Self>(offset);
5342 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5343 None => return Err(fidl::Error::NotNullable),
5344 Some(len) => len,
5345 };
5346 if len == 0 {
5348 return Ok(());
5349 };
5350 depth.increment()?;
5351 let envelope_size = 8;
5352 let bytes_len = len * envelope_size;
5353 let offset = decoder.out_of_line_offset(bytes_len)?;
5354 let mut _next_ordinal_to_read = 0;
5356 let mut next_offset = offset;
5357 let end_offset = offset + bytes_len;
5358 _next_ordinal_to_read += 1;
5359 if next_offset >= end_offset {
5360 return Ok(());
5361 }
5362
5363 while _next_ordinal_to_read < 1 {
5365 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5366 _next_ordinal_to_read += 1;
5367 next_offset += envelope_size;
5368 }
5369
5370 let next_out_of_line = decoder.next_out_of_line();
5371 let handles_before = decoder.remaining_handles();
5372 if let Some((inlined, num_bytes, num_handles)) =
5373 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5374 {
5375 let member_inline_size =
5376 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
5377 decoder.context,
5378 );
5379 if inlined != (member_inline_size <= 4) {
5380 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5381 }
5382 let inner_offset;
5383 let mut inner_depth = depth.clone();
5384 if inlined {
5385 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5386 inner_offset = next_offset;
5387 } else {
5388 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5389 inner_depth.increment()?;
5390 }
5391 let val_ref = self
5392 .prefix
5393 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
5394 fidl::decode!(
5395 fidl::encoding::BoundedString<64>,
5396 D,
5397 val_ref,
5398 decoder,
5399 inner_offset,
5400 inner_depth
5401 )?;
5402 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5403 {
5404 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5405 }
5406 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5407 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5408 }
5409 }
5410
5411 next_offset += envelope_size;
5412 _next_ordinal_to_read += 1;
5413 if next_offset >= end_offset {
5414 return Ok(());
5415 }
5416
5417 while _next_ordinal_to_read < 2 {
5419 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5420 _next_ordinal_to_read += 1;
5421 next_offset += envelope_size;
5422 }
5423
5424 let next_out_of_line = decoder.next_out_of_line();
5425 let handles_before = decoder.remaining_handles();
5426 if let Some((inlined, num_bytes, num_handles)) =
5427 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5428 {
5429 let member_inline_size =
5430 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5431 if inlined != (member_inline_size <= 4) {
5432 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5433 }
5434 let inner_offset;
5435 let mut inner_depth = depth.clone();
5436 if inlined {
5437 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5438 inner_offset = next_offset;
5439 } else {
5440 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5441 inner_depth.increment()?;
5442 }
5443 let val_ref = self.preference.get_or_insert_with(|| fidl::new_empty!(i8, D));
5444 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
5445 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5446 {
5447 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5448 }
5449 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5450 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5451 }
5452 }
5453
5454 next_offset += envelope_size;
5455 _next_ordinal_to_read += 1;
5456 if next_offset >= end_offset {
5457 return Ok(());
5458 }
5459
5460 while _next_ordinal_to_read < 3 {
5462 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5463 _next_ordinal_to_read += 1;
5464 next_offset += envelope_size;
5465 }
5466
5467 let next_out_of_line = decoder.next_out_of_line();
5468 let handles_before = decoder.remaining_handles();
5469 if let Some((inlined, num_bytes, num_handles)) =
5470 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5471 {
5472 let member_inline_size =
5473 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5474 if inlined != (member_inline_size <= 4) {
5475 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5476 }
5477 let inner_offset;
5478 let mut inner_depth = depth.clone();
5479 if inlined {
5480 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5481 inner_offset = next_offset;
5482 } else {
5483 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5484 inner_depth.increment()?;
5485 }
5486 let val_ref = self.preferred.get_or_insert_with(|| fidl::new_empty!(bool, D));
5487 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5488 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5489 {
5490 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5491 }
5492 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5493 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5494 }
5495 }
5496
5497 next_offset += envelope_size;
5498 _next_ordinal_to_read += 1;
5499 if next_offset >= end_offset {
5500 return Ok(());
5501 }
5502
5503 while _next_ordinal_to_read < 4 {
5505 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5506 _next_ordinal_to_read += 1;
5507 next_offset += envelope_size;
5508 }
5509
5510 let next_out_of_line = decoder.next_out_of_line();
5511 let handles_before = decoder.remaining_handles();
5512 if let Some((inlined, num_bytes, num_handles)) =
5513 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5514 {
5515 let member_inline_size =
5516 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5517 if inlined != (member_inline_size <= 4) {
5518 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5519 }
5520 let inner_offset;
5521 let mut inner_depth = depth.clone();
5522 if inlined {
5523 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5524 inner_offset = next_offset;
5525 } else {
5526 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5527 inner_depth.increment()?;
5528 }
5529 let val_ref = self.slaac.get_or_insert_with(|| fidl::new_empty!(bool, D));
5530 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5531 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5532 {
5533 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5534 }
5535 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5536 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5537 }
5538 }
5539
5540 next_offset += envelope_size;
5541 _next_ordinal_to_read += 1;
5542 if next_offset >= end_offset {
5543 return Ok(());
5544 }
5545
5546 while _next_ordinal_to_read < 5 {
5548 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5549 _next_ordinal_to_read += 1;
5550 next_offset += envelope_size;
5551 }
5552
5553 let next_out_of_line = decoder.next_out_of_line();
5554 let handles_before = decoder.remaining_handles();
5555 if let Some((inlined, num_bytes, num_handles)) =
5556 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5557 {
5558 let member_inline_size =
5559 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5560 if inlined != (member_inline_size <= 4) {
5561 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5562 }
5563 let inner_offset;
5564 let mut inner_depth = depth.clone();
5565 if inlined {
5566 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5567 inner_offset = next_offset;
5568 } else {
5569 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5570 inner_depth.increment()?;
5571 }
5572 let val_ref = self.dhcp.get_or_insert_with(|| fidl::new_empty!(bool, D));
5573 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5574 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5575 {
5576 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5577 }
5578 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5579 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5580 }
5581 }
5582
5583 next_offset += envelope_size;
5584 _next_ordinal_to_read += 1;
5585 if next_offset >= end_offset {
5586 return Ok(());
5587 }
5588
5589 while _next_ordinal_to_read < 6 {
5591 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5592 _next_ordinal_to_read += 1;
5593 next_offset += envelope_size;
5594 }
5595
5596 let next_out_of_line = decoder.next_out_of_line();
5597 let handles_before = decoder.remaining_handles();
5598 if let Some((inlined, num_bytes, num_handles)) =
5599 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5600 {
5601 let member_inline_size =
5602 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5603 if inlined != (member_inline_size <= 4) {
5604 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5605 }
5606 let inner_offset;
5607 let mut inner_depth = depth.clone();
5608 if inlined {
5609 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5610 inner_offset = next_offset;
5611 } else {
5612 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5613 inner_depth.increment()?;
5614 }
5615 let val_ref = self.configure.get_or_insert_with(|| fidl::new_empty!(bool, D));
5616 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5617 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5618 {
5619 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5620 }
5621 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5622 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5623 }
5624 }
5625
5626 next_offset += envelope_size;
5627 _next_ordinal_to_read += 1;
5628 if next_offset >= end_offset {
5629 return Ok(());
5630 }
5631
5632 while _next_ordinal_to_read < 7 {
5634 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5635 _next_ordinal_to_read += 1;
5636 next_offset += envelope_size;
5637 }
5638
5639 let next_out_of_line = decoder.next_out_of_line();
5640 let handles_before = decoder.remaining_handles();
5641 if let Some((inlined, num_bytes, num_handles)) =
5642 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5643 {
5644 let member_inline_size =
5645 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5646 if inlined != (member_inline_size <= 4) {
5647 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5648 }
5649 let inner_offset;
5650 let mut inner_depth = depth.clone();
5651 if inlined {
5652 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5653 inner_offset = next_offset;
5654 } else {
5655 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5656 inner_depth.increment()?;
5657 }
5658 let val_ref = self.default_route.get_or_insert_with(|| fidl::new_empty!(bool, D));
5659 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5660 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5661 {
5662 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5663 }
5664 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5665 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5666 }
5667 }
5668
5669 next_offset += envelope_size;
5670 _next_ordinal_to_read += 1;
5671 if next_offset >= end_offset {
5672 return Ok(());
5673 }
5674
5675 while _next_ordinal_to_read < 8 {
5677 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5678 _next_ordinal_to_read += 1;
5679 next_offset += envelope_size;
5680 }
5681
5682 let next_out_of_line = decoder.next_out_of_line();
5683 let handles_before = decoder.remaining_handles();
5684 if let Some((inlined, num_bytes, num_handles)) =
5685 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5686 {
5687 let member_inline_size =
5688 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5689 if inlined != (member_inline_size <= 4) {
5690 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5691 }
5692 let inner_offset;
5693 let mut inner_depth = depth.clone();
5694 if inlined {
5695 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5696 inner_offset = next_offset;
5697 } else {
5698 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5699 inner_depth.increment()?;
5700 }
5701 let val_ref = self.on_mesh.get_or_insert_with(|| fidl::new_empty!(bool, D));
5702 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5703 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5704 {
5705 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5706 }
5707 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5708 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5709 }
5710 }
5711
5712 next_offset += envelope_size;
5713 _next_ordinal_to_read += 1;
5714 if next_offset >= end_offset {
5715 return Ok(());
5716 }
5717
5718 while _next_ordinal_to_read < 9 {
5720 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5721 _next_ordinal_to_read += 1;
5722 next_offset += envelope_size;
5723 }
5724
5725 let next_out_of_line = decoder.next_out_of_line();
5726 let handles_before = decoder.remaining_handles();
5727 if let Some((inlined, num_bytes, num_handles)) =
5728 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5729 {
5730 let member_inline_size =
5731 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5732 if inlined != (member_inline_size <= 4) {
5733 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5734 }
5735 let inner_offset;
5736 let mut inner_depth = depth.clone();
5737 if inlined {
5738 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5739 inner_offset = next_offset;
5740 } else {
5741 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5742 inner_depth.increment()?;
5743 }
5744 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
5745 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5746 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5747 {
5748 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5749 }
5750 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5751 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5752 }
5753 }
5754
5755 next_offset += envelope_size;
5756 _next_ordinal_to_read += 1;
5757 if next_offset >= end_offset {
5758 return Ok(());
5759 }
5760
5761 while _next_ordinal_to_read < 10 {
5763 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5764 _next_ordinal_to_read += 1;
5765 next_offset += envelope_size;
5766 }
5767
5768 let next_out_of_line = decoder.next_out_of_line();
5769 let handles_before = decoder.remaining_handles();
5770 if let Some((inlined, num_bytes, num_handles)) =
5771 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5772 {
5773 let member_inline_size =
5774 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5775 if inlined != (member_inline_size <= 4) {
5776 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5777 }
5778 let inner_offset;
5779 let mut inner_depth = depth.clone();
5780 if inlined {
5781 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5782 inner_offset = next_offset;
5783 } else {
5784 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5785 inner_depth.increment()?;
5786 }
5787 let val_ref = self.nd_dns.get_or_insert_with(|| fidl::new_empty!(bool, D));
5788 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5789 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5790 {
5791 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5792 }
5793 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5794 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5795 }
5796 }
5797
5798 next_offset += envelope_size;
5799 _next_ordinal_to_read += 1;
5800 if next_offset >= end_offset {
5801 return Ok(());
5802 }
5803
5804 while _next_ordinal_to_read < 11 {
5806 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5807 _next_ordinal_to_read += 1;
5808 next_offset += envelope_size;
5809 }
5810
5811 let next_out_of_line = decoder.next_out_of_line();
5812 let handles_before = decoder.remaining_handles();
5813 if let Some((inlined, num_bytes, num_handles)) =
5814 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5815 {
5816 let member_inline_size =
5817 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5818 if inlined != (member_inline_size <= 4) {
5819 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5820 }
5821 let inner_offset;
5822 let mut inner_depth = depth.clone();
5823 if inlined {
5824 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5825 inner_offset = next_offset;
5826 } else {
5827 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5828 inner_depth.increment()?;
5829 }
5830 let val_ref = self.dp.get_or_insert_with(|| fidl::new_empty!(bool, D));
5831 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5832 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5833 {
5834 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5835 }
5836 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5837 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5838 }
5839 }
5840
5841 next_offset += envelope_size;
5842 _next_ordinal_to_read += 1;
5843 if next_offset >= end_offset {
5844 return Ok(());
5845 }
5846
5847 while _next_ordinal_to_read < 12 {
5849 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5850 _next_ordinal_to_read += 1;
5851 next_offset += envelope_size;
5852 }
5853
5854 let next_out_of_line = decoder.next_out_of_line();
5855 let handles_before = decoder.remaining_handles();
5856 if let Some((inlined, num_bytes, num_handles)) =
5857 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5858 {
5859 let member_inline_size =
5860 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5861 if inlined != (member_inline_size <= 4) {
5862 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5863 }
5864 let inner_offset;
5865 let mut inner_depth = depth.clone();
5866 if inlined {
5867 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5868 inner_offset = next_offset;
5869 } else {
5870 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5871 inner_depth.increment()?;
5872 }
5873 let val_ref = self.rloc16.get_or_insert_with(|| fidl::new_empty!(u16, D));
5874 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5875 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5876 {
5877 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5878 }
5879 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5880 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5881 }
5882 }
5883
5884 next_offset += envelope_size;
5885
5886 while next_offset < end_offset {
5888 _next_ordinal_to_read += 1;
5889 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5890 next_offset += envelope_size;
5891 }
5892
5893 Ok(())
5894 }
5895 }
5896
5897 impl BorderRoutingCounters {
5898 #[inline(always)]
5899 fn max_ordinal_present(&self) -> u64 {
5900 if let Some(_) = self.outbound_internet_bytes {
5901 return 18;
5902 }
5903 if let Some(_) = self.outbound_internet_packets {
5904 return 17;
5905 }
5906 if let Some(_) = self.inbound_internet_bytes {
5907 return 16;
5908 }
5909 if let Some(_) = self.inbound_internet_packets {
5910 return 15;
5911 }
5912 if let Some(_) = self.rs_tx_failure {
5913 return 14;
5914 }
5915 if let Some(_) = self.rs_tx_success {
5916 return 13;
5917 }
5918 if let Some(_) = self.rs_rx {
5919 return 12;
5920 }
5921 if let Some(_) = self.ra_tx_failure {
5922 return 11;
5923 }
5924 if let Some(_) = self.ra_tx_success {
5925 return 10;
5926 }
5927 if let Some(_) = self.ra_rx {
5928 return 9;
5929 }
5930 if let Some(_) = self.outbound_multicast_bytes {
5931 return 8;
5932 }
5933 if let Some(_) = self.outbound_multicast_packets {
5934 return 7;
5935 }
5936 if let Some(_) = self.outbound_unicast_bytes {
5937 return 6;
5938 }
5939 if let Some(_) = self.outbound_unicast_packets {
5940 return 5;
5941 }
5942 if let Some(_) = self.inbound_multicast_bytes {
5943 return 4;
5944 }
5945 if let Some(_) = self.inbound_multicast_packets {
5946 return 3;
5947 }
5948 if let Some(_) = self.inbound_unicast_bytes {
5949 return 2;
5950 }
5951 if let Some(_) = self.inbound_unicast_packets {
5952 return 1;
5953 }
5954 0
5955 }
5956 }
5957
5958 impl fidl::encoding::ValueTypeMarker for BorderRoutingCounters {
5959 type Borrowed<'a> = &'a Self;
5960 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5961 value
5962 }
5963 }
5964
5965 unsafe impl fidl::encoding::TypeMarker for BorderRoutingCounters {
5966 type Owned = Self;
5967
5968 #[inline(always)]
5969 fn inline_align(_context: fidl::encoding::Context) -> usize {
5970 8
5971 }
5972
5973 #[inline(always)]
5974 fn inline_size(_context: fidl::encoding::Context) -> usize {
5975 16
5976 }
5977 }
5978
5979 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRoutingCounters, D>
5980 for &BorderRoutingCounters
5981 {
5982 unsafe fn encode(
5983 self,
5984 encoder: &mut fidl::encoding::Encoder<'_, D>,
5985 offset: usize,
5986 mut depth: fidl::encoding::Depth,
5987 ) -> fidl::Result<()> {
5988 encoder.debug_check_bounds::<BorderRoutingCounters>(offset);
5989 let max_ordinal: u64 = self.max_ordinal_present();
5991 encoder.write_num(max_ordinal, offset);
5992 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5993 if max_ordinal == 0 {
5995 return Ok(());
5996 }
5997 depth.increment()?;
5998 let envelope_size = 8;
5999 let bytes_len = max_ordinal as usize * envelope_size;
6000 #[allow(unused_variables)]
6001 let offset = encoder.out_of_line_offset(bytes_len);
6002 let mut _prev_end_offset: usize = 0;
6003 if 1 > max_ordinal {
6004 return Ok(());
6005 }
6006
6007 let cur_offset: usize = (1 - 1) * envelope_size;
6010
6011 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6013
6014 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6019 self.inbound_unicast_packets
6020 .as_ref()
6021 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6022 encoder,
6023 offset + cur_offset,
6024 depth,
6025 )?;
6026
6027 _prev_end_offset = cur_offset + envelope_size;
6028 if 2 > max_ordinal {
6029 return Ok(());
6030 }
6031
6032 let cur_offset: usize = (2 - 1) * envelope_size;
6035
6036 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6038
6039 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6044 self.inbound_unicast_bytes
6045 .as_ref()
6046 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6047 encoder,
6048 offset + cur_offset,
6049 depth,
6050 )?;
6051
6052 _prev_end_offset = cur_offset + envelope_size;
6053 if 3 > max_ordinal {
6054 return Ok(());
6055 }
6056
6057 let cur_offset: usize = (3 - 1) * envelope_size;
6060
6061 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6063
6064 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6069 self.inbound_multicast_packets
6070 .as_ref()
6071 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6072 encoder,
6073 offset + cur_offset,
6074 depth,
6075 )?;
6076
6077 _prev_end_offset = cur_offset + envelope_size;
6078 if 4 > max_ordinal {
6079 return Ok(());
6080 }
6081
6082 let cur_offset: usize = (4 - 1) * envelope_size;
6085
6086 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6088
6089 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6094 self.inbound_multicast_bytes
6095 .as_ref()
6096 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6097 encoder,
6098 offset + cur_offset,
6099 depth,
6100 )?;
6101
6102 _prev_end_offset = cur_offset + envelope_size;
6103 if 5 > max_ordinal {
6104 return Ok(());
6105 }
6106
6107 let cur_offset: usize = (5 - 1) * envelope_size;
6110
6111 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6113
6114 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6119 self.outbound_unicast_packets
6120 .as_ref()
6121 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6122 encoder,
6123 offset + cur_offset,
6124 depth,
6125 )?;
6126
6127 _prev_end_offset = cur_offset + envelope_size;
6128 if 6 > max_ordinal {
6129 return Ok(());
6130 }
6131
6132 let cur_offset: usize = (6 - 1) * envelope_size;
6135
6136 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6138
6139 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6144 self.outbound_unicast_bytes
6145 .as_ref()
6146 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6147 encoder,
6148 offset + cur_offset,
6149 depth,
6150 )?;
6151
6152 _prev_end_offset = cur_offset + envelope_size;
6153 if 7 > max_ordinal {
6154 return Ok(());
6155 }
6156
6157 let cur_offset: usize = (7 - 1) * envelope_size;
6160
6161 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6163
6164 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6169 self.outbound_multicast_packets
6170 .as_ref()
6171 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6172 encoder,
6173 offset + cur_offset,
6174 depth,
6175 )?;
6176
6177 _prev_end_offset = cur_offset + envelope_size;
6178 if 8 > max_ordinal {
6179 return Ok(());
6180 }
6181
6182 let cur_offset: usize = (8 - 1) * envelope_size;
6185
6186 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6188
6189 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6194 self.outbound_multicast_bytes
6195 .as_ref()
6196 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6197 encoder,
6198 offset + cur_offset,
6199 depth,
6200 )?;
6201
6202 _prev_end_offset = cur_offset + envelope_size;
6203 if 9 > max_ordinal {
6204 return Ok(());
6205 }
6206
6207 let cur_offset: usize = (9 - 1) * envelope_size;
6210
6211 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6213
6214 fidl::encoding::encode_in_envelope_optional::<u32, D>(
6219 self.ra_rx.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6220 encoder,
6221 offset + cur_offset,
6222 depth,
6223 )?;
6224
6225 _prev_end_offset = cur_offset + envelope_size;
6226 if 10 > max_ordinal {
6227 return Ok(());
6228 }
6229
6230 let cur_offset: usize = (10 - 1) * envelope_size;
6233
6234 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6236
6237 fidl::encoding::encode_in_envelope_optional::<u32, D>(
6242 self.ra_tx_success.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6243 encoder,
6244 offset + cur_offset,
6245 depth,
6246 )?;
6247
6248 _prev_end_offset = cur_offset + envelope_size;
6249 if 11 > max_ordinal {
6250 return Ok(());
6251 }
6252
6253 let cur_offset: usize = (11 - 1) * envelope_size;
6256
6257 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6259
6260 fidl::encoding::encode_in_envelope_optional::<u32, D>(
6265 self.ra_tx_failure.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6266 encoder,
6267 offset + cur_offset,
6268 depth,
6269 )?;
6270
6271 _prev_end_offset = cur_offset + envelope_size;
6272 if 12 > max_ordinal {
6273 return Ok(());
6274 }
6275
6276 let cur_offset: usize = (12 - 1) * envelope_size;
6279
6280 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6282
6283 fidl::encoding::encode_in_envelope_optional::<u32, D>(
6288 self.rs_rx.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6289 encoder,
6290 offset + cur_offset,
6291 depth,
6292 )?;
6293
6294 _prev_end_offset = cur_offset + envelope_size;
6295 if 13 > max_ordinal {
6296 return Ok(());
6297 }
6298
6299 let cur_offset: usize = (13 - 1) * envelope_size;
6302
6303 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6305
6306 fidl::encoding::encode_in_envelope_optional::<u32, D>(
6311 self.rs_tx_success.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6312 encoder,
6313 offset + cur_offset,
6314 depth,
6315 )?;
6316
6317 _prev_end_offset = cur_offset + envelope_size;
6318 if 14 > max_ordinal {
6319 return Ok(());
6320 }
6321
6322 let cur_offset: usize = (14 - 1) * envelope_size;
6325
6326 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6328
6329 fidl::encoding::encode_in_envelope_optional::<u32, D>(
6334 self.rs_tx_failure.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6335 encoder,
6336 offset + cur_offset,
6337 depth,
6338 )?;
6339
6340 _prev_end_offset = cur_offset + envelope_size;
6341 if 15 > max_ordinal {
6342 return Ok(());
6343 }
6344
6345 let cur_offset: usize = (15 - 1) * envelope_size;
6348
6349 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6351
6352 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6357 self.inbound_internet_packets
6358 .as_ref()
6359 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6360 encoder,
6361 offset + cur_offset,
6362 depth,
6363 )?;
6364
6365 _prev_end_offset = cur_offset + envelope_size;
6366 if 16 > max_ordinal {
6367 return Ok(());
6368 }
6369
6370 let cur_offset: usize = (16 - 1) * envelope_size;
6373
6374 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6376
6377 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6382 self.inbound_internet_bytes
6383 .as_ref()
6384 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6385 encoder,
6386 offset + cur_offset,
6387 depth,
6388 )?;
6389
6390 _prev_end_offset = cur_offset + envelope_size;
6391 if 17 > max_ordinal {
6392 return Ok(());
6393 }
6394
6395 let cur_offset: usize = (17 - 1) * envelope_size;
6398
6399 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6401
6402 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6407 self.outbound_internet_packets
6408 .as_ref()
6409 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6410 encoder,
6411 offset + cur_offset,
6412 depth,
6413 )?;
6414
6415 _prev_end_offset = cur_offset + envelope_size;
6416 if 18 > max_ordinal {
6417 return Ok(());
6418 }
6419
6420 let cur_offset: usize = (18 - 1) * envelope_size;
6423
6424 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6426
6427 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6432 self.outbound_internet_bytes
6433 .as_ref()
6434 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6435 encoder,
6436 offset + cur_offset,
6437 depth,
6438 )?;
6439
6440 _prev_end_offset = cur_offset + envelope_size;
6441
6442 Ok(())
6443 }
6444 }
6445
6446 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRoutingCounters {
6447 #[inline(always)]
6448 fn new_empty() -> Self {
6449 Self::default()
6450 }
6451
6452 unsafe fn decode(
6453 &mut self,
6454 decoder: &mut fidl::encoding::Decoder<'_, D>,
6455 offset: usize,
6456 mut depth: fidl::encoding::Depth,
6457 ) -> fidl::Result<()> {
6458 decoder.debug_check_bounds::<Self>(offset);
6459 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6460 None => return Err(fidl::Error::NotNullable),
6461 Some(len) => len,
6462 };
6463 if len == 0 {
6465 return Ok(());
6466 };
6467 depth.increment()?;
6468 let envelope_size = 8;
6469 let bytes_len = len * envelope_size;
6470 let offset = decoder.out_of_line_offset(bytes_len)?;
6471 let mut _next_ordinal_to_read = 0;
6473 let mut next_offset = offset;
6474 let end_offset = offset + bytes_len;
6475 _next_ordinal_to_read += 1;
6476 if next_offset >= end_offset {
6477 return Ok(());
6478 }
6479
6480 while _next_ordinal_to_read < 1 {
6482 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6483 _next_ordinal_to_read += 1;
6484 next_offset += envelope_size;
6485 }
6486
6487 let next_out_of_line = decoder.next_out_of_line();
6488 let handles_before = decoder.remaining_handles();
6489 if let Some((inlined, num_bytes, num_handles)) =
6490 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6491 {
6492 let member_inline_size =
6493 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6494 if inlined != (member_inline_size <= 4) {
6495 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6496 }
6497 let inner_offset;
6498 let mut inner_depth = depth.clone();
6499 if inlined {
6500 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6501 inner_offset = next_offset;
6502 } else {
6503 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6504 inner_depth.increment()?;
6505 }
6506 let val_ref =
6507 self.inbound_unicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
6508 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6509 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6510 {
6511 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6512 }
6513 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6514 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6515 }
6516 }
6517
6518 next_offset += envelope_size;
6519 _next_ordinal_to_read += 1;
6520 if next_offset >= end_offset {
6521 return Ok(());
6522 }
6523
6524 while _next_ordinal_to_read < 2 {
6526 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6527 _next_ordinal_to_read += 1;
6528 next_offset += envelope_size;
6529 }
6530
6531 let next_out_of_line = decoder.next_out_of_line();
6532 let handles_before = decoder.remaining_handles();
6533 if let Some((inlined, num_bytes, num_handles)) =
6534 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6535 {
6536 let member_inline_size =
6537 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6538 if inlined != (member_inline_size <= 4) {
6539 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6540 }
6541 let inner_offset;
6542 let mut inner_depth = depth.clone();
6543 if inlined {
6544 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6545 inner_offset = next_offset;
6546 } else {
6547 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6548 inner_depth.increment()?;
6549 }
6550 let val_ref =
6551 self.inbound_unicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
6552 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6553 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6554 {
6555 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6556 }
6557 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6558 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6559 }
6560 }
6561
6562 next_offset += envelope_size;
6563 _next_ordinal_to_read += 1;
6564 if next_offset >= end_offset {
6565 return Ok(());
6566 }
6567
6568 while _next_ordinal_to_read < 3 {
6570 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6571 _next_ordinal_to_read += 1;
6572 next_offset += envelope_size;
6573 }
6574
6575 let next_out_of_line = decoder.next_out_of_line();
6576 let handles_before = decoder.remaining_handles();
6577 if let Some((inlined, num_bytes, num_handles)) =
6578 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6579 {
6580 let member_inline_size =
6581 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6582 if inlined != (member_inline_size <= 4) {
6583 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6584 }
6585 let inner_offset;
6586 let mut inner_depth = depth.clone();
6587 if inlined {
6588 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6589 inner_offset = next_offset;
6590 } else {
6591 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6592 inner_depth.increment()?;
6593 }
6594 let val_ref =
6595 self.inbound_multicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
6596 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6597 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6598 {
6599 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6600 }
6601 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6602 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6603 }
6604 }
6605
6606 next_offset += envelope_size;
6607 _next_ordinal_to_read += 1;
6608 if next_offset >= end_offset {
6609 return Ok(());
6610 }
6611
6612 while _next_ordinal_to_read < 4 {
6614 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6615 _next_ordinal_to_read += 1;
6616 next_offset += envelope_size;
6617 }
6618
6619 let next_out_of_line = decoder.next_out_of_line();
6620 let handles_before = decoder.remaining_handles();
6621 if let Some((inlined, num_bytes, num_handles)) =
6622 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6623 {
6624 let member_inline_size =
6625 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6626 if inlined != (member_inline_size <= 4) {
6627 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6628 }
6629 let inner_offset;
6630 let mut inner_depth = depth.clone();
6631 if inlined {
6632 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6633 inner_offset = next_offset;
6634 } else {
6635 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6636 inner_depth.increment()?;
6637 }
6638 let val_ref =
6639 self.inbound_multicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
6640 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6641 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6642 {
6643 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6644 }
6645 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6646 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6647 }
6648 }
6649
6650 next_offset += envelope_size;
6651 _next_ordinal_to_read += 1;
6652 if next_offset >= end_offset {
6653 return Ok(());
6654 }
6655
6656 while _next_ordinal_to_read < 5 {
6658 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6659 _next_ordinal_to_read += 1;
6660 next_offset += envelope_size;
6661 }
6662
6663 let next_out_of_line = decoder.next_out_of_line();
6664 let handles_before = decoder.remaining_handles();
6665 if let Some((inlined, num_bytes, num_handles)) =
6666 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6667 {
6668 let member_inline_size =
6669 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6670 if inlined != (member_inline_size <= 4) {
6671 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6672 }
6673 let inner_offset;
6674 let mut inner_depth = depth.clone();
6675 if inlined {
6676 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6677 inner_offset = next_offset;
6678 } else {
6679 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6680 inner_depth.increment()?;
6681 }
6682 let val_ref =
6683 self.outbound_unicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
6684 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6685 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6686 {
6687 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6688 }
6689 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6690 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6691 }
6692 }
6693
6694 next_offset += envelope_size;
6695 _next_ordinal_to_read += 1;
6696 if next_offset >= end_offset {
6697 return Ok(());
6698 }
6699
6700 while _next_ordinal_to_read < 6 {
6702 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6703 _next_ordinal_to_read += 1;
6704 next_offset += envelope_size;
6705 }
6706
6707 let next_out_of_line = decoder.next_out_of_line();
6708 let handles_before = decoder.remaining_handles();
6709 if let Some((inlined, num_bytes, num_handles)) =
6710 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6711 {
6712 let member_inline_size =
6713 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6714 if inlined != (member_inline_size <= 4) {
6715 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6716 }
6717 let inner_offset;
6718 let mut inner_depth = depth.clone();
6719 if inlined {
6720 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6721 inner_offset = next_offset;
6722 } else {
6723 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6724 inner_depth.increment()?;
6725 }
6726 let val_ref =
6727 self.outbound_unicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
6728 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6729 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6730 {
6731 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6732 }
6733 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6734 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6735 }
6736 }
6737
6738 next_offset += envelope_size;
6739 _next_ordinal_to_read += 1;
6740 if next_offset >= end_offset {
6741 return Ok(());
6742 }
6743
6744 while _next_ordinal_to_read < 7 {
6746 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6747 _next_ordinal_to_read += 1;
6748 next_offset += envelope_size;
6749 }
6750
6751 let next_out_of_line = decoder.next_out_of_line();
6752 let handles_before = decoder.remaining_handles();
6753 if let Some((inlined, num_bytes, num_handles)) =
6754 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6755 {
6756 let member_inline_size =
6757 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6758 if inlined != (member_inline_size <= 4) {
6759 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6760 }
6761 let inner_offset;
6762 let mut inner_depth = depth.clone();
6763 if inlined {
6764 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6765 inner_offset = next_offset;
6766 } else {
6767 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6768 inner_depth.increment()?;
6769 }
6770 let val_ref =
6771 self.outbound_multicast_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
6772 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6773 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6774 {
6775 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6776 }
6777 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6778 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6779 }
6780 }
6781
6782 next_offset += envelope_size;
6783 _next_ordinal_to_read += 1;
6784 if next_offset >= end_offset {
6785 return Ok(());
6786 }
6787
6788 while _next_ordinal_to_read < 8 {
6790 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6791 _next_ordinal_to_read += 1;
6792 next_offset += envelope_size;
6793 }
6794
6795 let next_out_of_line = decoder.next_out_of_line();
6796 let handles_before = decoder.remaining_handles();
6797 if let Some((inlined, num_bytes, num_handles)) =
6798 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6799 {
6800 let member_inline_size =
6801 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6802 if inlined != (member_inline_size <= 4) {
6803 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6804 }
6805 let inner_offset;
6806 let mut inner_depth = depth.clone();
6807 if inlined {
6808 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6809 inner_offset = next_offset;
6810 } else {
6811 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6812 inner_depth.increment()?;
6813 }
6814 let val_ref =
6815 self.outbound_multicast_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
6816 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6817 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6818 {
6819 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6820 }
6821 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6822 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6823 }
6824 }
6825
6826 next_offset += envelope_size;
6827 _next_ordinal_to_read += 1;
6828 if next_offset >= end_offset {
6829 return Ok(());
6830 }
6831
6832 while _next_ordinal_to_read < 9 {
6834 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6835 _next_ordinal_to_read += 1;
6836 next_offset += envelope_size;
6837 }
6838
6839 let next_out_of_line = decoder.next_out_of_line();
6840 let handles_before = decoder.remaining_handles();
6841 if let Some((inlined, num_bytes, num_handles)) =
6842 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6843 {
6844 let member_inline_size =
6845 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6846 if inlined != (member_inline_size <= 4) {
6847 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6848 }
6849 let inner_offset;
6850 let mut inner_depth = depth.clone();
6851 if inlined {
6852 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6853 inner_offset = next_offset;
6854 } else {
6855 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6856 inner_depth.increment()?;
6857 }
6858 let val_ref = self.ra_rx.get_or_insert_with(|| fidl::new_empty!(u32, D));
6859 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6860 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6861 {
6862 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6863 }
6864 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6865 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6866 }
6867 }
6868
6869 next_offset += envelope_size;
6870 _next_ordinal_to_read += 1;
6871 if next_offset >= end_offset {
6872 return Ok(());
6873 }
6874
6875 while _next_ordinal_to_read < 10 {
6877 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6878 _next_ordinal_to_read += 1;
6879 next_offset += envelope_size;
6880 }
6881
6882 let next_out_of_line = decoder.next_out_of_line();
6883 let handles_before = decoder.remaining_handles();
6884 if let Some((inlined, num_bytes, num_handles)) =
6885 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6886 {
6887 let member_inline_size =
6888 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6889 if inlined != (member_inline_size <= 4) {
6890 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6891 }
6892 let inner_offset;
6893 let mut inner_depth = depth.clone();
6894 if inlined {
6895 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6896 inner_offset = next_offset;
6897 } else {
6898 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6899 inner_depth.increment()?;
6900 }
6901 let val_ref = self.ra_tx_success.get_or_insert_with(|| fidl::new_empty!(u32, D));
6902 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6903 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6904 {
6905 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6906 }
6907 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6908 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6909 }
6910 }
6911
6912 next_offset += envelope_size;
6913 _next_ordinal_to_read += 1;
6914 if next_offset >= end_offset {
6915 return Ok(());
6916 }
6917
6918 while _next_ordinal_to_read < 11 {
6920 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6921 _next_ordinal_to_read += 1;
6922 next_offset += envelope_size;
6923 }
6924
6925 let next_out_of_line = decoder.next_out_of_line();
6926 let handles_before = decoder.remaining_handles();
6927 if let Some((inlined, num_bytes, num_handles)) =
6928 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6929 {
6930 let member_inline_size =
6931 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6932 if inlined != (member_inline_size <= 4) {
6933 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6934 }
6935 let inner_offset;
6936 let mut inner_depth = depth.clone();
6937 if inlined {
6938 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6939 inner_offset = next_offset;
6940 } else {
6941 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6942 inner_depth.increment()?;
6943 }
6944 let val_ref = self.ra_tx_failure.get_or_insert_with(|| fidl::new_empty!(u32, D));
6945 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6946 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6947 {
6948 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6949 }
6950 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6951 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6952 }
6953 }
6954
6955 next_offset += envelope_size;
6956 _next_ordinal_to_read += 1;
6957 if next_offset >= end_offset {
6958 return Ok(());
6959 }
6960
6961 while _next_ordinal_to_read < 12 {
6963 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6964 _next_ordinal_to_read += 1;
6965 next_offset += envelope_size;
6966 }
6967
6968 let next_out_of_line = decoder.next_out_of_line();
6969 let handles_before = decoder.remaining_handles();
6970 if let Some((inlined, num_bytes, num_handles)) =
6971 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6972 {
6973 let member_inline_size =
6974 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6975 if inlined != (member_inline_size <= 4) {
6976 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6977 }
6978 let inner_offset;
6979 let mut inner_depth = depth.clone();
6980 if inlined {
6981 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6982 inner_offset = next_offset;
6983 } else {
6984 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6985 inner_depth.increment()?;
6986 }
6987 let val_ref = self.rs_rx.get_or_insert_with(|| fidl::new_empty!(u32, D));
6988 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6989 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6990 {
6991 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6992 }
6993 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6994 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6995 }
6996 }
6997
6998 next_offset += envelope_size;
6999 _next_ordinal_to_read += 1;
7000 if next_offset >= end_offset {
7001 return Ok(());
7002 }
7003
7004 while _next_ordinal_to_read < 13 {
7006 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7007 _next_ordinal_to_read += 1;
7008 next_offset += envelope_size;
7009 }
7010
7011 let next_out_of_line = decoder.next_out_of_line();
7012 let handles_before = decoder.remaining_handles();
7013 if let Some((inlined, num_bytes, num_handles)) =
7014 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7015 {
7016 let member_inline_size =
7017 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7018 if inlined != (member_inline_size <= 4) {
7019 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7020 }
7021 let inner_offset;
7022 let mut inner_depth = depth.clone();
7023 if inlined {
7024 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7025 inner_offset = next_offset;
7026 } else {
7027 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7028 inner_depth.increment()?;
7029 }
7030 let val_ref = self.rs_tx_success.get_or_insert_with(|| fidl::new_empty!(u32, D));
7031 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7032 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7033 {
7034 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7035 }
7036 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7037 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7038 }
7039 }
7040
7041 next_offset += envelope_size;
7042 _next_ordinal_to_read += 1;
7043 if next_offset >= end_offset {
7044 return Ok(());
7045 }
7046
7047 while _next_ordinal_to_read < 14 {
7049 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7050 _next_ordinal_to_read += 1;
7051 next_offset += envelope_size;
7052 }
7053
7054 let next_out_of_line = decoder.next_out_of_line();
7055 let handles_before = decoder.remaining_handles();
7056 if let Some((inlined, num_bytes, num_handles)) =
7057 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7058 {
7059 let member_inline_size =
7060 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7061 if inlined != (member_inline_size <= 4) {
7062 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7063 }
7064 let inner_offset;
7065 let mut inner_depth = depth.clone();
7066 if inlined {
7067 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7068 inner_offset = next_offset;
7069 } else {
7070 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7071 inner_depth.increment()?;
7072 }
7073 let val_ref = self.rs_tx_failure.get_or_insert_with(|| fidl::new_empty!(u32, D));
7074 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7075 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7076 {
7077 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7078 }
7079 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7080 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7081 }
7082 }
7083
7084 next_offset += envelope_size;
7085 _next_ordinal_to_read += 1;
7086 if next_offset >= end_offset {
7087 return Ok(());
7088 }
7089
7090 while _next_ordinal_to_read < 15 {
7092 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7093 _next_ordinal_to_read += 1;
7094 next_offset += envelope_size;
7095 }
7096
7097 let next_out_of_line = decoder.next_out_of_line();
7098 let handles_before = decoder.remaining_handles();
7099 if let Some((inlined, num_bytes, num_handles)) =
7100 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7101 {
7102 let member_inline_size =
7103 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7104 if inlined != (member_inline_size <= 4) {
7105 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7106 }
7107 let inner_offset;
7108 let mut inner_depth = depth.clone();
7109 if inlined {
7110 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7111 inner_offset = next_offset;
7112 } else {
7113 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7114 inner_depth.increment()?;
7115 }
7116 let val_ref =
7117 self.inbound_internet_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
7118 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
7119 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7120 {
7121 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7122 }
7123 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7124 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7125 }
7126 }
7127
7128 next_offset += envelope_size;
7129 _next_ordinal_to_read += 1;
7130 if next_offset >= end_offset {
7131 return Ok(());
7132 }
7133
7134 while _next_ordinal_to_read < 16 {
7136 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7137 _next_ordinal_to_read += 1;
7138 next_offset += envelope_size;
7139 }
7140
7141 let next_out_of_line = decoder.next_out_of_line();
7142 let handles_before = decoder.remaining_handles();
7143 if let Some((inlined, num_bytes, num_handles)) =
7144 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7145 {
7146 let member_inline_size =
7147 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7148 if inlined != (member_inline_size <= 4) {
7149 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7150 }
7151 let inner_offset;
7152 let mut inner_depth = depth.clone();
7153 if inlined {
7154 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7155 inner_offset = next_offset;
7156 } else {
7157 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7158 inner_depth.increment()?;
7159 }
7160 let val_ref =
7161 self.inbound_internet_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
7162 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
7163 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7164 {
7165 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7166 }
7167 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7168 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7169 }
7170 }
7171
7172 next_offset += envelope_size;
7173 _next_ordinal_to_read += 1;
7174 if next_offset >= end_offset {
7175 return Ok(());
7176 }
7177
7178 while _next_ordinal_to_read < 17 {
7180 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7181 _next_ordinal_to_read += 1;
7182 next_offset += envelope_size;
7183 }
7184
7185 let next_out_of_line = decoder.next_out_of_line();
7186 let handles_before = decoder.remaining_handles();
7187 if let Some((inlined, num_bytes, num_handles)) =
7188 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7189 {
7190 let member_inline_size =
7191 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7192 if inlined != (member_inline_size <= 4) {
7193 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7194 }
7195 let inner_offset;
7196 let mut inner_depth = depth.clone();
7197 if inlined {
7198 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7199 inner_offset = next_offset;
7200 } else {
7201 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7202 inner_depth.increment()?;
7203 }
7204 let val_ref =
7205 self.outbound_internet_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
7206 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
7207 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7208 {
7209 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7210 }
7211 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7212 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7213 }
7214 }
7215
7216 next_offset += envelope_size;
7217 _next_ordinal_to_read += 1;
7218 if next_offset >= end_offset {
7219 return Ok(());
7220 }
7221
7222 while _next_ordinal_to_read < 18 {
7224 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7225 _next_ordinal_to_read += 1;
7226 next_offset += envelope_size;
7227 }
7228
7229 let next_out_of_line = decoder.next_out_of_line();
7230 let handles_before = decoder.remaining_handles();
7231 if let Some((inlined, num_bytes, num_handles)) =
7232 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7233 {
7234 let member_inline_size =
7235 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7236 if inlined != (member_inline_size <= 4) {
7237 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7238 }
7239 let inner_offset;
7240 let mut inner_depth = depth.clone();
7241 if inlined {
7242 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7243 inner_offset = next_offset;
7244 } else {
7245 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7246 inner_depth.increment()?;
7247 }
7248 let val_ref =
7249 self.outbound_internet_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
7250 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
7251 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7252 {
7253 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7254 }
7255 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7256 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7257 }
7258 }
7259
7260 next_offset += envelope_size;
7261
7262 while next_offset < end_offset {
7264 _next_ordinal_to_read += 1;
7265 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7266 next_offset += envelope_size;
7267 }
7268
7269 Ok(())
7270 }
7271 }
7272
7273 impl BorderRoutingNat64State {
7274 #[inline(always)]
7275 fn max_ordinal_present(&self) -> u64 {
7276 if let Some(_) = self.translator_state {
7277 return 2;
7278 }
7279 if let Some(_) = self.prefix_manager_state {
7280 return 1;
7281 }
7282 0
7283 }
7284 }
7285
7286 impl fidl::encoding::ValueTypeMarker for BorderRoutingNat64State {
7287 type Borrowed<'a> = &'a Self;
7288 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7289 value
7290 }
7291 }
7292
7293 unsafe impl fidl::encoding::TypeMarker for BorderRoutingNat64State {
7294 type Owned = Self;
7295
7296 #[inline(always)]
7297 fn inline_align(_context: fidl::encoding::Context) -> usize {
7298 8
7299 }
7300
7301 #[inline(always)]
7302 fn inline_size(_context: fidl::encoding::Context) -> usize {
7303 16
7304 }
7305 }
7306
7307 unsafe impl<D: fidl::encoding::ResourceDialect>
7308 fidl::encoding::Encode<BorderRoutingNat64State, D> for &BorderRoutingNat64State
7309 {
7310 unsafe fn encode(
7311 self,
7312 encoder: &mut fidl::encoding::Encoder<'_, D>,
7313 offset: usize,
7314 mut depth: fidl::encoding::Depth,
7315 ) -> fidl::Result<()> {
7316 encoder.debug_check_bounds::<BorderRoutingNat64State>(offset);
7317 let max_ordinal: u64 = self.max_ordinal_present();
7319 encoder.write_num(max_ordinal, offset);
7320 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7321 if max_ordinal == 0 {
7323 return Ok(());
7324 }
7325 depth.increment()?;
7326 let envelope_size = 8;
7327 let bytes_len = max_ordinal as usize * envelope_size;
7328 #[allow(unused_variables)]
7329 let offset = encoder.out_of_line_offset(bytes_len);
7330 let mut _prev_end_offset: usize = 0;
7331 if 1 > max_ordinal {
7332 return Ok(());
7333 }
7334
7335 let cur_offset: usize = (1 - 1) * envelope_size;
7338
7339 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7341
7342 fidl::encoding::encode_in_envelope_optional::<Nat64State, D>(
7347 self.prefix_manager_state
7348 .as_ref()
7349 .map(<Nat64State as fidl::encoding::ValueTypeMarker>::borrow),
7350 encoder,
7351 offset + cur_offset,
7352 depth,
7353 )?;
7354
7355 _prev_end_offset = cur_offset + envelope_size;
7356 if 2 > max_ordinal {
7357 return Ok(());
7358 }
7359
7360 let cur_offset: usize = (2 - 1) * envelope_size;
7363
7364 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7366
7367 fidl::encoding::encode_in_envelope_optional::<Nat64State, D>(
7372 self.translator_state
7373 .as_ref()
7374 .map(<Nat64State as fidl::encoding::ValueTypeMarker>::borrow),
7375 encoder,
7376 offset + cur_offset,
7377 depth,
7378 )?;
7379
7380 _prev_end_offset = cur_offset + envelope_size;
7381
7382 Ok(())
7383 }
7384 }
7385
7386 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7387 for BorderRoutingNat64State
7388 {
7389 #[inline(always)]
7390 fn new_empty() -> Self {
7391 Self::default()
7392 }
7393
7394 unsafe fn decode(
7395 &mut self,
7396 decoder: &mut fidl::encoding::Decoder<'_, D>,
7397 offset: usize,
7398 mut depth: fidl::encoding::Depth,
7399 ) -> fidl::Result<()> {
7400 decoder.debug_check_bounds::<Self>(offset);
7401 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7402 None => return Err(fidl::Error::NotNullable),
7403 Some(len) => len,
7404 };
7405 if len == 0 {
7407 return Ok(());
7408 };
7409 depth.increment()?;
7410 let envelope_size = 8;
7411 let bytes_len = len * envelope_size;
7412 let offset = decoder.out_of_line_offset(bytes_len)?;
7413 let mut _next_ordinal_to_read = 0;
7415 let mut next_offset = offset;
7416 let end_offset = offset + bytes_len;
7417 _next_ordinal_to_read += 1;
7418 if next_offset >= end_offset {
7419 return Ok(());
7420 }
7421
7422 while _next_ordinal_to_read < 1 {
7424 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7425 _next_ordinal_to_read += 1;
7426 next_offset += envelope_size;
7427 }
7428
7429 let next_out_of_line = decoder.next_out_of_line();
7430 let handles_before = decoder.remaining_handles();
7431 if let Some((inlined, num_bytes, num_handles)) =
7432 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7433 {
7434 let member_inline_size =
7435 <Nat64State as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7436 if inlined != (member_inline_size <= 4) {
7437 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7438 }
7439 let inner_offset;
7440 let mut inner_depth = depth.clone();
7441 if inlined {
7442 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7443 inner_offset = next_offset;
7444 } else {
7445 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7446 inner_depth.increment()?;
7447 }
7448 let val_ref = self
7449 .prefix_manager_state
7450 .get_or_insert_with(|| fidl::new_empty!(Nat64State, D));
7451 fidl::decode!(Nat64State, D, val_ref, decoder, inner_offset, inner_depth)?;
7452 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7453 {
7454 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7455 }
7456 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7457 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7458 }
7459 }
7460
7461 next_offset += envelope_size;
7462 _next_ordinal_to_read += 1;
7463 if next_offset >= end_offset {
7464 return Ok(());
7465 }
7466
7467 while _next_ordinal_to_read < 2 {
7469 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7470 _next_ordinal_to_read += 1;
7471 next_offset += envelope_size;
7472 }
7473
7474 let next_out_of_line = decoder.next_out_of_line();
7475 let handles_before = decoder.remaining_handles();
7476 if let Some((inlined, num_bytes, num_handles)) =
7477 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7478 {
7479 let member_inline_size =
7480 <Nat64State as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7481 if inlined != (member_inline_size <= 4) {
7482 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7483 }
7484 let inner_offset;
7485 let mut inner_depth = depth.clone();
7486 if inlined {
7487 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7488 inner_offset = next_offset;
7489 } else {
7490 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7491 inner_depth.increment()?;
7492 }
7493 let val_ref =
7494 self.translator_state.get_or_insert_with(|| fidl::new_empty!(Nat64State, D));
7495 fidl::decode!(Nat64State, D, val_ref, decoder, inner_offset, inner_depth)?;
7496 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7497 {
7498 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7499 }
7500 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7501 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7502 }
7503 }
7504
7505 next_offset += envelope_size;
7506
7507 while next_offset < end_offset {
7509 _next_ordinal_to_read += 1;
7510 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7511 next_offset += envelope_size;
7512 }
7513
7514 Ok(())
7515 }
7516 }
7517
7518 impl BorderRoutingPeer {
7519 #[inline(always)]
7520 fn max_ordinal_present(&self) -> u64 {
7521 if let Some(_) = self.age {
7522 return 2;
7523 }
7524 if let Some(_) = self.thread_rloc {
7525 return 1;
7526 }
7527 0
7528 }
7529 }
7530
7531 impl fidl::encoding::ValueTypeMarker for BorderRoutingPeer {
7532 type Borrowed<'a> = &'a Self;
7533 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7534 value
7535 }
7536 }
7537
7538 unsafe impl fidl::encoding::TypeMarker for BorderRoutingPeer {
7539 type Owned = Self;
7540
7541 #[inline(always)]
7542 fn inline_align(_context: fidl::encoding::Context) -> usize {
7543 8
7544 }
7545
7546 #[inline(always)]
7547 fn inline_size(_context: fidl::encoding::Context) -> usize {
7548 16
7549 }
7550 }
7551
7552 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRoutingPeer, D>
7553 for &BorderRoutingPeer
7554 {
7555 unsafe fn encode(
7556 self,
7557 encoder: &mut fidl::encoding::Encoder<'_, D>,
7558 offset: usize,
7559 mut depth: fidl::encoding::Depth,
7560 ) -> fidl::Result<()> {
7561 encoder.debug_check_bounds::<BorderRoutingPeer>(offset);
7562 let max_ordinal: u64 = self.max_ordinal_present();
7564 encoder.write_num(max_ordinal, offset);
7565 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7566 if max_ordinal == 0 {
7568 return Ok(());
7569 }
7570 depth.increment()?;
7571 let envelope_size = 8;
7572 let bytes_len = max_ordinal as usize * envelope_size;
7573 #[allow(unused_variables)]
7574 let offset = encoder.out_of_line_offset(bytes_len);
7575 let mut _prev_end_offset: usize = 0;
7576 if 1 > max_ordinal {
7577 return Ok(());
7578 }
7579
7580 let cur_offset: usize = (1 - 1) * envelope_size;
7583
7584 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7586
7587 fidl::encoding::encode_in_envelope_optional::<u16, D>(
7592 self.thread_rloc.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
7593 encoder,
7594 offset + cur_offset,
7595 depth,
7596 )?;
7597
7598 _prev_end_offset = cur_offset + envelope_size;
7599 if 2 > max_ordinal {
7600 return Ok(());
7601 }
7602
7603 let cur_offset: usize = (2 - 1) * envelope_size;
7606
7607 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7609
7610 fidl::encoding::encode_in_envelope_optional::<i64, D>(
7615 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
7616 encoder,
7617 offset + cur_offset,
7618 depth,
7619 )?;
7620
7621 _prev_end_offset = cur_offset + envelope_size;
7622
7623 Ok(())
7624 }
7625 }
7626
7627 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRoutingPeer {
7628 #[inline(always)]
7629 fn new_empty() -> Self {
7630 Self::default()
7631 }
7632
7633 unsafe fn decode(
7634 &mut self,
7635 decoder: &mut fidl::encoding::Decoder<'_, D>,
7636 offset: usize,
7637 mut depth: fidl::encoding::Depth,
7638 ) -> fidl::Result<()> {
7639 decoder.debug_check_bounds::<Self>(offset);
7640 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7641 None => return Err(fidl::Error::NotNullable),
7642 Some(len) => len,
7643 };
7644 if len == 0 {
7646 return Ok(());
7647 };
7648 depth.increment()?;
7649 let envelope_size = 8;
7650 let bytes_len = len * envelope_size;
7651 let offset = decoder.out_of_line_offset(bytes_len)?;
7652 let mut _next_ordinal_to_read = 0;
7654 let mut next_offset = offset;
7655 let end_offset = offset + bytes_len;
7656 _next_ordinal_to_read += 1;
7657 if next_offset >= end_offset {
7658 return Ok(());
7659 }
7660
7661 while _next_ordinal_to_read < 1 {
7663 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7664 _next_ordinal_to_read += 1;
7665 next_offset += envelope_size;
7666 }
7667
7668 let next_out_of_line = decoder.next_out_of_line();
7669 let handles_before = decoder.remaining_handles();
7670 if let Some((inlined, num_bytes, num_handles)) =
7671 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7672 {
7673 let member_inline_size =
7674 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7675 if inlined != (member_inline_size <= 4) {
7676 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7677 }
7678 let inner_offset;
7679 let mut inner_depth = depth.clone();
7680 if inlined {
7681 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7682 inner_offset = next_offset;
7683 } else {
7684 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7685 inner_depth.increment()?;
7686 }
7687 let val_ref = self.thread_rloc.get_or_insert_with(|| fidl::new_empty!(u16, D));
7688 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7689 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7690 {
7691 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7692 }
7693 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7694 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7695 }
7696 }
7697
7698 next_offset += envelope_size;
7699 _next_ordinal_to_read += 1;
7700 if next_offset >= end_offset {
7701 return Ok(());
7702 }
7703
7704 while _next_ordinal_to_read < 2 {
7706 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7707 _next_ordinal_to_read += 1;
7708 next_offset += envelope_size;
7709 }
7710
7711 let next_out_of_line = decoder.next_out_of_line();
7712 let handles_before = decoder.remaining_handles();
7713 if let Some((inlined, num_bytes, num_handles)) =
7714 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7715 {
7716 let member_inline_size =
7717 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7718 if inlined != (member_inline_size <= 4) {
7719 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7720 }
7721 let inner_offset;
7722 let mut inner_depth = depth.clone();
7723 if inlined {
7724 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7725 inner_offset = next_offset;
7726 } else {
7727 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7728 inner_depth.increment()?;
7729 }
7730 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
7731 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
7732 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7733 {
7734 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7735 }
7736 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7737 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7738 }
7739 }
7740
7741 next_offset += envelope_size;
7742
7743 while next_offset < end_offset {
7745 _next_ordinal_to_read += 1;
7746 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7747 next_offset += envelope_size;
7748 }
7749
7750 Ok(())
7751 }
7752 }
7753
7754 impl BorderRoutingPrefixTable {
7755 #[inline(always)]
7756 fn max_ordinal_present(&self) -> u64 {
7757 if let Some(_) = self.preferred_lifetime {
7758 return 7;
7759 }
7760 if let Some(_) = self.preference {
7761 return 6;
7762 }
7763 if let Some(_) = self.valid_lifetime {
7764 return 5;
7765 }
7766 if let Some(_) = self.duration_since_last_update {
7767 return 4;
7768 }
7769 if let Some(_) = self.is_on_link {
7770 return 3;
7771 }
7772 if let Some(_) = self.prefix {
7773 return 2;
7774 }
7775 if let Some(_) = self.router {
7776 return 1;
7777 }
7778 0
7779 }
7780 }
7781
7782 impl fidl::encoding::ValueTypeMarker for BorderRoutingPrefixTable {
7783 type Borrowed<'a> = &'a Self;
7784 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7785 value
7786 }
7787 }
7788
7789 unsafe impl fidl::encoding::TypeMarker for BorderRoutingPrefixTable {
7790 type Owned = Self;
7791
7792 #[inline(always)]
7793 fn inline_align(_context: fidl::encoding::Context) -> usize {
7794 8
7795 }
7796
7797 #[inline(always)]
7798 fn inline_size(_context: fidl::encoding::Context) -> usize {
7799 16
7800 }
7801 }
7802
7803 unsafe impl<D: fidl::encoding::ResourceDialect>
7804 fidl::encoding::Encode<BorderRoutingPrefixTable, D> for &BorderRoutingPrefixTable
7805 {
7806 unsafe fn encode(
7807 self,
7808 encoder: &mut fidl::encoding::Encoder<'_, D>,
7809 offset: usize,
7810 mut depth: fidl::encoding::Depth,
7811 ) -> fidl::Result<()> {
7812 encoder.debug_check_bounds::<BorderRoutingPrefixTable>(offset);
7813 let max_ordinal: u64 = self.max_ordinal_present();
7815 encoder.write_num(max_ordinal, offset);
7816 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7817 if max_ordinal == 0 {
7819 return Ok(());
7820 }
7821 depth.increment()?;
7822 let envelope_size = 8;
7823 let bytes_len = max_ordinal as usize * envelope_size;
7824 #[allow(unused_variables)]
7825 let offset = encoder.out_of_line_offset(bytes_len);
7826 let mut _prev_end_offset: usize = 0;
7827 if 1 > max_ordinal {
7828 return Ok(());
7829 }
7830
7831 let cur_offset: usize = (1 - 1) * envelope_size;
7834
7835 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7837
7838 fidl::encoding::encode_in_envelope_optional::<BorderRoutingRouter, D>(
7843 self.router
7844 .as_ref()
7845 .map(<BorderRoutingRouter as fidl::encoding::ValueTypeMarker>::borrow),
7846 encoder,
7847 offset + cur_offset,
7848 depth,
7849 )?;
7850
7851 _prev_end_offset = cur_offset + envelope_size;
7852 if 2 > max_ordinal {
7853 return Ok(());
7854 }
7855
7856 let cur_offset: usize = (2 - 1) * envelope_size;
7859
7860 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7862
7863 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
7868 self.prefix.as_ref().map(
7869 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
7870 ),
7871 encoder,
7872 offset + cur_offset,
7873 depth,
7874 )?;
7875
7876 _prev_end_offset = cur_offset + envelope_size;
7877 if 3 > max_ordinal {
7878 return Ok(());
7879 }
7880
7881 let cur_offset: usize = (3 - 1) * envelope_size;
7884
7885 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7887
7888 fidl::encoding::encode_in_envelope_optional::<bool, D>(
7893 self.is_on_link.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7894 encoder,
7895 offset + cur_offset,
7896 depth,
7897 )?;
7898
7899 _prev_end_offset = cur_offset + envelope_size;
7900 if 4 > max_ordinal {
7901 return Ok(());
7902 }
7903
7904 let cur_offset: usize = (4 - 1) * envelope_size;
7907
7908 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7910
7911 fidl::encoding::encode_in_envelope_optional::<i64, D>(
7916 self.duration_since_last_update
7917 .as_ref()
7918 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
7919 encoder,
7920 offset + cur_offset,
7921 depth,
7922 )?;
7923
7924 _prev_end_offset = cur_offset + envelope_size;
7925 if 5 > max_ordinal {
7926 return Ok(());
7927 }
7928
7929 let cur_offset: usize = (5 - 1) * envelope_size;
7932
7933 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7935
7936 fidl::encoding::encode_in_envelope_optional::<u32, D>(
7941 self.valid_lifetime.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7942 encoder,
7943 offset + cur_offset,
7944 depth,
7945 )?;
7946
7947 _prev_end_offset = cur_offset + envelope_size;
7948 if 6 > max_ordinal {
7949 return Ok(());
7950 }
7951
7952 let cur_offset: usize = (6 - 1) * envelope_size;
7955
7956 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7958
7959 fidl::encoding::encode_in_envelope_optional::<i8, D>(
7964 self.preference.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
7965 encoder,
7966 offset + cur_offset,
7967 depth,
7968 )?;
7969
7970 _prev_end_offset = cur_offset + envelope_size;
7971 if 7 > max_ordinal {
7972 return Ok(());
7973 }
7974
7975 let cur_offset: usize = (7 - 1) * envelope_size;
7978
7979 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7981
7982 fidl::encoding::encode_in_envelope_optional::<u32, D>(
7987 self.preferred_lifetime
7988 .as_ref()
7989 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7990 encoder,
7991 offset + cur_offset,
7992 depth,
7993 )?;
7994
7995 _prev_end_offset = cur_offset + envelope_size;
7996
7997 Ok(())
7998 }
7999 }
8000
8001 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8002 for BorderRoutingPrefixTable
8003 {
8004 #[inline(always)]
8005 fn new_empty() -> Self {
8006 Self::default()
8007 }
8008
8009 unsafe fn decode(
8010 &mut self,
8011 decoder: &mut fidl::encoding::Decoder<'_, D>,
8012 offset: usize,
8013 mut depth: fidl::encoding::Depth,
8014 ) -> fidl::Result<()> {
8015 decoder.debug_check_bounds::<Self>(offset);
8016 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8017 None => return Err(fidl::Error::NotNullable),
8018 Some(len) => len,
8019 };
8020 if len == 0 {
8022 return Ok(());
8023 };
8024 depth.increment()?;
8025 let envelope_size = 8;
8026 let bytes_len = len * envelope_size;
8027 let offset = decoder.out_of_line_offset(bytes_len)?;
8028 let mut _next_ordinal_to_read = 0;
8030 let mut next_offset = offset;
8031 let end_offset = offset + bytes_len;
8032 _next_ordinal_to_read += 1;
8033 if next_offset >= end_offset {
8034 return Ok(());
8035 }
8036
8037 while _next_ordinal_to_read < 1 {
8039 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8040 _next_ordinal_to_read += 1;
8041 next_offset += envelope_size;
8042 }
8043
8044 let next_out_of_line = decoder.next_out_of_line();
8045 let handles_before = decoder.remaining_handles();
8046 if let Some((inlined, num_bytes, num_handles)) =
8047 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8048 {
8049 let member_inline_size =
8050 <BorderRoutingRouter as fidl::encoding::TypeMarker>::inline_size(
8051 decoder.context,
8052 );
8053 if inlined != (member_inline_size <= 4) {
8054 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8055 }
8056 let inner_offset;
8057 let mut inner_depth = depth.clone();
8058 if inlined {
8059 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8060 inner_offset = next_offset;
8061 } else {
8062 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8063 inner_depth.increment()?;
8064 }
8065 let val_ref =
8066 self.router.get_or_insert_with(|| fidl::new_empty!(BorderRoutingRouter, D));
8067 fidl::decode!(BorderRoutingRouter, D, val_ref, decoder, inner_offset, inner_depth)?;
8068 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8069 {
8070 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8071 }
8072 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8073 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8074 }
8075 }
8076
8077 next_offset += envelope_size;
8078 _next_ordinal_to_read += 1;
8079 if next_offset >= end_offset {
8080 return Ok(());
8081 }
8082
8083 while _next_ordinal_to_read < 2 {
8085 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8086 _next_ordinal_to_read += 1;
8087 next_offset += envelope_size;
8088 }
8089
8090 let next_out_of_line = decoder.next_out_of_line();
8091 let handles_before = decoder.remaining_handles();
8092 if let Some((inlined, num_bytes, num_handles)) =
8093 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8094 {
8095 let member_inline_size =
8096 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
8097 decoder.context,
8098 );
8099 if inlined != (member_inline_size <= 4) {
8100 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8101 }
8102 let inner_offset;
8103 let mut inner_depth = depth.clone();
8104 if inlined {
8105 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8106 inner_offset = next_offset;
8107 } else {
8108 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8109 inner_depth.increment()?;
8110 }
8111 let val_ref = self
8112 .prefix
8113 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
8114 fidl::decode!(
8115 fidl::encoding::BoundedString<64>,
8116 D,
8117 val_ref,
8118 decoder,
8119 inner_offset,
8120 inner_depth
8121 )?;
8122 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8123 {
8124 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8125 }
8126 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8127 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8128 }
8129 }
8130
8131 next_offset += envelope_size;
8132 _next_ordinal_to_read += 1;
8133 if next_offset >= end_offset {
8134 return Ok(());
8135 }
8136
8137 while _next_ordinal_to_read < 3 {
8139 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8140 _next_ordinal_to_read += 1;
8141 next_offset += envelope_size;
8142 }
8143
8144 let next_out_of_line = decoder.next_out_of_line();
8145 let handles_before = decoder.remaining_handles();
8146 if let Some((inlined, num_bytes, num_handles)) =
8147 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8148 {
8149 let member_inline_size =
8150 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8151 if inlined != (member_inline_size <= 4) {
8152 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8153 }
8154 let inner_offset;
8155 let mut inner_depth = depth.clone();
8156 if inlined {
8157 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8158 inner_offset = next_offset;
8159 } else {
8160 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8161 inner_depth.increment()?;
8162 }
8163 let val_ref = self.is_on_link.get_or_insert_with(|| fidl::new_empty!(bool, D));
8164 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
8165 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8166 {
8167 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8168 }
8169 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8170 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8171 }
8172 }
8173
8174 next_offset += envelope_size;
8175 _next_ordinal_to_read += 1;
8176 if next_offset >= end_offset {
8177 return Ok(());
8178 }
8179
8180 while _next_ordinal_to_read < 4 {
8182 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8183 _next_ordinal_to_read += 1;
8184 next_offset += envelope_size;
8185 }
8186
8187 let next_out_of_line = decoder.next_out_of_line();
8188 let handles_before = decoder.remaining_handles();
8189 if let Some((inlined, num_bytes, num_handles)) =
8190 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8191 {
8192 let member_inline_size =
8193 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8194 if inlined != (member_inline_size <= 4) {
8195 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8196 }
8197 let inner_offset;
8198 let mut inner_depth = depth.clone();
8199 if inlined {
8200 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8201 inner_offset = next_offset;
8202 } else {
8203 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8204 inner_depth.increment()?;
8205 }
8206 let val_ref =
8207 self.duration_since_last_update.get_or_insert_with(|| fidl::new_empty!(i64, D));
8208 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
8209 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8210 {
8211 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8212 }
8213 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8214 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8215 }
8216 }
8217
8218 next_offset += envelope_size;
8219 _next_ordinal_to_read += 1;
8220 if next_offset >= end_offset {
8221 return Ok(());
8222 }
8223
8224 while _next_ordinal_to_read < 5 {
8226 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8227 _next_ordinal_to_read += 1;
8228 next_offset += envelope_size;
8229 }
8230
8231 let next_out_of_line = decoder.next_out_of_line();
8232 let handles_before = decoder.remaining_handles();
8233 if let Some((inlined, num_bytes, num_handles)) =
8234 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8235 {
8236 let member_inline_size =
8237 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8238 if inlined != (member_inline_size <= 4) {
8239 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8240 }
8241 let inner_offset;
8242 let mut inner_depth = depth.clone();
8243 if inlined {
8244 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8245 inner_offset = next_offset;
8246 } else {
8247 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8248 inner_depth.increment()?;
8249 }
8250 let val_ref = self.valid_lifetime.get_or_insert_with(|| fidl::new_empty!(u32, D));
8251 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
8252 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8253 {
8254 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8255 }
8256 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8257 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8258 }
8259 }
8260
8261 next_offset += envelope_size;
8262 _next_ordinal_to_read += 1;
8263 if next_offset >= end_offset {
8264 return Ok(());
8265 }
8266
8267 while _next_ordinal_to_read < 6 {
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 =
8280 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8281 if inlined != (member_inline_size <= 4) {
8282 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8283 }
8284 let inner_offset;
8285 let mut inner_depth = depth.clone();
8286 if inlined {
8287 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8288 inner_offset = next_offset;
8289 } else {
8290 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8291 inner_depth.increment()?;
8292 }
8293 let val_ref = self.preference.get_or_insert_with(|| fidl::new_empty!(i8, D));
8294 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
8295 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8296 {
8297 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8298 }
8299 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8300 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8301 }
8302 }
8303
8304 next_offset += envelope_size;
8305 _next_ordinal_to_read += 1;
8306 if next_offset >= end_offset {
8307 return Ok(());
8308 }
8309
8310 while _next_ordinal_to_read < 7 {
8312 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8313 _next_ordinal_to_read += 1;
8314 next_offset += envelope_size;
8315 }
8316
8317 let next_out_of_line = decoder.next_out_of_line();
8318 let handles_before = decoder.remaining_handles();
8319 if let Some((inlined, num_bytes, num_handles)) =
8320 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8321 {
8322 let member_inline_size =
8323 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8324 if inlined != (member_inline_size <= 4) {
8325 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8326 }
8327 let inner_offset;
8328 let mut inner_depth = depth.clone();
8329 if inlined {
8330 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8331 inner_offset = next_offset;
8332 } else {
8333 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8334 inner_depth.increment()?;
8335 }
8336 let val_ref =
8337 self.preferred_lifetime.get_or_insert_with(|| fidl::new_empty!(u32, D));
8338 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
8339 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8340 {
8341 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8342 }
8343 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8344 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8345 }
8346 }
8347
8348 next_offset += envelope_size;
8349
8350 while next_offset < end_offset {
8352 _next_ordinal_to_read += 1;
8353 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8354 next_offset += envelope_size;
8355 }
8356
8357 Ok(())
8358 }
8359 }
8360
8361 impl BorderRoutingRdnss {
8362 #[inline(always)]
8363 fn max_ordinal_present(&self) -> u64 {
8364 if let Some(_) = self.lifetime {
8365 return 4;
8366 }
8367 if let Some(_) = self.duration_since_last_update {
8368 return 3;
8369 }
8370 if let Some(_) = self.address {
8371 return 2;
8372 }
8373 if let Some(_) = self.router {
8374 return 1;
8375 }
8376 0
8377 }
8378 }
8379
8380 impl fidl::encoding::ValueTypeMarker for BorderRoutingRdnss {
8381 type Borrowed<'a> = &'a Self;
8382 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8383 value
8384 }
8385 }
8386
8387 unsafe impl fidl::encoding::TypeMarker for BorderRoutingRdnss {
8388 type Owned = Self;
8389
8390 #[inline(always)]
8391 fn inline_align(_context: fidl::encoding::Context) -> usize {
8392 8
8393 }
8394
8395 #[inline(always)]
8396 fn inline_size(_context: fidl::encoding::Context) -> usize {
8397 16
8398 }
8399 }
8400
8401 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRoutingRdnss, D>
8402 for &BorderRoutingRdnss
8403 {
8404 unsafe fn encode(
8405 self,
8406 encoder: &mut fidl::encoding::Encoder<'_, D>,
8407 offset: usize,
8408 mut depth: fidl::encoding::Depth,
8409 ) -> fidl::Result<()> {
8410 encoder.debug_check_bounds::<BorderRoutingRdnss>(offset);
8411 let max_ordinal: u64 = self.max_ordinal_present();
8413 encoder.write_num(max_ordinal, offset);
8414 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8415 if max_ordinal == 0 {
8417 return Ok(());
8418 }
8419 depth.increment()?;
8420 let envelope_size = 8;
8421 let bytes_len = max_ordinal as usize * envelope_size;
8422 #[allow(unused_variables)]
8423 let offset = encoder.out_of_line_offset(bytes_len);
8424 let mut _prev_end_offset: usize = 0;
8425 if 1 > max_ordinal {
8426 return Ok(());
8427 }
8428
8429 let cur_offset: usize = (1 - 1) * envelope_size;
8432
8433 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8435
8436 fidl::encoding::encode_in_envelope_optional::<BorderRoutingRouter, D>(
8441 self.router
8442 .as_ref()
8443 .map(<BorderRoutingRouter as fidl::encoding::ValueTypeMarker>::borrow),
8444 encoder,
8445 offset + cur_offset,
8446 depth,
8447 )?;
8448
8449 _prev_end_offset = cur_offset + envelope_size;
8450 if 2 > max_ordinal {
8451 return Ok(());
8452 }
8453
8454 let cur_offset: usize = (2 - 1) * envelope_size;
8457
8458 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8460
8461 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_common::Ipv6Address, D>(
8466 self.address.as_ref().map(<fidl_fuchsia_net_common::Ipv6Address as fidl::encoding::ValueTypeMarker>::borrow),
8467 encoder, offset + cur_offset, depth
8468 )?;
8469
8470 _prev_end_offset = cur_offset + envelope_size;
8471 if 3 > max_ordinal {
8472 return Ok(());
8473 }
8474
8475 let cur_offset: usize = (3 - 1) * envelope_size;
8478
8479 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8481
8482 fidl::encoding::encode_in_envelope_optional::<i64, D>(
8487 self.duration_since_last_update
8488 .as_ref()
8489 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8490 encoder,
8491 offset + cur_offset,
8492 depth,
8493 )?;
8494
8495 _prev_end_offset = cur_offset + envelope_size;
8496 if 4 > max_ordinal {
8497 return Ok(());
8498 }
8499
8500 let cur_offset: usize = (4 - 1) * envelope_size;
8503
8504 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8506
8507 fidl::encoding::encode_in_envelope_optional::<u32, D>(
8512 self.lifetime.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
8513 encoder,
8514 offset + cur_offset,
8515 depth,
8516 )?;
8517
8518 _prev_end_offset = cur_offset + envelope_size;
8519
8520 Ok(())
8521 }
8522 }
8523
8524 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRoutingRdnss {
8525 #[inline(always)]
8526 fn new_empty() -> Self {
8527 Self::default()
8528 }
8529
8530 unsafe fn decode(
8531 &mut self,
8532 decoder: &mut fidl::encoding::Decoder<'_, D>,
8533 offset: usize,
8534 mut depth: fidl::encoding::Depth,
8535 ) -> fidl::Result<()> {
8536 decoder.debug_check_bounds::<Self>(offset);
8537 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8538 None => return Err(fidl::Error::NotNullable),
8539 Some(len) => len,
8540 };
8541 if len == 0 {
8543 return Ok(());
8544 };
8545 depth.increment()?;
8546 let envelope_size = 8;
8547 let bytes_len = len * envelope_size;
8548 let offset = decoder.out_of_line_offset(bytes_len)?;
8549 let mut _next_ordinal_to_read = 0;
8551 let mut next_offset = offset;
8552 let end_offset = offset + bytes_len;
8553 _next_ordinal_to_read += 1;
8554 if next_offset >= end_offset {
8555 return Ok(());
8556 }
8557
8558 while _next_ordinal_to_read < 1 {
8560 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8561 _next_ordinal_to_read += 1;
8562 next_offset += envelope_size;
8563 }
8564
8565 let next_out_of_line = decoder.next_out_of_line();
8566 let handles_before = decoder.remaining_handles();
8567 if let Some((inlined, num_bytes, num_handles)) =
8568 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8569 {
8570 let member_inline_size =
8571 <BorderRoutingRouter as fidl::encoding::TypeMarker>::inline_size(
8572 decoder.context,
8573 );
8574 if inlined != (member_inline_size <= 4) {
8575 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8576 }
8577 let inner_offset;
8578 let mut inner_depth = depth.clone();
8579 if inlined {
8580 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8581 inner_offset = next_offset;
8582 } else {
8583 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8584 inner_depth.increment()?;
8585 }
8586 let val_ref =
8587 self.router.get_or_insert_with(|| fidl::new_empty!(BorderRoutingRouter, D));
8588 fidl::decode!(BorderRoutingRouter, D, val_ref, decoder, inner_offset, inner_depth)?;
8589 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8590 {
8591 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8592 }
8593 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8594 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8595 }
8596 }
8597
8598 next_offset += envelope_size;
8599 _next_ordinal_to_read += 1;
8600 if next_offset >= end_offset {
8601 return Ok(());
8602 }
8603
8604 while _next_ordinal_to_read < 2 {
8606 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8607 _next_ordinal_to_read += 1;
8608 next_offset += envelope_size;
8609 }
8610
8611 let next_out_of_line = decoder.next_out_of_line();
8612 let handles_before = decoder.remaining_handles();
8613 if let Some((inlined, num_bytes, num_handles)) =
8614 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8615 {
8616 let member_inline_size = <fidl_fuchsia_net_common::Ipv6Address as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8617 if inlined != (member_inline_size <= 4) {
8618 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8619 }
8620 let inner_offset;
8621 let mut inner_depth = depth.clone();
8622 if inlined {
8623 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8624 inner_offset = next_offset;
8625 } else {
8626 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8627 inner_depth.increment()?;
8628 }
8629 let val_ref = self.address.get_or_insert_with(|| {
8630 fidl::new_empty!(fidl_fuchsia_net_common::Ipv6Address, D)
8631 });
8632 fidl::decode!(
8633 fidl_fuchsia_net_common::Ipv6Address,
8634 D,
8635 val_ref,
8636 decoder,
8637 inner_offset,
8638 inner_depth
8639 )?;
8640 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8641 {
8642 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8643 }
8644 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8645 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8646 }
8647 }
8648
8649 next_offset += envelope_size;
8650 _next_ordinal_to_read += 1;
8651 if next_offset >= end_offset {
8652 return Ok(());
8653 }
8654
8655 while _next_ordinal_to_read < 3 {
8657 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8658 _next_ordinal_to_read += 1;
8659 next_offset += envelope_size;
8660 }
8661
8662 let next_out_of_line = decoder.next_out_of_line();
8663 let handles_before = decoder.remaining_handles();
8664 if let Some((inlined, num_bytes, num_handles)) =
8665 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8666 {
8667 let member_inline_size =
8668 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8669 if inlined != (member_inline_size <= 4) {
8670 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8671 }
8672 let inner_offset;
8673 let mut inner_depth = depth.clone();
8674 if inlined {
8675 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8676 inner_offset = next_offset;
8677 } else {
8678 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8679 inner_depth.increment()?;
8680 }
8681 let val_ref =
8682 self.duration_since_last_update.get_or_insert_with(|| fidl::new_empty!(i64, D));
8683 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
8684 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8685 {
8686 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8687 }
8688 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8689 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8690 }
8691 }
8692
8693 next_offset += envelope_size;
8694 _next_ordinal_to_read += 1;
8695 if next_offset >= end_offset {
8696 return Ok(());
8697 }
8698
8699 while _next_ordinal_to_read < 4 {
8701 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8702 _next_ordinal_to_read += 1;
8703 next_offset += envelope_size;
8704 }
8705
8706 let next_out_of_line = decoder.next_out_of_line();
8707 let handles_before = decoder.remaining_handles();
8708 if let Some((inlined, num_bytes, num_handles)) =
8709 fidl::encoding::decode_envelope_header(decoder, next_offset)?
8710 {
8711 let member_inline_size =
8712 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8713 if inlined != (member_inline_size <= 4) {
8714 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8715 }
8716 let inner_offset;
8717 let mut inner_depth = depth.clone();
8718 if inlined {
8719 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8720 inner_offset = next_offset;
8721 } else {
8722 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8723 inner_depth.increment()?;
8724 }
8725 let val_ref = self.lifetime.get_or_insert_with(|| fidl::new_empty!(u32, D));
8726 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
8727 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8728 {
8729 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8730 }
8731 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8732 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8733 }
8734 }
8735
8736 next_offset += envelope_size;
8737
8738 while next_offset < end_offset {
8740 _next_ordinal_to_read += 1;
8741 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8742 next_offset += envelope_size;
8743 }
8744
8745 Ok(())
8746 }
8747 }
8748
8749 impl BorderRoutingRouter {
8750 #[inline(always)]
8751 fn max_ordinal_present(&self) -> u64 {
8752 if let Some(_) = self.is_peer_br {
8753 return 9;
8754 }
8755 if let Some(_) = self.is_reachable {
8756 return 8;
8757 }
8758 if let Some(_) = self.is_local_device {
8759 return 7;
8760 }
8761 if let Some(_) = self.snac_router_flag {
8762 return 6;
8763 }
8764 if let Some(_) = self.other_config_flag {
8765 return 5;
8766 }
8767 if let Some(_) = self.managed_address_config_flag {
8768 return 4;
8769 }
8770 if let Some(_) = self.age {
8771 return 3;
8772 }
8773 if let Some(_) = self.duration_since_last_update {
8774 return 2;
8775 }
8776 if let Some(_) = self.address {
8777 return 1;
8778 }
8779 0
8780 }
8781 }
8782
8783 impl fidl::encoding::ValueTypeMarker for BorderRoutingRouter {
8784 type Borrowed<'a> = &'a Self;
8785 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8786 value
8787 }
8788 }
8789
8790 unsafe impl fidl::encoding::TypeMarker for BorderRoutingRouter {
8791 type Owned = Self;
8792
8793 #[inline(always)]
8794 fn inline_align(_context: fidl::encoding::Context) -> usize {
8795 8
8796 }
8797
8798 #[inline(always)]
8799 fn inline_size(_context: fidl::encoding::Context) -> usize {
8800 16
8801 }
8802 }
8803
8804 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderRoutingRouter, D>
8805 for &BorderRoutingRouter
8806 {
8807 unsafe fn encode(
8808 self,
8809 encoder: &mut fidl::encoding::Encoder<'_, D>,
8810 offset: usize,
8811 mut depth: fidl::encoding::Depth,
8812 ) -> fidl::Result<()> {
8813 encoder.debug_check_bounds::<BorderRoutingRouter>(offset);
8814 let max_ordinal: u64 = self.max_ordinal_present();
8816 encoder.write_num(max_ordinal, offset);
8817 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8818 if max_ordinal == 0 {
8820 return Ok(());
8821 }
8822 depth.increment()?;
8823 let envelope_size = 8;
8824 let bytes_len = max_ordinal as usize * envelope_size;
8825 #[allow(unused_variables)]
8826 let offset = encoder.out_of_line_offset(bytes_len);
8827 let mut _prev_end_offset: usize = 0;
8828 if 1 > max_ordinal {
8829 return Ok(());
8830 }
8831
8832 let cur_offset: usize = (1 - 1) * envelope_size;
8835
8836 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8838
8839 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
8844 self.address.as_ref().map(
8845 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
8846 ),
8847 encoder,
8848 offset + cur_offset,
8849 depth,
8850 )?;
8851
8852 _prev_end_offset = cur_offset + envelope_size;
8853 if 2 > max_ordinal {
8854 return Ok(());
8855 }
8856
8857 let cur_offset: usize = (2 - 1) * envelope_size;
8860
8861 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8863
8864 fidl::encoding::encode_in_envelope_optional::<i64, D>(
8869 self.duration_since_last_update
8870 .as_ref()
8871 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8872 encoder,
8873 offset + cur_offset,
8874 depth,
8875 )?;
8876
8877 _prev_end_offset = cur_offset + envelope_size;
8878 if 3 > max_ordinal {
8879 return Ok(());
8880 }
8881
8882 let cur_offset: usize = (3 - 1) * envelope_size;
8885
8886 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8888
8889 fidl::encoding::encode_in_envelope_optional::<i64, D>(
8894 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8895 encoder,
8896 offset + cur_offset,
8897 depth,
8898 )?;
8899
8900 _prev_end_offset = cur_offset + envelope_size;
8901 if 4 > max_ordinal {
8902 return Ok(());
8903 }
8904
8905 let cur_offset: usize = (4 - 1) * envelope_size;
8908
8909 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8911
8912 fidl::encoding::encode_in_envelope_optional::<bool, D>(
8917 self.managed_address_config_flag
8918 .as_ref()
8919 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
8920 encoder,
8921 offset + cur_offset,
8922 depth,
8923 )?;
8924
8925 _prev_end_offset = cur_offset + envelope_size;
8926 if 5 > max_ordinal {
8927 return Ok(());
8928 }
8929
8930 let cur_offset: usize = (5 - 1) * envelope_size;
8933
8934 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8936
8937 fidl::encoding::encode_in_envelope_optional::<bool, D>(
8942 self.other_config_flag
8943 .as_ref()
8944 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
8945 encoder,
8946 offset + cur_offset,
8947 depth,
8948 )?;
8949
8950 _prev_end_offset = cur_offset + envelope_size;
8951 if 6 > max_ordinal {
8952 return Ok(());
8953 }
8954
8955 let cur_offset: usize = (6 - 1) * envelope_size;
8958
8959 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8961
8962 fidl::encoding::encode_in_envelope_optional::<bool, D>(
8967 self.snac_router_flag
8968 .as_ref()
8969 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
8970 encoder,
8971 offset + cur_offset,
8972 depth,
8973 )?;
8974
8975 _prev_end_offset = cur_offset + envelope_size;
8976 if 7 > max_ordinal {
8977 return Ok(());
8978 }
8979
8980 let cur_offset: usize = (7 - 1) * envelope_size;
8983
8984 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8986
8987 fidl::encoding::encode_in_envelope_optional::<bool, D>(
8992 self.is_local_device
8993 .as_ref()
8994 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
8995 encoder,
8996 offset + cur_offset,
8997 depth,
8998 )?;
8999
9000 _prev_end_offset = cur_offset + envelope_size;
9001 if 8 > max_ordinal {
9002 return Ok(());
9003 }
9004
9005 let cur_offset: usize = (8 - 1) * envelope_size;
9008
9009 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9011
9012 fidl::encoding::encode_in_envelope_optional::<bool, D>(
9017 self.is_reachable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9018 encoder,
9019 offset + cur_offset,
9020 depth,
9021 )?;
9022
9023 _prev_end_offset = cur_offset + envelope_size;
9024 if 9 > max_ordinal {
9025 return Ok(());
9026 }
9027
9028 let cur_offset: usize = (9 - 1) * envelope_size;
9031
9032 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9034
9035 fidl::encoding::encode_in_envelope_optional::<bool, D>(
9040 self.is_peer_br.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9041 encoder,
9042 offset + cur_offset,
9043 depth,
9044 )?;
9045
9046 _prev_end_offset = cur_offset + envelope_size;
9047
9048 Ok(())
9049 }
9050 }
9051
9052 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderRoutingRouter {
9053 #[inline(always)]
9054 fn new_empty() -> Self {
9055 Self::default()
9056 }
9057
9058 unsafe fn decode(
9059 &mut self,
9060 decoder: &mut fidl::encoding::Decoder<'_, D>,
9061 offset: usize,
9062 mut depth: fidl::encoding::Depth,
9063 ) -> fidl::Result<()> {
9064 decoder.debug_check_bounds::<Self>(offset);
9065 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9066 None => return Err(fidl::Error::NotNullable),
9067 Some(len) => len,
9068 };
9069 if len == 0 {
9071 return Ok(());
9072 };
9073 depth.increment()?;
9074 let envelope_size = 8;
9075 let bytes_len = len * envelope_size;
9076 let offset = decoder.out_of_line_offset(bytes_len)?;
9077 let mut _next_ordinal_to_read = 0;
9079 let mut next_offset = offset;
9080 let end_offset = offset + bytes_len;
9081 _next_ordinal_to_read += 1;
9082 if next_offset >= end_offset {
9083 return Ok(());
9084 }
9085
9086 while _next_ordinal_to_read < 1 {
9088 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9089 _next_ordinal_to_read += 1;
9090 next_offset += envelope_size;
9091 }
9092
9093 let next_out_of_line = decoder.next_out_of_line();
9094 let handles_before = decoder.remaining_handles();
9095 if let Some((inlined, num_bytes, num_handles)) =
9096 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9097 {
9098 let member_inline_size =
9099 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
9100 decoder.context,
9101 );
9102 if inlined != (member_inline_size <= 4) {
9103 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9104 }
9105 let inner_offset;
9106 let mut inner_depth = depth.clone();
9107 if inlined {
9108 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9109 inner_offset = next_offset;
9110 } else {
9111 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9112 inner_depth.increment()?;
9113 }
9114 let val_ref = self
9115 .address
9116 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
9117 fidl::decode!(
9118 fidl::encoding::BoundedString<64>,
9119 D,
9120 val_ref,
9121 decoder,
9122 inner_offset,
9123 inner_depth
9124 )?;
9125 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9126 {
9127 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9128 }
9129 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9130 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9131 }
9132 }
9133
9134 next_offset += envelope_size;
9135 _next_ordinal_to_read += 1;
9136 if next_offset >= end_offset {
9137 return Ok(());
9138 }
9139
9140 while _next_ordinal_to_read < 2 {
9142 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9143 _next_ordinal_to_read += 1;
9144 next_offset += envelope_size;
9145 }
9146
9147 let next_out_of_line = decoder.next_out_of_line();
9148 let handles_before = decoder.remaining_handles();
9149 if let Some((inlined, num_bytes, num_handles)) =
9150 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9151 {
9152 let member_inline_size =
9153 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9154 if inlined != (member_inline_size <= 4) {
9155 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9156 }
9157 let inner_offset;
9158 let mut inner_depth = depth.clone();
9159 if inlined {
9160 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9161 inner_offset = next_offset;
9162 } else {
9163 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9164 inner_depth.increment()?;
9165 }
9166 let val_ref =
9167 self.duration_since_last_update.get_or_insert_with(|| fidl::new_empty!(i64, D));
9168 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9169 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9170 {
9171 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9172 }
9173 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9174 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9175 }
9176 }
9177
9178 next_offset += envelope_size;
9179 _next_ordinal_to_read += 1;
9180 if next_offset >= end_offset {
9181 return Ok(());
9182 }
9183
9184 while _next_ordinal_to_read < 3 {
9186 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9187 _next_ordinal_to_read += 1;
9188 next_offset += envelope_size;
9189 }
9190
9191 let next_out_of_line = decoder.next_out_of_line();
9192 let handles_before = decoder.remaining_handles();
9193 if let Some((inlined, num_bytes, num_handles)) =
9194 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9195 {
9196 let member_inline_size =
9197 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9198 if inlined != (member_inline_size <= 4) {
9199 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9200 }
9201 let inner_offset;
9202 let mut inner_depth = depth.clone();
9203 if inlined {
9204 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9205 inner_offset = next_offset;
9206 } else {
9207 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9208 inner_depth.increment()?;
9209 }
9210 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
9211 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9212 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9213 {
9214 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9215 }
9216 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9217 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9218 }
9219 }
9220
9221 next_offset += envelope_size;
9222 _next_ordinal_to_read += 1;
9223 if next_offset >= end_offset {
9224 return Ok(());
9225 }
9226
9227 while _next_ordinal_to_read < 4 {
9229 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9230 _next_ordinal_to_read += 1;
9231 next_offset += envelope_size;
9232 }
9233
9234 let next_out_of_line = decoder.next_out_of_line();
9235 let handles_before = decoder.remaining_handles();
9236 if let Some((inlined, num_bytes, num_handles)) =
9237 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9238 {
9239 let member_inline_size =
9240 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9241 if inlined != (member_inline_size <= 4) {
9242 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9243 }
9244 let inner_offset;
9245 let mut inner_depth = depth.clone();
9246 if inlined {
9247 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9248 inner_offset = next_offset;
9249 } else {
9250 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9251 inner_depth.increment()?;
9252 }
9253 let val_ref = self
9254 .managed_address_config_flag
9255 .get_or_insert_with(|| fidl::new_empty!(bool, D));
9256 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9257 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9258 {
9259 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9260 }
9261 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9262 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9263 }
9264 }
9265
9266 next_offset += envelope_size;
9267 _next_ordinal_to_read += 1;
9268 if next_offset >= end_offset {
9269 return Ok(());
9270 }
9271
9272 while _next_ordinal_to_read < 5 {
9274 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9275 _next_ordinal_to_read += 1;
9276 next_offset += envelope_size;
9277 }
9278
9279 let next_out_of_line = decoder.next_out_of_line();
9280 let handles_before = decoder.remaining_handles();
9281 if let Some((inlined, num_bytes, num_handles)) =
9282 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9283 {
9284 let member_inline_size =
9285 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9286 if inlined != (member_inline_size <= 4) {
9287 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9288 }
9289 let inner_offset;
9290 let mut inner_depth = depth.clone();
9291 if inlined {
9292 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9293 inner_offset = next_offset;
9294 } else {
9295 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9296 inner_depth.increment()?;
9297 }
9298 let val_ref =
9299 self.other_config_flag.get_or_insert_with(|| fidl::new_empty!(bool, D));
9300 fidl::decode!(bool, 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 < 6 {
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 <bool 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.snac_router_flag.get_or_insert_with(|| fidl::new_empty!(bool, D));
9344 fidl::decode!(bool, 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 < 7 {
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 <bool 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 = self.is_local_device.get_or_insert_with(|| fidl::new_empty!(bool, D));
9387 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9388 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9389 {
9390 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9391 }
9392 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9393 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9394 }
9395 }
9396
9397 next_offset += envelope_size;
9398 _next_ordinal_to_read += 1;
9399 if next_offset >= end_offset {
9400 return Ok(());
9401 }
9402
9403 while _next_ordinal_to_read < 8 {
9405 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9406 _next_ordinal_to_read += 1;
9407 next_offset += envelope_size;
9408 }
9409
9410 let next_out_of_line = decoder.next_out_of_line();
9411 let handles_before = decoder.remaining_handles();
9412 if let Some((inlined, num_bytes, num_handles)) =
9413 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9414 {
9415 let member_inline_size =
9416 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9417 if inlined != (member_inline_size <= 4) {
9418 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9419 }
9420 let inner_offset;
9421 let mut inner_depth = depth.clone();
9422 if inlined {
9423 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9424 inner_offset = next_offset;
9425 } else {
9426 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9427 inner_depth.increment()?;
9428 }
9429 let val_ref = self.is_reachable.get_or_insert_with(|| fidl::new_empty!(bool, D));
9430 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9431 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9432 {
9433 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9434 }
9435 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9436 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9437 }
9438 }
9439
9440 next_offset += envelope_size;
9441 _next_ordinal_to_read += 1;
9442 if next_offset >= end_offset {
9443 return Ok(());
9444 }
9445
9446 while _next_ordinal_to_read < 9 {
9448 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9449 _next_ordinal_to_read += 1;
9450 next_offset += envelope_size;
9451 }
9452
9453 let next_out_of_line = decoder.next_out_of_line();
9454 let handles_before = decoder.remaining_handles();
9455 if let Some((inlined, num_bytes, num_handles)) =
9456 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9457 {
9458 let member_inline_size =
9459 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9460 if inlined != (member_inline_size <= 4) {
9461 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9462 }
9463 let inner_offset;
9464 let mut inner_depth = depth.clone();
9465 if inlined {
9466 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9467 inner_offset = next_offset;
9468 } else {
9469 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9470 inner_depth.increment()?;
9471 }
9472 let val_ref = self.is_peer_br.get_or_insert_with(|| fidl::new_empty!(bool, D));
9473 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9474 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9475 {
9476 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9477 }
9478 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9479 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9480 }
9481 }
9482
9483 next_offset += envelope_size;
9484
9485 while next_offset < end_offset {
9487 _next_ordinal_to_read += 1;
9488 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9489 next_offset += envelope_size;
9490 }
9491
9492 Ok(())
9493 }
9494 }
9495
9496 impl ChannelInfo {
9497 #[inline(always)]
9498 fn max_ordinal_present(&self) -> u64 {
9499 if let Some(_) = self.masked_by_regulatory_domain {
9500 return 6;
9501 }
9502 if let Some(_) = self.spectrum_bandwidth_hz {
9503 return 5;
9504 }
9505 if let Some(_) = self.spectrum_center_frequency_hz {
9506 return 4;
9507 }
9508 if let Some(_) = self.max_transmit_power_dbm {
9509 return 3;
9510 }
9511 if let Some(_) = self.id {
9512 return 2;
9513 }
9514 if let Some(_) = self.index {
9515 return 1;
9516 }
9517 0
9518 }
9519 }
9520
9521 impl fidl::encoding::ValueTypeMarker for ChannelInfo {
9522 type Borrowed<'a> = &'a Self;
9523 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9524 value
9525 }
9526 }
9527
9528 unsafe impl fidl::encoding::TypeMarker for ChannelInfo {
9529 type Owned = Self;
9530
9531 #[inline(always)]
9532 fn inline_align(_context: fidl::encoding::Context) -> usize {
9533 8
9534 }
9535
9536 #[inline(always)]
9537 fn inline_size(_context: fidl::encoding::Context) -> usize {
9538 16
9539 }
9540 }
9541
9542 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChannelInfo, D>
9543 for &ChannelInfo
9544 {
9545 unsafe fn encode(
9546 self,
9547 encoder: &mut fidl::encoding::Encoder<'_, D>,
9548 offset: usize,
9549 mut depth: fidl::encoding::Depth,
9550 ) -> fidl::Result<()> {
9551 encoder.debug_check_bounds::<ChannelInfo>(offset);
9552 let max_ordinal: u64 = self.max_ordinal_present();
9554 encoder.write_num(max_ordinal, offset);
9555 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9556 if max_ordinal == 0 {
9558 return Ok(());
9559 }
9560 depth.increment()?;
9561 let envelope_size = 8;
9562 let bytes_len = max_ordinal as usize * envelope_size;
9563 #[allow(unused_variables)]
9564 let offset = encoder.out_of_line_offset(bytes_len);
9565 let mut _prev_end_offset: usize = 0;
9566 if 1 > max_ordinal {
9567 return Ok(());
9568 }
9569
9570 let cur_offset: usize = (1 - 1) * envelope_size;
9573
9574 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9576
9577 fidl::encoding::encode_in_envelope_optional::<u16, D>(
9582 self.index.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
9583 encoder,
9584 offset + cur_offset,
9585 depth,
9586 )?;
9587
9588 _prev_end_offset = cur_offset + envelope_size;
9589 if 2 > max_ordinal {
9590 return Ok(());
9591 }
9592
9593 let cur_offset: usize = (2 - 1) * envelope_size;
9596
9597 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9599
9600 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<16>, D>(
9605 self.id.as_ref().map(
9606 <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow,
9607 ),
9608 encoder,
9609 offset + cur_offset,
9610 depth,
9611 )?;
9612
9613 _prev_end_offset = cur_offset + envelope_size;
9614 if 3 > max_ordinal {
9615 return Ok(());
9616 }
9617
9618 let cur_offset: usize = (3 - 1) * envelope_size;
9621
9622 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9624
9625 fidl::encoding::encode_in_envelope_optional::<i8, D>(
9630 self.max_transmit_power_dbm
9631 .as_ref()
9632 .map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
9633 encoder,
9634 offset + cur_offset,
9635 depth,
9636 )?;
9637
9638 _prev_end_offset = cur_offset + envelope_size;
9639 if 4 > max_ordinal {
9640 return Ok(());
9641 }
9642
9643 let cur_offset: usize = (4 - 1) * envelope_size;
9646
9647 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9649
9650 fidl::encoding::encode_in_envelope_optional::<u64, D>(
9655 self.spectrum_center_frequency_hz
9656 .as_ref()
9657 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9658 encoder,
9659 offset + cur_offset,
9660 depth,
9661 )?;
9662
9663 _prev_end_offset = cur_offset + envelope_size;
9664 if 5 > max_ordinal {
9665 return Ok(());
9666 }
9667
9668 let cur_offset: usize = (5 - 1) * envelope_size;
9671
9672 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9674
9675 fidl::encoding::encode_in_envelope_optional::<u64, D>(
9680 self.spectrum_bandwidth_hz
9681 .as_ref()
9682 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9683 encoder,
9684 offset + cur_offset,
9685 depth,
9686 )?;
9687
9688 _prev_end_offset = cur_offset + envelope_size;
9689 if 6 > max_ordinal {
9690 return Ok(());
9691 }
9692
9693 let cur_offset: usize = (6 - 1) * envelope_size;
9696
9697 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9699
9700 fidl::encoding::encode_in_envelope_optional::<bool, D>(
9705 self.masked_by_regulatory_domain
9706 .as_ref()
9707 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9708 encoder,
9709 offset + cur_offset,
9710 depth,
9711 )?;
9712
9713 _prev_end_offset = cur_offset + envelope_size;
9714
9715 Ok(())
9716 }
9717 }
9718
9719 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChannelInfo {
9720 #[inline(always)]
9721 fn new_empty() -> Self {
9722 Self::default()
9723 }
9724
9725 unsafe fn decode(
9726 &mut self,
9727 decoder: &mut fidl::encoding::Decoder<'_, D>,
9728 offset: usize,
9729 mut depth: fidl::encoding::Depth,
9730 ) -> fidl::Result<()> {
9731 decoder.debug_check_bounds::<Self>(offset);
9732 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9733 None => return Err(fidl::Error::NotNullable),
9734 Some(len) => len,
9735 };
9736 if len == 0 {
9738 return Ok(());
9739 };
9740 depth.increment()?;
9741 let envelope_size = 8;
9742 let bytes_len = len * envelope_size;
9743 let offset = decoder.out_of_line_offset(bytes_len)?;
9744 let mut _next_ordinal_to_read = 0;
9746 let mut next_offset = offset;
9747 let end_offset = offset + bytes_len;
9748 _next_ordinal_to_read += 1;
9749 if next_offset >= end_offset {
9750 return Ok(());
9751 }
9752
9753 while _next_ordinal_to_read < 1 {
9755 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9756 _next_ordinal_to_read += 1;
9757 next_offset += envelope_size;
9758 }
9759
9760 let next_out_of_line = decoder.next_out_of_line();
9761 let handles_before = decoder.remaining_handles();
9762 if let Some((inlined, num_bytes, num_handles)) =
9763 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9764 {
9765 let member_inline_size =
9766 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9767 if inlined != (member_inline_size <= 4) {
9768 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9769 }
9770 let inner_offset;
9771 let mut inner_depth = depth.clone();
9772 if inlined {
9773 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9774 inner_offset = next_offset;
9775 } else {
9776 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9777 inner_depth.increment()?;
9778 }
9779 let val_ref = self.index.get_or_insert_with(|| fidl::new_empty!(u16, D));
9780 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
9781 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9782 {
9783 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9784 }
9785 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9786 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9787 }
9788 }
9789
9790 next_offset += envelope_size;
9791 _next_ordinal_to_read += 1;
9792 if next_offset >= end_offset {
9793 return Ok(());
9794 }
9795
9796 while _next_ordinal_to_read < 2 {
9798 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9799 _next_ordinal_to_read += 1;
9800 next_offset += envelope_size;
9801 }
9802
9803 let next_out_of_line = decoder.next_out_of_line();
9804 let handles_before = decoder.remaining_handles();
9805 if let Some((inlined, num_bytes, num_handles)) =
9806 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9807 {
9808 let member_inline_size =
9809 <fidl::encoding::BoundedString<16> as fidl::encoding::TypeMarker>::inline_size(
9810 decoder.context,
9811 );
9812 if inlined != (member_inline_size <= 4) {
9813 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9814 }
9815 let inner_offset;
9816 let mut inner_depth = depth.clone();
9817 if inlined {
9818 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9819 inner_offset = next_offset;
9820 } else {
9821 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9822 inner_depth.increment()?;
9823 }
9824 let val_ref = self
9825 .id
9826 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<16>, D));
9827 fidl::decode!(
9828 fidl::encoding::BoundedString<16>,
9829 D,
9830 val_ref,
9831 decoder,
9832 inner_offset,
9833 inner_depth
9834 )?;
9835 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9836 {
9837 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9838 }
9839 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9840 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9841 }
9842 }
9843
9844 next_offset += envelope_size;
9845 _next_ordinal_to_read += 1;
9846 if next_offset >= end_offset {
9847 return Ok(());
9848 }
9849
9850 while _next_ordinal_to_read < 3 {
9852 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9853 _next_ordinal_to_read += 1;
9854 next_offset += envelope_size;
9855 }
9856
9857 let next_out_of_line = decoder.next_out_of_line();
9858 let handles_before = decoder.remaining_handles();
9859 if let Some((inlined, num_bytes, num_handles)) =
9860 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9861 {
9862 let member_inline_size =
9863 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9864 if inlined != (member_inline_size <= 4) {
9865 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9866 }
9867 let inner_offset;
9868 let mut inner_depth = depth.clone();
9869 if inlined {
9870 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9871 inner_offset = next_offset;
9872 } else {
9873 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9874 inner_depth.increment()?;
9875 }
9876 let val_ref =
9877 self.max_transmit_power_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
9878 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
9879 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9880 {
9881 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9882 }
9883 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9884 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9885 }
9886 }
9887
9888 next_offset += envelope_size;
9889 _next_ordinal_to_read += 1;
9890 if next_offset >= end_offset {
9891 return Ok(());
9892 }
9893
9894 while _next_ordinal_to_read < 4 {
9896 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9897 _next_ordinal_to_read += 1;
9898 next_offset += envelope_size;
9899 }
9900
9901 let next_out_of_line = decoder.next_out_of_line();
9902 let handles_before = decoder.remaining_handles();
9903 if let Some((inlined, num_bytes, num_handles)) =
9904 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9905 {
9906 let member_inline_size =
9907 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9908 if inlined != (member_inline_size <= 4) {
9909 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9910 }
9911 let inner_offset;
9912 let mut inner_depth = depth.clone();
9913 if inlined {
9914 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9915 inner_offset = next_offset;
9916 } else {
9917 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9918 inner_depth.increment()?;
9919 }
9920 let val_ref = self
9921 .spectrum_center_frequency_hz
9922 .get_or_insert_with(|| fidl::new_empty!(u64, D));
9923 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9924 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9925 {
9926 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9927 }
9928 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9929 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9930 }
9931 }
9932
9933 next_offset += envelope_size;
9934 _next_ordinal_to_read += 1;
9935 if next_offset >= end_offset {
9936 return Ok(());
9937 }
9938
9939 while _next_ordinal_to_read < 5 {
9941 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9942 _next_ordinal_to_read += 1;
9943 next_offset += envelope_size;
9944 }
9945
9946 let next_out_of_line = decoder.next_out_of_line();
9947 let handles_before = decoder.remaining_handles();
9948 if let Some((inlined, num_bytes, num_handles)) =
9949 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9950 {
9951 let member_inline_size =
9952 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9953 if inlined != (member_inline_size <= 4) {
9954 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9955 }
9956 let inner_offset;
9957 let mut inner_depth = depth.clone();
9958 if inlined {
9959 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9960 inner_offset = next_offset;
9961 } else {
9962 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9963 inner_depth.increment()?;
9964 }
9965 let val_ref =
9966 self.spectrum_bandwidth_hz.get_or_insert_with(|| fidl::new_empty!(u64, D));
9967 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9968 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9969 {
9970 return Err(fidl::Error::InvalidNumBytesInEnvelope);
9971 }
9972 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9973 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9974 }
9975 }
9976
9977 next_offset += envelope_size;
9978 _next_ordinal_to_read += 1;
9979 if next_offset >= end_offset {
9980 return Ok(());
9981 }
9982
9983 while _next_ordinal_to_read < 6 {
9985 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9986 _next_ordinal_to_read += 1;
9987 next_offset += envelope_size;
9988 }
9989
9990 let next_out_of_line = decoder.next_out_of_line();
9991 let handles_before = decoder.remaining_handles();
9992 if let Some((inlined, num_bytes, num_handles)) =
9993 fidl::encoding::decode_envelope_header(decoder, next_offset)?
9994 {
9995 let member_inline_size =
9996 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9997 if inlined != (member_inline_size <= 4) {
9998 return Err(fidl::Error::InvalidInlineBitInEnvelope);
9999 }
10000 let inner_offset;
10001 let mut inner_depth = depth.clone();
10002 if inlined {
10003 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10004 inner_offset = next_offset;
10005 } else {
10006 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10007 inner_depth.increment()?;
10008 }
10009 let val_ref = self
10010 .masked_by_regulatory_domain
10011 .get_or_insert_with(|| fidl::new_empty!(bool, D));
10012 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10013 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10014 {
10015 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10016 }
10017 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10018 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10019 }
10020 }
10021
10022 next_offset += envelope_size;
10023
10024 while next_offset < end_offset {
10026 _next_ordinal_to_read += 1;
10027 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10028 next_offset += envelope_size;
10029 }
10030
10031 Ok(())
10032 }
10033 }
10034
10035 impl CommissioningDataset {
10036 #[inline(always)]
10037 fn max_ordinal_present(&self) -> u64 {
10038 if let Some(_) = self.has_extra_tlv {
10039 return 9;
10040 }
10041 if let Some(_) = self.is_joiner_udp_port_set {
10042 return 8;
10043 }
10044 if let Some(_) = self.is_steering_data_set {
10045 return 7;
10046 }
10047 if let Some(_) = self.is_session_id_set {
10048 return 6;
10049 }
10050 if let Some(_) = self.is_locator_set {
10051 return 5;
10052 }
10053 if let Some(_) = self.joiner_udp_port {
10054 return 4;
10055 }
10056 if let Some(_) = self.steering_data {
10057 return 3;
10058 }
10059 if let Some(_) = self.session_id {
10060 return 2;
10061 }
10062 if let Some(_) = self.locator {
10063 return 1;
10064 }
10065 0
10066 }
10067 }
10068
10069 impl fidl::encoding::ValueTypeMarker for CommissioningDataset {
10070 type Borrowed<'a> = &'a Self;
10071 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10072 value
10073 }
10074 }
10075
10076 unsafe impl fidl::encoding::TypeMarker for CommissioningDataset {
10077 type Owned = Self;
10078
10079 #[inline(always)]
10080 fn inline_align(_context: fidl::encoding::Context) -> usize {
10081 8
10082 }
10083
10084 #[inline(always)]
10085 fn inline_size(_context: fidl::encoding::Context) -> usize {
10086 16
10087 }
10088 }
10089
10090 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CommissioningDataset, D>
10091 for &CommissioningDataset
10092 {
10093 unsafe fn encode(
10094 self,
10095 encoder: &mut fidl::encoding::Encoder<'_, D>,
10096 offset: usize,
10097 mut depth: fidl::encoding::Depth,
10098 ) -> fidl::Result<()> {
10099 encoder.debug_check_bounds::<CommissioningDataset>(offset);
10100 let max_ordinal: u64 = self.max_ordinal_present();
10102 encoder.write_num(max_ordinal, offset);
10103 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10104 if max_ordinal == 0 {
10106 return Ok(());
10107 }
10108 depth.increment()?;
10109 let envelope_size = 8;
10110 let bytes_len = max_ordinal as usize * envelope_size;
10111 #[allow(unused_variables)]
10112 let offset = encoder.out_of_line_offset(bytes_len);
10113 let mut _prev_end_offset: usize = 0;
10114 if 1 > max_ordinal {
10115 return Ok(());
10116 }
10117
10118 let cur_offset: usize = (1 - 1) * envelope_size;
10121
10122 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10124
10125 fidl::encoding::encode_in_envelope_optional::<u16, D>(
10130 self.locator.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10131 encoder,
10132 offset + cur_offset,
10133 depth,
10134 )?;
10135
10136 _prev_end_offset = cur_offset + envelope_size;
10137 if 2 > max_ordinal {
10138 return Ok(());
10139 }
10140
10141 let cur_offset: usize = (2 - 1) * envelope_size;
10144
10145 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10147
10148 fidl::encoding::encode_in_envelope_optional::<u16, D>(
10153 self.session_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10154 encoder,
10155 offset + cur_offset,
10156 depth,
10157 )?;
10158
10159 _prev_end_offset = cur_offset + envelope_size;
10160 if 3 > max_ordinal {
10161 return Ok(());
10162 }
10163
10164 let cur_offset: usize = (3 - 1) * envelope_size;
10167
10168 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10170
10171 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 16>, D>(
10176 self.steering_data.as_ref().map(
10177 <fidl::encoding::Vector<u8, 16> as fidl::encoding::ValueTypeMarker>::borrow,
10178 ),
10179 encoder,
10180 offset + cur_offset,
10181 depth,
10182 )?;
10183
10184 _prev_end_offset = cur_offset + envelope_size;
10185 if 4 > max_ordinal {
10186 return Ok(());
10187 }
10188
10189 let cur_offset: usize = (4 - 1) * envelope_size;
10192
10193 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10195
10196 fidl::encoding::encode_in_envelope_optional::<u16, D>(
10201 self.joiner_udp_port.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10202 encoder,
10203 offset + cur_offset,
10204 depth,
10205 )?;
10206
10207 _prev_end_offset = cur_offset + envelope_size;
10208 if 5 > max_ordinal {
10209 return Ok(());
10210 }
10211
10212 let cur_offset: usize = (5 - 1) * envelope_size;
10215
10216 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10218
10219 fidl::encoding::encode_in_envelope_optional::<bool, D>(
10224 self.is_locator_set.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10225 encoder,
10226 offset + cur_offset,
10227 depth,
10228 )?;
10229
10230 _prev_end_offset = cur_offset + envelope_size;
10231 if 6 > max_ordinal {
10232 return Ok(());
10233 }
10234
10235 let cur_offset: usize = (6 - 1) * envelope_size;
10238
10239 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10241
10242 fidl::encoding::encode_in_envelope_optional::<bool, D>(
10247 self.is_session_id_set
10248 .as_ref()
10249 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10250 encoder,
10251 offset + cur_offset,
10252 depth,
10253 )?;
10254
10255 _prev_end_offset = cur_offset + envelope_size;
10256 if 7 > max_ordinal {
10257 return Ok(());
10258 }
10259
10260 let cur_offset: usize = (7 - 1) * envelope_size;
10263
10264 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10266
10267 fidl::encoding::encode_in_envelope_optional::<bool, D>(
10272 self.is_steering_data_set
10273 .as_ref()
10274 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10275 encoder,
10276 offset + cur_offset,
10277 depth,
10278 )?;
10279
10280 _prev_end_offset = cur_offset + envelope_size;
10281 if 8 > max_ordinal {
10282 return Ok(());
10283 }
10284
10285 let cur_offset: usize = (8 - 1) * envelope_size;
10288
10289 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10291
10292 fidl::encoding::encode_in_envelope_optional::<bool, D>(
10297 self.is_joiner_udp_port_set
10298 .as_ref()
10299 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10300 encoder,
10301 offset + cur_offset,
10302 depth,
10303 )?;
10304
10305 _prev_end_offset = cur_offset + envelope_size;
10306 if 9 > max_ordinal {
10307 return Ok(());
10308 }
10309
10310 let cur_offset: usize = (9 - 1) * envelope_size;
10313
10314 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10316
10317 fidl::encoding::encode_in_envelope_optional::<bool, D>(
10322 self.has_extra_tlv.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10323 encoder,
10324 offset + cur_offset,
10325 depth,
10326 )?;
10327
10328 _prev_end_offset = cur_offset + envelope_size;
10329
10330 Ok(())
10331 }
10332 }
10333
10334 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CommissioningDataset {
10335 #[inline(always)]
10336 fn new_empty() -> Self {
10337 Self::default()
10338 }
10339
10340 unsafe fn decode(
10341 &mut self,
10342 decoder: &mut fidl::encoding::Decoder<'_, D>,
10343 offset: usize,
10344 mut depth: fidl::encoding::Depth,
10345 ) -> fidl::Result<()> {
10346 decoder.debug_check_bounds::<Self>(offset);
10347 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10348 None => return Err(fidl::Error::NotNullable),
10349 Some(len) => len,
10350 };
10351 if len == 0 {
10353 return Ok(());
10354 };
10355 depth.increment()?;
10356 let envelope_size = 8;
10357 let bytes_len = len * envelope_size;
10358 let offset = decoder.out_of_line_offset(bytes_len)?;
10359 let mut _next_ordinal_to_read = 0;
10361 let mut next_offset = offset;
10362 let end_offset = offset + bytes_len;
10363 _next_ordinal_to_read += 1;
10364 if next_offset >= end_offset {
10365 return Ok(());
10366 }
10367
10368 while _next_ordinal_to_read < 1 {
10370 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10371 _next_ordinal_to_read += 1;
10372 next_offset += envelope_size;
10373 }
10374
10375 let next_out_of_line = decoder.next_out_of_line();
10376 let handles_before = decoder.remaining_handles();
10377 if let Some((inlined, num_bytes, num_handles)) =
10378 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10379 {
10380 let member_inline_size =
10381 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10382 if inlined != (member_inline_size <= 4) {
10383 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10384 }
10385 let inner_offset;
10386 let mut inner_depth = depth.clone();
10387 if inlined {
10388 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10389 inner_offset = next_offset;
10390 } else {
10391 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10392 inner_depth.increment()?;
10393 }
10394 let val_ref = self.locator.get_or_insert_with(|| fidl::new_empty!(u16, D));
10395 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10396 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10397 {
10398 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10399 }
10400 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10401 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10402 }
10403 }
10404
10405 next_offset += envelope_size;
10406 _next_ordinal_to_read += 1;
10407 if next_offset >= end_offset {
10408 return Ok(());
10409 }
10410
10411 while _next_ordinal_to_read < 2 {
10413 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10414 _next_ordinal_to_read += 1;
10415 next_offset += envelope_size;
10416 }
10417
10418 let next_out_of_line = decoder.next_out_of_line();
10419 let handles_before = decoder.remaining_handles();
10420 if let Some((inlined, num_bytes, num_handles)) =
10421 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10422 {
10423 let member_inline_size =
10424 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10425 if inlined != (member_inline_size <= 4) {
10426 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10427 }
10428 let inner_offset;
10429 let mut inner_depth = depth.clone();
10430 if inlined {
10431 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10432 inner_offset = next_offset;
10433 } else {
10434 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10435 inner_depth.increment()?;
10436 }
10437 let val_ref = self.session_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
10438 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10439 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10440 {
10441 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10442 }
10443 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10444 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10445 }
10446 }
10447
10448 next_offset += envelope_size;
10449 _next_ordinal_to_read += 1;
10450 if next_offset >= end_offset {
10451 return Ok(());
10452 }
10453
10454 while _next_ordinal_to_read < 3 {
10456 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10457 _next_ordinal_to_read += 1;
10458 next_offset += envelope_size;
10459 }
10460
10461 let next_out_of_line = decoder.next_out_of_line();
10462 let handles_before = decoder.remaining_handles();
10463 if let Some((inlined, num_bytes, num_handles)) =
10464 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10465 {
10466 let member_inline_size =
10467 <fidl::encoding::Vector<u8, 16> as fidl::encoding::TypeMarker>::inline_size(
10468 decoder.context,
10469 );
10470 if inlined != (member_inline_size <= 4) {
10471 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10472 }
10473 let inner_offset;
10474 let mut inner_depth = depth.clone();
10475 if inlined {
10476 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10477 inner_offset = next_offset;
10478 } else {
10479 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10480 inner_depth.increment()?;
10481 }
10482 let val_ref = self
10483 .steering_data
10484 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 16>, D));
10485 fidl::decode!(fidl::encoding::Vector<u8, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
10486 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10487 {
10488 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10489 }
10490 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10491 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10492 }
10493 }
10494
10495 next_offset += envelope_size;
10496 _next_ordinal_to_read += 1;
10497 if next_offset >= end_offset {
10498 return Ok(());
10499 }
10500
10501 while _next_ordinal_to_read < 4 {
10503 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10504 _next_ordinal_to_read += 1;
10505 next_offset += envelope_size;
10506 }
10507
10508 let next_out_of_line = decoder.next_out_of_line();
10509 let handles_before = decoder.remaining_handles();
10510 if let Some((inlined, num_bytes, num_handles)) =
10511 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10512 {
10513 let member_inline_size =
10514 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10515 if inlined != (member_inline_size <= 4) {
10516 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10517 }
10518 let inner_offset;
10519 let mut inner_depth = depth.clone();
10520 if inlined {
10521 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10522 inner_offset = next_offset;
10523 } else {
10524 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10525 inner_depth.increment()?;
10526 }
10527 let val_ref = self.joiner_udp_port.get_or_insert_with(|| fidl::new_empty!(u16, D));
10528 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10529 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10530 {
10531 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10532 }
10533 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10534 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10535 }
10536 }
10537
10538 next_offset += envelope_size;
10539 _next_ordinal_to_read += 1;
10540 if next_offset >= end_offset {
10541 return Ok(());
10542 }
10543
10544 while _next_ordinal_to_read < 5 {
10546 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10547 _next_ordinal_to_read += 1;
10548 next_offset += envelope_size;
10549 }
10550
10551 let next_out_of_line = decoder.next_out_of_line();
10552 let handles_before = decoder.remaining_handles();
10553 if let Some((inlined, num_bytes, num_handles)) =
10554 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10555 {
10556 let member_inline_size =
10557 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10558 if inlined != (member_inline_size <= 4) {
10559 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10560 }
10561 let inner_offset;
10562 let mut inner_depth = depth.clone();
10563 if inlined {
10564 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10565 inner_offset = next_offset;
10566 } else {
10567 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10568 inner_depth.increment()?;
10569 }
10570 let val_ref = self.is_locator_set.get_or_insert_with(|| fidl::new_empty!(bool, D));
10571 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10572 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10573 {
10574 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10575 }
10576 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10577 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10578 }
10579 }
10580
10581 next_offset += envelope_size;
10582 _next_ordinal_to_read += 1;
10583 if next_offset >= end_offset {
10584 return Ok(());
10585 }
10586
10587 while _next_ordinal_to_read < 6 {
10589 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10590 _next_ordinal_to_read += 1;
10591 next_offset += envelope_size;
10592 }
10593
10594 let next_out_of_line = decoder.next_out_of_line();
10595 let handles_before = decoder.remaining_handles();
10596 if let Some((inlined, num_bytes, num_handles)) =
10597 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10598 {
10599 let member_inline_size =
10600 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10601 if inlined != (member_inline_size <= 4) {
10602 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10603 }
10604 let inner_offset;
10605 let mut inner_depth = depth.clone();
10606 if inlined {
10607 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10608 inner_offset = next_offset;
10609 } else {
10610 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10611 inner_depth.increment()?;
10612 }
10613 let val_ref =
10614 self.is_session_id_set.get_or_insert_with(|| fidl::new_empty!(bool, D));
10615 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10616 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10617 {
10618 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10619 }
10620 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10621 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10622 }
10623 }
10624
10625 next_offset += envelope_size;
10626 _next_ordinal_to_read += 1;
10627 if next_offset >= end_offset {
10628 return Ok(());
10629 }
10630
10631 while _next_ordinal_to_read < 7 {
10633 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10634 _next_ordinal_to_read += 1;
10635 next_offset += envelope_size;
10636 }
10637
10638 let next_out_of_line = decoder.next_out_of_line();
10639 let handles_before = decoder.remaining_handles();
10640 if let Some((inlined, num_bytes, num_handles)) =
10641 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10642 {
10643 let member_inline_size =
10644 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10645 if inlined != (member_inline_size <= 4) {
10646 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10647 }
10648 let inner_offset;
10649 let mut inner_depth = depth.clone();
10650 if inlined {
10651 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10652 inner_offset = next_offset;
10653 } else {
10654 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10655 inner_depth.increment()?;
10656 }
10657 let val_ref =
10658 self.is_steering_data_set.get_or_insert_with(|| fidl::new_empty!(bool, D));
10659 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10660 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10661 {
10662 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10663 }
10664 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10665 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10666 }
10667 }
10668
10669 next_offset += envelope_size;
10670 _next_ordinal_to_read += 1;
10671 if next_offset >= end_offset {
10672 return Ok(());
10673 }
10674
10675 while _next_ordinal_to_read < 8 {
10677 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10678 _next_ordinal_to_read += 1;
10679 next_offset += envelope_size;
10680 }
10681
10682 let next_out_of_line = decoder.next_out_of_line();
10683 let handles_before = decoder.remaining_handles();
10684 if let Some((inlined, num_bytes, num_handles)) =
10685 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10686 {
10687 let member_inline_size =
10688 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10689 if inlined != (member_inline_size <= 4) {
10690 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10691 }
10692 let inner_offset;
10693 let mut inner_depth = depth.clone();
10694 if inlined {
10695 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10696 inner_offset = next_offset;
10697 } else {
10698 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10699 inner_depth.increment()?;
10700 }
10701 let val_ref =
10702 self.is_joiner_udp_port_set.get_or_insert_with(|| fidl::new_empty!(bool, D));
10703 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10704 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10705 {
10706 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10707 }
10708 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10709 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10710 }
10711 }
10712
10713 next_offset += envelope_size;
10714 _next_ordinal_to_read += 1;
10715 if next_offset >= end_offset {
10716 return Ok(());
10717 }
10718
10719 while _next_ordinal_to_read < 9 {
10721 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10722 _next_ordinal_to_read += 1;
10723 next_offset += envelope_size;
10724 }
10725
10726 let next_out_of_line = decoder.next_out_of_line();
10727 let handles_before = decoder.remaining_handles();
10728 if let Some((inlined, num_bytes, num_handles)) =
10729 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10730 {
10731 let member_inline_size =
10732 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10733 if inlined != (member_inline_size <= 4) {
10734 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10735 }
10736 let inner_offset;
10737 let mut inner_depth = depth.clone();
10738 if inlined {
10739 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10740 inner_offset = next_offset;
10741 } else {
10742 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10743 inner_depth.increment()?;
10744 }
10745 let val_ref = self.has_extra_tlv.get_or_insert_with(|| fidl::new_empty!(bool, D));
10746 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10747 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10748 {
10749 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10750 }
10751 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10752 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10753 }
10754 }
10755
10756 next_offset += envelope_size;
10757
10758 while next_offset < end_offset {
10760 _next_ordinal_to_read += 1;
10761 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10762 next_offset += envelope_size;
10763 }
10764
10765 Ok(())
10766 }
10767 }
10768
10769 impl Dhcp6PdInfo {
10770 #[inline(always)]
10771 fn max_ordinal_present(&self) -> u64 {
10772 if let Some(_) = self.hashed_pd_prefix {
10773 return 3;
10774 }
10775 if let Some(_) = self.pd_processed_ra_info {
10776 return 2;
10777 }
10778 if let Some(_) = self.dhcp6pd_state {
10779 return 1;
10780 }
10781 0
10782 }
10783 }
10784
10785 impl fidl::encoding::ValueTypeMarker for Dhcp6PdInfo {
10786 type Borrowed<'a> = &'a Self;
10787 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10788 value
10789 }
10790 }
10791
10792 unsafe impl fidl::encoding::TypeMarker for Dhcp6PdInfo {
10793 type Owned = Self;
10794
10795 #[inline(always)]
10796 fn inline_align(_context: fidl::encoding::Context) -> usize {
10797 8
10798 }
10799
10800 #[inline(always)]
10801 fn inline_size(_context: fidl::encoding::Context) -> usize {
10802 16
10803 }
10804 }
10805
10806 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Dhcp6PdInfo, D>
10807 for &Dhcp6PdInfo
10808 {
10809 unsafe fn encode(
10810 self,
10811 encoder: &mut fidl::encoding::Encoder<'_, D>,
10812 offset: usize,
10813 mut depth: fidl::encoding::Depth,
10814 ) -> fidl::Result<()> {
10815 encoder.debug_check_bounds::<Dhcp6PdInfo>(offset);
10816 let max_ordinal: u64 = self.max_ordinal_present();
10818 encoder.write_num(max_ordinal, offset);
10819 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10820 if max_ordinal == 0 {
10822 return Ok(());
10823 }
10824 depth.increment()?;
10825 let envelope_size = 8;
10826 let bytes_len = max_ordinal as usize * envelope_size;
10827 #[allow(unused_variables)]
10828 let offset = encoder.out_of_line_offset(bytes_len);
10829 let mut _prev_end_offset: usize = 0;
10830 if 1 > max_ordinal {
10831 return Ok(());
10832 }
10833
10834 let cur_offset: usize = (1 - 1) * envelope_size;
10837
10838 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10840
10841 fidl::encoding::encode_in_envelope_optional::<Dhcp6PdState, D>(
10846 self.dhcp6pd_state
10847 .as_ref()
10848 .map(<Dhcp6PdState as fidl::encoding::ValueTypeMarker>::borrow),
10849 encoder,
10850 offset + cur_offset,
10851 depth,
10852 )?;
10853
10854 _prev_end_offset = cur_offset + envelope_size;
10855 if 2 > max_ordinal {
10856 return Ok(());
10857 }
10858
10859 let cur_offset: usize = (2 - 1) * envelope_size;
10862
10863 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10865
10866 fidl::encoding::encode_in_envelope_optional::<PdProcessedRaInfo, D>(
10871 self.pd_processed_ra_info
10872 .as_ref()
10873 .map(<PdProcessedRaInfo as fidl::encoding::ValueTypeMarker>::borrow),
10874 encoder,
10875 offset + cur_offset,
10876 depth,
10877 )?;
10878
10879 _prev_end_offset = cur_offset + envelope_size;
10880 if 3 > max_ordinal {
10881 return Ok(());
10882 }
10883
10884 let cur_offset: usize = (3 - 1) * envelope_size;
10887
10888 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10890
10891 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
10896 self.hashed_pd_prefix.as_ref().map(
10897 <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
10898 ),
10899 encoder,
10900 offset + cur_offset,
10901 depth,
10902 )?;
10903
10904 _prev_end_offset = cur_offset + envelope_size;
10905
10906 Ok(())
10907 }
10908 }
10909
10910 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dhcp6PdInfo {
10911 #[inline(always)]
10912 fn new_empty() -> Self {
10913 Self::default()
10914 }
10915
10916 unsafe fn decode(
10917 &mut self,
10918 decoder: &mut fidl::encoding::Decoder<'_, D>,
10919 offset: usize,
10920 mut depth: fidl::encoding::Depth,
10921 ) -> fidl::Result<()> {
10922 decoder.debug_check_bounds::<Self>(offset);
10923 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10924 None => return Err(fidl::Error::NotNullable),
10925 Some(len) => len,
10926 };
10927 if len == 0 {
10929 return Ok(());
10930 };
10931 depth.increment()?;
10932 let envelope_size = 8;
10933 let bytes_len = len * envelope_size;
10934 let offset = decoder.out_of_line_offset(bytes_len)?;
10935 let mut _next_ordinal_to_read = 0;
10937 let mut next_offset = offset;
10938 let end_offset = offset + bytes_len;
10939 _next_ordinal_to_read += 1;
10940 if next_offset >= end_offset {
10941 return Ok(());
10942 }
10943
10944 while _next_ordinal_to_read < 1 {
10946 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10947 _next_ordinal_to_read += 1;
10948 next_offset += envelope_size;
10949 }
10950
10951 let next_out_of_line = decoder.next_out_of_line();
10952 let handles_before = decoder.remaining_handles();
10953 if let Some((inlined, num_bytes, num_handles)) =
10954 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10955 {
10956 let member_inline_size =
10957 <Dhcp6PdState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10958 if inlined != (member_inline_size <= 4) {
10959 return Err(fidl::Error::InvalidInlineBitInEnvelope);
10960 }
10961 let inner_offset;
10962 let mut inner_depth = depth.clone();
10963 if inlined {
10964 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10965 inner_offset = next_offset;
10966 } else {
10967 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10968 inner_depth.increment()?;
10969 }
10970 let val_ref =
10971 self.dhcp6pd_state.get_or_insert_with(|| fidl::new_empty!(Dhcp6PdState, D));
10972 fidl::decode!(Dhcp6PdState, D, val_ref, decoder, inner_offset, inner_depth)?;
10973 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10974 {
10975 return Err(fidl::Error::InvalidNumBytesInEnvelope);
10976 }
10977 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10978 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10979 }
10980 }
10981
10982 next_offset += envelope_size;
10983 _next_ordinal_to_read += 1;
10984 if next_offset >= end_offset {
10985 return Ok(());
10986 }
10987
10988 while _next_ordinal_to_read < 2 {
10990 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10991 _next_ordinal_to_read += 1;
10992 next_offset += envelope_size;
10993 }
10994
10995 let next_out_of_line = decoder.next_out_of_line();
10996 let handles_before = decoder.remaining_handles();
10997 if let Some((inlined, num_bytes, num_handles)) =
10998 fidl::encoding::decode_envelope_header(decoder, next_offset)?
10999 {
11000 let member_inline_size =
11001 <PdProcessedRaInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11002 if inlined != (member_inline_size <= 4) {
11003 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11004 }
11005 let inner_offset;
11006 let mut inner_depth = depth.clone();
11007 if inlined {
11008 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11009 inner_offset = next_offset;
11010 } else {
11011 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11012 inner_depth.increment()?;
11013 }
11014 let val_ref = self
11015 .pd_processed_ra_info
11016 .get_or_insert_with(|| fidl::new_empty!(PdProcessedRaInfo, D));
11017 fidl::decode!(PdProcessedRaInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
11018 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11019 {
11020 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11021 }
11022 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11023 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11024 }
11025 }
11026
11027 next_offset += envelope_size;
11028 _next_ordinal_to_read += 1;
11029 if next_offset >= end_offset {
11030 return Ok(());
11031 }
11032
11033 while _next_ordinal_to_read < 3 {
11035 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11036 _next_ordinal_to_read += 1;
11037 next_offset += envelope_size;
11038 }
11039
11040 let next_out_of_line = decoder.next_out_of_line();
11041 let handles_before = decoder.remaining_handles();
11042 if let Some((inlined, num_bytes, num_handles)) =
11043 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11044 {
11045 let member_inline_size =
11046 <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
11047 decoder.context,
11048 );
11049 if inlined != (member_inline_size <= 4) {
11050 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11051 }
11052 let inner_offset;
11053 let mut inner_depth = depth.clone();
11054 if inlined {
11055 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11056 inner_offset = next_offset;
11057 } else {
11058 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11059 inner_depth.increment()?;
11060 }
11061 let val_ref = self
11062 .hashed_pd_prefix
11063 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
11064 fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
11065 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11066 {
11067 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11068 }
11069 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11070 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11071 }
11072 }
11073
11074 next_offset += envelope_size;
11075
11076 while next_offset < end_offset {
11078 _next_ordinal_to_read += 1;
11079 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11080 next_offset += envelope_size;
11081 }
11082
11083 Ok(())
11084 }
11085 }
11086
11087 impl DnsTxtEntry {
11088 #[inline(always)]
11089 fn max_ordinal_present(&self) -> u64 {
11090 if let Some(_) = self.value {
11091 return 2;
11092 }
11093 if let Some(_) = self.key {
11094 return 1;
11095 }
11096 0
11097 }
11098 }
11099
11100 impl fidl::encoding::ValueTypeMarker for DnsTxtEntry {
11101 type Borrowed<'a> = &'a Self;
11102 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11103 value
11104 }
11105 }
11106
11107 unsafe impl fidl::encoding::TypeMarker for DnsTxtEntry {
11108 type Owned = Self;
11109
11110 #[inline(always)]
11111 fn inline_align(_context: fidl::encoding::Context) -> usize {
11112 8
11113 }
11114
11115 #[inline(always)]
11116 fn inline_size(_context: fidl::encoding::Context) -> usize {
11117 16
11118 }
11119 }
11120
11121 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DnsTxtEntry, D>
11122 for &DnsTxtEntry
11123 {
11124 unsafe fn encode(
11125 self,
11126 encoder: &mut fidl::encoding::Encoder<'_, D>,
11127 offset: usize,
11128 mut depth: fidl::encoding::Depth,
11129 ) -> fidl::Result<()> {
11130 encoder.debug_check_bounds::<DnsTxtEntry>(offset);
11131 let max_ordinal: u64 = self.max_ordinal_present();
11133 encoder.write_num(max_ordinal, offset);
11134 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11135 if max_ordinal == 0 {
11137 return Ok(());
11138 }
11139 depth.increment()?;
11140 let envelope_size = 8;
11141 let bytes_len = max_ordinal as usize * envelope_size;
11142 #[allow(unused_variables)]
11143 let offset = encoder.out_of_line_offset(bytes_len);
11144 let mut _prev_end_offset: usize = 0;
11145 if 1 > max_ordinal {
11146 return Ok(());
11147 }
11148
11149 let cur_offset: usize = (1 - 1) * envelope_size;
11152
11153 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11155
11156 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
11161 self.key.as_ref().map(
11162 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
11163 ),
11164 encoder,
11165 offset + cur_offset,
11166 depth,
11167 )?;
11168
11169 _prev_end_offset = cur_offset + envelope_size;
11170 if 2 > max_ordinal {
11171 return Ok(());
11172 }
11173
11174 let cur_offset: usize = (2 - 1) * envelope_size;
11177
11178 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11180
11181 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 253>, D>(
11186 self.value.as_ref().map(
11187 <fidl::encoding::Vector<u8, 253> as fidl::encoding::ValueTypeMarker>::borrow,
11188 ),
11189 encoder,
11190 offset + cur_offset,
11191 depth,
11192 )?;
11193
11194 _prev_end_offset = cur_offset + envelope_size;
11195
11196 Ok(())
11197 }
11198 }
11199
11200 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DnsTxtEntry {
11201 #[inline(always)]
11202 fn new_empty() -> Self {
11203 Self::default()
11204 }
11205
11206 unsafe fn decode(
11207 &mut self,
11208 decoder: &mut fidl::encoding::Decoder<'_, D>,
11209 offset: usize,
11210 mut depth: fidl::encoding::Depth,
11211 ) -> fidl::Result<()> {
11212 decoder.debug_check_bounds::<Self>(offset);
11213 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11214 None => return Err(fidl::Error::NotNullable),
11215 Some(len) => len,
11216 };
11217 if len == 0 {
11219 return Ok(());
11220 };
11221 depth.increment()?;
11222 let envelope_size = 8;
11223 let bytes_len = len * envelope_size;
11224 let offset = decoder.out_of_line_offset(bytes_len)?;
11225 let mut _next_ordinal_to_read = 0;
11227 let mut next_offset = offset;
11228 let end_offset = offset + bytes_len;
11229 _next_ordinal_to_read += 1;
11230 if next_offset >= end_offset {
11231 return Ok(());
11232 }
11233
11234 while _next_ordinal_to_read < 1 {
11236 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11237 _next_ordinal_to_read += 1;
11238 next_offset += envelope_size;
11239 }
11240
11241 let next_out_of_line = decoder.next_out_of_line();
11242 let handles_before = decoder.remaining_handles();
11243 if let Some((inlined, num_bytes, num_handles)) =
11244 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11245 {
11246 let member_inline_size =
11247 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
11248 decoder.context,
11249 );
11250 if inlined != (member_inline_size <= 4) {
11251 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11252 }
11253 let inner_offset;
11254 let mut inner_depth = depth.clone();
11255 if inlined {
11256 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11257 inner_offset = next_offset;
11258 } else {
11259 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11260 inner_depth.increment()?;
11261 }
11262 let val_ref = self
11263 .key
11264 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
11265 fidl::decode!(
11266 fidl::encoding::BoundedString<64>,
11267 D,
11268 val_ref,
11269 decoder,
11270 inner_offset,
11271 inner_depth
11272 )?;
11273 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11274 {
11275 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11276 }
11277 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11278 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11279 }
11280 }
11281
11282 next_offset += envelope_size;
11283 _next_ordinal_to_read += 1;
11284 if next_offset >= end_offset {
11285 return Ok(());
11286 }
11287
11288 while _next_ordinal_to_read < 2 {
11290 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11291 _next_ordinal_to_read += 1;
11292 next_offset += envelope_size;
11293 }
11294
11295 let next_out_of_line = decoder.next_out_of_line();
11296 let handles_before = decoder.remaining_handles();
11297 if let Some((inlined, num_bytes, num_handles)) =
11298 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11299 {
11300 let member_inline_size =
11301 <fidl::encoding::Vector<u8, 253> as fidl::encoding::TypeMarker>::inline_size(
11302 decoder.context,
11303 );
11304 if inlined != (member_inline_size <= 4) {
11305 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11306 }
11307 let inner_offset;
11308 let mut inner_depth = depth.clone();
11309 if inlined {
11310 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11311 inner_offset = next_offset;
11312 } else {
11313 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11314 inner_depth.increment()?;
11315 }
11316 let val_ref = self
11317 .value
11318 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 253>, D));
11319 fidl::decode!(fidl::encoding::Vector<u8, 253>, D, val_ref, decoder, inner_offset, inner_depth)?;
11320 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11321 {
11322 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11323 }
11324 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11325 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11326 }
11327 }
11328
11329 next_offset += envelope_size;
11330
11331 while next_offset < end_offset {
11333 _next_ordinal_to_read += 1;
11334 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11335 next_offset += envelope_size;
11336 }
11337
11338 Ok(())
11339 }
11340 }
11341
11342 impl DnssdCounters {
11343 #[inline(always)]
11344 fn max_ordinal_present(&self) -> u64 {
11345 if let Some(_) = self.upstream_dns_counters {
11346 return 8;
11347 }
11348 if let Some(_) = self.resolved_by_srp {
11349 return 7;
11350 }
11351 if let Some(_) = self.other_response {
11352 return 6;
11353 }
11354 if let Some(_) = self.not_implemented_response {
11355 return 5;
11356 }
11357 if let Some(_) = self.name_error_response {
11358 return 4;
11359 }
11360 if let Some(_) = self.format_error_response {
11361 return 3;
11362 }
11363 if let Some(_) = self.server_failure_response {
11364 return 2;
11365 }
11366 if let Some(_) = self.success_response {
11367 return 1;
11368 }
11369 0
11370 }
11371 }
11372
11373 impl fidl::encoding::ValueTypeMarker for DnssdCounters {
11374 type Borrowed<'a> = &'a Self;
11375 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11376 value
11377 }
11378 }
11379
11380 unsafe impl fidl::encoding::TypeMarker for DnssdCounters {
11381 type Owned = Self;
11382
11383 #[inline(always)]
11384 fn inline_align(_context: fidl::encoding::Context) -> usize {
11385 8
11386 }
11387
11388 #[inline(always)]
11389 fn inline_size(_context: fidl::encoding::Context) -> usize {
11390 16
11391 }
11392 }
11393
11394 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DnssdCounters, D>
11395 for &DnssdCounters
11396 {
11397 unsafe fn encode(
11398 self,
11399 encoder: &mut fidl::encoding::Encoder<'_, D>,
11400 offset: usize,
11401 mut depth: fidl::encoding::Depth,
11402 ) -> fidl::Result<()> {
11403 encoder.debug_check_bounds::<DnssdCounters>(offset);
11404 let max_ordinal: u64 = self.max_ordinal_present();
11406 encoder.write_num(max_ordinal, offset);
11407 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11408 if max_ordinal == 0 {
11410 return Ok(());
11411 }
11412 depth.increment()?;
11413 let envelope_size = 8;
11414 let bytes_len = max_ordinal as usize * envelope_size;
11415 #[allow(unused_variables)]
11416 let offset = encoder.out_of_line_offset(bytes_len);
11417 let mut _prev_end_offset: usize = 0;
11418 if 1 > max_ordinal {
11419 return Ok(());
11420 }
11421
11422 let cur_offset: usize = (1 - 1) * envelope_size;
11425
11426 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11428
11429 fidl::encoding::encode_in_envelope_optional::<u32, D>(
11434 self.success_response
11435 .as_ref()
11436 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
11437 encoder,
11438 offset + cur_offset,
11439 depth,
11440 )?;
11441
11442 _prev_end_offset = cur_offset + envelope_size;
11443 if 2 > max_ordinal {
11444 return Ok(());
11445 }
11446
11447 let cur_offset: usize = (2 - 1) * envelope_size;
11450
11451 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11453
11454 fidl::encoding::encode_in_envelope_optional::<u32, D>(
11459 self.server_failure_response
11460 .as_ref()
11461 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
11462 encoder,
11463 offset + cur_offset,
11464 depth,
11465 )?;
11466
11467 _prev_end_offset = cur_offset + envelope_size;
11468 if 3 > max_ordinal {
11469 return Ok(());
11470 }
11471
11472 let cur_offset: usize = (3 - 1) * envelope_size;
11475
11476 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11478
11479 fidl::encoding::encode_in_envelope_optional::<u32, D>(
11484 self.format_error_response
11485 .as_ref()
11486 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
11487 encoder,
11488 offset + cur_offset,
11489 depth,
11490 )?;
11491
11492 _prev_end_offset = cur_offset + envelope_size;
11493 if 4 > max_ordinal {
11494 return Ok(());
11495 }
11496
11497 let cur_offset: usize = (4 - 1) * envelope_size;
11500
11501 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11503
11504 fidl::encoding::encode_in_envelope_optional::<u32, D>(
11509 self.name_error_response
11510 .as_ref()
11511 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
11512 encoder,
11513 offset + cur_offset,
11514 depth,
11515 )?;
11516
11517 _prev_end_offset = cur_offset + envelope_size;
11518 if 5 > max_ordinal {
11519 return Ok(());
11520 }
11521
11522 let cur_offset: usize = (5 - 1) * envelope_size;
11525
11526 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11528
11529 fidl::encoding::encode_in_envelope_optional::<u32, D>(
11534 self.not_implemented_response
11535 .as_ref()
11536 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
11537 encoder,
11538 offset + cur_offset,
11539 depth,
11540 )?;
11541
11542 _prev_end_offset = cur_offset + envelope_size;
11543 if 6 > max_ordinal {
11544 return Ok(());
11545 }
11546
11547 let cur_offset: usize = (6 - 1) * envelope_size;
11550
11551 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11553
11554 fidl::encoding::encode_in_envelope_optional::<u32, D>(
11559 self.other_response.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
11560 encoder,
11561 offset + cur_offset,
11562 depth,
11563 )?;
11564
11565 _prev_end_offset = cur_offset + envelope_size;
11566 if 7 > max_ordinal {
11567 return Ok(());
11568 }
11569
11570 let cur_offset: usize = (7 - 1) * envelope_size;
11573
11574 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11576
11577 fidl::encoding::encode_in_envelope_optional::<u32, D>(
11582 self.resolved_by_srp.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
11583 encoder,
11584 offset + cur_offset,
11585 depth,
11586 )?;
11587
11588 _prev_end_offset = cur_offset + envelope_size;
11589 if 8 > max_ordinal {
11590 return Ok(());
11591 }
11592
11593 let cur_offset: usize = (8 - 1) * envelope_size;
11596
11597 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11599
11600 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsCounters, D>(
11605 self.upstream_dns_counters
11606 .as_ref()
11607 .map(<UpstreamDnsCounters as fidl::encoding::ValueTypeMarker>::borrow),
11608 encoder,
11609 offset + cur_offset,
11610 depth,
11611 )?;
11612
11613 _prev_end_offset = cur_offset + envelope_size;
11614
11615 Ok(())
11616 }
11617 }
11618
11619 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DnssdCounters {
11620 #[inline(always)]
11621 fn new_empty() -> Self {
11622 Self::default()
11623 }
11624
11625 unsafe fn decode(
11626 &mut self,
11627 decoder: &mut fidl::encoding::Decoder<'_, D>,
11628 offset: usize,
11629 mut depth: fidl::encoding::Depth,
11630 ) -> fidl::Result<()> {
11631 decoder.debug_check_bounds::<Self>(offset);
11632 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11633 None => return Err(fidl::Error::NotNullable),
11634 Some(len) => len,
11635 };
11636 if len == 0 {
11638 return Ok(());
11639 };
11640 depth.increment()?;
11641 let envelope_size = 8;
11642 let bytes_len = len * envelope_size;
11643 let offset = decoder.out_of_line_offset(bytes_len)?;
11644 let mut _next_ordinal_to_read = 0;
11646 let mut next_offset = offset;
11647 let end_offset = offset + bytes_len;
11648 _next_ordinal_to_read += 1;
11649 if next_offset >= end_offset {
11650 return Ok(());
11651 }
11652
11653 while _next_ordinal_to_read < 1 {
11655 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11656 _next_ordinal_to_read += 1;
11657 next_offset += envelope_size;
11658 }
11659
11660 let next_out_of_line = decoder.next_out_of_line();
11661 let handles_before = decoder.remaining_handles();
11662 if let Some((inlined, num_bytes, num_handles)) =
11663 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11664 {
11665 let member_inline_size =
11666 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11667 if inlined != (member_inline_size <= 4) {
11668 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11669 }
11670 let inner_offset;
11671 let mut inner_depth = depth.clone();
11672 if inlined {
11673 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11674 inner_offset = next_offset;
11675 } else {
11676 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11677 inner_depth.increment()?;
11678 }
11679 let val_ref = self.success_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
11680 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
11681 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11682 {
11683 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11684 }
11685 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11686 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11687 }
11688 }
11689
11690 next_offset += envelope_size;
11691 _next_ordinal_to_read += 1;
11692 if next_offset >= end_offset {
11693 return Ok(());
11694 }
11695
11696 while _next_ordinal_to_read < 2 {
11698 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11699 _next_ordinal_to_read += 1;
11700 next_offset += envelope_size;
11701 }
11702
11703 let next_out_of_line = decoder.next_out_of_line();
11704 let handles_before = decoder.remaining_handles();
11705 if let Some((inlined, num_bytes, num_handles)) =
11706 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11707 {
11708 let member_inline_size =
11709 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11710 if inlined != (member_inline_size <= 4) {
11711 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11712 }
11713 let inner_offset;
11714 let mut inner_depth = depth.clone();
11715 if inlined {
11716 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11717 inner_offset = next_offset;
11718 } else {
11719 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11720 inner_depth.increment()?;
11721 }
11722 let val_ref =
11723 self.server_failure_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
11724 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
11725 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11726 {
11727 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11728 }
11729 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11730 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11731 }
11732 }
11733
11734 next_offset += envelope_size;
11735 _next_ordinal_to_read += 1;
11736 if next_offset >= end_offset {
11737 return Ok(());
11738 }
11739
11740 while _next_ordinal_to_read < 3 {
11742 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11743 _next_ordinal_to_read += 1;
11744 next_offset += envelope_size;
11745 }
11746
11747 let next_out_of_line = decoder.next_out_of_line();
11748 let handles_before = decoder.remaining_handles();
11749 if let Some((inlined, num_bytes, num_handles)) =
11750 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11751 {
11752 let member_inline_size =
11753 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11754 if inlined != (member_inline_size <= 4) {
11755 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11756 }
11757 let inner_offset;
11758 let mut inner_depth = depth.clone();
11759 if inlined {
11760 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11761 inner_offset = next_offset;
11762 } else {
11763 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11764 inner_depth.increment()?;
11765 }
11766 let val_ref =
11767 self.format_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
11768 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
11769 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11770 {
11771 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11772 }
11773 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11774 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11775 }
11776 }
11777
11778 next_offset += envelope_size;
11779 _next_ordinal_to_read += 1;
11780 if next_offset >= end_offset {
11781 return Ok(());
11782 }
11783
11784 while _next_ordinal_to_read < 4 {
11786 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11787 _next_ordinal_to_read += 1;
11788 next_offset += envelope_size;
11789 }
11790
11791 let next_out_of_line = decoder.next_out_of_line();
11792 let handles_before = decoder.remaining_handles();
11793 if let Some((inlined, num_bytes, num_handles)) =
11794 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11795 {
11796 let member_inline_size =
11797 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11798 if inlined != (member_inline_size <= 4) {
11799 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11800 }
11801 let inner_offset;
11802 let mut inner_depth = depth.clone();
11803 if inlined {
11804 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11805 inner_offset = next_offset;
11806 } else {
11807 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11808 inner_depth.increment()?;
11809 }
11810 let val_ref =
11811 self.name_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
11812 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
11813 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11814 {
11815 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11816 }
11817 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11818 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11819 }
11820 }
11821
11822 next_offset += envelope_size;
11823 _next_ordinal_to_read += 1;
11824 if next_offset >= end_offset {
11825 return Ok(());
11826 }
11827
11828 while _next_ordinal_to_read < 5 {
11830 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11831 _next_ordinal_to_read += 1;
11832 next_offset += envelope_size;
11833 }
11834
11835 let next_out_of_line = decoder.next_out_of_line();
11836 let handles_before = decoder.remaining_handles();
11837 if let Some((inlined, num_bytes, num_handles)) =
11838 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11839 {
11840 let member_inline_size =
11841 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11842 if inlined != (member_inline_size <= 4) {
11843 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11844 }
11845 let inner_offset;
11846 let mut inner_depth = depth.clone();
11847 if inlined {
11848 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11849 inner_offset = next_offset;
11850 } else {
11851 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11852 inner_depth.increment()?;
11853 }
11854 let val_ref =
11855 self.not_implemented_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
11856 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
11857 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11858 {
11859 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11860 }
11861 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11862 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11863 }
11864 }
11865
11866 next_offset += envelope_size;
11867 _next_ordinal_to_read += 1;
11868 if next_offset >= end_offset {
11869 return Ok(());
11870 }
11871
11872 while _next_ordinal_to_read < 6 {
11874 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11875 _next_ordinal_to_read += 1;
11876 next_offset += envelope_size;
11877 }
11878
11879 let next_out_of_line = decoder.next_out_of_line();
11880 let handles_before = decoder.remaining_handles();
11881 if let Some((inlined, num_bytes, num_handles)) =
11882 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11883 {
11884 let member_inline_size =
11885 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11886 if inlined != (member_inline_size <= 4) {
11887 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11888 }
11889 let inner_offset;
11890 let mut inner_depth = depth.clone();
11891 if inlined {
11892 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11893 inner_offset = next_offset;
11894 } else {
11895 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11896 inner_depth.increment()?;
11897 }
11898 let val_ref = self.other_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
11899 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
11900 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11901 {
11902 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11903 }
11904 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11905 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11906 }
11907 }
11908
11909 next_offset += envelope_size;
11910 _next_ordinal_to_read += 1;
11911 if next_offset >= end_offset {
11912 return Ok(());
11913 }
11914
11915 while _next_ordinal_to_read < 7 {
11917 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11918 _next_ordinal_to_read += 1;
11919 next_offset += envelope_size;
11920 }
11921
11922 let next_out_of_line = decoder.next_out_of_line();
11923 let handles_before = decoder.remaining_handles();
11924 if let Some((inlined, num_bytes, num_handles)) =
11925 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11926 {
11927 let member_inline_size =
11928 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11929 if inlined != (member_inline_size <= 4) {
11930 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11931 }
11932 let inner_offset;
11933 let mut inner_depth = depth.clone();
11934 if inlined {
11935 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11936 inner_offset = next_offset;
11937 } else {
11938 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11939 inner_depth.increment()?;
11940 }
11941 let val_ref = self.resolved_by_srp.get_or_insert_with(|| fidl::new_empty!(u32, D));
11942 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
11943 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11944 {
11945 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11946 }
11947 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11948 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11949 }
11950 }
11951
11952 next_offset += envelope_size;
11953 _next_ordinal_to_read += 1;
11954 if next_offset >= end_offset {
11955 return Ok(());
11956 }
11957
11958 while _next_ordinal_to_read < 8 {
11960 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11961 _next_ordinal_to_read += 1;
11962 next_offset += envelope_size;
11963 }
11964
11965 let next_out_of_line = decoder.next_out_of_line();
11966 let handles_before = decoder.remaining_handles();
11967 if let Some((inlined, num_bytes, num_handles)) =
11968 fidl::encoding::decode_envelope_header(decoder, next_offset)?
11969 {
11970 let member_inline_size =
11971 <UpstreamDnsCounters as fidl::encoding::TypeMarker>::inline_size(
11972 decoder.context,
11973 );
11974 if inlined != (member_inline_size <= 4) {
11975 return Err(fidl::Error::InvalidInlineBitInEnvelope);
11976 }
11977 let inner_offset;
11978 let mut inner_depth = depth.clone();
11979 if inlined {
11980 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11981 inner_offset = next_offset;
11982 } else {
11983 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11984 inner_depth.increment()?;
11985 }
11986 let val_ref = self
11987 .upstream_dns_counters
11988 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsCounters, D));
11989 fidl::decode!(UpstreamDnsCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
11990 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11991 {
11992 return Err(fidl::Error::InvalidNumBytesInEnvelope);
11993 }
11994 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11995 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11996 }
11997 }
11998
11999 next_offset += envelope_size;
12000
12001 while next_offset < end_offset {
12003 _next_ordinal_to_read += 1;
12004 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12005 next_offset += envelope_size;
12006 }
12007
12008 Ok(())
12009 }
12010 }
12011
12012 impl EidCacheEntry {
12013 #[inline(always)]
12014 fn max_ordinal_present(&self) -> u64 {
12015 if let Some(_) = self.retry_delay {
12016 return 10;
12017 }
12018 if let Some(_) = self.timeout {
12019 return 9;
12020 }
12021 if let Some(_) = self.mesh_local_eid {
12022 return 8;
12023 }
12024 if let Some(_) = self.last_trans_time {
12025 return 7;
12026 }
12027 if let Some(_) = self.valid_last_trans {
12028 return 6;
12029 }
12030 if let Some(_) = self.ramp_down {
12031 return 5;
12032 }
12033 if let Some(_) = self.can_evict {
12034 return 4;
12035 }
12036 if let Some(_) = self.state {
12037 return 3;
12038 }
12039 if let Some(_) = self.rloc16 {
12040 return 2;
12041 }
12042 if let Some(_) = self.target {
12043 return 1;
12044 }
12045 0
12046 }
12047 }
12048
12049 impl fidl::encoding::ValueTypeMarker for EidCacheEntry {
12050 type Borrowed<'a> = &'a Self;
12051 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12052 value
12053 }
12054 }
12055
12056 unsafe impl fidl::encoding::TypeMarker for EidCacheEntry {
12057 type Owned = Self;
12058
12059 #[inline(always)]
12060 fn inline_align(_context: fidl::encoding::Context) -> usize {
12061 8
12062 }
12063
12064 #[inline(always)]
12065 fn inline_size(_context: fidl::encoding::Context) -> usize {
12066 16
12067 }
12068 }
12069
12070 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EidCacheEntry, D>
12071 for &EidCacheEntry
12072 {
12073 unsafe fn encode(
12074 self,
12075 encoder: &mut fidl::encoding::Encoder<'_, D>,
12076 offset: usize,
12077 mut depth: fidl::encoding::Depth,
12078 ) -> fidl::Result<()> {
12079 encoder.debug_check_bounds::<EidCacheEntry>(offset);
12080 let max_ordinal: u64 = self.max_ordinal_present();
12082 encoder.write_num(max_ordinal, offset);
12083 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12084 if max_ordinal == 0 {
12086 return Ok(());
12087 }
12088 depth.increment()?;
12089 let envelope_size = 8;
12090 let bytes_len = max_ordinal as usize * envelope_size;
12091 #[allow(unused_variables)]
12092 let offset = encoder.out_of_line_offset(bytes_len);
12093 let mut _prev_end_offset: usize = 0;
12094 if 1 > max_ordinal {
12095 return Ok(());
12096 }
12097
12098 let cur_offset: usize = (1 - 1) * envelope_size;
12101
12102 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12104
12105 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_common::Ipv6Address, D>(
12110 self.target.as_ref().map(<fidl_fuchsia_net_common::Ipv6Address as fidl::encoding::ValueTypeMarker>::borrow),
12111 encoder, offset + cur_offset, depth
12112 )?;
12113
12114 _prev_end_offset = cur_offset + envelope_size;
12115 if 2 > max_ordinal {
12116 return Ok(());
12117 }
12118
12119 let cur_offset: usize = (2 - 1) * envelope_size;
12122
12123 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12125
12126 fidl::encoding::encode_in_envelope_optional::<u16, D>(
12131 self.rloc16.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
12132 encoder,
12133 offset + cur_offset,
12134 depth,
12135 )?;
12136
12137 _prev_end_offset = cur_offset + envelope_size;
12138 if 3 > max_ordinal {
12139 return Ok(());
12140 }
12141
12142 let cur_offset: usize = (3 - 1) * envelope_size;
12145
12146 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12148
12149 fidl::encoding::encode_in_envelope_optional::<CacheEntryState, D>(
12154 self.state
12155 .as_ref()
12156 .map(<CacheEntryState as fidl::encoding::ValueTypeMarker>::borrow),
12157 encoder,
12158 offset + cur_offset,
12159 depth,
12160 )?;
12161
12162 _prev_end_offset = cur_offset + envelope_size;
12163 if 4 > max_ordinal {
12164 return Ok(());
12165 }
12166
12167 let cur_offset: usize = (4 - 1) * envelope_size;
12170
12171 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12173
12174 fidl::encoding::encode_in_envelope_optional::<bool, D>(
12179 self.can_evict.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12180 encoder,
12181 offset + cur_offset,
12182 depth,
12183 )?;
12184
12185 _prev_end_offset = cur_offset + envelope_size;
12186 if 5 > max_ordinal {
12187 return Ok(());
12188 }
12189
12190 let cur_offset: usize = (5 - 1) * envelope_size;
12193
12194 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12196
12197 fidl::encoding::encode_in_envelope_optional::<bool, D>(
12202 self.ramp_down.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12203 encoder,
12204 offset + cur_offset,
12205 depth,
12206 )?;
12207
12208 _prev_end_offset = cur_offset + envelope_size;
12209 if 6 > max_ordinal {
12210 return Ok(());
12211 }
12212
12213 let cur_offset: usize = (6 - 1) * envelope_size;
12216
12217 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12219
12220 fidl::encoding::encode_in_envelope_optional::<bool, D>(
12225 self.valid_last_trans
12226 .as_ref()
12227 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12228 encoder,
12229 offset + cur_offset,
12230 depth,
12231 )?;
12232
12233 _prev_end_offset = cur_offset + envelope_size;
12234 if 7 > max_ordinal {
12235 return Ok(());
12236 }
12237
12238 let cur_offset: usize = (7 - 1) * envelope_size;
12241
12242 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12244
12245 fidl::encoding::encode_in_envelope_optional::<i64, D>(
12250 self.last_trans_time.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12251 encoder,
12252 offset + cur_offset,
12253 depth,
12254 )?;
12255
12256 _prev_end_offset = cur_offset + envelope_size;
12257 if 8 > max_ordinal {
12258 return Ok(());
12259 }
12260
12261 let cur_offset: usize = (8 - 1) * envelope_size;
12264
12265 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12267
12268 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_common::Ipv6Address, D>(
12273 self.mesh_local_eid.as_ref().map(<fidl_fuchsia_net_common::Ipv6Address as fidl::encoding::ValueTypeMarker>::borrow),
12274 encoder, offset + cur_offset, depth
12275 )?;
12276
12277 _prev_end_offset = cur_offset + envelope_size;
12278 if 9 > max_ordinal {
12279 return Ok(());
12280 }
12281
12282 let cur_offset: usize = (9 - 1) * envelope_size;
12285
12286 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12288
12289 fidl::encoding::encode_in_envelope_optional::<i64, D>(
12294 self.timeout.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12295 encoder,
12296 offset + cur_offset,
12297 depth,
12298 )?;
12299
12300 _prev_end_offset = cur_offset + envelope_size;
12301 if 10 > max_ordinal {
12302 return Ok(());
12303 }
12304
12305 let cur_offset: usize = (10 - 1) * envelope_size;
12308
12309 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12311
12312 fidl::encoding::encode_in_envelope_optional::<i64, D>(
12317 self.retry_delay.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12318 encoder,
12319 offset + cur_offset,
12320 depth,
12321 )?;
12322
12323 _prev_end_offset = cur_offset + envelope_size;
12324
12325 Ok(())
12326 }
12327 }
12328
12329 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EidCacheEntry {
12330 #[inline(always)]
12331 fn new_empty() -> Self {
12332 Self::default()
12333 }
12334
12335 unsafe fn decode(
12336 &mut self,
12337 decoder: &mut fidl::encoding::Decoder<'_, D>,
12338 offset: usize,
12339 mut depth: fidl::encoding::Depth,
12340 ) -> fidl::Result<()> {
12341 decoder.debug_check_bounds::<Self>(offset);
12342 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12343 None => return Err(fidl::Error::NotNullable),
12344 Some(len) => len,
12345 };
12346 if len == 0 {
12348 return Ok(());
12349 };
12350 depth.increment()?;
12351 let envelope_size = 8;
12352 let bytes_len = len * envelope_size;
12353 let offset = decoder.out_of_line_offset(bytes_len)?;
12354 let mut _next_ordinal_to_read = 0;
12356 let mut next_offset = offset;
12357 let end_offset = offset + bytes_len;
12358 _next_ordinal_to_read += 1;
12359 if next_offset >= end_offset {
12360 return Ok(());
12361 }
12362
12363 while _next_ordinal_to_read < 1 {
12365 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12366 _next_ordinal_to_read += 1;
12367 next_offset += envelope_size;
12368 }
12369
12370 let next_out_of_line = decoder.next_out_of_line();
12371 let handles_before = decoder.remaining_handles();
12372 if let Some((inlined, num_bytes, num_handles)) =
12373 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12374 {
12375 let member_inline_size = <fidl_fuchsia_net_common::Ipv6Address as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12376 if inlined != (member_inline_size <= 4) {
12377 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12378 }
12379 let inner_offset;
12380 let mut inner_depth = depth.clone();
12381 if inlined {
12382 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12383 inner_offset = next_offset;
12384 } else {
12385 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12386 inner_depth.increment()?;
12387 }
12388 let val_ref = self.target.get_or_insert_with(|| {
12389 fidl::new_empty!(fidl_fuchsia_net_common::Ipv6Address, D)
12390 });
12391 fidl::decode!(
12392 fidl_fuchsia_net_common::Ipv6Address,
12393 D,
12394 val_ref,
12395 decoder,
12396 inner_offset,
12397 inner_depth
12398 )?;
12399 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12400 {
12401 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12402 }
12403 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12404 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12405 }
12406 }
12407
12408 next_offset += envelope_size;
12409 _next_ordinal_to_read += 1;
12410 if next_offset >= end_offset {
12411 return Ok(());
12412 }
12413
12414 while _next_ordinal_to_read < 2 {
12416 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12417 _next_ordinal_to_read += 1;
12418 next_offset += envelope_size;
12419 }
12420
12421 let next_out_of_line = decoder.next_out_of_line();
12422 let handles_before = decoder.remaining_handles();
12423 if let Some((inlined, num_bytes, num_handles)) =
12424 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12425 {
12426 let member_inline_size =
12427 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12428 if inlined != (member_inline_size <= 4) {
12429 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12430 }
12431 let inner_offset;
12432 let mut inner_depth = depth.clone();
12433 if inlined {
12434 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12435 inner_offset = next_offset;
12436 } else {
12437 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12438 inner_depth.increment()?;
12439 }
12440 let val_ref = self.rloc16.get_or_insert_with(|| fidl::new_empty!(u16, D));
12441 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
12442 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12443 {
12444 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12445 }
12446 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12447 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12448 }
12449 }
12450
12451 next_offset += envelope_size;
12452 _next_ordinal_to_read += 1;
12453 if next_offset >= end_offset {
12454 return Ok(());
12455 }
12456
12457 while _next_ordinal_to_read < 3 {
12459 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12460 _next_ordinal_to_read += 1;
12461 next_offset += envelope_size;
12462 }
12463
12464 let next_out_of_line = decoder.next_out_of_line();
12465 let handles_before = decoder.remaining_handles();
12466 if let Some((inlined, num_bytes, num_handles)) =
12467 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12468 {
12469 let member_inline_size =
12470 <CacheEntryState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12471 if inlined != (member_inline_size <= 4) {
12472 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12473 }
12474 let inner_offset;
12475 let mut inner_depth = depth.clone();
12476 if inlined {
12477 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12478 inner_offset = next_offset;
12479 } else {
12480 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12481 inner_depth.increment()?;
12482 }
12483 let val_ref =
12484 self.state.get_or_insert_with(|| fidl::new_empty!(CacheEntryState, D));
12485 fidl::decode!(CacheEntryState, D, val_ref, decoder, inner_offset, inner_depth)?;
12486 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12487 {
12488 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12489 }
12490 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12491 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12492 }
12493 }
12494
12495 next_offset += envelope_size;
12496 _next_ordinal_to_read += 1;
12497 if next_offset >= end_offset {
12498 return Ok(());
12499 }
12500
12501 while _next_ordinal_to_read < 4 {
12503 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12504 _next_ordinal_to_read += 1;
12505 next_offset += envelope_size;
12506 }
12507
12508 let next_out_of_line = decoder.next_out_of_line();
12509 let handles_before = decoder.remaining_handles();
12510 if let Some((inlined, num_bytes, num_handles)) =
12511 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12512 {
12513 let member_inline_size =
12514 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12515 if inlined != (member_inline_size <= 4) {
12516 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12517 }
12518 let inner_offset;
12519 let mut inner_depth = depth.clone();
12520 if inlined {
12521 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12522 inner_offset = next_offset;
12523 } else {
12524 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12525 inner_depth.increment()?;
12526 }
12527 let val_ref = self.can_evict.get_or_insert_with(|| fidl::new_empty!(bool, D));
12528 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
12529 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12530 {
12531 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12532 }
12533 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12534 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12535 }
12536 }
12537
12538 next_offset += envelope_size;
12539 _next_ordinal_to_read += 1;
12540 if next_offset >= end_offset {
12541 return Ok(());
12542 }
12543
12544 while _next_ordinal_to_read < 5 {
12546 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12547 _next_ordinal_to_read += 1;
12548 next_offset += envelope_size;
12549 }
12550
12551 let next_out_of_line = decoder.next_out_of_line();
12552 let handles_before = decoder.remaining_handles();
12553 if let Some((inlined, num_bytes, num_handles)) =
12554 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12555 {
12556 let member_inline_size =
12557 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12558 if inlined != (member_inline_size <= 4) {
12559 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12560 }
12561 let inner_offset;
12562 let mut inner_depth = depth.clone();
12563 if inlined {
12564 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12565 inner_offset = next_offset;
12566 } else {
12567 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12568 inner_depth.increment()?;
12569 }
12570 let val_ref = self.ramp_down.get_or_insert_with(|| fidl::new_empty!(bool, D));
12571 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
12572 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12573 {
12574 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12575 }
12576 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12577 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12578 }
12579 }
12580
12581 next_offset += envelope_size;
12582 _next_ordinal_to_read += 1;
12583 if next_offset >= end_offset {
12584 return Ok(());
12585 }
12586
12587 while _next_ordinal_to_read < 6 {
12589 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12590 _next_ordinal_to_read += 1;
12591 next_offset += envelope_size;
12592 }
12593
12594 let next_out_of_line = decoder.next_out_of_line();
12595 let handles_before = decoder.remaining_handles();
12596 if let Some((inlined, num_bytes, num_handles)) =
12597 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12598 {
12599 let member_inline_size =
12600 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12601 if inlined != (member_inline_size <= 4) {
12602 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12603 }
12604 let inner_offset;
12605 let mut inner_depth = depth.clone();
12606 if inlined {
12607 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12608 inner_offset = next_offset;
12609 } else {
12610 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12611 inner_depth.increment()?;
12612 }
12613 let val_ref =
12614 self.valid_last_trans.get_or_insert_with(|| fidl::new_empty!(bool, D));
12615 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
12616 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12617 {
12618 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12619 }
12620 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12621 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12622 }
12623 }
12624
12625 next_offset += envelope_size;
12626 _next_ordinal_to_read += 1;
12627 if next_offset >= end_offset {
12628 return Ok(());
12629 }
12630
12631 while _next_ordinal_to_read < 7 {
12633 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12634 _next_ordinal_to_read += 1;
12635 next_offset += envelope_size;
12636 }
12637
12638 let next_out_of_line = decoder.next_out_of_line();
12639 let handles_before = decoder.remaining_handles();
12640 if let Some((inlined, num_bytes, num_handles)) =
12641 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12642 {
12643 let member_inline_size =
12644 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12645 if inlined != (member_inline_size <= 4) {
12646 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12647 }
12648 let inner_offset;
12649 let mut inner_depth = depth.clone();
12650 if inlined {
12651 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12652 inner_offset = next_offset;
12653 } else {
12654 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12655 inner_depth.increment()?;
12656 }
12657 let val_ref = self.last_trans_time.get_or_insert_with(|| fidl::new_empty!(i64, D));
12658 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12659 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12660 {
12661 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12662 }
12663 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12664 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12665 }
12666 }
12667
12668 next_offset += envelope_size;
12669 _next_ordinal_to_read += 1;
12670 if next_offset >= end_offset {
12671 return Ok(());
12672 }
12673
12674 while _next_ordinal_to_read < 8 {
12676 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12677 _next_ordinal_to_read += 1;
12678 next_offset += envelope_size;
12679 }
12680
12681 let next_out_of_line = decoder.next_out_of_line();
12682 let handles_before = decoder.remaining_handles();
12683 if let Some((inlined, num_bytes, num_handles)) =
12684 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12685 {
12686 let member_inline_size = <fidl_fuchsia_net_common::Ipv6Address as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12687 if inlined != (member_inline_size <= 4) {
12688 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12689 }
12690 let inner_offset;
12691 let mut inner_depth = depth.clone();
12692 if inlined {
12693 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12694 inner_offset = next_offset;
12695 } else {
12696 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12697 inner_depth.increment()?;
12698 }
12699 let val_ref = self.mesh_local_eid.get_or_insert_with(|| {
12700 fidl::new_empty!(fidl_fuchsia_net_common::Ipv6Address, D)
12701 });
12702 fidl::decode!(
12703 fidl_fuchsia_net_common::Ipv6Address,
12704 D,
12705 val_ref,
12706 decoder,
12707 inner_offset,
12708 inner_depth
12709 )?;
12710 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12711 {
12712 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12713 }
12714 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12715 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12716 }
12717 }
12718
12719 next_offset += envelope_size;
12720 _next_ordinal_to_read += 1;
12721 if next_offset >= end_offset {
12722 return Ok(());
12723 }
12724
12725 while _next_ordinal_to_read < 9 {
12727 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12728 _next_ordinal_to_read += 1;
12729 next_offset += envelope_size;
12730 }
12731
12732 let next_out_of_line = decoder.next_out_of_line();
12733 let handles_before = decoder.remaining_handles();
12734 if let Some((inlined, num_bytes, num_handles)) =
12735 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12736 {
12737 let member_inline_size =
12738 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12739 if inlined != (member_inline_size <= 4) {
12740 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12741 }
12742 let inner_offset;
12743 let mut inner_depth = depth.clone();
12744 if inlined {
12745 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12746 inner_offset = next_offset;
12747 } else {
12748 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12749 inner_depth.increment()?;
12750 }
12751 let val_ref = self.timeout.get_or_insert_with(|| fidl::new_empty!(i64, D));
12752 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12753 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12754 {
12755 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12756 }
12757 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12758 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12759 }
12760 }
12761
12762 next_offset += envelope_size;
12763 _next_ordinal_to_read += 1;
12764 if next_offset >= end_offset {
12765 return Ok(());
12766 }
12767
12768 while _next_ordinal_to_read < 10 {
12770 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12771 _next_ordinal_to_read += 1;
12772 next_offset += envelope_size;
12773 }
12774
12775 let next_out_of_line = decoder.next_out_of_line();
12776 let handles_before = decoder.remaining_handles();
12777 if let Some((inlined, num_bytes, num_handles)) =
12778 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12779 {
12780 let member_inline_size =
12781 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12782 if inlined != (member_inline_size <= 4) {
12783 return Err(fidl::Error::InvalidInlineBitInEnvelope);
12784 }
12785 let inner_offset;
12786 let mut inner_depth = depth.clone();
12787 if inlined {
12788 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12789 inner_offset = next_offset;
12790 } else {
12791 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12792 inner_depth.increment()?;
12793 }
12794 let val_ref = self.retry_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
12795 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12796 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12797 {
12798 return Err(fidl::Error::InvalidNumBytesInEnvelope);
12799 }
12800 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12801 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12802 }
12803 }
12804
12805 next_offset += envelope_size;
12806
12807 while next_offset < end_offset {
12809 _next_ordinal_to_read += 1;
12810 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12811 next_offset += envelope_size;
12812 }
12813
12814 Ok(())
12815 }
12816 }
12817
12818 impl ExternalRoute {
12819 #[inline(always)]
12820 fn max_ordinal_present(&self) -> u64 {
12821 if let Some(_) = self.stable {
12822 return 3;
12823 }
12824 if let Some(_) = self.route_preference {
12825 return 2;
12826 }
12827 if let Some(_) = self.subnet {
12828 return 1;
12829 }
12830 0
12831 }
12832 }
12833
12834 impl fidl::encoding::ValueTypeMarker for ExternalRoute {
12835 type Borrowed<'a> = &'a Self;
12836 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12837 value
12838 }
12839 }
12840
12841 unsafe impl fidl::encoding::TypeMarker for ExternalRoute {
12842 type Owned = Self;
12843
12844 #[inline(always)]
12845 fn inline_align(_context: fidl::encoding::Context) -> usize {
12846 8
12847 }
12848
12849 #[inline(always)]
12850 fn inline_size(_context: fidl::encoding::Context) -> usize {
12851 16
12852 }
12853 }
12854
12855 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExternalRoute, D>
12856 for &ExternalRoute
12857 {
12858 unsafe fn encode(
12859 self,
12860 encoder: &mut fidl::encoding::Encoder<'_, D>,
12861 offset: usize,
12862 mut depth: fidl::encoding::Depth,
12863 ) -> fidl::Result<()> {
12864 encoder.debug_check_bounds::<ExternalRoute>(offset);
12865 let max_ordinal: u64 = self.max_ordinal_present();
12867 encoder.write_num(max_ordinal, offset);
12868 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12869 if max_ordinal == 0 {
12871 return Ok(());
12872 }
12873 depth.increment()?;
12874 let envelope_size = 8;
12875 let bytes_len = max_ordinal as usize * envelope_size;
12876 #[allow(unused_variables)]
12877 let offset = encoder.out_of_line_offset(bytes_len);
12878 let mut _prev_end_offset: usize = 0;
12879 if 1 > max_ordinal {
12880 return Ok(());
12881 }
12882
12883 let cur_offset: usize = (1 - 1) * envelope_size;
12886
12887 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12889
12890 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_common::Ipv6AddressWithPrefix, D>(
12895 self.subnet.as_ref().map(<fidl_fuchsia_net_common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow),
12896 encoder, offset + cur_offset, depth
12897 )?;
12898
12899 _prev_end_offset = cur_offset + envelope_size;
12900 if 2 > max_ordinal {
12901 return Ok(());
12902 }
12903
12904 let cur_offset: usize = (2 - 1) * envelope_size;
12907
12908 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12910
12911 fidl::encoding::encode_in_envelope_optional::<RoutePreference, D>(
12916 self.route_preference
12917 .as_ref()
12918 .map(<RoutePreference as fidl::encoding::ValueTypeMarker>::borrow),
12919 encoder,
12920 offset + cur_offset,
12921 depth,
12922 )?;
12923
12924 _prev_end_offset = cur_offset + envelope_size;
12925 if 3 > max_ordinal {
12926 return Ok(());
12927 }
12928
12929 let cur_offset: usize = (3 - 1) * envelope_size;
12932
12933 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12935
12936 fidl::encoding::encode_in_envelope_optional::<bool, D>(
12941 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12942 encoder,
12943 offset + cur_offset,
12944 depth,
12945 )?;
12946
12947 _prev_end_offset = cur_offset + envelope_size;
12948
12949 Ok(())
12950 }
12951 }
12952
12953 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExternalRoute {
12954 #[inline(always)]
12955 fn new_empty() -> Self {
12956 Self::default()
12957 }
12958
12959 unsafe fn decode(
12960 &mut self,
12961 decoder: &mut fidl::encoding::Decoder<'_, D>,
12962 offset: usize,
12963 mut depth: fidl::encoding::Depth,
12964 ) -> fidl::Result<()> {
12965 decoder.debug_check_bounds::<Self>(offset);
12966 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12967 None => return Err(fidl::Error::NotNullable),
12968 Some(len) => len,
12969 };
12970 if len == 0 {
12972 return Ok(());
12973 };
12974 depth.increment()?;
12975 let envelope_size = 8;
12976 let bytes_len = len * envelope_size;
12977 let offset = decoder.out_of_line_offset(bytes_len)?;
12978 let mut _next_ordinal_to_read = 0;
12980 let mut next_offset = offset;
12981 let end_offset = offset + bytes_len;
12982 _next_ordinal_to_read += 1;
12983 if next_offset >= end_offset {
12984 return Ok(());
12985 }
12986
12987 while _next_ordinal_to_read < 1 {
12989 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12990 _next_ordinal_to_read += 1;
12991 next_offset += envelope_size;
12992 }
12993
12994 let next_out_of_line = decoder.next_out_of_line();
12995 let handles_before = decoder.remaining_handles();
12996 if let Some((inlined, num_bytes, num_handles)) =
12997 fidl::encoding::decode_envelope_header(decoder, next_offset)?
12998 {
12999 let member_inline_size = <fidl_fuchsia_net_common::Ipv6AddressWithPrefix as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13000 if inlined != (member_inline_size <= 4) {
13001 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13002 }
13003 let inner_offset;
13004 let mut inner_depth = depth.clone();
13005 if inlined {
13006 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13007 inner_offset = next_offset;
13008 } else {
13009 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13010 inner_depth.increment()?;
13011 }
13012 let val_ref = self.subnet.get_or_insert_with(|| {
13013 fidl::new_empty!(fidl_fuchsia_net_common::Ipv6AddressWithPrefix, D)
13014 });
13015 fidl::decode!(
13016 fidl_fuchsia_net_common::Ipv6AddressWithPrefix,
13017 D,
13018 val_ref,
13019 decoder,
13020 inner_offset,
13021 inner_depth
13022 )?;
13023 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13024 {
13025 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13026 }
13027 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13028 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13029 }
13030 }
13031
13032 next_offset += envelope_size;
13033 _next_ordinal_to_read += 1;
13034 if next_offset >= end_offset {
13035 return Ok(());
13036 }
13037
13038 while _next_ordinal_to_read < 2 {
13040 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13041 _next_ordinal_to_read += 1;
13042 next_offset += envelope_size;
13043 }
13044
13045 let next_out_of_line = decoder.next_out_of_line();
13046 let handles_before = decoder.remaining_handles();
13047 if let Some((inlined, num_bytes, num_handles)) =
13048 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13049 {
13050 let member_inline_size =
13051 <RoutePreference as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13052 if inlined != (member_inline_size <= 4) {
13053 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13054 }
13055 let inner_offset;
13056 let mut inner_depth = depth.clone();
13057 if inlined {
13058 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13059 inner_offset = next_offset;
13060 } else {
13061 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13062 inner_depth.increment()?;
13063 }
13064 let val_ref = self
13065 .route_preference
13066 .get_or_insert_with(|| fidl::new_empty!(RoutePreference, D));
13067 fidl::decode!(RoutePreference, D, val_ref, decoder, inner_offset, inner_depth)?;
13068 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13069 {
13070 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13071 }
13072 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13073 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13074 }
13075 }
13076
13077 next_offset += envelope_size;
13078 _next_ordinal_to_read += 1;
13079 if next_offset >= end_offset {
13080 return Ok(());
13081 }
13082
13083 while _next_ordinal_to_read < 3 {
13085 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13086 _next_ordinal_to_read += 1;
13087 next_offset += envelope_size;
13088 }
13089
13090 let next_out_of_line = decoder.next_out_of_line();
13091 let handles_before = decoder.remaining_handles();
13092 if let Some((inlined, num_bytes, num_handles)) =
13093 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13094 {
13095 let member_inline_size =
13096 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13097 if inlined != (member_inline_size <= 4) {
13098 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13099 }
13100 let inner_offset;
13101 let mut inner_depth = depth.clone();
13102 if inlined {
13103 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13104 inner_offset = next_offset;
13105 } else {
13106 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13107 inner_depth.increment()?;
13108 }
13109 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
13110 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
13111 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13112 {
13113 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13114 }
13115 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13116 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13117 }
13118 }
13119
13120 next_offset += envelope_size;
13121
13122 while next_offset < end_offset {
13124 _next_ordinal_to_read += 1;
13125 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13126 next_offset += envelope_size;
13127 }
13128
13129 Ok(())
13130 }
13131 }
13132
13133 impl ExternalRouteConfig {
13134 #[inline(always)]
13135 fn max_ordinal_present(&self) -> u64 {
13136 if let Some(_) = self.adv_pio {
13137 return 7;
13138 }
13139 if let Some(_) = self.next_hop_is_this_device {
13140 return 6;
13141 }
13142 if let Some(_) = self.stable {
13143 return 5;
13144 }
13145 if let Some(_) = self.nat64 {
13146 return 4;
13147 }
13148 if let Some(_) = self.preference {
13149 return 3;
13150 }
13151 if let Some(_) = self.rloc16 {
13152 return 2;
13153 }
13154 if let Some(_) = self.prefix {
13155 return 1;
13156 }
13157 0
13158 }
13159 }
13160
13161 impl fidl::encoding::ValueTypeMarker for ExternalRouteConfig {
13162 type Borrowed<'a> = &'a Self;
13163 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13164 value
13165 }
13166 }
13167
13168 unsafe impl fidl::encoding::TypeMarker for ExternalRouteConfig {
13169 type Owned = Self;
13170
13171 #[inline(always)]
13172 fn inline_align(_context: fidl::encoding::Context) -> usize {
13173 8
13174 }
13175
13176 #[inline(always)]
13177 fn inline_size(_context: fidl::encoding::Context) -> usize {
13178 16
13179 }
13180 }
13181
13182 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ExternalRouteConfig, D>
13183 for &ExternalRouteConfig
13184 {
13185 unsafe fn encode(
13186 self,
13187 encoder: &mut fidl::encoding::Encoder<'_, D>,
13188 offset: usize,
13189 mut depth: fidl::encoding::Depth,
13190 ) -> fidl::Result<()> {
13191 encoder.debug_check_bounds::<ExternalRouteConfig>(offset);
13192 let max_ordinal: u64 = self.max_ordinal_present();
13194 encoder.write_num(max_ordinal, offset);
13195 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13196 if max_ordinal == 0 {
13198 return Ok(());
13199 }
13200 depth.increment()?;
13201 let envelope_size = 8;
13202 let bytes_len = max_ordinal as usize * envelope_size;
13203 #[allow(unused_variables)]
13204 let offset = encoder.out_of_line_offset(bytes_len);
13205 let mut _prev_end_offset: usize = 0;
13206 if 1 > max_ordinal {
13207 return Ok(());
13208 }
13209
13210 let cur_offset: usize = (1 - 1) * envelope_size;
13213
13214 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13216
13217 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
13222 self.prefix.as_ref().map(
13223 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
13224 ),
13225 encoder,
13226 offset + cur_offset,
13227 depth,
13228 )?;
13229
13230 _prev_end_offset = cur_offset + envelope_size;
13231 if 2 > max_ordinal {
13232 return Ok(());
13233 }
13234
13235 let cur_offset: usize = (2 - 1) * envelope_size;
13238
13239 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13241
13242 fidl::encoding::encode_in_envelope_optional::<u16, D>(
13247 self.rloc16.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
13248 encoder,
13249 offset + cur_offset,
13250 depth,
13251 )?;
13252
13253 _prev_end_offset = cur_offset + envelope_size;
13254 if 3 > max_ordinal {
13255 return Ok(());
13256 }
13257
13258 let cur_offset: usize = (3 - 1) * envelope_size;
13261
13262 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13264
13265 fidl::encoding::encode_in_envelope_optional::<i8, D>(
13270 self.preference.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
13271 encoder,
13272 offset + cur_offset,
13273 depth,
13274 )?;
13275
13276 _prev_end_offset = cur_offset + envelope_size;
13277 if 4 > max_ordinal {
13278 return Ok(());
13279 }
13280
13281 let cur_offset: usize = (4 - 1) * envelope_size;
13284
13285 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13287
13288 fidl::encoding::encode_in_envelope_optional::<bool, D>(
13293 self.nat64.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
13294 encoder,
13295 offset + cur_offset,
13296 depth,
13297 )?;
13298
13299 _prev_end_offset = cur_offset + envelope_size;
13300 if 5 > max_ordinal {
13301 return Ok(());
13302 }
13303
13304 let cur_offset: usize = (5 - 1) * envelope_size;
13307
13308 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13310
13311 fidl::encoding::encode_in_envelope_optional::<bool, D>(
13316 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
13317 encoder,
13318 offset + cur_offset,
13319 depth,
13320 )?;
13321
13322 _prev_end_offset = cur_offset + envelope_size;
13323 if 6 > max_ordinal {
13324 return Ok(());
13325 }
13326
13327 let cur_offset: usize = (6 - 1) * envelope_size;
13330
13331 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13333
13334 fidl::encoding::encode_in_envelope_optional::<bool, D>(
13339 self.next_hop_is_this_device
13340 .as_ref()
13341 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
13342 encoder,
13343 offset + cur_offset,
13344 depth,
13345 )?;
13346
13347 _prev_end_offset = cur_offset + envelope_size;
13348 if 7 > max_ordinal {
13349 return Ok(());
13350 }
13351
13352 let cur_offset: usize = (7 - 1) * envelope_size;
13355
13356 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13358
13359 fidl::encoding::encode_in_envelope_optional::<bool, D>(
13364 self.adv_pio.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
13365 encoder,
13366 offset + cur_offset,
13367 depth,
13368 )?;
13369
13370 _prev_end_offset = cur_offset + envelope_size;
13371
13372 Ok(())
13373 }
13374 }
13375
13376 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ExternalRouteConfig {
13377 #[inline(always)]
13378 fn new_empty() -> Self {
13379 Self::default()
13380 }
13381
13382 unsafe fn decode(
13383 &mut self,
13384 decoder: &mut fidl::encoding::Decoder<'_, D>,
13385 offset: usize,
13386 mut depth: fidl::encoding::Depth,
13387 ) -> fidl::Result<()> {
13388 decoder.debug_check_bounds::<Self>(offset);
13389 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13390 None => return Err(fidl::Error::NotNullable),
13391 Some(len) => len,
13392 };
13393 if len == 0 {
13395 return Ok(());
13396 };
13397 depth.increment()?;
13398 let envelope_size = 8;
13399 let bytes_len = len * envelope_size;
13400 let offset = decoder.out_of_line_offset(bytes_len)?;
13401 let mut _next_ordinal_to_read = 0;
13403 let mut next_offset = offset;
13404 let end_offset = offset + bytes_len;
13405 _next_ordinal_to_read += 1;
13406 if next_offset >= end_offset {
13407 return Ok(());
13408 }
13409
13410 while _next_ordinal_to_read < 1 {
13412 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13413 _next_ordinal_to_read += 1;
13414 next_offset += envelope_size;
13415 }
13416
13417 let next_out_of_line = decoder.next_out_of_line();
13418 let handles_before = decoder.remaining_handles();
13419 if let Some((inlined, num_bytes, num_handles)) =
13420 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13421 {
13422 let member_inline_size =
13423 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
13424 decoder.context,
13425 );
13426 if inlined != (member_inline_size <= 4) {
13427 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13428 }
13429 let inner_offset;
13430 let mut inner_depth = depth.clone();
13431 if inlined {
13432 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13433 inner_offset = next_offset;
13434 } else {
13435 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13436 inner_depth.increment()?;
13437 }
13438 let val_ref = self
13439 .prefix
13440 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
13441 fidl::decode!(
13442 fidl::encoding::BoundedString<64>,
13443 D,
13444 val_ref,
13445 decoder,
13446 inner_offset,
13447 inner_depth
13448 )?;
13449 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13450 {
13451 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13452 }
13453 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13454 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13455 }
13456 }
13457
13458 next_offset += envelope_size;
13459 _next_ordinal_to_read += 1;
13460 if next_offset >= end_offset {
13461 return Ok(());
13462 }
13463
13464 while _next_ordinal_to_read < 2 {
13466 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13467 _next_ordinal_to_read += 1;
13468 next_offset += envelope_size;
13469 }
13470
13471 let next_out_of_line = decoder.next_out_of_line();
13472 let handles_before = decoder.remaining_handles();
13473 if let Some((inlined, num_bytes, num_handles)) =
13474 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13475 {
13476 let member_inline_size =
13477 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13478 if inlined != (member_inline_size <= 4) {
13479 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13480 }
13481 let inner_offset;
13482 let mut inner_depth = depth.clone();
13483 if inlined {
13484 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13485 inner_offset = next_offset;
13486 } else {
13487 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13488 inner_depth.increment()?;
13489 }
13490 let val_ref = self.rloc16.get_or_insert_with(|| fidl::new_empty!(u16, D));
13491 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
13492 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13493 {
13494 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13495 }
13496 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13497 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13498 }
13499 }
13500
13501 next_offset += envelope_size;
13502 _next_ordinal_to_read += 1;
13503 if next_offset >= end_offset {
13504 return Ok(());
13505 }
13506
13507 while _next_ordinal_to_read < 3 {
13509 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13510 _next_ordinal_to_read += 1;
13511 next_offset += envelope_size;
13512 }
13513
13514 let next_out_of_line = decoder.next_out_of_line();
13515 let handles_before = decoder.remaining_handles();
13516 if let Some((inlined, num_bytes, num_handles)) =
13517 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13518 {
13519 let member_inline_size =
13520 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13521 if inlined != (member_inline_size <= 4) {
13522 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13523 }
13524 let inner_offset;
13525 let mut inner_depth = depth.clone();
13526 if inlined {
13527 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13528 inner_offset = next_offset;
13529 } else {
13530 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13531 inner_depth.increment()?;
13532 }
13533 let val_ref = self.preference.get_or_insert_with(|| fidl::new_empty!(i8, D));
13534 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
13535 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13536 {
13537 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13538 }
13539 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13540 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13541 }
13542 }
13543
13544 next_offset += envelope_size;
13545 _next_ordinal_to_read += 1;
13546 if next_offset >= end_offset {
13547 return Ok(());
13548 }
13549
13550 while _next_ordinal_to_read < 4 {
13552 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13553 _next_ordinal_to_read += 1;
13554 next_offset += envelope_size;
13555 }
13556
13557 let next_out_of_line = decoder.next_out_of_line();
13558 let handles_before = decoder.remaining_handles();
13559 if let Some((inlined, num_bytes, num_handles)) =
13560 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13561 {
13562 let member_inline_size =
13563 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13564 if inlined != (member_inline_size <= 4) {
13565 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13566 }
13567 let inner_offset;
13568 let mut inner_depth = depth.clone();
13569 if inlined {
13570 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13571 inner_offset = next_offset;
13572 } else {
13573 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13574 inner_depth.increment()?;
13575 }
13576 let val_ref = self.nat64.get_or_insert_with(|| fidl::new_empty!(bool, D));
13577 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
13578 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13579 {
13580 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13581 }
13582 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13583 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13584 }
13585 }
13586
13587 next_offset += envelope_size;
13588 _next_ordinal_to_read += 1;
13589 if next_offset >= end_offset {
13590 return Ok(());
13591 }
13592
13593 while _next_ordinal_to_read < 5 {
13595 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13596 _next_ordinal_to_read += 1;
13597 next_offset += envelope_size;
13598 }
13599
13600 let next_out_of_line = decoder.next_out_of_line();
13601 let handles_before = decoder.remaining_handles();
13602 if let Some((inlined, num_bytes, num_handles)) =
13603 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13604 {
13605 let member_inline_size =
13606 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13607 if inlined != (member_inline_size <= 4) {
13608 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13609 }
13610 let inner_offset;
13611 let mut inner_depth = depth.clone();
13612 if inlined {
13613 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13614 inner_offset = next_offset;
13615 } else {
13616 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13617 inner_depth.increment()?;
13618 }
13619 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
13620 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
13621 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13622 {
13623 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13624 }
13625 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13626 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13627 }
13628 }
13629
13630 next_offset += envelope_size;
13631 _next_ordinal_to_read += 1;
13632 if next_offset >= end_offset {
13633 return Ok(());
13634 }
13635
13636 while _next_ordinal_to_read < 6 {
13638 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13639 _next_ordinal_to_read += 1;
13640 next_offset += envelope_size;
13641 }
13642
13643 let next_out_of_line = decoder.next_out_of_line();
13644 let handles_before = decoder.remaining_handles();
13645 if let Some((inlined, num_bytes, num_handles)) =
13646 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13647 {
13648 let member_inline_size =
13649 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13650 if inlined != (member_inline_size <= 4) {
13651 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13652 }
13653 let inner_offset;
13654 let mut inner_depth = depth.clone();
13655 if inlined {
13656 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13657 inner_offset = next_offset;
13658 } else {
13659 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13660 inner_depth.increment()?;
13661 }
13662 let val_ref =
13663 self.next_hop_is_this_device.get_or_insert_with(|| fidl::new_empty!(bool, D));
13664 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
13665 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13666 {
13667 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13668 }
13669 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13670 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13671 }
13672 }
13673
13674 next_offset += envelope_size;
13675 _next_ordinal_to_read += 1;
13676 if next_offset >= end_offset {
13677 return Ok(());
13678 }
13679
13680 while _next_ordinal_to_read < 7 {
13682 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13683 _next_ordinal_to_read += 1;
13684 next_offset += envelope_size;
13685 }
13686
13687 let next_out_of_line = decoder.next_out_of_line();
13688 let handles_before = decoder.remaining_handles();
13689 if let Some((inlined, num_bytes, num_handles)) =
13690 fidl::encoding::decode_envelope_header(decoder, next_offset)?
13691 {
13692 let member_inline_size =
13693 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13694 if inlined != (member_inline_size <= 4) {
13695 return Err(fidl::Error::InvalidInlineBitInEnvelope);
13696 }
13697 let inner_offset;
13698 let mut inner_depth = depth.clone();
13699 if inlined {
13700 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13701 inner_offset = next_offset;
13702 } else {
13703 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13704 inner_depth.increment()?;
13705 }
13706 let val_ref = self.adv_pio.get_or_insert_with(|| fidl::new_empty!(bool, D));
13707 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
13708 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13709 {
13710 return Err(fidl::Error::InvalidNumBytesInEnvelope);
13711 }
13712 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13713 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13714 }
13715 }
13716
13717 next_offset += envelope_size;
13718
13719 while next_offset < end_offset {
13721 _next_ordinal_to_read += 1;
13722 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13723 next_offset += envelope_size;
13724 }
13725
13726 Ok(())
13727 }
13728 }
13729
13730 impl JoinerCommissioningParams {
13731 #[inline(always)]
13732 fn max_ordinal_present(&self) -> u64 {
13733 if let Some(_) = self.vendor_data_string {
13734 return 6;
13735 }
13736 if let Some(_) = self.vendor_sw_version {
13737 return 5;
13738 }
13739 if let Some(_) = self.vendor_model {
13740 return 4;
13741 }
13742 if let Some(_) = self.vendor_name {
13743 return 3;
13744 }
13745 if let Some(_) = self.provisioning_url {
13746 return 2;
13747 }
13748 if let Some(_) = self.pskd {
13749 return 1;
13750 }
13751 0
13752 }
13753 }
13754
13755 impl fidl::encoding::ValueTypeMarker for JoinerCommissioningParams {
13756 type Borrowed<'a> = &'a Self;
13757 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13758 value
13759 }
13760 }
13761
13762 unsafe impl fidl::encoding::TypeMarker for JoinerCommissioningParams {
13763 type Owned = Self;
13764
13765 #[inline(always)]
13766 fn inline_align(_context: fidl::encoding::Context) -> usize {
13767 8
13768 }
13769
13770 #[inline(always)]
13771 fn inline_size(_context: fidl::encoding::Context) -> usize {
13772 16
13773 }
13774 }
13775
13776 unsafe impl<D: fidl::encoding::ResourceDialect>
13777 fidl::encoding::Encode<JoinerCommissioningParams, D> for &JoinerCommissioningParams
13778 {
13779 unsafe fn encode(
13780 self,
13781 encoder: &mut fidl::encoding::Encoder<'_, D>,
13782 offset: usize,
13783 mut depth: fidl::encoding::Depth,
13784 ) -> fidl::Result<()> {
13785 encoder.debug_check_bounds::<JoinerCommissioningParams>(offset);
13786 let max_ordinal: u64 = self.max_ordinal_present();
13788 encoder.write_num(max_ordinal, offset);
13789 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13790 if max_ordinal == 0 {
13792 return Ok(());
13793 }
13794 depth.increment()?;
13795 let envelope_size = 8;
13796 let bytes_len = max_ordinal as usize * envelope_size;
13797 #[allow(unused_variables)]
13798 let offset = encoder.out_of_line_offset(bytes_len);
13799 let mut _prev_end_offset: usize = 0;
13800 if 1 > max_ordinal {
13801 return Ok(());
13802 }
13803
13804 let cur_offset: usize = (1 - 1) * envelope_size;
13807
13808 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13810
13811 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
13816 self.pskd.as_ref().map(
13817 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
13818 ),
13819 encoder,
13820 offset + cur_offset,
13821 depth,
13822 )?;
13823
13824 _prev_end_offset = cur_offset + envelope_size;
13825 if 2 > max_ordinal {
13826 return Ok(());
13827 }
13828
13829 let cur_offset: usize = (2 - 1) * envelope_size;
13832
13833 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13835
13836 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
13841 self.provisioning_url.as_ref().map(
13842 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
13843 ),
13844 encoder,
13845 offset + cur_offset,
13846 depth,
13847 )?;
13848
13849 _prev_end_offset = cur_offset + envelope_size;
13850 if 3 > max_ordinal {
13851 return Ok(());
13852 }
13853
13854 let cur_offset: usize = (3 - 1) * envelope_size;
13857
13858 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13860
13861 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
13866 self.vendor_name.as_ref().map(
13867 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
13868 ),
13869 encoder,
13870 offset + cur_offset,
13871 depth,
13872 )?;
13873
13874 _prev_end_offset = cur_offset + envelope_size;
13875 if 4 > max_ordinal {
13876 return Ok(());
13877 }
13878
13879 let cur_offset: usize = (4 - 1) * envelope_size;
13882
13883 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13885
13886 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<32>, D>(
13891 self.vendor_model.as_ref().map(
13892 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow,
13893 ),
13894 encoder,
13895 offset + cur_offset,
13896 depth,
13897 )?;
13898
13899 _prev_end_offset = cur_offset + envelope_size;
13900 if 5 > max_ordinal {
13901 return Ok(());
13902 }
13903
13904 let cur_offset: usize = (5 - 1) * envelope_size;
13907
13908 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13910
13911 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<16>, D>(
13916 self.vendor_sw_version.as_ref().map(
13917 <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow,
13918 ),
13919 encoder,
13920 offset + cur_offset,
13921 depth,
13922 )?;
13923
13924 _prev_end_offset = cur_offset + envelope_size;
13925 if 6 > max_ordinal {
13926 return Ok(());
13927 }
13928
13929 let cur_offset: usize = (6 - 1) * envelope_size;
13932
13933 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13935
13936 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
13941 self.vendor_data_string.as_ref().map(
13942 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
13943 ),
13944 encoder,
13945 offset + cur_offset,
13946 depth,
13947 )?;
13948
13949 _prev_end_offset = cur_offset + envelope_size;
13950
13951 Ok(())
13952 }
13953 }
13954
13955 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13956 for JoinerCommissioningParams
13957 {
13958 #[inline(always)]
13959 fn new_empty() -> Self {
13960 Self::default()
13961 }
13962
13963 unsafe fn decode(
13964 &mut self,
13965 decoder: &mut fidl::encoding::Decoder<'_, D>,
13966 offset: usize,
13967 mut depth: fidl::encoding::Depth,
13968 ) -> fidl::Result<()> {
13969 decoder.debug_check_bounds::<Self>(offset);
13970 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13971 None => return Err(fidl::Error::NotNullable),
13972 Some(len) => len,
13973 };
13974 if len == 0 {
13976 return Ok(());
13977 };
13978 depth.increment()?;
13979 let envelope_size = 8;
13980 let bytes_len = len * envelope_size;
13981 let offset = decoder.out_of_line_offset(bytes_len)?;
13982 let mut _next_ordinal_to_read = 0;
13984 let mut next_offset = offset;
13985 let end_offset = offset + bytes_len;
13986 _next_ordinal_to_read += 1;
13987 if next_offset >= end_offset {
13988 return Ok(());
13989 }
13990
13991 while _next_ordinal_to_read < 1 {
13993 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13994 _next_ordinal_to_read += 1;
13995 next_offset += envelope_size;
13996 }
13997
13998 let next_out_of_line = decoder.next_out_of_line();
13999 let handles_before = decoder.remaining_handles();
14000 if let Some((inlined, num_bytes, num_handles)) =
14001 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14002 {
14003 let member_inline_size =
14004 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
14005 decoder.context,
14006 );
14007 if inlined != (member_inline_size <= 4) {
14008 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14009 }
14010 let inner_offset;
14011 let mut inner_depth = depth.clone();
14012 if inlined {
14013 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14014 inner_offset = next_offset;
14015 } else {
14016 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14017 inner_depth.increment()?;
14018 }
14019 let val_ref = self
14020 .pskd
14021 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
14022 fidl::decode!(
14023 fidl::encoding::BoundedString<32>,
14024 D,
14025 val_ref,
14026 decoder,
14027 inner_offset,
14028 inner_depth
14029 )?;
14030 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14031 {
14032 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14033 }
14034 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14035 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14036 }
14037 }
14038
14039 next_offset += envelope_size;
14040 _next_ordinal_to_read += 1;
14041 if next_offset >= end_offset {
14042 return Ok(());
14043 }
14044
14045 while _next_ordinal_to_read < 2 {
14047 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14048 _next_ordinal_to_read += 1;
14049 next_offset += envelope_size;
14050 }
14051
14052 let next_out_of_line = decoder.next_out_of_line();
14053 let handles_before = decoder.remaining_handles();
14054 if let Some((inlined, num_bytes, num_handles)) =
14055 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14056 {
14057 let member_inline_size =
14058 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
14059 decoder.context,
14060 );
14061 if inlined != (member_inline_size <= 4) {
14062 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14063 }
14064 let inner_offset;
14065 let mut inner_depth = depth.clone();
14066 if inlined {
14067 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14068 inner_offset = next_offset;
14069 } else {
14070 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14071 inner_depth.increment()?;
14072 }
14073 let val_ref = self
14074 .provisioning_url
14075 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
14076 fidl::decode!(
14077 fidl::encoding::BoundedString<64>,
14078 D,
14079 val_ref,
14080 decoder,
14081 inner_offset,
14082 inner_depth
14083 )?;
14084 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14085 {
14086 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14087 }
14088 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14089 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14090 }
14091 }
14092
14093 next_offset += envelope_size;
14094 _next_ordinal_to_read += 1;
14095 if next_offset >= end_offset {
14096 return Ok(());
14097 }
14098
14099 while _next_ordinal_to_read < 3 {
14101 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14102 _next_ordinal_to_read += 1;
14103 next_offset += envelope_size;
14104 }
14105
14106 let next_out_of_line = decoder.next_out_of_line();
14107 let handles_before = decoder.remaining_handles();
14108 if let Some((inlined, num_bytes, num_handles)) =
14109 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14110 {
14111 let member_inline_size =
14112 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
14113 decoder.context,
14114 );
14115 if inlined != (member_inline_size <= 4) {
14116 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14117 }
14118 let inner_offset;
14119 let mut inner_depth = depth.clone();
14120 if inlined {
14121 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14122 inner_offset = next_offset;
14123 } else {
14124 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14125 inner_depth.increment()?;
14126 }
14127 let val_ref = self
14128 .vendor_name
14129 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
14130 fidl::decode!(
14131 fidl::encoding::BoundedString<32>,
14132 D,
14133 val_ref,
14134 decoder,
14135 inner_offset,
14136 inner_depth
14137 )?;
14138 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14139 {
14140 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14141 }
14142 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14143 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14144 }
14145 }
14146
14147 next_offset += envelope_size;
14148 _next_ordinal_to_read += 1;
14149 if next_offset >= end_offset {
14150 return Ok(());
14151 }
14152
14153 while _next_ordinal_to_read < 4 {
14155 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14156 _next_ordinal_to_read += 1;
14157 next_offset += envelope_size;
14158 }
14159
14160 let next_out_of_line = decoder.next_out_of_line();
14161 let handles_before = decoder.remaining_handles();
14162 if let Some((inlined, num_bytes, num_handles)) =
14163 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14164 {
14165 let member_inline_size =
14166 <fidl::encoding::BoundedString<32> as fidl::encoding::TypeMarker>::inline_size(
14167 decoder.context,
14168 );
14169 if inlined != (member_inline_size <= 4) {
14170 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14171 }
14172 let inner_offset;
14173 let mut inner_depth = depth.clone();
14174 if inlined {
14175 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14176 inner_offset = next_offset;
14177 } else {
14178 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14179 inner_depth.increment()?;
14180 }
14181 let val_ref = self
14182 .vendor_model
14183 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<32>, D));
14184 fidl::decode!(
14185 fidl::encoding::BoundedString<32>,
14186 D,
14187 val_ref,
14188 decoder,
14189 inner_offset,
14190 inner_depth
14191 )?;
14192 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14193 {
14194 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14195 }
14196 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14197 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14198 }
14199 }
14200
14201 next_offset += envelope_size;
14202 _next_ordinal_to_read += 1;
14203 if next_offset >= end_offset {
14204 return Ok(());
14205 }
14206
14207 while _next_ordinal_to_read < 5 {
14209 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14210 _next_ordinal_to_read += 1;
14211 next_offset += envelope_size;
14212 }
14213
14214 let next_out_of_line = decoder.next_out_of_line();
14215 let handles_before = decoder.remaining_handles();
14216 if let Some((inlined, num_bytes, num_handles)) =
14217 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14218 {
14219 let member_inline_size =
14220 <fidl::encoding::BoundedString<16> as fidl::encoding::TypeMarker>::inline_size(
14221 decoder.context,
14222 );
14223 if inlined != (member_inline_size <= 4) {
14224 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14225 }
14226 let inner_offset;
14227 let mut inner_depth = depth.clone();
14228 if inlined {
14229 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14230 inner_offset = next_offset;
14231 } else {
14232 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14233 inner_depth.increment()?;
14234 }
14235 let val_ref = self
14236 .vendor_sw_version
14237 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<16>, D));
14238 fidl::decode!(
14239 fidl::encoding::BoundedString<16>,
14240 D,
14241 val_ref,
14242 decoder,
14243 inner_offset,
14244 inner_depth
14245 )?;
14246 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14247 {
14248 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14249 }
14250 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14251 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14252 }
14253 }
14254
14255 next_offset += envelope_size;
14256 _next_ordinal_to_read += 1;
14257 if next_offset >= end_offset {
14258 return Ok(());
14259 }
14260
14261 while _next_ordinal_to_read < 6 {
14263 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14264 _next_ordinal_to_read += 1;
14265 next_offset += envelope_size;
14266 }
14267
14268 let next_out_of_line = decoder.next_out_of_line();
14269 let handles_before = decoder.remaining_handles();
14270 if let Some((inlined, num_bytes, num_handles)) =
14271 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14272 {
14273 let member_inline_size =
14274 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
14275 decoder.context,
14276 );
14277 if inlined != (member_inline_size <= 4) {
14278 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14279 }
14280 let inner_offset;
14281 let mut inner_depth = depth.clone();
14282 if inlined {
14283 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14284 inner_offset = next_offset;
14285 } else {
14286 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14287 inner_depth.increment()?;
14288 }
14289 let val_ref = self
14290 .vendor_data_string
14291 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
14292 fidl::decode!(
14293 fidl::encoding::BoundedString<64>,
14294 D,
14295 val_ref,
14296 decoder,
14297 inner_offset,
14298 inner_depth
14299 )?;
14300 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14301 {
14302 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14303 }
14304 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14305 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14306 }
14307 }
14308
14309 next_offset += envelope_size;
14310
14311 while next_offset < end_offset {
14313 _next_ordinal_to_read += 1;
14314 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14315 next_offset += envelope_size;
14316 }
14317
14318 Ok(())
14319 }
14320 }
14321
14322 impl LeaderData {
14323 #[inline(always)]
14324 fn max_ordinal_present(&self) -> u64 {
14325 if let Some(_) = self.router_id {
14326 return 5;
14327 }
14328 if let Some(_) = self.stable_network_data_version {
14329 return 4;
14330 }
14331 if let Some(_) = self.network_data_version {
14332 return 3;
14333 }
14334 if let Some(_) = self.weight {
14335 return 2;
14336 }
14337 if let Some(_) = self.partition_id {
14338 return 1;
14339 }
14340 0
14341 }
14342 }
14343
14344 impl fidl::encoding::ValueTypeMarker for LeaderData {
14345 type Borrowed<'a> = &'a Self;
14346 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14347 value
14348 }
14349 }
14350
14351 unsafe impl fidl::encoding::TypeMarker for LeaderData {
14352 type Owned = Self;
14353
14354 #[inline(always)]
14355 fn inline_align(_context: fidl::encoding::Context) -> usize {
14356 8
14357 }
14358
14359 #[inline(always)]
14360 fn inline_size(_context: fidl::encoding::Context) -> usize {
14361 16
14362 }
14363 }
14364
14365 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LeaderData, D>
14366 for &LeaderData
14367 {
14368 unsafe fn encode(
14369 self,
14370 encoder: &mut fidl::encoding::Encoder<'_, D>,
14371 offset: usize,
14372 mut depth: fidl::encoding::Depth,
14373 ) -> fidl::Result<()> {
14374 encoder.debug_check_bounds::<LeaderData>(offset);
14375 let max_ordinal: u64 = self.max_ordinal_present();
14377 encoder.write_num(max_ordinal, offset);
14378 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14379 if max_ordinal == 0 {
14381 return Ok(());
14382 }
14383 depth.increment()?;
14384 let envelope_size = 8;
14385 let bytes_len = max_ordinal as usize * envelope_size;
14386 #[allow(unused_variables)]
14387 let offset = encoder.out_of_line_offset(bytes_len);
14388 let mut _prev_end_offset: usize = 0;
14389 if 1 > max_ordinal {
14390 return Ok(());
14391 }
14392
14393 let cur_offset: usize = (1 - 1) * envelope_size;
14396
14397 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14399
14400 fidl::encoding::encode_in_envelope_optional::<u32, D>(
14405 self.partition_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
14406 encoder,
14407 offset + cur_offset,
14408 depth,
14409 )?;
14410
14411 _prev_end_offset = cur_offset + envelope_size;
14412 if 2 > max_ordinal {
14413 return Ok(());
14414 }
14415
14416 let cur_offset: usize = (2 - 1) * envelope_size;
14419
14420 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14422
14423 fidl::encoding::encode_in_envelope_optional::<u8, D>(
14428 self.weight.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
14429 encoder,
14430 offset + cur_offset,
14431 depth,
14432 )?;
14433
14434 _prev_end_offset = cur_offset + envelope_size;
14435 if 3 > max_ordinal {
14436 return Ok(());
14437 }
14438
14439 let cur_offset: usize = (3 - 1) * envelope_size;
14442
14443 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14445
14446 fidl::encoding::encode_in_envelope_optional::<u8, D>(
14451 self.network_data_version
14452 .as_ref()
14453 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
14454 encoder,
14455 offset + cur_offset,
14456 depth,
14457 )?;
14458
14459 _prev_end_offset = cur_offset + envelope_size;
14460 if 4 > max_ordinal {
14461 return Ok(());
14462 }
14463
14464 let cur_offset: usize = (4 - 1) * envelope_size;
14467
14468 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14470
14471 fidl::encoding::encode_in_envelope_optional::<u8, D>(
14476 self.stable_network_data_version
14477 .as_ref()
14478 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
14479 encoder,
14480 offset + cur_offset,
14481 depth,
14482 )?;
14483
14484 _prev_end_offset = cur_offset + envelope_size;
14485 if 5 > max_ordinal {
14486 return Ok(());
14487 }
14488
14489 let cur_offset: usize = (5 - 1) * envelope_size;
14492
14493 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14495
14496 fidl::encoding::encode_in_envelope_optional::<u8, D>(
14501 self.router_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
14502 encoder,
14503 offset + cur_offset,
14504 depth,
14505 )?;
14506
14507 _prev_end_offset = cur_offset + envelope_size;
14508
14509 Ok(())
14510 }
14511 }
14512
14513 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LeaderData {
14514 #[inline(always)]
14515 fn new_empty() -> Self {
14516 Self::default()
14517 }
14518
14519 unsafe fn decode(
14520 &mut self,
14521 decoder: &mut fidl::encoding::Decoder<'_, D>,
14522 offset: usize,
14523 mut depth: fidl::encoding::Depth,
14524 ) -> fidl::Result<()> {
14525 decoder.debug_check_bounds::<Self>(offset);
14526 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14527 None => return Err(fidl::Error::NotNullable),
14528 Some(len) => len,
14529 };
14530 if len == 0 {
14532 return Ok(());
14533 };
14534 depth.increment()?;
14535 let envelope_size = 8;
14536 let bytes_len = len * envelope_size;
14537 let offset = decoder.out_of_line_offset(bytes_len)?;
14538 let mut _next_ordinal_to_read = 0;
14540 let mut next_offset = offset;
14541 let end_offset = offset + bytes_len;
14542 _next_ordinal_to_read += 1;
14543 if next_offset >= end_offset {
14544 return Ok(());
14545 }
14546
14547 while _next_ordinal_to_read < 1 {
14549 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14550 _next_ordinal_to_read += 1;
14551 next_offset += envelope_size;
14552 }
14553
14554 let next_out_of_line = decoder.next_out_of_line();
14555 let handles_before = decoder.remaining_handles();
14556 if let Some((inlined, num_bytes, num_handles)) =
14557 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14558 {
14559 let member_inline_size =
14560 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14561 if inlined != (member_inline_size <= 4) {
14562 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14563 }
14564 let inner_offset;
14565 let mut inner_depth = depth.clone();
14566 if inlined {
14567 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14568 inner_offset = next_offset;
14569 } else {
14570 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14571 inner_depth.increment()?;
14572 }
14573 let val_ref = self.partition_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
14574 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
14575 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14576 {
14577 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14578 }
14579 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14580 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14581 }
14582 }
14583
14584 next_offset += envelope_size;
14585 _next_ordinal_to_read += 1;
14586 if next_offset >= end_offset {
14587 return Ok(());
14588 }
14589
14590 while _next_ordinal_to_read < 2 {
14592 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14593 _next_ordinal_to_read += 1;
14594 next_offset += envelope_size;
14595 }
14596
14597 let next_out_of_line = decoder.next_out_of_line();
14598 let handles_before = decoder.remaining_handles();
14599 if let Some((inlined, num_bytes, num_handles)) =
14600 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14601 {
14602 let member_inline_size =
14603 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14604 if inlined != (member_inline_size <= 4) {
14605 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14606 }
14607 let inner_offset;
14608 let mut inner_depth = depth.clone();
14609 if inlined {
14610 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14611 inner_offset = next_offset;
14612 } else {
14613 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14614 inner_depth.increment()?;
14615 }
14616 let val_ref = self.weight.get_or_insert_with(|| fidl::new_empty!(u8, D));
14617 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14618 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14619 {
14620 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14621 }
14622 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14623 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14624 }
14625 }
14626
14627 next_offset += envelope_size;
14628 _next_ordinal_to_read += 1;
14629 if next_offset >= end_offset {
14630 return Ok(());
14631 }
14632
14633 while _next_ordinal_to_read < 3 {
14635 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14636 _next_ordinal_to_read += 1;
14637 next_offset += envelope_size;
14638 }
14639
14640 let next_out_of_line = decoder.next_out_of_line();
14641 let handles_before = decoder.remaining_handles();
14642 if let Some((inlined, num_bytes, num_handles)) =
14643 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14644 {
14645 let member_inline_size =
14646 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14647 if inlined != (member_inline_size <= 4) {
14648 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14649 }
14650 let inner_offset;
14651 let mut inner_depth = depth.clone();
14652 if inlined {
14653 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14654 inner_offset = next_offset;
14655 } else {
14656 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14657 inner_depth.increment()?;
14658 }
14659 let val_ref =
14660 self.network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
14661 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14662 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14663 {
14664 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14665 }
14666 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14667 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14668 }
14669 }
14670
14671 next_offset += envelope_size;
14672 _next_ordinal_to_read += 1;
14673 if next_offset >= end_offset {
14674 return Ok(());
14675 }
14676
14677 while _next_ordinal_to_read < 4 {
14679 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14680 _next_ordinal_to_read += 1;
14681 next_offset += envelope_size;
14682 }
14683
14684 let next_out_of_line = decoder.next_out_of_line();
14685 let handles_before = decoder.remaining_handles();
14686 if let Some((inlined, num_bytes, num_handles)) =
14687 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14688 {
14689 let member_inline_size =
14690 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14691 if inlined != (member_inline_size <= 4) {
14692 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14693 }
14694 let inner_offset;
14695 let mut inner_depth = depth.clone();
14696 if inlined {
14697 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14698 inner_offset = next_offset;
14699 } else {
14700 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14701 inner_depth.increment()?;
14702 }
14703 let val_ref =
14704 self.stable_network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
14705 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14706 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14707 {
14708 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14709 }
14710 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14711 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14712 }
14713 }
14714
14715 next_offset += envelope_size;
14716 _next_ordinal_to_read += 1;
14717 if next_offset >= end_offset {
14718 return Ok(());
14719 }
14720
14721 while _next_ordinal_to_read < 5 {
14723 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14724 _next_ordinal_to_read += 1;
14725 next_offset += envelope_size;
14726 }
14727
14728 let next_out_of_line = decoder.next_out_of_line();
14729 let handles_before = decoder.remaining_handles();
14730 if let Some((inlined, num_bytes, num_handles)) =
14731 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14732 {
14733 let member_inline_size =
14734 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14735 if inlined != (member_inline_size <= 4) {
14736 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14737 }
14738 let inner_offset;
14739 let mut inner_depth = depth.clone();
14740 if inlined {
14741 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14742 inner_offset = next_offset;
14743 } else {
14744 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14745 inner_depth.increment()?;
14746 }
14747 let val_ref = self.router_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
14748 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14749 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14750 {
14751 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14752 }
14753 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14754 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14755 }
14756 }
14757
14758 next_offset += envelope_size;
14759
14760 while next_offset < end_offset {
14762 _next_ordinal_to_read += 1;
14763 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14764 next_offset += envelope_size;
14765 }
14766
14767 Ok(())
14768 }
14769 }
14770
14771 impl LinkMetricsEntry {
14772 #[inline(always)]
14773 fn max_ordinal_present(&self) -> u64 {
14774 if let Some(_) = self.extended_address {
14775 return 3;
14776 }
14777 if let Some(_) = self.rssi {
14778 return 2;
14779 }
14780 if let Some(_) = self.link_margin {
14781 return 1;
14782 }
14783 0
14784 }
14785 }
14786
14787 impl fidl::encoding::ValueTypeMarker for LinkMetricsEntry {
14788 type Borrowed<'a> = &'a Self;
14789 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14790 value
14791 }
14792 }
14793
14794 unsafe impl fidl::encoding::TypeMarker for LinkMetricsEntry {
14795 type Owned = Self;
14796
14797 #[inline(always)]
14798 fn inline_align(_context: fidl::encoding::Context) -> usize {
14799 8
14800 }
14801
14802 #[inline(always)]
14803 fn inline_size(_context: fidl::encoding::Context) -> usize {
14804 16
14805 }
14806 }
14807
14808 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LinkMetricsEntry, D>
14809 for &LinkMetricsEntry
14810 {
14811 unsafe fn encode(
14812 self,
14813 encoder: &mut fidl::encoding::Encoder<'_, D>,
14814 offset: usize,
14815 mut depth: fidl::encoding::Depth,
14816 ) -> fidl::Result<()> {
14817 encoder.debug_check_bounds::<LinkMetricsEntry>(offset);
14818 let max_ordinal: u64 = self.max_ordinal_present();
14820 encoder.write_num(max_ordinal, offset);
14821 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14822 if max_ordinal == 0 {
14824 return Ok(());
14825 }
14826 depth.increment()?;
14827 let envelope_size = 8;
14828 let bytes_len = max_ordinal as usize * envelope_size;
14829 #[allow(unused_variables)]
14830 let offset = encoder.out_of_line_offset(bytes_len);
14831 let mut _prev_end_offset: usize = 0;
14832 if 1 > max_ordinal {
14833 return Ok(());
14834 }
14835
14836 let cur_offset: usize = (1 - 1) * envelope_size;
14839
14840 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14842
14843 fidl::encoding::encode_in_envelope_optional::<u8, D>(
14848 self.link_margin.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
14849 encoder,
14850 offset + cur_offset,
14851 depth,
14852 )?;
14853
14854 _prev_end_offset = cur_offset + envelope_size;
14855 if 2 > max_ordinal {
14856 return Ok(());
14857 }
14858
14859 let cur_offset: usize = (2 - 1) * envelope_size;
14862
14863 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14865
14866 fidl::encoding::encode_in_envelope_optional::<i8, D>(
14871 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
14872 encoder,
14873 offset + cur_offset,
14874 depth,
14875 )?;
14876
14877 _prev_end_offset = cur_offset + envelope_size;
14878 if 3 > max_ordinal {
14879 return Ok(());
14880 }
14881
14882 let cur_offset: usize = (3 - 1) * envelope_size;
14885
14886 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14888
14889 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
14894 self.extended_address.as_ref().map(
14895 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
14896 ),
14897 encoder,
14898 offset + cur_offset,
14899 depth,
14900 )?;
14901
14902 _prev_end_offset = cur_offset + envelope_size;
14903
14904 Ok(())
14905 }
14906 }
14907
14908 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LinkMetricsEntry {
14909 #[inline(always)]
14910 fn new_empty() -> Self {
14911 Self::default()
14912 }
14913
14914 unsafe fn decode(
14915 &mut self,
14916 decoder: &mut fidl::encoding::Decoder<'_, D>,
14917 offset: usize,
14918 mut depth: fidl::encoding::Depth,
14919 ) -> fidl::Result<()> {
14920 decoder.debug_check_bounds::<Self>(offset);
14921 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14922 None => return Err(fidl::Error::NotNullable),
14923 Some(len) => len,
14924 };
14925 if len == 0 {
14927 return Ok(());
14928 };
14929 depth.increment()?;
14930 let envelope_size = 8;
14931 let bytes_len = len * envelope_size;
14932 let offset = decoder.out_of_line_offset(bytes_len)?;
14933 let mut _next_ordinal_to_read = 0;
14935 let mut next_offset = offset;
14936 let end_offset = offset + bytes_len;
14937 _next_ordinal_to_read += 1;
14938 if next_offset >= end_offset {
14939 return Ok(());
14940 }
14941
14942 while _next_ordinal_to_read < 1 {
14944 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14945 _next_ordinal_to_read += 1;
14946 next_offset += envelope_size;
14947 }
14948
14949 let next_out_of_line = decoder.next_out_of_line();
14950 let handles_before = decoder.remaining_handles();
14951 if let Some((inlined, num_bytes, num_handles)) =
14952 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14953 {
14954 let member_inline_size =
14955 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14956 if inlined != (member_inline_size <= 4) {
14957 return Err(fidl::Error::InvalidInlineBitInEnvelope);
14958 }
14959 let inner_offset;
14960 let mut inner_depth = depth.clone();
14961 if inlined {
14962 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14963 inner_offset = next_offset;
14964 } else {
14965 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14966 inner_depth.increment()?;
14967 }
14968 let val_ref = self.link_margin.get_or_insert_with(|| fidl::new_empty!(u8, D));
14969 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14970 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14971 {
14972 return Err(fidl::Error::InvalidNumBytesInEnvelope);
14973 }
14974 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14975 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14976 }
14977 }
14978
14979 next_offset += envelope_size;
14980 _next_ordinal_to_read += 1;
14981 if next_offset >= end_offset {
14982 return Ok(());
14983 }
14984
14985 while _next_ordinal_to_read < 2 {
14987 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14988 _next_ordinal_to_read += 1;
14989 next_offset += envelope_size;
14990 }
14991
14992 let next_out_of_line = decoder.next_out_of_line();
14993 let handles_before = decoder.remaining_handles();
14994 if let Some((inlined, num_bytes, num_handles)) =
14995 fidl::encoding::decode_envelope_header(decoder, next_offset)?
14996 {
14997 let member_inline_size =
14998 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14999 if inlined != (member_inline_size <= 4) {
15000 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15001 }
15002 let inner_offset;
15003 let mut inner_depth = depth.clone();
15004 if inlined {
15005 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15006 inner_offset = next_offset;
15007 } else {
15008 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15009 inner_depth.increment()?;
15010 }
15011 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
15012 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
15013 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15014 {
15015 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15016 }
15017 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15018 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15019 }
15020 }
15021
15022 next_offset += envelope_size;
15023 _next_ordinal_to_read += 1;
15024 if next_offset >= end_offset {
15025 return Ok(());
15026 }
15027
15028 while _next_ordinal_to_read < 3 {
15030 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15031 _next_ordinal_to_read += 1;
15032 next_offset += envelope_size;
15033 }
15034
15035 let next_out_of_line = decoder.next_out_of_line();
15036 let handles_before = decoder.remaining_handles();
15037 if let Some((inlined, num_bytes, num_handles)) =
15038 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15039 {
15040 let member_inline_size =
15041 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
15042 decoder.context,
15043 );
15044 if inlined != (member_inline_size <= 4) {
15045 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15046 }
15047 let inner_offset;
15048 let mut inner_depth = depth.clone();
15049 if inlined {
15050 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15051 inner_offset = next_offset;
15052 } else {
15053 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15054 inner_depth.increment()?;
15055 }
15056 let val_ref = self
15057 .extended_address
15058 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
15059 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
15060 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15061 {
15062 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15063 }
15064 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15065 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15066 }
15067 }
15068
15069 next_offset += envelope_size;
15070
15071 while next_offset < end_offset {
15073 _next_ordinal_to_read += 1;
15074 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15075 next_offset += envelope_size;
15076 }
15077
15078 Ok(())
15079 }
15080 }
15081
15082 impl LowpanContextInfo {
15083 #[inline(always)]
15084 fn max_ordinal_present(&self) -> u64 {
15085 if let Some(_) = self.prefix {
15086 return 4;
15087 }
15088 if let Some(_) = self.stable {
15089 return 3;
15090 }
15091 if let Some(_) = self.compress_flag {
15092 return 2;
15093 }
15094 if let Some(_) = self.context_id {
15095 return 1;
15096 }
15097 0
15098 }
15099 }
15100
15101 impl fidl::encoding::ValueTypeMarker for LowpanContextInfo {
15102 type Borrowed<'a> = &'a Self;
15103 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15104 value
15105 }
15106 }
15107
15108 unsafe impl fidl::encoding::TypeMarker for LowpanContextInfo {
15109 type Owned = Self;
15110
15111 #[inline(always)]
15112 fn inline_align(_context: fidl::encoding::Context) -> usize {
15113 8
15114 }
15115
15116 #[inline(always)]
15117 fn inline_size(_context: fidl::encoding::Context) -> usize {
15118 16
15119 }
15120 }
15121
15122 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LowpanContextInfo, D>
15123 for &LowpanContextInfo
15124 {
15125 unsafe fn encode(
15126 self,
15127 encoder: &mut fidl::encoding::Encoder<'_, D>,
15128 offset: usize,
15129 mut depth: fidl::encoding::Depth,
15130 ) -> fidl::Result<()> {
15131 encoder.debug_check_bounds::<LowpanContextInfo>(offset);
15132 let max_ordinal: u64 = self.max_ordinal_present();
15134 encoder.write_num(max_ordinal, offset);
15135 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15136 if max_ordinal == 0 {
15138 return Ok(());
15139 }
15140 depth.increment()?;
15141 let envelope_size = 8;
15142 let bytes_len = max_ordinal as usize * envelope_size;
15143 #[allow(unused_variables)]
15144 let offset = encoder.out_of_line_offset(bytes_len);
15145 let mut _prev_end_offset: usize = 0;
15146 if 1 > max_ordinal {
15147 return Ok(());
15148 }
15149
15150 let cur_offset: usize = (1 - 1) * envelope_size;
15153
15154 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15156
15157 fidl::encoding::encode_in_envelope_optional::<u8, D>(
15162 self.context_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
15163 encoder,
15164 offset + cur_offset,
15165 depth,
15166 )?;
15167
15168 _prev_end_offset = cur_offset + envelope_size;
15169 if 2 > max_ordinal {
15170 return Ok(());
15171 }
15172
15173 let cur_offset: usize = (2 - 1) * envelope_size;
15176
15177 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15179
15180 fidl::encoding::encode_in_envelope_optional::<bool, D>(
15185 self.compress_flag.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
15186 encoder,
15187 offset + cur_offset,
15188 depth,
15189 )?;
15190
15191 _prev_end_offset = cur_offset + envelope_size;
15192 if 3 > max_ordinal {
15193 return Ok(());
15194 }
15195
15196 let cur_offset: usize = (3 - 1) * envelope_size;
15199
15200 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15202
15203 fidl::encoding::encode_in_envelope_optional::<bool, D>(
15208 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
15209 encoder,
15210 offset + cur_offset,
15211 depth,
15212 )?;
15213
15214 _prev_end_offset = cur_offset + envelope_size;
15215 if 4 > max_ordinal {
15216 return Ok(());
15217 }
15218
15219 let cur_offset: usize = (4 - 1) * envelope_size;
15222
15223 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15225
15226 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
15231 self.prefix.as_ref().map(
15232 <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
15233 ),
15234 encoder,
15235 offset + cur_offset,
15236 depth,
15237 )?;
15238
15239 _prev_end_offset = cur_offset + envelope_size;
15240
15241 Ok(())
15242 }
15243 }
15244
15245 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LowpanContextInfo {
15246 #[inline(always)]
15247 fn new_empty() -> Self {
15248 Self::default()
15249 }
15250
15251 unsafe fn decode(
15252 &mut self,
15253 decoder: &mut fidl::encoding::Decoder<'_, D>,
15254 offset: usize,
15255 mut depth: fidl::encoding::Depth,
15256 ) -> fidl::Result<()> {
15257 decoder.debug_check_bounds::<Self>(offset);
15258 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15259 None => return Err(fidl::Error::NotNullable),
15260 Some(len) => len,
15261 };
15262 if len == 0 {
15264 return Ok(());
15265 };
15266 depth.increment()?;
15267 let envelope_size = 8;
15268 let bytes_len = len * envelope_size;
15269 let offset = decoder.out_of_line_offset(bytes_len)?;
15270 let mut _next_ordinal_to_read = 0;
15272 let mut next_offset = offset;
15273 let end_offset = offset + bytes_len;
15274 _next_ordinal_to_read += 1;
15275 if next_offset >= end_offset {
15276 return Ok(());
15277 }
15278
15279 while _next_ordinal_to_read < 1 {
15281 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15282 _next_ordinal_to_read += 1;
15283 next_offset += envelope_size;
15284 }
15285
15286 let next_out_of_line = decoder.next_out_of_line();
15287 let handles_before = decoder.remaining_handles();
15288 if let Some((inlined, num_bytes, num_handles)) =
15289 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15290 {
15291 let member_inline_size =
15292 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15293 if inlined != (member_inline_size <= 4) {
15294 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15295 }
15296 let inner_offset;
15297 let mut inner_depth = depth.clone();
15298 if inlined {
15299 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15300 inner_offset = next_offset;
15301 } else {
15302 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15303 inner_depth.increment()?;
15304 }
15305 let val_ref = self.context_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
15306 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
15307 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15308 {
15309 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15310 }
15311 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15312 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15313 }
15314 }
15315
15316 next_offset += envelope_size;
15317 _next_ordinal_to_read += 1;
15318 if next_offset >= end_offset {
15319 return Ok(());
15320 }
15321
15322 while _next_ordinal_to_read < 2 {
15324 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15325 _next_ordinal_to_read += 1;
15326 next_offset += envelope_size;
15327 }
15328
15329 let next_out_of_line = decoder.next_out_of_line();
15330 let handles_before = decoder.remaining_handles();
15331 if let Some((inlined, num_bytes, num_handles)) =
15332 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15333 {
15334 let member_inline_size =
15335 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15336 if inlined != (member_inline_size <= 4) {
15337 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15338 }
15339 let inner_offset;
15340 let mut inner_depth = depth.clone();
15341 if inlined {
15342 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15343 inner_offset = next_offset;
15344 } else {
15345 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15346 inner_depth.increment()?;
15347 }
15348 let val_ref = self.compress_flag.get_or_insert_with(|| fidl::new_empty!(bool, D));
15349 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
15350 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15351 {
15352 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15353 }
15354 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15355 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15356 }
15357 }
15358
15359 next_offset += envelope_size;
15360 _next_ordinal_to_read += 1;
15361 if next_offset >= end_offset {
15362 return Ok(());
15363 }
15364
15365 while _next_ordinal_to_read < 3 {
15367 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15368 _next_ordinal_to_read += 1;
15369 next_offset += envelope_size;
15370 }
15371
15372 let next_out_of_line = decoder.next_out_of_line();
15373 let handles_before = decoder.remaining_handles();
15374 if let Some((inlined, num_bytes, num_handles)) =
15375 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15376 {
15377 let member_inline_size =
15378 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15379 if inlined != (member_inline_size <= 4) {
15380 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15381 }
15382 let inner_offset;
15383 let mut inner_depth = depth.clone();
15384 if inlined {
15385 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15386 inner_offset = next_offset;
15387 } else {
15388 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15389 inner_depth.increment()?;
15390 }
15391 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
15392 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
15393 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15394 {
15395 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15396 }
15397 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15398 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15399 }
15400 }
15401
15402 next_offset += envelope_size;
15403 _next_ordinal_to_read += 1;
15404 if next_offset >= end_offset {
15405 return Ok(());
15406 }
15407
15408 while _next_ordinal_to_read < 4 {
15410 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15411 _next_ordinal_to_read += 1;
15412 next_offset += envelope_size;
15413 }
15414
15415 let next_out_of_line = decoder.next_out_of_line();
15416 let handles_before = decoder.remaining_handles();
15417 if let Some((inlined, num_bytes, num_handles)) =
15418 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15419 {
15420 let member_inline_size =
15421 <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
15422 decoder.context,
15423 );
15424 if inlined != (member_inline_size <= 4) {
15425 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15426 }
15427 let inner_offset;
15428 let mut inner_depth = depth.clone();
15429 if inlined {
15430 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15431 inner_offset = next_offset;
15432 } else {
15433 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15434 inner_depth.increment()?;
15435 }
15436 let val_ref = self
15437 .prefix
15438 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
15439 fidl::decode!(
15440 fidl::encoding::BoundedString<64>,
15441 D,
15442 val_ref,
15443 decoder,
15444 inner_offset,
15445 inner_depth
15446 )?;
15447 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15448 {
15449 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15450 }
15451 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15452 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15453 }
15454 }
15455
15456 next_offset += envelope_size;
15457
15458 while next_offset < end_offset {
15460 _next_ordinal_to_read += 1;
15461 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15462 next_offset += envelope_size;
15463 }
15464
15465 Ok(())
15466 }
15467 }
15468
15469 impl MultiRadioNeighborInfo {
15470 #[inline(always)]
15471 fn max_ordinal_present(&self) -> u64 {
15472 if let Some(_) = self.radio_link_info {
15473 return 3;
15474 }
15475 if let Some(_) = self.thread_rloc {
15476 return 2;
15477 }
15478 if let Some(_) = self.extended_address {
15479 return 1;
15480 }
15481 0
15482 }
15483 }
15484
15485 impl fidl::encoding::ValueTypeMarker for MultiRadioNeighborInfo {
15486 type Borrowed<'a> = &'a Self;
15487 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15488 value
15489 }
15490 }
15491
15492 unsafe impl fidl::encoding::TypeMarker for MultiRadioNeighborInfo {
15493 type Owned = Self;
15494
15495 #[inline(always)]
15496 fn inline_align(_context: fidl::encoding::Context) -> usize {
15497 8
15498 }
15499
15500 #[inline(always)]
15501 fn inline_size(_context: fidl::encoding::Context) -> usize {
15502 16
15503 }
15504 }
15505
15506 unsafe impl<D: fidl::encoding::ResourceDialect>
15507 fidl::encoding::Encode<MultiRadioNeighborInfo, D> for &MultiRadioNeighborInfo
15508 {
15509 unsafe fn encode(
15510 self,
15511 encoder: &mut fidl::encoding::Encoder<'_, D>,
15512 offset: usize,
15513 mut depth: fidl::encoding::Depth,
15514 ) -> fidl::Result<()> {
15515 encoder.debug_check_bounds::<MultiRadioNeighborInfo>(offset);
15516 let max_ordinal: u64 = self.max_ordinal_present();
15518 encoder.write_num(max_ordinal, offset);
15519 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15520 if max_ordinal == 0 {
15522 return Ok(());
15523 }
15524 depth.increment()?;
15525 let envelope_size = 8;
15526 let bytes_len = max_ordinal as usize * envelope_size;
15527 #[allow(unused_variables)]
15528 let offset = encoder.out_of_line_offset(bytes_len);
15529 let mut _prev_end_offset: usize = 0;
15530 if 1 > max_ordinal {
15531 return Ok(());
15532 }
15533
15534 let cur_offset: usize = (1 - 1) * envelope_size;
15537
15538 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15540
15541 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
15546 self.extended_address.as_ref().map(
15547 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
15548 ),
15549 encoder,
15550 offset + cur_offset,
15551 depth,
15552 )?;
15553
15554 _prev_end_offset = cur_offset + envelope_size;
15555 if 2 > max_ordinal {
15556 return Ok(());
15557 }
15558
15559 let cur_offset: usize = (2 - 1) * envelope_size;
15562
15563 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15565
15566 fidl::encoding::encode_in_envelope_optional::<u16, D>(
15571 self.thread_rloc.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
15572 encoder,
15573 offset + cur_offset,
15574 depth,
15575 )?;
15576
15577 _prev_end_offset = cur_offset + envelope_size;
15578 if 3 > max_ordinal {
15579 return Ok(());
15580 }
15581
15582 let cur_offset: usize = (3 - 1) * envelope_size;
15585
15586 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15588
15589 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<RadioLinkInfo, 5>, D>(
15594 self.radio_link_info.as_ref().map(<fidl::encoding::Vector<RadioLinkInfo, 5> as fidl::encoding::ValueTypeMarker>::borrow),
15595 encoder, offset + cur_offset, depth
15596 )?;
15597
15598 _prev_end_offset = cur_offset + envelope_size;
15599
15600 Ok(())
15601 }
15602 }
15603
15604 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15605 for MultiRadioNeighborInfo
15606 {
15607 #[inline(always)]
15608 fn new_empty() -> Self {
15609 Self::default()
15610 }
15611
15612 unsafe fn decode(
15613 &mut self,
15614 decoder: &mut fidl::encoding::Decoder<'_, D>,
15615 offset: usize,
15616 mut depth: fidl::encoding::Depth,
15617 ) -> fidl::Result<()> {
15618 decoder.debug_check_bounds::<Self>(offset);
15619 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15620 None => return Err(fidl::Error::NotNullable),
15621 Some(len) => len,
15622 };
15623 if len == 0 {
15625 return Ok(());
15626 };
15627 depth.increment()?;
15628 let envelope_size = 8;
15629 let bytes_len = len * envelope_size;
15630 let offset = decoder.out_of_line_offset(bytes_len)?;
15631 let mut _next_ordinal_to_read = 0;
15633 let mut next_offset = offset;
15634 let end_offset = offset + bytes_len;
15635 _next_ordinal_to_read += 1;
15636 if next_offset >= end_offset {
15637 return Ok(());
15638 }
15639
15640 while _next_ordinal_to_read < 1 {
15642 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15643 _next_ordinal_to_read += 1;
15644 next_offset += envelope_size;
15645 }
15646
15647 let next_out_of_line = decoder.next_out_of_line();
15648 let handles_before = decoder.remaining_handles();
15649 if let Some((inlined, num_bytes, num_handles)) =
15650 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15651 {
15652 let member_inline_size =
15653 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
15654 decoder.context,
15655 );
15656 if inlined != (member_inline_size <= 4) {
15657 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15658 }
15659 let inner_offset;
15660 let mut inner_depth = depth.clone();
15661 if inlined {
15662 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15663 inner_offset = next_offset;
15664 } else {
15665 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15666 inner_depth.increment()?;
15667 }
15668 let val_ref = self
15669 .extended_address
15670 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
15671 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
15672 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15673 {
15674 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15675 }
15676 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15677 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15678 }
15679 }
15680
15681 next_offset += envelope_size;
15682 _next_ordinal_to_read += 1;
15683 if next_offset >= end_offset {
15684 return Ok(());
15685 }
15686
15687 while _next_ordinal_to_read < 2 {
15689 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15690 _next_ordinal_to_read += 1;
15691 next_offset += envelope_size;
15692 }
15693
15694 let next_out_of_line = decoder.next_out_of_line();
15695 let handles_before = decoder.remaining_handles();
15696 if let Some((inlined, num_bytes, num_handles)) =
15697 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15698 {
15699 let member_inline_size =
15700 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15701 if inlined != (member_inline_size <= 4) {
15702 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15703 }
15704 let inner_offset;
15705 let mut inner_depth = depth.clone();
15706 if inlined {
15707 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15708 inner_offset = next_offset;
15709 } else {
15710 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15711 inner_depth.increment()?;
15712 }
15713 let val_ref = self.thread_rloc.get_or_insert_with(|| fidl::new_empty!(u16, D));
15714 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
15715 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15716 {
15717 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15718 }
15719 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15720 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15721 }
15722 }
15723
15724 next_offset += envelope_size;
15725 _next_ordinal_to_read += 1;
15726 if next_offset >= end_offset {
15727 return Ok(());
15728 }
15729
15730 while _next_ordinal_to_read < 3 {
15732 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15733 _next_ordinal_to_read += 1;
15734 next_offset += envelope_size;
15735 }
15736
15737 let next_out_of_line = decoder.next_out_of_line();
15738 let handles_before = decoder.remaining_handles();
15739 if let Some((inlined, num_bytes, num_handles)) =
15740 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15741 {
15742 let member_inline_size = <fidl::encoding::Vector<RadioLinkInfo, 5> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15743 if inlined != (member_inline_size <= 4) {
15744 return Err(fidl::Error::InvalidInlineBitInEnvelope);
15745 }
15746 let inner_offset;
15747 let mut inner_depth = depth.clone();
15748 if inlined {
15749 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15750 inner_offset = next_offset;
15751 } else {
15752 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15753 inner_depth.increment()?;
15754 }
15755 let val_ref = self.radio_link_info.get_or_insert_with(
15756 || fidl::new_empty!(fidl::encoding::Vector<RadioLinkInfo, 5>, D),
15757 );
15758 fidl::decode!(fidl::encoding::Vector<RadioLinkInfo, 5>, D, val_ref, decoder, inner_offset, inner_depth)?;
15759 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15760 {
15761 return Err(fidl::Error::InvalidNumBytesInEnvelope);
15762 }
15763 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15764 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15765 }
15766 }
15767
15768 next_offset += envelope_size;
15769
15770 while next_offset < end_offset {
15772 _next_ordinal_to_read += 1;
15773 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15774 next_offset += envelope_size;
15775 }
15776
15777 Ok(())
15778 }
15779 }
15780
15781 impl Nat64ErrorCounters {
15782 #[inline(always)]
15783 fn max_ordinal_present(&self) -> u64 {
15784 if let Some(_) = self.no_mapping {
15785 return 4;
15786 }
15787 if let Some(_) = self.unsupported_protocol {
15788 return 3;
15789 }
15790 if let Some(_) = self.illegal_packet {
15791 return 2;
15792 }
15793 if let Some(_) = self.unknown {
15794 return 1;
15795 }
15796 0
15797 }
15798 }
15799
15800 impl fidl::encoding::ValueTypeMarker for Nat64ErrorCounters {
15801 type Borrowed<'a> = &'a Self;
15802 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15803 value
15804 }
15805 }
15806
15807 unsafe impl fidl::encoding::TypeMarker for Nat64ErrorCounters {
15808 type Owned = Self;
15809
15810 #[inline(always)]
15811 fn inline_align(_context: fidl::encoding::Context) -> usize {
15812 8
15813 }
15814
15815 #[inline(always)]
15816 fn inline_size(_context: fidl::encoding::Context) -> usize {
15817 16
15818 }
15819 }
15820
15821 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64ErrorCounters, D>
15822 for &Nat64ErrorCounters
15823 {
15824 unsafe fn encode(
15825 self,
15826 encoder: &mut fidl::encoding::Encoder<'_, D>,
15827 offset: usize,
15828 mut depth: fidl::encoding::Depth,
15829 ) -> fidl::Result<()> {
15830 encoder.debug_check_bounds::<Nat64ErrorCounters>(offset);
15831 let max_ordinal: u64 = self.max_ordinal_present();
15833 encoder.write_num(max_ordinal, offset);
15834 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15835 if max_ordinal == 0 {
15837 return Ok(());
15838 }
15839 depth.increment()?;
15840 let envelope_size = 8;
15841 let bytes_len = max_ordinal as usize * envelope_size;
15842 #[allow(unused_variables)]
15843 let offset = encoder.out_of_line_offset(bytes_len);
15844 let mut _prev_end_offset: usize = 0;
15845 if 1 > max_ordinal {
15846 return Ok(());
15847 }
15848
15849 let cur_offset: usize = (1 - 1) * envelope_size;
15852
15853 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15855
15856 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
15861 self.unknown
15862 .as_ref()
15863 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
15864 encoder,
15865 offset + cur_offset,
15866 depth,
15867 )?;
15868
15869 _prev_end_offset = cur_offset + envelope_size;
15870 if 2 > max_ordinal {
15871 return Ok(());
15872 }
15873
15874 let cur_offset: usize = (2 - 1) * envelope_size;
15877
15878 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15880
15881 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
15886 self.illegal_packet
15887 .as_ref()
15888 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
15889 encoder,
15890 offset + cur_offset,
15891 depth,
15892 )?;
15893
15894 _prev_end_offset = cur_offset + envelope_size;
15895 if 3 > max_ordinal {
15896 return Ok(());
15897 }
15898
15899 let cur_offset: usize = (3 - 1) * envelope_size;
15902
15903 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15905
15906 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
15911 self.unsupported_protocol
15912 .as_ref()
15913 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
15914 encoder,
15915 offset + cur_offset,
15916 depth,
15917 )?;
15918
15919 _prev_end_offset = cur_offset + envelope_size;
15920 if 4 > max_ordinal {
15921 return Ok(());
15922 }
15923
15924 let cur_offset: usize = (4 - 1) * envelope_size;
15927
15928 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15930
15931 fidl::encoding::encode_in_envelope_optional::<Nat64PacketCounters, D>(
15936 self.no_mapping
15937 .as_ref()
15938 .map(<Nat64PacketCounters as fidl::encoding::ValueTypeMarker>::borrow),
15939 encoder,
15940 offset + cur_offset,
15941 depth,
15942 )?;
15943
15944 _prev_end_offset = cur_offset + envelope_size;
15945
15946 Ok(())
15947 }
15948 }
15949
15950 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64ErrorCounters {
15951 #[inline(always)]
15952 fn new_empty() -> Self {
15953 Self::default()
15954 }
15955
15956 unsafe fn decode(
15957 &mut self,
15958 decoder: &mut fidl::encoding::Decoder<'_, D>,
15959 offset: usize,
15960 mut depth: fidl::encoding::Depth,
15961 ) -> fidl::Result<()> {
15962 decoder.debug_check_bounds::<Self>(offset);
15963 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15964 None => return Err(fidl::Error::NotNullable),
15965 Some(len) => len,
15966 };
15967 if len == 0 {
15969 return Ok(());
15970 };
15971 depth.increment()?;
15972 let envelope_size = 8;
15973 let bytes_len = len * envelope_size;
15974 let offset = decoder.out_of_line_offset(bytes_len)?;
15975 let mut _next_ordinal_to_read = 0;
15977 let mut next_offset = offset;
15978 let end_offset = offset + bytes_len;
15979 _next_ordinal_to_read += 1;
15980 if next_offset >= end_offset {
15981 return Ok(());
15982 }
15983
15984 while _next_ordinal_to_read < 1 {
15986 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15987 _next_ordinal_to_read += 1;
15988 next_offset += envelope_size;
15989 }
15990
15991 let next_out_of_line = decoder.next_out_of_line();
15992 let handles_before = decoder.remaining_handles();
15993 if let Some((inlined, num_bytes, num_handles)) =
15994 fidl::encoding::decode_envelope_header(decoder, next_offset)?
15995 {
15996 let member_inline_size =
15997 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
15998 decoder.context,
15999 );
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 =
16013 self.unknown.get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
16014 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
16015 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16016 {
16017 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16018 }
16019 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16020 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16021 }
16022 }
16023
16024 next_offset += envelope_size;
16025 _next_ordinal_to_read += 1;
16026 if next_offset >= end_offset {
16027 return Ok(());
16028 }
16029
16030 while _next_ordinal_to_read < 2 {
16032 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16033 _next_ordinal_to_read += 1;
16034 next_offset += envelope_size;
16035 }
16036
16037 let next_out_of_line = decoder.next_out_of_line();
16038 let handles_before = decoder.remaining_handles();
16039 if let Some((inlined, num_bytes, num_handles)) =
16040 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16041 {
16042 let member_inline_size =
16043 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
16044 decoder.context,
16045 );
16046 if inlined != (member_inline_size <= 4) {
16047 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16048 }
16049 let inner_offset;
16050 let mut inner_depth = depth.clone();
16051 if inlined {
16052 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16053 inner_offset = next_offset;
16054 } else {
16055 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16056 inner_depth.increment()?;
16057 }
16058 let val_ref = self
16059 .illegal_packet
16060 .get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
16061 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
16062 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16063 {
16064 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16065 }
16066 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16067 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16068 }
16069 }
16070
16071 next_offset += envelope_size;
16072 _next_ordinal_to_read += 1;
16073 if next_offset >= end_offset {
16074 return Ok(());
16075 }
16076
16077 while _next_ordinal_to_read < 3 {
16079 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16080 _next_ordinal_to_read += 1;
16081 next_offset += envelope_size;
16082 }
16083
16084 let next_out_of_line = decoder.next_out_of_line();
16085 let handles_before = decoder.remaining_handles();
16086 if let Some((inlined, num_bytes, num_handles)) =
16087 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16088 {
16089 let member_inline_size =
16090 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
16091 decoder.context,
16092 );
16093 if inlined != (member_inline_size <= 4) {
16094 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16095 }
16096 let inner_offset;
16097 let mut inner_depth = depth.clone();
16098 if inlined {
16099 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16100 inner_offset = next_offset;
16101 } else {
16102 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16103 inner_depth.increment()?;
16104 }
16105 let val_ref = self
16106 .unsupported_protocol
16107 .get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
16108 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
16109 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16110 {
16111 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16112 }
16113 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16114 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16115 }
16116 }
16117
16118 next_offset += envelope_size;
16119 _next_ordinal_to_read += 1;
16120 if next_offset >= end_offset {
16121 return Ok(());
16122 }
16123
16124 while _next_ordinal_to_read < 4 {
16126 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16127 _next_ordinal_to_read += 1;
16128 next_offset += envelope_size;
16129 }
16130
16131 let next_out_of_line = decoder.next_out_of_line();
16132 let handles_before = decoder.remaining_handles();
16133 if let Some((inlined, num_bytes, num_handles)) =
16134 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16135 {
16136 let member_inline_size =
16137 <Nat64PacketCounters as fidl::encoding::TypeMarker>::inline_size(
16138 decoder.context,
16139 );
16140 if inlined != (member_inline_size <= 4) {
16141 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16142 }
16143 let inner_offset;
16144 let mut inner_depth = depth.clone();
16145 if inlined {
16146 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16147 inner_offset = next_offset;
16148 } else {
16149 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16150 inner_depth.increment()?;
16151 }
16152 let val_ref =
16153 self.no_mapping.get_or_insert_with(|| fidl::new_empty!(Nat64PacketCounters, D));
16154 fidl::decode!(Nat64PacketCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
16155 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16156 {
16157 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16158 }
16159 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16160 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16161 }
16162 }
16163
16164 next_offset += envelope_size;
16165
16166 while next_offset < end_offset {
16168 _next_ordinal_to_read += 1;
16169 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16170 next_offset += envelope_size;
16171 }
16172
16173 Ok(())
16174 }
16175 }
16176
16177 impl Nat64Info {
16178 #[inline(always)]
16179 fn max_ordinal_present(&self) -> u64 {
16180 if let Some(_) = self.nat64_protocol_counters {
16181 return 4;
16182 }
16183 if let Some(_) = self.nat64_error_counters {
16184 return 3;
16185 }
16186 if let Some(_) = self.nat64_mappings {
16187 return 2;
16188 }
16189 if let Some(_) = self.nat64_state {
16190 return 1;
16191 }
16192 0
16193 }
16194 }
16195
16196 impl fidl::encoding::ValueTypeMarker for Nat64Info {
16197 type Borrowed<'a> = &'a Self;
16198 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16199 value
16200 }
16201 }
16202
16203 unsafe impl fidl::encoding::TypeMarker for Nat64Info {
16204 type Owned = Self;
16205
16206 #[inline(always)]
16207 fn inline_align(_context: fidl::encoding::Context) -> usize {
16208 8
16209 }
16210
16211 #[inline(always)]
16212 fn inline_size(_context: fidl::encoding::Context) -> usize {
16213 16
16214 }
16215 }
16216
16217 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64Info, D>
16218 for &Nat64Info
16219 {
16220 unsafe fn encode(
16221 self,
16222 encoder: &mut fidl::encoding::Encoder<'_, D>,
16223 offset: usize,
16224 mut depth: fidl::encoding::Depth,
16225 ) -> fidl::Result<()> {
16226 encoder.debug_check_bounds::<Nat64Info>(offset);
16227 let max_ordinal: u64 = self.max_ordinal_present();
16229 encoder.write_num(max_ordinal, offset);
16230 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16231 if max_ordinal == 0 {
16233 return Ok(());
16234 }
16235 depth.increment()?;
16236 let envelope_size = 8;
16237 let bytes_len = max_ordinal as usize * envelope_size;
16238 #[allow(unused_variables)]
16239 let offset = encoder.out_of_line_offset(bytes_len);
16240 let mut _prev_end_offset: usize = 0;
16241 if 1 > max_ordinal {
16242 return Ok(());
16243 }
16244
16245 let cur_offset: usize = (1 - 1) * envelope_size;
16248
16249 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16251
16252 fidl::encoding::encode_in_envelope_optional::<BorderRoutingNat64State, D>(
16257 self.nat64_state
16258 .as_ref()
16259 .map(<BorderRoutingNat64State as fidl::encoding::ValueTypeMarker>::borrow),
16260 encoder,
16261 offset + cur_offset,
16262 depth,
16263 )?;
16264
16265 _prev_end_offset = cur_offset + envelope_size;
16266 if 2 > max_ordinal {
16267 return Ok(());
16268 }
16269
16270 let cur_offset: usize = (2 - 1) * envelope_size;
16273
16274 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16276
16277 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Nat64Mapping>, D>(
16282 self.nat64_mappings.as_ref().map(<fidl::encoding::UnboundedVector<Nat64Mapping> as fidl::encoding::ValueTypeMarker>::borrow),
16283 encoder, offset + cur_offset, depth
16284 )?;
16285
16286 _prev_end_offset = cur_offset + envelope_size;
16287 if 3 > max_ordinal {
16288 return Ok(());
16289 }
16290
16291 let cur_offset: usize = (3 - 1) * envelope_size;
16294
16295 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16297
16298 fidl::encoding::encode_in_envelope_optional::<Nat64ErrorCounters, D>(
16303 self.nat64_error_counters
16304 .as_ref()
16305 .map(<Nat64ErrorCounters as fidl::encoding::ValueTypeMarker>::borrow),
16306 encoder,
16307 offset + cur_offset,
16308 depth,
16309 )?;
16310
16311 _prev_end_offset = cur_offset + envelope_size;
16312 if 4 > max_ordinal {
16313 return Ok(());
16314 }
16315
16316 let cur_offset: usize = (4 - 1) * envelope_size;
16319
16320 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16322
16323 fidl::encoding::encode_in_envelope_optional::<Nat64ProtocolCounters, D>(
16328 self.nat64_protocol_counters
16329 .as_ref()
16330 .map(<Nat64ProtocolCounters as fidl::encoding::ValueTypeMarker>::borrow),
16331 encoder,
16332 offset + cur_offset,
16333 depth,
16334 )?;
16335
16336 _prev_end_offset = cur_offset + envelope_size;
16337
16338 Ok(())
16339 }
16340 }
16341
16342 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64Info {
16343 #[inline(always)]
16344 fn new_empty() -> Self {
16345 Self::default()
16346 }
16347
16348 unsafe fn decode(
16349 &mut self,
16350 decoder: &mut fidl::encoding::Decoder<'_, D>,
16351 offset: usize,
16352 mut depth: fidl::encoding::Depth,
16353 ) -> fidl::Result<()> {
16354 decoder.debug_check_bounds::<Self>(offset);
16355 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16356 None => return Err(fidl::Error::NotNullable),
16357 Some(len) => len,
16358 };
16359 if len == 0 {
16361 return Ok(());
16362 };
16363 depth.increment()?;
16364 let envelope_size = 8;
16365 let bytes_len = len * envelope_size;
16366 let offset = decoder.out_of_line_offset(bytes_len)?;
16367 let mut _next_ordinal_to_read = 0;
16369 let mut next_offset = offset;
16370 let end_offset = offset + bytes_len;
16371 _next_ordinal_to_read += 1;
16372 if next_offset >= end_offset {
16373 return Ok(());
16374 }
16375
16376 while _next_ordinal_to_read < 1 {
16378 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16379 _next_ordinal_to_read += 1;
16380 next_offset += envelope_size;
16381 }
16382
16383 let next_out_of_line = decoder.next_out_of_line();
16384 let handles_before = decoder.remaining_handles();
16385 if let Some((inlined, num_bytes, num_handles)) =
16386 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16387 {
16388 let member_inline_size =
16389 <BorderRoutingNat64State as fidl::encoding::TypeMarker>::inline_size(
16390 decoder.context,
16391 );
16392 if inlined != (member_inline_size <= 4) {
16393 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16394 }
16395 let inner_offset;
16396 let mut inner_depth = depth.clone();
16397 if inlined {
16398 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16399 inner_offset = next_offset;
16400 } else {
16401 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16402 inner_depth.increment()?;
16403 }
16404 let val_ref = self
16405 .nat64_state
16406 .get_or_insert_with(|| fidl::new_empty!(BorderRoutingNat64State, D));
16407 fidl::decode!(
16408 BorderRoutingNat64State,
16409 D,
16410 val_ref,
16411 decoder,
16412 inner_offset,
16413 inner_depth
16414 )?;
16415 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16416 {
16417 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16418 }
16419 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16420 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16421 }
16422 }
16423
16424 next_offset += envelope_size;
16425 _next_ordinal_to_read += 1;
16426 if next_offset >= end_offset {
16427 return Ok(());
16428 }
16429
16430 while _next_ordinal_to_read < 2 {
16432 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16433 _next_ordinal_to_read += 1;
16434 next_offset += envelope_size;
16435 }
16436
16437 let next_out_of_line = decoder.next_out_of_line();
16438 let handles_before = decoder.remaining_handles();
16439 if let Some((inlined, num_bytes, num_handles)) =
16440 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16441 {
16442 let member_inline_size = <fidl::encoding::UnboundedVector<Nat64Mapping> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16443 if inlined != (member_inline_size <= 4) {
16444 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16445 }
16446 let inner_offset;
16447 let mut inner_depth = depth.clone();
16448 if inlined {
16449 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16450 inner_offset = next_offset;
16451 } else {
16452 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16453 inner_depth.increment()?;
16454 }
16455 let val_ref = self.nat64_mappings.get_or_insert_with(|| {
16456 fidl::new_empty!(fidl::encoding::UnboundedVector<Nat64Mapping>, D)
16457 });
16458 fidl::decode!(
16459 fidl::encoding::UnboundedVector<Nat64Mapping>,
16460 D,
16461 val_ref,
16462 decoder,
16463 inner_offset,
16464 inner_depth
16465 )?;
16466 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16467 {
16468 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16469 }
16470 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16471 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16472 }
16473 }
16474
16475 next_offset += envelope_size;
16476 _next_ordinal_to_read += 1;
16477 if next_offset >= end_offset {
16478 return Ok(());
16479 }
16480
16481 while _next_ordinal_to_read < 3 {
16483 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16484 _next_ordinal_to_read += 1;
16485 next_offset += envelope_size;
16486 }
16487
16488 let next_out_of_line = decoder.next_out_of_line();
16489 let handles_before = decoder.remaining_handles();
16490 if let Some((inlined, num_bytes, num_handles)) =
16491 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16492 {
16493 let member_inline_size =
16494 <Nat64ErrorCounters as fidl::encoding::TypeMarker>::inline_size(
16495 decoder.context,
16496 );
16497 if inlined != (member_inline_size <= 4) {
16498 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16499 }
16500 let inner_offset;
16501 let mut inner_depth = depth.clone();
16502 if inlined {
16503 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16504 inner_offset = next_offset;
16505 } else {
16506 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16507 inner_depth.increment()?;
16508 }
16509 let val_ref = self
16510 .nat64_error_counters
16511 .get_or_insert_with(|| fidl::new_empty!(Nat64ErrorCounters, D));
16512 fidl::decode!(Nat64ErrorCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
16513 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16514 {
16515 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16516 }
16517 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16518 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16519 }
16520 }
16521
16522 next_offset += envelope_size;
16523 _next_ordinal_to_read += 1;
16524 if next_offset >= end_offset {
16525 return Ok(());
16526 }
16527
16528 while _next_ordinal_to_read < 4 {
16530 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16531 _next_ordinal_to_read += 1;
16532 next_offset += envelope_size;
16533 }
16534
16535 let next_out_of_line = decoder.next_out_of_line();
16536 let handles_before = decoder.remaining_handles();
16537 if let Some((inlined, num_bytes, num_handles)) =
16538 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16539 {
16540 let member_inline_size =
16541 <Nat64ProtocolCounters as fidl::encoding::TypeMarker>::inline_size(
16542 decoder.context,
16543 );
16544 if inlined != (member_inline_size <= 4) {
16545 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16546 }
16547 let inner_offset;
16548 let mut inner_depth = depth.clone();
16549 if inlined {
16550 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16551 inner_offset = next_offset;
16552 } else {
16553 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16554 inner_depth.increment()?;
16555 }
16556 let val_ref = self
16557 .nat64_protocol_counters
16558 .get_or_insert_with(|| fidl::new_empty!(Nat64ProtocolCounters, D));
16559 fidl::decode!(
16560 Nat64ProtocolCounters,
16561 D,
16562 val_ref,
16563 decoder,
16564 inner_offset,
16565 inner_depth
16566 )?;
16567 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16568 {
16569 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16570 }
16571 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16572 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16573 }
16574 }
16575
16576 next_offset += envelope_size;
16577
16578 while next_offset < end_offset {
16580 _next_ordinal_to_read += 1;
16581 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16582 next_offset += envelope_size;
16583 }
16584
16585 Ok(())
16586 }
16587 }
16588
16589 impl Nat64Mapping {
16590 #[inline(always)]
16591 fn max_ordinal_present(&self) -> u64 {
16592 if let Some(_) = self.counters {
16593 return 5;
16594 }
16595 if let Some(_) = self.remaining_time_ms {
16596 return 4;
16597 }
16598 if let Some(_) = self.ip6_addr {
16599 return 3;
16600 }
16601 if let Some(_) = self.ip4_addr {
16602 return 2;
16603 }
16604 if let Some(_) = self.mapping_id {
16605 return 1;
16606 }
16607 0
16608 }
16609 }
16610
16611 impl fidl::encoding::ValueTypeMarker for Nat64Mapping {
16612 type Borrowed<'a> = &'a Self;
16613 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16614 value
16615 }
16616 }
16617
16618 unsafe impl fidl::encoding::TypeMarker for Nat64Mapping {
16619 type Owned = Self;
16620
16621 #[inline(always)]
16622 fn inline_align(_context: fidl::encoding::Context) -> usize {
16623 8
16624 }
16625
16626 #[inline(always)]
16627 fn inline_size(_context: fidl::encoding::Context) -> usize {
16628 16
16629 }
16630 }
16631
16632 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64Mapping, D>
16633 for &Nat64Mapping
16634 {
16635 unsafe fn encode(
16636 self,
16637 encoder: &mut fidl::encoding::Encoder<'_, D>,
16638 offset: usize,
16639 mut depth: fidl::encoding::Depth,
16640 ) -> fidl::Result<()> {
16641 encoder.debug_check_bounds::<Nat64Mapping>(offset);
16642 let max_ordinal: u64 = self.max_ordinal_present();
16644 encoder.write_num(max_ordinal, offset);
16645 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16646 if max_ordinal == 0 {
16648 return Ok(());
16649 }
16650 depth.increment()?;
16651 let envelope_size = 8;
16652 let bytes_len = max_ordinal as usize * envelope_size;
16653 #[allow(unused_variables)]
16654 let offset = encoder.out_of_line_offset(bytes_len);
16655 let mut _prev_end_offset: usize = 0;
16656 if 1 > max_ordinal {
16657 return Ok(());
16658 }
16659
16660 let cur_offset: usize = (1 - 1) * envelope_size;
16663
16664 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16666
16667 fidl::encoding::encode_in_envelope_optional::<u64, D>(
16672 self.mapping_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
16673 encoder,
16674 offset + cur_offset,
16675 depth,
16676 )?;
16677
16678 _prev_end_offset = cur_offset + envelope_size;
16679 if 2 > max_ordinal {
16680 return Ok(());
16681 }
16682
16683 let cur_offset: usize = (2 - 1) * envelope_size;
16686
16687 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16689
16690 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
16695 self.ip4_addr.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
16696 encoder, offset + cur_offset, depth
16697 )?;
16698
16699 _prev_end_offset = cur_offset + envelope_size;
16700 if 3 > max_ordinal {
16701 return Ok(());
16702 }
16703
16704 let cur_offset: usize = (3 - 1) * envelope_size;
16707
16708 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16710
16711 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
16716 self.ip6_addr.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
16717 encoder, offset + cur_offset, depth
16718 )?;
16719
16720 _prev_end_offset = cur_offset + envelope_size;
16721 if 4 > max_ordinal {
16722 return Ok(());
16723 }
16724
16725 let cur_offset: usize = (4 - 1) * envelope_size;
16728
16729 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16731
16732 fidl::encoding::encode_in_envelope_optional::<u32, D>(
16737 self.remaining_time_ms
16738 .as_ref()
16739 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
16740 encoder,
16741 offset + cur_offset,
16742 depth,
16743 )?;
16744
16745 _prev_end_offset = cur_offset + envelope_size;
16746 if 5 > max_ordinal {
16747 return Ok(());
16748 }
16749
16750 let cur_offset: usize = (5 - 1) * envelope_size;
16753
16754 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16756
16757 fidl::encoding::encode_in_envelope_optional::<Nat64ProtocolCounters, D>(
16762 self.counters
16763 .as_ref()
16764 .map(<Nat64ProtocolCounters as fidl::encoding::ValueTypeMarker>::borrow),
16765 encoder,
16766 offset + cur_offset,
16767 depth,
16768 )?;
16769
16770 _prev_end_offset = cur_offset + envelope_size;
16771
16772 Ok(())
16773 }
16774 }
16775
16776 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64Mapping {
16777 #[inline(always)]
16778 fn new_empty() -> Self {
16779 Self::default()
16780 }
16781
16782 unsafe fn decode(
16783 &mut self,
16784 decoder: &mut fidl::encoding::Decoder<'_, D>,
16785 offset: usize,
16786 mut depth: fidl::encoding::Depth,
16787 ) -> fidl::Result<()> {
16788 decoder.debug_check_bounds::<Self>(offset);
16789 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16790 None => return Err(fidl::Error::NotNullable),
16791 Some(len) => len,
16792 };
16793 if len == 0 {
16795 return Ok(());
16796 };
16797 depth.increment()?;
16798 let envelope_size = 8;
16799 let bytes_len = len * envelope_size;
16800 let offset = decoder.out_of_line_offset(bytes_len)?;
16801 let mut _next_ordinal_to_read = 0;
16803 let mut next_offset = offset;
16804 let end_offset = offset + bytes_len;
16805 _next_ordinal_to_read += 1;
16806 if next_offset >= end_offset {
16807 return Ok(());
16808 }
16809
16810 while _next_ordinal_to_read < 1 {
16812 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16813 _next_ordinal_to_read += 1;
16814 next_offset += envelope_size;
16815 }
16816
16817 let next_out_of_line = decoder.next_out_of_line();
16818 let handles_before = decoder.remaining_handles();
16819 if let Some((inlined, num_bytes, num_handles)) =
16820 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16821 {
16822 let member_inline_size =
16823 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16824 if inlined != (member_inline_size <= 4) {
16825 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16826 }
16827 let inner_offset;
16828 let mut inner_depth = depth.clone();
16829 if inlined {
16830 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16831 inner_offset = next_offset;
16832 } else {
16833 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16834 inner_depth.increment()?;
16835 }
16836 let val_ref = self.mapping_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
16837 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
16838 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16839 {
16840 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16841 }
16842 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16843 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16844 }
16845 }
16846
16847 next_offset += envelope_size;
16848 _next_ordinal_to_read += 1;
16849 if next_offset >= end_offset {
16850 return Ok(());
16851 }
16852
16853 while _next_ordinal_to_read < 2 {
16855 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16856 _next_ordinal_to_read += 1;
16857 next_offset += envelope_size;
16858 }
16859
16860 let next_out_of_line = decoder.next_out_of_line();
16861 let handles_before = decoder.remaining_handles();
16862 if let Some((inlined, num_bytes, num_handles)) =
16863 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16864 {
16865 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16866 if inlined != (member_inline_size <= 4) {
16867 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16868 }
16869 let inner_offset;
16870 let mut inner_depth = depth.clone();
16871 if inlined {
16872 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16873 inner_offset = next_offset;
16874 } else {
16875 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16876 inner_depth.increment()?;
16877 }
16878 let val_ref = self.ip4_addr.get_or_insert_with(|| {
16879 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
16880 });
16881 fidl::decode!(
16882 fidl::encoding::UnboundedVector<u8>,
16883 D,
16884 val_ref,
16885 decoder,
16886 inner_offset,
16887 inner_depth
16888 )?;
16889 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16890 {
16891 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16892 }
16893 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16894 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16895 }
16896 }
16897
16898 next_offset += envelope_size;
16899 _next_ordinal_to_read += 1;
16900 if next_offset >= end_offset {
16901 return Ok(());
16902 }
16903
16904 while _next_ordinal_to_read < 3 {
16906 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16907 _next_ordinal_to_read += 1;
16908 next_offset += envelope_size;
16909 }
16910
16911 let next_out_of_line = decoder.next_out_of_line();
16912 let handles_before = decoder.remaining_handles();
16913 if let Some((inlined, num_bytes, num_handles)) =
16914 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16915 {
16916 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16917 if inlined != (member_inline_size <= 4) {
16918 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16919 }
16920 let inner_offset;
16921 let mut inner_depth = depth.clone();
16922 if inlined {
16923 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16924 inner_offset = next_offset;
16925 } else {
16926 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16927 inner_depth.increment()?;
16928 }
16929 let val_ref = self.ip6_addr.get_or_insert_with(|| {
16930 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
16931 });
16932 fidl::decode!(
16933 fidl::encoding::UnboundedVector<u8>,
16934 D,
16935 val_ref,
16936 decoder,
16937 inner_offset,
16938 inner_depth
16939 )?;
16940 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16941 {
16942 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16943 }
16944 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16945 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16946 }
16947 }
16948
16949 next_offset += envelope_size;
16950 _next_ordinal_to_read += 1;
16951 if next_offset >= end_offset {
16952 return Ok(());
16953 }
16954
16955 while _next_ordinal_to_read < 4 {
16957 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16958 _next_ordinal_to_read += 1;
16959 next_offset += envelope_size;
16960 }
16961
16962 let next_out_of_line = decoder.next_out_of_line();
16963 let handles_before = decoder.remaining_handles();
16964 if let Some((inlined, num_bytes, num_handles)) =
16965 fidl::encoding::decode_envelope_header(decoder, next_offset)?
16966 {
16967 let member_inline_size =
16968 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16969 if inlined != (member_inline_size <= 4) {
16970 return Err(fidl::Error::InvalidInlineBitInEnvelope);
16971 }
16972 let inner_offset;
16973 let mut inner_depth = depth.clone();
16974 if inlined {
16975 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16976 inner_offset = next_offset;
16977 } else {
16978 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16979 inner_depth.increment()?;
16980 }
16981 let val_ref =
16982 self.remaining_time_ms.get_or_insert_with(|| fidl::new_empty!(u32, D));
16983 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
16984 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16985 {
16986 return Err(fidl::Error::InvalidNumBytesInEnvelope);
16987 }
16988 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16989 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16990 }
16991 }
16992
16993 next_offset += envelope_size;
16994 _next_ordinal_to_read += 1;
16995 if next_offset >= end_offset {
16996 return Ok(());
16997 }
16998
16999 while _next_ordinal_to_read < 5 {
17001 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17002 _next_ordinal_to_read += 1;
17003 next_offset += envelope_size;
17004 }
17005
17006 let next_out_of_line = decoder.next_out_of_line();
17007 let handles_before = decoder.remaining_handles();
17008 if let Some((inlined, num_bytes, num_handles)) =
17009 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17010 {
17011 let member_inline_size =
17012 <Nat64ProtocolCounters as fidl::encoding::TypeMarker>::inline_size(
17013 decoder.context,
17014 );
17015 if inlined != (member_inline_size <= 4) {
17016 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17017 }
17018 let inner_offset;
17019 let mut inner_depth = depth.clone();
17020 if inlined {
17021 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17022 inner_offset = next_offset;
17023 } else {
17024 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17025 inner_depth.increment()?;
17026 }
17027 let val_ref =
17028 self.counters.get_or_insert_with(|| fidl::new_empty!(Nat64ProtocolCounters, D));
17029 fidl::decode!(
17030 Nat64ProtocolCounters,
17031 D,
17032 val_ref,
17033 decoder,
17034 inner_offset,
17035 inner_depth
17036 )?;
17037 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17038 {
17039 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17040 }
17041 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17042 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17043 }
17044 }
17045
17046 next_offset += envelope_size;
17047
17048 while next_offset < end_offset {
17050 _next_ordinal_to_read += 1;
17051 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17052 next_offset += envelope_size;
17053 }
17054
17055 Ok(())
17056 }
17057 }
17058
17059 impl Nat64PacketCounters {
17060 #[inline(always)]
17061 fn max_ordinal_present(&self) -> u64 {
17062 if let Some(_) = self.ipv6_to_ipv4_packets {
17063 return 2;
17064 }
17065 if let Some(_) = self.ipv4_to_ipv6_packets {
17066 return 1;
17067 }
17068 0
17069 }
17070 }
17071
17072 impl fidl::encoding::ValueTypeMarker for Nat64PacketCounters {
17073 type Borrowed<'a> = &'a Self;
17074 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17075 value
17076 }
17077 }
17078
17079 unsafe impl fidl::encoding::TypeMarker for Nat64PacketCounters {
17080 type Owned = Self;
17081
17082 #[inline(always)]
17083 fn inline_align(_context: fidl::encoding::Context) -> usize {
17084 8
17085 }
17086
17087 #[inline(always)]
17088 fn inline_size(_context: fidl::encoding::Context) -> usize {
17089 16
17090 }
17091 }
17092
17093 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64PacketCounters, D>
17094 for &Nat64PacketCounters
17095 {
17096 unsafe fn encode(
17097 self,
17098 encoder: &mut fidl::encoding::Encoder<'_, D>,
17099 offset: usize,
17100 mut depth: fidl::encoding::Depth,
17101 ) -> fidl::Result<()> {
17102 encoder.debug_check_bounds::<Nat64PacketCounters>(offset);
17103 let max_ordinal: u64 = self.max_ordinal_present();
17105 encoder.write_num(max_ordinal, offset);
17106 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17107 if max_ordinal == 0 {
17109 return Ok(());
17110 }
17111 depth.increment()?;
17112 let envelope_size = 8;
17113 let bytes_len = max_ordinal as usize * envelope_size;
17114 #[allow(unused_variables)]
17115 let offset = encoder.out_of_line_offset(bytes_len);
17116 let mut _prev_end_offset: usize = 0;
17117 if 1 > max_ordinal {
17118 return Ok(());
17119 }
17120
17121 let cur_offset: usize = (1 - 1) * envelope_size;
17124
17125 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17127
17128 fidl::encoding::encode_in_envelope_optional::<u64, D>(
17133 self.ipv4_to_ipv6_packets
17134 .as_ref()
17135 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
17136 encoder,
17137 offset + cur_offset,
17138 depth,
17139 )?;
17140
17141 _prev_end_offset = cur_offset + envelope_size;
17142 if 2 > max_ordinal {
17143 return Ok(());
17144 }
17145
17146 let cur_offset: usize = (2 - 1) * envelope_size;
17149
17150 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17152
17153 fidl::encoding::encode_in_envelope_optional::<u64, D>(
17158 self.ipv6_to_ipv4_packets
17159 .as_ref()
17160 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
17161 encoder,
17162 offset + cur_offset,
17163 depth,
17164 )?;
17165
17166 _prev_end_offset = cur_offset + envelope_size;
17167
17168 Ok(())
17169 }
17170 }
17171
17172 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64PacketCounters {
17173 #[inline(always)]
17174 fn new_empty() -> Self {
17175 Self::default()
17176 }
17177
17178 unsafe fn decode(
17179 &mut self,
17180 decoder: &mut fidl::encoding::Decoder<'_, D>,
17181 offset: usize,
17182 mut depth: fidl::encoding::Depth,
17183 ) -> fidl::Result<()> {
17184 decoder.debug_check_bounds::<Self>(offset);
17185 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17186 None => return Err(fidl::Error::NotNullable),
17187 Some(len) => len,
17188 };
17189 if len == 0 {
17191 return Ok(());
17192 };
17193 depth.increment()?;
17194 let envelope_size = 8;
17195 let bytes_len = len * envelope_size;
17196 let offset = decoder.out_of_line_offset(bytes_len)?;
17197 let mut _next_ordinal_to_read = 0;
17199 let mut next_offset = offset;
17200 let end_offset = offset + bytes_len;
17201 _next_ordinal_to_read += 1;
17202 if next_offset >= end_offset {
17203 return Ok(());
17204 }
17205
17206 while _next_ordinal_to_read < 1 {
17208 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17209 _next_ordinal_to_read += 1;
17210 next_offset += envelope_size;
17211 }
17212
17213 let next_out_of_line = decoder.next_out_of_line();
17214 let handles_before = decoder.remaining_handles();
17215 if let Some((inlined, num_bytes, num_handles)) =
17216 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17217 {
17218 let member_inline_size =
17219 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17220 if inlined != (member_inline_size <= 4) {
17221 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17222 }
17223 let inner_offset;
17224 let mut inner_depth = depth.clone();
17225 if inlined {
17226 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17227 inner_offset = next_offset;
17228 } else {
17229 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17230 inner_depth.increment()?;
17231 }
17232 let val_ref =
17233 self.ipv4_to_ipv6_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
17234 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
17235 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17236 {
17237 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17238 }
17239 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17240 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17241 }
17242 }
17243
17244 next_offset += envelope_size;
17245 _next_ordinal_to_read += 1;
17246 if next_offset >= end_offset {
17247 return Ok(());
17248 }
17249
17250 while _next_ordinal_to_read < 2 {
17252 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17253 _next_ordinal_to_read += 1;
17254 next_offset += envelope_size;
17255 }
17256
17257 let next_out_of_line = decoder.next_out_of_line();
17258 let handles_before = decoder.remaining_handles();
17259 if let Some((inlined, num_bytes, num_handles)) =
17260 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17261 {
17262 let member_inline_size =
17263 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17264 if inlined != (member_inline_size <= 4) {
17265 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17266 }
17267 let inner_offset;
17268 let mut inner_depth = depth.clone();
17269 if inlined {
17270 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17271 inner_offset = next_offset;
17272 } else {
17273 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17274 inner_depth.increment()?;
17275 }
17276 let val_ref =
17277 self.ipv6_to_ipv4_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
17278 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
17279 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17280 {
17281 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17282 }
17283 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17284 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17285 }
17286 }
17287
17288 next_offset += envelope_size;
17289
17290 while next_offset < end_offset {
17292 _next_ordinal_to_read += 1;
17293 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17294 next_offset += envelope_size;
17295 }
17296
17297 Ok(())
17298 }
17299 }
17300
17301 impl Nat64ProtocolCounters {
17302 #[inline(always)]
17303 fn max_ordinal_present(&self) -> u64 {
17304 if let Some(_) = self.total {
17305 return 4;
17306 }
17307 if let Some(_) = self.icmp {
17308 return 3;
17309 }
17310 if let Some(_) = self.udp {
17311 return 2;
17312 }
17313 if let Some(_) = self.tcp {
17314 return 1;
17315 }
17316 0
17317 }
17318 }
17319
17320 impl fidl::encoding::ValueTypeMarker for Nat64ProtocolCounters {
17321 type Borrowed<'a> = &'a Self;
17322 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17323 value
17324 }
17325 }
17326
17327 unsafe impl fidl::encoding::TypeMarker for Nat64ProtocolCounters {
17328 type Owned = Self;
17329
17330 #[inline(always)]
17331 fn inline_align(_context: fidl::encoding::Context) -> usize {
17332 8
17333 }
17334
17335 #[inline(always)]
17336 fn inline_size(_context: fidl::encoding::Context) -> usize {
17337 16
17338 }
17339 }
17340
17341 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64ProtocolCounters, D>
17342 for &Nat64ProtocolCounters
17343 {
17344 unsafe fn encode(
17345 self,
17346 encoder: &mut fidl::encoding::Encoder<'_, D>,
17347 offset: usize,
17348 mut depth: fidl::encoding::Depth,
17349 ) -> fidl::Result<()> {
17350 encoder.debug_check_bounds::<Nat64ProtocolCounters>(offset);
17351 let max_ordinal: u64 = self.max_ordinal_present();
17353 encoder.write_num(max_ordinal, offset);
17354 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17355 if max_ordinal == 0 {
17357 return Ok(());
17358 }
17359 depth.increment()?;
17360 let envelope_size = 8;
17361 let bytes_len = max_ordinal as usize * envelope_size;
17362 #[allow(unused_variables)]
17363 let offset = encoder.out_of_line_offset(bytes_len);
17364 let mut _prev_end_offset: usize = 0;
17365 if 1 > max_ordinal {
17366 return Ok(());
17367 }
17368
17369 let cur_offset: usize = (1 - 1) * envelope_size;
17372
17373 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17375
17376 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
17381 self.tcp
17382 .as_ref()
17383 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
17384 encoder,
17385 offset + cur_offset,
17386 depth,
17387 )?;
17388
17389 _prev_end_offset = cur_offset + envelope_size;
17390 if 2 > max_ordinal {
17391 return Ok(());
17392 }
17393
17394 let cur_offset: usize = (2 - 1) * envelope_size;
17397
17398 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17400
17401 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
17406 self.udp
17407 .as_ref()
17408 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
17409 encoder,
17410 offset + cur_offset,
17411 depth,
17412 )?;
17413
17414 _prev_end_offset = cur_offset + envelope_size;
17415 if 3 > max_ordinal {
17416 return Ok(());
17417 }
17418
17419 let cur_offset: usize = (3 - 1) * envelope_size;
17422
17423 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17425
17426 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
17431 self.icmp
17432 .as_ref()
17433 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
17434 encoder,
17435 offset + cur_offset,
17436 depth,
17437 )?;
17438
17439 _prev_end_offset = cur_offset + envelope_size;
17440 if 4 > max_ordinal {
17441 return Ok(());
17442 }
17443
17444 let cur_offset: usize = (4 - 1) * envelope_size;
17447
17448 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17450
17451 fidl::encoding::encode_in_envelope_optional::<Nat64TrafficCounters, D>(
17456 self.total
17457 .as_ref()
17458 .map(<Nat64TrafficCounters as fidl::encoding::ValueTypeMarker>::borrow),
17459 encoder,
17460 offset + cur_offset,
17461 depth,
17462 )?;
17463
17464 _prev_end_offset = cur_offset + envelope_size;
17465
17466 Ok(())
17467 }
17468 }
17469
17470 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64ProtocolCounters {
17471 #[inline(always)]
17472 fn new_empty() -> Self {
17473 Self::default()
17474 }
17475
17476 unsafe fn decode(
17477 &mut self,
17478 decoder: &mut fidl::encoding::Decoder<'_, D>,
17479 offset: usize,
17480 mut depth: fidl::encoding::Depth,
17481 ) -> fidl::Result<()> {
17482 decoder.debug_check_bounds::<Self>(offset);
17483 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17484 None => return Err(fidl::Error::NotNullable),
17485 Some(len) => len,
17486 };
17487 if len == 0 {
17489 return Ok(());
17490 };
17491 depth.increment()?;
17492 let envelope_size = 8;
17493 let bytes_len = len * envelope_size;
17494 let offset = decoder.out_of_line_offset(bytes_len)?;
17495 let mut _next_ordinal_to_read = 0;
17497 let mut next_offset = offset;
17498 let end_offset = offset + bytes_len;
17499 _next_ordinal_to_read += 1;
17500 if next_offset >= end_offset {
17501 return Ok(());
17502 }
17503
17504 while _next_ordinal_to_read < 1 {
17506 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17507 _next_ordinal_to_read += 1;
17508 next_offset += envelope_size;
17509 }
17510
17511 let next_out_of_line = decoder.next_out_of_line();
17512 let handles_before = decoder.remaining_handles();
17513 if let Some((inlined, num_bytes, num_handles)) =
17514 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17515 {
17516 let member_inline_size =
17517 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
17518 decoder.context,
17519 );
17520 if inlined != (member_inline_size <= 4) {
17521 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17522 }
17523 let inner_offset;
17524 let mut inner_depth = depth.clone();
17525 if inlined {
17526 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17527 inner_offset = next_offset;
17528 } else {
17529 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17530 inner_depth.increment()?;
17531 }
17532 let val_ref =
17533 self.tcp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
17534 fidl::decode!(
17535 Nat64TrafficCounters,
17536 D,
17537 val_ref,
17538 decoder,
17539 inner_offset,
17540 inner_depth
17541 )?;
17542 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17543 {
17544 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17545 }
17546 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17547 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17548 }
17549 }
17550
17551 next_offset += envelope_size;
17552 _next_ordinal_to_read += 1;
17553 if next_offset >= end_offset {
17554 return Ok(());
17555 }
17556
17557 while _next_ordinal_to_read < 2 {
17559 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17560 _next_ordinal_to_read += 1;
17561 next_offset += envelope_size;
17562 }
17563
17564 let next_out_of_line = decoder.next_out_of_line();
17565 let handles_before = decoder.remaining_handles();
17566 if let Some((inlined, num_bytes, num_handles)) =
17567 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17568 {
17569 let member_inline_size =
17570 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
17571 decoder.context,
17572 );
17573 if inlined != (member_inline_size <= 4) {
17574 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17575 }
17576 let inner_offset;
17577 let mut inner_depth = depth.clone();
17578 if inlined {
17579 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17580 inner_offset = next_offset;
17581 } else {
17582 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17583 inner_depth.increment()?;
17584 }
17585 let val_ref =
17586 self.udp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
17587 fidl::decode!(
17588 Nat64TrafficCounters,
17589 D,
17590 val_ref,
17591 decoder,
17592 inner_offset,
17593 inner_depth
17594 )?;
17595 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17596 {
17597 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17598 }
17599 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17600 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17601 }
17602 }
17603
17604 next_offset += envelope_size;
17605 _next_ordinal_to_read += 1;
17606 if next_offset >= end_offset {
17607 return Ok(());
17608 }
17609
17610 while _next_ordinal_to_read < 3 {
17612 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17613 _next_ordinal_to_read += 1;
17614 next_offset += envelope_size;
17615 }
17616
17617 let next_out_of_line = decoder.next_out_of_line();
17618 let handles_before = decoder.remaining_handles();
17619 if let Some((inlined, num_bytes, num_handles)) =
17620 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17621 {
17622 let member_inline_size =
17623 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
17624 decoder.context,
17625 );
17626 if inlined != (member_inline_size <= 4) {
17627 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17628 }
17629 let inner_offset;
17630 let mut inner_depth = depth.clone();
17631 if inlined {
17632 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17633 inner_offset = next_offset;
17634 } else {
17635 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17636 inner_depth.increment()?;
17637 }
17638 let val_ref =
17639 self.icmp.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
17640 fidl::decode!(
17641 Nat64TrafficCounters,
17642 D,
17643 val_ref,
17644 decoder,
17645 inner_offset,
17646 inner_depth
17647 )?;
17648 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17649 {
17650 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17651 }
17652 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17653 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17654 }
17655 }
17656
17657 next_offset += envelope_size;
17658 _next_ordinal_to_read += 1;
17659 if next_offset >= end_offset {
17660 return Ok(());
17661 }
17662
17663 while _next_ordinal_to_read < 4 {
17665 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17666 _next_ordinal_to_read += 1;
17667 next_offset += envelope_size;
17668 }
17669
17670 let next_out_of_line = decoder.next_out_of_line();
17671 let handles_before = decoder.remaining_handles();
17672 if let Some((inlined, num_bytes, num_handles)) =
17673 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17674 {
17675 let member_inline_size =
17676 <Nat64TrafficCounters as fidl::encoding::TypeMarker>::inline_size(
17677 decoder.context,
17678 );
17679 if inlined != (member_inline_size <= 4) {
17680 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17681 }
17682 let inner_offset;
17683 let mut inner_depth = depth.clone();
17684 if inlined {
17685 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17686 inner_offset = next_offset;
17687 } else {
17688 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17689 inner_depth.increment()?;
17690 }
17691 let val_ref =
17692 self.total.get_or_insert_with(|| fidl::new_empty!(Nat64TrafficCounters, D));
17693 fidl::decode!(
17694 Nat64TrafficCounters,
17695 D,
17696 val_ref,
17697 decoder,
17698 inner_offset,
17699 inner_depth
17700 )?;
17701 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17702 {
17703 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17704 }
17705 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17706 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17707 }
17708 }
17709
17710 next_offset += envelope_size;
17711
17712 while next_offset < end_offset {
17714 _next_ordinal_to_read += 1;
17715 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17716 next_offset += envelope_size;
17717 }
17718
17719 Ok(())
17720 }
17721 }
17722
17723 impl Nat64TrafficCounters {
17724 #[inline(always)]
17725 fn max_ordinal_present(&self) -> u64 {
17726 if let Some(_) = self.ipv6_to_ipv4_bytes {
17727 return 4;
17728 }
17729 if let Some(_) = self.ipv6_to_ipv4_packets {
17730 return 3;
17731 }
17732 if let Some(_) = self.ipv4_to_ipv6_bytes {
17733 return 2;
17734 }
17735 if let Some(_) = self.ipv4_to_ipv6_packets {
17736 return 1;
17737 }
17738 0
17739 }
17740 }
17741
17742 impl fidl::encoding::ValueTypeMarker for Nat64TrafficCounters {
17743 type Borrowed<'a> = &'a Self;
17744 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17745 value
17746 }
17747 }
17748
17749 unsafe impl fidl::encoding::TypeMarker for Nat64TrafficCounters {
17750 type Owned = Self;
17751
17752 #[inline(always)]
17753 fn inline_align(_context: fidl::encoding::Context) -> usize {
17754 8
17755 }
17756
17757 #[inline(always)]
17758 fn inline_size(_context: fidl::encoding::Context) -> usize {
17759 16
17760 }
17761 }
17762
17763 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nat64TrafficCounters, D>
17764 for &Nat64TrafficCounters
17765 {
17766 unsafe fn encode(
17767 self,
17768 encoder: &mut fidl::encoding::Encoder<'_, D>,
17769 offset: usize,
17770 mut depth: fidl::encoding::Depth,
17771 ) -> fidl::Result<()> {
17772 encoder.debug_check_bounds::<Nat64TrafficCounters>(offset);
17773 let max_ordinal: u64 = self.max_ordinal_present();
17775 encoder.write_num(max_ordinal, offset);
17776 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17777 if max_ordinal == 0 {
17779 return Ok(());
17780 }
17781 depth.increment()?;
17782 let envelope_size = 8;
17783 let bytes_len = max_ordinal as usize * envelope_size;
17784 #[allow(unused_variables)]
17785 let offset = encoder.out_of_line_offset(bytes_len);
17786 let mut _prev_end_offset: usize = 0;
17787 if 1 > max_ordinal {
17788 return Ok(());
17789 }
17790
17791 let cur_offset: usize = (1 - 1) * envelope_size;
17794
17795 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17797
17798 fidl::encoding::encode_in_envelope_optional::<u64, D>(
17803 self.ipv4_to_ipv6_packets
17804 .as_ref()
17805 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
17806 encoder,
17807 offset + cur_offset,
17808 depth,
17809 )?;
17810
17811 _prev_end_offset = cur_offset + envelope_size;
17812 if 2 > max_ordinal {
17813 return Ok(());
17814 }
17815
17816 let cur_offset: usize = (2 - 1) * envelope_size;
17819
17820 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17822
17823 fidl::encoding::encode_in_envelope_optional::<u64, D>(
17828 self.ipv4_to_ipv6_bytes
17829 .as_ref()
17830 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
17831 encoder,
17832 offset + cur_offset,
17833 depth,
17834 )?;
17835
17836 _prev_end_offset = cur_offset + envelope_size;
17837 if 3 > max_ordinal {
17838 return Ok(());
17839 }
17840
17841 let cur_offset: usize = (3 - 1) * envelope_size;
17844
17845 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17847
17848 fidl::encoding::encode_in_envelope_optional::<u64, D>(
17853 self.ipv6_to_ipv4_packets
17854 .as_ref()
17855 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
17856 encoder,
17857 offset + cur_offset,
17858 depth,
17859 )?;
17860
17861 _prev_end_offset = cur_offset + envelope_size;
17862 if 4 > max_ordinal {
17863 return Ok(());
17864 }
17865
17866 let cur_offset: usize = (4 - 1) * envelope_size;
17869
17870 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17872
17873 fidl::encoding::encode_in_envelope_optional::<u64, D>(
17878 self.ipv6_to_ipv4_bytes
17879 .as_ref()
17880 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
17881 encoder,
17882 offset + cur_offset,
17883 depth,
17884 )?;
17885
17886 _prev_end_offset = cur_offset + envelope_size;
17887
17888 Ok(())
17889 }
17890 }
17891
17892 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nat64TrafficCounters {
17893 #[inline(always)]
17894 fn new_empty() -> Self {
17895 Self::default()
17896 }
17897
17898 unsafe fn decode(
17899 &mut self,
17900 decoder: &mut fidl::encoding::Decoder<'_, D>,
17901 offset: usize,
17902 mut depth: fidl::encoding::Depth,
17903 ) -> fidl::Result<()> {
17904 decoder.debug_check_bounds::<Self>(offset);
17905 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17906 None => return Err(fidl::Error::NotNullable),
17907 Some(len) => len,
17908 };
17909 if len == 0 {
17911 return Ok(());
17912 };
17913 depth.increment()?;
17914 let envelope_size = 8;
17915 let bytes_len = len * envelope_size;
17916 let offset = decoder.out_of_line_offset(bytes_len)?;
17917 let mut _next_ordinal_to_read = 0;
17919 let mut next_offset = offset;
17920 let end_offset = offset + bytes_len;
17921 _next_ordinal_to_read += 1;
17922 if next_offset >= end_offset {
17923 return Ok(());
17924 }
17925
17926 while _next_ordinal_to_read < 1 {
17928 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17929 _next_ordinal_to_read += 1;
17930 next_offset += envelope_size;
17931 }
17932
17933 let next_out_of_line = decoder.next_out_of_line();
17934 let handles_before = decoder.remaining_handles();
17935 if let Some((inlined, num_bytes, num_handles)) =
17936 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17937 {
17938 let member_inline_size =
17939 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17940 if inlined != (member_inline_size <= 4) {
17941 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17942 }
17943 let inner_offset;
17944 let mut inner_depth = depth.clone();
17945 if inlined {
17946 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17947 inner_offset = next_offset;
17948 } else {
17949 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17950 inner_depth.increment()?;
17951 }
17952 let val_ref =
17953 self.ipv4_to_ipv6_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
17954 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
17955 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17956 {
17957 return Err(fidl::Error::InvalidNumBytesInEnvelope);
17958 }
17959 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17960 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17961 }
17962 }
17963
17964 next_offset += envelope_size;
17965 _next_ordinal_to_read += 1;
17966 if next_offset >= end_offset {
17967 return Ok(());
17968 }
17969
17970 while _next_ordinal_to_read < 2 {
17972 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17973 _next_ordinal_to_read += 1;
17974 next_offset += envelope_size;
17975 }
17976
17977 let next_out_of_line = decoder.next_out_of_line();
17978 let handles_before = decoder.remaining_handles();
17979 if let Some((inlined, num_bytes, num_handles)) =
17980 fidl::encoding::decode_envelope_header(decoder, next_offset)?
17981 {
17982 let member_inline_size =
17983 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17984 if inlined != (member_inline_size <= 4) {
17985 return Err(fidl::Error::InvalidInlineBitInEnvelope);
17986 }
17987 let inner_offset;
17988 let mut inner_depth = depth.clone();
17989 if inlined {
17990 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17991 inner_offset = next_offset;
17992 } else {
17993 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17994 inner_depth.increment()?;
17995 }
17996 let val_ref =
17997 self.ipv4_to_ipv6_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
17998 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
17999 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18000 {
18001 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18002 }
18003 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18004 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18005 }
18006 }
18007
18008 next_offset += envelope_size;
18009 _next_ordinal_to_read += 1;
18010 if next_offset >= end_offset {
18011 return Ok(());
18012 }
18013
18014 while _next_ordinal_to_read < 3 {
18016 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18017 _next_ordinal_to_read += 1;
18018 next_offset += envelope_size;
18019 }
18020
18021 let next_out_of_line = decoder.next_out_of_line();
18022 let handles_before = decoder.remaining_handles();
18023 if let Some((inlined, num_bytes, num_handles)) =
18024 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18025 {
18026 let member_inline_size =
18027 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18028 if inlined != (member_inline_size <= 4) {
18029 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18030 }
18031 let inner_offset;
18032 let mut inner_depth = depth.clone();
18033 if inlined {
18034 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18035 inner_offset = next_offset;
18036 } else {
18037 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18038 inner_depth.increment()?;
18039 }
18040 let val_ref =
18041 self.ipv6_to_ipv4_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
18042 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
18043 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18044 {
18045 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18046 }
18047 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18048 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18049 }
18050 }
18051
18052 next_offset += envelope_size;
18053 _next_ordinal_to_read += 1;
18054 if next_offset >= end_offset {
18055 return Ok(());
18056 }
18057
18058 while _next_ordinal_to_read < 4 {
18060 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18061 _next_ordinal_to_read += 1;
18062 next_offset += envelope_size;
18063 }
18064
18065 let next_out_of_line = decoder.next_out_of_line();
18066 let handles_before = decoder.remaining_handles();
18067 if let Some((inlined, num_bytes, num_handles)) =
18068 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18069 {
18070 let member_inline_size =
18071 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18072 if inlined != (member_inline_size <= 4) {
18073 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18074 }
18075 let inner_offset;
18076 let mut inner_depth = depth.clone();
18077 if inlined {
18078 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18079 inner_offset = next_offset;
18080 } else {
18081 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18082 inner_depth.increment()?;
18083 }
18084 let val_ref =
18085 self.ipv6_to_ipv4_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
18086 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
18087 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18088 {
18089 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18090 }
18091 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18092 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18093 }
18094 }
18095
18096 next_offset += envelope_size;
18097
18098 while next_offset < end_offset {
18100 _next_ordinal_to_read += 1;
18101 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18102 next_offset += envelope_size;
18103 }
18104
18105 Ok(())
18106 }
18107 }
18108
18109 impl NetifAddress {
18110 #[inline(always)]
18111 fn max_ordinal_present(&self) -> u64 {
18112 if let Some(_) = self.valid {
18113 return 5;
18114 }
18115 if let Some(_) = self.preferred {
18116 return 4;
18117 }
18118 if let Some(_) = self.origin {
18119 return 3;
18120 }
18121 if let Some(_) = self.prefix_length {
18122 return 2;
18123 }
18124 if let Some(_) = self.address {
18125 return 1;
18126 }
18127 0
18128 }
18129 }
18130
18131 impl fidl::encoding::ValueTypeMarker for NetifAddress {
18132 type Borrowed<'a> = &'a Self;
18133 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
18134 value
18135 }
18136 }
18137
18138 unsafe impl fidl::encoding::TypeMarker for NetifAddress {
18139 type Owned = Self;
18140
18141 #[inline(always)]
18142 fn inline_align(_context: fidl::encoding::Context) -> usize {
18143 8
18144 }
18145
18146 #[inline(always)]
18147 fn inline_size(_context: fidl::encoding::Context) -> usize {
18148 16
18149 }
18150 }
18151
18152 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetifAddress, D>
18153 for &NetifAddress
18154 {
18155 unsafe fn encode(
18156 self,
18157 encoder: &mut fidl::encoding::Encoder<'_, D>,
18158 offset: usize,
18159 mut depth: fidl::encoding::Depth,
18160 ) -> fidl::Result<()> {
18161 encoder.debug_check_bounds::<NetifAddress>(offset);
18162 let max_ordinal: u64 = self.max_ordinal_present();
18164 encoder.write_num(max_ordinal, offset);
18165 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
18166 if max_ordinal == 0 {
18168 return Ok(());
18169 }
18170 depth.increment()?;
18171 let envelope_size = 8;
18172 let bytes_len = max_ordinal as usize * envelope_size;
18173 #[allow(unused_variables)]
18174 let offset = encoder.out_of_line_offset(bytes_len);
18175 let mut _prev_end_offset: usize = 0;
18176 if 1 > max_ordinal {
18177 return Ok(());
18178 }
18179
18180 let cur_offset: usize = (1 - 1) * envelope_size;
18183
18184 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18186
18187 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_common::Ipv6Address, D>(
18192 self.address.as_ref().map(<fidl_fuchsia_net_common::Ipv6Address as fidl::encoding::ValueTypeMarker>::borrow),
18193 encoder, offset + cur_offset, depth
18194 )?;
18195
18196 _prev_end_offset = cur_offset + envelope_size;
18197 if 2 > max_ordinal {
18198 return Ok(());
18199 }
18200
18201 let cur_offset: usize = (2 - 1) * envelope_size;
18204
18205 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18207
18208 fidl::encoding::encode_in_envelope_optional::<u8, D>(
18213 self.prefix_length.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
18214 encoder,
18215 offset + cur_offset,
18216 depth,
18217 )?;
18218
18219 _prev_end_offset = cur_offset + envelope_size;
18220 if 3 > max_ordinal {
18221 return Ok(());
18222 }
18223
18224 let cur_offset: usize = (3 - 1) * envelope_size;
18227
18228 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18230
18231 fidl::encoding::encode_in_envelope_optional::<AddressOrigin, D>(
18236 self.origin
18237 .as_ref()
18238 .map(<AddressOrigin as fidl::encoding::ValueTypeMarker>::borrow),
18239 encoder,
18240 offset + cur_offset,
18241 depth,
18242 )?;
18243
18244 _prev_end_offset = cur_offset + envelope_size;
18245 if 4 > max_ordinal {
18246 return Ok(());
18247 }
18248
18249 let cur_offset: usize = (4 - 1) * envelope_size;
18252
18253 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18255
18256 fidl::encoding::encode_in_envelope_optional::<bool, D>(
18261 self.preferred.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
18262 encoder,
18263 offset + cur_offset,
18264 depth,
18265 )?;
18266
18267 _prev_end_offset = cur_offset + envelope_size;
18268 if 5 > max_ordinal {
18269 return Ok(());
18270 }
18271
18272 let cur_offset: usize = (5 - 1) * envelope_size;
18275
18276 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18278
18279 fidl::encoding::encode_in_envelope_optional::<bool, D>(
18284 self.valid.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
18285 encoder,
18286 offset + cur_offset,
18287 depth,
18288 )?;
18289
18290 _prev_end_offset = cur_offset + envelope_size;
18291
18292 Ok(())
18293 }
18294 }
18295
18296 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetifAddress {
18297 #[inline(always)]
18298 fn new_empty() -> Self {
18299 Self::default()
18300 }
18301
18302 unsafe fn decode(
18303 &mut self,
18304 decoder: &mut fidl::encoding::Decoder<'_, D>,
18305 offset: usize,
18306 mut depth: fidl::encoding::Depth,
18307 ) -> fidl::Result<()> {
18308 decoder.debug_check_bounds::<Self>(offset);
18309 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
18310 None => return Err(fidl::Error::NotNullable),
18311 Some(len) => len,
18312 };
18313 if len == 0 {
18315 return Ok(());
18316 };
18317 depth.increment()?;
18318 let envelope_size = 8;
18319 let bytes_len = len * envelope_size;
18320 let offset = decoder.out_of_line_offset(bytes_len)?;
18321 let mut _next_ordinal_to_read = 0;
18323 let mut next_offset = offset;
18324 let end_offset = offset + bytes_len;
18325 _next_ordinal_to_read += 1;
18326 if next_offset >= end_offset {
18327 return Ok(());
18328 }
18329
18330 while _next_ordinal_to_read < 1 {
18332 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18333 _next_ordinal_to_read += 1;
18334 next_offset += envelope_size;
18335 }
18336
18337 let next_out_of_line = decoder.next_out_of_line();
18338 let handles_before = decoder.remaining_handles();
18339 if let Some((inlined, num_bytes, num_handles)) =
18340 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18341 {
18342 let member_inline_size = <fidl_fuchsia_net_common::Ipv6Address as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18343 if inlined != (member_inline_size <= 4) {
18344 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18345 }
18346 let inner_offset;
18347 let mut inner_depth = depth.clone();
18348 if inlined {
18349 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18350 inner_offset = next_offset;
18351 } else {
18352 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18353 inner_depth.increment()?;
18354 }
18355 let val_ref = self.address.get_or_insert_with(|| {
18356 fidl::new_empty!(fidl_fuchsia_net_common::Ipv6Address, D)
18357 });
18358 fidl::decode!(
18359 fidl_fuchsia_net_common::Ipv6Address,
18360 D,
18361 val_ref,
18362 decoder,
18363 inner_offset,
18364 inner_depth
18365 )?;
18366 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18367 {
18368 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18369 }
18370 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18371 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18372 }
18373 }
18374
18375 next_offset += envelope_size;
18376 _next_ordinal_to_read += 1;
18377 if next_offset >= end_offset {
18378 return Ok(());
18379 }
18380
18381 while _next_ordinal_to_read < 2 {
18383 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18384 _next_ordinal_to_read += 1;
18385 next_offset += envelope_size;
18386 }
18387
18388 let next_out_of_line = decoder.next_out_of_line();
18389 let handles_before = decoder.remaining_handles();
18390 if let Some((inlined, num_bytes, num_handles)) =
18391 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18392 {
18393 let member_inline_size =
18394 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18395 if inlined != (member_inline_size <= 4) {
18396 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18397 }
18398 let inner_offset;
18399 let mut inner_depth = depth.clone();
18400 if inlined {
18401 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18402 inner_offset = next_offset;
18403 } else {
18404 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18405 inner_depth.increment()?;
18406 }
18407 let val_ref = self.prefix_length.get_or_insert_with(|| fidl::new_empty!(u8, D));
18408 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
18409 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18410 {
18411 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18412 }
18413 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18414 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18415 }
18416 }
18417
18418 next_offset += envelope_size;
18419 _next_ordinal_to_read += 1;
18420 if next_offset >= end_offset {
18421 return Ok(());
18422 }
18423
18424 while _next_ordinal_to_read < 3 {
18426 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18427 _next_ordinal_to_read += 1;
18428 next_offset += envelope_size;
18429 }
18430
18431 let next_out_of_line = decoder.next_out_of_line();
18432 let handles_before = decoder.remaining_handles();
18433 if let Some((inlined, num_bytes, num_handles)) =
18434 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18435 {
18436 let member_inline_size =
18437 <AddressOrigin as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18438 if inlined != (member_inline_size <= 4) {
18439 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18440 }
18441 let inner_offset;
18442 let mut inner_depth = depth.clone();
18443 if inlined {
18444 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18445 inner_offset = next_offset;
18446 } else {
18447 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18448 inner_depth.increment()?;
18449 }
18450 let val_ref = self.origin.get_or_insert_with(|| fidl::new_empty!(AddressOrigin, D));
18451 fidl::decode!(AddressOrigin, D, val_ref, decoder, inner_offset, inner_depth)?;
18452 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18453 {
18454 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18455 }
18456 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18457 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18458 }
18459 }
18460
18461 next_offset += envelope_size;
18462 _next_ordinal_to_read += 1;
18463 if next_offset >= end_offset {
18464 return Ok(());
18465 }
18466
18467 while _next_ordinal_to_read < 4 {
18469 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18470 _next_ordinal_to_read += 1;
18471 next_offset += envelope_size;
18472 }
18473
18474 let next_out_of_line = decoder.next_out_of_line();
18475 let handles_before = decoder.remaining_handles();
18476 if let Some((inlined, num_bytes, num_handles)) =
18477 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18478 {
18479 let member_inline_size =
18480 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18481 if inlined != (member_inline_size <= 4) {
18482 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18483 }
18484 let inner_offset;
18485 let mut inner_depth = depth.clone();
18486 if inlined {
18487 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18488 inner_offset = next_offset;
18489 } else {
18490 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18491 inner_depth.increment()?;
18492 }
18493 let val_ref = self.preferred.get_or_insert_with(|| fidl::new_empty!(bool, D));
18494 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
18495 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18496 {
18497 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18498 }
18499 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18500 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18501 }
18502 }
18503
18504 next_offset += envelope_size;
18505 _next_ordinal_to_read += 1;
18506 if next_offset >= end_offset {
18507 return Ok(());
18508 }
18509
18510 while _next_ordinal_to_read < 5 {
18512 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18513 _next_ordinal_to_read += 1;
18514 next_offset += envelope_size;
18515 }
18516
18517 let next_out_of_line = decoder.next_out_of_line();
18518 let handles_before = decoder.remaining_handles();
18519 if let Some((inlined, num_bytes, num_handles)) =
18520 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18521 {
18522 let member_inline_size =
18523 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18524 if inlined != (member_inline_size <= 4) {
18525 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18526 }
18527 let inner_offset;
18528 let mut inner_depth = depth.clone();
18529 if inlined {
18530 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18531 inner_offset = next_offset;
18532 } else {
18533 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18534 inner_depth.increment()?;
18535 }
18536 let val_ref = self.valid.get_or_insert_with(|| fidl::new_empty!(bool, D));
18537 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
18538 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18539 {
18540 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18541 }
18542 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18543 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18544 }
18545 }
18546
18547 next_offset += envelope_size;
18548
18549 while next_offset < end_offset {
18551 _next_ordinal_to_read += 1;
18552 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18553 next_offset += envelope_size;
18554 }
18555
18556 Ok(())
18557 }
18558 }
18559
18560 impl NetworkData {
18561 #[inline(always)]
18562 fn max_ordinal_present(&self) -> u64 {
18563 if let Some(_) = self.commissioning_dataset {
18564 return 5;
18565 }
18566 if let Some(_) = self.contexts {
18567 return 4;
18568 }
18569 if let Some(_) = self.services {
18570 return 3;
18571 }
18572 if let Some(_) = self.external_routes {
18573 return 2;
18574 }
18575 if let Some(_) = self.on_mesh_prefixes {
18576 return 1;
18577 }
18578 0
18579 }
18580 }
18581
18582 impl fidl::encoding::ValueTypeMarker for NetworkData {
18583 type Borrowed<'a> = &'a Self;
18584 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
18585 value
18586 }
18587 }
18588
18589 unsafe impl fidl::encoding::TypeMarker for NetworkData {
18590 type Owned = Self;
18591
18592 #[inline(always)]
18593 fn inline_align(_context: fidl::encoding::Context) -> usize {
18594 8
18595 }
18596
18597 #[inline(always)]
18598 fn inline_size(_context: fidl::encoding::Context) -> usize {
18599 16
18600 }
18601 }
18602
18603 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetworkData, D>
18604 for &NetworkData
18605 {
18606 unsafe fn encode(
18607 self,
18608 encoder: &mut fidl::encoding::Encoder<'_, D>,
18609 offset: usize,
18610 mut depth: fidl::encoding::Depth,
18611 ) -> fidl::Result<()> {
18612 encoder.debug_check_bounds::<NetworkData>(offset);
18613 let max_ordinal: u64 = self.max_ordinal_present();
18615 encoder.write_num(max_ordinal, offset);
18616 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
18617 if max_ordinal == 0 {
18619 return Ok(());
18620 }
18621 depth.increment()?;
18622 let envelope_size = 8;
18623 let bytes_len = max_ordinal as usize * envelope_size;
18624 #[allow(unused_variables)]
18625 let offset = encoder.out_of_line_offset(bytes_len);
18626 let mut _prev_end_offset: usize = 0;
18627 if 1 > max_ordinal {
18628 return Ok(());
18629 }
18630
18631 let cur_offset: usize = (1 - 1) * envelope_size;
18634
18635 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18637
18638 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BorderRouterConfig, 32>, D>(
18643 self.on_mesh_prefixes.as_ref().map(<fidl::encoding::Vector<BorderRouterConfig, 32> as fidl::encoding::ValueTypeMarker>::borrow),
18644 encoder, offset + cur_offset, depth
18645 )?;
18646
18647 _prev_end_offset = cur_offset + envelope_size;
18648 if 2 > max_ordinal {
18649 return Ok(());
18650 }
18651
18652 let cur_offset: usize = (2 - 1) * envelope_size;
18655
18656 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18658
18659 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ExternalRouteConfig, 32>, D>(
18664 self.external_routes.as_ref().map(<fidl::encoding::Vector<ExternalRouteConfig, 32> as fidl::encoding::ValueTypeMarker>::borrow),
18665 encoder, offset + cur_offset, depth
18666 )?;
18667
18668 _prev_end_offset = cur_offset + envelope_size;
18669 if 3 > max_ordinal {
18670 return Ok(());
18671 }
18672
18673 let cur_offset: usize = (3 - 1) * envelope_size;
18676
18677 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18679
18680 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ServiceConfig, 32>, D>(
18685 self.services.as_ref().map(<fidl::encoding::Vector<ServiceConfig, 32> as fidl::encoding::ValueTypeMarker>::borrow),
18686 encoder, offset + cur_offset, depth
18687 )?;
18688
18689 _prev_end_offset = cur_offset + envelope_size;
18690 if 4 > max_ordinal {
18691 return Ok(());
18692 }
18693
18694 let cur_offset: usize = (4 - 1) * envelope_size;
18697
18698 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18700
18701 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<LowpanContextInfo, 32>, D>(
18706 self.contexts.as_ref().map(<fidl::encoding::Vector<LowpanContextInfo, 32> as fidl::encoding::ValueTypeMarker>::borrow),
18707 encoder, offset + cur_offset, depth
18708 )?;
18709
18710 _prev_end_offset = cur_offset + envelope_size;
18711 if 5 > max_ordinal {
18712 return Ok(());
18713 }
18714
18715 let cur_offset: usize = (5 - 1) * envelope_size;
18718
18719 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18721
18722 fidl::encoding::encode_in_envelope_optional::<CommissioningDataset, D>(
18727 self.commissioning_dataset
18728 .as_ref()
18729 .map(<CommissioningDataset as fidl::encoding::ValueTypeMarker>::borrow),
18730 encoder,
18731 offset + cur_offset,
18732 depth,
18733 )?;
18734
18735 _prev_end_offset = cur_offset + envelope_size;
18736
18737 Ok(())
18738 }
18739 }
18740
18741 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkData {
18742 #[inline(always)]
18743 fn new_empty() -> Self {
18744 Self::default()
18745 }
18746
18747 unsafe fn decode(
18748 &mut self,
18749 decoder: &mut fidl::encoding::Decoder<'_, D>,
18750 offset: usize,
18751 mut depth: fidl::encoding::Depth,
18752 ) -> fidl::Result<()> {
18753 decoder.debug_check_bounds::<Self>(offset);
18754 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
18755 None => return Err(fidl::Error::NotNullable),
18756 Some(len) => len,
18757 };
18758 if len == 0 {
18760 return Ok(());
18761 };
18762 depth.increment()?;
18763 let envelope_size = 8;
18764 let bytes_len = len * envelope_size;
18765 let offset = decoder.out_of_line_offset(bytes_len)?;
18766 let mut _next_ordinal_to_read = 0;
18768 let mut next_offset = offset;
18769 let end_offset = offset + bytes_len;
18770 _next_ordinal_to_read += 1;
18771 if next_offset >= end_offset {
18772 return Ok(());
18773 }
18774
18775 while _next_ordinal_to_read < 1 {
18777 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18778 _next_ordinal_to_read += 1;
18779 next_offset += envelope_size;
18780 }
18781
18782 let next_out_of_line = decoder.next_out_of_line();
18783 let handles_before = decoder.remaining_handles();
18784 if let Some((inlined, num_bytes, num_handles)) =
18785 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18786 {
18787 let member_inline_size = <fidl::encoding::Vector<BorderRouterConfig, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18788 if inlined != (member_inline_size <= 4) {
18789 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18790 }
18791 let inner_offset;
18792 let mut inner_depth = depth.clone();
18793 if inlined {
18794 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18795 inner_offset = next_offset;
18796 } else {
18797 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18798 inner_depth.increment()?;
18799 }
18800 let val_ref = self.on_mesh_prefixes.get_or_insert_with(
18801 || fidl::new_empty!(fidl::encoding::Vector<BorderRouterConfig, 32>, D),
18802 );
18803 fidl::decode!(fidl::encoding::Vector<BorderRouterConfig, 32>, 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 < 2 {
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 = <fidl::encoding::Vector<ExternalRouteConfig, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18832 if inlined != (member_inline_size <= 4) {
18833 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18834 }
18835 let inner_offset;
18836 let mut inner_depth = depth.clone();
18837 if inlined {
18838 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18839 inner_offset = next_offset;
18840 } else {
18841 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18842 inner_depth.increment()?;
18843 }
18844 let val_ref = self.external_routes.get_or_insert_with(
18845 || fidl::new_empty!(fidl::encoding::Vector<ExternalRouteConfig, 32>, D),
18846 );
18847 fidl::decode!(fidl::encoding::Vector<ExternalRouteConfig, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
18848 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18849 {
18850 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18851 }
18852 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18853 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18854 }
18855 }
18856
18857 next_offset += envelope_size;
18858 _next_ordinal_to_read += 1;
18859 if next_offset >= end_offset {
18860 return Ok(());
18861 }
18862
18863 while _next_ordinal_to_read < 3 {
18865 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18866 _next_ordinal_to_read += 1;
18867 next_offset += envelope_size;
18868 }
18869
18870 let next_out_of_line = decoder.next_out_of_line();
18871 let handles_before = decoder.remaining_handles();
18872 if let Some((inlined, num_bytes, num_handles)) =
18873 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18874 {
18875 let member_inline_size = <fidl::encoding::Vector<ServiceConfig, 32> 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.services.get_or_insert_with(
18889 || fidl::new_empty!(fidl::encoding::Vector<ServiceConfig, 32>, D),
18890 );
18891 fidl::decode!(fidl::encoding::Vector<ServiceConfig, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
18892 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18893 {
18894 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18895 }
18896 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18897 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18898 }
18899 }
18900
18901 next_offset += envelope_size;
18902 _next_ordinal_to_read += 1;
18903 if next_offset >= end_offset {
18904 return Ok(());
18905 }
18906
18907 while _next_ordinal_to_read < 4 {
18909 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18910 _next_ordinal_to_read += 1;
18911 next_offset += envelope_size;
18912 }
18913
18914 let next_out_of_line = decoder.next_out_of_line();
18915 let handles_before = decoder.remaining_handles();
18916 if let Some((inlined, num_bytes, num_handles)) =
18917 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18918 {
18919 let member_inline_size = <fidl::encoding::Vector<LowpanContextInfo, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
18920 if inlined != (member_inline_size <= 4) {
18921 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18922 }
18923 let inner_offset;
18924 let mut inner_depth = depth.clone();
18925 if inlined {
18926 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18927 inner_offset = next_offset;
18928 } else {
18929 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18930 inner_depth.increment()?;
18931 }
18932 let val_ref = self.contexts.get_or_insert_with(
18933 || fidl::new_empty!(fidl::encoding::Vector<LowpanContextInfo, 32>, D),
18934 );
18935 fidl::decode!(fidl::encoding::Vector<LowpanContextInfo, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
18936 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18937 {
18938 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18939 }
18940 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18941 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18942 }
18943 }
18944
18945 next_offset += envelope_size;
18946 _next_ordinal_to_read += 1;
18947 if next_offset >= end_offset {
18948 return Ok(());
18949 }
18950
18951 while _next_ordinal_to_read < 5 {
18953 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18954 _next_ordinal_to_read += 1;
18955 next_offset += envelope_size;
18956 }
18957
18958 let next_out_of_line = decoder.next_out_of_line();
18959 let handles_before = decoder.remaining_handles();
18960 if let Some((inlined, num_bytes, num_handles)) =
18961 fidl::encoding::decode_envelope_header(decoder, next_offset)?
18962 {
18963 let member_inline_size =
18964 <CommissioningDataset as fidl::encoding::TypeMarker>::inline_size(
18965 decoder.context,
18966 );
18967 if inlined != (member_inline_size <= 4) {
18968 return Err(fidl::Error::InvalidInlineBitInEnvelope);
18969 }
18970 let inner_offset;
18971 let mut inner_depth = depth.clone();
18972 if inlined {
18973 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18974 inner_offset = next_offset;
18975 } else {
18976 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18977 inner_depth.increment()?;
18978 }
18979 let val_ref = self
18980 .commissioning_dataset
18981 .get_or_insert_with(|| fidl::new_empty!(CommissioningDataset, D));
18982 fidl::decode!(
18983 CommissioningDataset,
18984 D,
18985 val_ref,
18986 decoder,
18987 inner_offset,
18988 inner_depth
18989 )?;
18990 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18991 {
18992 return Err(fidl::Error::InvalidNumBytesInEnvelope);
18993 }
18994 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18995 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18996 }
18997 }
18998
18999 next_offset += envelope_size;
19000
19001 while next_offset < end_offset {
19003 _next_ordinal_to_read += 1;
19004 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19005 next_offset += envelope_size;
19006 }
19007
19008 Ok(())
19009 }
19010 }
19011
19012 impl NetworkScanParameters {
19013 #[inline(always)]
19014 fn max_ordinal_present(&self) -> u64 {
19015 if let Some(_) = self.tx_power_dbm {
19016 return 2;
19017 }
19018 if let Some(_) = self.channels {
19019 return 1;
19020 }
19021 0
19022 }
19023 }
19024
19025 impl fidl::encoding::ValueTypeMarker for NetworkScanParameters {
19026 type Borrowed<'a> = &'a Self;
19027 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
19028 value
19029 }
19030 }
19031
19032 unsafe impl fidl::encoding::TypeMarker for NetworkScanParameters {
19033 type Owned = Self;
19034
19035 #[inline(always)]
19036 fn inline_align(_context: fidl::encoding::Context) -> usize {
19037 8
19038 }
19039
19040 #[inline(always)]
19041 fn inline_size(_context: fidl::encoding::Context) -> usize {
19042 16
19043 }
19044 }
19045
19046 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<NetworkScanParameters, D>
19047 for &NetworkScanParameters
19048 {
19049 unsafe fn encode(
19050 self,
19051 encoder: &mut fidl::encoding::Encoder<'_, D>,
19052 offset: usize,
19053 mut depth: fidl::encoding::Depth,
19054 ) -> fidl::Result<()> {
19055 encoder.debug_check_bounds::<NetworkScanParameters>(offset);
19056 let max_ordinal: u64 = self.max_ordinal_present();
19058 encoder.write_num(max_ordinal, offset);
19059 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
19060 if max_ordinal == 0 {
19062 return Ok(());
19063 }
19064 depth.increment()?;
19065 let envelope_size = 8;
19066 let bytes_len = max_ordinal as usize * envelope_size;
19067 #[allow(unused_variables)]
19068 let offset = encoder.out_of_line_offset(bytes_len);
19069 let mut _prev_end_offset: usize = 0;
19070 if 1 > max_ordinal {
19071 return Ok(());
19072 }
19073
19074 let cur_offset: usize = (1 - 1) * envelope_size;
19077
19078 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19080
19081 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u16, 200>, D>(
19086 self.channels.as_ref().map(
19087 <fidl::encoding::Vector<u16, 200> as fidl::encoding::ValueTypeMarker>::borrow,
19088 ),
19089 encoder,
19090 offset + cur_offset,
19091 depth,
19092 )?;
19093
19094 _prev_end_offset = cur_offset + envelope_size;
19095 if 2 > max_ordinal {
19096 return Ok(());
19097 }
19098
19099 let cur_offset: usize = (2 - 1) * envelope_size;
19102
19103 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19105
19106 fidl::encoding::encode_in_envelope_optional::<i8, D>(
19111 self.tx_power_dbm.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
19112 encoder,
19113 offset + cur_offset,
19114 depth,
19115 )?;
19116
19117 _prev_end_offset = cur_offset + envelope_size;
19118
19119 Ok(())
19120 }
19121 }
19122
19123 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for NetworkScanParameters {
19124 #[inline(always)]
19125 fn new_empty() -> Self {
19126 Self::default()
19127 }
19128
19129 unsafe fn decode(
19130 &mut self,
19131 decoder: &mut fidl::encoding::Decoder<'_, D>,
19132 offset: usize,
19133 mut depth: fidl::encoding::Depth,
19134 ) -> fidl::Result<()> {
19135 decoder.debug_check_bounds::<Self>(offset);
19136 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
19137 None => return Err(fidl::Error::NotNullable),
19138 Some(len) => len,
19139 };
19140 if len == 0 {
19142 return Ok(());
19143 };
19144 depth.increment()?;
19145 let envelope_size = 8;
19146 let bytes_len = len * envelope_size;
19147 let offset = decoder.out_of_line_offset(bytes_len)?;
19148 let mut _next_ordinal_to_read = 0;
19150 let mut next_offset = offset;
19151 let end_offset = offset + bytes_len;
19152 _next_ordinal_to_read += 1;
19153 if next_offset >= end_offset {
19154 return Ok(());
19155 }
19156
19157 while _next_ordinal_to_read < 1 {
19159 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19160 _next_ordinal_to_read += 1;
19161 next_offset += envelope_size;
19162 }
19163
19164 let next_out_of_line = decoder.next_out_of_line();
19165 let handles_before = decoder.remaining_handles();
19166 if let Some((inlined, num_bytes, num_handles)) =
19167 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19168 {
19169 let member_inline_size =
19170 <fidl::encoding::Vector<u16, 200> as fidl::encoding::TypeMarker>::inline_size(
19171 decoder.context,
19172 );
19173 if inlined != (member_inline_size <= 4) {
19174 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19175 }
19176 let inner_offset;
19177 let mut inner_depth = depth.clone();
19178 if inlined {
19179 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19180 inner_offset = next_offset;
19181 } else {
19182 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19183 inner_depth.increment()?;
19184 }
19185 let val_ref = self
19186 .channels
19187 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u16, 200>, D));
19188 fidl::decode!(fidl::encoding::Vector<u16, 200>, D, val_ref, decoder, inner_offset, inner_depth)?;
19189 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19190 {
19191 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19192 }
19193 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19194 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19195 }
19196 }
19197
19198 next_offset += envelope_size;
19199 _next_ordinal_to_read += 1;
19200 if next_offset >= end_offset {
19201 return Ok(());
19202 }
19203
19204 while _next_ordinal_to_read < 2 {
19206 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19207 _next_ordinal_to_read += 1;
19208 next_offset += envelope_size;
19209 }
19210
19211 let next_out_of_line = decoder.next_out_of_line();
19212 let handles_before = decoder.remaining_handles();
19213 if let Some((inlined, num_bytes, num_handles)) =
19214 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19215 {
19216 let member_inline_size =
19217 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19218 if inlined != (member_inline_size <= 4) {
19219 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19220 }
19221 let inner_offset;
19222 let mut inner_depth = depth.clone();
19223 if inlined {
19224 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19225 inner_offset = next_offset;
19226 } else {
19227 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19228 inner_depth.increment()?;
19229 }
19230 let val_ref = self.tx_power_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
19231 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
19232 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19233 {
19234 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19235 }
19236 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19237 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19238 }
19239 }
19240
19241 next_offset += envelope_size;
19242
19243 while next_offset < end_offset {
19245 _next_ordinal_to_read += 1;
19246 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19247 next_offset += envelope_size;
19248 }
19249
19250 Ok(())
19251 }
19252 }
19253
19254 impl OnMeshPrefix {
19255 #[inline(always)]
19256 fn max_ordinal_present(&self) -> u64 {
19257 if let Some(_) = self.slaac_valid {
19258 return 5;
19259 }
19260 if let Some(_) = self.slaac_preferred {
19261 return 4;
19262 }
19263 if let Some(_) = self.stable {
19264 return 3;
19265 }
19266 if let Some(_) = self.default_route_preference {
19267 return 2;
19268 }
19269 if let Some(_) = self.subnet {
19270 return 1;
19271 }
19272 0
19273 }
19274 }
19275
19276 impl fidl::encoding::ValueTypeMarker for OnMeshPrefix {
19277 type Borrowed<'a> = &'a Self;
19278 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
19279 value
19280 }
19281 }
19282
19283 unsafe impl fidl::encoding::TypeMarker for OnMeshPrefix {
19284 type Owned = Self;
19285
19286 #[inline(always)]
19287 fn inline_align(_context: fidl::encoding::Context) -> usize {
19288 8
19289 }
19290
19291 #[inline(always)]
19292 fn inline_size(_context: fidl::encoding::Context) -> usize {
19293 16
19294 }
19295 }
19296
19297 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OnMeshPrefix, D>
19298 for &OnMeshPrefix
19299 {
19300 unsafe fn encode(
19301 self,
19302 encoder: &mut fidl::encoding::Encoder<'_, D>,
19303 offset: usize,
19304 mut depth: fidl::encoding::Depth,
19305 ) -> fidl::Result<()> {
19306 encoder.debug_check_bounds::<OnMeshPrefix>(offset);
19307 let max_ordinal: u64 = self.max_ordinal_present();
19309 encoder.write_num(max_ordinal, offset);
19310 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
19311 if max_ordinal == 0 {
19313 return Ok(());
19314 }
19315 depth.increment()?;
19316 let envelope_size = 8;
19317 let bytes_len = max_ordinal as usize * envelope_size;
19318 #[allow(unused_variables)]
19319 let offset = encoder.out_of_line_offset(bytes_len);
19320 let mut _prev_end_offset: usize = 0;
19321 if 1 > max_ordinal {
19322 return Ok(());
19323 }
19324
19325 let cur_offset: usize = (1 - 1) * envelope_size;
19328
19329 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19331
19332 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net_common::Ipv6AddressWithPrefix, D>(
19337 self.subnet.as_ref().map(<fidl_fuchsia_net_common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow),
19338 encoder, offset + cur_offset, depth
19339 )?;
19340
19341 _prev_end_offset = cur_offset + envelope_size;
19342 if 2 > max_ordinal {
19343 return Ok(());
19344 }
19345
19346 let cur_offset: usize = (2 - 1) * envelope_size;
19349
19350 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19352
19353 fidl::encoding::encode_in_envelope_optional::<RoutePreference, D>(
19358 self.default_route_preference
19359 .as_ref()
19360 .map(<RoutePreference as fidl::encoding::ValueTypeMarker>::borrow),
19361 encoder,
19362 offset + cur_offset,
19363 depth,
19364 )?;
19365
19366 _prev_end_offset = cur_offset + envelope_size;
19367 if 3 > max_ordinal {
19368 return Ok(());
19369 }
19370
19371 let cur_offset: usize = (3 - 1) * envelope_size;
19374
19375 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19377
19378 fidl::encoding::encode_in_envelope_optional::<bool, D>(
19383 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
19384 encoder,
19385 offset + cur_offset,
19386 depth,
19387 )?;
19388
19389 _prev_end_offset = cur_offset + envelope_size;
19390 if 4 > max_ordinal {
19391 return Ok(());
19392 }
19393
19394 let cur_offset: usize = (4 - 1) * envelope_size;
19397
19398 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19400
19401 fidl::encoding::encode_in_envelope_optional::<bool, D>(
19406 self.slaac_preferred
19407 .as_ref()
19408 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
19409 encoder,
19410 offset + cur_offset,
19411 depth,
19412 )?;
19413
19414 _prev_end_offset = cur_offset + envelope_size;
19415 if 5 > max_ordinal {
19416 return Ok(());
19417 }
19418
19419 let cur_offset: usize = (5 - 1) * envelope_size;
19422
19423 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19425
19426 fidl::encoding::encode_in_envelope_optional::<bool, D>(
19431 self.slaac_valid.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
19432 encoder,
19433 offset + cur_offset,
19434 depth,
19435 )?;
19436
19437 _prev_end_offset = cur_offset + envelope_size;
19438
19439 Ok(())
19440 }
19441 }
19442
19443 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OnMeshPrefix {
19444 #[inline(always)]
19445 fn new_empty() -> Self {
19446 Self::default()
19447 }
19448
19449 unsafe fn decode(
19450 &mut self,
19451 decoder: &mut fidl::encoding::Decoder<'_, D>,
19452 offset: usize,
19453 mut depth: fidl::encoding::Depth,
19454 ) -> fidl::Result<()> {
19455 decoder.debug_check_bounds::<Self>(offset);
19456 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
19457 None => return Err(fidl::Error::NotNullable),
19458 Some(len) => len,
19459 };
19460 if len == 0 {
19462 return Ok(());
19463 };
19464 depth.increment()?;
19465 let envelope_size = 8;
19466 let bytes_len = len * envelope_size;
19467 let offset = decoder.out_of_line_offset(bytes_len)?;
19468 let mut _next_ordinal_to_read = 0;
19470 let mut next_offset = offset;
19471 let end_offset = offset + bytes_len;
19472 _next_ordinal_to_read += 1;
19473 if next_offset >= end_offset {
19474 return Ok(());
19475 }
19476
19477 while _next_ordinal_to_read < 1 {
19479 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19480 _next_ordinal_to_read += 1;
19481 next_offset += envelope_size;
19482 }
19483
19484 let next_out_of_line = decoder.next_out_of_line();
19485 let handles_before = decoder.remaining_handles();
19486 if let Some((inlined, num_bytes, num_handles)) =
19487 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19488 {
19489 let member_inline_size = <fidl_fuchsia_net_common::Ipv6AddressWithPrefix as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19490 if inlined != (member_inline_size <= 4) {
19491 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19492 }
19493 let inner_offset;
19494 let mut inner_depth = depth.clone();
19495 if inlined {
19496 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19497 inner_offset = next_offset;
19498 } else {
19499 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19500 inner_depth.increment()?;
19501 }
19502 let val_ref = self.subnet.get_or_insert_with(|| {
19503 fidl::new_empty!(fidl_fuchsia_net_common::Ipv6AddressWithPrefix, D)
19504 });
19505 fidl::decode!(
19506 fidl_fuchsia_net_common::Ipv6AddressWithPrefix,
19507 D,
19508 val_ref,
19509 decoder,
19510 inner_offset,
19511 inner_depth
19512 )?;
19513 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19514 {
19515 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19516 }
19517 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19518 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19519 }
19520 }
19521
19522 next_offset += envelope_size;
19523 _next_ordinal_to_read += 1;
19524 if next_offset >= end_offset {
19525 return Ok(());
19526 }
19527
19528 while _next_ordinal_to_read < 2 {
19530 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19531 _next_ordinal_to_read += 1;
19532 next_offset += envelope_size;
19533 }
19534
19535 let next_out_of_line = decoder.next_out_of_line();
19536 let handles_before = decoder.remaining_handles();
19537 if let Some((inlined, num_bytes, num_handles)) =
19538 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19539 {
19540 let member_inline_size =
19541 <RoutePreference as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19542 if inlined != (member_inline_size <= 4) {
19543 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19544 }
19545 let inner_offset;
19546 let mut inner_depth = depth.clone();
19547 if inlined {
19548 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19549 inner_offset = next_offset;
19550 } else {
19551 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19552 inner_depth.increment()?;
19553 }
19554 let val_ref = self
19555 .default_route_preference
19556 .get_or_insert_with(|| fidl::new_empty!(RoutePreference, D));
19557 fidl::decode!(RoutePreference, D, val_ref, decoder, inner_offset, inner_depth)?;
19558 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19559 {
19560 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19561 }
19562 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19563 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19564 }
19565 }
19566
19567 next_offset += envelope_size;
19568 _next_ordinal_to_read += 1;
19569 if next_offset >= end_offset {
19570 return Ok(());
19571 }
19572
19573 while _next_ordinal_to_read < 3 {
19575 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19576 _next_ordinal_to_read += 1;
19577 next_offset += envelope_size;
19578 }
19579
19580 let next_out_of_line = decoder.next_out_of_line();
19581 let handles_before = decoder.remaining_handles();
19582 if let Some((inlined, num_bytes, num_handles)) =
19583 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19584 {
19585 let member_inline_size =
19586 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19587 if inlined != (member_inline_size <= 4) {
19588 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19589 }
19590 let inner_offset;
19591 let mut inner_depth = depth.clone();
19592 if inlined {
19593 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19594 inner_offset = next_offset;
19595 } else {
19596 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19597 inner_depth.increment()?;
19598 }
19599 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
19600 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
19601 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19602 {
19603 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19604 }
19605 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19606 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19607 }
19608 }
19609
19610 next_offset += envelope_size;
19611 _next_ordinal_to_read += 1;
19612 if next_offset >= end_offset {
19613 return Ok(());
19614 }
19615
19616 while _next_ordinal_to_read < 4 {
19618 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19619 _next_ordinal_to_read += 1;
19620 next_offset += envelope_size;
19621 }
19622
19623 let next_out_of_line = decoder.next_out_of_line();
19624 let handles_before = decoder.remaining_handles();
19625 if let Some((inlined, num_bytes, num_handles)) =
19626 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19627 {
19628 let member_inline_size =
19629 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19630 if inlined != (member_inline_size <= 4) {
19631 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19632 }
19633 let inner_offset;
19634 let mut inner_depth = depth.clone();
19635 if inlined {
19636 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19637 inner_offset = next_offset;
19638 } else {
19639 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19640 inner_depth.increment()?;
19641 }
19642 let val_ref = self.slaac_preferred.get_or_insert_with(|| fidl::new_empty!(bool, D));
19643 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
19644 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19645 {
19646 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19647 }
19648 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19649 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19650 }
19651 }
19652
19653 next_offset += envelope_size;
19654 _next_ordinal_to_read += 1;
19655 if next_offset >= end_offset {
19656 return Ok(());
19657 }
19658
19659 while _next_ordinal_to_read < 5 {
19661 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19662 _next_ordinal_to_read += 1;
19663 next_offset += envelope_size;
19664 }
19665
19666 let next_out_of_line = decoder.next_out_of_line();
19667 let handles_before = decoder.remaining_handles();
19668 if let Some((inlined, num_bytes, num_handles)) =
19669 fidl::encoding::decode_envelope_header(decoder, next_offset)?
19670 {
19671 let member_inline_size =
19672 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
19673 if inlined != (member_inline_size <= 4) {
19674 return Err(fidl::Error::InvalidInlineBitInEnvelope);
19675 }
19676 let inner_offset;
19677 let mut inner_depth = depth.clone();
19678 if inlined {
19679 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
19680 inner_offset = next_offset;
19681 } else {
19682 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
19683 inner_depth.increment()?;
19684 }
19685 let val_ref = self.slaac_valid.get_or_insert_with(|| fidl::new_empty!(bool, D));
19686 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
19687 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
19688 {
19689 return Err(fidl::Error::InvalidNumBytesInEnvelope);
19690 }
19691 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
19692 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
19693 }
19694 }
19695
19696 next_offset += envelope_size;
19697
19698 while next_offset < end_offset {
19700 _next_ordinal_to_read += 1;
19701 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
19702 next_offset += envelope_size;
19703 }
19704
19705 Ok(())
19706 }
19707 }
19708
19709 impl OperationalDataset {
19710 #[inline(always)]
19711 fn max_ordinal_present(&self) -> u64 {
19712 if let Some(_) = self.channel_mask {
19713 return 13;
19714 }
19715 if let Some(_) = self.security_policy {
19716 return 12;
19717 }
19718 if let Some(_) = self.pskc {
19719 return 11;
19720 }
19721 if let Some(_) = self.wakeup_channel {
19722 return 10;
19723 }
19724 if let Some(_) = self.channel {
19725 return 9;
19726 }
19727 if let Some(_) = self.pan_id {
19728 return 8;
19729 }
19730 if let Some(_) = self.delay {
19731 return 7;
19732 }
19733 if let Some(_) = self.mesh_local_prefix {
19734 return 6;
19735 }
19736 if let Some(_) = self.extended_pan_id {
19737 return 5;
19738 }
19739 if let Some(_) = self.network_name {
19740 return 4;
19741 }
19742 if let Some(_) = self.network_key {
19743 return 3;
19744 }
19745 if let Some(_) = self.pending_timestamp {
19746 return 2;
19747 }
19748 if let Some(_) = self.active_timestamp {
19749 return 1;
19750 }
19751 0
19752 }
19753 }
19754
19755 impl fidl::encoding::ValueTypeMarker for OperationalDataset {
19756 type Borrowed<'a> = &'a Self;
19757 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
19758 value
19759 }
19760 }
19761
19762 unsafe impl fidl::encoding::TypeMarker for OperationalDataset {
19763 type Owned = Self;
19764
19765 #[inline(always)]
19766 fn inline_align(_context: fidl::encoding::Context) -> usize {
19767 8
19768 }
19769
19770 #[inline(always)]
19771 fn inline_size(_context: fidl::encoding::Context) -> usize {
19772 16
19773 }
19774 }
19775
19776 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OperationalDataset, D>
19777 for &OperationalDataset
19778 {
19779 unsafe fn encode(
19780 self,
19781 encoder: &mut fidl::encoding::Encoder<'_, D>,
19782 offset: usize,
19783 mut depth: fidl::encoding::Depth,
19784 ) -> fidl::Result<()> {
19785 encoder.debug_check_bounds::<OperationalDataset>(offset);
19786 let max_ordinal: u64 = self.max_ordinal_present();
19788 encoder.write_num(max_ordinal, offset);
19789 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
19790 if max_ordinal == 0 {
19792 return Ok(());
19793 }
19794 depth.increment()?;
19795 let envelope_size = 8;
19796 let bytes_len = max_ordinal as usize * envelope_size;
19797 #[allow(unused_variables)]
19798 let offset = encoder.out_of_line_offset(bytes_len);
19799 let mut _prev_end_offset: usize = 0;
19800 if 1 > max_ordinal {
19801 return Ok(());
19802 }
19803
19804 let cur_offset: usize = (1 - 1) * envelope_size;
19807
19808 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19810
19811 fidl::encoding::encode_in_envelope_optional::<i64, D>(
19816 self.active_timestamp
19817 .as_ref()
19818 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
19819 encoder,
19820 offset + cur_offset,
19821 depth,
19822 )?;
19823
19824 _prev_end_offset = cur_offset + envelope_size;
19825 if 2 > max_ordinal {
19826 return Ok(());
19827 }
19828
19829 let cur_offset: usize = (2 - 1) * envelope_size;
19832
19833 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19835
19836 fidl::encoding::encode_in_envelope_optional::<i64, D>(
19841 self.pending_timestamp
19842 .as_ref()
19843 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
19844 encoder,
19845 offset + cur_offset,
19846 depth,
19847 )?;
19848
19849 _prev_end_offset = cur_offset + envelope_size;
19850 if 3 > max_ordinal {
19851 return Ok(());
19852 }
19853
19854 let cur_offset: usize = (3 - 1) * envelope_size;
19857
19858 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19860
19861 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 16>, D>(
19866 self.network_key.as_ref().map(
19867 <fidl::encoding::Vector<u8, 16> as fidl::encoding::ValueTypeMarker>::borrow,
19868 ),
19869 encoder,
19870 offset + cur_offset,
19871 depth,
19872 )?;
19873
19874 _prev_end_offset = cur_offset + envelope_size;
19875 if 4 > max_ordinal {
19876 return Ok(());
19877 }
19878
19879 let cur_offset: usize = (4 - 1) * envelope_size;
19882
19883 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19885
19886 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 17>, D>(
19891 self.network_name.as_ref().map(
19892 <fidl::encoding::Vector<u8, 17> as fidl::encoding::ValueTypeMarker>::borrow,
19893 ),
19894 encoder,
19895 offset + cur_offset,
19896 depth,
19897 )?;
19898
19899 _prev_end_offset = cur_offset + envelope_size;
19900 if 5 > max_ordinal {
19901 return Ok(());
19902 }
19903
19904 let cur_offset: usize = (5 - 1) * envelope_size;
19907
19908 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19910
19911 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
19916 self.extended_pan_id.as_ref().map(
19917 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
19918 ),
19919 encoder,
19920 offset + cur_offset,
19921 depth,
19922 )?;
19923
19924 _prev_end_offset = cur_offset + envelope_size;
19925 if 6 > max_ordinal {
19926 return Ok(());
19927 }
19928
19929 let cur_offset: usize = (6 - 1) * envelope_size;
19932
19933 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19935
19936 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
19941 self.mesh_local_prefix.as_ref().map(
19942 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
19943 ),
19944 encoder,
19945 offset + cur_offset,
19946 depth,
19947 )?;
19948
19949 _prev_end_offset = cur_offset + envelope_size;
19950 if 7 > max_ordinal {
19951 return Ok(());
19952 }
19953
19954 let cur_offset: usize = (7 - 1) * envelope_size;
19957
19958 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19960
19961 fidl::encoding::encode_in_envelope_optional::<u32, D>(
19966 self.delay.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
19967 encoder,
19968 offset + cur_offset,
19969 depth,
19970 )?;
19971
19972 _prev_end_offset = cur_offset + envelope_size;
19973 if 8 > max_ordinal {
19974 return Ok(());
19975 }
19976
19977 let cur_offset: usize = (8 - 1) * envelope_size;
19980
19981 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
19983
19984 fidl::encoding::encode_in_envelope_optional::<u16, D>(
19989 self.pan_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
19990 encoder,
19991 offset + cur_offset,
19992 depth,
19993 )?;
19994
19995 _prev_end_offset = cur_offset + envelope_size;
19996 if 9 > max_ordinal {
19997 return Ok(());
19998 }
19999
20000 let cur_offset: usize = (9 - 1) * envelope_size;
20003
20004 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20006
20007 fidl::encoding::encode_in_envelope_optional::<u16, D>(
20012 self.channel.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
20013 encoder,
20014 offset + cur_offset,
20015 depth,
20016 )?;
20017
20018 _prev_end_offset = cur_offset + envelope_size;
20019 if 10 > max_ordinal {
20020 return Ok(());
20021 }
20022
20023 let cur_offset: usize = (10 - 1) * envelope_size;
20026
20027 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20029
20030 fidl::encoding::encode_in_envelope_optional::<u16, D>(
20035 self.wakeup_channel.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
20036 encoder,
20037 offset + cur_offset,
20038 depth,
20039 )?;
20040
20041 _prev_end_offset = cur_offset + envelope_size;
20042 if 11 > max_ordinal {
20043 return Ok(());
20044 }
20045
20046 let cur_offset: usize = (11 - 1) * envelope_size;
20049
20050 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20052
20053 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 16>, D>(
20058 self.pskc.as_ref().map(
20059 <fidl::encoding::Vector<u8, 16> as fidl::encoding::ValueTypeMarker>::borrow,
20060 ),
20061 encoder,
20062 offset + cur_offset,
20063 depth,
20064 )?;
20065
20066 _prev_end_offset = cur_offset + envelope_size;
20067 if 12 > max_ordinal {
20068 return Ok(());
20069 }
20070
20071 let cur_offset: usize = (12 - 1) * envelope_size;
20074
20075 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20077
20078 fidl::encoding::encode_in_envelope_optional::<SecurityPolicy, D>(
20083 self.security_policy
20084 .as_ref()
20085 .map(<SecurityPolicy as fidl::encoding::ValueTypeMarker>::borrow),
20086 encoder,
20087 offset + cur_offset,
20088 depth,
20089 )?;
20090
20091 _prev_end_offset = cur_offset + envelope_size;
20092 if 13 > max_ordinal {
20093 return Ok(());
20094 }
20095
20096 let cur_offset: usize = (13 - 1) * envelope_size;
20099
20100 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20102
20103 fidl::encoding::encode_in_envelope_optional::<u32, D>(
20108 self.channel_mask.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
20109 encoder,
20110 offset + cur_offset,
20111 depth,
20112 )?;
20113
20114 _prev_end_offset = cur_offset + envelope_size;
20115
20116 Ok(())
20117 }
20118 }
20119
20120 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OperationalDataset {
20121 #[inline(always)]
20122 fn new_empty() -> Self {
20123 Self::default()
20124 }
20125
20126 unsafe fn decode(
20127 &mut self,
20128 decoder: &mut fidl::encoding::Decoder<'_, D>,
20129 offset: usize,
20130 mut depth: fidl::encoding::Depth,
20131 ) -> fidl::Result<()> {
20132 decoder.debug_check_bounds::<Self>(offset);
20133 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
20134 None => return Err(fidl::Error::NotNullable),
20135 Some(len) => len,
20136 };
20137 if len == 0 {
20139 return Ok(());
20140 };
20141 depth.increment()?;
20142 let envelope_size = 8;
20143 let bytes_len = len * envelope_size;
20144 let offset = decoder.out_of_line_offset(bytes_len)?;
20145 let mut _next_ordinal_to_read = 0;
20147 let mut next_offset = offset;
20148 let end_offset = offset + bytes_len;
20149 _next_ordinal_to_read += 1;
20150 if next_offset >= end_offset {
20151 return Ok(());
20152 }
20153
20154 while _next_ordinal_to_read < 1 {
20156 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20157 _next_ordinal_to_read += 1;
20158 next_offset += envelope_size;
20159 }
20160
20161 let next_out_of_line = decoder.next_out_of_line();
20162 let handles_before = decoder.remaining_handles();
20163 if let Some((inlined, num_bytes, num_handles)) =
20164 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20165 {
20166 let member_inline_size =
20167 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20168 if inlined != (member_inline_size <= 4) {
20169 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20170 }
20171 let inner_offset;
20172 let mut inner_depth = depth.clone();
20173 if inlined {
20174 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20175 inner_offset = next_offset;
20176 } else {
20177 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20178 inner_depth.increment()?;
20179 }
20180 let val_ref = self.active_timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
20181 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
20182 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20183 {
20184 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20185 }
20186 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20187 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20188 }
20189 }
20190
20191 next_offset += envelope_size;
20192 _next_ordinal_to_read += 1;
20193 if next_offset >= end_offset {
20194 return Ok(());
20195 }
20196
20197 while _next_ordinal_to_read < 2 {
20199 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20200 _next_ordinal_to_read += 1;
20201 next_offset += envelope_size;
20202 }
20203
20204 let next_out_of_line = decoder.next_out_of_line();
20205 let handles_before = decoder.remaining_handles();
20206 if let Some((inlined, num_bytes, num_handles)) =
20207 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20208 {
20209 let member_inline_size =
20210 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20211 if inlined != (member_inline_size <= 4) {
20212 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20213 }
20214 let inner_offset;
20215 let mut inner_depth = depth.clone();
20216 if inlined {
20217 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20218 inner_offset = next_offset;
20219 } else {
20220 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20221 inner_depth.increment()?;
20222 }
20223 let val_ref =
20224 self.pending_timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
20225 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
20226 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20227 {
20228 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20229 }
20230 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20231 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20232 }
20233 }
20234
20235 next_offset += envelope_size;
20236 _next_ordinal_to_read += 1;
20237 if next_offset >= end_offset {
20238 return Ok(());
20239 }
20240
20241 while _next_ordinal_to_read < 3 {
20243 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20244 _next_ordinal_to_read += 1;
20245 next_offset += envelope_size;
20246 }
20247
20248 let next_out_of_line = decoder.next_out_of_line();
20249 let handles_before = decoder.remaining_handles();
20250 if let Some((inlined, num_bytes, num_handles)) =
20251 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20252 {
20253 let member_inline_size =
20254 <fidl::encoding::Vector<u8, 16> as fidl::encoding::TypeMarker>::inline_size(
20255 decoder.context,
20256 );
20257 if inlined != (member_inline_size <= 4) {
20258 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20259 }
20260 let inner_offset;
20261 let mut inner_depth = depth.clone();
20262 if inlined {
20263 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20264 inner_offset = next_offset;
20265 } else {
20266 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20267 inner_depth.increment()?;
20268 }
20269 let val_ref = self
20270 .network_key
20271 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 16>, D));
20272 fidl::decode!(fidl::encoding::Vector<u8, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
20273 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20274 {
20275 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20276 }
20277 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20278 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20279 }
20280 }
20281
20282 next_offset += envelope_size;
20283 _next_ordinal_to_read += 1;
20284 if next_offset >= end_offset {
20285 return Ok(());
20286 }
20287
20288 while _next_ordinal_to_read < 4 {
20290 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20291 _next_ordinal_to_read += 1;
20292 next_offset += envelope_size;
20293 }
20294
20295 let next_out_of_line = decoder.next_out_of_line();
20296 let handles_before = decoder.remaining_handles();
20297 if let Some((inlined, num_bytes, num_handles)) =
20298 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20299 {
20300 let member_inline_size =
20301 <fidl::encoding::Vector<u8, 17> as fidl::encoding::TypeMarker>::inline_size(
20302 decoder.context,
20303 );
20304 if inlined != (member_inline_size <= 4) {
20305 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20306 }
20307 let inner_offset;
20308 let mut inner_depth = depth.clone();
20309 if inlined {
20310 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20311 inner_offset = next_offset;
20312 } else {
20313 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20314 inner_depth.increment()?;
20315 }
20316 let val_ref = self
20317 .network_name
20318 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 17>, D));
20319 fidl::decode!(fidl::encoding::Vector<u8, 17>, D, val_ref, decoder, inner_offset, inner_depth)?;
20320 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20321 {
20322 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20323 }
20324 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20325 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20326 }
20327 }
20328
20329 next_offset += envelope_size;
20330 _next_ordinal_to_read += 1;
20331 if next_offset >= end_offset {
20332 return Ok(());
20333 }
20334
20335 while _next_ordinal_to_read < 5 {
20337 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20338 _next_ordinal_to_read += 1;
20339 next_offset += envelope_size;
20340 }
20341
20342 let next_out_of_line = decoder.next_out_of_line();
20343 let handles_before = decoder.remaining_handles();
20344 if let Some((inlined, num_bytes, num_handles)) =
20345 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20346 {
20347 let member_inline_size =
20348 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
20349 decoder.context,
20350 );
20351 if inlined != (member_inline_size <= 4) {
20352 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20353 }
20354 let inner_offset;
20355 let mut inner_depth = depth.clone();
20356 if inlined {
20357 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20358 inner_offset = next_offset;
20359 } else {
20360 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20361 inner_depth.increment()?;
20362 }
20363 let val_ref = self
20364 .extended_pan_id
20365 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
20366 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
20367 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20368 {
20369 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20370 }
20371 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20372 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20373 }
20374 }
20375
20376 next_offset += envelope_size;
20377 _next_ordinal_to_read += 1;
20378 if next_offset >= end_offset {
20379 return Ok(());
20380 }
20381
20382 while _next_ordinal_to_read < 6 {
20384 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20385 _next_ordinal_to_read += 1;
20386 next_offset += envelope_size;
20387 }
20388
20389 let next_out_of_line = decoder.next_out_of_line();
20390 let handles_before = decoder.remaining_handles();
20391 if let Some((inlined, num_bytes, num_handles)) =
20392 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20393 {
20394 let member_inline_size =
20395 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
20396 decoder.context,
20397 );
20398 if inlined != (member_inline_size <= 4) {
20399 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20400 }
20401 let inner_offset;
20402 let mut inner_depth = depth.clone();
20403 if inlined {
20404 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20405 inner_offset = next_offset;
20406 } else {
20407 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20408 inner_depth.increment()?;
20409 }
20410 let val_ref = self
20411 .mesh_local_prefix
20412 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
20413 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
20414 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20415 {
20416 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20417 }
20418 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20419 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20420 }
20421 }
20422
20423 next_offset += envelope_size;
20424 _next_ordinal_to_read += 1;
20425 if next_offset >= end_offset {
20426 return Ok(());
20427 }
20428
20429 while _next_ordinal_to_read < 7 {
20431 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20432 _next_ordinal_to_read += 1;
20433 next_offset += envelope_size;
20434 }
20435
20436 let next_out_of_line = decoder.next_out_of_line();
20437 let handles_before = decoder.remaining_handles();
20438 if let Some((inlined, num_bytes, num_handles)) =
20439 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20440 {
20441 let member_inline_size =
20442 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20443 if inlined != (member_inline_size <= 4) {
20444 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20445 }
20446 let inner_offset;
20447 let mut inner_depth = depth.clone();
20448 if inlined {
20449 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20450 inner_offset = next_offset;
20451 } else {
20452 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20453 inner_depth.increment()?;
20454 }
20455 let val_ref = self.delay.get_or_insert_with(|| fidl::new_empty!(u32, D));
20456 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
20457 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20458 {
20459 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20460 }
20461 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20462 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20463 }
20464 }
20465
20466 next_offset += envelope_size;
20467 _next_ordinal_to_read += 1;
20468 if next_offset >= end_offset {
20469 return Ok(());
20470 }
20471
20472 while _next_ordinal_to_read < 8 {
20474 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20475 _next_ordinal_to_read += 1;
20476 next_offset += envelope_size;
20477 }
20478
20479 let next_out_of_line = decoder.next_out_of_line();
20480 let handles_before = decoder.remaining_handles();
20481 if let Some((inlined, num_bytes, num_handles)) =
20482 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20483 {
20484 let member_inline_size =
20485 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20486 if inlined != (member_inline_size <= 4) {
20487 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20488 }
20489 let inner_offset;
20490 let mut inner_depth = depth.clone();
20491 if inlined {
20492 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20493 inner_offset = next_offset;
20494 } else {
20495 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20496 inner_depth.increment()?;
20497 }
20498 let val_ref = self.pan_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
20499 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
20500 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20501 {
20502 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20503 }
20504 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20505 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20506 }
20507 }
20508
20509 next_offset += envelope_size;
20510 _next_ordinal_to_read += 1;
20511 if next_offset >= end_offset {
20512 return Ok(());
20513 }
20514
20515 while _next_ordinal_to_read < 9 {
20517 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20518 _next_ordinal_to_read += 1;
20519 next_offset += envelope_size;
20520 }
20521
20522 let next_out_of_line = decoder.next_out_of_line();
20523 let handles_before = decoder.remaining_handles();
20524 if let Some((inlined, num_bytes, num_handles)) =
20525 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20526 {
20527 let member_inline_size =
20528 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20529 if inlined != (member_inline_size <= 4) {
20530 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20531 }
20532 let inner_offset;
20533 let mut inner_depth = depth.clone();
20534 if inlined {
20535 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20536 inner_offset = next_offset;
20537 } else {
20538 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20539 inner_depth.increment()?;
20540 }
20541 let val_ref = self.channel.get_or_insert_with(|| fidl::new_empty!(u16, D));
20542 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
20543 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20544 {
20545 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20546 }
20547 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20548 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20549 }
20550 }
20551
20552 next_offset += envelope_size;
20553 _next_ordinal_to_read += 1;
20554 if next_offset >= end_offset {
20555 return Ok(());
20556 }
20557
20558 while _next_ordinal_to_read < 10 {
20560 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20561 _next_ordinal_to_read += 1;
20562 next_offset += envelope_size;
20563 }
20564
20565 let next_out_of_line = decoder.next_out_of_line();
20566 let handles_before = decoder.remaining_handles();
20567 if let Some((inlined, num_bytes, num_handles)) =
20568 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20569 {
20570 let member_inline_size =
20571 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20572 if inlined != (member_inline_size <= 4) {
20573 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20574 }
20575 let inner_offset;
20576 let mut inner_depth = depth.clone();
20577 if inlined {
20578 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20579 inner_offset = next_offset;
20580 } else {
20581 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20582 inner_depth.increment()?;
20583 }
20584 let val_ref = self.wakeup_channel.get_or_insert_with(|| fidl::new_empty!(u16, D));
20585 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
20586 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20587 {
20588 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20589 }
20590 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20591 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20592 }
20593 }
20594
20595 next_offset += envelope_size;
20596 _next_ordinal_to_read += 1;
20597 if next_offset >= end_offset {
20598 return Ok(());
20599 }
20600
20601 while _next_ordinal_to_read < 11 {
20603 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20604 _next_ordinal_to_read += 1;
20605 next_offset += envelope_size;
20606 }
20607
20608 let next_out_of_line = decoder.next_out_of_line();
20609 let handles_before = decoder.remaining_handles();
20610 if let Some((inlined, num_bytes, num_handles)) =
20611 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20612 {
20613 let member_inline_size =
20614 <fidl::encoding::Vector<u8, 16> as fidl::encoding::TypeMarker>::inline_size(
20615 decoder.context,
20616 );
20617 if inlined != (member_inline_size <= 4) {
20618 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20619 }
20620 let inner_offset;
20621 let mut inner_depth = depth.clone();
20622 if inlined {
20623 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20624 inner_offset = next_offset;
20625 } else {
20626 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20627 inner_depth.increment()?;
20628 }
20629 let val_ref = self
20630 .pskc
20631 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 16>, D));
20632 fidl::decode!(fidl::encoding::Vector<u8, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
20633 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20634 {
20635 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20636 }
20637 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20638 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20639 }
20640 }
20641
20642 next_offset += envelope_size;
20643 _next_ordinal_to_read += 1;
20644 if next_offset >= end_offset {
20645 return Ok(());
20646 }
20647
20648 while _next_ordinal_to_read < 12 {
20650 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20651 _next_ordinal_to_read += 1;
20652 next_offset += envelope_size;
20653 }
20654
20655 let next_out_of_line = decoder.next_out_of_line();
20656 let handles_before = decoder.remaining_handles();
20657 if let Some((inlined, num_bytes, num_handles)) =
20658 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20659 {
20660 let member_inline_size =
20661 <SecurityPolicy as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20662 if inlined != (member_inline_size <= 4) {
20663 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20664 }
20665 let inner_offset;
20666 let mut inner_depth = depth.clone();
20667 if inlined {
20668 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20669 inner_offset = next_offset;
20670 } else {
20671 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20672 inner_depth.increment()?;
20673 }
20674 let val_ref =
20675 self.security_policy.get_or_insert_with(|| fidl::new_empty!(SecurityPolicy, D));
20676 fidl::decode!(SecurityPolicy, D, val_ref, decoder, inner_offset, inner_depth)?;
20677 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20678 {
20679 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20680 }
20681 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20682 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20683 }
20684 }
20685
20686 next_offset += envelope_size;
20687 _next_ordinal_to_read += 1;
20688 if next_offset >= end_offset {
20689 return Ok(());
20690 }
20691
20692 while _next_ordinal_to_read < 13 {
20694 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20695 _next_ordinal_to_read += 1;
20696 next_offset += envelope_size;
20697 }
20698
20699 let next_out_of_line = decoder.next_out_of_line();
20700 let handles_before = decoder.remaining_handles();
20701 if let Some((inlined, num_bytes, num_handles)) =
20702 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20703 {
20704 let member_inline_size =
20705 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20706 if inlined != (member_inline_size <= 4) {
20707 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20708 }
20709 let inner_offset;
20710 let mut inner_depth = depth.clone();
20711 if inlined {
20712 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20713 inner_offset = next_offset;
20714 } else {
20715 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20716 inner_depth.increment()?;
20717 }
20718 let val_ref = self.channel_mask.get_or_insert_with(|| fidl::new_empty!(u32, D));
20719 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
20720 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20721 {
20722 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20723 }
20724 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20725 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20726 }
20727 }
20728
20729 next_offset += envelope_size;
20730
20731 while next_offset < end_offset {
20733 _next_ordinal_to_read += 1;
20734 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20735 next_offset += envelope_size;
20736 }
20737
20738 Ok(())
20739 }
20740 }
20741
20742 impl PdProcessedRaInfo {
20743 #[inline(always)]
20744 fn max_ordinal_present(&self) -> u64 {
20745 if let Some(_) = self.last_platform_ra_msec {
20746 return 3;
20747 }
20748 if let Some(_) = self.num_platform_pio_processed {
20749 return 2;
20750 }
20751 if let Some(_) = self.num_platform_ra_received {
20752 return 1;
20753 }
20754 0
20755 }
20756 }
20757
20758 impl fidl::encoding::ValueTypeMarker for PdProcessedRaInfo {
20759 type Borrowed<'a> = &'a Self;
20760 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
20761 value
20762 }
20763 }
20764
20765 unsafe impl fidl::encoding::TypeMarker for PdProcessedRaInfo {
20766 type Owned = Self;
20767
20768 #[inline(always)]
20769 fn inline_align(_context: fidl::encoding::Context) -> usize {
20770 8
20771 }
20772
20773 #[inline(always)]
20774 fn inline_size(_context: fidl::encoding::Context) -> usize {
20775 16
20776 }
20777 }
20778
20779 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PdProcessedRaInfo, D>
20780 for &PdProcessedRaInfo
20781 {
20782 unsafe fn encode(
20783 self,
20784 encoder: &mut fidl::encoding::Encoder<'_, D>,
20785 offset: usize,
20786 mut depth: fidl::encoding::Depth,
20787 ) -> fidl::Result<()> {
20788 encoder.debug_check_bounds::<PdProcessedRaInfo>(offset);
20789 let max_ordinal: u64 = self.max_ordinal_present();
20791 encoder.write_num(max_ordinal, offset);
20792 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
20793 if max_ordinal == 0 {
20795 return Ok(());
20796 }
20797 depth.increment()?;
20798 let envelope_size = 8;
20799 let bytes_len = max_ordinal as usize * envelope_size;
20800 #[allow(unused_variables)]
20801 let offset = encoder.out_of_line_offset(bytes_len);
20802 let mut _prev_end_offset: usize = 0;
20803 if 1 > max_ordinal {
20804 return Ok(());
20805 }
20806
20807 let cur_offset: usize = (1 - 1) * envelope_size;
20810
20811 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20813
20814 fidl::encoding::encode_in_envelope_optional::<u32, D>(
20819 self.num_platform_ra_received
20820 .as_ref()
20821 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
20822 encoder,
20823 offset + cur_offset,
20824 depth,
20825 )?;
20826
20827 _prev_end_offset = cur_offset + envelope_size;
20828 if 2 > max_ordinal {
20829 return Ok(());
20830 }
20831
20832 let cur_offset: usize = (2 - 1) * envelope_size;
20835
20836 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20838
20839 fidl::encoding::encode_in_envelope_optional::<u32, D>(
20844 self.num_platform_pio_processed
20845 .as_ref()
20846 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
20847 encoder,
20848 offset + cur_offset,
20849 depth,
20850 )?;
20851
20852 _prev_end_offset = cur_offset + envelope_size;
20853 if 3 > max_ordinal {
20854 return Ok(());
20855 }
20856
20857 let cur_offset: usize = (3 - 1) * envelope_size;
20860
20861 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
20863
20864 fidl::encoding::encode_in_envelope_optional::<u32, D>(
20869 self.last_platform_ra_msec
20870 .as_ref()
20871 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
20872 encoder,
20873 offset + cur_offset,
20874 depth,
20875 )?;
20876
20877 _prev_end_offset = cur_offset + envelope_size;
20878
20879 Ok(())
20880 }
20881 }
20882
20883 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PdProcessedRaInfo {
20884 #[inline(always)]
20885 fn new_empty() -> Self {
20886 Self::default()
20887 }
20888
20889 unsafe fn decode(
20890 &mut self,
20891 decoder: &mut fidl::encoding::Decoder<'_, D>,
20892 offset: usize,
20893 mut depth: fidl::encoding::Depth,
20894 ) -> fidl::Result<()> {
20895 decoder.debug_check_bounds::<Self>(offset);
20896 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
20897 None => return Err(fidl::Error::NotNullable),
20898 Some(len) => len,
20899 };
20900 if len == 0 {
20902 return Ok(());
20903 };
20904 depth.increment()?;
20905 let envelope_size = 8;
20906 let bytes_len = len * envelope_size;
20907 let offset = decoder.out_of_line_offset(bytes_len)?;
20908 let mut _next_ordinal_to_read = 0;
20910 let mut next_offset = offset;
20911 let end_offset = offset + bytes_len;
20912 _next_ordinal_to_read += 1;
20913 if next_offset >= end_offset {
20914 return Ok(());
20915 }
20916
20917 while _next_ordinal_to_read < 1 {
20919 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20920 _next_ordinal_to_read += 1;
20921 next_offset += envelope_size;
20922 }
20923
20924 let next_out_of_line = decoder.next_out_of_line();
20925 let handles_before = decoder.remaining_handles();
20926 if let Some((inlined, num_bytes, num_handles)) =
20927 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20928 {
20929 let member_inline_size =
20930 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20931 if inlined != (member_inline_size <= 4) {
20932 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20933 }
20934 let inner_offset;
20935 let mut inner_depth = depth.clone();
20936 if inlined {
20937 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20938 inner_offset = next_offset;
20939 } else {
20940 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20941 inner_depth.increment()?;
20942 }
20943 let val_ref =
20944 self.num_platform_ra_received.get_or_insert_with(|| fidl::new_empty!(u32, D));
20945 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
20946 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20947 {
20948 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20949 }
20950 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20951 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20952 }
20953 }
20954
20955 next_offset += envelope_size;
20956 _next_ordinal_to_read += 1;
20957 if next_offset >= end_offset {
20958 return Ok(());
20959 }
20960
20961 while _next_ordinal_to_read < 2 {
20963 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
20964 _next_ordinal_to_read += 1;
20965 next_offset += envelope_size;
20966 }
20967
20968 let next_out_of_line = decoder.next_out_of_line();
20969 let handles_before = decoder.remaining_handles();
20970 if let Some((inlined, num_bytes, num_handles)) =
20971 fidl::encoding::decode_envelope_header(decoder, next_offset)?
20972 {
20973 let member_inline_size =
20974 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
20975 if inlined != (member_inline_size <= 4) {
20976 return Err(fidl::Error::InvalidInlineBitInEnvelope);
20977 }
20978 let inner_offset;
20979 let mut inner_depth = depth.clone();
20980 if inlined {
20981 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
20982 inner_offset = next_offset;
20983 } else {
20984 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
20985 inner_depth.increment()?;
20986 }
20987 let val_ref =
20988 self.num_platform_pio_processed.get_or_insert_with(|| fidl::new_empty!(u32, D));
20989 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
20990 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
20991 {
20992 return Err(fidl::Error::InvalidNumBytesInEnvelope);
20993 }
20994 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
20995 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
20996 }
20997 }
20998
20999 next_offset += envelope_size;
21000 _next_ordinal_to_read += 1;
21001 if next_offset >= end_offset {
21002 return Ok(());
21003 }
21004
21005 while _next_ordinal_to_read < 3 {
21007 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21008 _next_ordinal_to_read += 1;
21009 next_offset += envelope_size;
21010 }
21011
21012 let next_out_of_line = decoder.next_out_of_line();
21013 let handles_before = decoder.remaining_handles();
21014 if let Some((inlined, num_bytes, num_handles)) =
21015 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21016 {
21017 let member_inline_size =
21018 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21019 if inlined != (member_inline_size <= 4) {
21020 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21021 }
21022 let inner_offset;
21023 let mut inner_depth = depth.clone();
21024 if inlined {
21025 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21026 inner_offset = next_offset;
21027 } else {
21028 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21029 inner_depth.increment()?;
21030 }
21031 let val_ref =
21032 self.last_platform_ra_msec.get_or_insert_with(|| fidl::new_empty!(u32, D));
21033 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
21034 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21035 {
21036 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21037 }
21038 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21039 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21040 }
21041 }
21042
21043 next_offset += envelope_size;
21044
21045 while next_offset < end_offset {
21047 _next_ordinal_to_read += 1;
21048 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21049 next_offset += envelope_size;
21050 }
21051
21052 Ok(())
21053 }
21054 }
21055
21056 impl RadioLinkInfo {
21057 #[inline(always)]
21058 fn max_ordinal_present(&self) -> u64 {
21059 if let Some(_) = self.preference {
21060 return 2;
21061 }
21062 if let Some(_) = self.link_type {
21063 return 1;
21064 }
21065 0
21066 }
21067 }
21068
21069 impl fidl::encoding::ValueTypeMarker for RadioLinkInfo {
21070 type Borrowed<'a> = &'a Self;
21071 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
21072 value
21073 }
21074 }
21075
21076 unsafe impl fidl::encoding::TypeMarker for RadioLinkInfo {
21077 type Owned = Self;
21078
21079 #[inline(always)]
21080 fn inline_align(_context: fidl::encoding::Context) -> usize {
21081 8
21082 }
21083
21084 #[inline(always)]
21085 fn inline_size(_context: fidl::encoding::Context) -> usize {
21086 16
21087 }
21088 }
21089
21090 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RadioLinkInfo, D>
21091 for &RadioLinkInfo
21092 {
21093 unsafe fn encode(
21094 self,
21095 encoder: &mut fidl::encoding::Encoder<'_, D>,
21096 offset: usize,
21097 mut depth: fidl::encoding::Depth,
21098 ) -> fidl::Result<()> {
21099 encoder.debug_check_bounds::<RadioLinkInfo>(offset);
21100 let max_ordinal: u64 = self.max_ordinal_present();
21102 encoder.write_num(max_ordinal, offset);
21103 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
21104 if max_ordinal == 0 {
21106 return Ok(());
21107 }
21108 depth.increment()?;
21109 let envelope_size = 8;
21110 let bytes_len = max_ordinal as usize * envelope_size;
21111 #[allow(unused_variables)]
21112 let offset = encoder.out_of_line_offset(bytes_len);
21113 let mut _prev_end_offset: usize = 0;
21114 if 1 > max_ordinal {
21115 return Ok(());
21116 }
21117
21118 let cur_offset: usize = (1 - 1) * envelope_size;
21121
21122 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21124
21125 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<10>, D>(
21130 self.link_type.as_ref().map(
21131 <fidl::encoding::BoundedString<10> as fidl::encoding::ValueTypeMarker>::borrow,
21132 ),
21133 encoder,
21134 offset + cur_offset,
21135 depth,
21136 )?;
21137
21138 _prev_end_offset = cur_offset + envelope_size;
21139 if 2 > max_ordinal {
21140 return Ok(());
21141 }
21142
21143 let cur_offset: usize = (2 - 1) * envelope_size;
21146
21147 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21149
21150 fidl::encoding::encode_in_envelope_optional::<u8, D>(
21155 self.preference.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
21156 encoder,
21157 offset + cur_offset,
21158 depth,
21159 )?;
21160
21161 _prev_end_offset = cur_offset + envelope_size;
21162
21163 Ok(())
21164 }
21165 }
21166
21167 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RadioLinkInfo {
21168 #[inline(always)]
21169 fn new_empty() -> Self {
21170 Self::default()
21171 }
21172
21173 unsafe fn decode(
21174 &mut self,
21175 decoder: &mut fidl::encoding::Decoder<'_, D>,
21176 offset: usize,
21177 mut depth: fidl::encoding::Depth,
21178 ) -> fidl::Result<()> {
21179 decoder.debug_check_bounds::<Self>(offset);
21180 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
21181 None => return Err(fidl::Error::NotNullable),
21182 Some(len) => len,
21183 };
21184 if len == 0 {
21186 return Ok(());
21187 };
21188 depth.increment()?;
21189 let envelope_size = 8;
21190 let bytes_len = len * envelope_size;
21191 let offset = decoder.out_of_line_offset(bytes_len)?;
21192 let mut _next_ordinal_to_read = 0;
21194 let mut next_offset = offset;
21195 let end_offset = offset + bytes_len;
21196 _next_ordinal_to_read += 1;
21197 if next_offset >= end_offset {
21198 return Ok(());
21199 }
21200
21201 while _next_ordinal_to_read < 1 {
21203 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21204 _next_ordinal_to_read += 1;
21205 next_offset += envelope_size;
21206 }
21207
21208 let next_out_of_line = decoder.next_out_of_line();
21209 let handles_before = decoder.remaining_handles();
21210 if let Some((inlined, num_bytes, num_handles)) =
21211 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21212 {
21213 let member_inline_size =
21214 <fidl::encoding::BoundedString<10> as fidl::encoding::TypeMarker>::inline_size(
21215 decoder.context,
21216 );
21217 if inlined != (member_inline_size <= 4) {
21218 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21219 }
21220 let inner_offset;
21221 let mut inner_depth = depth.clone();
21222 if inlined {
21223 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21224 inner_offset = next_offset;
21225 } else {
21226 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21227 inner_depth.increment()?;
21228 }
21229 let val_ref = self
21230 .link_type
21231 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<10>, D));
21232 fidl::decode!(
21233 fidl::encoding::BoundedString<10>,
21234 D,
21235 val_ref,
21236 decoder,
21237 inner_offset,
21238 inner_depth
21239 )?;
21240 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21241 {
21242 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21243 }
21244 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21245 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21246 }
21247 }
21248
21249 next_offset += envelope_size;
21250 _next_ordinal_to_read += 1;
21251 if next_offset >= end_offset {
21252 return Ok(());
21253 }
21254
21255 while _next_ordinal_to_read < 2 {
21257 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21258 _next_ordinal_to_read += 1;
21259 next_offset += envelope_size;
21260 }
21261
21262 let next_out_of_line = decoder.next_out_of_line();
21263 let handles_before = decoder.remaining_handles();
21264 if let Some((inlined, num_bytes, num_handles)) =
21265 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21266 {
21267 let member_inline_size =
21268 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21269 if inlined != (member_inline_size <= 4) {
21270 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21271 }
21272 let inner_offset;
21273 let mut inner_depth = depth.clone();
21274 if inlined {
21275 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21276 inner_offset = next_offset;
21277 } else {
21278 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21279 inner_depth.increment()?;
21280 }
21281 let val_ref = self.preference.get_or_insert_with(|| fidl::new_empty!(u8, D));
21282 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
21283 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21284 {
21285 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21286 }
21287 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21288 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21289 }
21290 }
21291
21292 next_offset += envelope_size;
21293
21294 while next_offset < end_offset {
21296 _next_ordinal_to_read += 1;
21297 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21298 next_offset += envelope_size;
21299 }
21300
21301 Ok(())
21302 }
21303 }
21304
21305 impl RouterInfo {
21306 #[inline(always)]
21307 fn max_ordinal_present(&self) -> u64 {
21308 if let Some(_) = self.link_established {
21309 return 9;
21310 }
21311 if let Some(_) = self.age {
21312 return 8;
21313 }
21314 if let Some(_) = self.link_quality_out {
21315 return 7;
21316 }
21317 if let Some(_) = self.link_quality_in {
21318 return 6;
21319 }
21320 if let Some(_) = self.path_cost {
21321 return 5;
21322 }
21323 if let Some(_) = self.next_hop {
21324 return 4;
21325 }
21326 if let Some(_) = self.router_id {
21327 return 3;
21328 }
21329 if let Some(_) = self.thread_rloc {
21330 return 2;
21331 }
21332 if let Some(_) = self.extended_address {
21333 return 1;
21334 }
21335 0
21336 }
21337 }
21338
21339 impl fidl::encoding::ValueTypeMarker for RouterInfo {
21340 type Borrowed<'a> = &'a Self;
21341 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
21342 value
21343 }
21344 }
21345
21346 unsafe impl fidl::encoding::TypeMarker for RouterInfo {
21347 type Owned = Self;
21348
21349 #[inline(always)]
21350 fn inline_align(_context: fidl::encoding::Context) -> usize {
21351 8
21352 }
21353
21354 #[inline(always)]
21355 fn inline_size(_context: fidl::encoding::Context) -> usize {
21356 16
21357 }
21358 }
21359
21360 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RouterInfo, D>
21361 for &RouterInfo
21362 {
21363 unsafe fn encode(
21364 self,
21365 encoder: &mut fidl::encoding::Encoder<'_, D>,
21366 offset: usize,
21367 mut depth: fidl::encoding::Depth,
21368 ) -> fidl::Result<()> {
21369 encoder.debug_check_bounds::<RouterInfo>(offset);
21370 let max_ordinal: u64 = self.max_ordinal_present();
21372 encoder.write_num(max_ordinal, offset);
21373 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
21374 if max_ordinal == 0 {
21376 return Ok(());
21377 }
21378 depth.increment()?;
21379 let envelope_size = 8;
21380 let bytes_len = max_ordinal as usize * envelope_size;
21381 #[allow(unused_variables)]
21382 let offset = encoder.out_of_line_offset(bytes_len);
21383 let mut _prev_end_offset: usize = 0;
21384 if 1 > max_ordinal {
21385 return Ok(());
21386 }
21387
21388 let cur_offset: usize = (1 - 1) * envelope_size;
21391
21392 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21394
21395 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
21400 self.extended_address.as_ref().map(
21401 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
21402 ),
21403 encoder,
21404 offset + cur_offset,
21405 depth,
21406 )?;
21407
21408 _prev_end_offset = cur_offset + envelope_size;
21409 if 2 > max_ordinal {
21410 return Ok(());
21411 }
21412
21413 let cur_offset: usize = (2 - 1) * envelope_size;
21416
21417 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21419
21420 fidl::encoding::encode_in_envelope_optional::<u16, D>(
21425 self.thread_rloc.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
21426 encoder,
21427 offset + cur_offset,
21428 depth,
21429 )?;
21430
21431 _prev_end_offset = cur_offset + envelope_size;
21432 if 3 > max_ordinal {
21433 return Ok(());
21434 }
21435
21436 let cur_offset: usize = (3 - 1) * envelope_size;
21439
21440 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21442
21443 fidl::encoding::encode_in_envelope_optional::<u8, D>(
21448 self.router_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
21449 encoder,
21450 offset + cur_offset,
21451 depth,
21452 )?;
21453
21454 _prev_end_offset = cur_offset + envelope_size;
21455 if 4 > max_ordinal {
21456 return Ok(());
21457 }
21458
21459 let cur_offset: usize = (4 - 1) * envelope_size;
21462
21463 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21465
21466 fidl::encoding::encode_in_envelope_optional::<u8, D>(
21471 self.next_hop.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
21472 encoder,
21473 offset + cur_offset,
21474 depth,
21475 )?;
21476
21477 _prev_end_offset = cur_offset + envelope_size;
21478 if 5 > max_ordinal {
21479 return Ok(());
21480 }
21481
21482 let cur_offset: usize = (5 - 1) * envelope_size;
21485
21486 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21488
21489 fidl::encoding::encode_in_envelope_optional::<u8, D>(
21494 self.path_cost.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
21495 encoder,
21496 offset + cur_offset,
21497 depth,
21498 )?;
21499
21500 _prev_end_offset = cur_offset + envelope_size;
21501 if 6 > max_ordinal {
21502 return Ok(());
21503 }
21504
21505 let cur_offset: usize = (6 - 1) * envelope_size;
21508
21509 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21511
21512 fidl::encoding::encode_in_envelope_optional::<u8, D>(
21517 self.link_quality_in.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
21518 encoder,
21519 offset + cur_offset,
21520 depth,
21521 )?;
21522
21523 _prev_end_offset = cur_offset + envelope_size;
21524 if 7 > max_ordinal {
21525 return Ok(());
21526 }
21527
21528 let cur_offset: usize = (7 - 1) * envelope_size;
21531
21532 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21534
21535 fidl::encoding::encode_in_envelope_optional::<u8, D>(
21540 self.link_quality_out.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
21541 encoder,
21542 offset + cur_offset,
21543 depth,
21544 )?;
21545
21546 _prev_end_offset = cur_offset + envelope_size;
21547 if 8 > max_ordinal {
21548 return Ok(());
21549 }
21550
21551 let cur_offset: usize = (8 - 1) * envelope_size;
21554
21555 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21557
21558 fidl::encoding::encode_in_envelope_optional::<i64, D>(
21563 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
21564 encoder,
21565 offset + cur_offset,
21566 depth,
21567 )?;
21568
21569 _prev_end_offset = cur_offset + envelope_size;
21570 if 9 > max_ordinal {
21571 return Ok(());
21572 }
21573
21574 let cur_offset: usize = (9 - 1) * envelope_size;
21577
21578 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
21580
21581 fidl::encoding::encode_in_envelope_optional::<bool, D>(
21586 self.link_established
21587 .as_ref()
21588 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
21589 encoder,
21590 offset + cur_offset,
21591 depth,
21592 )?;
21593
21594 _prev_end_offset = cur_offset + envelope_size;
21595
21596 Ok(())
21597 }
21598 }
21599
21600 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RouterInfo {
21601 #[inline(always)]
21602 fn new_empty() -> Self {
21603 Self::default()
21604 }
21605
21606 unsafe fn decode(
21607 &mut self,
21608 decoder: &mut fidl::encoding::Decoder<'_, D>,
21609 offset: usize,
21610 mut depth: fidl::encoding::Depth,
21611 ) -> fidl::Result<()> {
21612 decoder.debug_check_bounds::<Self>(offset);
21613 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
21614 None => return Err(fidl::Error::NotNullable),
21615 Some(len) => len,
21616 };
21617 if len == 0 {
21619 return Ok(());
21620 };
21621 depth.increment()?;
21622 let envelope_size = 8;
21623 let bytes_len = len * envelope_size;
21624 let offset = decoder.out_of_line_offset(bytes_len)?;
21625 let mut _next_ordinal_to_read = 0;
21627 let mut next_offset = offset;
21628 let end_offset = offset + bytes_len;
21629 _next_ordinal_to_read += 1;
21630 if next_offset >= end_offset {
21631 return Ok(());
21632 }
21633
21634 while _next_ordinal_to_read < 1 {
21636 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21637 _next_ordinal_to_read += 1;
21638 next_offset += envelope_size;
21639 }
21640
21641 let next_out_of_line = decoder.next_out_of_line();
21642 let handles_before = decoder.remaining_handles();
21643 if let Some((inlined, num_bytes, num_handles)) =
21644 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21645 {
21646 let member_inline_size =
21647 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
21648 decoder.context,
21649 );
21650 if inlined != (member_inline_size <= 4) {
21651 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21652 }
21653 let inner_offset;
21654 let mut inner_depth = depth.clone();
21655 if inlined {
21656 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21657 inner_offset = next_offset;
21658 } else {
21659 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21660 inner_depth.increment()?;
21661 }
21662 let val_ref = self
21663 .extended_address
21664 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
21665 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
21666 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21667 {
21668 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21669 }
21670 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21671 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21672 }
21673 }
21674
21675 next_offset += envelope_size;
21676 _next_ordinal_to_read += 1;
21677 if next_offset >= end_offset {
21678 return Ok(());
21679 }
21680
21681 while _next_ordinal_to_read < 2 {
21683 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21684 _next_ordinal_to_read += 1;
21685 next_offset += envelope_size;
21686 }
21687
21688 let next_out_of_line = decoder.next_out_of_line();
21689 let handles_before = decoder.remaining_handles();
21690 if let Some((inlined, num_bytes, num_handles)) =
21691 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21692 {
21693 let member_inline_size =
21694 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21695 if inlined != (member_inline_size <= 4) {
21696 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21697 }
21698 let inner_offset;
21699 let mut inner_depth = depth.clone();
21700 if inlined {
21701 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21702 inner_offset = next_offset;
21703 } else {
21704 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21705 inner_depth.increment()?;
21706 }
21707 let val_ref = self.thread_rloc.get_or_insert_with(|| fidl::new_empty!(u16, D));
21708 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
21709 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21710 {
21711 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21712 }
21713 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21714 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21715 }
21716 }
21717
21718 next_offset += envelope_size;
21719 _next_ordinal_to_read += 1;
21720 if next_offset >= end_offset {
21721 return Ok(());
21722 }
21723
21724 while _next_ordinal_to_read < 3 {
21726 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21727 _next_ordinal_to_read += 1;
21728 next_offset += envelope_size;
21729 }
21730
21731 let next_out_of_line = decoder.next_out_of_line();
21732 let handles_before = decoder.remaining_handles();
21733 if let Some((inlined, num_bytes, num_handles)) =
21734 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21735 {
21736 let member_inline_size =
21737 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21738 if inlined != (member_inline_size <= 4) {
21739 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21740 }
21741 let inner_offset;
21742 let mut inner_depth = depth.clone();
21743 if inlined {
21744 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21745 inner_offset = next_offset;
21746 } else {
21747 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21748 inner_depth.increment()?;
21749 }
21750 let val_ref = self.router_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
21751 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
21752 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21753 {
21754 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21755 }
21756 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21757 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21758 }
21759 }
21760
21761 next_offset += envelope_size;
21762 _next_ordinal_to_read += 1;
21763 if next_offset >= end_offset {
21764 return Ok(());
21765 }
21766
21767 while _next_ordinal_to_read < 4 {
21769 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21770 _next_ordinal_to_read += 1;
21771 next_offset += envelope_size;
21772 }
21773
21774 let next_out_of_line = decoder.next_out_of_line();
21775 let handles_before = decoder.remaining_handles();
21776 if let Some((inlined, num_bytes, num_handles)) =
21777 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21778 {
21779 let member_inline_size =
21780 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21781 if inlined != (member_inline_size <= 4) {
21782 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21783 }
21784 let inner_offset;
21785 let mut inner_depth = depth.clone();
21786 if inlined {
21787 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21788 inner_offset = next_offset;
21789 } else {
21790 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21791 inner_depth.increment()?;
21792 }
21793 let val_ref = self.next_hop.get_or_insert_with(|| fidl::new_empty!(u8, D));
21794 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
21795 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21796 {
21797 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21798 }
21799 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21800 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21801 }
21802 }
21803
21804 next_offset += envelope_size;
21805 _next_ordinal_to_read += 1;
21806 if next_offset >= end_offset {
21807 return Ok(());
21808 }
21809
21810 while _next_ordinal_to_read < 5 {
21812 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21813 _next_ordinal_to_read += 1;
21814 next_offset += envelope_size;
21815 }
21816
21817 let next_out_of_line = decoder.next_out_of_line();
21818 let handles_before = decoder.remaining_handles();
21819 if let Some((inlined, num_bytes, num_handles)) =
21820 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21821 {
21822 let member_inline_size =
21823 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21824 if inlined != (member_inline_size <= 4) {
21825 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21826 }
21827 let inner_offset;
21828 let mut inner_depth = depth.clone();
21829 if inlined {
21830 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21831 inner_offset = next_offset;
21832 } else {
21833 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21834 inner_depth.increment()?;
21835 }
21836 let val_ref = self.path_cost.get_or_insert_with(|| fidl::new_empty!(u8, D));
21837 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
21838 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21839 {
21840 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21841 }
21842 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21843 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21844 }
21845 }
21846
21847 next_offset += envelope_size;
21848 _next_ordinal_to_read += 1;
21849 if next_offset >= end_offset {
21850 return Ok(());
21851 }
21852
21853 while _next_ordinal_to_read < 6 {
21855 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21856 _next_ordinal_to_read += 1;
21857 next_offset += envelope_size;
21858 }
21859
21860 let next_out_of_line = decoder.next_out_of_line();
21861 let handles_before = decoder.remaining_handles();
21862 if let Some((inlined, num_bytes, num_handles)) =
21863 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21864 {
21865 let member_inline_size =
21866 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21867 if inlined != (member_inline_size <= 4) {
21868 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21869 }
21870 let inner_offset;
21871 let mut inner_depth = depth.clone();
21872 if inlined {
21873 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21874 inner_offset = next_offset;
21875 } else {
21876 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21877 inner_depth.increment()?;
21878 }
21879 let val_ref = self.link_quality_in.get_or_insert_with(|| fidl::new_empty!(u8, D));
21880 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
21881 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21882 {
21883 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21884 }
21885 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21886 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21887 }
21888 }
21889
21890 next_offset += envelope_size;
21891 _next_ordinal_to_read += 1;
21892 if next_offset >= end_offset {
21893 return Ok(());
21894 }
21895
21896 while _next_ordinal_to_read < 7 {
21898 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21899 _next_ordinal_to_read += 1;
21900 next_offset += envelope_size;
21901 }
21902
21903 let next_out_of_line = decoder.next_out_of_line();
21904 let handles_before = decoder.remaining_handles();
21905 if let Some((inlined, num_bytes, num_handles)) =
21906 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21907 {
21908 let member_inline_size =
21909 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21910 if inlined != (member_inline_size <= 4) {
21911 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21912 }
21913 let inner_offset;
21914 let mut inner_depth = depth.clone();
21915 if inlined {
21916 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21917 inner_offset = next_offset;
21918 } else {
21919 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21920 inner_depth.increment()?;
21921 }
21922 let val_ref = self.link_quality_out.get_or_insert_with(|| fidl::new_empty!(u8, D));
21923 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
21924 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21925 {
21926 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21927 }
21928 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21929 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21930 }
21931 }
21932
21933 next_offset += envelope_size;
21934 _next_ordinal_to_read += 1;
21935 if next_offset >= end_offset {
21936 return Ok(());
21937 }
21938
21939 while _next_ordinal_to_read < 8 {
21941 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21942 _next_ordinal_to_read += 1;
21943 next_offset += envelope_size;
21944 }
21945
21946 let next_out_of_line = decoder.next_out_of_line();
21947 let handles_before = decoder.remaining_handles();
21948 if let Some((inlined, num_bytes, num_handles)) =
21949 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21950 {
21951 let member_inline_size =
21952 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21953 if inlined != (member_inline_size <= 4) {
21954 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21955 }
21956 let inner_offset;
21957 let mut inner_depth = depth.clone();
21958 if inlined {
21959 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
21960 inner_offset = next_offset;
21961 } else {
21962 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
21963 inner_depth.increment()?;
21964 }
21965 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
21966 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
21967 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
21968 {
21969 return Err(fidl::Error::InvalidNumBytesInEnvelope);
21970 }
21971 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
21972 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
21973 }
21974 }
21975
21976 next_offset += envelope_size;
21977 _next_ordinal_to_read += 1;
21978 if next_offset >= end_offset {
21979 return Ok(());
21980 }
21981
21982 while _next_ordinal_to_read < 9 {
21984 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
21985 _next_ordinal_to_read += 1;
21986 next_offset += envelope_size;
21987 }
21988
21989 let next_out_of_line = decoder.next_out_of_line();
21990 let handles_before = decoder.remaining_handles();
21991 if let Some((inlined, num_bytes, num_handles)) =
21992 fidl::encoding::decode_envelope_header(decoder, next_offset)?
21993 {
21994 let member_inline_size =
21995 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
21996 if inlined != (member_inline_size <= 4) {
21997 return Err(fidl::Error::InvalidInlineBitInEnvelope);
21998 }
21999 let inner_offset;
22000 let mut inner_depth = depth.clone();
22001 if inlined {
22002 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22003 inner_offset = next_offset;
22004 } else {
22005 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22006 inner_depth.increment()?;
22007 }
22008 let val_ref =
22009 self.link_established.get_or_insert_with(|| fidl::new_empty!(bool, D));
22010 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
22011 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22012 {
22013 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22014 }
22015 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22016 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22017 }
22018 }
22019
22020 next_offset += envelope_size;
22021
22022 while next_offset < end_offset {
22024 _next_ordinal_to_read += 1;
22025 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22026 next_offset += envelope_size;
22027 }
22028
22029 Ok(())
22030 }
22031 }
22032
22033 impl SecurityPolicy {
22034 #[inline(always)]
22035 fn max_ordinal_present(&self) -> u64 {
22036 if let Some(_) = self.version_threshold_for_routing {
22037 return 10;
22038 }
22039 if let Some(_) = self.nonccm_routers_enabled {
22040 return 9;
22041 }
22042 if let Some(_) = self.toble_link_enabled {
22043 return 8;
22044 }
22045 if let Some(_) = self.network_key_provisioning_enabled {
22046 return 7;
22047 }
22048 if let Some(_) = self.autonomous_enrollment_enabled {
22049 return 6;
22050 }
22051 if let Some(_) = self.external_commissioning_enabled {
22052 return 5;
22053 }
22054 if let Some(_) = self.routers_enabled {
22055 return 4;
22056 }
22057 if let Some(_) = self.native_commissioning_enabled {
22058 return 3;
22059 }
22060 if let Some(_) = self.obtain_network_key_enabled {
22061 return 2;
22062 }
22063 if let Some(_) = self.rotation_time {
22064 return 1;
22065 }
22066 0
22067 }
22068 }
22069
22070 impl fidl::encoding::ValueTypeMarker for SecurityPolicy {
22071 type Borrowed<'a> = &'a Self;
22072 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
22073 value
22074 }
22075 }
22076
22077 unsafe impl fidl::encoding::TypeMarker for SecurityPolicy {
22078 type Owned = Self;
22079
22080 #[inline(always)]
22081 fn inline_align(_context: fidl::encoding::Context) -> usize {
22082 8
22083 }
22084
22085 #[inline(always)]
22086 fn inline_size(_context: fidl::encoding::Context) -> usize {
22087 16
22088 }
22089 }
22090
22091 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SecurityPolicy, D>
22092 for &SecurityPolicy
22093 {
22094 unsafe fn encode(
22095 self,
22096 encoder: &mut fidl::encoding::Encoder<'_, D>,
22097 offset: usize,
22098 mut depth: fidl::encoding::Depth,
22099 ) -> fidl::Result<()> {
22100 encoder.debug_check_bounds::<SecurityPolicy>(offset);
22101 let max_ordinal: u64 = self.max_ordinal_present();
22103 encoder.write_num(max_ordinal, offset);
22104 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
22105 if max_ordinal == 0 {
22107 return Ok(());
22108 }
22109 depth.increment()?;
22110 let envelope_size = 8;
22111 let bytes_len = max_ordinal as usize * envelope_size;
22112 #[allow(unused_variables)]
22113 let offset = encoder.out_of_line_offset(bytes_len);
22114 let mut _prev_end_offset: usize = 0;
22115 if 1 > max_ordinal {
22116 return Ok(());
22117 }
22118
22119 let cur_offset: usize = (1 - 1) * envelope_size;
22122
22123 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22125
22126 fidl::encoding::encode_in_envelope_optional::<u16, D>(
22131 self.rotation_time.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
22132 encoder,
22133 offset + cur_offset,
22134 depth,
22135 )?;
22136
22137 _prev_end_offset = cur_offset + envelope_size;
22138 if 2 > max_ordinal {
22139 return Ok(());
22140 }
22141
22142 let cur_offset: usize = (2 - 1) * envelope_size;
22145
22146 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22148
22149 fidl::encoding::encode_in_envelope_optional::<bool, D>(
22154 self.obtain_network_key_enabled
22155 .as_ref()
22156 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
22157 encoder,
22158 offset + cur_offset,
22159 depth,
22160 )?;
22161
22162 _prev_end_offset = cur_offset + envelope_size;
22163 if 3 > max_ordinal {
22164 return Ok(());
22165 }
22166
22167 let cur_offset: usize = (3 - 1) * envelope_size;
22170
22171 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22173
22174 fidl::encoding::encode_in_envelope_optional::<bool, D>(
22179 self.native_commissioning_enabled
22180 .as_ref()
22181 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
22182 encoder,
22183 offset + cur_offset,
22184 depth,
22185 )?;
22186
22187 _prev_end_offset = cur_offset + envelope_size;
22188 if 4 > max_ordinal {
22189 return Ok(());
22190 }
22191
22192 let cur_offset: usize = (4 - 1) * envelope_size;
22195
22196 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22198
22199 fidl::encoding::encode_in_envelope_optional::<bool, D>(
22204 self.routers_enabled
22205 .as_ref()
22206 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
22207 encoder,
22208 offset + cur_offset,
22209 depth,
22210 )?;
22211
22212 _prev_end_offset = cur_offset + envelope_size;
22213 if 5 > max_ordinal {
22214 return Ok(());
22215 }
22216
22217 let cur_offset: usize = (5 - 1) * envelope_size;
22220
22221 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22223
22224 fidl::encoding::encode_in_envelope_optional::<bool, D>(
22229 self.external_commissioning_enabled
22230 .as_ref()
22231 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
22232 encoder,
22233 offset + cur_offset,
22234 depth,
22235 )?;
22236
22237 _prev_end_offset = cur_offset + envelope_size;
22238 if 6 > max_ordinal {
22239 return Ok(());
22240 }
22241
22242 let cur_offset: usize = (6 - 1) * envelope_size;
22245
22246 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22248
22249 fidl::encoding::encode_in_envelope_optional::<bool, D>(
22254 self.autonomous_enrollment_enabled
22255 .as_ref()
22256 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
22257 encoder,
22258 offset + cur_offset,
22259 depth,
22260 )?;
22261
22262 _prev_end_offset = cur_offset + envelope_size;
22263 if 7 > max_ordinal {
22264 return Ok(());
22265 }
22266
22267 let cur_offset: usize = (7 - 1) * envelope_size;
22270
22271 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22273
22274 fidl::encoding::encode_in_envelope_optional::<bool, D>(
22279 self.network_key_provisioning_enabled
22280 .as_ref()
22281 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
22282 encoder,
22283 offset + cur_offset,
22284 depth,
22285 )?;
22286
22287 _prev_end_offset = cur_offset + envelope_size;
22288 if 8 > max_ordinal {
22289 return Ok(());
22290 }
22291
22292 let cur_offset: usize = (8 - 1) * envelope_size;
22295
22296 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22298
22299 fidl::encoding::encode_in_envelope_optional::<bool, D>(
22304 self.toble_link_enabled
22305 .as_ref()
22306 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
22307 encoder,
22308 offset + cur_offset,
22309 depth,
22310 )?;
22311
22312 _prev_end_offset = cur_offset + envelope_size;
22313 if 9 > max_ordinal {
22314 return Ok(());
22315 }
22316
22317 let cur_offset: usize = (9 - 1) * envelope_size;
22320
22321 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22323
22324 fidl::encoding::encode_in_envelope_optional::<bool, D>(
22329 self.nonccm_routers_enabled
22330 .as_ref()
22331 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
22332 encoder,
22333 offset + cur_offset,
22334 depth,
22335 )?;
22336
22337 _prev_end_offset = cur_offset + envelope_size;
22338 if 10 > max_ordinal {
22339 return Ok(());
22340 }
22341
22342 let cur_offset: usize = (10 - 1) * envelope_size;
22345
22346 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22348
22349 fidl::encoding::encode_in_envelope_optional::<u8, D>(
22354 self.version_threshold_for_routing
22355 .as_ref()
22356 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
22357 encoder,
22358 offset + cur_offset,
22359 depth,
22360 )?;
22361
22362 _prev_end_offset = cur_offset + envelope_size;
22363
22364 Ok(())
22365 }
22366 }
22367
22368 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SecurityPolicy {
22369 #[inline(always)]
22370 fn new_empty() -> Self {
22371 Self::default()
22372 }
22373
22374 unsafe fn decode(
22375 &mut self,
22376 decoder: &mut fidl::encoding::Decoder<'_, D>,
22377 offset: usize,
22378 mut depth: fidl::encoding::Depth,
22379 ) -> fidl::Result<()> {
22380 decoder.debug_check_bounds::<Self>(offset);
22381 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
22382 None => return Err(fidl::Error::NotNullable),
22383 Some(len) => len,
22384 };
22385 if len == 0 {
22387 return Ok(());
22388 };
22389 depth.increment()?;
22390 let envelope_size = 8;
22391 let bytes_len = len * envelope_size;
22392 let offset = decoder.out_of_line_offset(bytes_len)?;
22393 let mut _next_ordinal_to_read = 0;
22395 let mut next_offset = offset;
22396 let end_offset = offset + bytes_len;
22397 _next_ordinal_to_read += 1;
22398 if next_offset >= end_offset {
22399 return Ok(());
22400 }
22401
22402 while _next_ordinal_to_read < 1 {
22404 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22405 _next_ordinal_to_read += 1;
22406 next_offset += envelope_size;
22407 }
22408
22409 let next_out_of_line = decoder.next_out_of_line();
22410 let handles_before = decoder.remaining_handles();
22411 if let Some((inlined, num_bytes, num_handles)) =
22412 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22413 {
22414 let member_inline_size =
22415 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22416 if inlined != (member_inline_size <= 4) {
22417 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22418 }
22419 let inner_offset;
22420 let mut inner_depth = depth.clone();
22421 if inlined {
22422 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22423 inner_offset = next_offset;
22424 } else {
22425 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22426 inner_depth.increment()?;
22427 }
22428 let val_ref = self.rotation_time.get_or_insert_with(|| fidl::new_empty!(u16, D));
22429 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
22430 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22431 {
22432 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22433 }
22434 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22435 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22436 }
22437 }
22438
22439 next_offset += envelope_size;
22440 _next_ordinal_to_read += 1;
22441 if next_offset >= end_offset {
22442 return Ok(());
22443 }
22444
22445 while _next_ordinal_to_read < 2 {
22447 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22448 _next_ordinal_to_read += 1;
22449 next_offset += envelope_size;
22450 }
22451
22452 let next_out_of_line = decoder.next_out_of_line();
22453 let handles_before = decoder.remaining_handles();
22454 if let Some((inlined, num_bytes, num_handles)) =
22455 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22456 {
22457 let member_inline_size =
22458 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22459 if inlined != (member_inline_size <= 4) {
22460 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22461 }
22462 let inner_offset;
22463 let mut inner_depth = depth.clone();
22464 if inlined {
22465 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22466 inner_offset = next_offset;
22467 } else {
22468 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22469 inner_depth.increment()?;
22470 }
22471 let val_ref = self
22472 .obtain_network_key_enabled
22473 .get_or_insert_with(|| fidl::new_empty!(bool, D));
22474 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
22475 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22476 {
22477 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22478 }
22479 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22480 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22481 }
22482 }
22483
22484 next_offset += envelope_size;
22485 _next_ordinal_to_read += 1;
22486 if next_offset >= end_offset {
22487 return Ok(());
22488 }
22489
22490 while _next_ordinal_to_read < 3 {
22492 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22493 _next_ordinal_to_read += 1;
22494 next_offset += envelope_size;
22495 }
22496
22497 let next_out_of_line = decoder.next_out_of_line();
22498 let handles_before = decoder.remaining_handles();
22499 if let Some((inlined, num_bytes, num_handles)) =
22500 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22501 {
22502 let member_inline_size =
22503 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22504 if inlined != (member_inline_size <= 4) {
22505 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22506 }
22507 let inner_offset;
22508 let mut inner_depth = depth.clone();
22509 if inlined {
22510 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22511 inner_offset = next_offset;
22512 } else {
22513 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22514 inner_depth.increment()?;
22515 }
22516 let val_ref = self
22517 .native_commissioning_enabled
22518 .get_or_insert_with(|| fidl::new_empty!(bool, D));
22519 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
22520 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22521 {
22522 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22523 }
22524 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22525 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22526 }
22527 }
22528
22529 next_offset += envelope_size;
22530 _next_ordinal_to_read += 1;
22531 if next_offset >= end_offset {
22532 return Ok(());
22533 }
22534
22535 while _next_ordinal_to_read < 4 {
22537 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22538 _next_ordinal_to_read += 1;
22539 next_offset += envelope_size;
22540 }
22541
22542 let next_out_of_line = decoder.next_out_of_line();
22543 let handles_before = decoder.remaining_handles();
22544 if let Some((inlined, num_bytes, num_handles)) =
22545 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22546 {
22547 let member_inline_size =
22548 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22549 if inlined != (member_inline_size <= 4) {
22550 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22551 }
22552 let inner_offset;
22553 let mut inner_depth = depth.clone();
22554 if inlined {
22555 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22556 inner_offset = next_offset;
22557 } else {
22558 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22559 inner_depth.increment()?;
22560 }
22561 let val_ref = self.routers_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
22562 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
22563 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22564 {
22565 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22566 }
22567 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22568 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22569 }
22570 }
22571
22572 next_offset += envelope_size;
22573 _next_ordinal_to_read += 1;
22574 if next_offset >= end_offset {
22575 return Ok(());
22576 }
22577
22578 while _next_ordinal_to_read < 5 {
22580 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22581 _next_ordinal_to_read += 1;
22582 next_offset += envelope_size;
22583 }
22584
22585 let next_out_of_line = decoder.next_out_of_line();
22586 let handles_before = decoder.remaining_handles();
22587 if let Some((inlined, num_bytes, num_handles)) =
22588 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22589 {
22590 let member_inline_size =
22591 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22592 if inlined != (member_inline_size <= 4) {
22593 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22594 }
22595 let inner_offset;
22596 let mut inner_depth = depth.clone();
22597 if inlined {
22598 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22599 inner_offset = next_offset;
22600 } else {
22601 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22602 inner_depth.increment()?;
22603 }
22604 let val_ref = self
22605 .external_commissioning_enabled
22606 .get_or_insert_with(|| fidl::new_empty!(bool, D));
22607 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
22608 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22609 {
22610 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22611 }
22612 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22613 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22614 }
22615 }
22616
22617 next_offset += envelope_size;
22618 _next_ordinal_to_read += 1;
22619 if next_offset >= end_offset {
22620 return Ok(());
22621 }
22622
22623 while _next_ordinal_to_read < 6 {
22625 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22626 _next_ordinal_to_read += 1;
22627 next_offset += envelope_size;
22628 }
22629
22630 let next_out_of_line = decoder.next_out_of_line();
22631 let handles_before = decoder.remaining_handles();
22632 if let Some((inlined, num_bytes, num_handles)) =
22633 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22634 {
22635 let member_inline_size =
22636 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22637 if inlined != (member_inline_size <= 4) {
22638 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22639 }
22640 let inner_offset;
22641 let mut inner_depth = depth.clone();
22642 if inlined {
22643 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22644 inner_offset = next_offset;
22645 } else {
22646 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22647 inner_depth.increment()?;
22648 }
22649 let val_ref = self
22650 .autonomous_enrollment_enabled
22651 .get_or_insert_with(|| fidl::new_empty!(bool, D));
22652 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
22653 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22654 {
22655 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22656 }
22657 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22658 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22659 }
22660 }
22661
22662 next_offset += envelope_size;
22663 _next_ordinal_to_read += 1;
22664 if next_offset >= end_offset {
22665 return Ok(());
22666 }
22667
22668 while _next_ordinal_to_read < 7 {
22670 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22671 _next_ordinal_to_read += 1;
22672 next_offset += envelope_size;
22673 }
22674
22675 let next_out_of_line = decoder.next_out_of_line();
22676 let handles_before = decoder.remaining_handles();
22677 if let Some((inlined, num_bytes, num_handles)) =
22678 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22679 {
22680 let member_inline_size =
22681 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22682 if inlined != (member_inline_size <= 4) {
22683 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22684 }
22685 let inner_offset;
22686 let mut inner_depth = depth.clone();
22687 if inlined {
22688 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22689 inner_offset = next_offset;
22690 } else {
22691 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22692 inner_depth.increment()?;
22693 }
22694 let val_ref = self
22695 .network_key_provisioning_enabled
22696 .get_or_insert_with(|| fidl::new_empty!(bool, D));
22697 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
22698 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22699 {
22700 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22701 }
22702 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22703 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22704 }
22705 }
22706
22707 next_offset += envelope_size;
22708 _next_ordinal_to_read += 1;
22709 if next_offset >= end_offset {
22710 return Ok(());
22711 }
22712
22713 while _next_ordinal_to_read < 8 {
22715 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22716 _next_ordinal_to_read += 1;
22717 next_offset += envelope_size;
22718 }
22719
22720 let next_out_of_line = decoder.next_out_of_line();
22721 let handles_before = decoder.remaining_handles();
22722 if let Some((inlined, num_bytes, num_handles)) =
22723 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22724 {
22725 let member_inline_size =
22726 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22727 if inlined != (member_inline_size <= 4) {
22728 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22729 }
22730 let inner_offset;
22731 let mut inner_depth = depth.clone();
22732 if inlined {
22733 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22734 inner_offset = next_offset;
22735 } else {
22736 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22737 inner_depth.increment()?;
22738 }
22739 let val_ref =
22740 self.toble_link_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
22741 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
22742 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22743 {
22744 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22745 }
22746 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22747 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22748 }
22749 }
22750
22751 next_offset += envelope_size;
22752 _next_ordinal_to_read += 1;
22753 if next_offset >= end_offset {
22754 return Ok(());
22755 }
22756
22757 while _next_ordinal_to_read < 9 {
22759 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22760 _next_ordinal_to_read += 1;
22761 next_offset += envelope_size;
22762 }
22763
22764 let next_out_of_line = decoder.next_out_of_line();
22765 let handles_before = decoder.remaining_handles();
22766 if let Some((inlined, num_bytes, num_handles)) =
22767 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22768 {
22769 let member_inline_size =
22770 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22771 if inlined != (member_inline_size <= 4) {
22772 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22773 }
22774 let inner_offset;
22775 let mut inner_depth = depth.clone();
22776 if inlined {
22777 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22778 inner_offset = next_offset;
22779 } else {
22780 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22781 inner_depth.increment()?;
22782 }
22783 let val_ref =
22784 self.nonccm_routers_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
22785 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
22786 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22787 {
22788 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22789 }
22790 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22791 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22792 }
22793 }
22794
22795 next_offset += envelope_size;
22796 _next_ordinal_to_read += 1;
22797 if next_offset >= end_offset {
22798 return Ok(());
22799 }
22800
22801 while _next_ordinal_to_read < 10 {
22803 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22804 _next_ordinal_to_read += 1;
22805 next_offset += envelope_size;
22806 }
22807
22808 let next_out_of_line = decoder.next_out_of_line();
22809 let handles_before = decoder.remaining_handles();
22810 if let Some((inlined, num_bytes, num_handles)) =
22811 fidl::encoding::decode_envelope_header(decoder, next_offset)?
22812 {
22813 let member_inline_size =
22814 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
22815 if inlined != (member_inline_size <= 4) {
22816 return Err(fidl::Error::InvalidInlineBitInEnvelope);
22817 }
22818 let inner_offset;
22819 let mut inner_depth = depth.clone();
22820 if inlined {
22821 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
22822 inner_offset = next_offset;
22823 } else {
22824 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
22825 inner_depth.increment()?;
22826 }
22827 let val_ref = self
22828 .version_threshold_for_routing
22829 .get_or_insert_with(|| fidl::new_empty!(u8, D));
22830 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
22831 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
22832 {
22833 return Err(fidl::Error::InvalidNumBytesInEnvelope);
22834 }
22835 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
22836 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
22837 }
22838 }
22839
22840 next_offset += envelope_size;
22841
22842 while next_offset < end_offset {
22844 _next_ordinal_to_read += 1;
22845 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
22846 next_offset += envelope_size;
22847 }
22848
22849 Ok(())
22850 }
22851 }
22852
22853 impl ServerConfig {
22854 #[inline(always)]
22855 fn max_ordinal_present(&self) -> u64 {
22856 if let Some(_) = self.rloc16 {
22857 return 4;
22858 }
22859 if let Some(_) = self.server_data {
22860 return 3;
22861 }
22862 if let Some(_) = self.server_data_length {
22863 return 2;
22864 }
22865 if let Some(_) = self.stable {
22866 return 1;
22867 }
22868 0
22869 }
22870 }
22871
22872 impl fidl::encoding::ValueTypeMarker for ServerConfig {
22873 type Borrowed<'a> = &'a Self;
22874 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
22875 value
22876 }
22877 }
22878
22879 unsafe impl fidl::encoding::TypeMarker for ServerConfig {
22880 type Owned = Self;
22881
22882 #[inline(always)]
22883 fn inline_align(_context: fidl::encoding::Context) -> usize {
22884 8
22885 }
22886
22887 #[inline(always)]
22888 fn inline_size(_context: fidl::encoding::Context) -> usize {
22889 16
22890 }
22891 }
22892
22893 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ServerConfig, D>
22894 for &ServerConfig
22895 {
22896 unsafe fn encode(
22897 self,
22898 encoder: &mut fidl::encoding::Encoder<'_, D>,
22899 offset: usize,
22900 mut depth: fidl::encoding::Depth,
22901 ) -> fidl::Result<()> {
22902 encoder.debug_check_bounds::<ServerConfig>(offset);
22903 let max_ordinal: u64 = self.max_ordinal_present();
22905 encoder.write_num(max_ordinal, offset);
22906 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
22907 if max_ordinal == 0 {
22909 return Ok(());
22910 }
22911 depth.increment()?;
22912 let envelope_size = 8;
22913 let bytes_len = max_ordinal as usize * envelope_size;
22914 #[allow(unused_variables)]
22915 let offset = encoder.out_of_line_offset(bytes_len);
22916 let mut _prev_end_offset: usize = 0;
22917 if 1 > max_ordinal {
22918 return Ok(());
22919 }
22920
22921 let cur_offset: usize = (1 - 1) * envelope_size;
22924
22925 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22927
22928 fidl::encoding::encode_in_envelope_optional::<bool, D>(
22933 self.stable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
22934 encoder,
22935 offset + cur_offset,
22936 depth,
22937 )?;
22938
22939 _prev_end_offset = cur_offset + envelope_size;
22940 if 2 > max_ordinal {
22941 return Ok(());
22942 }
22943
22944 let cur_offset: usize = (2 - 1) * envelope_size;
22947
22948 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22950
22951 fidl::encoding::encode_in_envelope_optional::<u8, D>(
22956 self.server_data_length
22957 .as_ref()
22958 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
22959 encoder,
22960 offset + cur_offset,
22961 depth,
22962 )?;
22963
22964 _prev_end_offset = cur_offset + envelope_size;
22965 if 3 > max_ordinal {
22966 return Ok(());
22967 }
22968
22969 let cur_offset: usize = (3 - 1) * envelope_size;
22972
22973 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
22975
22976 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 252>, D>(
22981 self.server_data.as_ref().map(
22982 <fidl::encoding::Vector<u8, 252> as fidl::encoding::ValueTypeMarker>::borrow,
22983 ),
22984 encoder,
22985 offset + cur_offset,
22986 depth,
22987 )?;
22988
22989 _prev_end_offset = cur_offset + envelope_size;
22990 if 4 > max_ordinal {
22991 return Ok(());
22992 }
22993
22994 let cur_offset: usize = (4 - 1) * envelope_size;
22997
22998 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23000
23001 fidl::encoding::encode_in_envelope_optional::<u16, D>(
23006 self.rloc16.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
23007 encoder,
23008 offset + cur_offset,
23009 depth,
23010 )?;
23011
23012 _prev_end_offset = cur_offset + envelope_size;
23013
23014 Ok(())
23015 }
23016 }
23017
23018 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ServerConfig {
23019 #[inline(always)]
23020 fn new_empty() -> Self {
23021 Self::default()
23022 }
23023
23024 unsafe fn decode(
23025 &mut self,
23026 decoder: &mut fidl::encoding::Decoder<'_, D>,
23027 offset: usize,
23028 mut depth: fidl::encoding::Depth,
23029 ) -> fidl::Result<()> {
23030 decoder.debug_check_bounds::<Self>(offset);
23031 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
23032 None => return Err(fidl::Error::NotNullable),
23033 Some(len) => len,
23034 };
23035 if len == 0 {
23037 return Ok(());
23038 };
23039 depth.increment()?;
23040 let envelope_size = 8;
23041 let bytes_len = len * envelope_size;
23042 let offset = decoder.out_of_line_offset(bytes_len)?;
23043 let mut _next_ordinal_to_read = 0;
23045 let mut next_offset = offset;
23046 let end_offset = offset + bytes_len;
23047 _next_ordinal_to_read += 1;
23048 if next_offset >= end_offset {
23049 return Ok(());
23050 }
23051
23052 while _next_ordinal_to_read < 1 {
23054 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23055 _next_ordinal_to_read += 1;
23056 next_offset += envelope_size;
23057 }
23058
23059 let next_out_of_line = decoder.next_out_of_line();
23060 let handles_before = decoder.remaining_handles();
23061 if let Some((inlined, num_bytes, num_handles)) =
23062 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23063 {
23064 let member_inline_size =
23065 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23066 if inlined != (member_inline_size <= 4) {
23067 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23068 }
23069 let inner_offset;
23070 let mut inner_depth = depth.clone();
23071 if inlined {
23072 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23073 inner_offset = next_offset;
23074 } else {
23075 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23076 inner_depth.increment()?;
23077 }
23078 let val_ref = self.stable.get_or_insert_with(|| fidl::new_empty!(bool, D));
23079 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
23080 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23081 {
23082 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23083 }
23084 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23085 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23086 }
23087 }
23088
23089 next_offset += envelope_size;
23090 _next_ordinal_to_read += 1;
23091 if next_offset >= end_offset {
23092 return Ok(());
23093 }
23094
23095 while _next_ordinal_to_read < 2 {
23097 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23098 _next_ordinal_to_read += 1;
23099 next_offset += envelope_size;
23100 }
23101
23102 let next_out_of_line = decoder.next_out_of_line();
23103 let handles_before = decoder.remaining_handles();
23104 if let Some((inlined, num_bytes, num_handles)) =
23105 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23106 {
23107 let member_inline_size =
23108 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23109 if inlined != (member_inline_size <= 4) {
23110 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23111 }
23112 let inner_offset;
23113 let mut inner_depth = depth.clone();
23114 if inlined {
23115 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23116 inner_offset = next_offset;
23117 } else {
23118 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23119 inner_depth.increment()?;
23120 }
23121 let val_ref =
23122 self.server_data_length.get_or_insert_with(|| fidl::new_empty!(u8, D));
23123 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
23124 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23125 {
23126 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23127 }
23128 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23129 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23130 }
23131 }
23132
23133 next_offset += envelope_size;
23134 _next_ordinal_to_read += 1;
23135 if next_offset >= end_offset {
23136 return Ok(());
23137 }
23138
23139 while _next_ordinal_to_read < 3 {
23141 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23142 _next_ordinal_to_read += 1;
23143 next_offset += envelope_size;
23144 }
23145
23146 let next_out_of_line = decoder.next_out_of_line();
23147 let handles_before = decoder.remaining_handles();
23148 if let Some((inlined, num_bytes, num_handles)) =
23149 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23150 {
23151 let member_inline_size =
23152 <fidl::encoding::Vector<u8, 252> as fidl::encoding::TypeMarker>::inline_size(
23153 decoder.context,
23154 );
23155 if inlined != (member_inline_size <= 4) {
23156 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23157 }
23158 let inner_offset;
23159 let mut inner_depth = depth.clone();
23160 if inlined {
23161 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23162 inner_offset = next_offset;
23163 } else {
23164 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23165 inner_depth.increment()?;
23166 }
23167 let val_ref = self
23168 .server_data
23169 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 252>, D));
23170 fidl::decode!(fidl::encoding::Vector<u8, 252>, D, val_ref, decoder, inner_offset, inner_depth)?;
23171 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23172 {
23173 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23174 }
23175 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23176 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23177 }
23178 }
23179
23180 next_offset += envelope_size;
23181 _next_ordinal_to_read += 1;
23182 if next_offset >= end_offset {
23183 return Ok(());
23184 }
23185
23186 while _next_ordinal_to_read < 4 {
23188 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23189 _next_ordinal_to_read += 1;
23190 next_offset += envelope_size;
23191 }
23192
23193 let next_out_of_line = decoder.next_out_of_line();
23194 let handles_before = decoder.remaining_handles();
23195 if let Some((inlined, num_bytes, num_handles)) =
23196 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23197 {
23198 let member_inline_size =
23199 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23200 if inlined != (member_inline_size <= 4) {
23201 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23202 }
23203 let inner_offset;
23204 let mut inner_depth = depth.clone();
23205 if inlined {
23206 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23207 inner_offset = next_offset;
23208 } else {
23209 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23210 inner_depth.increment()?;
23211 }
23212 let val_ref = self.rloc16.get_or_insert_with(|| fidl::new_empty!(u16, D));
23213 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
23214 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23215 {
23216 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23217 }
23218 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23219 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23220 }
23221 }
23222
23223 next_offset += envelope_size;
23224
23225 while next_offset < end_offset {
23227 _next_ordinal_to_read += 1;
23228 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23229 next_offset += envelope_size;
23230 }
23231
23232 Ok(())
23233 }
23234 }
23235
23236 impl ServiceConfig {
23237 #[inline(always)]
23238 fn max_ordinal_present(&self) -> u64 {
23239 if let Some(_) = self.server_config {
23240 return 5;
23241 }
23242 if let Some(_) = self.service_data {
23243 return 4;
23244 }
23245 if let Some(_) = self.service_data_length {
23246 return 3;
23247 }
23248 if let Some(_) = self.enterprise_number {
23249 return 2;
23250 }
23251 if let Some(_) = self.service_id {
23252 return 1;
23253 }
23254 0
23255 }
23256 }
23257
23258 impl fidl::encoding::ValueTypeMarker for ServiceConfig {
23259 type Borrowed<'a> = &'a Self;
23260 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
23261 value
23262 }
23263 }
23264
23265 unsafe impl fidl::encoding::TypeMarker for ServiceConfig {
23266 type Owned = Self;
23267
23268 #[inline(always)]
23269 fn inline_align(_context: fidl::encoding::Context) -> usize {
23270 8
23271 }
23272
23273 #[inline(always)]
23274 fn inline_size(_context: fidl::encoding::Context) -> usize {
23275 16
23276 }
23277 }
23278
23279 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ServiceConfig, D>
23280 for &ServiceConfig
23281 {
23282 unsafe fn encode(
23283 self,
23284 encoder: &mut fidl::encoding::Encoder<'_, D>,
23285 offset: usize,
23286 mut depth: fidl::encoding::Depth,
23287 ) -> fidl::Result<()> {
23288 encoder.debug_check_bounds::<ServiceConfig>(offset);
23289 let max_ordinal: u64 = self.max_ordinal_present();
23291 encoder.write_num(max_ordinal, offset);
23292 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
23293 if max_ordinal == 0 {
23295 return Ok(());
23296 }
23297 depth.increment()?;
23298 let envelope_size = 8;
23299 let bytes_len = max_ordinal as usize * envelope_size;
23300 #[allow(unused_variables)]
23301 let offset = encoder.out_of_line_offset(bytes_len);
23302 let mut _prev_end_offset: usize = 0;
23303 if 1 > max_ordinal {
23304 return Ok(());
23305 }
23306
23307 let cur_offset: usize = (1 - 1) * envelope_size;
23310
23311 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23313
23314 fidl::encoding::encode_in_envelope_optional::<u8, D>(
23319 self.service_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
23320 encoder,
23321 offset + cur_offset,
23322 depth,
23323 )?;
23324
23325 _prev_end_offset = cur_offset + envelope_size;
23326 if 2 > max_ordinal {
23327 return Ok(());
23328 }
23329
23330 let cur_offset: usize = (2 - 1) * envelope_size;
23333
23334 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23336
23337 fidl::encoding::encode_in_envelope_optional::<u32, D>(
23342 self.enterprise_number
23343 .as_ref()
23344 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
23345 encoder,
23346 offset + cur_offset,
23347 depth,
23348 )?;
23349
23350 _prev_end_offset = cur_offset + envelope_size;
23351 if 3 > max_ordinal {
23352 return Ok(());
23353 }
23354
23355 let cur_offset: usize = (3 - 1) * envelope_size;
23358
23359 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23361
23362 fidl::encoding::encode_in_envelope_optional::<u8, D>(
23367 self.service_data_length
23368 .as_ref()
23369 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
23370 encoder,
23371 offset + cur_offset,
23372 depth,
23373 )?;
23374
23375 _prev_end_offset = cur_offset + envelope_size;
23376 if 4 > max_ordinal {
23377 return Ok(());
23378 }
23379
23380 let cur_offset: usize = (4 - 1) * envelope_size;
23383
23384 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23386
23387 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 252>, D>(
23392 self.service_data.as_ref().map(
23393 <fidl::encoding::Vector<u8, 252> as fidl::encoding::ValueTypeMarker>::borrow,
23394 ),
23395 encoder,
23396 offset + cur_offset,
23397 depth,
23398 )?;
23399
23400 _prev_end_offset = cur_offset + envelope_size;
23401 if 5 > max_ordinal {
23402 return Ok(());
23403 }
23404
23405 let cur_offset: usize = (5 - 1) * envelope_size;
23408
23409 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23411
23412 fidl::encoding::encode_in_envelope_optional::<ServerConfig, D>(
23417 self.server_config
23418 .as_ref()
23419 .map(<ServerConfig as fidl::encoding::ValueTypeMarker>::borrow),
23420 encoder,
23421 offset + cur_offset,
23422 depth,
23423 )?;
23424
23425 _prev_end_offset = cur_offset + envelope_size;
23426
23427 Ok(())
23428 }
23429 }
23430
23431 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ServiceConfig {
23432 #[inline(always)]
23433 fn new_empty() -> Self {
23434 Self::default()
23435 }
23436
23437 unsafe fn decode(
23438 &mut self,
23439 decoder: &mut fidl::encoding::Decoder<'_, D>,
23440 offset: usize,
23441 mut depth: fidl::encoding::Depth,
23442 ) -> fidl::Result<()> {
23443 decoder.debug_check_bounds::<Self>(offset);
23444 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
23445 None => return Err(fidl::Error::NotNullable),
23446 Some(len) => len,
23447 };
23448 if len == 0 {
23450 return Ok(());
23451 };
23452 depth.increment()?;
23453 let envelope_size = 8;
23454 let bytes_len = len * envelope_size;
23455 let offset = decoder.out_of_line_offset(bytes_len)?;
23456 let mut _next_ordinal_to_read = 0;
23458 let mut next_offset = offset;
23459 let end_offset = offset + bytes_len;
23460 _next_ordinal_to_read += 1;
23461 if next_offset >= end_offset {
23462 return Ok(());
23463 }
23464
23465 while _next_ordinal_to_read < 1 {
23467 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23468 _next_ordinal_to_read += 1;
23469 next_offset += envelope_size;
23470 }
23471
23472 let next_out_of_line = decoder.next_out_of_line();
23473 let handles_before = decoder.remaining_handles();
23474 if let Some((inlined, num_bytes, num_handles)) =
23475 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23476 {
23477 let member_inline_size =
23478 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23479 if inlined != (member_inline_size <= 4) {
23480 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23481 }
23482 let inner_offset;
23483 let mut inner_depth = depth.clone();
23484 if inlined {
23485 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23486 inner_offset = next_offset;
23487 } else {
23488 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23489 inner_depth.increment()?;
23490 }
23491 let val_ref = self.service_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
23492 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
23493 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23494 {
23495 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23496 }
23497 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23498 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23499 }
23500 }
23501
23502 next_offset += envelope_size;
23503 _next_ordinal_to_read += 1;
23504 if next_offset >= end_offset {
23505 return Ok(());
23506 }
23507
23508 while _next_ordinal_to_read < 2 {
23510 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23511 _next_ordinal_to_read += 1;
23512 next_offset += envelope_size;
23513 }
23514
23515 let next_out_of_line = decoder.next_out_of_line();
23516 let handles_before = decoder.remaining_handles();
23517 if let Some((inlined, num_bytes, num_handles)) =
23518 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23519 {
23520 let member_inline_size =
23521 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23522 if inlined != (member_inline_size <= 4) {
23523 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23524 }
23525 let inner_offset;
23526 let mut inner_depth = depth.clone();
23527 if inlined {
23528 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23529 inner_offset = next_offset;
23530 } else {
23531 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23532 inner_depth.increment()?;
23533 }
23534 let val_ref =
23535 self.enterprise_number.get_or_insert_with(|| fidl::new_empty!(u32, D));
23536 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
23537 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23538 {
23539 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23540 }
23541 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23542 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23543 }
23544 }
23545
23546 next_offset += envelope_size;
23547 _next_ordinal_to_read += 1;
23548 if next_offset >= end_offset {
23549 return Ok(());
23550 }
23551
23552 while _next_ordinal_to_read < 3 {
23554 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23555 _next_ordinal_to_read += 1;
23556 next_offset += envelope_size;
23557 }
23558
23559 let next_out_of_line = decoder.next_out_of_line();
23560 let handles_before = decoder.remaining_handles();
23561 if let Some((inlined, num_bytes, num_handles)) =
23562 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23563 {
23564 let member_inline_size =
23565 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23566 if inlined != (member_inline_size <= 4) {
23567 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23568 }
23569 let inner_offset;
23570 let mut inner_depth = depth.clone();
23571 if inlined {
23572 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23573 inner_offset = next_offset;
23574 } else {
23575 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23576 inner_depth.increment()?;
23577 }
23578 let val_ref =
23579 self.service_data_length.get_or_insert_with(|| fidl::new_empty!(u8, D));
23580 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
23581 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23582 {
23583 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23584 }
23585 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23586 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23587 }
23588 }
23589
23590 next_offset += envelope_size;
23591 _next_ordinal_to_read += 1;
23592 if next_offset >= end_offset {
23593 return Ok(());
23594 }
23595
23596 while _next_ordinal_to_read < 4 {
23598 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23599 _next_ordinal_to_read += 1;
23600 next_offset += envelope_size;
23601 }
23602
23603 let next_out_of_line = decoder.next_out_of_line();
23604 let handles_before = decoder.remaining_handles();
23605 if let Some((inlined, num_bytes, num_handles)) =
23606 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23607 {
23608 let member_inline_size =
23609 <fidl::encoding::Vector<u8, 252> as fidl::encoding::TypeMarker>::inline_size(
23610 decoder.context,
23611 );
23612 if inlined != (member_inline_size <= 4) {
23613 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23614 }
23615 let inner_offset;
23616 let mut inner_depth = depth.clone();
23617 if inlined {
23618 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23619 inner_offset = next_offset;
23620 } else {
23621 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23622 inner_depth.increment()?;
23623 }
23624 let val_ref = self
23625 .service_data
23626 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 252>, D));
23627 fidl::decode!(fidl::encoding::Vector<u8, 252>, D, val_ref, decoder, inner_offset, inner_depth)?;
23628 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23629 {
23630 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23631 }
23632 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23633 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23634 }
23635 }
23636
23637 next_offset += envelope_size;
23638 _next_ordinal_to_read += 1;
23639 if next_offset >= end_offset {
23640 return Ok(());
23641 }
23642
23643 while _next_ordinal_to_read < 5 {
23645 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23646 _next_ordinal_to_read += 1;
23647 next_offset += envelope_size;
23648 }
23649
23650 let next_out_of_line = decoder.next_out_of_line();
23651 let handles_before = decoder.remaining_handles();
23652 if let Some((inlined, num_bytes, num_handles)) =
23653 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23654 {
23655 let member_inline_size =
23656 <ServerConfig as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23657 if inlined != (member_inline_size <= 4) {
23658 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23659 }
23660 let inner_offset;
23661 let mut inner_depth = depth.clone();
23662 if inlined {
23663 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23664 inner_offset = next_offset;
23665 } else {
23666 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23667 inner_depth.increment()?;
23668 }
23669 let val_ref =
23670 self.server_config.get_or_insert_with(|| fidl::new_empty!(ServerConfig, D));
23671 fidl::decode!(ServerConfig, D, val_ref, decoder, inner_offset, inner_depth)?;
23672 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23673 {
23674 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23675 }
23676 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23677 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23678 }
23679 }
23680
23681 next_offset += envelope_size;
23682
23683 while next_offset < end_offset {
23685 _next_ordinal_to_read += 1;
23686 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23687 next_offset += envelope_size;
23688 }
23689
23690 Ok(())
23691 }
23692 }
23693
23694 impl SrpServerHost {
23695 #[inline(always)]
23696 fn max_ordinal_present(&self) -> u64 {
23697 if let Some(_) = self.addresses {
23698 return 3;
23699 }
23700 if let Some(_) = self.deleted {
23701 return 2;
23702 }
23703 if let Some(_) = self.name {
23704 return 1;
23705 }
23706 0
23707 }
23708 }
23709
23710 impl fidl::encoding::ValueTypeMarker for SrpServerHost {
23711 type Borrowed<'a> = &'a Self;
23712 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
23713 value
23714 }
23715 }
23716
23717 unsafe impl fidl::encoding::TypeMarker for SrpServerHost {
23718 type Owned = Self;
23719
23720 #[inline(always)]
23721 fn inline_align(_context: fidl::encoding::Context) -> usize {
23722 8
23723 }
23724
23725 #[inline(always)]
23726 fn inline_size(_context: fidl::encoding::Context) -> usize {
23727 16
23728 }
23729 }
23730
23731 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerHost, D>
23732 for &SrpServerHost
23733 {
23734 unsafe fn encode(
23735 self,
23736 encoder: &mut fidl::encoding::Encoder<'_, D>,
23737 offset: usize,
23738 mut depth: fidl::encoding::Depth,
23739 ) -> fidl::Result<()> {
23740 encoder.debug_check_bounds::<SrpServerHost>(offset);
23741 let max_ordinal: u64 = self.max_ordinal_present();
23743 encoder.write_num(max_ordinal, offset);
23744 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
23745 if max_ordinal == 0 {
23747 return Ok(());
23748 }
23749 depth.increment()?;
23750 let envelope_size = 8;
23751 let bytes_len = max_ordinal as usize * envelope_size;
23752 #[allow(unused_variables)]
23753 let offset = encoder.out_of_line_offset(bytes_len);
23754 let mut _prev_end_offset: usize = 0;
23755 if 1 > max_ordinal {
23756 return Ok(());
23757 }
23758
23759 let cur_offset: usize = (1 - 1) * envelope_size;
23762
23763 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23765
23766 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
23771 self.name.as_ref().map(
23772 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
23773 ),
23774 encoder,
23775 offset + cur_offset,
23776 depth,
23777 )?;
23778
23779 _prev_end_offset = cur_offset + envelope_size;
23780 if 2 > max_ordinal {
23781 return Ok(());
23782 }
23783
23784 let cur_offset: usize = (2 - 1) * envelope_size;
23787
23788 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23790
23791 fidl::encoding::encode_in_envelope_optional::<bool, D>(
23796 self.deleted.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
23797 encoder,
23798 offset + cur_offset,
23799 depth,
23800 )?;
23801
23802 _prev_end_offset = cur_offset + envelope_size;
23803 if 3 > max_ordinal {
23804 return Ok(());
23805 }
23806
23807 let cur_offset: usize = (3 - 1) * envelope_size;
23810
23811 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
23813
23814 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv6Address, 16>, D>(
23819 self.addresses.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv6Address, 16> as fidl::encoding::ValueTypeMarker>::borrow),
23820 encoder, offset + cur_offset, depth
23821 )?;
23822
23823 _prev_end_offset = cur_offset + envelope_size;
23824
23825 Ok(())
23826 }
23827 }
23828
23829 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerHost {
23830 #[inline(always)]
23831 fn new_empty() -> Self {
23832 Self::default()
23833 }
23834
23835 unsafe fn decode(
23836 &mut self,
23837 decoder: &mut fidl::encoding::Decoder<'_, D>,
23838 offset: usize,
23839 mut depth: fidl::encoding::Depth,
23840 ) -> fidl::Result<()> {
23841 decoder.debug_check_bounds::<Self>(offset);
23842 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
23843 None => return Err(fidl::Error::NotNullable),
23844 Some(len) => len,
23845 };
23846 if len == 0 {
23848 return Ok(());
23849 };
23850 depth.increment()?;
23851 let envelope_size = 8;
23852 let bytes_len = len * envelope_size;
23853 let offset = decoder.out_of_line_offset(bytes_len)?;
23854 let mut _next_ordinal_to_read = 0;
23856 let mut next_offset = offset;
23857 let end_offset = offset + bytes_len;
23858 _next_ordinal_to_read += 1;
23859 if next_offset >= end_offset {
23860 return Ok(());
23861 }
23862
23863 while _next_ordinal_to_read < 1 {
23865 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23866 _next_ordinal_to_read += 1;
23867 next_offset += envelope_size;
23868 }
23869
23870 let next_out_of_line = decoder.next_out_of_line();
23871 let handles_before = decoder.remaining_handles();
23872 if let Some((inlined, num_bytes, num_handles)) =
23873 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23874 {
23875 let member_inline_size =
23876 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
23877 decoder.context,
23878 );
23879 if inlined != (member_inline_size <= 4) {
23880 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23881 }
23882 let inner_offset;
23883 let mut inner_depth = depth.clone();
23884 if inlined {
23885 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23886 inner_offset = next_offset;
23887 } else {
23888 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23889 inner_depth.increment()?;
23890 }
23891 let val_ref = self
23892 .name
23893 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
23894 fidl::decode!(
23895 fidl::encoding::BoundedString<255>,
23896 D,
23897 val_ref,
23898 decoder,
23899 inner_offset,
23900 inner_depth
23901 )?;
23902 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23903 {
23904 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23905 }
23906 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23907 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23908 }
23909 }
23910
23911 next_offset += envelope_size;
23912 _next_ordinal_to_read += 1;
23913 if next_offset >= end_offset {
23914 return Ok(());
23915 }
23916
23917 while _next_ordinal_to_read < 2 {
23919 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23920 _next_ordinal_to_read += 1;
23921 next_offset += envelope_size;
23922 }
23923
23924 let next_out_of_line = decoder.next_out_of_line();
23925 let handles_before = decoder.remaining_handles();
23926 if let Some((inlined, num_bytes, num_handles)) =
23927 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23928 {
23929 let member_inline_size =
23930 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
23931 if inlined != (member_inline_size <= 4) {
23932 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23933 }
23934 let inner_offset;
23935 let mut inner_depth = depth.clone();
23936 if inlined {
23937 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23938 inner_offset = next_offset;
23939 } else {
23940 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23941 inner_depth.increment()?;
23942 }
23943 let val_ref = self.deleted.get_or_insert_with(|| fidl::new_empty!(bool, D));
23944 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
23945 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23946 {
23947 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23948 }
23949 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23950 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23951 }
23952 }
23953
23954 next_offset += envelope_size;
23955 _next_ordinal_to_read += 1;
23956 if next_offset >= end_offset {
23957 return Ok(());
23958 }
23959
23960 while _next_ordinal_to_read < 3 {
23962 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
23963 _next_ordinal_to_read += 1;
23964 next_offset += envelope_size;
23965 }
23966
23967 let next_out_of_line = decoder.next_out_of_line();
23968 let handles_before = decoder.remaining_handles();
23969 if let Some((inlined, num_bytes, num_handles)) =
23970 fidl::encoding::decode_envelope_header(decoder, next_offset)?
23971 {
23972 let member_inline_size = <fidl::encoding::Vector<
23973 fidl_fuchsia_net_common::Ipv6Address,
23974 16,
23975 > as fidl::encoding::TypeMarker>::inline_size(
23976 decoder.context
23977 );
23978 if inlined != (member_inline_size <= 4) {
23979 return Err(fidl::Error::InvalidInlineBitInEnvelope);
23980 }
23981 let inner_offset;
23982 let mut inner_depth = depth.clone();
23983 if inlined {
23984 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
23985 inner_offset = next_offset;
23986 } else {
23987 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
23988 inner_depth.increment()?;
23989 }
23990 let val_ref =
23991 self.addresses.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv6Address, 16>, D));
23992 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv6Address, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
23993 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
23994 {
23995 return Err(fidl::Error::InvalidNumBytesInEnvelope);
23996 }
23997 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
23998 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
23999 }
24000 }
24001
24002 next_offset += envelope_size;
24003
24004 while next_offset < end_offset {
24006 _next_ordinal_to_read += 1;
24007 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24008 next_offset += envelope_size;
24009 }
24010
24011 Ok(())
24012 }
24013 }
24014
24015 impl SrpServerInfo {
24016 #[inline(always)]
24017 fn max_ordinal_present(&self) -> u64 {
24018 if let Some(_) = self.services {
24019 return 8;
24020 }
24021 if let Some(_) = self.hosts {
24022 return 7;
24023 }
24024 if let Some(_) = self.services_registration {
24025 return 6;
24026 }
24027 if let Some(_) = self.hosts_registration {
24028 return 5;
24029 }
24030 if let Some(_) = self.response_counters {
24031 return 4;
24032 }
24033 if let Some(_) = self.address_mode {
24034 return 3;
24035 }
24036 if let Some(_) = self.port {
24037 return 2;
24038 }
24039 if let Some(_) = self.state {
24040 return 1;
24041 }
24042 0
24043 }
24044 }
24045
24046 impl fidl::encoding::ValueTypeMarker for SrpServerInfo {
24047 type Borrowed<'a> = &'a Self;
24048 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
24049 value
24050 }
24051 }
24052
24053 unsafe impl fidl::encoding::TypeMarker for SrpServerInfo {
24054 type Owned = Self;
24055
24056 #[inline(always)]
24057 fn inline_align(_context: fidl::encoding::Context) -> usize {
24058 8
24059 }
24060
24061 #[inline(always)]
24062 fn inline_size(_context: fidl::encoding::Context) -> usize {
24063 16
24064 }
24065 }
24066
24067 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerInfo, D>
24068 for &SrpServerInfo
24069 {
24070 unsafe fn encode(
24071 self,
24072 encoder: &mut fidl::encoding::Encoder<'_, D>,
24073 offset: usize,
24074 mut depth: fidl::encoding::Depth,
24075 ) -> fidl::Result<()> {
24076 encoder.debug_check_bounds::<SrpServerInfo>(offset);
24077 let max_ordinal: u64 = self.max_ordinal_present();
24079 encoder.write_num(max_ordinal, offset);
24080 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
24081 if max_ordinal == 0 {
24083 return Ok(());
24084 }
24085 depth.increment()?;
24086 let envelope_size = 8;
24087 let bytes_len = max_ordinal as usize * envelope_size;
24088 #[allow(unused_variables)]
24089 let offset = encoder.out_of_line_offset(bytes_len);
24090 let mut _prev_end_offset: usize = 0;
24091 if 1 > max_ordinal {
24092 return Ok(());
24093 }
24094
24095 let cur_offset: usize = (1 - 1) * envelope_size;
24098
24099 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24101
24102 fidl::encoding::encode_in_envelope_optional::<SrpServerState, D>(
24107 self.state
24108 .as_ref()
24109 .map(<SrpServerState as fidl::encoding::ValueTypeMarker>::borrow),
24110 encoder,
24111 offset + cur_offset,
24112 depth,
24113 )?;
24114
24115 _prev_end_offset = cur_offset + envelope_size;
24116 if 2 > max_ordinal {
24117 return Ok(());
24118 }
24119
24120 let cur_offset: usize = (2 - 1) * envelope_size;
24123
24124 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24126
24127 fidl::encoding::encode_in_envelope_optional::<u16, D>(
24132 self.port.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
24133 encoder,
24134 offset + cur_offset,
24135 depth,
24136 )?;
24137
24138 _prev_end_offset = cur_offset + envelope_size;
24139 if 3 > max_ordinal {
24140 return Ok(());
24141 }
24142
24143 let cur_offset: usize = (3 - 1) * envelope_size;
24146
24147 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24149
24150 fidl::encoding::encode_in_envelope_optional::<SrpServerAddressMode, D>(
24155 self.address_mode
24156 .as_ref()
24157 .map(<SrpServerAddressMode as fidl::encoding::ValueTypeMarker>::borrow),
24158 encoder,
24159 offset + cur_offset,
24160 depth,
24161 )?;
24162
24163 _prev_end_offset = cur_offset + envelope_size;
24164 if 4 > max_ordinal {
24165 return Ok(());
24166 }
24167
24168 let cur_offset: usize = (4 - 1) * envelope_size;
24171
24172 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24174
24175 fidl::encoding::encode_in_envelope_optional::<SrpServerResponseCounters, D>(
24180 self.response_counters
24181 .as_ref()
24182 .map(<SrpServerResponseCounters as fidl::encoding::ValueTypeMarker>::borrow),
24183 encoder,
24184 offset + cur_offset,
24185 depth,
24186 )?;
24187
24188 _prev_end_offset = cur_offset + envelope_size;
24189 if 5 > max_ordinal {
24190 return Ok(());
24191 }
24192
24193 let cur_offset: usize = (5 - 1) * envelope_size;
24196
24197 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24199
24200 fidl::encoding::encode_in_envelope_optional::<SrpServerRegistration, D>(
24205 self.hosts_registration
24206 .as_ref()
24207 .map(<SrpServerRegistration as fidl::encoding::ValueTypeMarker>::borrow),
24208 encoder,
24209 offset + cur_offset,
24210 depth,
24211 )?;
24212
24213 _prev_end_offset = cur_offset + envelope_size;
24214 if 6 > max_ordinal {
24215 return Ok(());
24216 }
24217
24218 let cur_offset: usize = (6 - 1) * envelope_size;
24221
24222 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24224
24225 fidl::encoding::encode_in_envelope_optional::<SrpServerRegistration, D>(
24230 self.services_registration
24231 .as_ref()
24232 .map(<SrpServerRegistration as fidl::encoding::ValueTypeMarker>::borrow),
24233 encoder,
24234 offset + cur_offset,
24235 depth,
24236 )?;
24237
24238 _prev_end_offset = cur_offset + envelope_size;
24239 if 7 > max_ordinal {
24240 return Ok(());
24241 }
24242
24243 let cur_offset: usize = (7 - 1) * envelope_size;
24246
24247 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24249
24250 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<SrpServerHost, 64>, D>(
24255 self.hosts.as_ref().map(<fidl::encoding::Vector<SrpServerHost, 64> as fidl::encoding::ValueTypeMarker>::borrow),
24256 encoder, offset + cur_offset, depth
24257 )?;
24258
24259 _prev_end_offset = cur_offset + envelope_size;
24260 if 8 > max_ordinal {
24261 return Ok(());
24262 }
24263
24264 let cur_offset: usize = (8 - 1) * envelope_size;
24267
24268 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24270
24271 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<SrpServerService, 64>, D>(
24276 self.services.as_ref().map(<fidl::encoding::Vector<SrpServerService, 64> as fidl::encoding::ValueTypeMarker>::borrow),
24277 encoder, offset + cur_offset, depth
24278 )?;
24279
24280 _prev_end_offset = cur_offset + envelope_size;
24281
24282 Ok(())
24283 }
24284 }
24285
24286 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerInfo {
24287 #[inline(always)]
24288 fn new_empty() -> Self {
24289 Self::default()
24290 }
24291
24292 unsafe fn decode(
24293 &mut self,
24294 decoder: &mut fidl::encoding::Decoder<'_, D>,
24295 offset: usize,
24296 mut depth: fidl::encoding::Depth,
24297 ) -> fidl::Result<()> {
24298 decoder.debug_check_bounds::<Self>(offset);
24299 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
24300 None => return Err(fidl::Error::NotNullable),
24301 Some(len) => len,
24302 };
24303 if len == 0 {
24305 return Ok(());
24306 };
24307 depth.increment()?;
24308 let envelope_size = 8;
24309 let bytes_len = len * envelope_size;
24310 let offset = decoder.out_of_line_offset(bytes_len)?;
24311 let mut _next_ordinal_to_read = 0;
24313 let mut next_offset = offset;
24314 let end_offset = offset + bytes_len;
24315 _next_ordinal_to_read += 1;
24316 if next_offset >= end_offset {
24317 return Ok(());
24318 }
24319
24320 while _next_ordinal_to_read < 1 {
24322 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24323 _next_ordinal_to_read += 1;
24324 next_offset += envelope_size;
24325 }
24326
24327 let next_out_of_line = decoder.next_out_of_line();
24328 let handles_before = decoder.remaining_handles();
24329 if let Some((inlined, num_bytes, num_handles)) =
24330 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24331 {
24332 let member_inline_size =
24333 <SrpServerState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24334 if inlined != (member_inline_size <= 4) {
24335 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24336 }
24337 let inner_offset;
24338 let mut inner_depth = depth.clone();
24339 if inlined {
24340 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24341 inner_offset = next_offset;
24342 } else {
24343 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24344 inner_depth.increment()?;
24345 }
24346 let val_ref = self.state.get_or_insert_with(|| fidl::new_empty!(SrpServerState, D));
24347 fidl::decode!(SrpServerState, D, val_ref, decoder, inner_offset, inner_depth)?;
24348 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24349 {
24350 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24351 }
24352 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24353 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24354 }
24355 }
24356
24357 next_offset += envelope_size;
24358 _next_ordinal_to_read += 1;
24359 if next_offset >= end_offset {
24360 return Ok(());
24361 }
24362
24363 while _next_ordinal_to_read < 2 {
24365 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24366 _next_ordinal_to_read += 1;
24367 next_offset += envelope_size;
24368 }
24369
24370 let next_out_of_line = decoder.next_out_of_line();
24371 let handles_before = decoder.remaining_handles();
24372 if let Some((inlined, num_bytes, num_handles)) =
24373 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24374 {
24375 let member_inline_size =
24376 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24377 if inlined != (member_inline_size <= 4) {
24378 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24379 }
24380 let inner_offset;
24381 let mut inner_depth = depth.clone();
24382 if inlined {
24383 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24384 inner_offset = next_offset;
24385 } else {
24386 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24387 inner_depth.increment()?;
24388 }
24389 let val_ref = self.port.get_or_insert_with(|| fidl::new_empty!(u16, D));
24390 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
24391 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24392 {
24393 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24394 }
24395 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24396 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24397 }
24398 }
24399
24400 next_offset += envelope_size;
24401 _next_ordinal_to_read += 1;
24402 if next_offset >= end_offset {
24403 return Ok(());
24404 }
24405
24406 while _next_ordinal_to_read < 3 {
24408 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24409 _next_ordinal_to_read += 1;
24410 next_offset += envelope_size;
24411 }
24412
24413 let next_out_of_line = decoder.next_out_of_line();
24414 let handles_before = decoder.remaining_handles();
24415 if let Some((inlined, num_bytes, num_handles)) =
24416 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24417 {
24418 let member_inline_size =
24419 <SrpServerAddressMode as fidl::encoding::TypeMarker>::inline_size(
24420 decoder.context,
24421 );
24422 if inlined != (member_inline_size <= 4) {
24423 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24424 }
24425 let inner_offset;
24426 let mut inner_depth = depth.clone();
24427 if inlined {
24428 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24429 inner_offset = next_offset;
24430 } else {
24431 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24432 inner_depth.increment()?;
24433 }
24434 let val_ref = self
24435 .address_mode
24436 .get_or_insert_with(|| fidl::new_empty!(SrpServerAddressMode, D));
24437 fidl::decode!(
24438 SrpServerAddressMode,
24439 D,
24440 val_ref,
24441 decoder,
24442 inner_offset,
24443 inner_depth
24444 )?;
24445 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24446 {
24447 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24448 }
24449 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24450 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24451 }
24452 }
24453
24454 next_offset += envelope_size;
24455 _next_ordinal_to_read += 1;
24456 if next_offset >= end_offset {
24457 return Ok(());
24458 }
24459
24460 while _next_ordinal_to_read < 4 {
24462 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24463 _next_ordinal_to_read += 1;
24464 next_offset += envelope_size;
24465 }
24466
24467 let next_out_of_line = decoder.next_out_of_line();
24468 let handles_before = decoder.remaining_handles();
24469 if let Some((inlined, num_bytes, num_handles)) =
24470 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24471 {
24472 let member_inline_size =
24473 <SrpServerResponseCounters as fidl::encoding::TypeMarker>::inline_size(
24474 decoder.context,
24475 );
24476 if inlined != (member_inline_size <= 4) {
24477 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24478 }
24479 let inner_offset;
24480 let mut inner_depth = depth.clone();
24481 if inlined {
24482 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24483 inner_offset = next_offset;
24484 } else {
24485 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24486 inner_depth.increment()?;
24487 }
24488 let val_ref = self
24489 .response_counters
24490 .get_or_insert_with(|| fidl::new_empty!(SrpServerResponseCounters, D));
24491 fidl::decode!(
24492 SrpServerResponseCounters,
24493 D,
24494 val_ref,
24495 decoder,
24496 inner_offset,
24497 inner_depth
24498 )?;
24499 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24500 {
24501 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24502 }
24503 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24504 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24505 }
24506 }
24507
24508 next_offset += envelope_size;
24509 _next_ordinal_to_read += 1;
24510 if next_offset >= end_offset {
24511 return Ok(());
24512 }
24513
24514 while _next_ordinal_to_read < 5 {
24516 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24517 _next_ordinal_to_read += 1;
24518 next_offset += envelope_size;
24519 }
24520
24521 let next_out_of_line = decoder.next_out_of_line();
24522 let handles_before = decoder.remaining_handles();
24523 if let Some((inlined, num_bytes, num_handles)) =
24524 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24525 {
24526 let member_inline_size =
24527 <SrpServerRegistration as fidl::encoding::TypeMarker>::inline_size(
24528 decoder.context,
24529 );
24530 if inlined != (member_inline_size <= 4) {
24531 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24532 }
24533 let inner_offset;
24534 let mut inner_depth = depth.clone();
24535 if inlined {
24536 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24537 inner_offset = next_offset;
24538 } else {
24539 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24540 inner_depth.increment()?;
24541 }
24542 let val_ref = self
24543 .hosts_registration
24544 .get_or_insert_with(|| fidl::new_empty!(SrpServerRegistration, D));
24545 fidl::decode!(
24546 SrpServerRegistration,
24547 D,
24548 val_ref,
24549 decoder,
24550 inner_offset,
24551 inner_depth
24552 )?;
24553 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24554 {
24555 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24556 }
24557 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24558 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24559 }
24560 }
24561
24562 next_offset += envelope_size;
24563 _next_ordinal_to_read += 1;
24564 if next_offset >= end_offset {
24565 return Ok(());
24566 }
24567
24568 while _next_ordinal_to_read < 6 {
24570 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24571 _next_ordinal_to_read += 1;
24572 next_offset += envelope_size;
24573 }
24574
24575 let next_out_of_line = decoder.next_out_of_line();
24576 let handles_before = decoder.remaining_handles();
24577 if let Some((inlined, num_bytes, num_handles)) =
24578 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24579 {
24580 let member_inline_size =
24581 <SrpServerRegistration as fidl::encoding::TypeMarker>::inline_size(
24582 decoder.context,
24583 );
24584 if inlined != (member_inline_size <= 4) {
24585 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24586 }
24587 let inner_offset;
24588 let mut inner_depth = depth.clone();
24589 if inlined {
24590 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24591 inner_offset = next_offset;
24592 } else {
24593 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24594 inner_depth.increment()?;
24595 }
24596 let val_ref = self
24597 .services_registration
24598 .get_or_insert_with(|| fidl::new_empty!(SrpServerRegistration, D));
24599 fidl::decode!(
24600 SrpServerRegistration,
24601 D,
24602 val_ref,
24603 decoder,
24604 inner_offset,
24605 inner_depth
24606 )?;
24607 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24608 {
24609 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24610 }
24611 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24612 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24613 }
24614 }
24615
24616 next_offset += envelope_size;
24617 _next_ordinal_to_read += 1;
24618 if next_offset >= end_offset {
24619 return Ok(());
24620 }
24621
24622 while _next_ordinal_to_read < 7 {
24624 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24625 _next_ordinal_to_read += 1;
24626 next_offset += envelope_size;
24627 }
24628
24629 let next_out_of_line = decoder.next_out_of_line();
24630 let handles_before = decoder.remaining_handles();
24631 if let Some((inlined, num_bytes, num_handles)) =
24632 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24633 {
24634 let member_inline_size = <fidl::encoding::Vector<SrpServerHost, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24635 if inlined != (member_inline_size <= 4) {
24636 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24637 }
24638 let inner_offset;
24639 let mut inner_depth = depth.clone();
24640 if inlined {
24641 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24642 inner_offset = next_offset;
24643 } else {
24644 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24645 inner_depth.increment()?;
24646 }
24647 let val_ref = self.hosts.get_or_insert_with(
24648 || fidl::new_empty!(fidl::encoding::Vector<SrpServerHost, 64>, D),
24649 );
24650 fidl::decode!(fidl::encoding::Vector<SrpServerHost, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
24651 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24652 {
24653 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24654 }
24655 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24656 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24657 }
24658 }
24659
24660 next_offset += envelope_size;
24661 _next_ordinal_to_read += 1;
24662 if next_offset >= end_offset {
24663 return Ok(());
24664 }
24665
24666 while _next_ordinal_to_read < 8 {
24668 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24669 _next_ordinal_to_read += 1;
24670 next_offset += envelope_size;
24671 }
24672
24673 let next_out_of_line = decoder.next_out_of_line();
24674 let handles_before = decoder.remaining_handles();
24675 if let Some((inlined, num_bytes, num_handles)) =
24676 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24677 {
24678 let member_inline_size = <fidl::encoding::Vector<SrpServerService, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24679 if inlined != (member_inline_size <= 4) {
24680 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24681 }
24682 let inner_offset;
24683 let mut inner_depth = depth.clone();
24684 if inlined {
24685 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24686 inner_offset = next_offset;
24687 } else {
24688 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24689 inner_depth.increment()?;
24690 }
24691 let val_ref = self.services.get_or_insert_with(
24692 || fidl::new_empty!(fidl::encoding::Vector<SrpServerService, 64>, D),
24693 );
24694 fidl::decode!(fidl::encoding::Vector<SrpServerService, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
24695 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
24696 {
24697 return Err(fidl::Error::InvalidNumBytesInEnvelope);
24698 }
24699 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
24700 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
24701 }
24702 }
24703
24704 next_offset += envelope_size;
24705
24706 while next_offset < end_offset {
24708 _next_ordinal_to_read += 1;
24709 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24710 next_offset += envelope_size;
24711 }
24712
24713 Ok(())
24714 }
24715 }
24716
24717 impl SrpServerRegistration {
24718 #[inline(always)]
24719 fn max_ordinal_present(&self) -> u64 {
24720 if let Some(_) = self.remaining_key_lease_time_total {
24721 return 6;
24722 }
24723 if let Some(_) = self.remaining_lease_time_total {
24724 return 5;
24725 }
24726 if let Some(_) = self.key_lease_time_total {
24727 return 4;
24728 }
24729 if let Some(_) = self.lease_time_total {
24730 return 3;
24731 }
24732 if let Some(_) = self.deleted_count {
24733 return 2;
24734 }
24735 if let Some(_) = self.fresh_count {
24736 return 1;
24737 }
24738 0
24739 }
24740 }
24741
24742 impl fidl::encoding::ValueTypeMarker for SrpServerRegistration {
24743 type Borrowed<'a> = &'a Self;
24744 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
24745 value
24746 }
24747 }
24748
24749 unsafe impl fidl::encoding::TypeMarker for SrpServerRegistration {
24750 type Owned = Self;
24751
24752 #[inline(always)]
24753 fn inline_align(_context: fidl::encoding::Context) -> usize {
24754 8
24755 }
24756
24757 #[inline(always)]
24758 fn inline_size(_context: fidl::encoding::Context) -> usize {
24759 16
24760 }
24761 }
24762
24763 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerRegistration, D>
24764 for &SrpServerRegistration
24765 {
24766 unsafe fn encode(
24767 self,
24768 encoder: &mut fidl::encoding::Encoder<'_, D>,
24769 offset: usize,
24770 mut depth: fidl::encoding::Depth,
24771 ) -> fidl::Result<()> {
24772 encoder.debug_check_bounds::<SrpServerRegistration>(offset);
24773 let max_ordinal: u64 = self.max_ordinal_present();
24775 encoder.write_num(max_ordinal, offset);
24776 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
24777 if max_ordinal == 0 {
24779 return Ok(());
24780 }
24781 depth.increment()?;
24782 let envelope_size = 8;
24783 let bytes_len = max_ordinal as usize * envelope_size;
24784 #[allow(unused_variables)]
24785 let offset = encoder.out_of_line_offset(bytes_len);
24786 let mut _prev_end_offset: usize = 0;
24787 if 1 > max_ordinal {
24788 return Ok(());
24789 }
24790
24791 let cur_offset: usize = (1 - 1) * envelope_size;
24794
24795 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24797
24798 fidl::encoding::encode_in_envelope_optional::<u32, D>(
24803 self.fresh_count.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
24804 encoder,
24805 offset + cur_offset,
24806 depth,
24807 )?;
24808
24809 _prev_end_offset = cur_offset + envelope_size;
24810 if 2 > max_ordinal {
24811 return Ok(());
24812 }
24813
24814 let cur_offset: usize = (2 - 1) * envelope_size;
24817
24818 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24820
24821 fidl::encoding::encode_in_envelope_optional::<u32, D>(
24826 self.deleted_count.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
24827 encoder,
24828 offset + cur_offset,
24829 depth,
24830 )?;
24831
24832 _prev_end_offset = cur_offset + envelope_size;
24833 if 3 > max_ordinal {
24834 return Ok(());
24835 }
24836
24837 let cur_offset: usize = (3 - 1) * envelope_size;
24840
24841 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24843
24844 fidl::encoding::encode_in_envelope_optional::<i64, D>(
24849 self.lease_time_total
24850 .as_ref()
24851 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
24852 encoder,
24853 offset + cur_offset,
24854 depth,
24855 )?;
24856
24857 _prev_end_offset = cur_offset + envelope_size;
24858 if 4 > max_ordinal {
24859 return Ok(());
24860 }
24861
24862 let cur_offset: usize = (4 - 1) * envelope_size;
24865
24866 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24868
24869 fidl::encoding::encode_in_envelope_optional::<i64, D>(
24874 self.key_lease_time_total
24875 .as_ref()
24876 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
24877 encoder,
24878 offset + cur_offset,
24879 depth,
24880 )?;
24881
24882 _prev_end_offset = cur_offset + envelope_size;
24883 if 5 > max_ordinal {
24884 return Ok(());
24885 }
24886
24887 let cur_offset: usize = (5 - 1) * envelope_size;
24890
24891 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24893
24894 fidl::encoding::encode_in_envelope_optional::<i64, D>(
24899 self.remaining_lease_time_total
24900 .as_ref()
24901 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
24902 encoder,
24903 offset + cur_offset,
24904 depth,
24905 )?;
24906
24907 _prev_end_offset = cur_offset + envelope_size;
24908 if 6 > max_ordinal {
24909 return Ok(());
24910 }
24911
24912 let cur_offset: usize = (6 - 1) * envelope_size;
24915
24916 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
24918
24919 fidl::encoding::encode_in_envelope_optional::<i64, D>(
24924 self.remaining_key_lease_time_total
24925 .as_ref()
24926 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
24927 encoder,
24928 offset + cur_offset,
24929 depth,
24930 )?;
24931
24932 _prev_end_offset = cur_offset + envelope_size;
24933
24934 Ok(())
24935 }
24936 }
24937
24938 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerRegistration {
24939 #[inline(always)]
24940 fn new_empty() -> Self {
24941 Self::default()
24942 }
24943
24944 unsafe fn decode(
24945 &mut self,
24946 decoder: &mut fidl::encoding::Decoder<'_, D>,
24947 offset: usize,
24948 mut depth: fidl::encoding::Depth,
24949 ) -> fidl::Result<()> {
24950 decoder.debug_check_bounds::<Self>(offset);
24951 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
24952 None => return Err(fidl::Error::NotNullable),
24953 Some(len) => len,
24954 };
24955 if len == 0 {
24957 return Ok(());
24958 };
24959 depth.increment()?;
24960 let envelope_size = 8;
24961 let bytes_len = len * envelope_size;
24962 let offset = decoder.out_of_line_offset(bytes_len)?;
24963 let mut _next_ordinal_to_read = 0;
24965 let mut next_offset = offset;
24966 let end_offset = offset + bytes_len;
24967 _next_ordinal_to_read += 1;
24968 if next_offset >= end_offset {
24969 return Ok(());
24970 }
24971
24972 while _next_ordinal_to_read < 1 {
24974 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
24975 _next_ordinal_to_read += 1;
24976 next_offset += envelope_size;
24977 }
24978
24979 let next_out_of_line = decoder.next_out_of_line();
24980 let handles_before = decoder.remaining_handles();
24981 if let Some((inlined, num_bytes, num_handles)) =
24982 fidl::encoding::decode_envelope_header(decoder, next_offset)?
24983 {
24984 let member_inline_size =
24985 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
24986 if inlined != (member_inline_size <= 4) {
24987 return Err(fidl::Error::InvalidInlineBitInEnvelope);
24988 }
24989 let inner_offset;
24990 let mut inner_depth = depth.clone();
24991 if inlined {
24992 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
24993 inner_offset = next_offset;
24994 } else {
24995 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
24996 inner_depth.increment()?;
24997 }
24998 let val_ref = self.fresh_count.get_or_insert_with(|| fidl::new_empty!(u32, D));
24999 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
25000 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25001 {
25002 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25003 }
25004 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25005 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25006 }
25007 }
25008
25009 next_offset += envelope_size;
25010 _next_ordinal_to_read += 1;
25011 if next_offset >= end_offset {
25012 return Ok(());
25013 }
25014
25015 while _next_ordinal_to_read < 2 {
25017 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25018 _next_ordinal_to_read += 1;
25019 next_offset += envelope_size;
25020 }
25021
25022 let next_out_of_line = decoder.next_out_of_line();
25023 let handles_before = decoder.remaining_handles();
25024 if let Some((inlined, num_bytes, num_handles)) =
25025 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25026 {
25027 let member_inline_size =
25028 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25029 if inlined != (member_inline_size <= 4) {
25030 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25031 }
25032 let inner_offset;
25033 let mut inner_depth = depth.clone();
25034 if inlined {
25035 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25036 inner_offset = next_offset;
25037 } else {
25038 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25039 inner_depth.increment()?;
25040 }
25041 let val_ref = self.deleted_count.get_or_insert_with(|| fidl::new_empty!(u32, D));
25042 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
25043 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25044 {
25045 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25046 }
25047 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25048 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25049 }
25050 }
25051
25052 next_offset += envelope_size;
25053 _next_ordinal_to_read += 1;
25054 if next_offset >= end_offset {
25055 return Ok(());
25056 }
25057
25058 while _next_ordinal_to_read < 3 {
25060 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25061 _next_ordinal_to_read += 1;
25062 next_offset += envelope_size;
25063 }
25064
25065 let next_out_of_line = decoder.next_out_of_line();
25066 let handles_before = decoder.remaining_handles();
25067 if let Some((inlined, num_bytes, num_handles)) =
25068 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25069 {
25070 let member_inline_size =
25071 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25072 if inlined != (member_inline_size <= 4) {
25073 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25074 }
25075 let inner_offset;
25076 let mut inner_depth = depth.clone();
25077 if inlined {
25078 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25079 inner_offset = next_offset;
25080 } else {
25081 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25082 inner_depth.increment()?;
25083 }
25084 let val_ref = self.lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
25085 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
25086 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25087 {
25088 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25089 }
25090 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25091 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25092 }
25093 }
25094
25095 next_offset += envelope_size;
25096 _next_ordinal_to_read += 1;
25097 if next_offset >= end_offset {
25098 return Ok(());
25099 }
25100
25101 while _next_ordinal_to_read < 4 {
25103 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25104 _next_ordinal_to_read += 1;
25105 next_offset += envelope_size;
25106 }
25107
25108 let next_out_of_line = decoder.next_out_of_line();
25109 let handles_before = decoder.remaining_handles();
25110 if let Some((inlined, num_bytes, num_handles)) =
25111 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25112 {
25113 let member_inline_size =
25114 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25115 if inlined != (member_inline_size <= 4) {
25116 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25117 }
25118 let inner_offset;
25119 let mut inner_depth = depth.clone();
25120 if inlined {
25121 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25122 inner_offset = next_offset;
25123 } else {
25124 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25125 inner_depth.increment()?;
25126 }
25127 let val_ref =
25128 self.key_lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
25129 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
25130 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25131 {
25132 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25133 }
25134 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25135 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25136 }
25137 }
25138
25139 next_offset += envelope_size;
25140 _next_ordinal_to_read += 1;
25141 if next_offset >= end_offset {
25142 return Ok(());
25143 }
25144
25145 while _next_ordinal_to_read < 5 {
25147 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25148 _next_ordinal_to_read += 1;
25149 next_offset += envelope_size;
25150 }
25151
25152 let next_out_of_line = decoder.next_out_of_line();
25153 let handles_before = decoder.remaining_handles();
25154 if let Some((inlined, num_bytes, num_handles)) =
25155 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25156 {
25157 let member_inline_size =
25158 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25159 if inlined != (member_inline_size <= 4) {
25160 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25161 }
25162 let inner_offset;
25163 let mut inner_depth = depth.clone();
25164 if inlined {
25165 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25166 inner_offset = next_offset;
25167 } else {
25168 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25169 inner_depth.increment()?;
25170 }
25171 let val_ref =
25172 self.remaining_lease_time_total.get_or_insert_with(|| fidl::new_empty!(i64, D));
25173 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
25174 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25175 {
25176 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25177 }
25178 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25179 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25180 }
25181 }
25182
25183 next_offset += envelope_size;
25184 _next_ordinal_to_read += 1;
25185 if next_offset >= end_offset {
25186 return Ok(());
25187 }
25188
25189 while _next_ordinal_to_read < 6 {
25191 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25192 _next_ordinal_to_read += 1;
25193 next_offset += envelope_size;
25194 }
25195
25196 let next_out_of_line = decoder.next_out_of_line();
25197 let handles_before = decoder.remaining_handles();
25198 if let Some((inlined, num_bytes, num_handles)) =
25199 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25200 {
25201 let member_inline_size =
25202 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25203 if inlined != (member_inline_size <= 4) {
25204 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25205 }
25206 let inner_offset;
25207 let mut inner_depth = depth.clone();
25208 if inlined {
25209 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25210 inner_offset = next_offset;
25211 } else {
25212 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25213 inner_depth.increment()?;
25214 }
25215 let val_ref = self
25216 .remaining_key_lease_time_total
25217 .get_or_insert_with(|| fidl::new_empty!(i64, D));
25218 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
25219 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25220 {
25221 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25222 }
25223 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25224 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25225 }
25226 }
25227
25228 next_offset += envelope_size;
25229
25230 while next_offset < end_offset {
25232 _next_ordinal_to_read += 1;
25233 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25234 next_offset += envelope_size;
25235 }
25236
25237 Ok(())
25238 }
25239 }
25240
25241 impl SrpServerResponseCounters {
25242 #[inline(always)]
25243 fn max_ordinal_present(&self) -> u64 {
25244 if let Some(_) = self.other_response {
25245 return 6;
25246 }
25247 if let Some(_) = self.refused_response {
25248 return 5;
25249 }
25250 if let Some(_) = self.name_exists_response {
25251 return 4;
25252 }
25253 if let Some(_) = self.format_error_response {
25254 return 3;
25255 }
25256 if let Some(_) = self.server_failure_response {
25257 return 2;
25258 }
25259 if let Some(_) = self.success_response {
25260 return 1;
25261 }
25262 0
25263 }
25264 }
25265
25266 impl fidl::encoding::ValueTypeMarker for SrpServerResponseCounters {
25267 type Borrowed<'a> = &'a Self;
25268 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
25269 value
25270 }
25271 }
25272
25273 unsafe impl fidl::encoding::TypeMarker for SrpServerResponseCounters {
25274 type Owned = Self;
25275
25276 #[inline(always)]
25277 fn inline_align(_context: fidl::encoding::Context) -> usize {
25278 8
25279 }
25280
25281 #[inline(always)]
25282 fn inline_size(_context: fidl::encoding::Context) -> usize {
25283 16
25284 }
25285 }
25286
25287 unsafe impl<D: fidl::encoding::ResourceDialect>
25288 fidl::encoding::Encode<SrpServerResponseCounters, D> for &SrpServerResponseCounters
25289 {
25290 unsafe fn encode(
25291 self,
25292 encoder: &mut fidl::encoding::Encoder<'_, D>,
25293 offset: usize,
25294 mut depth: fidl::encoding::Depth,
25295 ) -> fidl::Result<()> {
25296 encoder.debug_check_bounds::<SrpServerResponseCounters>(offset);
25297 let max_ordinal: u64 = self.max_ordinal_present();
25299 encoder.write_num(max_ordinal, offset);
25300 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
25301 if max_ordinal == 0 {
25303 return Ok(());
25304 }
25305 depth.increment()?;
25306 let envelope_size = 8;
25307 let bytes_len = max_ordinal as usize * envelope_size;
25308 #[allow(unused_variables)]
25309 let offset = encoder.out_of_line_offset(bytes_len);
25310 let mut _prev_end_offset: usize = 0;
25311 if 1 > max_ordinal {
25312 return Ok(());
25313 }
25314
25315 let cur_offset: usize = (1 - 1) * envelope_size;
25318
25319 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25321
25322 fidl::encoding::encode_in_envelope_optional::<u32, D>(
25327 self.success_response
25328 .as_ref()
25329 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
25330 encoder,
25331 offset + cur_offset,
25332 depth,
25333 )?;
25334
25335 _prev_end_offset = cur_offset + envelope_size;
25336 if 2 > max_ordinal {
25337 return Ok(());
25338 }
25339
25340 let cur_offset: usize = (2 - 1) * envelope_size;
25343
25344 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25346
25347 fidl::encoding::encode_in_envelope_optional::<u32, D>(
25352 self.server_failure_response
25353 .as_ref()
25354 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
25355 encoder,
25356 offset + cur_offset,
25357 depth,
25358 )?;
25359
25360 _prev_end_offset = cur_offset + envelope_size;
25361 if 3 > max_ordinal {
25362 return Ok(());
25363 }
25364
25365 let cur_offset: usize = (3 - 1) * envelope_size;
25368
25369 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25371
25372 fidl::encoding::encode_in_envelope_optional::<u32, D>(
25377 self.format_error_response
25378 .as_ref()
25379 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
25380 encoder,
25381 offset + cur_offset,
25382 depth,
25383 )?;
25384
25385 _prev_end_offset = cur_offset + envelope_size;
25386 if 4 > max_ordinal {
25387 return Ok(());
25388 }
25389
25390 let cur_offset: usize = (4 - 1) * envelope_size;
25393
25394 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25396
25397 fidl::encoding::encode_in_envelope_optional::<u32, D>(
25402 self.name_exists_response
25403 .as_ref()
25404 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
25405 encoder,
25406 offset + cur_offset,
25407 depth,
25408 )?;
25409
25410 _prev_end_offset = cur_offset + envelope_size;
25411 if 5 > max_ordinal {
25412 return Ok(());
25413 }
25414
25415 let cur_offset: usize = (5 - 1) * envelope_size;
25418
25419 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25421
25422 fidl::encoding::encode_in_envelope_optional::<u32, D>(
25427 self.refused_response
25428 .as_ref()
25429 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
25430 encoder,
25431 offset + cur_offset,
25432 depth,
25433 )?;
25434
25435 _prev_end_offset = cur_offset + envelope_size;
25436 if 6 > max_ordinal {
25437 return Ok(());
25438 }
25439
25440 let cur_offset: usize = (6 - 1) * envelope_size;
25443
25444 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25446
25447 fidl::encoding::encode_in_envelope_optional::<u32, D>(
25452 self.other_response.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
25453 encoder,
25454 offset + cur_offset,
25455 depth,
25456 )?;
25457
25458 _prev_end_offset = cur_offset + envelope_size;
25459
25460 Ok(())
25461 }
25462 }
25463
25464 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
25465 for SrpServerResponseCounters
25466 {
25467 #[inline(always)]
25468 fn new_empty() -> Self {
25469 Self::default()
25470 }
25471
25472 unsafe fn decode(
25473 &mut self,
25474 decoder: &mut fidl::encoding::Decoder<'_, D>,
25475 offset: usize,
25476 mut depth: fidl::encoding::Depth,
25477 ) -> fidl::Result<()> {
25478 decoder.debug_check_bounds::<Self>(offset);
25479 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
25480 None => return Err(fidl::Error::NotNullable),
25481 Some(len) => len,
25482 };
25483 if len == 0 {
25485 return Ok(());
25486 };
25487 depth.increment()?;
25488 let envelope_size = 8;
25489 let bytes_len = len * envelope_size;
25490 let offset = decoder.out_of_line_offset(bytes_len)?;
25491 let mut _next_ordinal_to_read = 0;
25493 let mut next_offset = offset;
25494 let end_offset = offset + bytes_len;
25495 _next_ordinal_to_read += 1;
25496 if next_offset >= end_offset {
25497 return Ok(());
25498 }
25499
25500 while _next_ordinal_to_read < 1 {
25502 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25503 _next_ordinal_to_read += 1;
25504 next_offset += envelope_size;
25505 }
25506
25507 let next_out_of_line = decoder.next_out_of_line();
25508 let handles_before = decoder.remaining_handles();
25509 if let Some((inlined, num_bytes, num_handles)) =
25510 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25511 {
25512 let member_inline_size =
25513 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25514 if inlined != (member_inline_size <= 4) {
25515 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25516 }
25517 let inner_offset;
25518 let mut inner_depth = depth.clone();
25519 if inlined {
25520 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25521 inner_offset = next_offset;
25522 } else {
25523 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25524 inner_depth.increment()?;
25525 }
25526 let val_ref = self.success_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
25527 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
25528 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25529 {
25530 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25531 }
25532 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25533 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25534 }
25535 }
25536
25537 next_offset += envelope_size;
25538 _next_ordinal_to_read += 1;
25539 if next_offset >= end_offset {
25540 return Ok(());
25541 }
25542
25543 while _next_ordinal_to_read < 2 {
25545 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25546 _next_ordinal_to_read += 1;
25547 next_offset += envelope_size;
25548 }
25549
25550 let next_out_of_line = decoder.next_out_of_line();
25551 let handles_before = decoder.remaining_handles();
25552 if let Some((inlined, num_bytes, num_handles)) =
25553 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25554 {
25555 let member_inline_size =
25556 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25557 if inlined != (member_inline_size <= 4) {
25558 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25559 }
25560 let inner_offset;
25561 let mut inner_depth = depth.clone();
25562 if inlined {
25563 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25564 inner_offset = next_offset;
25565 } else {
25566 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25567 inner_depth.increment()?;
25568 }
25569 let val_ref =
25570 self.server_failure_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
25571 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
25572 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25573 {
25574 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25575 }
25576 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25577 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25578 }
25579 }
25580
25581 next_offset += envelope_size;
25582 _next_ordinal_to_read += 1;
25583 if next_offset >= end_offset {
25584 return Ok(());
25585 }
25586
25587 while _next_ordinal_to_read < 3 {
25589 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25590 _next_ordinal_to_read += 1;
25591 next_offset += envelope_size;
25592 }
25593
25594 let next_out_of_line = decoder.next_out_of_line();
25595 let handles_before = decoder.remaining_handles();
25596 if let Some((inlined, num_bytes, num_handles)) =
25597 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25598 {
25599 let member_inline_size =
25600 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25601 if inlined != (member_inline_size <= 4) {
25602 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25603 }
25604 let inner_offset;
25605 let mut inner_depth = depth.clone();
25606 if inlined {
25607 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25608 inner_offset = next_offset;
25609 } else {
25610 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25611 inner_depth.increment()?;
25612 }
25613 let val_ref =
25614 self.format_error_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
25615 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
25616 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25617 {
25618 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25619 }
25620 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25621 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25622 }
25623 }
25624
25625 next_offset += envelope_size;
25626 _next_ordinal_to_read += 1;
25627 if next_offset >= end_offset {
25628 return Ok(());
25629 }
25630
25631 while _next_ordinal_to_read < 4 {
25633 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25634 _next_ordinal_to_read += 1;
25635 next_offset += envelope_size;
25636 }
25637
25638 let next_out_of_line = decoder.next_out_of_line();
25639 let handles_before = decoder.remaining_handles();
25640 if let Some((inlined, num_bytes, num_handles)) =
25641 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25642 {
25643 let member_inline_size =
25644 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25645 if inlined != (member_inline_size <= 4) {
25646 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25647 }
25648 let inner_offset;
25649 let mut inner_depth = depth.clone();
25650 if inlined {
25651 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25652 inner_offset = next_offset;
25653 } else {
25654 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25655 inner_depth.increment()?;
25656 }
25657 let val_ref =
25658 self.name_exists_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
25659 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
25660 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25661 {
25662 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25663 }
25664 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25665 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25666 }
25667 }
25668
25669 next_offset += envelope_size;
25670 _next_ordinal_to_read += 1;
25671 if next_offset >= end_offset {
25672 return Ok(());
25673 }
25674
25675 while _next_ordinal_to_read < 5 {
25677 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25678 _next_ordinal_to_read += 1;
25679 next_offset += envelope_size;
25680 }
25681
25682 let next_out_of_line = decoder.next_out_of_line();
25683 let handles_before = decoder.remaining_handles();
25684 if let Some((inlined, num_bytes, num_handles)) =
25685 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25686 {
25687 let member_inline_size =
25688 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25689 if inlined != (member_inline_size <= 4) {
25690 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25691 }
25692 let inner_offset;
25693 let mut inner_depth = depth.clone();
25694 if inlined {
25695 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25696 inner_offset = next_offset;
25697 } else {
25698 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25699 inner_depth.increment()?;
25700 }
25701 let val_ref = self.refused_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
25702 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
25703 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25704 {
25705 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25706 }
25707 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25708 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25709 }
25710 }
25711
25712 next_offset += envelope_size;
25713 _next_ordinal_to_read += 1;
25714 if next_offset >= end_offset {
25715 return Ok(());
25716 }
25717
25718 while _next_ordinal_to_read < 6 {
25720 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25721 _next_ordinal_to_read += 1;
25722 next_offset += envelope_size;
25723 }
25724
25725 let next_out_of_line = decoder.next_out_of_line();
25726 let handles_before = decoder.remaining_handles();
25727 if let Some((inlined, num_bytes, num_handles)) =
25728 fidl::encoding::decode_envelope_header(decoder, next_offset)?
25729 {
25730 let member_inline_size =
25731 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
25732 if inlined != (member_inline_size <= 4) {
25733 return Err(fidl::Error::InvalidInlineBitInEnvelope);
25734 }
25735 let inner_offset;
25736 let mut inner_depth = depth.clone();
25737 if inlined {
25738 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
25739 inner_offset = next_offset;
25740 } else {
25741 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
25742 inner_depth.increment()?;
25743 }
25744 let val_ref = self.other_response.get_or_insert_with(|| fidl::new_empty!(u32, D));
25745 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
25746 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
25747 {
25748 return Err(fidl::Error::InvalidNumBytesInEnvelope);
25749 }
25750 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
25751 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
25752 }
25753 }
25754
25755 next_offset += envelope_size;
25756
25757 while next_offset < end_offset {
25759 _next_ordinal_to_read += 1;
25760 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
25761 next_offset += envelope_size;
25762 }
25763
25764 Ok(())
25765 }
25766 }
25767
25768 impl SrpServerService {
25769 #[inline(always)]
25770 fn max_ordinal_present(&self) -> u64 {
25771 if let Some(_) = self.host {
25772 return 11;
25773 }
25774 if let Some(_) = self.txt_data {
25775 return 10;
25776 }
25777 if let Some(_) = self.key_lease {
25778 return 9;
25779 }
25780 if let Some(_) = self.lease {
25781 return 8;
25782 }
25783 if let Some(_) = self.ttl {
25784 return 7;
25785 }
25786 if let Some(_) = self.weight {
25787 return 6;
25788 }
25789 if let Some(_) = self.priority {
25790 return 5;
25791 }
25792 if let Some(_) = self.port {
25793 return 4;
25794 }
25795 if let Some(_) = self.subtypes {
25796 return 3;
25797 }
25798 if let Some(_) = self.deleted {
25799 return 2;
25800 }
25801 if let Some(_) = self.instance_name {
25802 return 1;
25803 }
25804 0
25805 }
25806 }
25807
25808 impl fidl::encoding::ValueTypeMarker for SrpServerService {
25809 type Borrowed<'a> = &'a Self;
25810 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
25811 value
25812 }
25813 }
25814
25815 unsafe impl fidl::encoding::TypeMarker for SrpServerService {
25816 type Owned = Self;
25817
25818 #[inline(always)]
25819 fn inline_align(_context: fidl::encoding::Context) -> usize {
25820 8
25821 }
25822
25823 #[inline(always)]
25824 fn inline_size(_context: fidl::encoding::Context) -> usize {
25825 16
25826 }
25827 }
25828
25829 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SrpServerService, D>
25830 for &SrpServerService
25831 {
25832 unsafe fn encode(
25833 self,
25834 encoder: &mut fidl::encoding::Encoder<'_, D>,
25835 offset: usize,
25836 mut depth: fidl::encoding::Depth,
25837 ) -> fidl::Result<()> {
25838 encoder.debug_check_bounds::<SrpServerService>(offset);
25839 let max_ordinal: u64 = self.max_ordinal_present();
25841 encoder.write_num(max_ordinal, offset);
25842 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
25843 if max_ordinal == 0 {
25845 return Ok(());
25846 }
25847 depth.increment()?;
25848 let envelope_size = 8;
25849 let bytes_len = max_ordinal as usize * envelope_size;
25850 #[allow(unused_variables)]
25851 let offset = encoder.out_of_line_offset(bytes_len);
25852 let mut _prev_end_offset: usize = 0;
25853 if 1 > max_ordinal {
25854 return Ok(());
25855 }
25856
25857 let cur_offset: usize = (1 - 1) * envelope_size;
25860
25861 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25863
25864 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<255>, D>(
25869 self.instance_name.as_ref().map(
25870 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
25871 ),
25872 encoder,
25873 offset + cur_offset,
25874 depth,
25875 )?;
25876
25877 _prev_end_offset = cur_offset + envelope_size;
25878 if 2 > max_ordinal {
25879 return Ok(());
25880 }
25881
25882 let cur_offset: usize = (2 - 1) * envelope_size;
25885
25886 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25888
25889 fidl::encoding::encode_in_envelope_optional::<bool, D>(
25894 self.deleted.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
25895 encoder,
25896 offset + cur_offset,
25897 depth,
25898 )?;
25899
25900 _prev_end_offset = cur_offset + envelope_size;
25901 if 3 > max_ordinal {
25902 return Ok(());
25903 }
25904
25905 let cur_offset: usize = (3 - 1) * envelope_size;
25908
25909 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25911
25912 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 6>, D>(
25917 self.subtypes.as_ref().map(<fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 6> as fidl::encoding::ValueTypeMarker>::borrow),
25918 encoder, offset + cur_offset, depth
25919 )?;
25920
25921 _prev_end_offset = cur_offset + envelope_size;
25922 if 4 > max_ordinal {
25923 return Ok(());
25924 }
25925
25926 let cur_offset: usize = (4 - 1) * envelope_size;
25929
25930 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25932
25933 fidl::encoding::encode_in_envelope_optional::<u16, D>(
25938 self.port.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
25939 encoder,
25940 offset + cur_offset,
25941 depth,
25942 )?;
25943
25944 _prev_end_offset = cur_offset + envelope_size;
25945 if 5 > max_ordinal {
25946 return Ok(());
25947 }
25948
25949 let cur_offset: usize = (5 - 1) * envelope_size;
25952
25953 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25955
25956 fidl::encoding::encode_in_envelope_optional::<u16, D>(
25961 self.priority.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
25962 encoder,
25963 offset + cur_offset,
25964 depth,
25965 )?;
25966
25967 _prev_end_offset = cur_offset + envelope_size;
25968 if 6 > max_ordinal {
25969 return Ok(());
25970 }
25971
25972 let cur_offset: usize = (6 - 1) * envelope_size;
25975
25976 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
25978
25979 fidl::encoding::encode_in_envelope_optional::<u16, D>(
25984 self.weight.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
25985 encoder,
25986 offset + cur_offset,
25987 depth,
25988 )?;
25989
25990 _prev_end_offset = cur_offset + envelope_size;
25991 if 7 > max_ordinal {
25992 return Ok(());
25993 }
25994
25995 let cur_offset: usize = (7 - 1) * envelope_size;
25998
25999 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26001
26002 fidl::encoding::encode_in_envelope_optional::<i64, D>(
26007 self.ttl.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
26008 encoder,
26009 offset + cur_offset,
26010 depth,
26011 )?;
26012
26013 _prev_end_offset = cur_offset + envelope_size;
26014 if 8 > max_ordinal {
26015 return Ok(());
26016 }
26017
26018 let cur_offset: usize = (8 - 1) * envelope_size;
26021
26022 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26024
26025 fidl::encoding::encode_in_envelope_optional::<i64, D>(
26030 self.lease.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
26031 encoder,
26032 offset + cur_offset,
26033 depth,
26034 )?;
26035
26036 _prev_end_offset = cur_offset + envelope_size;
26037 if 9 > max_ordinal {
26038 return Ok(());
26039 }
26040
26041 let cur_offset: usize = (9 - 1) * envelope_size;
26044
26045 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26047
26048 fidl::encoding::encode_in_envelope_optional::<i64, D>(
26053 self.key_lease.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
26054 encoder,
26055 offset + cur_offset,
26056 depth,
26057 )?;
26058
26059 _prev_end_offset = cur_offset + envelope_size;
26060 if 10 > max_ordinal {
26061 return Ok(());
26062 }
26063
26064 let cur_offset: usize = (10 - 1) * envelope_size;
26067
26068 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26070
26071 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<DnsTxtEntry>, D>(
26076 self.txt_data.as_ref().map(<fidl::encoding::UnboundedVector<DnsTxtEntry> as fidl::encoding::ValueTypeMarker>::borrow),
26077 encoder, offset + cur_offset, depth
26078 )?;
26079
26080 _prev_end_offset = cur_offset + envelope_size;
26081 if 11 > max_ordinal {
26082 return Ok(());
26083 }
26084
26085 let cur_offset: usize = (11 - 1) * envelope_size;
26088
26089 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26091
26092 fidl::encoding::encode_in_envelope_optional::<SrpServerHost, D>(
26097 self.host.as_ref().map(<SrpServerHost as fidl::encoding::ValueTypeMarker>::borrow),
26098 encoder,
26099 offset + cur_offset,
26100 depth,
26101 )?;
26102
26103 _prev_end_offset = cur_offset + envelope_size;
26104
26105 Ok(())
26106 }
26107 }
26108
26109 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SrpServerService {
26110 #[inline(always)]
26111 fn new_empty() -> Self {
26112 Self::default()
26113 }
26114
26115 unsafe fn decode(
26116 &mut self,
26117 decoder: &mut fidl::encoding::Decoder<'_, D>,
26118 offset: usize,
26119 mut depth: fidl::encoding::Depth,
26120 ) -> fidl::Result<()> {
26121 decoder.debug_check_bounds::<Self>(offset);
26122 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
26123 None => return Err(fidl::Error::NotNullable),
26124 Some(len) => len,
26125 };
26126 if len == 0 {
26128 return Ok(());
26129 };
26130 depth.increment()?;
26131 let envelope_size = 8;
26132 let bytes_len = len * envelope_size;
26133 let offset = decoder.out_of_line_offset(bytes_len)?;
26134 let mut _next_ordinal_to_read = 0;
26136 let mut next_offset = offset;
26137 let end_offset = offset + bytes_len;
26138 _next_ordinal_to_read += 1;
26139 if next_offset >= end_offset {
26140 return Ok(());
26141 }
26142
26143 while _next_ordinal_to_read < 1 {
26145 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26146 _next_ordinal_to_read += 1;
26147 next_offset += envelope_size;
26148 }
26149
26150 let next_out_of_line = decoder.next_out_of_line();
26151 let handles_before = decoder.remaining_handles();
26152 if let Some((inlined, num_bytes, num_handles)) =
26153 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26154 {
26155 let member_inline_size =
26156 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
26157 decoder.context,
26158 );
26159 if inlined != (member_inline_size <= 4) {
26160 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26161 }
26162 let inner_offset;
26163 let mut inner_depth = depth.clone();
26164 if inlined {
26165 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26166 inner_offset = next_offset;
26167 } else {
26168 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26169 inner_depth.increment()?;
26170 }
26171 let val_ref = self
26172 .instance_name
26173 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<255>, D));
26174 fidl::decode!(
26175 fidl::encoding::BoundedString<255>,
26176 D,
26177 val_ref,
26178 decoder,
26179 inner_offset,
26180 inner_depth
26181 )?;
26182 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26183 {
26184 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26185 }
26186 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26187 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26188 }
26189 }
26190
26191 next_offset += envelope_size;
26192 _next_ordinal_to_read += 1;
26193 if next_offset >= end_offset {
26194 return Ok(());
26195 }
26196
26197 while _next_ordinal_to_read < 2 {
26199 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26200 _next_ordinal_to_read += 1;
26201 next_offset += envelope_size;
26202 }
26203
26204 let next_out_of_line = decoder.next_out_of_line();
26205 let handles_before = decoder.remaining_handles();
26206 if let Some((inlined, num_bytes, num_handles)) =
26207 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26208 {
26209 let member_inline_size =
26210 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26211 if inlined != (member_inline_size <= 4) {
26212 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26213 }
26214 let inner_offset;
26215 let mut inner_depth = depth.clone();
26216 if inlined {
26217 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26218 inner_offset = next_offset;
26219 } else {
26220 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26221 inner_depth.increment()?;
26222 }
26223 let val_ref = self.deleted.get_or_insert_with(|| fidl::new_empty!(bool, D));
26224 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
26225 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26226 {
26227 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26228 }
26229 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26230 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26231 }
26232 }
26233
26234 next_offset += envelope_size;
26235 _next_ordinal_to_read += 1;
26236 if next_offset >= end_offset {
26237 return Ok(());
26238 }
26239
26240 while _next_ordinal_to_read < 3 {
26242 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26243 _next_ordinal_to_read += 1;
26244 next_offset += envelope_size;
26245 }
26246
26247 let next_out_of_line = decoder.next_out_of_line();
26248 let handles_before = decoder.remaining_handles();
26249 if let Some((inlined, num_bytes, num_handles)) =
26250 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26251 {
26252 let member_inline_size = <fidl::encoding::Vector<
26253 fidl::encoding::BoundedString<63>,
26254 6,
26255 > as fidl::encoding::TypeMarker>::inline_size(
26256 decoder.context
26257 );
26258 if inlined != (member_inline_size <= 4) {
26259 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26260 }
26261 let inner_offset;
26262 let mut inner_depth = depth.clone();
26263 if inlined {
26264 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26265 inner_offset = next_offset;
26266 } else {
26267 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26268 inner_depth.increment()?;
26269 }
26270 let val_ref = self.subtypes.get_or_insert_with(|| {
26271 fidl::new_empty!(
26272 fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 6>,
26273 D
26274 )
26275 });
26276 fidl::decode!(
26277 fidl::encoding::Vector<fidl::encoding::BoundedString<63>, 6>,
26278 D,
26279 val_ref,
26280 decoder,
26281 inner_offset,
26282 inner_depth
26283 )?;
26284 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26285 {
26286 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26287 }
26288 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26289 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26290 }
26291 }
26292
26293 next_offset += envelope_size;
26294 _next_ordinal_to_read += 1;
26295 if next_offset >= end_offset {
26296 return Ok(());
26297 }
26298
26299 while _next_ordinal_to_read < 4 {
26301 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26302 _next_ordinal_to_read += 1;
26303 next_offset += envelope_size;
26304 }
26305
26306 let next_out_of_line = decoder.next_out_of_line();
26307 let handles_before = decoder.remaining_handles();
26308 if let Some((inlined, num_bytes, num_handles)) =
26309 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26310 {
26311 let member_inline_size =
26312 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26313 if inlined != (member_inline_size <= 4) {
26314 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26315 }
26316 let inner_offset;
26317 let mut inner_depth = depth.clone();
26318 if inlined {
26319 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26320 inner_offset = next_offset;
26321 } else {
26322 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26323 inner_depth.increment()?;
26324 }
26325 let val_ref = self.port.get_or_insert_with(|| fidl::new_empty!(u16, D));
26326 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
26327 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26328 {
26329 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26330 }
26331 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26332 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26333 }
26334 }
26335
26336 next_offset += envelope_size;
26337 _next_ordinal_to_read += 1;
26338 if next_offset >= end_offset {
26339 return Ok(());
26340 }
26341
26342 while _next_ordinal_to_read < 5 {
26344 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26345 _next_ordinal_to_read += 1;
26346 next_offset += envelope_size;
26347 }
26348
26349 let next_out_of_line = decoder.next_out_of_line();
26350 let handles_before = decoder.remaining_handles();
26351 if let Some((inlined, num_bytes, num_handles)) =
26352 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26353 {
26354 let member_inline_size =
26355 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26356 if inlined != (member_inline_size <= 4) {
26357 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26358 }
26359 let inner_offset;
26360 let mut inner_depth = depth.clone();
26361 if inlined {
26362 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26363 inner_offset = next_offset;
26364 } else {
26365 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26366 inner_depth.increment()?;
26367 }
26368 let val_ref = self.priority.get_or_insert_with(|| fidl::new_empty!(u16, D));
26369 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
26370 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26371 {
26372 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26373 }
26374 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26375 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26376 }
26377 }
26378
26379 next_offset += envelope_size;
26380 _next_ordinal_to_read += 1;
26381 if next_offset >= end_offset {
26382 return Ok(());
26383 }
26384
26385 while _next_ordinal_to_read < 6 {
26387 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26388 _next_ordinal_to_read += 1;
26389 next_offset += envelope_size;
26390 }
26391
26392 let next_out_of_line = decoder.next_out_of_line();
26393 let handles_before = decoder.remaining_handles();
26394 if let Some((inlined, num_bytes, num_handles)) =
26395 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26396 {
26397 let member_inline_size =
26398 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26399 if inlined != (member_inline_size <= 4) {
26400 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26401 }
26402 let inner_offset;
26403 let mut inner_depth = depth.clone();
26404 if inlined {
26405 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26406 inner_offset = next_offset;
26407 } else {
26408 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26409 inner_depth.increment()?;
26410 }
26411 let val_ref = self.weight.get_or_insert_with(|| fidl::new_empty!(u16, D));
26412 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
26413 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26414 {
26415 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26416 }
26417 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26418 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26419 }
26420 }
26421
26422 next_offset += envelope_size;
26423 _next_ordinal_to_read += 1;
26424 if next_offset >= end_offset {
26425 return Ok(());
26426 }
26427
26428 while _next_ordinal_to_read < 7 {
26430 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26431 _next_ordinal_to_read += 1;
26432 next_offset += envelope_size;
26433 }
26434
26435 let next_out_of_line = decoder.next_out_of_line();
26436 let handles_before = decoder.remaining_handles();
26437 if let Some((inlined, num_bytes, num_handles)) =
26438 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26439 {
26440 let member_inline_size =
26441 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26442 if inlined != (member_inline_size <= 4) {
26443 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26444 }
26445 let inner_offset;
26446 let mut inner_depth = depth.clone();
26447 if inlined {
26448 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26449 inner_offset = next_offset;
26450 } else {
26451 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26452 inner_depth.increment()?;
26453 }
26454 let val_ref = self.ttl.get_or_insert_with(|| fidl::new_empty!(i64, D));
26455 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
26456 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26457 {
26458 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26459 }
26460 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26461 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26462 }
26463 }
26464
26465 next_offset += envelope_size;
26466 _next_ordinal_to_read += 1;
26467 if next_offset >= end_offset {
26468 return Ok(());
26469 }
26470
26471 while _next_ordinal_to_read < 8 {
26473 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26474 _next_ordinal_to_read += 1;
26475 next_offset += envelope_size;
26476 }
26477
26478 let next_out_of_line = decoder.next_out_of_line();
26479 let handles_before = decoder.remaining_handles();
26480 if let Some((inlined, num_bytes, num_handles)) =
26481 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26482 {
26483 let member_inline_size =
26484 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26485 if inlined != (member_inline_size <= 4) {
26486 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26487 }
26488 let inner_offset;
26489 let mut inner_depth = depth.clone();
26490 if inlined {
26491 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26492 inner_offset = next_offset;
26493 } else {
26494 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26495 inner_depth.increment()?;
26496 }
26497 let val_ref = self.lease.get_or_insert_with(|| fidl::new_empty!(i64, D));
26498 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
26499 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26500 {
26501 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26502 }
26503 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26504 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26505 }
26506 }
26507
26508 next_offset += envelope_size;
26509 _next_ordinal_to_read += 1;
26510 if next_offset >= end_offset {
26511 return Ok(());
26512 }
26513
26514 while _next_ordinal_to_read < 9 {
26516 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26517 _next_ordinal_to_read += 1;
26518 next_offset += envelope_size;
26519 }
26520
26521 let next_out_of_line = decoder.next_out_of_line();
26522 let handles_before = decoder.remaining_handles();
26523 if let Some((inlined, num_bytes, num_handles)) =
26524 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26525 {
26526 let member_inline_size =
26527 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26528 if inlined != (member_inline_size <= 4) {
26529 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26530 }
26531 let inner_offset;
26532 let mut inner_depth = depth.clone();
26533 if inlined {
26534 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26535 inner_offset = next_offset;
26536 } else {
26537 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26538 inner_depth.increment()?;
26539 }
26540 let val_ref = self.key_lease.get_or_insert_with(|| fidl::new_empty!(i64, D));
26541 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
26542 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26543 {
26544 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26545 }
26546 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26547 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26548 }
26549 }
26550
26551 next_offset += envelope_size;
26552 _next_ordinal_to_read += 1;
26553 if next_offset >= end_offset {
26554 return Ok(());
26555 }
26556
26557 while _next_ordinal_to_read < 10 {
26559 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26560 _next_ordinal_to_read += 1;
26561 next_offset += envelope_size;
26562 }
26563
26564 let next_out_of_line = decoder.next_out_of_line();
26565 let handles_before = decoder.remaining_handles();
26566 if let Some((inlined, num_bytes, num_handles)) =
26567 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26568 {
26569 let member_inline_size = <fidl::encoding::UnboundedVector<DnsTxtEntry> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26570 if inlined != (member_inline_size <= 4) {
26571 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26572 }
26573 let inner_offset;
26574 let mut inner_depth = depth.clone();
26575 if inlined {
26576 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26577 inner_offset = next_offset;
26578 } else {
26579 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26580 inner_depth.increment()?;
26581 }
26582 let val_ref = self.txt_data.get_or_insert_with(|| {
26583 fidl::new_empty!(fidl::encoding::UnboundedVector<DnsTxtEntry>, D)
26584 });
26585 fidl::decode!(
26586 fidl::encoding::UnboundedVector<DnsTxtEntry>,
26587 D,
26588 val_ref,
26589 decoder,
26590 inner_offset,
26591 inner_depth
26592 )?;
26593 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26594 {
26595 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26596 }
26597 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26598 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26599 }
26600 }
26601
26602 next_offset += envelope_size;
26603 _next_ordinal_to_read += 1;
26604 if next_offset >= end_offset {
26605 return Ok(());
26606 }
26607
26608 while _next_ordinal_to_read < 11 {
26610 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26611 _next_ordinal_to_read += 1;
26612 next_offset += envelope_size;
26613 }
26614
26615 let next_out_of_line = decoder.next_out_of_line();
26616 let handles_before = decoder.remaining_handles();
26617 if let Some((inlined, num_bytes, num_handles)) =
26618 fidl::encoding::decode_envelope_header(decoder, next_offset)?
26619 {
26620 let member_inline_size =
26621 <SrpServerHost as fidl::encoding::TypeMarker>::inline_size(decoder.context);
26622 if inlined != (member_inline_size <= 4) {
26623 return Err(fidl::Error::InvalidInlineBitInEnvelope);
26624 }
26625 let inner_offset;
26626 let mut inner_depth = depth.clone();
26627 if inlined {
26628 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
26629 inner_offset = next_offset;
26630 } else {
26631 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
26632 inner_depth.increment()?;
26633 }
26634 let val_ref = self.host.get_or_insert_with(|| fidl::new_empty!(SrpServerHost, D));
26635 fidl::decode!(SrpServerHost, D, val_ref, decoder, inner_offset, inner_depth)?;
26636 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
26637 {
26638 return Err(fidl::Error::InvalidNumBytesInEnvelope);
26639 }
26640 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
26641 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
26642 }
26643 }
26644
26645 next_offset += envelope_size;
26646
26647 while next_offset < end_offset {
26649 _next_ordinal_to_read += 1;
26650 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
26651 next_offset += envelope_size;
26652 }
26653
26654 Ok(())
26655 }
26656 }
26657
26658 impl Telemetry {
26659 #[inline(always)]
26660 fn max_ordinal_present(&self) -> u64 {
26661 if let Some(_) = self.cca_threshold {
26662 return 41;
26663 }
26664 if let Some(_) = self.eid_cache_entries {
26665 return 40;
26666 }
26667 if let Some(_) = self.netstat {
26668 return 39;
26669 }
26670 if let Some(_) = self.border_routing_rdnsses {
26671 return 38;
26672 }
26673 if let Some(_) = self.border_routing_prefixes {
26674 return 37;
26675 }
26676 if let Some(_) = self.ipmaddrs {
26677 return 36;
26678 }
26679 if let Some(_) = self.ipaddrs {
26680 return 35;
26681 }
26682 if let Some(_) = self.history_report {
26683 return 34;
26684 }
26685 if let Some(_) = self.network_data {
26686 return 33;
26687 }
26688 if let Some(_) = self.router_info {
26689 return 32;
26690 }
26691 if let Some(_) = self.multiradio_neighbor_info {
26692 return 31;
26693 }
26694 if let Some(_) = self.active_dataset {
26695 return 30;
26696 }
26697 if let Some(_) = self.border_routing_routers {
26698 return 29;
26699 }
26700 if let Some(_) = self.border_routing_peers {
26701 return 28;
26702 }
26703 if let Some(_) = self.extended_pan_id {
26704 return 27;
26705 }
26706 if let Some(_) = self.multi_ail_detected {
26707 return 26;
26708 }
26709 if let Some(_) = self.border_agent_counters {
26710 return 25;
26711 }
26712 if let Some(_) = self.link_metrics_entries {
26713 return 24;
26714 }
26715 if let Some(_) = self.dhcp6pd_info {
26716 return 23;
26717 }
26718 if let Some(_) = self.upstream_dns_info {
26719 return 22;
26720 }
26721 if let Some(_) = self.trel_peers_info {
26722 return 21;
26723 }
26724 if let Some(_) = self.trel_counters {
26725 return 20;
26726 }
26727 if let Some(_) = self.nat64_info {
26728 return 19;
26729 }
26730 if let Some(_) = self.uptime {
26731 return 18;
26732 }
26733 if let Some(_) = self.leader_data {
26734 return 17;
26735 }
26736 if let Some(_) = self.dnssd_counters {
26737 return 16;
26738 }
26739 if let Some(_) = self.srp_server_info {
26740 return 15;
26741 }
26742 if let Some(_) = self.thread_border_routing_counters {
26743 return 14;
26744 }
26745 if let Some(_) = self.thread_stable_network_data {
26746 return 13;
26747 }
26748 if let Some(_) = self.thread_network_data {
26749 return 12;
26750 }
26751 if let Some(_) = self.thread_stable_network_data_version {
26752 return 11;
26753 }
26754 if let Some(_) = self.thread_network_data_version {
26755 return 10;
26756 }
26757 if let Some(_) = self.thread_rloc {
26758 return 9;
26759 }
26760 if let Some(_) = self.thread_router_id {
26761 return 8;
26762 }
26763 if let Some(_) = self.thread_link_mode {
26764 return 7;
26765 }
26766 if let Some(_) = self.rcp_version {
26767 return 6;
26768 }
26769 if let Some(_) = self.stack_version {
26770 return 5;
26771 }
26772 if let Some(_) = self.partition_id {
26773 return 4;
26774 }
26775 if let Some(_) = self.channel_index {
26776 return 3;
26777 }
26778 if let Some(_) = self.tx_power {
26779 return 2;
26780 }
26781 if let Some(_) = self.rssi {
26782 return 1;
26783 }
26784 0
26785 }
26786 }
26787
26788 impl fidl::encoding::ValueTypeMarker for Telemetry {
26789 type Borrowed<'a> = &'a Self;
26790 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
26791 value
26792 }
26793 }
26794
26795 unsafe impl fidl::encoding::TypeMarker for Telemetry {
26796 type Owned = Self;
26797
26798 #[inline(always)]
26799 fn inline_align(_context: fidl::encoding::Context) -> usize {
26800 8
26801 }
26802
26803 #[inline(always)]
26804 fn inline_size(_context: fidl::encoding::Context) -> usize {
26805 16
26806 }
26807 }
26808
26809 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Telemetry, D>
26810 for &Telemetry
26811 {
26812 unsafe fn encode(
26813 self,
26814 encoder: &mut fidl::encoding::Encoder<'_, D>,
26815 offset: usize,
26816 mut depth: fidl::encoding::Depth,
26817 ) -> fidl::Result<()> {
26818 encoder.debug_check_bounds::<Telemetry>(offset);
26819 let max_ordinal: u64 = self.max_ordinal_present();
26821 encoder.write_num(max_ordinal, offset);
26822 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
26823 if max_ordinal == 0 {
26825 return Ok(());
26826 }
26827 depth.increment()?;
26828 let envelope_size = 8;
26829 let bytes_len = max_ordinal as usize * envelope_size;
26830 #[allow(unused_variables)]
26831 let offset = encoder.out_of_line_offset(bytes_len);
26832 let mut _prev_end_offset: usize = 0;
26833 if 1 > max_ordinal {
26834 return Ok(());
26835 }
26836
26837 let cur_offset: usize = (1 - 1) * envelope_size;
26840
26841 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26843
26844 fidl::encoding::encode_in_envelope_optional::<i8, D>(
26849 self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
26850 encoder,
26851 offset + cur_offset,
26852 depth,
26853 )?;
26854
26855 _prev_end_offset = cur_offset + envelope_size;
26856 if 2 > max_ordinal {
26857 return Ok(());
26858 }
26859
26860 let cur_offset: usize = (2 - 1) * envelope_size;
26863
26864 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26866
26867 fidl::encoding::encode_in_envelope_optional::<i8, D>(
26872 self.tx_power.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
26873 encoder,
26874 offset + cur_offset,
26875 depth,
26876 )?;
26877
26878 _prev_end_offset = cur_offset + envelope_size;
26879 if 3 > max_ordinal {
26880 return Ok(());
26881 }
26882
26883 let cur_offset: usize = (3 - 1) * envelope_size;
26886
26887 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26889
26890 fidl::encoding::encode_in_envelope_optional::<u16, D>(
26895 self.channel_index.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
26896 encoder,
26897 offset + cur_offset,
26898 depth,
26899 )?;
26900
26901 _prev_end_offset = cur_offset + envelope_size;
26902 if 4 > max_ordinal {
26903 return Ok(());
26904 }
26905
26906 let cur_offset: usize = (4 - 1) * envelope_size;
26909
26910 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26912
26913 fidl::encoding::encode_in_envelope_optional::<u32, D>(
26918 self.partition_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
26919 encoder,
26920 offset + cur_offset,
26921 depth,
26922 )?;
26923
26924 _prev_end_offset = cur_offset + envelope_size;
26925 if 5 > max_ordinal {
26926 return Ok(());
26927 }
26928
26929 let cur_offset: usize = (5 - 1) * envelope_size;
26932
26933 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26935
26936 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
26941 self.stack_version.as_ref().map(
26942 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
26943 ),
26944 encoder,
26945 offset + cur_offset,
26946 depth,
26947 )?;
26948
26949 _prev_end_offset = cur_offset + envelope_size;
26950 if 6 > max_ordinal {
26951 return Ok(());
26952 }
26953
26954 let cur_offset: usize = (6 - 1) * envelope_size;
26957
26958 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26960
26961 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
26966 self.rcp_version.as_ref().map(
26967 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
26968 ),
26969 encoder,
26970 offset + cur_offset,
26971 depth,
26972 )?;
26973
26974 _prev_end_offset = cur_offset + envelope_size;
26975 if 7 > max_ordinal {
26976 return Ok(());
26977 }
26978
26979 let cur_offset: usize = (7 - 1) * envelope_size;
26982
26983 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
26985
26986 fidl::encoding::encode_in_envelope_optional::<u8, D>(
26991 self.thread_link_mode.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
26992 encoder,
26993 offset + cur_offset,
26994 depth,
26995 )?;
26996
26997 _prev_end_offset = cur_offset + envelope_size;
26998 if 8 > max_ordinal {
26999 return Ok(());
27000 }
27001
27002 let cur_offset: usize = (8 - 1) * envelope_size;
27005
27006 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27008
27009 fidl::encoding::encode_in_envelope_optional::<u8, D>(
27014 self.thread_router_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
27015 encoder,
27016 offset + cur_offset,
27017 depth,
27018 )?;
27019
27020 _prev_end_offset = cur_offset + envelope_size;
27021 if 9 > max_ordinal {
27022 return Ok(());
27023 }
27024
27025 let cur_offset: usize = (9 - 1) * envelope_size;
27028
27029 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27031
27032 fidl::encoding::encode_in_envelope_optional::<u16, D>(
27037 self.thread_rloc.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
27038 encoder,
27039 offset + cur_offset,
27040 depth,
27041 )?;
27042
27043 _prev_end_offset = cur_offset + envelope_size;
27044 if 10 > max_ordinal {
27045 return Ok(());
27046 }
27047
27048 let cur_offset: usize = (10 - 1) * envelope_size;
27051
27052 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27054
27055 fidl::encoding::encode_in_envelope_optional::<u8, D>(
27060 self.thread_network_data_version
27061 .as_ref()
27062 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
27063 encoder,
27064 offset + cur_offset,
27065 depth,
27066 )?;
27067
27068 _prev_end_offset = cur_offset + envelope_size;
27069 if 11 > max_ordinal {
27070 return Ok(());
27071 }
27072
27073 let cur_offset: usize = (11 - 1) * envelope_size;
27076
27077 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27079
27080 fidl::encoding::encode_in_envelope_optional::<u8, D>(
27085 self.thread_stable_network_data_version
27086 .as_ref()
27087 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
27088 encoder,
27089 offset + cur_offset,
27090 depth,
27091 )?;
27092
27093 _prev_end_offset = cur_offset + envelope_size;
27094 if 12 > max_ordinal {
27095 return Ok(());
27096 }
27097
27098 let cur_offset: usize = (12 - 1) * envelope_size;
27101
27102 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27104
27105 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 255>, D>(
27110 self.thread_network_data.as_ref().map(
27111 <fidl::encoding::Vector<u8, 255> as fidl::encoding::ValueTypeMarker>::borrow,
27112 ),
27113 encoder,
27114 offset + cur_offset,
27115 depth,
27116 )?;
27117
27118 _prev_end_offset = cur_offset + envelope_size;
27119 if 13 > max_ordinal {
27120 return Ok(());
27121 }
27122
27123 let cur_offset: usize = (13 - 1) * envelope_size;
27126
27127 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27129
27130 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 255>, D>(
27135 self.thread_stable_network_data.as_ref().map(
27136 <fidl::encoding::Vector<u8, 255> as fidl::encoding::ValueTypeMarker>::borrow,
27137 ),
27138 encoder,
27139 offset + cur_offset,
27140 depth,
27141 )?;
27142
27143 _prev_end_offset = cur_offset + envelope_size;
27144 if 14 > max_ordinal {
27145 return Ok(());
27146 }
27147
27148 let cur_offset: usize = (14 - 1) * envelope_size;
27151
27152 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27154
27155 fidl::encoding::encode_in_envelope_optional::<BorderRoutingCounters, D>(
27160 self.thread_border_routing_counters
27161 .as_ref()
27162 .map(<BorderRoutingCounters as fidl::encoding::ValueTypeMarker>::borrow),
27163 encoder,
27164 offset + cur_offset,
27165 depth,
27166 )?;
27167
27168 _prev_end_offset = cur_offset + envelope_size;
27169 if 15 > max_ordinal {
27170 return Ok(());
27171 }
27172
27173 let cur_offset: usize = (15 - 1) * envelope_size;
27176
27177 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27179
27180 fidl::encoding::encode_in_envelope_optional::<SrpServerInfo, D>(
27185 self.srp_server_info
27186 .as_ref()
27187 .map(<SrpServerInfo as fidl::encoding::ValueTypeMarker>::borrow),
27188 encoder,
27189 offset + cur_offset,
27190 depth,
27191 )?;
27192
27193 _prev_end_offset = cur_offset + envelope_size;
27194 if 16 > max_ordinal {
27195 return Ok(());
27196 }
27197
27198 let cur_offset: usize = (16 - 1) * envelope_size;
27201
27202 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27204
27205 fidl::encoding::encode_in_envelope_optional::<DnssdCounters, D>(
27210 self.dnssd_counters
27211 .as_ref()
27212 .map(<DnssdCounters as fidl::encoding::ValueTypeMarker>::borrow),
27213 encoder,
27214 offset + cur_offset,
27215 depth,
27216 )?;
27217
27218 _prev_end_offset = cur_offset + envelope_size;
27219 if 17 > max_ordinal {
27220 return Ok(());
27221 }
27222
27223 let cur_offset: usize = (17 - 1) * envelope_size;
27226
27227 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27229
27230 fidl::encoding::encode_in_envelope_optional::<LeaderData, D>(
27235 self.leader_data
27236 .as_ref()
27237 .map(<LeaderData as fidl::encoding::ValueTypeMarker>::borrow),
27238 encoder,
27239 offset + cur_offset,
27240 depth,
27241 )?;
27242
27243 _prev_end_offset = cur_offset + envelope_size;
27244 if 18 > max_ordinal {
27245 return Ok(());
27246 }
27247
27248 let cur_offset: usize = (18 - 1) * envelope_size;
27251
27252 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27254
27255 fidl::encoding::encode_in_envelope_optional::<i64, D>(
27260 self.uptime.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
27261 encoder,
27262 offset + cur_offset,
27263 depth,
27264 )?;
27265
27266 _prev_end_offset = cur_offset + envelope_size;
27267 if 19 > max_ordinal {
27268 return Ok(());
27269 }
27270
27271 let cur_offset: usize = (19 - 1) * envelope_size;
27274
27275 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27277
27278 fidl::encoding::encode_in_envelope_optional::<Nat64Info, D>(
27283 self.nat64_info
27284 .as_ref()
27285 .map(<Nat64Info as fidl::encoding::ValueTypeMarker>::borrow),
27286 encoder,
27287 offset + cur_offset,
27288 depth,
27289 )?;
27290
27291 _prev_end_offset = cur_offset + envelope_size;
27292 if 20 > max_ordinal {
27293 return Ok(());
27294 }
27295
27296 let cur_offset: usize = (20 - 1) * envelope_size;
27299
27300 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27302
27303 fidl::encoding::encode_in_envelope_optional::<TrelCounters, D>(
27308 self.trel_counters
27309 .as_ref()
27310 .map(<TrelCounters as fidl::encoding::ValueTypeMarker>::borrow),
27311 encoder,
27312 offset + cur_offset,
27313 depth,
27314 )?;
27315
27316 _prev_end_offset = cur_offset + envelope_size;
27317 if 21 > max_ordinal {
27318 return Ok(());
27319 }
27320
27321 let cur_offset: usize = (21 - 1) * envelope_size;
27324
27325 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27327
27328 fidl::encoding::encode_in_envelope_optional::<TrelPeersInfo, D>(
27333 self.trel_peers_info
27334 .as_ref()
27335 .map(<TrelPeersInfo as fidl::encoding::ValueTypeMarker>::borrow),
27336 encoder,
27337 offset + cur_offset,
27338 depth,
27339 )?;
27340
27341 _prev_end_offset = cur_offset + envelope_size;
27342 if 22 > max_ordinal {
27343 return Ok(());
27344 }
27345
27346 let cur_offset: usize = (22 - 1) * envelope_size;
27349
27350 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27352
27353 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsInfo, D>(
27358 self.upstream_dns_info
27359 .as_ref()
27360 .map(<UpstreamDnsInfo as fidl::encoding::ValueTypeMarker>::borrow),
27361 encoder,
27362 offset + cur_offset,
27363 depth,
27364 )?;
27365
27366 _prev_end_offset = cur_offset + envelope_size;
27367 if 23 > max_ordinal {
27368 return Ok(());
27369 }
27370
27371 let cur_offset: usize = (23 - 1) * envelope_size;
27374
27375 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27377
27378 fidl::encoding::encode_in_envelope_optional::<Dhcp6PdInfo, D>(
27383 self.dhcp6pd_info
27384 .as_ref()
27385 .map(<Dhcp6PdInfo as fidl::encoding::ValueTypeMarker>::borrow),
27386 encoder,
27387 offset + cur_offset,
27388 depth,
27389 )?;
27390
27391 _prev_end_offset = cur_offset + envelope_size;
27392 if 24 > max_ordinal {
27393 return Ok(());
27394 }
27395
27396 let cur_offset: usize = (24 - 1) * envelope_size;
27399
27400 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27402
27403 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<LinkMetricsEntry, 64>, D>(
27408 self.link_metrics_entries.as_ref().map(<fidl::encoding::Vector<LinkMetricsEntry, 64> as fidl::encoding::ValueTypeMarker>::borrow),
27409 encoder, offset + cur_offset, depth
27410 )?;
27411
27412 _prev_end_offset = cur_offset + envelope_size;
27413 if 25 > max_ordinal {
27414 return Ok(());
27415 }
27416
27417 let cur_offset: usize = (25 - 1) * envelope_size;
27420
27421 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27423
27424 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan_device_common::BorderAgentCounters, D>(
27429 self.border_agent_counters.as_ref().map(<fidl_fuchsia_lowpan_device_common::BorderAgentCounters as fidl::encoding::ValueTypeMarker>::borrow),
27430 encoder, offset + cur_offset, depth
27431 )?;
27432
27433 _prev_end_offset = cur_offset + envelope_size;
27434 if 26 > max_ordinal {
27435 return Ok(());
27436 }
27437
27438 let cur_offset: usize = (26 - 1) * envelope_size;
27441
27442 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27444
27445 fidl::encoding::encode_in_envelope_optional::<bool, D>(
27450 self.multi_ail_detected
27451 .as_ref()
27452 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
27453 encoder,
27454 offset + cur_offset,
27455 depth,
27456 )?;
27457
27458 _prev_end_offset = cur_offset + envelope_size;
27459 if 27 > max_ordinal {
27460 return Ok(());
27461 }
27462
27463 let cur_offset: usize = (27 - 1) * envelope_size;
27466
27467 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27469
27470 fidl::encoding::encode_in_envelope_optional::<u64, D>(
27475 self.extended_pan_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
27476 encoder,
27477 offset + cur_offset,
27478 depth,
27479 )?;
27480
27481 _prev_end_offset = cur_offset + envelope_size;
27482 if 28 > max_ordinal {
27483 return Ok(());
27484 }
27485
27486 let cur_offset: usize = (28 - 1) * envelope_size;
27489
27490 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27492
27493 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BorderRoutingPeer, 64>, D>(
27498 self.border_routing_peers.as_ref().map(<fidl::encoding::Vector<BorderRoutingPeer, 64> as fidl::encoding::ValueTypeMarker>::borrow),
27499 encoder, offset + cur_offset, depth
27500 )?;
27501
27502 _prev_end_offset = cur_offset + envelope_size;
27503 if 29 > max_ordinal {
27504 return Ok(());
27505 }
27506
27507 let cur_offset: usize = (29 - 1) * envelope_size;
27510
27511 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27513
27514 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BorderRoutingRouter, 64>, D>(
27519 self.border_routing_routers.as_ref().map(<fidl::encoding::Vector<BorderRoutingRouter, 64> as fidl::encoding::ValueTypeMarker>::borrow),
27520 encoder, offset + cur_offset, depth
27521 )?;
27522
27523 _prev_end_offset = cur_offset + envelope_size;
27524 if 30 > max_ordinal {
27525 return Ok(());
27526 }
27527
27528 let cur_offset: usize = (30 - 1) * envelope_size;
27531
27532 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27534
27535 fidl::encoding::encode_in_envelope_optional::<OperationalDataset, D>(
27540 self.active_dataset
27541 .as_ref()
27542 .map(<OperationalDataset as fidl::encoding::ValueTypeMarker>::borrow),
27543 encoder,
27544 offset + cur_offset,
27545 depth,
27546 )?;
27547
27548 _prev_end_offset = cur_offset + envelope_size;
27549 if 31 > max_ordinal {
27550 return Ok(());
27551 }
27552
27553 let cur_offset: usize = (31 - 1) * envelope_size;
27556
27557 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27559
27560 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<MultiRadioNeighborInfo, 64>, D>(
27565 self.multiradio_neighbor_info.as_ref().map(<fidl::encoding::Vector<MultiRadioNeighborInfo, 64> as fidl::encoding::ValueTypeMarker>::borrow),
27566 encoder, offset + cur_offset, depth
27567 )?;
27568
27569 _prev_end_offset = cur_offset + envelope_size;
27570 if 32 > max_ordinal {
27571 return Ok(());
27572 }
27573
27574 let cur_offset: usize = (32 - 1) * envelope_size;
27577
27578 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27580
27581 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<RouterInfo, 64>, D>(
27586 self.router_info.as_ref().map(<fidl::encoding::Vector<RouterInfo, 64> as fidl::encoding::ValueTypeMarker>::borrow),
27587 encoder, offset + cur_offset, depth
27588 )?;
27589
27590 _prev_end_offset = cur_offset + envelope_size;
27591 if 33 > max_ordinal {
27592 return Ok(());
27593 }
27594
27595 let cur_offset: usize = (33 - 1) * envelope_size;
27598
27599 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27601
27602 fidl::encoding::encode_in_envelope_optional::<NetworkData, D>(
27607 self.network_data
27608 .as_ref()
27609 .map(<NetworkData as fidl::encoding::ValueTypeMarker>::borrow),
27610 encoder,
27611 offset + cur_offset,
27612 depth,
27613 )?;
27614
27615 _prev_end_offset = cur_offset + envelope_size;
27616 if 34 > max_ordinal {
27617 return Ok(());
27618 }
27619
27620 let cur_offset: usize = (34 - 1) * envelope_size;
27623
27624 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27626
27627 fidl::encoding::encode_in_envelope_optional::<ThreadHistoryReport, D>(
27632 self.history_report
27633 .as_ref()
27634 .map(<ThreadHistoryReport as fidl::encoding::ValueTypeMarker>::borrow),
27635 encoder,
27636 offset + cur_offset,
27637 depth,
27638 )?;
27639
27640 _prev_end_offset = cur_offset + envelope_size;
27641 if 35 > max_ordinal {
27642 return Ok(());
27643 }
27644
27645 let cur_offset: usize = (35 - 1) * envelope_size;
27648
27649 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27651
27652 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NetifAddress, 32>, D>(
27657 self.ipaddrs.as_ref().map(<fidl::encoding::Vector<NetifAddress, 32> as fidl::encoding::ValueTypeMarker>::borrow),
27658 encoder, offset + cur_offset, depth
27659 )?;
27660
27661 _prev_end_offset = cur_offset + envelope_size;
27662 if 36 > max_ordinal {
27663 return Ok(());
27664 }
27665
27666 let cur_offset: usize = (36 - 1) * envelope_size;
27669
27670 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27672
27673 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv6Address, 32>, D>(
27678 self.ipmaddrs.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv6Address, 32> as fidl::encoding::ValueTypeMarker>::borrow),
27679 encoder, offset + cur_offset, depth
27680 )?;
27681
27682 _prev_end_offset = cur_offset + envelope_size;
27683 if 37 > max_ordinal {
27684 return Ok(());
27685 }
27686
27687 let cur_offset: usize = (37 - 1) * envelope_size;
27690
27691 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27693
27694 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BorderRoutingPrefixTable, 64>, D>(
27699 self.border_routing_prefixes.as_ref().map(<fidl::encoding::Vector<BorderRoutingPrefixTable, 64> as fidl::encoding::ValueTypeMarker>::borrow),
27700 encoder, offset + cur_offset, depth
27701 )?;
27702
27703 _prev_end_offset = cur_offset + envelope_size;
27704 if 38 > max_ordinal {
27705 return Ok(());
27706 }
27707
27708 let cur_offset: usize = (38 - 1) * envelope_size;
27711
27712 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27714
27715 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BorderRoutingRdnss, 64>, D>(
27720 self.border_routing_rdnsses.as_ref().map(<fidl::encoding::Vector<BorderRoutingRdnss, 64> as fidl::encoding::ValueTypeMarker>::borrow),
27721 encoder, offset + cur_offset, depth
27722 )?;
27723
27724 _prev_end_offset = cur_offset + envelope_size;
27725 if 39 > max_ordinal {
27726 return Ok(());
27727 }
27728
27729 let cur_offset: usize = (39 - 1) * envelope_size;
27732
27733 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27735
27736 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<UdpSocket, 32>, D>(
27741 self.netstat.as_ref().map(<fidl::encoding::Vector<UdpSocket, 32> as fidl::encoding::ValueTypeMarker>::borrow),
27742 encoder, offset + cur_offset, depth
27743 )?;
27744
27745 _prev_end_offset = cur_offset + envelope_size;
27746 if 40 > max_ordinal {
27747 return Ok(());
27748 }
27749
27750 let cur_offset: usize = (40 - 1) * envelope_size;
27753
27754 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27756
27757 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<EidCacheEntry, 64>, D>(
27762 self.eid_cache_entries.as_ref().map(<fidl::encoding::Vector<EidCacheEntry, 64> as fidl::encoding::ValueTypeMarker>::borrow),
27763 encoder, offset + cur_offset, depth
27764 )?;
27765
27766 _prev_end_offset = cur_offset + envelope_size;
27767 if 41 > max_ordinal {
27768 return Ok(());
27769 }
27770
27771 let cur_offset: usize = (41 - 1) * envelope_size;
27774
27775 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
27777
27778 fidl::encoding::encode_in_envelope_optional::<i8, D>(
27783 self.cca_threshold.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
27784 encoder,
27785 offset + cur_offset,
27786 depth,
27787 )?;
27788
27789 _prev_end_offset = cur_offset + envelope_size;
27790
27791 Ok(())
27792 }
27793 }
27794
27795 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Telemetry {
27796 #[inline(always)]
27797 fn new_empty() -> Self {
27798 Self::default()
27799 }
27800
27801 unsafe fn decode(
27802 &mut self,
27803 decoder: &mut fidl::encoding::Decoder<'_, D>,
27804 offset: usize,
27805 mut depth: fidl::encoding::Depth,
27806 ) -> fidl::Result<()> {
27807 decoder.debug_check_bounds::<Self>(offset);
27808 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
27809 None => return Err(fidl::Error::NotNullable),
27810 Some(len) => len,
27811 };
27812 if len == 0 {
27814 return Ok(());
27815 };
27816 depth.increment()?;
27817 let envelope_size = 8;
27818 let bytes_len = len * envelope_size;
27819 let offset = decoder.out_of_line_offset(bytes_len)?;
27820 let mut _next_ordinal_to_read = 0;
27822 let mut next_offset = offset;
27823 let end_offset = offset + bytes_len;
27824 _next_ordinal_to_read += 1;
27825 if next_offset >= end_offset {
27826 return Ok(());
27827 }
27828
27829 while _next_ordinal_to_read < 1 {
27831 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
27832 _next_ordinal_to_read += 1;
27833 next_offset += envelope_size;
27834 }
27835
27836 let next_out_of_line = decoder.next_out_of_line();
27837 let handles_before = decoder.remaining_handles();
27838 if let Some((inlined, num_bytes, num_handles)) =
27839 fidl::encoding::decode_envelope_header(decoder, next_offset)?
27840 {
27841 let member_inline_size =
27842 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
27843 if inlined != (member_inline_size <= 4) {
27844 return Err(fidl::Error::InvalidInlineBitInEnvelope);
27845 }
27846 let inner_offset;
27847 let mut inner_depth = depth.clone();
27848 if inlined {
27849 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
27850 inner_offset = next_offset;
27851 } else {
27852 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27853 inner_depth.increment()?;
27854 }
27855 let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
27856 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
27857 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
27858 {
27859 return Err(fidl::Error::InvalidNumBytesInEnvelope);
27860 }
27861 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27862 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27863 }
27864 }
27865
27866 next_offset += envelope_size;
27867 _next_ordinal_to_read += 1;
27868 if next_offset >= end_offset {
27869 return Ok(());
27870 }
27871
27872 while _next_ordinal_to_read < 2 {
27874 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
27875 _next_ordinal_to_read += 1;
27876 next_offset += envelope_size;
27877 }
27878
27879 let next_out_of_line = decoder.next_out_of_line();
27880 let handles_before = decoder.remaining_handles();
27881 if let Some((inlined, num_bytes, num_handles)) =
27882 fidl::encoding::decode_envelope_header(decoder, next_offset)?
27883 {
27884 let member_inline_size =
27885 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
27886 if inlined != (member_inline_size <= 4) {
27887 return Err(fidl::Error::InvalidInlineBitInEnvelope);
27888 }
27889 let inner_offset;
27890 let mut inner_depth = depth.clone();
27891 if inlined {
27892 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
27893 inner_offset = next_offset;
27894 } else {
27895 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27896 inner_depth.increment()?;
27897 }
27898 let val_ref = self.tx_power.get_or_insert_with(|| fidl::new_empty!(i8, D));
27899 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
27900 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
27901 {
27902 return Err(fidl::Error::InvalidNumBytesInEnvelope);
27903 }
27904 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27905 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27906 }
27907 }
27908
27909 next_offset += envelope_size;
27910 _next_ordinal_to_read += 1;
27911 if next_offset >= end_offset {
27912 return Ok(());
27913 }
27914
27915 while _next_ordinal_to_read < 3 {
27917 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
27918 _next_ordinal_to_read += 1;
27919 next_offset += envelope_size;
27920 }
27921
27922 let next_out_of_line = decoder.next_out_of_line();
27923 let handles_before = decoder.remaining_handles();
27924 if let Some((inlined, num_bytes, num_handles)) =
27925 fidl::encoding::decode_envelope_header(decoder, next_offset)?
27926 {
27927 let member_inline_size =
27928 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
27929 if inlined != (member_inline_size <= 4) {
27930 return Err(fidl::Error::InvalidInlineBitInEnvelope);
27931 }
27932 let inner_offset;
27933 let mut inner_depth = depth.clone();
27934 if inlined {
27935 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
27936 inner_offset = next_offset;
27937 } else {
27938 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27939 inner_depth.increment()?;
27940 }
27941 let val_ref = self.channel_index.get_or_insert_with(|| fidl::new_empty!(u16, D));
27942 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
27943 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
27944 {
27945 return Err(fidl::Error::InvalidNumBytesInEnvelope);
27946 }
27947 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27948 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27949 }
27950 }
27951
27952 next_offset += envelope_size;
27953 _next_ordinal_to_read += 1;
27954 if next_offset >= end_offset {
27955 return Ok(());
27956 }
27957
27958 while _next_ordinal_to_read < 4 {
27960 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
27961 _next_ordinal_to_read += 1;
27962 next_offset += envelope_size;
27963 }
27964
27965 let next_out_of_line = decoder.next_out_of_line();
27966 let handles_before = decoder.remaining_handles();
27967 if let Some((inlined, num_bytes, num_handles)) =
27968 fidl::encoding::decode_envelope_header(decoder, next_offset)?
27969 {
27970 let member_inline_size =
27971 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
27972 if inlined != (member_inline_size <= 4) {
27973 return Err(fidl::Error::InvalidInlineBitInEnvelope);
27974 }
27975 let inner_offset;
27976 let mut inner_depth = depth.clone();
27977 if inlined {
27978 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
27979 inner_offset = next_offset;
27980 } else {
27981 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
27982 inner_depth.increment()?;
27983 }
27984 let val_ref = self.partition_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
27985 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
27986 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
27987 {
27988 return Err(fidl::Error::InvalidNumBytesInEnvelope);
27989 }
27990 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
27991 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
27992 }
27993 }
27994
27995 next_offset += envelope_size;
27996 _next_ordinal_to_read += 1;
27997 if next_offset >= end_offset {
27998 return Ok(());
27999 }
28000
28001 while _next_ordinal_to_read < 5 {
28003 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28004 _next_ordinal_to_read += 1;
28005 next_offset += envelope_size;
28006 }
28007
28008 let next_out_of_line = decoder.next_out_of_line();
28009 let handles_before = decoder.remaining_handles();
28010 if let Some((inlined, num_bytes, num_handles)) =
28011 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28012 {
28013 let member_inline_size =
28014 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
28015 decoder.context,
28016 );
28017 if inlined != (member_inline_size <= 4) {
28018 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28019 }
28020 let inner_offset;
28021 let mut inner_depth = depth.clone();
28022 if inlined {
28023 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28024 inner_offset = next_offset;
28025 } else {
28026 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28027 inner_depth.increment()?;
28028 }
28029 let val_ref = self
28030 .stack_version
28031 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
28032 fidl::decode!(
28033 fidl::encoding::BoundedString<256>,
28034 D,
28035 val_ref,
28036 decoder,
28037 inner_offset,
28038 inner_depth
28039 )?;
28040 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28041 {
28042 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28043 }
28044 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28045 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28046 }
28047 }
28048
28049 next_offset += envelope_size;
28050 _next_ordinal_to_read += 1;
28051 if next_offset >= end_offset {
28052 return Ok(());
28053 }
28054
28055 while _next_ordinal_to_read < 6 {
28057 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28058 _next_ordinal_to_read += 1;
28059 next_offset += envelope_size;
28060 }
28061
28062 let next_out_of_line = decoder.next_out_of_line();
28063 let handles_before = decoder.remaining_handles();
28064 if let Some((inlined, num_bytes, num_handles)) =
28065 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28066 {
28067 let member_inline_size =
28068 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
28069 decoder.context,
28070 );
28071 if inlined != (member_inline_size <= 4) {
28072 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28073 }
28074 let inner_offset;
28075 let mut inner_depth = depth.clone();
28076 if inlined {
28077 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28078 inner_offset = next_offset;
28079 } else {
28080 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28081 inner_depth.increment()?;
28082 }
28083 let val_ref = self
28084 .rcp_version
28085 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
28086 fidl::decode!(
28087 fidl::encoding::BoundedString<256>,
28088 D,
28089 val_ref,
28090 decoder,
28091 inner_offset,
28092 inner_depth
28093 )?;
28094 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28095 {
28096 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28097 }
28098 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28099 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28100 }
28101 }
28102
28103 next_offset += envelope_size;
28104 _next_ordinal_to_read += 1;
28105 if next_offset >= end_offset {
28106 return Ok(());
28107 }
28108
28109 while _next_ordinal_to_read < 7 {
28111 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28112 _next_ordinal_to_read += 1;
28113 next_offset += envelope_size;
28114 }
28115
28116 let next_out_of_line = decoder.next_out_of_line();
28117 let handles_before = decoder.remaining_handles();
28118 if let Some((inlined, num_bytes, num_handles)) =
28119 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28120 {
28121 let member_inline_size =
28122 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
28123 if inlined != (member_inline_size <= 4) {
28124 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28125 }
28126 let inner_offset;
28127 let mut inner_depth = depth.clone();
28128 if inlined {
28129 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28130 inner_offset = next_offset;
28131 } else {
28132 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28133 inner_depth.increment()?;
28134 }
28135 let val_ref = self.thread_link_mode.get_or_insert_with(|| fidl::new_empty!(u8, D));
28136 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
28137 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28138 {
28139 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28140 }
28141 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28142 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28143 }
28144 }
28145
28146 next_offset += envelope_size;
28147 _next_ordinal_to_read += 1;
28148 if next_offset >= end_offset {
28149 return Ok(());
28150 }
28151
28152 while _next_ordinal_to_read < 8 {
28154 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28155 _next_ordinal_to_read += 1;
28156 next_offset += envelope_size;
28157 }
28158
28159 let next_out_of_line = decoder.next_out_of_line();
28160 let handles_before = decoder.remaining_handles();
28161 if let Some((inlined, num_bytes, num_handles)) =
28162 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28163 {
28164 let member_inline_size =
28165 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
28166 if inlined != (member_inline_size <= 4) {
28167 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28168 }
28169 let inner_offset;
28170 let mut inner_depth = depth.clone();
28171 if inlined {
28172 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28173 inner_offset = next_offset;
28174 } else {
28175 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28176 inner_depth.increment()?;
28177 }
28178 let val_ref = self.thread_router_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
28179 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
28180 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28181 {
28182 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28183 }
28184 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28185 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28186 }
28187 }
28188
28189 next_offset += envelope_size;
28190 _next_ordinal_to_read += 1;
28191 if next_offset >= end_offset {
28192 return Ok(());
28193 }
28194
28195 while _next_ordinal_to_read < 9 {
28197 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28198 _next_ordinal_to_read += 1;
28199 next_offset += envelope_size;
28200 }
28201
28202 let next_out_of_line = decoder.next_out_of_line();
28203 let handles_before = decoder.remaining_handles();
28204 if let Some((inlined, num_bytes, num_handles)) =
28205 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28206 {
28207 let member_inline_size =
28208 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
28209 if inlined != (member_inline_size <= 4) {
28210 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28211 }
28212 let inner_offset;
28213 let mut inner_depth = depth.clone();
28214 if inlined {
28215 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28216 inner_offset = next_offset;
28217 } else {
28218 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28219 inner_depth.increment()?;
28220 }
28221 let val_ref = self.thread_rloc.get_or_insert_with(|| fidl::new_empty!(u16, D));
28222 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
28223 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28224 {
28225 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28226 }
28227 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28228 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28229 }
28230 }
28231
28232 next_offset += envelope_size;
28233 _next_ordinal_to_read += 1;
28234 if next_offset >= end_offset {
28235 return Ok(());
28236 }
28237
28238 while _next_ordinal_to_read < 10 {
28240 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28241 _next_ordinal_to_read += 1;
28242 next_offset += envelope_size;
28243 }
28244
28245 let next_out_of_line = decoder.next_out_of_line();
28246 let handles_before = decoder.remaining_handles();
28247 if let Some((inlined, num_bytes, num_handles)) =
28248 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28249 {
28250 let member_inline_size =
28251 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
28252 if inlined != (member_inline_size <= 4) {
28253 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28254 }
28255 let inner_offset;
28256 let mut inner_depth = depth.clone();
28257 if inlined {
28258 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28259 inner_offset = next_offset;
28260 } else {
28261 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28262 inner_depth.increment()?;
28263 }
28264 let val_ref =
28265 self.thread_network_data_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
28266 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
28267 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28268 {
28269 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28270 }
28271 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28272 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28273 }
28274 }
28275
28276 next_offset += envelope_size;
28277 _next_ordinal_to_read += 1;
28278 if next_offset >= end_offset {
28279 return Ok(());
28280 }
28281
28282 while _next_ordinal_to_read < 11 {
28284 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28285 _next_ordinal_to_read += 1;
28286 next_offset += envelope_size;
28287 }
28288
28289 let next_out_of_line = decoder.next_out_of_line();
28290 let handles_before = decoder.remaining_handles();
28291 if let Some((inlined, num_bytes, num_handles)) =
28292 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28293 {
28294 let member_inline_size =
28295 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
28296 if inlined != (member_inline_size <= 4) {
28297 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28298 }
28299 let inner_offset;
28300 let mut inner_depth = depth.clone();
28301 if inlined {
28302 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28303 inner_offset = next_offset;
28304 } else {
28305 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28306 inner_depth.increment()?;
28307 }
28308 let val_ref = self
28309 .thread_stable_network_data_version
28310 .get_or_insert_with(|| fidl::new_empty!(u8, D));
28311 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
28312 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28313 {
28314 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28315 }
28316 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28317 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28318 }
28319 }
28320
28321 next_offset += envelope_size;
28322 _next_ordinal_to_read += 1;
28323 if next_offset >= end_offset {
28324 return Ok(());
28325 }
28326
28327 while _next_ordinal_to_read < 12 {
28329 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28330 _next_ordinal_to_read += 1;
28331 next_offset += envelope_size;
28332 }
28333
28334 let next_out_of_line = decoder.next_out_of_line();
28335 let handles_before = decoder.remaining_handles();
28336 if let Some((inlined, num_bytes, num_handles)) =
28337 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28338 {
28339 let member_inline_size =
28340 <fidl::encoding::Vector<u8, 255> as fidl::encoding::TypeMarker>::inline_size(
28341 decoder.context,
28342 );
28343 if inlined != (member_inline_size <= 4) {
28344 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28345 }
28346 let inner_offset;
28347 let mut inner_depth = depth.clone();
28348 if inlined {
28349 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28350 inner_offset = next_offset;
28351 } else {
28352 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28353 inner_depth.increment()?;
28354 }
28355 let val_ref = self
28356 .thread_network_data
28357 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 255>, D));
28358 fidl::decode!(fidl::encoding::Vector<u8, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
28359 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28360 {
28361 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28362 }
28363 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28364 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28365 }
28366 }
28367
28368 next_offset += envelope_size;
28369 _next_ordinal_to_read += 1;
28370 if next_offset >= end_offset {
28371 return Ok(());
28372 }
28373
28374 while _next_ordinal_to_read < 13 {
28376 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28377 _next_ordinal_to_read += 1;
28378 next_offset += envelope_size;
28379 }
28380
28381 let next_out_of_line = decoder.next_out_of_line();
28382 let handles_before = decoder.remaining_handles();
28383 if let Some((inlined, num_bytes, num_handles)) =
28384 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28385 {
28386 let member_inline_size =
28387 <fidl::encoding::Vector<u8, 255> as fidl::encoding::TypeMarker>::inline_size(
28388 decoder.context,
28389 );
28390 if inlined != (member_inline_size <= 4) {
28391 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28392 }
28393 let inner_offset;
28394 let mut inner_depth = depth.clone();
28395 if inlined {
28396 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28397 inner_offset = next_offset;
28398 } else {
28399 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28400 inner_depth.increment()?;
28401 }
28402 let val_ref = self
28403 .thread_stable_network_data
28404 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 255>, D));
28405 fidl::decode!(fidl::encoding::Vector<u8, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
28406 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28407 {
28408 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28409 }
28410 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28411 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28412 }
28413 }
28414
28415 next_offset += envelope_size;
28416 _next_ordinal_to_read += 1;
28417 if next_offset >= end_offset {
28418 return Ok(());
28419 }
28420
28421 while _next_ordinal_to_read < 14 {
28423 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28424 _next_ordinal_to_read += 1;
28425 next_offset += envelope_size;
28426 }
28427
28428 let next_out_of_line = decoder.next_out_of_line();
28429 let handles_before = decoder.remaining_handles();
28430 if let Some((inlined, num_bytes, num_handles)) =
28431 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28432 {
28433 let member_inline_size =
28434 <BorderRoutingCounters as fidl::encoding::TypeMarker>::inline_size(
28435 decoder.context,
28436 );
28437 if inlined != (member_inline_size <= 4) {
28438 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28439 }
28440 let inner_offset;
28441 let mut inner_depth = depth.clone();
28442 if inlined {
28443 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28444 inner_offset = next_offset;
28445 } else {
28446 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28447 inner_depth.increment()?;
28448 }
28449 let val_ref = self
28450 .thread_border_routing_counters
28451 .get_or_insert_with(|| fidl::new_empty!(BorderRoutingCounters, D));
28452 fidl::decode!(
28453 BorderRoutingCounters,
28454 D,
28455 val_ref,
28456 decoder,
28457 inner_offset,
28458 inner_depth
28459 )?;
28460 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28461 {
28462 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28463 }
28464 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28465 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28466 }
28467 }
28468
28469 next_offset += envelope_size;
28470 _next_ordinal_to_read += 1;
28471 if next_offset >= end_offset {
28472 return Ok(());
28473 }
28474
28475 while _next_ordinal_to_read < 15 {
28477 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28478 _next_ordinal_to_read += 1;
28479 next_offset += envelope_size;
28480 }
28481
28482 let next_out_of_line = decoder.next_out_of_line();
28483 let handles_before = decoder.remaining_handles();
28484 if let Some((inlined, num_bytes, num_handles)) =
28485 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28486 {
28487 let member_inline_size =
28488 <SrpServerInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
28489 if inlined != (member_inline_size <= 4) {
28490 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28491 }
28492 let inner_offset;
28493 let mut inner_depth = depth.clone();
28494 if inlined {
28495 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28496 inner_offset = next_offset;
28497 } else {
28498 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28499 inner_depth.increment()?;
28500 }
28501 let val_ref =
28502 self.srp_server_info.get_or_insert_with(|| fidl::new_empty!(SrpServerInfo, D));
28503 fidl::decode!(SrpServerInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
28504 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28505 {
28506 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28507 }
28508 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28509 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28510 }
28511 }
28512
28513 next_offset += envelope_size;
28514 _next_ordinal_to_read += 1;
28515 if next_offset >= end_offset {
28516 return Ok(());
28517 }
28518
28519 while _next_ordinal_to_read < 16 {
28521 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28522 _next_ordinal_to_read += 1;
28523 next_offset += envelope_size;
28524 }
28525
28526 let next_out_of_line = decoder.next_out_of_line();
28527 let handles_before = decoder.remaining_handles();
28528 if let Some((inlined, num_bytes, num_handles)) =
28529 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28530 {
28531 let member_inline_size =
28532 <DnssdCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
28533 if inlined != (member_inline_size <= 4) {
28534 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28535 }
28536 let inner_offset;
28537 let mut inner_depth = depth.clone();
28538 if inlined {
28539 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28540 inner_offset = next_offset;
28541 } else {
28542 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28543 inner_depth.increment()?;
28544 }
28545 let val_ref =
28546 self.dnssd_counters.get_or_insert_with(|| fidl::new_empty!(DnssdCounters, D));
28547 fidl::decode!(DnssdCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
28548 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28549 {
28550 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28551 }
28552 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28553 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28554 }
28555 }
28556
28557 next_offset += envelope_size;
28558 _next_ordinal_to_read += 1;
28559 if next_offset >= end_offset {
28560 return Ok(());
28561 }
28562
28563 while _next_ordinal_to_read < 17 {
28565 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28566 _next_ordinal_to_read += 1;
28567 next_offset += envelope_size;
28568 }
28569
28570 let next_out_of_line = decoder.next_out_of_line();
28571 let handles_before = decoder.remaining_handles();
28572 if let Some((inlined, num_bytes, num_handles)) =
28573 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28574 {
28575 let member_inline_size =
28576 <LeaderData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
28577 if inlined != (member_inline_size <= 4) {
28578 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28579 }
28580 let inner_offset;
28581 let mut inner_depth = depth.clone();
28582 if inlined {
28583 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28584 inner_offset = next_offset;
28585 } else {
28586 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28587 inner_depth.increment()?;
28588 }
28589 let val_ref =
28590 self.leader_data.get_or_insert_with(|| fidl::new_empty!(LeaderData, D));
28591 fidl::decode!(LeaderData, D, val_ref, decoder, inner_offset, inner_depth)?;
28592 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28593 {
28594 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28595 }
28596 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28597 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28598 }
28599 }
28600
28601 next_offset += envelope_size;
28602 _next_ordinal_to_read += 1;
28603 if next_offset >= end_offset {
28604 return Ok(());
28605 }
28606
28607 while _next_ordinal_to_read < 18 {
28609 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28610 _next_ordinal_to_read += 1;
28611 next_offset += envelope_size;
28612 }
28613
28614 let next_out_of_line = decoder.next_out_of_line();
28615 let handles_before = decoder.remaining_handles();
28616 if let Some((inlined, num_bytes, num_handles)) =
28617 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28618 {
28619 let member_inline_size =
28620 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
28621 if inlined != (member_inline_size <= 4) {
28622 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28623 }
28624 let inner_offset;
28625 let mut inner_depth = depth.clone();
28626 if inlined {
28627 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28628 inner_offset = next_offset;
28629 } else {
28630 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28631 inner_depth.increment()?;
28632 }
28633 let val_ref = self.uptime.get_or_insert_with(|| fidl::new_empty!(i64, D));
28634 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
28635 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28636 {
28637 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28638 }
28639 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28640 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28641 }
28642 }
28643
28644 next_offset += envelope_size;
28645 _next_ordinal_to_read += 1;
28646 if next_offset >= end_offset {
28647 return Ok(());
28648 }
28649
28650 while _next_ordinal_to_read < 19 {
28652 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28653 _next_ordinal_to_read += 1;
28654 next_offset += envelope_size;
28655 }
28656
28657 let next_out_of_line = decoder.next_out_of_line();
28658 let handles_before = decoder.remaining_handles();
28659 if let Some((inlined, num_bytes, num_handles)) =
28660 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28661 {
28662 let member_inline_size =
28663 <Nat64Info as fidl::encoding::TypeMarker>::inline_size(decoder.context);
28664 if inlined != (member_inline_size <= 4) {
28665 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28666 }
28667 let inner_offset;
28668 let mut inner_depth = depth.clone();
28669 if inlined {
28670 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28671 inner_offset = next_offset;
28672 } else {
28673 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28674 inner_depth.increment()?;
28675 }
28676 let val_ref = self.nat64_info.get_or_insert_with(|| fidl::new_empty!(Nat64Info, D));
28677 fidl::decode!(Nat64Info, D, val_ref, decoder, inner_offset, inner_depth)?;
28678 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28679 {
28680 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28681 }
28682 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28683 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28684 }
28685 }
28686
28687 next_offset += envelope_size;
28688 _next_ordinal_to_read += 1;
28689 if next_offset >= end_offset {
28690 return Ok(());
28691 }
28692
28693 while _next_ordinal_to_read < 20 {
28695 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28696 _next_ordinal_to_read += 1;
28697 next_offset += envelope_size;
28698 }
28699
28700 let next_out_of_line = decoder.next_out_of_line();
28701 let handles_before = decoder.remaining_handles();
28702 if let Some((inlined, num_bytes, num_handles)) =
28703 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28704 {
28705 let member_inline_size =
28706 <TrelCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
28707 if inlined != (member_inline_size <= 4) {
28708 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28709 }
28710 let inner_offset;
28711 let mut inner_depth = depth.clone();
28712 if inlined {
28713 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28714 inner_offset = next_offset;
28715 } else {
28716 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28717 inner_depth.increment()?;
28718 }
28719 let val_ref =
28720 self.trel_counters.get_or_insert_with(|| fidl::new_empty!(TrelCounters, D));
28721 fidl::decode!(TrelCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
28722 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28723 {
28724 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28725 }
28726 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28727 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28728 }
28729 }
28730
28731 next_offset += envelope_size;
28732 _next_ordinal_to_read += 1;
28733 if next_offset >= end_offset {
28734 return Ok(());
28735 }
28736
28737 while _next_ordinal_to_read < 21 {
28739 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28740 _next_ordinal_to_read += 1;
28741 next_offset += envelope_size;
28742 }
28743
28744 let next_out_of_line = decoder.next_out_of_line();
28745 let handles_before = decoder.remaining_handles();
28746 if let Some((inlined, num_bytes, num_handles)) =
28747 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28748 {
28749 let member_inline_size =
28750 <TrelPeersInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
28751 if inlined != (member_inline_size <= 4) {
28752 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28753 }
28754 let inner_offset;
28755 let mut inner_depth = depth.clone();
28756 if inlined {
28757 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28758 inner_offset = next_offset;
28759 } else {
28760 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28761 inner_depth.increment()?;
28762 }
28763 let val_ref =
28764 self.trel_peers_info.get_or_insert_with(|| fidl::new_empty!(TrelPeersInfo, D));
28765 fidl::decode!(TrelPeersInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
28766 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28767 {
28768 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28769 }
28770 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28771 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28772 }
28773 }
28774
28775 next_offset += envelope_size;
28776 _next_ordinal_to_read += 1;
28777 if next_offset >= end_offset {
28778 return Ok(());
28779 }
28780
28781 while _next_ordinal_to_read < 22 {
28783 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28784 _next_ordinal_to_read += 1;
28785 next_offset += envelope_size;
28786 }
28787
28788 let next_out_of_line = decoder.next_out_of_line();
28789 let handles_before = decoder.remaining_handles();
28790 if let Some((inlined, num_bytes, num_handles)) =
28791 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28792 {
28793 let member_inline_size =
28794 <UpstreamDnsInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
28795 if inlined != (member_inline_size <= 4) {
28796 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28797 }
28798 let inner_offset;
28799 let mut inner_depth = depth.clone();
28800 if inlined {
28801 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28802 inner_offset = next_offset;
28803 } else {
28804 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28805 inner_depth.increment()?;
28806 }
28807 let val_ref = self
28808 .upstream_dns_info
28809 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsInfo, D));
28810 fidl::decode!(UpstreamDnsInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
28811 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28812 {
28813 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28814 }
28815 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28816 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28817 }
28818 }
28819
28820 next_offset += envelope_size;
28821 _next_ordinal_to_read += 1;
28822 if next_offset >= end_offset {
28823 return Ok(());
28824 }
28825
28826 while _next_ordinal_to_read < 23 {
28828 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28829 _next_ordinal_to_read += 1;
28830 next_offset += envelope_size;
28831 }
28832
28833 let next_out_of_line = decoder.next_out_of_line();
28834 let handles_before = decoder.remaining_handles();
28835 if let Some((inlined, num_bytes, num_handles)) =
28836 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28837 {
28838 let member_inline_size =
28839 <Dhcp6PdInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
28840 if inlined != (member_inline_size <= 4) {
28841 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28842 }
28843 let inner_offset;
28844 let mut inner_depth = depth.clone();
28845 if inlined {
28846 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28847 inner_offset = next_offset;
28848 } else {
28849 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28850 inner_depth.increment()?;
28851 }
28852 let val_ref =
28853 self.dhcp6pd_info.get_or_insert_with(|| fidl::new_empty!(Dhcp6PdInfo, D));
28854 fidl::decode!(Dhcp6PdInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
28855 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28856 {
28857 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28858 }
28859 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28860 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28861 }
28862 }
28863
28864 next_offset += envelope_size;
28865 _next_ordinal_to_read += 1;
28866 if next_offset >= end_offset {
28867 return Ok(());
28868 }
28869
28870 while _next_ordinal_to_read < 24 {
28872 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28873 _next_ordinal_to_read += 1;
28874 next_offset += envelope_size;
28875 }
28876
28877 let next_out_of_line = decoder.next_out_of_line();
28878 let handles_before = decoder.remaining_handles();
28879 if let Some((inlined, num_bytes, num_handles)) =
28880 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28881 {
28882 let member_inline_size = <fidl::encoding::Vector<LinkMetricsEntry, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
28883 if inlined != (member_inline_size <= 4) {
28884 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28885 }
28886 let inner_offset;
28887 let mut inner_depth = depth.clone();
28888 if inlined {
28889 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28890 inner_offset = next_offset;
28891 } else {
28892 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28893 inner_depth.increment()?;
28894 }
28895 let val_ref = self.link_metrics_entries.get_or_insert_with(
28896 || fidl::new_empty!(fidl::encoding::Vector<LinkMetricsEntry, 64>, D),
28897 );
28898 fidl::decode!(fidl::encoding::Vector<LinkMetricsEntry, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
28899 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28900 {
28901 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28902 }
28903 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28904 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28905 }
28906 }
28907
28908 next_offset += envelope_size;
28909 _next_ordinal_to_read += 1;
28910 if next_offset >= end_offset {
28911 return Ok(());
28912 }
28913
28914 while _next_ordinal_to_read < 25 {
28916 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28917 _next_ordinal_to_read += 1;
28918 next_offset += envelope_size;
28919 }
28920
28921 let next_out_of_line = decoder.next_out_of_line();
28922 let handles_before = decoder.remaining_handles();
28923 if let Some((inlined, num_bytes, num_handles)) =
28924 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28925 {
28926 let member_inline_size = <fidl_fuchsia_lowpan_device_common::BorderAgentCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
28927 if inlined != (member_inline_size <= 4) {
28928 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28929 }
28930 let inner_offset;
28931 let mut inner_depth = depth.clone();
28932 if inlined {
28933 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28934 inner_offset = next_offset;
28935 } else {
28936 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28937 inner_depth.increment()?;
28938 }
28939 let val_ref = self.border_agent_counters.get_or_insert_with(|| {
28940 fidl::new_empty!(fidl_fuchsia_lowpan_device_common::BorderAgentCounters, D)
28941 });
28942 fidl::decode!(
28943 fidl_fuchsia_lowpan_device_common::BorderAgentCounters,
28944 D,
28945 val_ref,
28946 decoder,
28947 inner_offset,
28948 inner_depth
28949 )?;
28950 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28951 {
28952 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28953 }
28954 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28955 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
28956 }
28957 }
28958
28959 next_offset += envelope_size;
28960 _next_ordinal_to_read += 1;
28961 if next_offset >= end_offset {
28962 return Ok(());
28963 }
28964
28965 while _next_ordinal_to_read < 26 {
28967 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
28968 _next_ordinal_to_read += 1;
28969 next_offset += envelope_size;
28970 }
28971
28972 let next_out_of_line = decoder.next_out_of_line();
28973 let handles_before = decoder.remaining_handles();
28974 if let Some((inlined, num_bytes, num_handles)) =
28975 fidl::encoding::decode_envelope_header(decoder, next_offset)?
28976 {
28977 let member_inline_size =
28978 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
28979 if inlined != (member_inline_size <= 4) {
28980 return Err(fidl::Error::InvalidInlineBitInEnvelope);
28981 }
28982 let inner_offset;
28983 let mut inner_depth = depth.clone();
28984 if inlined {
28985 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
28986 inner_offset = next_offset;
28987 } else {
28988 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
28989 inner_depth.increment()?;
28990 }
28991 let val_ref =
28992 self.multi_ail_detected.get_or_insert_with(|| fidl::new_empty!(bool, D));
28993 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
28994 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
28995 {
28996 return Err(fidl::Error::InvalidNumBytesInEnvelope);
28997 }
28998 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
28999 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29000 }
29001 }
29002
29003 next_offset += envelope_size;
29004 _next_ordinal_to_read += 1;
29005 if next_offset >= end_offset {
29006 return Ok(());
29007 }
29008
29009 while _next_ordinal_to_read < 27 {
29011 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29012 _next_ordinal_to_read += 1;
29013 next_offset += envelope_size;
29014 }
29015
29016 let next_out_of_line = decoder.next_out_of_line();
29017 let handles_before = decoder.remaining_handles();
29018 if let Some((inlined, num_bytes, num_handles)) =
29019 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29020 {
29021 let member_inline_size =
29022 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29023 if inlined != (member_inline_size <= 4) {
29024 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29025 }
29026 let inner_offset;
29027 let mut inner_depth = depth.clone();
29028 if inlined {
29029 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29030 inner_offset = next_offset;
29031 } else {
29032 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29033 inner_depth.increment()?;
29034 }
29035 let val_ref = self.extended_pan_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
29036 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
29037 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29038 {
29039 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29040 }
29041 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29042 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29043 }
29044 }
29045
29046 next_offset += envelope_size;
29047 _next_ordinal_to_read += 1;
29048 if next_offset >= end_offset {
29049 return Ok(());
29050 }
29051
29052 while _next_ordinal_to_read < 28 {
29054 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29055 _next_ordinal_to_read += 1;
29056 next_offset += envelope_size;
29057 }
29058
29059 let next_out_of_line = decoder.next_out_of_line();
29060 let handles_before = decoder.remaining_handles();
29061 if let Some((inlined, num_bytes, num_handles)) =
29062 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29063 {
29064 let member_inline_size = <fidl::encoding::Vector<BorderRoutingPeer, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29065 if inlined != (member_inline_size <= 4) {
29066 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29067 }
29068 let inner_offset;
29069 let mut inner_depth = depth.clone();
29070 if inlined {
29071 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29072 inner_offset = next_offset;
29073 } else {
29074 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29075 inner_depth.increment()?;
29076 }
29077 let val_ref = self.border_routing_peers.get_or_insert_with(
29078 || fidl::new_empty!(fidl::encoding::Vector<BorderRoutingPeer, 64>, D),
29079 );
29080 fidl::decode!(fidl::encoding::Vector<BorderRoutingPeer, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
29081 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29082 {
29083 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29084 }
29085 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29086 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29087 }
29088 }
29089
29090 next_offset += envelope_size;
29091 _next_ordinal_to_read += 1;
29092 if next_offset >= end_offset {
29093 return Ok(());
29094 }
29095
29096 while _next_ordinal_to_read < 29 {
29098 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29099 _next_ordinal_to_read += 1;
29100 next_offset += envelope_size;
29101 }
29102
29103 let next_out_of_line = decoder.next_out_of_line();
29104 let handles_before = decoder.remaining_handles();
29105 if let Some((inlined, num_bytes, num_handles)) =
29106 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29107 {
29108 let member_inline_size = <fidl::encoding::Vector<BorderRoutingRouter, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29109 if inlined != (member_inline_size <= 4) {
29110 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29111 }
29112 let inner_offset;
29113 let mut inner_depth = depth.clone();
29114 if inlined {
29115 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29116 inner_offset = next_offset;
29117 } else {
29118 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29119 inner_depth.increment()?;
29120 }
29121 let val_ref = self.border_routing_routers.get_or_insert_with(
29122 || fidl::new_empty!(fidl::encoding::Vector<BorderRoutingRouter, 64>, D),
29123 );
29124 fidl::decode!(fidl::encoding::Vector<BorderRoutingRouter, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
29125 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29126 {
29127 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29128 }
29129 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29130 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29131 }
29132 }
29133
29134 next_offset += envelope_size;
29135 _next_ordinal_to_read += 1;
29136 if next_offset >= end_offset {
29137 return Ok(());
29138 }
29139
29140 while _next_ordinal_to_read < 30 {
29142 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29143 _next_ordinal_to_read += 1;
29144 next_offset += envelope_size;
29145 }
29146
29147 let next_out_of_line = decoder.next_out_of_line();
29148 let handles_before = decoder.remaining_handles();
29149 if let Some((inlined, num_bytes, num_handles)) =
29150 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29151 {
29152 let member_inline_size =
29153 <OperationalDataset as fidl::encoding::TypeMarker>::inline_size(
29154 decoder.context,
29155 );
29156 if inlined != (member_inline_size <= 4) {
29157 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29158 }
29159 let inner_offset;
29160 let mut inner_depth = depth.clone();
29161 if inlined {
29162 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29163 inner_offset = next_offset;
29164 } else {
29165 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29166 inner_depth.increment()?;
29167 }
29168 let val_ref = self
29169 .active_dataset
29170 .get_or_insert_with(|| fidl::new_empty!(OperationalDataset, D));
29171 fidl::decode!(OperationalDataset, D, val_ref, decoder, inner_offset, inner_depth)?;
29172 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29173 {
29174 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29175 }
29176 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29177 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29178 }
29179 }
29180
29181 next_offset += envelope_size;
29182 _next_ordinal_to_read += 1;
29183 if next_offset >= end_offset {
29184 return Ok(());
29185 }
29186
29187 while _next_ordinal_to_read < 31 {
29189 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29190 _next_ordinal_to_read += 1;
29191 next_offset += envelope_size;
29192 }
29193
29194 let next_out_of_line = decoder.next_out_of_line();
29195 let handles_before = decoder.remaining_handles();
29196 if let Some((inlined, num_bytes, num_handles)) =
29197 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29198 {
29199 let member_inline_size = <fidl::encoding::Vector<MultiRadioNeighborInfo, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29200 if inlined != (member_inline_size <= 4) {
29201 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29202 }
29203 let inner_offset;
29204 let mut inner_depth = depth.clone();
29205 if inlined {
29206 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29207 inner_offset = next_offset;
29208 } else {
29209 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29210 inner_depth.increment()?;
29211 }
29212 let val_ref = self.multiradio_neighbor_info.get_or_insert_with(
29213 || fidl::new_empty!(fidl::encoding::Vector<MultiRadioNeighborInfo, 64>, D),
29214 );
29215 fidl::decode!(fidl::encoding::Vector<MultiRadioNeighborInfo, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
29216 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29217 {
29218 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29219 }
29220 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29221 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29222 }
29223 }
29224
29225 next_offset += envelope_size;
29226 _next_ordinal_to_read += 1;
29227 if next_offset >= end_offset {
29228 return Ok(());
29229 }
29230
29231 while _next_ordinal_to_read < 32 {
29233 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29234 _next_ordinal_to_read += 1;
29235 next_offset += envelope_size;
29236 }
29237
29238 let next_out_of_line = decoder.next_out_of_line();
29239 let handles_before = decoder.remaining_handles();
29240 if let Some((inlined, num_bytes, num_handles)) =
29241 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29242 {
29243 let member_inline_size = <fidl::encoding::Vector<RouterInfo, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29244 if inlined != (member_inline_size <= 4) {
29245 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29246 }
29247 let inner_offset;
29248 let mut inner_depth = depth.clone();
29249 if inlined {
29250 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29251 inner_offset = next_offset;
29252 } else {
29253 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29254 inner_depth.increment()?;
29255 }
29256 let val_ref = self.router_info.get_or_insert_with(
29257 || fidl::new_empty!(fidl::encoding::Vector<RouterInfo, 64>, D),
29258 );
29259 fidl::decode!(fidl::encoding::Vector<RouterInfo, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
29260 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29261 {
29262 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29263 }
29264 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29265 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29266 }
29267 }
29268
29269 next_offset += envelope_size;
29270 _next_ordinal_to_read += 1;
29271 if next_offset >= end_offset {
29272 return Ok(());
29273 }
29274
29275 while _next_ordinal_to_read < 33 {
29277 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29278 _next_ordinal_to_read += 1;
29279 next_offset += envelope_size;
29280 }
29281
29282 let next_out_of_line = decoder.next_out_of_line();
29283 let handles_before = decoder.remaining_handles();
29284 if let Some((inlined, num_bytes, num_handles)) =
29285 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29286 {
29287 let member_inline_size =
29288 <NetworkData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29289 if inlined != (member_inline_size <= 4) {
29290 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29291 }
29292 let inner_offset;
29293 let mut inner_depth = depth.clone();
29294 if inlined {
29295 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29296 inner_offset = next_offset;
29297 } else {
29298 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29299 inner_depth.increment()?;
29300 }
29301 let val_ref =
29302 self.network_data.get_or_insert_with(|| fidl::new_empty!(NetworkData, D));
29303 fidl::decode!(NetworkData, D, val_ref, decoder, inner_offset, inner_depth)?;
29304 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29305 {
29306 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29307 }
29308 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29309 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29310 }
29311 }
29312
29313 next_offset += envelope_size;
29314 _next_ordinal_to_read += 1;
29315 if next_offset >= end_offset {
29316 return Ok(());
29317 }
29318
29319 while _next_ordinal_to_read < 34 {
29321 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29322 _next_ordinal_to_read += 1;
29323 next_offset += envelope_size;
29324 }
29325
29326 let next_out_of_line = decoder.next_out_of_line();
29327 let handles_before = decoder.remaining_handles();
29328 if let Some((inlined, num_bytes, num_handles)) =
29329 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29330 {
29331 let member_inline_size =
29332 <ThreadHistoryReport as fidl::encoding::TypeMarker>::inline_size(
29333 decoder.context,
29334 );
29335 if inlined != (member_inline_size <= 4) {
29336 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29337 }
29338 let inner_offset;
29339 let mut inner_depth = depth.clone();
29340 if inlined {
29341 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29342 inner_offset = next_offset;
29343 } else {
29344 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29345 inner_depth.increment()?;
29346 }
29347 let val_ref = self
29348 .history_report
29349 .get_or_insert_with(|| fidl::new_empty!(ThreadHistoryReport, D));
29350 fidl::decode!(ThreadHistoryReport, D, val_ref, decoder, inner_offset, inner_depth)?;
29351 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29352 {
29353 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29354 }
29355 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29356 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29357 }
29358 }
29359
29360 next_offset += envelope_size;
29361 _next_ordinal_to_read += 1;
29362 if next_offset >= end_offset {
29363 return Ok(());
29364 }
29365
29366 while _next_ordinal_to_read < 35 {
29368 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29369 _next_ordinal_to_read += 1;
29370 next_offset += envelope_size;
29371 }
29372
29373 let next_out_of_line = decoder.next_out_of_line();
29374 let handles_before = decoder.remaining_handles();
29375 if let Some((inlined, num_bytes, num_handles)) =
29376 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29377 {
29378 let member_inline_size = <fidl::encoding::Vector<NetifAddress, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29379 if inlined != (member_inline_size <= 4) {
29380 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29381 }
29382 let inner_offset;
29383 let mut inner_depth = depth.clone();
29384 if inlined {
29385 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29386 inner_offset = next_offset;
29387 } else {
29388 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29389 inner_depth.increment()?;
29390 }
29391 let val_ref = self.ipaddrs.get_or_insert_with(
29392 || fidl::new_empty!(fidl::encoding::Vector<NetifAddress, 32>, D),
29393 );
29394 fidl::decode!(fidl::encoding::Vector<NetifAddress, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
29395 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29396 {
29397 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29398 }
29399 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29400 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29401 }
29402 }
29403
29404 next_offset += envelope_size;
29405 _next_ordinal_to_read += 1;
29406 if next_offset >= end_offset {
29407 return Ok(());
29408 }
29409
29410 while _next_ordinal_to_read < 36 {
29412 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29413 _next_ordinal_to_read += 1;
29414 next_offset += envelope_size;
29415 }
29416
29417 let next_out_of_line = decoder.next_out_of_line();
29418 let handles_before = decoder.remaining_handles();
29419 if let Some((inlined, num_bytes, num_handles)) =
29420 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29421 {
29422 let member_inline_size = <fidl::encoding::Vector<
29423 fidl_fuchsia_net_common::Ipv6Address,
29424 32,
29425 > as fidl::encoding::TypeMarker>::inline_size(
29426 decoder.context
29427 );
29428 if inlined != (member_inline_size <= 4) {
29429 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29430 }
29431 let inner_offset;
29432 let mut inner_depth = depth.clone();
29433 if inlined {
29434 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29435 inner_offset = next_offset;
29436 } else {
29437 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29438 inner_depth.increment()?;
29439 }
29440 let val_ref =
29441 self.ipmaddrs.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv6Address, 32>, D));
29442 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_net_common::Ipv6Address, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
29443 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29444 {
29445 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29446 }
29447 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29448 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29449 }
29450 }
29451
29452 next_offset += envelope_size;
29453 _next_ordinal_to_read += 1;
29454 if next_offset >= end_offset {
29455 return Ok(());
29456 }
29457
29458 while _next_ordinal_to_read < 37 {
29460 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29461 _next_ordinal_to_read += 1;
29462 next_offset += envelope_size;
29463 }
29464
29465 let next_out_of_line = decoder.next_out_of_line();
29466 let handles_before = decoder.remaining_handles();
29467 if let Some((inlined, num_bytes, num_handles)) =
29468 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29469 {
29470 let member_inline_size = <fidl::encoding::Vector<BorderRoutingPrefixTable, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29471 if inlined != (member_inline_size <= 4) {
29472 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29473 }
29474 let inner_offset;
29475 let mut inner_depth = depth.clone();
29476 if inlined {
29477 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29478 inner_offset = next_offset;
29479 } else {
29480 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29481 inner_depth.increment()?;
29482 }
29483 let val_ref = self.border_routing_prefixes.get_or_insert_with(
29484 || fidl::new_empty!(fidl::encoding::Vector<BorderRoutingPrefixTable, 64>, D),
29485 );
29486 fidl::decode!(fidl::encoding::Vector<BorderRoutingPrefixTable, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
29487 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29488 {
29489 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29490 }
29491 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29492 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29493 }
29494 }
29495
29496 next_offset += envelope_size;
29497 _next_ordinal_to_read += 1;
29498 if next_offset >= end_offset {
29499 return Ok(());
29500 }
29501
29502 while _next_ordinal_to_read < 38 {
29504 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29505 _next_ordinal_to_read += 1;
29506 next_offset += envelope_size;
29507 }
29508
29509 let next_out_of_line = decoder.next_out_of_line();
29510 let handles_before = decoder.remaining_handles();
29511 if let Some((inlined, num_bytes, num_handles)) =
29512 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29513 {
29514 let member_inline_size = <fidl::encoding::Vector<BorderRoutingRdnss, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29515 if inlined != (member_inline_size <= 4) {
29516 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29517 }
29518 let inner_offset;
29519 let mut inner_depth = depth.clone();
29520 if inlined {
29521 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29522 inner_offset = next_offset;
29523 } else {
29524 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29525 inner_depth.increment()?;
29526 }
29527 let val_ref = self.border_routing_rdnsses.get_or_insert_with(
29528 || fidl::new_empty!(fidl::encoding::Vector<BorderRoutingRdnss, 64>, D),
29529 );
29530 fidl::decode!(fidl::encoding::Vector<BorderRoutingRdnss, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
29531 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29532 {
29533 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29534 }
29535 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29536 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29537 }
29538 }
29539
29540 next_offset += envelope_size;
29541 _next_ordinal_to_read += 1;
29542 if next_offset >= end_offset {
29543 return Ok(());
29544 }
29545
29546 while _next_ordinal_to_read < 39 {
29548 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29549 _next_ordinal_to_read += 1;
29550 next_offset += envelope_size;
29551 }
29552
29553 let next_out_of_line = decoder.next_out_of_line();
29554 let handles_before = decoder.remaining_handles();
29555 if let Some((inlined, num_bytes, num_handles)) =
29556 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29557 {
29558 let member_inline_size = <fidl::encoding::Vector<UdpSocket, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29559 if inlined != (member_inline_size <= 4) {
29560 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29561 }
29562 let inner_offset;
29563 let mut inner_depth = depth.clone();
29564 if inlined {
29565 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29566 inner_offset = next_offset;
29567 } else {
29568 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29569 inner_depth.increment()?;
29570 }
29571 let val_ref = self.netstat.get_or_insert_with(
29572 || fidl::new_empty!(fidl::encoding::Vector<UdpSocket, 32>, D),
29573 );
29574 fidl::decode!(fidl::encoding::Vector<UdpSocket, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
29575 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29576 {
29577 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29578 }
29579 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29580 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29581 }
29582 }
29583
29584 next_offset += envelope_size;
29585 _next_ordinal_to_read += 1;
29586 if next_offset >= end_offset {
29587 return Ok(());
29588 }
29589
29590 while _next_ordinal_to_read < 40 {
29592 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29593 _next_ordinal_to_read += 1;
29594 next_offset += envelope_size;
29595 }
29596
29597 let next_out_of_line = decoder.next_out_of_line();
29598 let handles_before = decoder.remaining_handles();
29599 if let Some((inlined, num_bytes, num_handles)) =
29600 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29601 {
29602 let member_inline_size = <fidl::encoding::Vector<EidCacheEntry, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29603 if inlined != (member_inline_size <= 4) {
29604 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29605 }
29606 let inner_offset;
29607 let mut inner_depth = depth.clone();
29608 if inlined {
29609 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29610 inner_offset = next_offset;
29611 } else {
29612 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29613 inner_depth.increment()?;
29614 }
29615 let val_ref = self.eid_cache_entries.get_or_insert_with(
29616 || fidl::new_empty!(fidl::encoding::Vector<EidCacheEntry, 64>, D),
29617 );
29618 fidl::decode!(fidl::encoding::Vector<EidCacheEntry, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
29619 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29620 {
29621 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29622 }
29623 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29624 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29625 }
29626 }
29627
29628 next_offset += envelope_size;
29629 _next_ordinal_to_read += 1;
29630 if next_offset >= end_offset {
29631 return Ok(());
29632 }
29633
29634 while _next_ordinal_to_read < 41 {
29636 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29637 _next_ordinal_to_read += 1;
29638 next_offset += envelope_size;
29639 }
29640
29641 let next_out_of_line = decoder.next_out_of_line();
29642 let handles_before = decoder.remaining_handles();
29643 if let Some((inlined, num_bytes, num_handles)) =
29644 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29645 {
29646 let member_inline_size =
29647 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29648 if inlined != (member_inline_size <= 4) {
29649 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29650 }
29651 let inner_offset;
29652 let mut inner_depth = depth.clone();
29653 if inlined {
29654 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29655 inner_offset = next_offset;
29656 } else {
29657 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29658 inner_depth.increment()?;
29659 }
29660 let val_ref = self.cca_threshold.get_or_insert_with(|| fidl::new_empty!(i8, D));
29661 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
29662 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29663 {
29664 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29665 }
29666 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29667 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29668 }
29669 }
29670
29671 next_offset += envelope_size;
29672
29673 while next_offset < end_offset {
29675 _next_ordinal_to_read += 1;
29676 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29677 next_offset += envelope_size;
29678 }
29679
29680 Ok(())
29681 }
29682 }
29683
29684 impl ThreadHistoryReport {
29685 #[inline(always)]
29686 fn max_ordinal_present(&self) -> u64 {
29687 if let Some(_) = self.route_info_history {
29688 return 5;
29689 }
29690 if let Some(_) = self.prefix_info_history {
29691 return 4;
29692 }
29693 if let Some(_) = self.router_info_history {
29694 return 3;
29695 }
29696 if let Some(_) = self.neighbor_info_history {
29697 return 2;
29698 }
29699 if let Some(_) = self.net_info_history {
29700 return 1;
29701 }
29702 0
29703 }
29704 }
29705
29706 impl fidl::encoding::ValueTypeMarker for ThreadHistoryReport {
29707 type Borrowed<'a> = &'a Self;
29708 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
29709 value
29710 }
29711 }
29712
29713 unsafe impl fidl::encoding::TypeMarker for ThreadHistoryReport {
29714 type Owned = Self;
29715
29716 #[inline(always)]
29717 fn inline_align(_context: fidl::encoding::Context) -> usize {
29718 8
29719 }
29720
29721 #[inline(always)]
29722 fn inline_size(_context: fidl::encoding::Context) -> usize {
29723 16
29724 }
29725 }
29726
29727 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ThreadHistoryReport, D>
29728 for &ThreadHistoryReport
29729 {
29730 unsafe fn encode(
29731 self,
29732 encoder: &mut fidl::encoding::Encoder<'_, D>,
29733 offset: usize,
29734 mut depth: fidl::encoding::Depth,
29735 ) -> fidl::Result<()> {
29736 encoder.debug_check_bounds::<ThreadHistoryReport>(offset);
29737 let max_ordinal: u64 = self.max_ordinal_present();
29739 encoder.write_num(max_ordinal, offset);
29740 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
29741 if max_ordinal == 0 {
29743 return Ok(());
29744 }
29745 depth.increment()?;
29746 let envelope_size = 8;
29747 let bytes_len = max_ordinal as usize * envelope_size;
29748 #[allow(unused_variables)]
29749 let offset = encoder.out_of_line_offset(bytes_len);
29750 let mut _prev_end_offset: usize = 0;
29751 if 1 > max_ordinal {
29752 return Ok(());
29753 }
29754
29755 let cur_offset: usize = (1 - 1) * envelope_size;
29758
29759 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
29761
29762 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ThreadNetworkInfoEntry, 32>, D>(
29767 self.net_info_history.as_ref().map(<fidl::encoding::Vector<ThreadNetworkInfoEntry, 32> as fidl::encoding::ValueTypeMarker>::borrow),
29768 encoder, offset + cur_offset, depth
29769 )?;
29770
29771 _prev_end_offset = cur_offset + envelope_size;
29772 if 2 > max_ordinal {
29773 return Ok(());
29774 }
29775
29776 let cur_offset: usize = (2 - 1) * envelope_size;
29779
29780 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
29782
29783 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ThreadNeighborInfoEntry, 64>, D>(
29788 self.neighbor_info_history.as_ref().map(<fidl::encoding::Vector<ThreadNeighborInfoEntry, 64> as fidl::encoding::ValueTypeMarker>::borrow),
29789 encoder, offset + cur_offset, depth
29790 )?;
29791
29792 _prev_end_offset = cur_offset + envelope_size;
29793 if 3 > max_ordinal {
29794 return Ok(());
29795 }
29796
29797 let cur_offset: usize = (3 - 1) * envelope_size;
29800
29801 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
29803
29804 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ThreadRouterInfoEntry, 256>, D>(
29809 self.router_info_history.as_ref().map(<fidl::encoding::Vector<ThreadRouterInfoEntry, 256> as fidl::encoding::ValueTypeMarker>::borrow),
29810 encoder, offset + cur_offset, depth
29811 )?;
29812
29813 _prev_end_offset = cur_offset + envelope_size;
29814 if 4 > max_ordinal {
29815 return Ok(());
29816 }
29817
29818 let cur_offset: usize = (4 - 1) * envelope_size;
29821
29822 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
29824
29825 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ThreadNetDataPrefixInfoEntry, 32>, D>(
29830 self.prefix_info_history.as_ref().map(<fidl::encoding::Vector<ThreadNetDataPrefixInfoEntry, 32> as fidl::encoding::ValueTypeMarker>::borrow),
29831 encoder, offset + cur_offset, depth
29832 )?;
29833
29834 _prev_end_offset = cur_offset + envelope_size;
29835 if 5 > max_ordinal {
29836 return Ok(());
29837 }
29838
29839 let cur_offset: usize = (5 - 1) * envelope_size;
29842
29843 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
29845
29846 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ThreadNetDataRouteInfoEntry, 32>, D>(
29851 self.route_info_history.as_ref().map(<fidl::encoding::Vector<ThreadNetDataRouteInfoEntry, 32> as fidl::encoding::ValueTypeMarker>::borrow),
29852 encoder, offset + cur_offset, depth
29853 )?;
29854
29855 _prev_end_offset = cur_offset + envelope_size;
29856
29857 Ok(())
29858 }
29859 }
29860
29861 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ThreadHistoryReport {
29862 #[inline(always)]
29863 fn new_empty() -> Self {
29864 Self::default()
29865 }
29866
29867 unsafe fn decode(
29868 &mut self,
29869 decoder: &mut fidl::encoding::Decoder<'_, D>,
29870 offset: usize,
29871 mut depth: fidl::encoding::Depth,
29872 ) -> fidl::Result<()> {
29873 decoder.debug_check_bounds::<Self>(offset);
29874 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
29875 None => return Err(fidl::Error::NotNullable),
29876 Some(len) => len,
29877 };
29878 if len == 0 {
29880 return Ok(());
29881 };
29882 depth.increment()?;
29883 let envelope_size = 8;
29884 let bytes_len = len * envelope_size;
29885 let offset = decoder.out_of_line_offset(bytes_len)?;
29886 let mut _next_ordinal_to_read = 0;
29888 let mut next_offset = offset;
29889 let end_offset = offset + bytes_len;
29890 _next_ordinal_to_read += 1;
29891 if next_offset >= end_offset {
29892 return Ok(());
29893 }
29894
29895 while _next_ordinal_to_read < 1 {
29897 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29898 _next_ordinal_to_read += 1;
29899 next_offset += envelope_size;
29900 }
29901
29902 let next_out_of_line = decoder.next_out_of_line();
29903 let handles_before = decoder.remaining_handles();
29904 if let Some((inlined, num_bytes, num_handles)) =
29905 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29906 {
29907 let member_inline_size = <fidl::encoding::Vector<ThreadNetworkInfoEntry, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29908 if inlined != (member_inline_size <= 4) {
29909 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29910 }
29911 let inner_offset;
29912 let mut inner_depth = depth.clone();
29913 if inlined {
29914 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29915 inner_offset = next_offset;
29916 } else {
29917 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29918 inner_depth.increment()?;
29919 }
29920 let val_ref = self.net_info_history.get_or_insert_with(
29921 || fidl::new_empty!(fidl::encoding::Vector<ThreadNetworkInfoEntry, 32>, D),
29922 );
29923 fidl::decode!(fidl::encoding::Vector<ThreadNetworkInfoEntry, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
29924 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29925 {
29926 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29927 }
29928 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29929 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29930 }
29931 }
29932
29933 next_offset += envelope_size;
29934 _next_ordinal_to_read += 1;
29935 if next_offset >= end_offset {
29936 return Ok(());
29937 }
29938
29939 while _next_ordinal_to_read < 2 {
29941 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29942 _next_ordinal_to_read += 1;
29943 next_offset += envelope_size;
29944 }
29945
29946 let next_out_of_line = decoder.next_out_of_line();
29947 let handles_before = decoder.remaining_handles();
29948 if let Some((inlined, num_bytes, num_handles)) =
29949 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29950 {
29951 let member_inline_size = <fidl::encoding::Vector<ThreadNeighborInfoEntry, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29952 if inlined != (member_inline_size <= 4) {
29953 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29954 }
29955 let inner_offset;
29956 let mut inner_depth = depth.clone();
29957 if inlined {
29958 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
29959 inner_offset = next_offset;
29960 } else {
29961 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
29962 inner_depth.increment()?;
29963 }
29964 let val_ref = self.neighbor_info_history.get_or_insert_with(
29965 || fidl::new_empty!(fidl::encoding::Vector<ThreadNeighborInfoEntry, 64>, D),
29966 );
29967 fidl::decode!(fidl::encoding::Vector<ThreadNeighborInfoEntry, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
29968 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
29969 {
29970 return Err(fidl::Error::InvalidNumBytesInEnvelope);
29971 }
29972 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
29973 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
29974 }
29975 }
29976
29977 next_offset += envelope_size;
29978 _next_ordinal_to_read += 1;
29979 if next_offset >= end_offset {
29980 return Ok(());
29981 }
29982
29983 while _next_ordinal_to_read < 3 {
29985 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
29986 _next_ordinal_to_read += 1;
29987 next_offset += envelope_size;
29988 }
29989
29990 let next_out_of_line = decoder.next_out_of_line();
29991 let handles_before = decoder.remaining_handles();
29992 if let Some((inlined, num_bytes, num_handles)) =
29993 fidl::encoding::decode_envelope_header(decoder, next_offset)?
29994 {
29995 let member_inline_size = <fidl::encoding::Vector<ThreadRouterInfoEntry, 256> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
29996 if inlined != (member_inline_size <= 4) {
29997 return Err(fidl::Error::InvalidInlineBitInEnvelope);
29998 }
29999 let inner_offset;
30000 let mut inner_depth = depth.clone();
30001 if inlined {
30002 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30003 inner_offset = next_offset;
30004 } else {
30005 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30006 inner_depth.increment()?;
30007 }
30008 let val_ref = self.router_info_history.get_or_insert_with(
30009 || fidl::new_empty!(fidl::encoding::Vector<ThreadRouterInfoEntry, 256>, D),
30010 );
30011 fidl::decode!(fidl::encoding::Vector<ThreadRouterInfoEntry, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
30012 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30013 {
30014 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30015 }
30016 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30017 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30018 }
30019 }
30020
30021 next_offset += envelope_size;
30022 _next_ordinal_to_read += 1;
30023 if next_offset >= end_offset {
30024 return Ok(());
30025 }
30026
30027 while _next_ordinal_to_read < 4 {
30029 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30030 _next_ordinal_to_read += 1;
30031 next_offset += envelope_size;
30032 }
30033
30034 let next_out_of_line = decoder.next_out_of_line();
30035 let handles_before = decoder.remaining_handles();
30036 if let Some((inlined, num_bytes, num_handles)) =
30037 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30038 {
30039 let member_inline_size = <fidl::encoding::Vector<ThreadNetDataPrefixInfoEntry, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30040 if inlined != (member_inline_size <= 4) {
30041 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30042 }
30043 let inner_offset;
30044 let mut inner_depth = depth.clone();
30045 if inlined {
30046 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30047 inner_offset = next_offset;
30048 } else {
30049 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30050 inner_depth.increment()?;
30051 }
30052 let val_ref =
30053 self.prefix_info_history.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<ThreadNetDataPrefixInfoEntry, 32>, D));
30054 fidl::decode!(fidl::encoding::Vector<ThreadNetDataPrefixInfoEntry, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
30055 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30056 {
30057 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30058 }
30059 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30060 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30061 }
30062 }
30063
30064 next_offset += envelope_size;
30065 _next_ordinal_to_read += 1;
30066 if next_offset >= end_offset {
30067 return Ok(());
30068 }
30069
30070 while _next_ordinal_to_read < 5 {
30072 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30073 _next_ordinal_to_read += 1;
30074 next_offset += envelope_size;
30075 }
30076
30077 let next_out_of_line = decoder.next_out_of_line();
30078 let handles_before = decoder.remaining_handles();
30079 if let Some((inlined, num_bytes, num_handles)) =
30080 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30081 {
30082 let member_inline_size = <fidl::encoding::Vector<ThreadNetDataRouteInfoEntry, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30083 if inlined != (member_inline_size <= 4) {
30084 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30085 }
30086 let inner_offset;
30087 let mut inner_depth = depth.clone();
30088 if inlined {
30089 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30090 inner_offset = next_offset;
30091 } else {
30092 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30093 inner_depth.increment()?;
30094 }
30095 let val_ref = self.route_info_history.get_or_insert_with(
30096 || fidl::new_empty!(fidl::encoding::Vector<ThreadNetDataRouteInfoEntry, 32>, D),
30097 );
30098 fidl::decode!(fidl::encoding::Vector<ThreadNetDataRouteInfoEntry, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
30099 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30100 {
30101 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30102 }
30103 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30104 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30105 }
30106 }
30107
30108 next_offset += envelope_size;
30109
30110 while next_offset < end_offset {
30112 _next_ordinal_to_read += 1;
30113 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30114 next_offset += envelope_size;
30115 }
30116
30117 Ok(())
30118 }
30119 }
30120
30121 impl ThreadLinkMode {
30122 #[inline(always)]
30123 fn max_ordinal_present(&self) -> u64 {
30124 if let Some(_) = self.network_data {
30125 return 3;
30126 }
30127 if let Some(_) = self.device_type {
30128 return 2;
30129 }
30130 if let Some(_) = self.rx_on_when_idle {
30131 return 1;
30132 }
30133 0
30134 }
30135 }
30136
30137 impl fidl::encoding::ValueTypeMarker for ThreadLinkMode {
30138 type Borrowed<'a> = &'a Self;
30139 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
30140 value
30141 }
30142 }
30143
30144 unsafe impl fidl::encoding::TypeMarker for ThreadLinkMode {
30145 type Owned = Self;
30146
30147 #[inline(always)]
30148 fn inline_align(_context: fidl::encoding::Context) -> usize {
30149 8
30150 }
30151
30152 #[inline(always)]
30153 fn inline_size(_context: fidl::encoding::Context) -> usize {
30154 16
30155 }
30156 }
30157
30158 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ThreadLinkMode, D>
30159 for &ThreadLinkMode
30160 {
30161 unsafe fn encode(
30162 self,
30163 encoder: &mut fidl::encoding::Encoder<'_, D>,
30164 offset: usize,
30165 mut depth: fidl::encoding::Depth,
30166 ) -> fidl::Result<()> {
30167 encoder.debug_check_bounds::<ThreadLinkMode>(offset);
30168 let max_ordinal: u64 = self.max_ordinal_present();
30170 encoder.write_num(max_ordinal, offset);
30171 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
30172 if max_ordinal == 0 {
30174 return Ok(());
30175 }
30176 depth.increment()?;
30177 let envelope_size = 8;
30178 let bytes_len = max_ordinal as usize * envelope_size;
30179 #[allow(unused_variables)]
30180 let offset = encoder.out_of_line_offset(bytes_len);
30181 let mut _prev_end_offset: usize = 0;
30182 if 1 > max_ordinal {
30183 return Ok(());
30184 }
30185
30186 let cur_offset: usize = (1 - 1) * envelope_size;
30189
30190 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
30192
30193 fidl::encoding::encode_in_envelope_optional::<bool, D>(
30198 self.rx_on_when_idle
30199 .as_ref()
30200 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
30201 encoder,
30202 offset + cur_offset,
30203 depth,
30204 )?;
30205
30206 _prev_end_offset = cur_offset + envelope_size;
30207 if 2 > max_ordinal {
30208 return Ok(());
30209 }
30210
30211 let cur_offset: usize = (2 - 1) * envelope_size;
30214
30215 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
30217
30218 fidl::encoding::encode_in_envelope_optional::<bool, D>(
30223 self.device_type.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
30224 encoder,
30225 offset + cur_offset,
30226 depth,
30227 )?;
30228
30229 _prev_end_offset = cur_offset + envelope_size;
30230 if 3 > max_ordinal {
30231 return Ok(());
30232 }
30233
30234 let cur_offset: usize = (3 - 1) * envelope_size;
30237
30238 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
30240
30241 fidl::encoding::encode_in_envelope_optional::<bool, D>(
30246 self.network_data.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
30247 encoder,
30248 offset + cur_offset,
30249 depth,
30250 )?;
30251
30252 _prev_end_offset = cur_offset + envelope_size;
30253
30254 Ok(())
30255 }
30256 }
30257
30258 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ThreadLinkMode {
30259 #[inline(always)]
30260 fn new_empty() -> Self {
30261 Self::default()
30262 }
30263
30264 unsafe fn decode(
30265 &mut self,
30266 decoder: &mut fidl::encoding::Decoder<'_, D>,
30267 offset: usize,
30268 mut depth: fidl::encoding::Depth,
30269 ) -> fidl::Result<()> {
30270 decoder.debug_check_bounds::<Self>(offset);
30271 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
30272 None => return Err(fidl::Error::NotNullable),
30273 Some(len) => len,
30274 };
30275 if len == 0 {
30277 return Ok(());
30278 };
30279 depth.increment()?;
30280 let envelope_size = 8;
30281 let bytes_len = len * envelope_size;
30282 let offset = decoder.out_of_line_offset(bytes_len)?;
30283 let mut _next_ordinal_to_read = 0;
30285 let mut next_offset = offset;
30286 let end_offset = offset + bytes_len;
30287 _next_ordinal_to_read += 1;
30288 if next_offset >= end_offset {
30289 return Ok(());
30290 }
30291
30292 while _next_ordinal_to_read < 1 {
30294 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30295 _next_ordinal_to_read += 1;
30296 next_offset += envelope_size;
30297 }
30298
30299 let next_out_of_line = decoder.next_out_of_line();
30300 let handles_before = decoder.remaining_handles();
30301 if let Some((inlined, num_bytes, num_handles)) =
30302 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30303 {
30304 let member_inline_size =
30305 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30306 if inlined != (member_inline_size <= 4) {
30307 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30308 }
30309 let inner_offset;
30310 let mut inner_depth = depth.clone();
30311 if inlined {
30312 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30313 inner_offset = next_offset;
30314 } else {
30315 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30316 inner_depth.increment()?;
30317 }
30318 let val_ref = self.rx_on_when_idle.get_or_insert_with(|| fidl::new_empty!(bool, D));
30319 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
30320 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30321 {
30322 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30323 }
30324 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30325 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30326 }
30327 }
30328
30329 next_offset += envelope_size;
30330 _next_ordinal_to_read += 1;
30331 if next_offset >= end_offset {
30332 return Ok(());
30333 }
30334
30335 while _next_ordinal_to_read < 2 {
30337 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30338 _next_ordinal_to_read += 1;
30339 next_offset += envelope_size;
30340 }
30341
30342 let next_out_of_line = decoder.next_out_of_line();
30343 let handles_before = decoder.remaining_handles();
30344 if let Some((inlined, num_bytes, num_handles)) =
30345 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30346 {
30347 let member_inline_size =
30348 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30349 if inlined != (member_inline_size <= 4) {
30350 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30351 }
30352 let inner_offset;
30353 let mut inner_depth = depth.clone();
30354 if inlined {
30355 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30356 inner_offset = next_offset;
30357 } else {
30358 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30359 inner_depth.increment()?;
30360 }
30361 let val_ref = self.device_type.get_or_insert_with(|| fidl::new_empty!(bool, D));
30362 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
30363 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30364 {
30365 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30366 }
30367 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30368 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30369 }
30370 }
30371
30372 next_offset += envelope_size;
30373 _next_ordinal_to_read += 1;
30374 if next_offset >= end_offset {
30375 return Ok(());
30376 }
30377
30378 while _next_ordinal_to_read < 3 {
30380 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30381 _next_ordinal_to_read += 1;
30382 next_offset += envelope_size;
30383 }
30384
30385 let next_out_of_line = decoder.next_out_of_line();
30386 let handles_before = decoder.remaining_handles();
30387 if let Some((inlined, num_bytes, num_handles)) =
30388 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30389 {
30390 let member_inline_size =
30391 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30392 if inlined != (member_inline_size <= 4) {
30393 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30394 }
30395 let inner_offset;
30396 let mut inner_depth = depth.clone();
30397 if inlined {
30398 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30399 inner_offset = next_offset;
30400 } else {
30401 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30402 inner_depth.increment()?;
30403 }
30404 let val_ref = self.network_data.get_or_insert_with(|| fidl::new_empty!(bool, D));
30405 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
30406 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30407 {
30408 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30409 }
30410 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30411 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30412 }
30413 }
30414
30415 next_offset += envelope_size;
30416
30417 while next_offset < end_offset {
30419 _next_ordinal_to_read += 1;
30420 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30421 next_offset += envelope_size;
30422 }
30423
30424 Ok(())
30425 }
30426 }
30427
30428 impl ThreadNeighborInfoEntry {
30429 #[inline(always)]
30430 fn max_ordinal_present(&self) -> u64 {
30431 if let Some(_) = self.avg_rssi {
30432 return 7;
30433 }
30434 if let Some(_) = self.mode {
30435 return 6;
30436 }
30437 if let Some(_) = self.rloc16 {
30438 return 5;
30439 }
30440 if let Some(_) = self.extended_address {
30441 return 4;
30442 }
30443 if let Some(_) = self.event {
30444 return 3;
30445 }
30446 if let Some(_) = self.is_child {
30447 return 2;
30448 }
30449 if let Some(_) = self.age {
30450 return 1;
30451 }
30452 0
30453 }
30454 }
30455
30456 impl fidl::encoding::ValueTypeMarker for ThreadNeighborInfoEntry {
30457 type Borrowed<'a> = &'a Self;
30458 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
30459 value
30460 }
30461 }
30462
30463 unsafe impl fidl::encoding::TypeMarker for ThreadNeighborInfoEntry {
30464 type Owned = Self;
30465
30466 #[inline(always)]
30467 fn inline_align(_context: fidl::encoding::Context) -> usize {
30468 8
30469 }
30470
30471 #[inline(always)]
30472 fn inline_size(_context: fidl::encoding::Context) -> usize {
30473 16
30474 }
30475 }
30476
30477 unsafe impl<D: fidl::encoding::ResourceDialect>
30478 fidl::encoding::Encode<ThreadNeighborInfoEntry, D> for &ThreadNeighborInfoEntry
30479 {
30480 unsafe fn encode(
30481 self,
30482 encoder: &mut fidl::encoding::Encoder<'_, D>,
30483 offset: usize,
30484 mut depth: fidl::encoding::Depth,
30485 ) -> fidl::Result<()> {
30486 encoder.debug_check_bounds::<ThreadNeighborInfoEntry>(offset);
30487 let max_ordinal: u64 = self.max_ordinal_present();
30489 encoder.write_num(max_ordinal, offset);
30490 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
30491 if max_ordinal == 0 {
30493 return Ok(());
30494 }
30495 depth.increment()?;
30496 let envelope_size = 8;
30497 let bytes_len = max_ordinal as usize * envelope_size;
30498 #[allow(unused_variables)]
30499 let offset = encoder.out_of_line_offset(bytes_len);
30500 let mut _prev_end_offset: usize = 0;
30501 if 1 > max_ordinal {
30502 return Ok(());
30503 }
30504
30505 let cur_offset: usize = (1 - 1) * envelope_size;
30508
30509 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
30511
30512 fidl::encoding::encode_in_envelope_optional::<i64, D>(
30517 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
30518 encoder,
30519 offset + cur_offset,
30520 depth,
30521 )?;
30522
30523 _prev_end_offset = cur_offset + envelope_size;
30524 if 2 > max_ordinal {
30525 return Ok(());
30526 }
30527
30528 let cur_offset: usize = (2 - 1) * envelope_size;
30531
30532 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
30534
30535 fidl::encoding::encode_in_envelope_optional::<bool, D>(
30540 self.is_child.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
30541 encoder,
30542 offset + cur_offset,
30543 depth,
30544 )?;
30545
30546 _prev_end_offset = cur_offset + envelope_size;
30547 if 3 > max_ordinal {
30548 return Ok(());
30549 }
30550
30551 let cur_offset: usize = (3 - 1) * envelope_size;
30554
30555 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
30557
30558 fidl::encoding::encode_in_envelope_optional::<HistoryTrackerNeighborEvent, D>(
30563 self.event
30564 .as_ref()
30565 .map(<HistoryTrackerNeighborEvent as fidl::encoding::ValueTypeMarker>::borrow),
30566 encoder,
30567 offset + cur_offset,
30568 depth,
30569 )?;
30570
30571 _prev_end_offset = cur_offset + envelope_size;
30572 if 4 > max_ordinal {
30573 return Ok(());
30574 }
30575
30576 let cur_offset: usize = (4 - 1) * envelope_size;
30579
30580 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
30582
30583 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
30588 self.extended_address.as_ref().map(
30589 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
30590 ),
30591 encoder,
30592 offset + cur_offset,
30593 depth,
30594 )?;
30595
30596 _prev_end_offset = cur_offset + envelope_size;
30597 if 5 > max_ordinal {
30598 return Ok(());
30599 }
30600
30601 let cur_offset: usize = (5 - 1) * envelope_size;
30604
30605 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
30607
30608 fidl::encoding::encode_in_envelope_optional::<u16, D>(
30613 self.rloc16.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
30614 encoder,
30615 offset + cur_offset,
30616 depth,
30617 )?;
30618
30619 _prev_end_offset = cur_offset + envelope_size;
30620 if 6 > max_ordinal {
30621 return Ok(());
30622 }
30623
30624 let cur_offset: usize = (6 - 1) * envelope_size;
30627
30628 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
30630
30631 fidl::encoding::encode_in_envelope_optional::<ThreadLinkMode, D>(
30636 self.mode.as_ref().map(<ThreadLinkMode as fidl::encoding::ValueTypeMarker>::borrow),
30637 encoder,
30638 offset + cur_offset,
30639 depth,
30640 )?;
30641
30642 _prev_end_offset = cur_offset + envelope_size;
30643 if 7 > max_ordinal {
30644 return Ok(());
30645 }
30646
30647 let cur_offset: usize = (7 - 1) * envelope_size;
30650
30651 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
30653
30654 fidl::encoding::encode_in_envelope_optional::<i32, D>(
30659 self.avg_rssi.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
30660 encoder,
30661 offset + cur_offset,
30662 depth,
30663 )?;
30664
30665 _prev_end_offset = cur_offset + envelope_size;
30666
30667 Ok(())
30668 }
30669 }
30670
30671 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
30672 for ThreadNeighborInfoEntry
30673 {
30674 #[inline(always)]
30675 fn new_empty() -> Self {
30676 Self::default()
30677 }
30678
30679 unsafe fn decode(
30680 &mut self,
30681 decoder: &mut fidl::encoding::Decoder<'_, D>,
30682 offset: usize,
30683 mut depth: fidl::encoding::Depth,
30684 ) -> fidl::Result<()> {
30685 decoder.debug_check_bounds::<Self>(offset);
30686 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
30687 None => return Err(fidl::Error::NotNullable),
30688 Some(len) => len,
30689 };
30690 if len == 0 {
30692 return Ok(());
30693 };
30694 depth.increment()?;
30695 let envelope_size = 8;
30696 let bytes_len = len * envelope_size;
30697 let offset = decoder.out_of_line_offset(bytes_len)?;
30698 let mut _next_ordinal_to_read = 0;
30700 let mut next_offset = offset;
30701 let end_offset = offset + bytes_len;
30702 _next_ordinal_to_read += 1;
30703 if next_offset >= end_offset {
30704 return Ok(());
30705 }
30706
30707 while _next_ordinal_to_read < 1 {
30709 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30710 _next_ordinal_to_read += 1;
30711 next_offset += envelope_size;
30712 }
30713
30714 let next_out_of_line = decoder.next_out_of_line();
30715 let handles_before = decoder.remaining_handles();
30716 if let Some((inlined, num_bytes, num_handles)) =
30717 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30718 {
30719 let member_inline_size =
30720 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30721 if inlined != (member_inline_size <= 4) {
30722 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30723 }
30724 let inner_offset;
30725 let mut inner_depth = depth.clone();
30726 if inlined {
30727 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30728 inner_offset = next_offset;
30729 } else {
30730 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30731 inner_depth.increment()?;
30732 }
30733 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
30734 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
30735 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30736 {
30737 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30738 }
30739 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30740 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30741 }
30742 }
30743
30744 next_offset += envelope_size;
30745 _next_ordinal_to_read += 1;
30746 if next_offset >= end_offset {
30747 return Ok(());
30748 }
30749
30750 while _next_ordinal_to_read < 2 {
30752 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30753 _next_ordinal_to_read += 1;
30754 next_offset += envelope_size;
30755 }
30756
30757 let next_out_of_line = decoder.next_out_of_line();
30758 let handles_before = decoder.remaining_handles();
30759 if let Some((inlined, num_bytes, num_handles)) =
30760 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30761 {
30762 let member_inline_size =
30763 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30764 if inlined != (member_inline_size <= 4) {
30765 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30766 }
30767 let inner_offset;
30768 let mut inner_depth = depth.clone();
30769 if inlined {
30770 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30771 inner_offset = next_offset;
30772 } else {
30773 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30774 inner_depth.increment()?;
30775 }
30776 let val_ref = self.is_child.get_or_insert_with(|| fidl::new_empty!(bool, D));
30777 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
30778 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30779 {
30780 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30781 }
30782 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30783 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30784 }
30785 }
30786
30787 next_offset += envelope_size;
30788 _next_ordinal_to_read += 1;
30789 if next_offset >= end_offset {
30790 return Ok(());
30791 }
30792
30793 while _next_ordinal_to_read < 3 {
30795 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30796 _next_ordinal_to_read += 1;
30797 next_offset += envelope_size;
30798 }
30799
30800 let next_out_of_line = decoder.next_out_of_line();
30801 let handles_before = decoder.remaining_handles();
30802 if let Some((inlined, num_bytes, num_handles)) =
30803 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30804 {
30805 let member_inline_size =
30806 <HistoryTrackerNeighborEvent as fidl::encoding::TypeMarker>::inline_size(
30807 decoder.context,
30808 );
30809 if inlined != (member_inline_size <= 4) {
30810 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30811 }
30812 let inner_offset;
30813 let mut inner_depth = depth.clone();
30814 if inlined {
30815 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30816 inner_offset = next_offset;
30817 } else {
30818 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30819 inner_depth.increment()?;
30820 }
30821 let val_ref = self
30822 .event
30823 .get_or_insert_with(|| fidl::new_empty!(HistoryTrackerNeighborEvent, D));
30824 fidl::decode!(
30825 HistoryTrackerNeighborEvent,
30826 D,
30827 val_ref,
30828 decoder,
30829 inner_offset,
30830 inner_depth
30831 )?;
30832 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30833 {
30834 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30835 }
30836 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30837 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30838 }
30839 }
30840
30841 next_offset += envelope_size;
30842 _next_ordinal_to_read += 1;
30843 if next_offset >= end_offset {
30844 return Ok(());
30845 }
30846
30847 while _next_ordinal_to_read < 4 {
30849 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30850 _next_ordinal_to_read += 1;
30851 next_offset += envelope_size;
30852 }
30853
30854 let next_out_of_line = decoder.next_out_of_line();
30855 let handles_before = decoder.remaining_handles();
30856 if let Some((inlined, num_bytes, num_handles)) =
30857 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30858 {
30859 let member_inline_size =
30860 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
30861 decoder.context,
30862 );
30863 if inlined != (member_inline_size <= 4) {
30864 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30865 }
30866 let inner_offset;
30867 let mut inner_depth = depth.clone();
30868 if inlined {
30869 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30870 inner_offset = next_offset;
30871 } else {
30872 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30873 inner_depth.increment()?;
30874 }
30875 let val_ref = self
30876 .extended_address
30877 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
30878 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
30879 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30880 {
30881 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30882 }
30883 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30884 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30885 }
30886 }
30887
30888 next_offset += envelope_size;
30889 _next_ordinal_to_read += 1;
30890 if next_offset >= end_offset {
30891 return Ok(());
30892 }
30893
30894 while _next_ordinal_to_read < 5 {
30896 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30897 _next_ordinal_to_read += 1;
30898 next_offset += envelope_size;
30899 }
30900
30901 let next_out_of_line = decoder.next_out_of_line();
30902 let handles_before = decoder.remaining_handles();
30903 if let Some((inlined, num_bytes, num_handles)) =
30904 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30905 {
30906 let member_inline_size =
30907 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30908 if inlined != (member_inline_size <= 4) {
30909 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30910 }
30911 let inner_offset;
30912 let mut inner_depth = depth.clone();
30913 if inlined {
30914 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30915 inner_offset = next_offset;
30916 } else {
30917 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30918 inner_depth.increment()?;
30919 }
30920 let val_ref = self.rloc16.get_or_insert_with(|| fidl::new_empty!(u16, D));
30921 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
30922 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30923 {
30924 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30925 }
30926 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30927 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30928 }
30929 }
30930
30931 next_offset += envelope_size;
30932 _next_ordinal_to_read += 1;
30933 if next_offset >= end_offset {
30934 return Ok(());
30935 }
30936
30937 while _next_ordinal_to_read < 6 {
30939 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30940 _next_ordinal_to_read += 1;
30941 next_offset += envelope_size;
30942 }
30943
30944 let next_out_of_line = decoder.next_out_of_line();
30945 let handles_before = decoder.remaining_handles();
30946 if let Some((inlined, num_bytes, num_handles)) =
30947 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30948 {
30949 let member_inline_size =
30950 <ThreadLinkMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30951 if inlined != (member_inline_size <= 4) {
30952 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30953 }
30954 let inner_offset;
30955 let mut inner_depth = depth.clone();
30956 if inlined {
30957 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
30958 inner_offset = next_offset;
30959 } else {
30960 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
30961 inner_depth.increment()?;
30962 }
30963 let val_ref = self.mode.get_or_insert_with(|| fidl::new_empty!(ThreadLinkMode, D));
30964 fidl::decode!(ThreadLinkMode, D, val_ref, decoder, inner_offset, inner_depth)?;
30965 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
30966 {
30967 return Err(fidl::Error::InvalidNumBytesInEnvelope);
30968 }
30969 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
30970 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
30971 }
30972 }
30973
30974 next_offset += envelope_size;
30975 _next_ordinal_to_read += 1;
30976 if next_offset >= end_offset {
30977 return Ok(());
30978 }
30979
30980 while _next_ordinal_to_read < 7 {
30982 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
30983 _next_ordinal_to_read += 1;
30984 next_offset += envelope_size;
30985 }
30986
30987 let next_out_of_line = decoder.next_out_of_line();
30988 let handles_before = decoder.remaining_handles();
30989 if let Some((inlined, num_bytes, num_handles)) =
30990 fidl::encoding::decode_envelope_header(decoder, next_offset)?
30991 {
30992 let member_inline_size =
30993 <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
30994 if inlined != (member_inline_size <= 4) {
30995 return Err(fidl::Error::InvalidInlineBitInEnvelope);
30996 }
30997 let inner_offset;
30998 let mut inner_depth = depth.clone();
30999 if inlined {
31000 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31001 inner_offset = next_offset;
31002 } else {
31003 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31004 inner_depth.increment()?;
31005 }
31006 let val_ref = self.avg_rssi.get_or_insert_with(|| fidl::new_empty!(i32, D));
31007 fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
31008 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
31009 {
31010 return Err(fidl::Error::InvalidNumBytesInEnvelope);
31011 }
31012 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
31013 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
31014 }
31015 }
31016
31017 next_offset += envelope_size;
31018
31019 while next_offset < end_offset {
31021 _next_ordinal_to_read += 1;
31022 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31023 next_offset += envelope_size;
31024 }
31025
31026 Ok(())
31027 }
31028 }
31029
31030 impl ThreadNetDataPrefixInfoEntry {
31031 #[inline(always)]
31032 fn max_ordinal_present(&self) -> u64 {
31033 if let Some(_) = self.on_mesh_prefix {
31034 return 3;
31035 }
31036 if let Some(_) = self.event {
31037 return 2;
31038 }
31039 if let Some(_) = self.age {
31040 return 1;
31041 }
31042 0
31043 }
31044 }
31045
31046 impl fidl::encoding::ValueTypeMarker for ThreadNetDataPrefixInfoEntry {
31047 type Borrowed<'a> = &'a Self;
31048 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
31049 value
31050 }
31051 }
31052
31053 unsafe impl fidl::encoding::TypeMarker for ThreadNetDataPrefixInfoEntry {
31054 type Owned = Self;
31055
31056 #[inline(always)]
31057 fn inline_align(_context: fidl::encoding::Context) -> usize {
31058 8
31059 }
31060
31061 #[inline(always)]
31062 fn inline_size(_context: fidl::encoding::Context) -> usize {
31063 16
31064 }
31065 }
31066
31067 unsafe impl<D: fidl::encoding::ResourceDialect>
31068 fidl::encoding::Encode<ThreadNetDataPrefixInfoEntry, D> for &ThreadNetDataPrefixInfoEntry
31069 {
31070 unsafe fn encode(
31071 self,
31072 encoder: &mut fidl::encoding::Encoder<'_, D>,
31073 offset: usize,
31074 mut depth: fidl::encoding::Depth,
31075 ) -> fidl::Result<()> {
31076 encoder.debug_check_bounds::<ThreadNetDataPrefixInfoEntry>(offset);
31077 let max_ordinal: u64 = self.max_ordinal_present();
31079 encoder.write_num(max_ordinal, offset);
31080 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
31081 if max_ordinal == 0 {
31083 return Ok(());
31084 }
31085 depth.increment()?;
31086 let envelope_size = 8;
31087 let bytes_len = max_ordinal as usize * envelope_size;
31088 #[allow(unused_variables)]
31089 let offset = encoder.out_of_line_offset(bytes_len);
31090 let mut _prev_end_offset: usize = 0;
31091 if 1 > max_ordinal {
31092 return Ok(());
31093 }
31094
31095 let cur_offset: usize = (1 - 1) * envelope_size;
31098
31099 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
31101
31102 fidl::encoding::encode_in_envelope_optional::<i64, D>(
31107 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
31108 encoder,
31109 offset + cur_offset,
31110 depth,
31111 )?;
31112
31113 _prev_end_offset = cur_offset + envelope_size;
31114 if 2 > max_ordinal {
31115 return Ok(());
31116 }
31117
31118 let cur_offset: usize = (2 - 1) * envelope_size;
31121
31122 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
31124
31125 fidl::encoding::encode_in_envelope_optional::<HistoryTrackerNetDataEvent, D>(
31130 self.event
31131 .as_ref()
31132 .map(<HistoryTrackerNetDataEvent as fidl::encoding::ValueTypeMarker>::borrow),
31133 encoder,
31134 offset + cur_offset,
31135 depth,
31136 )?;
31137
31138 _prev_end_offset = cur_offset + envelope_size;
31139 if 3 > max_ordinal {
31140 return Ok(());
31141 }
31142
31143 let cur_offset: usize = (3 - 1) * envelope_size;
31146
31147 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
31149
31150 fidl::encoding::encode_in_envelope_optional::<BorderRouterConfig, D>(
31155 self.on_mesh_prefix
31156 .as_ref()
31157 .map(<BorderRouterConfig as fidl::encoding::ValueTypeMarker>::borrow),
31158 encoder,
31159 offset + cur_offset,
31160 depth,
31161 )?;
31162
31163 _prev_end_offset = cur_offset + envelope_size;
31164
31165 Ok(())
31166 }
31167 }
31168
31169 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
31170 for ThreadNetDataPrefixInfoEntry
31171 {
31172 #[inline(always)]
31173 fn new_empty() -> Self {
31174 Self::default()
31175 }
31176
31177 unsafe fn decode(
31178 &mut self,
31179 decoder: &mut fidl::encoding::Decoder<'_, D>,
31180 offset: usize,
31181 mut depth: fidl::encoding::Depth,
31182 ) -> fidl::Result<()> {
31183 decoder.debug_check_bounds::<Self>(offset);
31184 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
31185 None => return Err(fidl::Error::NotNullable),
31186 Some(len) => len,
31187 };
31188 if len == 0 {
31190 return Ok(());
31191 };
31192 depth.increment()?;
31193 let envelope_size = 8;
31194 let bytes_len = len * envelope_size;
31195 let offset = decoder.out_of_line_offset(bytes_len)?;
31196 let mut _next_ordinal_to_read = 0;
31198 let mut next_offset = offset;
31199 let end_offset = offset + bytes_len;
31200 _next_ordinal_to_read += 1;
31201 if next_offset >= end_offset {
31202 return Ok(());
31203 }
31204
31205 while _next_ordinal_to_read < 1 {
31207 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31208 _next_ordinal_to_read += 1;
31209 next_offset += envelope_size;
31210 }
31211
31212 let next_out_of_line = decoder.next_out_of_line();
31213 let handles_before = decoder.remaining_handles();
31214 if let Some((inlined, num_bytes, num_handles)) =
31215 fidl::encoding::decode_envelope_header(decoder, next_offset)?
31216 {
31217 let member_inline_size =
31218 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
31219 if inlined != (member_inline_size <= 4) {
31220 return Err(fidl::Error::InvalidInlineBitInEnvelope);
31221 }
31222 let inner_offset;
31223 let mut inner_depth = depth.clone();
31224 if inlined {
31225 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31226 inner_offset = next_offset;
31227 } else {
31228 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31229 inner_depth.increment()?;
31230 }
31231 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
31232 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
31233 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
31234 {
31235 return Err(fidl::Error::InvalidNumBytesInEnvelope);
31236 }
31237 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
31238 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
31239 }
31240 }
31241
31242 next_offset += envelope_size;
31243 _next_ordinal_to_read += 1;
31244 if next_offset >= end_offset {
31245 return Ok(());
31246 }
31247
31248 while _next_ordinal_to_read < 2 {
31250 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31251 _next_ordinal_to_read += 1;
31252 next_offset += envelope_size;
31253 }
31254
31255 let next_out_of_line = decoder.next_out_of_line();
31256 let handles_before = decoder.remaining_handles();
31257 if let Some((inlined, num_bytes, num_handles)) =
31258 fidl::encoding::decode_envelope_header(decoder, next_offset)?
31259 {
31260 let member_inline_size =
31261 <HistoryTrackerNetDataEvent as fidl::encoding::TypeMarker>::inline_size(
31262 decoder.context,
31263 );
31264 if inlined != (member_inline_size <= 4) {
31265 return Err(fidl::Error::InvalidInlineBitInEnvelope);
31266 }
31267 let inner_offset;
31268 let mut inner_depth = depth.clone();
31269 if inlined {
31270 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31271 inner_offset = next_offset;
31272 } else {
31273 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31274 inner_depth.increment()?;
31275 }
31276 let val_ref = self
31277 .event
31278 .get_or_insert_with(|| fidl::new_empty!(HistoryTrackerNetDataEvent, D));
31279 fidl::decode!(
31280 HistoryTrackerNetDataEvent,
31281 D,
31282 val_ref,
31283 decoder,
31284 inner_offset,
31285 inner_depth
31286 )?;
31287 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
31288 {
31289 return Err(fidl::Error::InvalidNumBytesInEnvelope);
31290 }
31291 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
31292 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
31293 }
31294 }
31295
31296 next_offset += envelope_size;
31297 _next_ordinal_to_read += 1;
31298 if next_offset >= end_offset {
31299 return Ok(());
31300 }
31301
31302 while _next_ordinal_to_read < 3 {
31304 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31305 _next_ordinal_to_read += 1;
31306 next_offset += envelope_size;
31307 }
31308
31309 let next_out_of_line = decoder.next_out_of_line();
31310 let handles_before = decoder.remaining_handles();
31311 if let Some((inlined, num_bytes, num_handles)) =
31312 fidl::encoding::decode_envelope_header(decoder, next_offset)?
31313 {
31314 let member_inline_size =
31315 <BorderRouterConfig as fidl::encoding::TypeMarker>::inline_size(
31316 decoder.context,
31317 );
31318 if inlined != (member_inline_size <= 4) {
31319 return Err(fidl::Error::InvalidInlineBitInEnvelope);
31320 }
31321 let inner_offset;
31322 let mut inner_depth = depth.clone();
31323 if inlined {
31324 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31325 inner_offset = next_offset;
31326 } else {
31327 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31328 inner_depth.increment()?;
31329 }
31330 let val_ref = self
31331 .on_mesh_prefix
31332 .get_or_insert_with(|| fidl::new_empty!(BorderRouterConfig, D));
31333 fidl::decode!(BorderRouterConfig, D, val_ref, decoder, inner_offset, inner_depth)?;
31334 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
31335 {
31336 return Err(fidl::Error::InvalidNumBytesInEnvelope);
31337 }
31338 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
31339 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
31340 }
31341 }
31342
31343 next_offset += envelope_size;
31344
31345 while next_offset < end_offset {
31347 _next_ordinal_to_read += 1;
31348 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31349 next_offset += envelope_size;
31350 }
31351
31352 Ok(())
31353 }
31354 }
31355
31356 impl ThreadNetDataRouteInfoEntry {
31357 #[inline(always)]
31358 fn max_ordinal_present(&self) -> u64 {
31359 if let Some(_) = self.external_route {
31360 return 3;
31361 }
31362 if let Some(_) = self.event {
31363 return 2;
31364 }
31365 if let Some(_) = self.age {
31366 return 1;
31367 }
31368 0
31369 }
31370 }
31371
31372 impl fidl::encoding::ValueTypeMarker for ThreadNetDataRouteInfoEntry {
31373 type Borrowed<'a> = &'a Self;
31374 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
31375 value
31376 }
31377 }
31378
31379 unsafe impl fidl::encoding::TypeMarker for ThreadNetDataRouteInfoEntry {
31380 type Owned = Self;
31381
31382 #[inline(always)]
31383 fn inline_align(_context: fidl::encoding::Context) -> usize {
31384 8
31385 }
31386
31387 #[inline(always)]
31388 fn inline_size(_context: fidl::encoding::Context) -> usize {
31389 16
31390 }
31391 }
31392
31393 unsafe impl<D: fidl::encoding::ResourceDialect>
31394 fidl::encoding::Encode<ThreadNetDataRouteInfoEntry, D> for &ThreadNetDataRouteInfoEntry
31395 {
31396 unsafe fn encode(
31397 self,
31398 encoder: &mut fidl::encoding::Encoder<'_, D>,
31399 offset: usize,
31400 mut depth: fidl::encoding::Depth,
31401 ) -> fidl::Result<()> {
31402 encoder.debug_check_bounds::<ThreadNetDataRouteInfoEntry>(offset);
31403 let max_ordinal: u64 = self.max_ordinal_present();
31405 encoder.write_num(max_ordinal, offset);
31406 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
31407 if max_ordinal == 0 {
31409 return Ok(());
31410 }
31411 depth.increment()?;
31412 let envelope_size = 8;
31413 let bytes_len = max_ordinal as usize * envelope_size;
31414 #[allow(unused_variables)]
31415 let offset = encoder.out_of_line_offset(bytes_len);
31416 let mut _prev_end_offset: usize = 0;
31417 if 1 > max_ordinal {
31418 return Ok(());
31419 }
31420
31421 let cur_offset: usize = (1 - 1) * envelope_size;
31424
31425 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
31427
31428 fidl::encoding::encode_in_envelope_optional::<i64, D>(
31433 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
31434 encoder,
31435 offset + cur_offset,
31436 depth,
31437 )?;
31438
31439 _prev_end_offset = cur_offset + envelope_size;
31440 if 2 > max_ordinal {
31441 return Ok(());
31442 }
31443
31444 let cur_offset: usize = (2 - 1) * envelope_size;
31447
31448 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
31450
31451 fidl::encoding::encode_in_envelope_optional::<HistoryTrackerNetDataEvent, D>(
31456 self.event
31457 .as_ref()
31458 .map(<HistoryTrackerNetDataEvent as fidl::encoding::ValueTypeMarker>::borrow),
31459 encoder,
31460 offset + cur_offset,
31461 depth,
31462 )?;
31463
31464 _prev_end_offset = cur_offset + envelope_size;
31465 if 3 > max_ordinal {
31466 return Ok(());
31467 }
31468
31469 let cur_offset: usize = (3 - 1) * envelope_size;
31472
31473 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
31475
31476 fidl::encoding::encode_in_envelope_optional::<ExternalRouteConfig, D>(
31481 self.external_route
31482 .as_ref()
31483 .map(<ExternalRouteConfig as fidl::encoding::ValueTypeMarker>::borrow),
31484 encoder,
31485 offset + cur_offset,
31486 depth,
31487 )?;
31488
31489 _prev_end_offset = cur_offset + envelope_size;
31490
31491 Ok(())
31492 }
31493 }
31494
31495 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
31496 for ThreadNetDataRouteInfoEntry
31497 {
31498 #[inline(always)]
31499 fn new_empty() -> Self {
31500 Self::default()
31501 }
31502
31503 unsafe fn decode(
31504 &mut self,
31505 decoder: &mut fidl::encoding::Decoder<'_, D>,
31506 offset: usize,
31507 mut depth: fidl::encoding::Depth,
31508 ) -> fidl::Result<()> {
31509 decoder.debug_check_bounds::<Self>(offset);
31510 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
31511 None => return Err(fidl::Error::NotNullable),
31512 Some(len) => len,
31513 };
31514 if len == 0 {
31516 return Ok(());
31517 };
31518 depth.increment()?;
31519 let envelope_size = 8;
31520 let bytes_len = len * envelope_size;
31521 let offset = decoder.out_of_line_offset(bytes_len)?;
31522 let mut _next_ordinal_to_read = 0;
31524 let mut next_offset = offset;
31525 let end_offset = offset + bytes_len;
31526 _next_ordinal_to_read += 1;
31527 if next_offset >= end_offset {
31528 return Ok(());
31529 }
31530
31531 while _next_ordinal_to_read < 1 {
31533 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31534 _next_ordinal_to_read += 1;
31535 next_offset += envelope_size;
31536 }
31537
31538 let next_out_of_line = decoder.next_out_of_line();
31539 let handles_before = decoder.remaining_handles();
31540 if let Some((inlined, num_bytes, num_handles)) =
31541 fidl::encoding::decode_envelope_header(decoder, next_offset)?
31542 {
31543 let member_inline_size =
31544 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
31545 if inlined != (member_inline_size <= 4) {
31546 return Err(fidl::Error::InvalidInlineBitInEnvelope);
31547 }
31548 let inner_offset;
31549 let mut inner_depth = depth.clone();
31550 if inlined {
31551 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31552 inner_offset = next_offset;
31553 } else {
31554 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31555 inner_depth.increment()?;
31556 }
31557 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
31558 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
31559 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
31560 {
31561 return Err(fidl::Error::InvalidNumBytesInEnvelope);
31562 }
31563 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
31564 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
31565 }
31566 }
31567
31568 next_offset += envelope_size;
31569 _next_ordinal_to_read += 1;
31570 if next_offset >= end_offset {
31571 return Ok(());
31572 }
31573
31574 while _next_ordinal_to_read < 2 {
31576 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31577 _next_ordinal_to_read += 1;
31578 next_offset += envelope_size;
31579 }
31580
31581 let next_out_of_line = decoder.next_out_of_line();
31582 let handles_before = decoder.remaining_handles();
31583 if let Some((inlined, num_bytes, num_handles)) =
31584 fidl::encoding::decode_envelope_header(decoder, next_offset)?
31585 {
31586 let member_inline_size =
31587 <HistoryTrackerNetDataEvent as fidl::encoding::TypeMarker>::inline_size(
31588 decoder.context,
31589 );
31590 if inlined != (member_inline_size <= 4) {
31591 return Err(fidl::Error::InvalidInlineBitInEnvelope);
31592 }
31593 let inner_offset;
31594 let mut inner_depth = depth.clone();
31595 if inlined {
31596 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31597 inner_offset = next_offset;
31598 } else {
31599 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31600 inner_depth.increment()?;
31601 }
31602 let val_ref = self
31603 .event
31604 .get_or_insert_with(|| fidl::new_empty!(HistoryTrackerNetDataEvent, D));
31605 fidl::decode!(
31606 HistoryTrackerNetDataEvent,
31607 D,
31608 val_ref,
31609 decoder,
31610 inner_offset,
31611 inner_depth
31612 )?;
31613 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
31614 {
31615 return Err(fidl::Error::InvalidNumBytesInEnvelope);
31616 }
31617 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
31618 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
31619 }
31620 }
31621
31622 next_offset += envelope_size;
31623 _next_ordinal_to_read += 1;
31624 if next_offset >= end_offset {
31625 return Ok(());
31626 }
31627
31628 while _next_ordinal_to_read < 3 {
31630 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31631 _next_ordinal_to_read += 1;
31632 next_offset += envelope_size;
31633 }
31634
31635 let next_out_of_line = decoder.next_out_of_line();
31636 let handles_before = decoder.remaining_handles();
31637 if let Some((inlined, num_bytes, num_handles)) =
31638 fidl::encoding::decode_envelope_header(decoder, next_offset)?
31639 {
31640 let member_inline_size =
31641 <ExternalRouteConfig as fidl::encoding::TypeMarker>::inline_size(
31642 decoder.context,
31643 );
31644 if inlined != (member_inline_size <= 4) {
31645 return Err(fidl::Error::InvalidInlineBitInEnvelope);
31646 }
31647 let inner_offset;
31648 let mut inner_depth = depth.clone();
31649 if inlined {
31650 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31651 inner_offset = next_offset;
31652 } else {
31653 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31654 inner_depth.increment()?;
31655 }
31656 let val_ref = self
31657 .external_route
31658 .get_or_insert_with(|| fidl::new_empty!(ExternalRouteConfig, D));
31659 fidl::decode!(ExternalRouteConfig, D, val_ref, decoder, inner_offset, inner_depth)?;
31660 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
31661 {
31662 return Err(fidl::Error::InvalidNumBytesInEnvelope);
31663 }
31664 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
31665 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
31666 }
31667 }
31668
31669 next_offset += envelope_size;
31670
31671 while next_offset < end_offset {
31673 _next_ordinal_to_read += 1;
31674 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31675 next_offset += envelope_size;
31676 }
31677
31678 Ok(())
31679 }
31680 }
31681
31682 impl ThreadNetworkInfoEntry {
31683 #[inline(always)]
31684 fn max_ordinal_present(&self) -> u64 {
31685 if let Some(_) = self.partition_id {
31686 return 5;
31687 }
31688 if let Some(_) = self.rloc16 {
31689 return 4;
31690 }
31691 if let Some(_) = self.mode {
31692 return 3;
31693 }
31694 if let Some(_) = self.role {
31695 return 2;
31696 }
31697 if let Some(_) = self.age {
31698 return 1;
31699 }
31700 0
31701 }
31702 }
31703
31704 impl fidl::encoding::ValueTypeMarker for ThreadNetworkInfoEntry {
31705 type Borrowed<'a> = &'a Self;
31706 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
31707 value
31708 }
31709 }
31710
31711 unsafe impl fidl::encoding::TypeMarker for ThreadNetworkInfoEntry {
31712 type Owned = Self;
31713
31714 #[inline(always)]
31715 fn inline_align(_context: fidl::encoding::Context) -> usize {
31716 8
31717 }
31718
31719 #[inline(always)]
31720 fn inline_size(_context: fidl::encoding::Context) -> usize {
31721 16
31722 }
31723 }
31724
31725 unsafe impl<D: fidl::encoding::ResourceDialect>
31726 fidl::encoding::Encode<ThreadNetworkInfoEntry, D> for &ThreadNetworkInfoEntry
31727 {
31728 unsafe fn encode(
31729 self,
31730 encoder: &mut fidl::encoding::Encoder<'_, D>,
31731 offset: usize,
31732 mut depth: fidl::encoding::Depth,
31733 ) -> fidl::Result<()> {
31734 encoder.debug_check_bounds::<ThreadNetworkInfoEntry>(offset);
31735 let max_ordinal: u64 = self.max_ordinal_present();
31737 encoder.write_num(max_ordinal, offset);
31738 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
31739 if max_ordinal == 0 {
31741 return Ok(());
31742 }
31743 depth.increment()?;
31744 let envelope_size = 8;
31745 let bytes_len = max_ordinal as usize * envelope_size;
31746 #[allow(unused_variables)]
31747 let offset = encoder.out_of_line_offset(bytes_len);
31748 let mut _prev_end_offset: usize = 0;
31749 if 1 > max_ordinal {
31750 return Ok(());
31751 }
31752
31753 let cur_offset: usize = (1 - 1) * envelope_size;
31756
31757 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
31759
31760 fidl::encoding::encode_in_envelope_optional::<i64, D>(
31765 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
31766 encoder,
31767 offset + cur_offset,
31768 depth,
31769 )?;
31770
31771 _prev_end_offset = cur_offset + envelope_size;
31772 if 2 > max_ordinal {
31773 return Ok(());
31774 }
31775
31776 let cur_offset: usize = (2 - 1) * envelope_size;
31779
31780 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
31782
31783 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_lowpan_device_common::Role, D>(
31788 self.role.as_ref().map(<fidl_fuchsia_lowpan_device_common::Role as fidl::encoding::ValueTypeMarker>::borrow),
31789 encoder, offset + cur_offset, depth
31790 )?;
31791
31792 _prev_end_offset = cur_offset + envelope_size;
31793 if 3 > max_ordinal {
31794 return Ok(());
31795 }
31796
31797 let cur_offset: usize = (3 - 1) * envelope_size;
31800
31801 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
31803
31804 fidl::encoding::encode_in_envelope_optional::<ThreadLinkMode, D>(
31809 self.mode.as_ref().map(<ThreadLinkMode as fidl::encoding::ValueTypeMarker>::borrow),
31810 encoder,
31811 offset + cur_offset,
31812 depth,
31813 )?;
31814
31815 _prev_end_offset = cur_offset + envelope_size;
31816 if 4 > max_ordinal {
31817 return Ok(());
31818 }
31819
31820 let cur_offset: usize = (4 - 1) * envelope_size;
31823
31824 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
31826
31827 fidl::encoding::encode_in_envelope_optional::<u16, D>(
31832 self.rloc16.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
31833 encoder,
31834 offset + cur_offset,
31835 depth,
31836 )?;
31837
31838 _prev_end_offset = cur_offset + envelope_size;
31839 if 5 > max_ordinal {
31840 return Ok(());
31841 }
31842
31843 let cur_offset: usize = (5 - 1) * envelope_size;
31846
31847 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
31849
31850 fidl::encoding::encode_in_envelope_optional::<u32, D>(
31855 self.partition_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
31856 encoder,
31857 offset + cur_offset,
31858 depth,
31859 )?;
31860
31861 _prev_end_offset = cur_offset + envelope_size;
31862
31863 Ok(())
31864 }
31865 }
31866
31867 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
31868 for ThreadNetworkInfoEntry
31869 {
31870 #[inline(always)]
31871 fn new_empty() -> Self {
31872 Self::default()
31873 }
31874
31875 unsafe fn decode(
31876 &mut self,
31877 decoder: &mut fidl::encoding::Decoder<'_, D>,
31878 offset: usize,
31879 mut depth: fidl::encoding::Depth,
31880 ) -> fidl::Result<()> {
31881 decoder.debug_check_bounds::<Self>(offset);
31882 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
31883 None => return Err(fidl::Error::NotNullable),
31884 Some(len) => len,
31885 };
31886 if len == 0 {
31888 return Ok(());
31889 };
31890 depth.increment()?;
31891 let envelope_size = 8;
31892 let bytes_len = len * envelope_size;
31893 let offset = decoder.out_of_line_offset(bytes_len)?;
31894 let mut _next_ordinal_to_read = 0;
31896 let mut next_offset = offset;
31897 let end_offset = offset + bytes_len;
31898 _next_ordinal_to_read += 1;
31899 if next_offset >= end_offset {
31900 return Ok(());
31901 }
31902
31903 while _next_ordinal_to_read < 1 {
31905 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31906 _next_ordinal_to_read += 1;
31907 next_offset += envelope_size;
31908 }
31909
31910 let next_out_of_line = decoder.next_out_of_line();
31911 let handles_before = decoder.remaining_handles();
31912 if let Some((inlined, num_bytes, num_handles)) =
31913 fidl::encoding::decode_envelope_header(decoder, next_offset)?
31914 {
31915 let member_inline_size =
31916 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
31917 if inlined != (member_inline_size <= 4) {
31918 return Err(fidl::Error::InvalidInlineBitInEnvelope);
31919 }
31920 let inner_offset;
31921 let mut inner_depth = depth.clone();
31922 if inlined {
31923 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31924 inner_offset = next_offset;
31925 } else {
31926 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31927 inner_depth.increment()?;
31928 }
31929 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
31930 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
31931 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
31932 {
31933 return Err(fidl::Error::InvalidNumBytesInEnvelope);
31934 }
31935 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
31936 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
31937 }
31938 }
31939
31940 next_offset += envelope_size;
31941 _next_ordinal_to_read += 1;
31942 if next_offset >= end_offset {
31943 return Ok(());
31944 }
31945
31946 while _next_ordinal_to_read < 2 {
31948 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
31949 _next_ordinal_to_read += 1;
31950 next_offset += envelope_size;
31951 }
31952
31953 let next_out_of_line = decoder.next_out_of_line();
31954 let handles_before = decoder.remaining_handles();
31955 if let Some((inlined, num_bytes, num_handles)) =
31956 fidl::encoding::decode_envelope_header(decoder, next_offset)?
31957 {
31958 let member_inline_size = <fidl_fuchsia_lowpan_device_common::Role as fidl::encoding::TypeMarker>::inline_size(decoder.context);
31959 if inlined != (member_inline_size <= 4) {
31960 return Err(fidl::Error::InvalidInlineBitInEnvelope);
31961 }
31962 let inner_offset;
31963 let mut inner_depth = depth.clone();
31964 if inlined {
31965 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
31966 inner_offset = next_offset;
31967 } else {
31968 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
31969 inner_depth.increment()?;
31970 }
31971 let val_ref = self.role.get_or_insert_with(|| {
31972 fidl::new_empty!(fidl_fuchsia_lowpan_device_common::Role, D)
31973 });
31974 fidl::decode!(
31975 fidl_fuchsia_lowpan_device_common::Role,
31976 D,
31977 val_ref,
31978 decoder,
31979 inner_offset,
31980 inner_depth
31981 )?;
31982 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
31983 {
31984 return Err(fidl::Error::InvalidNumBytesInEnvelope);
31985 }
31986 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
31987 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
31988 }
31989 }
31990
31991 next_offset += envelope_size;
31992 _next_ordinal_to_read += 1;
31993 if next_offset >= end_offset {
31994 return Ok(());
31995 }
31996
31997 while _next_ordinal_to_read < 3 {
31999 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32000 _next_ordinal_to_read += 1;
32001 next_offset += envelope_size;
32002 }
32003
32004 let next_out_of_line = decoder.next_out_of_line();
32005 let handles_before = decoder.remaining_handles();
32006 if let Some((inlined, num_bytes, num_handles)) =
32007 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32008 {
32009 let member_inline_size =
32010 <ThreadLinkMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
32011 if inlined != (member_inline_size <= 4) {
32012 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32013 }
32014 let inner_offset;
32015 let mut inner_depth = depth.clone();
32016 if inlined {
32017 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32018 inner_offset = next_offset;
32019 } else {
32020 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32021 inner_depth.increment()?;
32022 }
32023 let val_ref = self.mode.get_or_insert_with(|| fidl::new_empty!(ThreadLinkMode, D));
32024 fidl::decode!(ThreadLinkMode, D, val_ref, decoder, inner_offset, inner_depth)?;
32025 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
32026 {
32027 return Err(fidl::Error::InvalidNumBytesInEnvelope);
32028 }
32029 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
32030 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
32031 }
32032 }
32033
32034 next_offset += envelope_size;
32035 _next_ordinal_to_read += 1;
32036 if next_offset >= end_offset {
32037 return Ok(());
32038 }
32039
32040 while _next_ordinal_to_read < 4 {
32042 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32043 _next_ordinal_to_read += 1;
32044 next_offset += envelope_size;
32045 }
32046
32047 let next_out_of_line = decoder.next_out_of_line();
32048 let handles_before = decoder.remaining_handles();
32049 if let Some((inlined, num_bytes, num_handles)) =
32050 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32051 {
32052 let member_inline_size =
32053 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
32054 if inlined != (member_inline_size <= 4) {
32055 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32056 }
32057 let inner_offset;
32058 let mut inner_depth = depth.clone();
32059 if inlined {
32060 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32061 inner_offset = next_offset;
32062 } else {
32063 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32064 inner_depth.increment()?;
32065 }
32066 let val_ref = self.rloc16.get_or_insert_with(|| fidl::new_empty!(u16, D));
32067 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
32068 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
32069 {
32070 return Err(fidl::Error::InvalidNumBytesInEnvelope);
32071 }
32072 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
32073 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
32074 }
32075 }
32076
32077 next_offset += envelope_size;
32078 _next_ordinal_to_read += 1;
32079 if next_offset >= end_offset {
32080 return Ok(());
32081 }
32082
32083 while _next_ordinal_to_read < 5 {
32085 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32086 _next_ordinal_to_read += 1;
32087 next_offset += envelope_size;
32088 }
32089
32090 let next_out_of_line = decoder.next_out_of_line();
32091 let handles_before = decoder.remaining_handles();
32092 if let Some((inlined, num_bytes, num_handles)) =
32093 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32094 {
32095 let member_inline_size =
32096 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
32097 if inlined != (member_inline_size <= 4) {
32098 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32099 }
32100 let inner_offset;
32101 let mut inner_depth = depth.clone();
32102 if inlined {
32103 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32104 inner_offset = next_offset;
32105 } else {
32106 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32107 inner_depth.increment()?;
32108 }
32109 let val_ref = self.partition_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
32110 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
32111 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
32112 {
32113 return Err(fidl::Error::InvalidNumBytesInEnvelope);
32114 }
32115 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
32116 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
32117 }
32118 }
32119
32120 next_offset += envelope_size;
32121
32122 while next_offset < end_offset {
32124 _next_ordinal_to_read += 1;
32125 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32126 next_offset += envelope_size;
32127 }
32128
32129 Ok(())
32130 }
32131 }
32132
32133 impl ThreadRouterInfoEntry {
32134 #[inline(always)]
32135 fn max_ordinal_present(&self) -> u64 {
32136 if let Some(_) = self.new_path_cost {
32137 return 8;
32138 }
32139 if let Some(_) = self.old_path_cost {
32140 return 7;
32141 }
32142 if let Some(_) = self.next_hop_rloc16 {
32143 return 6;
32144 }
32145 if let Some(_) = self.next_hop_id {
32146 return 5;
32147 }
32148 if let Some(_) = self.router_rloc16 {
32149 return 4;
32150 }
32151 if let Some(_) = self.router_id {
32152 return 3;
32153 }
32154 if let Some(_) = self.event {
32155 return 2;
32156 }
32157 if let Some(_) = self.age {
32158 return 1;
32159 }
32160 0
32161 }
32162 }
32163
32164 impl fidl::encoding::ValueTypeMarker for ThreadRouterInfoEntry {
32165 type Borrowed<'a> = &'a Self;
32166 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
32167 value
32168 }
32169 }
32170
32171 unsafe impl fidl::encoding::TypeMarker for ThreadRouterInfoEntry {
32172 type Owned = Self;
32173
32174 #[inline(always)]
32175 fn inline_align(_context: fidl::encoding::Context) -> usize {
32176 8
32177 }
32178
32179 #[inline(always)]
32180 fn inline_size(_context: fidl::encoding::Context) -> usize {
32181 16
32182 }
32183 }
32184
32185 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ThreadRouterInfoEntry, D>
32186 for &ThreadRouterInfoEntry
32187 {
32188 unsafe fn encode(
32189 self,
32190 encoder: &mut fidl::encoding::Encoder<'_, D>,
32191 offset: usize,
32192 mut depth: fidl::encoding::Depth,
32193 ) -> fidl::Result<()> {
32194 encoder.debug_check_bounds::<ThreadRouterInfoEntry>(offset);
32195 let max_ordinal: u64 = self.max_ordinal_present();
32197 encoder.write_num(max_ordinal, offset);
32198 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
32199 if max_ordinal == 0 {
32201 return Ok(());
32202 }
32203 depth.increment()?;
32204 let envelope_size = 8;
32205 let bytes_len = max_ordinal as usize * envelope_size;
32206 #[allow(unused_variables)]
32207 let offset = encoder.out_of_line_offset(bytes_len);
32208 let mut _prev_end_offset: usize = 0;
32209 if 1 > max_ordinal {
32210 return Ok(());
32211 }
32212
32213 let cur_offset: usize = (1 - 1) * envelope_size;
32216
32217 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32219
32220 fidl::encoding::encode_in_envelope_optional::<i64, D>(
32225 self.age.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
32226 encoder,
32227 offset + cur_offset,
32228 depth,
32229 )?;
32230
32231 _prev_end_offset = cur_offset + envelope_size;
32232 if 2 > max_ordinal {
32233 return Ok(());
32234 }
32235
32236 let cur_offset: usize = (2 - 1) * envelope_size;
32239
32240 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32242
32243 fidl::encoding::encode_in_envelope_optional::<HistoryTrackerRouterEvent, D>(
32248 self.event
32249 .as_ref()
32250 .map(<HistoryTrackerRouterEvent as fidl::encoding::ValueTypeMarker>::borrow),
32251 encoder,
32252 offset + cur_offset,
32253 depth,
32254 )?;
32255
32256 _prev_end_offset = cur_offset + envelope_size;
32257 if 3 > max_ordinal {
32258 return Ok(());
32259 }
32260
32261 let cur_offset: usize = (3 - 1) * envelope_size;
32264
32265 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32267
32268 fidl::encoding::encode_in_envelope_optional::<u8, D>(
32273 self.router_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
32274 encoder,
32275 offset + cur_offset,
32276 depth,
32277 )?;
32278
32279 _prev_end_offset = cur_offset + envelope_size;
32280 if 4 > max_ordinal {
32281 return Ok(());
32282 }
32283
32284 let cur_offset: usize = (4 - 1) * envelope_size;
32287
32288 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32290
32291 fidl::encoding::encode_in_envelope_optional::<u16, D>(
32296 self.router_rloc16.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
32297 encoder,
32298 offset + cur_offset,
32299 depth,
32300 )?;
32301
32302 _prev_end_offset = cur_offset + envelope_size;
32303 if 5 > max_ordinal {
32304 return Ok(());
32305 }
32306
32307 let cur_offset: usize = (5 - 1) * envelope_size;
32310
32311 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32313
32314 fidl::encoding::encode_in_envelope_optional::<u8, D>(
32319 self.next_hop_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
32320 encoder,
32321 offset + cur_offset,
32322 depth,
32323 )?;
32324
32325 _prev_end_offset = cur_offset + envelope_size;
32326 if 6 > max_ordinal {
32327 return Ok(());
32328 }
32329
32330 let cur_offset: usize = (6 - 1) * envelope_size;
32333
32334 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32336
32337 fidl::encoding::encode_in_envelope_optional::<u16, D>(
32342 self.next_hop_rloc16.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
32343 encoder,
32344 offset + cur_offset,
32345 depth,
32346 )?;
32347
32348 _prev_end_offset = cur_offset + envelope_size;
32349 if 7 > max_ordinal {
32350 return Ok(());
32351 }
32352
32353 let cur_offset: usize = (7 - 1) * envelope_size;
32356
32357 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32359
32360 fidl::encoding::encode_in_envelope_optional::<u8, D>(
32365 self.old_path_cost.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
32366 encoder,
32367 offset + cur_offset,
32368 depth,
32369 )?;
32370
32371 _prev_end_offset = cur_offset + envelope_size;
32372 if 8 > max_ordinal {
32373 return Ok(());
32374 }
32375
32376 let cur_offset: usize = (8 - 1) * envelope_size;
32379
32380 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32382
32383 fidl::encoding::encode_in_envelope_optional::<u8, D>(
32388 self.new_path_cost.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
32389 encoder,
32390 offset + cur_offset,
32391 depth,
32392 )?;
32393
32394 _prev_end_offset = cur_offset + envelope_size;
32395
32396 Ok(())
32397 }
32398 }
32399
32400 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ThreadRouterInfoEntry {
32401 #[inline(always)]
32402 fn new_empty() -> Self {
32403 Self::default()
32404 }
32405
32406 unsafe fn decode(
32407 &mut self,
32408 decoder: &mut fidl::encoding::Decoder<'_, D>,
32409 offset: usize,
32410 mut depth: fidl::encoding::Depth,
32411 ) -> fidl::Result<()> {
32412 decoder.debug_check_bounds::<Self>(offset);
32413 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
32414 None => return Err(fidl::Error::NotNullable),
32415 Some(len) => len,
32416 };
32417 if len == 0 {
32419 return Ok(());
32420 };
32421 depth.increment()?;
32422 let envelope_size = 8;
32423 let bytes_len = len * envelope_size;
32424 let offset = decoder.out_of_line_offset(bytes_len)?;
32425 let mut _next_ordinal_to_read = 0;
32427 let mut next_offset = offset;
32428 let end_offset = offset + bytes_len;
32429 _next_ordinal_to_read += 1;
32430 if next_offset >= end_offset {
32431 return Ok(());
32432 }
32433
32434 while _next_ordinal_to_read < 1 {
32436 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32437 _next_ordinal_to_read += 1;
32438 next_offset += envelope_size;
32439 }
32440
32441 let next_out_of_line = decoder.next_out_of_line();
32442 let handles_before = decoder.remaining_handles();
32443 if let Some((inlined, num_bytes, num_handles)) =
32444 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32445 {
32446 let member_inline_size =
32447 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
32448 if inlined != (member_inline_size <= 4) {
32449 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32450 }
32451 let inner_offset;
32452 let mut inner_depth = depth.clone();
32453 if inlined {
32454 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32455 inner_offset = next_offset;
32456 } else {
32457 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32458 inner_depth.increment()?;
32459 }
32460 let val_ref = self.age.get_or_insert_with(|| fidl::new_empty!(i64, D));
32461 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
32462 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
32463 {
32464 return Err(fidl::Error::InvalidNumBytesInEnvelope);
32465 }
32466 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
32467 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
32468 }
32469 }
32470
32471 next_offset += envelope_size;
32472 _next_ordinal_to_read += 1;
32473 if next_offset >= end_offset {
32474 return Ok(());
32475 }
32476
32477 while _next_ordinal_to_read < 2 {
32479 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32480 _next_ordinal_to_read += 1;
32481 next_offset += envelope_size;
32482 }
32483
32484 let next_out_of_line = decoder.next_out_of_line();
32485 let handles_before = decoder.remaining_handles();
32486 if let Some((inlined, num_bytes, num_handles)) =
32487 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32488 {
32489 let member_inline_size =
32490 <HistoryTrackerRouterEvent as fidl::encoding::TypeMarker>::inline_size(
32491 decoder.context,
32492 );
32493 if inlined != (member_inline_size <= 4) {
32494 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32495 }
32496 let inner_offset;
32497 let mut inner_depth = depth.clone();
32498 if inlined {
32499 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32500 inner_offset = next_offset;
32501 } else {
32502 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32503 inner_depth.increment()?;
32504 }
32505 let val_ref = self
32506 .event
32507 .get_or_insert_with(|| fidl::new_empty!(HistoryTrackerRouterEvent, D));
32508 fidl::decode!(
32509 HistoryTrackerRouterEvent,
32510 D,
32511 val_ref,
32512 decoder,
32513 inner_offset,
32514 inner_depth
32515 )?;
32516 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
32517 {
32518 return Err(fidl::Error::InvalidNumBytesInEnvelope);
32519 }
32520 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
32521 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
32522 }
32523 }
32524
32525 next_offset += envelope_size;
32526 _next_ordinal_to_read += 1;
32527 if next_offset >= end_offset {
32528 return Ok(());
32529 }
32530
32531 while _next_ordinal_to_read < 3 {
32533 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32534 _next_ordinal_to_read += 1;
32535 next_offset += envelope_size;
32536 }
32537
32538 let next_out_of_line = decoder.next_out_of_line();
32539 let handles_before = decoder.remaining_handles();
32540 if let Some((inlined, num_bytes, num_handles)) =
32541 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32542 {
32543 let member_inline_size =
32544 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
32545 if inlined != (member_inline_size <= 4) {
32546 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32547 }
32548 let inner_offset;
32549 let mut inner_depth = depth.clone();
32550 if inlined {
32551 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32552 inner_offset = next_offset;
32553 } else {
32554 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32555 inner_depth.increment()?;
32556 }
32557 let val_ref = self.router_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
32558 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
32559 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
32560 {
32561 return Err(fidl::Error::InvalidNumBytesInEnvelope);
32562 }
32563 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
32564 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
32565 }
32566 }
32567
32568 next_offset += envelope_size;
32569 _next_ordinal_to_read += 1;
32570 if next_offset >= end_offset {
32571 return Ok(());
32572 }
32573
32574 while _next_ordinal_to_read < 4 {
32576 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32577 _next_ordinal_to_read += 1;
32578 next_offset += envelope_size;
32579 }
32580
32581 let next_out_of_line = decoder.next_out_of_line();
32582 let handles_before = decoder.remaining_handles();
32583 if let Some((inlined, num_bytes, num_handles)) =
32584 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32585 {
32586 let member_inline_size =
32587 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
32588 if inlined != (member_inline_size <= 4) {
32589 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32590 }
32591 let inner_offset;
32592 let mut inner_depth = depth.clone();
32593 if inlined {
32594 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32595 inner_offset = next_offset;
32596 } else {
32597 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32598 inner_depth.increment()?;
32599 }
32600 let val_ref = self.router_rloc16.get_or_insert_with(|| fidl::new_empty!(u16, D));
32601 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
32602 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
32603 {
32604 return Err(fidl::Error::InvalidNumBytesInEnvelope);
32605 }
32606 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
32607 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
32608 }
32609 }
32610
32611 next_offset += envelope_size;
32612 _next_ordinal_to_read += 1;
32613 if next_offset >= end_offset {
32614 return Ok(());
32615 }
32616
32617 while _next_ordinal_to_read < 5 {
32619 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32620 _next_ordinal_to_read += 1;
32621 next_offset += envelope_size;
32622 }
32623
32624 let next_out_of_line = decoder.next_out_of_line();
32625 let handles_before = decoder.remaining_handles();
32626 if let Some((inlined, num_bytes, num_handles)) =
32627 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32628 {
32629 let member_inline_size =
32630 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
32631 if inlined != (member_inline_size <= 4) {
32632 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32633 }
32634 let inner_offset;
32635 let mut inner_depth = depth.clone();
32636 if inlined {
32637 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32638 inner_offset = next_offset;
32639 } else {
32640 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32641 inner_depth.increment()?;
32642 }
32643 let val_ref = self.next_hop_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
32644 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
32645 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
32646 {
32647 return Err(fidl::Error::InvalidNumBytesInEnvelope);
32648 }
32649 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
32650 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
32651 }
32652 }
32653
32654 next_offset += envelope_size;
32655 _next_ordinal_to_read += 1;
32656 if next_offset >= end_offset {
32657 return Ok(());
32658 }
32659
32660 while _next_ordinal_to_read < 6 {
32662 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32663 _next_ordinal_to_read += 1;
32664 next_offset += envelope_size;
32665 }
32666
32667 let next_out_of_line = decoder.next_out_of_line();
32668 let handles_before = decoder.remaining_handles();
32669 if let Some((inlined, num_bytes, num_handles)) =
32670 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32671 {
32672 let member_inline_size =
32673 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
32674 if inlined != (member_inline_size <= 4) {
32675 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32676 }
32677 let inner_offset;
32678 let mut inner_depth = depth.clone();
32679 if inlined {
32680 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32681 inner_offset = next_offset;
32682 } else {
32683 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32684 inner_depth.increment()?;
32685 }
32686 let val_ref = self.next_hop_rloc16.get_or_insert_with(|| fidl::new_empty!(u16, D));
32687 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
32688 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
32689 {
32690 return Err(fidl::Error::InvalidNumBytesInEnvelope);
32691 }
32692 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
32693 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
32694 }
32695 }
32696
32697 next_offset += envelope_size;
32698 _next_ordinal_to_read += 1;
32699 if next_offset >= end_offset {
32700 return Ok(());
32701 }
32702
32703 while _next_ordinal_to_read < 7 {
32705 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32706 _next_ordinal_to_read += 1;
32707 next_offset += envelope_size;
32708 }
32709
32710 let next_out_of_line = decoder.next_out_of_line();
32711 let handles_before = decoder.remaining_handles();
32712 if let Some((inlined, num_bytes, num_handles)) =
32713 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32714 {
32715 let member_inline_size =
32716 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
32717 if inlined != (member_inline_size <= 4) {
32718 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32719 }
32720 let inner_offset;
32721 let mut inner_depth = depth.clone();
32722 if inlined {
32723 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32724 inner_offset = next_offset;
32725 } else {
32726 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32727 inner_depth.increment()?;
32728 }
32729 let val_ref = self.old_path_cost.get_or_insert_with(|| fidl::new_empty!(u8, D));
32730 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
32731 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
32732 {
32733 return Err(fidl::Error::InvalidNumBytesInEnvelope);
32734 }
32735 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
32736 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
32737 }
32738 }
32739
32740 next_offset += envelope_size;
32741 _next_ordinal_to_read += 1;
32742 if next_offset >= end_offset {
32743 return Ok(());
32744 }
32745
32746 while _next_ordinal_to_read < 8 {
32748 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32749 _next_ordinal_to_read += 1;
32750 next_offset += envelope_size;
32751 }
32752
32753 let next_out_of_line = decoder.next_out_of_line();
32754 let handles_before = decoder.remaining_handles();
32755 if let Some((inlined, num_bytes, num_handles)) =
32756 fidl::encoding::decode_envelope_header(decoder, next_offset)?
32757 {
32758 let member_inline_size =
32759 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
32760 if inlined != (member_inline_size <= 4) {
32761 return Err(fidl::Error::InvalidInlineBitInEnvelope);
32762 }
32763 let inner_offset;
32764 let mut inner_depth = depth.clone();
32765 if inlined {
32766 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
32767 inner_offset = next_offset;
32768 } else {
32769 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
32770 inner_depth.increment()?;
32771 }
32772 let val_ref = self.new_path_cost.get_or_insert_with(|| fidl::new_empty!(u8, D));
32773 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
32774 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
32775 {
32776 return Err(fidl::Error::InvalidNumBytesInEnvelope);
32777 }
32778 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
32779 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
32780 }
32781 }
32782
32783 next_offset += envelope_size;
32784
32785 while next_offset < end_offset {
32787 _next_ordinal_to_read += 1;
32788 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
32789 next_offset += envelope_size;
32790 }
32791
32792 Ok(())
32793 }
32794 }
32795
32796 impl TrelCounters {
32797 #[inline(always)]
32798 fn max_ordinal_present(&self) -> u64 {
32799 if let Some(_) = self.tx_packets {
32800 return 5;
32801 }
32802 if let Some(_) = self.tx_failure {
32803 return 4;
32804 }
32805 if let Some(_) = self.tx_bytes {
32806 return 3;
32807 }
32808 if let Some(_) = self.rx_packets {
32809 return 2;
32810 }
32811 if let Some(_) = self.rx_bytes {
32812 return 1;
32813 }
32814 0
32815 }
32816 }
32817
32818 impl fidl::encoding::ValueTypeMarker for TrelCounters {
32819 type Borrowed<'a> = &'a Self;
32820 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
32821 value
32822 }
32823 }
32824
32825 unsafe impl fidl::encoding::TypeMarker for TrelCounters {
32826 type Owned = Self;
32827
32828 #[inline(always)]
32829 fn inline_align(_context: fidl::encoding::Context) -> usize {
32830 8
32831 }
32832
32833 #[inline(always)]
32834 fn inline_size(_context: fidl::encoding::Context) -> usize {
32835 16
32836 }
32837 }
32838
32839 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TrelCounters, D>
32840 for &TrelCounters
32841 {
32842 unsafe fn encode(
32843 self,
32844 encoder: &mut fidl::encoding::Encoder<'_, D>,
32845 offset: usize,
32846 mut depth: fidl::encoding::Depth,
32847 ) -> fidl::Result<()> {
32848 encoder.debug_check_bounds::<TrelCounters>(offset);
32849 let max_ordinal: u64 = self.max_ordinal_present();
32851 encoder.write_num(max_ordinal, offset);
32852 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
32853 if max_ordinal == 0 {
32855 return Ok(());
32856 }
32857 depth.increment()?;
32858 let envelope_size = 8;
32859 let bytes_len = max_ordinal as usize * envelope_size;
32860 #[allow(unused_variables)]
32861 let offset = encoder.out_of_line_offset(bytes_len);
32862 let mut _prev_end_offset: usize = 0;
32863 if 1 > max_ordinal {
32864 return Ok(());
32865 }
32866
32867 let cur_offset: usize = (1 - 1) * envelope_size;
32870
32871 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32873
32874 fidl::encoding::encode_in_envelope_optional::<u64, D>(
32879 self.rx_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
32880 encoder,
32881 offset + cur_offset,
32882 depth,
32883 )?;
32884
32885 _prev_end_offset = cur_offset + envelope_size;
32886 if 2 > max_ordinal {
32887 return Ok(());
32888 }
32889
32890 let cur_offset: usize = (2 - 1) * envelope_size;
32893
32894 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32896
32897 fidl::encoding::encode_in_envelope_optional::<u64, D>(
32902 self.rx_packets.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
32903 encoder,
32904 offset + cur_offset,
32905 depth,
32906 )?;
32907
32908 _prev_end_offset = cur_offset + envelope_size;
32909 if 3 > max_ordinal {
32910 return Ok(());
32911 }
32912
32913 let cur_offset: usize = (3 - 1) * envelope_size;
32916
32917 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32919
32920 fidl::encoding::encode_in_envelope_optional::<u64, D>(
32925 self.tx_bytes.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
32926 encoder,
32927 offset + cur_offset,
32928 depth,
32929 )?;
32930
32931 _prev_end_offset = cur_offset + envelope_size;
32932 if 4 > max_ordinal {
32933 return Ok(());
32934 }
32935
32936 let cur_offset: usize = (4 - 1) * envelope_size;
32939
32940 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32942
32943 fidl::encoding::encode_in_envelope_optional::<u64, D>(
32948 self.tx_failure.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
32949 encoder,
32950 offset + cur_offset,
32951 depth,
32952 )?;
32953
32954 _prev_end_offset = cur_offset + envelope_size;
32955 if 5 > max_ordinal {
32956 return Ok(());
32957 }
32958
32959 let cur_offset: usize = (5 - 1) * envelope_size;
32962
32963 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
32965
32966 fidl::encoding::encode_in_envelope_optional::<u64, D>(
32971 self.tx_packets.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
32972 encoder,
32973 offset + cur_offset,
32974 depth,
32975 )?;
32976
32977 _prev_end_offset = cur_offset + envelope_size;
32978
32979 Ok(())
32980 }
32981 }
32982
32983 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TrelCounters {
32984 #[inline(always)]
32985 fn new_empty() -> Self {
32986 Self::default()
32987 }
32988
32989 unsafe fn decode(
32990 &mut self,
32991 decoder: &mut fidl::encoding::Decoder<'_, D>,
32992 offset: usize,
32993 mut depth: fidl::encoding::Depth,
32994 ) -> fidl::Result<()> {
32995 decoder.debug_check_bounds::<Self>(offset);
32996 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
32997 None => return Err(fidl::Error::NotNullable),
32998 Some(len) => len,
32999 };
33000 if len == 0 {
33002 return Ok(());
33003 };
33004 depth.increment()?;
33005 let envelope_size = 8;
33006 let bytes_len = len * envelope_size;
33007 let offset = decoder.out_of_line_offset(bytes_len)?;
33008 let mut _next_ordinal_to_read = 0;
33010 let mut next_offset = offset;
33011 let end_offset = offset + bytes_len;
33012 _next_ordinal_to_read += 1;
33013 if next_offset >= end_offset {
33014 return Ok(());
33015 }
33016
33017 while _next_ordinal_to_read < 1 {
33019 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33020 _next_ordinal_to_read += 1;
33021 next_offset += envelope_size;
33022 }
33023
33024 let next_out_of_line = decoder.next_out_of_line();
33025 let handles_before = decoder.remaining_handles();
33026 if let Some((inlined, num_bytes, num_handles)) =
33027 fidl::encoding::decode_envelope_header(decoder, next_offset)?
33028 {
33029 let member_inline_size =
33030 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
33031 if inlined != (member_inline_size <= 4) {
33032 return Err(fidl::Error::InvalidInlineBitInEnvelope);
33033 }
33034 let inner_offset;
33035 let mut inner_depth = depth.clone();
33036 if inlined {
33037 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
33038 inner_offset = next_offset;
33039 } else {
33040 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
33041 inner_depth.increment()?;
33042 }
33043 let val_ref = self.rx_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
33044 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
33045 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
33046 {
33047 return Err(fidl::Error::InvalidNumBytesInEnvelope);
33048 }
33049 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
33050 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
33051 }
33052 }
33053
33054 next_offset += envelope_size;
33055 _next_ordinal_to_read += 1;
33056 if next_offset >= end_offset {
33057 return Ok(());
33058 }
33059
33060 while _next_ordinal_to_read < 2 {
33062 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33063 _next_ordinal_to_read += 1;
33064 next_offset += envelope_size;
33065 }
33066
33067 let next_out_of_line = decoder.next_out_of_line();
33068 let handles_before = decoder.remaining_handles();
33069 if let Some((inlined, num_bytes, num_handles)) =
33070 fidl::encoding::decode_envelope_header(decoder, next_offset)?
33071 {
33072 let member_inline_size =
33073 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
33074 if inlined != (member_inline_size <= 4) {
33075 return Err(fidl::Error::InvalidInlineBitInEnvelope);
33076 }
33077 let inner_offset;
33078 let mut inner_depth = depth.clone();
33079 if inlined {
33080 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
33081 inner_offset = next_offset;
33082 } else {
33083 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
33084 inner_depth.increment()?;
33085 }
33086 let val_ref = self.rx_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
33087 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
33088 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
33089 {
33090 return Err(fidl::Error::InvalidNumBytesInEnvelope);
33091 }
33092 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
33093 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
33094 }
33095 }
33096
33097 next_offset += envelope_size;
33098 _next_ordinal_to_read += 1;
33099 if next_offset >= end_offset {
33100 return Ok(());
33101 }
33102
33103 while _next_ordinal_to_read < 3 {
33105 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33106 _next_ordinal_to_read += 1;
33107 next_offset += envelope_size;
33108 }
33109
33110 let next_out_of_line = decoder.next_out_of_line();
33111 let handles_before = decoder.remaining_handles();
33112 if let Some((inlined, num_bytes, num_handles)) =
33113 fidl::encoding::decode_envelope_header(decoder, next_offset)?
33114 {
33115 let member_inline_size =
33116 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
33117 if inlined != (member_inline_size <= 4) {
33118 return Err(fidl::Error::InvalidInlineBitInEnvelope);
33119 }
33120 let inner_offset;
33121 let mut inner_depth = depth.clone();
33122 if inlined {
33123 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
33124 inner_offset = next_offset;
33125 } else {
33126 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
33127 inner_depth.increment()?;
33128 }
33129 let val_ref = self.tx_bytes.get_or_insert_with(|| fidl::new_empty!(u64, D));
33130 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
33131 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
33132 {
33133 return Err(fidl::Error::InvalidNumBytesInEnvelope);
33134 }
33135 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
33136 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
33137 }
33138 }
33139
33140 next_offset += envelope_size;
33141 _next_ordinal_to_read += 1;
33142 if next_offset >= end_offset {
33143 return Ok(());
33144 }
33145
33146 while _next_ordinal_to_read < 4 {
33148 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33149 _next_ordinal_to_read += 1;
33150 next_offset += envelope_size;
33151 }
33152
33153 let next_out_of_line = decoder.next_out_of_line();
33154 let handles_before = decoder.remaining_handles();
33155 if let Some((inlined, num_bytes, num_handles)) =
33156 fidl::encoding::decode_envelope_header(decoder, next_offset)?
33157 {
33158 let member_inline_size =
33159 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
33160 if inlined != (member_inline_size <= 4) {
33161 return Err(fidl::Error::InvalidInlineBitInEnvelope);
33162 }
33163 let inner_offset;
33164 let mut inner_depth = depth.clone();
33165 if inlined {
33166 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
33167 inner_offset = next_offset;
33168 } else {
33169 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
33170 inner_depth.increment()?;
33171 }
33172 let val_ref = self.tx_failure.get_or_insert_with(|| fidl::new_empty!(u64, D));
33173 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
33174 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
33175 {
33176 return Err(fidl::Error::InvalidNumBytesInEnvelope);
33177 }
33178 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
33179 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
33180 }
33181 }
33182
33183 next_offset += envelope_size;
33184 _next_ordinal_to_read += 1;
33185 if next_offset >= end_offset {
33186 return Ok(());
33187 }
33188
33189 while _next_ordinal_to_read < 5 {
33191 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33192 _next_ordinal_to_read += 1;
33193 next_offset += envelope_size;
33194 }
33195
33196 let next_out_of_line = decoder.next_out_of_line();
33197 let handles_before = decoder.remaining_handles();
33198 if let Some((inlined, num_bytes, num_handles)) =
33199 fidl::encoding::decode_envelope_header(decoder, next_offset)?
33200 {
33201 let member_inline_size =
33202 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
33203 if inlined != (member_inline_size <= 4) {
33204 return Err(fidl::Error::InvalidInlineBitInEnvelope);
33205 }
33206 let inner_offset;
33207 let mut inner_depth = depth.clone();
33208 if inlined {
33209 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
33210 inner_offset = next_offset;
33211 } else {
33212 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
33213 inner_depth.increment()?;
33214 }
33215 let val_ref = self.tx_packets.get_or_insert_with(|| fidl::new_empty!(u64, D));
33216 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
33217 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
33218 {
33219 return Err(fidl::Error::InvalidNumBytesInEnvelope);
33220 }
33221 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
33222 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
33223 }
33224 }
33225
33226 next_offset += envelope_size;
33227
33228 while next_offset < end_offset {
33230 _next_ordinal_to_read += 1;
33231 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33232 next_offset += envelope_size;
33233 }
33234
33235 Ok(())
33236 }
33237 }
33238
33239 impl TrelPeer {
33240 #[inline(always)]
33241 fn max_ordinal_present(&self) -> u64 {
33242 if let Some(_) = self.sock_address {
33243 return 3;
33244 }
33245 if let Some(_) = self.extended_pan_id {
33246 return 2;
33247 }
33248 if let Some(_) = self.extended_address {
33249 return 1;
33250 }
33251 0
33252 }
33253 }
33254
33255 impl fidl::encoding::ValueTypeMarker for TrelPeer {
33256 type Borrowed<'a> = &'a Self;
33257 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
33258 value
33259 }
33260 }
33261
33262 unsafe impl fidl::encoding::TypeMarker for TrelPeer {
33263 type Owned = Self;
33264
33265 #[inline(always)]
33266 fn inline_align(_context: fidl::encoding::Context) -> usize {
33267 8
33268 }
33269
33270 #[inline(always)]
33271 fn inline_size(_context: fidl::encoding::Context) -> usize {
33272 16
33273 }
33274 }
33275
33276 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TrelPeer, D> for &TrelPeer {
33277 unsafe fn encode(
33278 self,
33279 encoder: &mut fidl::encoding::Encoder<'_, D>,
33280 offset: usize,
33281 mut depth: fidl::encoding::Depth,
33282 ) -> fidl::Result<()> {
33283 encoder.debug_check_bounds::<TrelPeer>(offset);
33284 let max_ordinal: u64 = self.max_ordinal_present();
33286 encoder.write_num(max_ordinal, offset);
33287 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
33288 if max_ordinal == 0 {
33290 return Ok(());
33291 }
33292 depth.increment()?;
33293 let envelope_size = 8;
33294 let bytes_len = max_ordinal as usize * envelope_size;
33295 #[allow(unused_variables)]
33296 let offset = encoder.out_of_line_offset(bytes_len);
33297 let mut _prev_end_offset: usize = 0;
33298 if 1 > max_ordinal {
33299 return Ok(());
33300 }
33301
33302 let cur_offset: usize = (1 - 1) * envelope_size;
33305
33306 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
33308
33309 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
33314 self.extended_address.as_ref().map(
33315 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
33316 ),
33317 encoder,
33318 offset + cur_offset,
33319 depth,
33320 )?;
33321
33322 _prev_end_offset = cur_offset + envelope_size;
33323 if 2 > max_ordinal {
33324 return Ok(());
33325 }
33326
33327 let cur_offset: usize = (2 - 1) * envelope_size;
33330
33331 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
33333
33334 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 8>, D>(
33339 self.extended_pan_id.as_ref().map(
33340 <fidl::encoding::Vector<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow,
33341 ),
33342 encoder,
33343 offset + cur_offset,
33344 depth,
33345 )?;
33346
33347 _prev_end_offset = cur_offset + envelope_size;
33348 if 3 > max_ordinal {
33349 return Ok(());
33350 }
33351
33352 let cur_offset: usize = (3 - 1) * envelope_size;
33355
33356 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
33358
33359 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<48>, D>(
33364 self.sock_address.as_ref().map(
33365 <fidl::encoding::BoundedString<48> as fidl::encoding::ValueTypeMarker>::borrow,
33366 ),
33367 encoder,
33368 offset + cur_offset,
33369 depth,
33370 )?;
33371
33372 _prev_end_offset = cur_offset + envelope_size;
33373
33374 Ok(())
33375 }
33376 }
33377
33378 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TrelPeer {
33379 #[inline(always)]
33380 fn new_empty() -> Self {
33381 Self::default()
33382 }
33383
33384 unsafe fn decode(
33385 &mut self,
33386 decoder: &mut fidl::encoding::Decoder<'_, D>,
33387 offset: usize,
33388 mut depth: fidl::encoding::Depth,
33389 ) -> fidl::Result<()> {
33390 decoder.debug_check_bounds::<Self>(offset);
33391 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
33392 None => return Err(fidl::Error::NotNullable),
33393 Some(len) => len,
33394 };
33395 if len == 0 {
33397 return Ok(());
33398 };
33399 depth.increment()?;
33400 let envelope_size = 8;
33401 let bytes_len = len * envelope_size;
33402 let offset = decoder.out_of_line_offset(bytes_len)?;
33403 let mut _next_ordinal_to_read = 0;
33405 let mut next_offset = offset;
33406 let end_offset = offset + bytes_len;
33407 _next_ordinal_to_read += 1;
33408 if next_offset >= end_offset {
33409 return Ok(());
33410 }
33411
33412 while _next_ordinal_to_read < 1 {
33414 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33415 _next_ordinal_to_read += 1;
33416 next_offset += envelope_size;
33417 }
33418
33419 let next_out_of_line = decoder.next_out_of_line();
33420 let handles_before = decoder.remaining_handles();
33421 if let Some((inlined, num_bytes, num_handles)) =
33422 fidl::encoding::decode_envelope_header(decoder, next_offset)?
33423 {
33424 let member_inline_size =
33425 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
33426 decoder.context,
33427 );
33428 if inlined != (member_inline_size <= 4) {
33429 return Err(fidl::Error::InvalidInlineBitInEnvelope);
33430 }
33431 let inner_offset;
33432 let mut inner_depth = depth.clone();
33433 if inlined {
33434 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
33435 inner_offset = next_offset;
33436 } else {
33437 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
33438 inner_depth.increment()?;
33439 }
33440 let val_ref = self
33441 .extended_address
33442 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
33443 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
33444 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
33445 {
33446 return Err(fidl::Error::InvalidNumBytesInEnvelope);
33447 }
33448 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
33449 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
33450 }
33451 }
33452
33453 next_offset += envelope_size;
33454 _next_ordinal_to_read += 1;
33455 if next_offset >= end_offset {
33456 return Ok(());
33457 }
33458
33459 while _next_ordinal_to_read < 2 {
33461 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33462 _next_ordinal_to_read += 1;
33463 next_offset += envelope_size;
33464 }
33465
33466 let next_out_of_line = decoder.next_out_of_line();
33467 let handles_before = decoder.remaining_handles();
33468 if let Some((inlined, num_bytes, num_handles)) =
33469 fidl::encoding::decode_envelope_header(decoder, next_offset)?
33470 {
33471 let member_inline_size =
33472 <fidl::encoding::Vector<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
33473 decoder.context,
33474 );
33475 if inlined != (member_inline_size <= 4) {
33476 return Err(fidl::Error::InvalidInlineBitInEnvelope);
33477 }
33478 let inner_offset;
33479 let mut inner_depth = depth.clone();
33480 if inlined {
33481 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
33482 inner_offset = next_offset;
33483 } else {
33484 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
33485 inner_depth.increment()?;
33486 }
33487 let val_ref = self
33488 .extended_pan_id
33489 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 8>, D));
33490 fidl::decode!(fidl::encoding::Vector<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
33491 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
33492 {
33493 return Err(fidl::Error::InvalidNumBytesInEnvelope);
33494 }
33495 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
33496 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
33497 }
33498 }
33499
33500 next_offset += envelope_size;
33501 _next_ordinal_to_read += 1;
33502 if next_offset >= end_offset {
33503 return Ok(());
33504 }
33505
33506 while _next_ordinal_to_read < 3 {
33508 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33509 _next_ordinal_to_read += 1;
33510 next_offset += envelope_size;
33511 }
33512
33513 let next_out_of_line = decoder.next_out_of_line();
33514 let handles_before = decoder.remaining_handles();
33515 if let Some((inlined, num_bytes, num_handles)) =
33516 fidl::encoding::decode_envelope_header(decoder, next_offset)?
33517 {
33518 let member_inline_size =
33519 <fidl::encoding::BoundedString<48> as fidl::encoding::TypeMarker>::inline_size(
33520 decoder.context,
33521 );
33522 if inlined != (member_inline_size <= 4) {
33523 return Err(fidl::Error::InvalidInlineBitInEnvelope);
33524 }
33525 let inner_offset;
33526 let mut inner_depth = depth.clone();
33527 if inlined {
33528 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
33529 inner_offset = next_offset;
33530 } else {
33531 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
33532 inner_depth.increment()?;
33533 }
33534 let val_ref = self
33535 .sock_address
33536 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<48>, D));
33537 fidl::decode!(
33538 fidl::encoding::BoundedString<48>,
33539 D,
33540 val_ref,
33541 decoder,
33542 inner_offset,
33543 inner_depth
33544 )?;
33545 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
33546 {
33547 return Err(fidl::Error::InvalidNumBytesInEnvelope);
33548 }
33549 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
33550 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
33551 }
33552 }
33553
33554 next_offset += envelope_size;
33555
33556 while next_offset < end_offset {
33558 _next_ordinal_to_read += 1;
33559 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33560 next_offset += envelope_size;
33561 }
33562
33563 Ok(())
33564 }
33565 }
33566
33567 impl TrelPeersInfo {
33568 #[inline(always)]
33569 fn max_ordinal_present(&self) -> u64 {
33570 if let Some(_) = self.trel_peers {
33571 return 2;
33572 }
33573 if let Some(_) = self.num_trel_peers {
33574 return 1;
33575 }
33576 0
33577 }
33578 }
33579
33580 impl fidl::encoding::ValueTypeMarker for TrelPeersInfo {
33581 type Borrowed<'a> = &'a Self;
33582 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
33583 value
33584 }
33585 }
33586
33587 unsafe impl fidl::encoding::TypeMarker for TrelPeersInfo {
33588 type Owned = Self;
33589
33590 #[inline(always)]
33591 fn inline_align(_context: fidl::encoding::Context) -> usize {
33592 8
33593 }
33594
33595 #[inline(always)]
33596 fn inline_size(_context: fidl::encoding::Context) -> usize {
33597 16
33598 }
33599 }
33600
33601 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TrelPeersInfo, D>
33602 for &TrelPeersInfo
33603 {
33604 unsafe fn encode(
33605 self,
33606 encoder: &mut fidl::encoding::Encoder<'_, D>,
33607 offset: usize,
33608 mut depth: fidl::encoding::Depth,
33609 ) -> fidl::Result<()> {
33610 encoder.debug_check_bounds::<TrelPeersInfo>(offset);
33611 let max_ordinal: u64 = self.max_ordinal_present();
33613 encoder.write_num(max_ordinal, offset);
33614 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
33615 if max_ordinal == 0 {
33617 return Ok(());
33618 }
33619 depth.increment()?;
33620 let envelope_size = 8;
33621 let bytes_len = max_ordinal as usize * envelope_size;
33622 #[allow(unused_variables)]
33623 let offset = encoder.out_of_line_offset(bytes_len);
33624 let mut _prev_end_offset: usize = 0;
33625 if 1 > max_ordinal {
33626 return Ok(());
33627 }
33628
33629 let cur_offset: usize = (1 - 1) * envelope_size;
33632
33633 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
33635
33636 fidl::encoding::encode_in_envelope_optional::<u16, D>(
33641 self.num_trel_peers.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
33642 encoder,
33643 offset + cur_offset,
33644 depth,
33645 )?;
33646
33647 _prev_end_offset = cur_offset + envelope_size;
33648 if 2 > max_ordinal {
33649 return Ok(());
33650 }
33651
33652 let cur_offset: usize = (2 - 1) * envelope_size;
33655
33656 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
33658
33659 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<TrelPeer, 64>, D>(
33664 self.trel_peers.as_ref().map(<fidl::encoding::Vector<TrelPeer, 64> as fidl::encoding::ValueTypeMarker>::borrow),
33665 encoder, offset + cur_offset, depth
33666 )?;
33667
33668 _prev_end_offset = cur_offset + envelope_size;
33669
33670 Ok(())
33671 }
33672 }
33673
33674 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TrelPeersInfo {
33675 #[inline(always)]
33676 fn new_empty() -> Self {
33677 Self::default()
33678 }
33679
33680 unsafe fn decode(
33681 &mut self,
33682 decoder: &mut fidl::encoding::Decoder<'_, D>,
33683 offset: usize,
33684 mut depth: fidl::encoding::Depth,
33685 ) -> fidl::Result<()> {
33686 decoder.debug_check_bounds::<Self>(offset);
33687 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
33688 None => return Err(fidl::Error::NotNullable),
33689 Some(len) => len,
33690 };
33691 if len == 0 {
33693 return Ok(());
33694 };
33695 depth.increment()?;
33696 let envelope_size = 8;
33697 let bytes_len = len * envelope_size;
33698 let offset = decoder.out_of_line_offset(bytes_len)?;
33699 let mut _next_ordinal_to_read = 0;
33701 let mut next_offset = offset;
33702 let end_offset = offset + bytes_len;
33703 _next_ordinal_to_read += 1;
33704 if next_offset >= end_offset {
33705 return Ok(());
33706 }
33707
33708 while _next_ordinal_to_read < 1 {
33710 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33711 _next_ordinal_to_read += 1;
33712 next_offset += envelope_size;
33713 }
33714
33715 let next_out_of_line = decoder.next_out_of_line();
33716 let handles_before = decoder.remaining_handles();
33717 if let Some((inlined, num_bytes, num_handles)) =
33718 fidl::encoding::decode_envelope_header(decoder, next_offset)?
33719 {
33720 let member_inline_size =
33721 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
33722 if inlined != (member_inline_size <= 4) {
33723 return Err(fidl::Error::InvalidInlineBitInEnvelope);
33724 }
33725 let inner_offset;
33726 let mut inner_depth = depth.clone();
33727 if inlined {
33728 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
33729 inner_offset = next_offset;
33730 } else {
33731 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
33732 inner_depth.increment()?;
33733 }
33734 let val_ref = self.num_trel_peers.get_or_insert_with(|| fidl::new_empty!(u16, D));
33735 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
33736 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
33737 {
33738 return Err(fidl::Error::InvalidNumBytesInEnvelope);
33739 }
33740 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
33741 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
33742 }
33743 }
33744
33745 next_offset += envelope_size;
33746 _next_ordinal_to_read += 1;
33747 if next_offset >= end_offset {
33748 return Ok(());
33749 }
33750
33751 while _next_ordinal_to_read < 2 {
33753 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33754 _next_ordinal_to_read += 1;
33755 next_offset += envelope_size;
33756 }
33757
33758 let next_out_of_line = decoder.next_out_of_line();
33759 let handles_before = decoder.remaining_handles();
33760 if let Some((inlined, num_bytes, num_handles)) =
33761 fidl::encoding::decode_envelope_header(decoder, next_offset)?
33762 {
33763 let member_inline_size = <fidl::encoding::Vector<TrelPeer, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
33764 if inlined != (member_inline_size <= 4) {
33765 return Err(fidl::Error::InvalidInlineBitInEnvelope);
33766 }
33767 let inner_offset;
33768 let mut inner_depth = depth.clone();
33769 if inlined {
33770 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
33771 inner_offset = next_offset;
33772 } else {
33773 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
33774 inner_depth.increment()?;
33775 }
33776 let val_ref = self.trel_peers.get_or_insert_with(
33777 || fidl::new_empty!(fidl::encoding::Vector<TrelPeer, 64>, D),
33778 );
33779 fidl::decode!(fidl::encoding::Vector<TrelPeer, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
33780 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
33781 {
33782 return Err(fidl::Error::InvalidNumBytesInEnvelope);
33783 }
33784 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
33785 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
33786 }
33787 }
33788
33789 next_offset += envelope_size;
33790
33791 while next_offset < end_offset {
33793 _next_ordinal_to_read += 1;
33794 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33795 next_offset += envelope_size;
33796 }
33797
33798 Ok(())
33799 }
33800 }
33801
33802 impl UdpSocket {
33803 #[inline(always)]
33804 fn max_ordinal_present(&self) -> u64 {
33805 if let Some(_) = self.peer_name {
33806 return 2;
33807 }
33808 if let Some(_) = self.sock_name {
33809 return 1;
33810 }
33811 0
33812 }
33813 }
33814
33815 impl fidl::encoding::ValueTypeMarker for UdpSocket {
33816 type Borrowed<'a> = &'a Self;
33817 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
33818 value
33819 }
33820 }
33821
33822 unsafe impl fidl::encoding::TypeMarker for UdpSocket {
33823 type Owned = Self;
33824
33825 #[inline(always)]
33826 fn inline_align(_context: fidl::encoding::Context) -> usize {
33827 8
33828 }
33829
33830 #[inline(always)]
33831 fn inline_size(_context: fidl::encoding::Context) -> usize {
33832 16
33833 }
33834 }
33835
33836 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UdpSocket, D>
33837 for &UdpSocket
33838 {
33839 unsafe fn encode(
33840 self,
33841 encoder: &mut fidl::encoding::Encoder<'_, D>,
33842 offset: usize,
33843 mut depth: fidl::encoding::Depth,
33844 ) -> fidl::Result<()> {
33845 encoder.debug_check_bounds::<UdpSocket>(offset);
33846 let max_ordinal: u64 = self.max_ordinal_present();
33848 encoder.write_num(max_ordinal, offset);
33849 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
33850 if max_ordinal == 0 {
33852 return Ok(());
33853 }
33854 depth.increment()?;
33855 let envelope_size = 8;
33856 let bytes_len = max_ordinal as usize * envelope_size;
33857 #[allow(unused_variables)]
33858 let offset = encoder.out_of_line_offset(bytes_len);
33859 let mut _prev_end_offset: usize = 0;
33860 if 1 > max_ordinal {
33861 return Ok(());
33862 }
33863
33864 let cur_offset: usize = (1 - 1) * envelope_size;
33867
33868 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
33870
33871 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<48>, D>(
33876 self.sock_name.as_ref().map(
33877 <fidl::encoding::BoundedString<48> as fidl::encoding::ValueTypeMarker>::borrow,
33878 ),
33879 encoder,
33880 offset + cur_offset,
33881 depth,
33882 )?;
33883
33884 _prev_end_offset = cur_offset + envelope_size;
33885 if 2 > max_ordinal {
33886 return Ok(());
33887 }
33888
33889 let cur_offset: usize = (2 - 1) * envelope_size;
33892
33893 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
33895
33896 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<48>, D>(
33901 self.peer_name.as_ref().map(
33902 <fidl::encoding::BoundedString<48> as fidl::encoding::ValueTypeMarker>::borrow,
33903 ),
33904 encoder,
33905 offset + cur_offset,
33906 depth,
33907 )?;
33908
33909 _prev_end_offset = cur_offset + envelope_size;
33910
33911 Ok(())
33912 }
33913 }
33914
33915 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UdpSocket {
33916 #[inline(always)]
33917 fn new_empty() -> Self {
33918 Self::default()
33919 }
33920
33921 unsafe fn decode(
33922 &mut self,
33923 decoder: &mut fidl::encoding::Decoder<'_, D>,
33924 offset: usize,
33925 mut depth: fidl::encoding::Depth,
33926 ) -> fidl::Result<()> {
33927 decoder.debug_check_bounds::<Self>(offset);
33928 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
33929 None => return Err(fidl::Error::NotNullable),
33930 Some(len) => len,
33931 };
33932 if len == 0 {
33934 return Ok(());
33935 };
33936 depth.increment()?;
33937 let envelope_size = 8;
33938 let bytes_len = len * envelope_size;
33939 let offset = decoder.out_of_line_offset(bytes_len)?;
33940 let mut _next_ordinal_to_read = 0;
33942 let mut next_offset = offset;
33943 let end_offset = offset + bytes_len;
33944 _next_ordinal_to_read += 1;
33945 if next_offset >= end_offset {
33946 return Ok(());
33947 }
33948
33949 while _next_ordinal_to_read < 1 {
33951 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
33952 _next_ordinal_to_read += 1;
33953 next_offset += envelope_size;
33954 }
33955
33956 let next_out_of_line = decoder.next_out_of_line();
33957 let handles_before = decoder.remaining_handles();
33958 if let Some((inlined, num_bytes, num_handles)) =
33959 fidl::encoding::decode_envelope_header(decoder, next_offset)?
33960 {
33961 let member_inline_size =
33962 <fidl::encoding::BoundedString<48> as fidl::encoding::TypeMarker>::inline_size(
33963 decoder.context,
33964 );
33965 if inlined != (member_inline_size <= 4) {
33966 return Err(fidl::Error::InvalidInlineBitInEnvelope);
33967 }
33968 let inner_offset;
33969 let mut inner_depth = depth.clone();
33970 if inlined {
33971 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
33972 inner_offset = next_offset;
33973 } else {
33974 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
33975 inner_depth.increment()?;
33976 }
33977 let val_ref = self
33978 .sock_name
33979 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<48>, D));
33980 fidl::decode!(
33981 fidl::encoding::BoundedString<48>,
33982 D,
33983 val_ref,
33984 decoder,
33985 inner_offset,
33986 inner_depth
33987 )?;
33988 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
33989 {
33990 return Err(fidl::Error::InvalidNumBytesInEnvelope);
33991 }
33992 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
33993 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
33994 }
33995 }
33996
33997 next_offset += envelope_size;
33998 _next_ordinal_to_read += 1;
33999 if next_offset >= end_offset {
34000 return Ok(());
34001 }
34002
34003 while _next_ordinal_to_read < 2 {
34005 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34006 _next_ordinal_to_read += 1;
34007 next_offset += envelope_size;
34008 }
34009
34010 let next_out_of_line = decoder.next_out_of_line();
34011 let handles_before = decoder.remaining_handles();
34012 if let Some((inlined, num_bytes, num_handles)) =
34013 fidl::encoding::decode_envelope_header(decoder, next_offset)?
34014 {
34015 let member_inline_size =
34016 <fidl::encoding::BoundedString<48> as fidl::encoding::TypeMarker>::inline_size(
34017 decoder.context,
34018 );
34019 if inlined != (member_inline_size <= 4) {
34020 return Err(fidl::Error::InvalidInlineBitInEnvelope);
34021 }
34022 let inner_offset;
34023 let mut inner_depth = depth.clone();
34024 if inlined {
34025 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
34026 inner_offset = next_offset;
34027 } else {
34028 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
34029 inner_depth.increment()?;
34030 }
34031 let val_ref = self
34032 .peer_name
34033 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<48>, D));
34034 fidl::decode!(
34035 fidl::encoding::BoundedString<48>,
34036 D,
34037 val_ref,
34038 decoder,
34039 inner_offset,
34040 inner_depth
34041 )?;
34042 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
34043 {
34044 return Err(fidl::Error::InvalidNumBytesInEnvelope);
34045 }
34046 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
34047 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
34048 }
34049 }
34050
34051 next_offset += envelope_size;
34052
34053 while next_offset < end_offset {
34055 _next_ordinal_to_read += 1;
34056 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34057 next_offset += envelope_size;
34058 }
34059
34060 Ok(())
34061 }
34062 }
34063
34064 impl UpstreamDnsCounters {
34065 #[inline(always)]
34066 fn max_ordinal_present(&self) -> u64 {
34067 if let Some(_) = self.failures {
34068 return 3;
34069 }
34070 if let Some(_) = self.responses {
34071 return 2;
34072 }
34073 if let Some(_) = self.queries {
34074 return 1;
34075 }
34076 0
34077 }
34078 }
34079
34080 impl fidl::encoding::ValueTypeMarker for UpstreamDnsCounters {
34081 type Borrowed<'a> = &'a Self;
34082 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
34083 value
34084 }
34085 }
34086
34087 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsCounters {
34088 type Owned = Self;
34089
34090 #[inline(always)]
34091 fn inline_align(_context: fidl::encoding::Context) -> usize {
34092 8
34093 }
34094
34095 #[inline(always)]
34096 fn inline_size(_context: fidl::encoding::Context) -> usize {
34097 16
34098 }
34099 }
34100
34101 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UpstreamDnsCounters, D>
34102 for &UpstreamDnsCounters
34103 {
34104 unsafe fn encode(
34105 self,
34106 encoder: &mut fidl::encoding::Encoder<'_, D>,
34107 offset: usize,
34108 mut depth: fidl::encoding::Depth,
34109 ) -> fidl::Result<()> {
34110 encoder.debug_check_bounds::<UpstreamDnsCounters>(offset);
34111 let max_ordinal: u64 = self.max_ordinal_present();
34113 encoder.write_num(max_ordinal, offset);
34114 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
34115 if max_ordinal == 0 {
34117 return Ok(());
34118 }
34119 depth.increment()?;
34120 let envelope_size = 8;
34121 let bytes_len = max_ordinal as usize * envelope_size;
34122 #[allow(unused_variables)]
34123 let offset = encoder.out_of_line_offset(bytes_len);
34124 let mut _prev_end_offset: usize = 0;
34125 if 1 > max_ordinal {
34126 return Ok(());
34127 }
34128
34129 let cur_offset: usize = (1 - 1) * envelope_size;
34132
34133 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
34135
34136 fidl::encoding::encode_in_envelope_optional::<u32, D>(
34141 self.queries.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
34142 encoder,
34143 offset + cur_offset,
34144 depth,
34145 )?;
34146
34147 _prev_end_offset = cur_offset + envelope_size;
34148 if 2 > max_ordinal {
34149 return Ok(());
34150 }
34151
34152 let cur_offset: usize = (2 - 1) * envelope_size;
34155
34156 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
34158
34159 fidl::encoding::encode_in_envelope_optional::<u32, D>(
34164 self.responses.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
34165 encoder,
34166 offset + cur_offset,
34167 depth,
34168 )?;
34169
34170 _prev_end_offset = cur_offset + envelope_size;
34171 if 3 > max_ordinal {
34172 return Ok(());
34173 }
34174
34175 let cur_offset: usize = (3 - 1) * envelope_size;
34178
34179 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
34181
34182 fidl::encoding::encode_in_envelope_optional::<u32, D>(
34187 self.failures.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
34188 encoder,
34189 offset + cur_offset,
34190 depth,
34191 )?;
34192
34193 _prev_end_offset = cur_offset + envelope_size;
34194
34195 Ok(())
34196 }
34197 }
34198
34199 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsCounters {
34200 #[inline(always)]
34201 fn new_empty() -> Self {
34202 Self::default()
34203 }
34204
34205 unsafe fn decode(
34206 &mut self,
34207 decoder: &mut fidl::encoding::Decoder<'_, D>,
34208 offset: usize,
34209 mut depth: fidl::encoding::Depth,
34210 ) -> fidl::Result<()> {
34211 decoder.debug_check_bounds::<Self>(offset);
34212 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
34213 None => return Err(fidl::Error::NotNullable),
34214 Some(len) => len,
34215 };
34216 if len == 0 {
34218 return Ok(());
34219 };
34220 depth.increment()?;
34221 let envelope_size = 8;
34222 let bytes_len = len * envelope_size;
34223 let offset = decoder.out_of_line_offset(bytes_len)?;
34224 let mut _next_ordinal_to_read = 0;
34226 let mut next_offset = offset;
34227 let end_offset = offset + bytes_len;
34228 _next_ordinal_to_read += 1;
34229 if next_offset >= end_offset {
34230 return Ok(());
34231 }
34232
34233 while _next_ordinal_to_read < 1 {
34235 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34236 _next_ordinal_to_read += 1;
34237 next_offset += envelope_size;
34238 }
34239
34240 let next_out_of_line = decoder.next_out_of_line();
34241 let handles_before = decoder.remaining_handles();
34242 if let Some((inlined, num_bytes, num_handles)) =
34243 fidl::encoding::decode_envelope_header(decoder, next_offset)?
34244 {
34245 let member_inline_size =
34246 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
34247 if inlined != (member_inline_size <= 4) {
34248 return Err(fidl::Error::InvalidInlineBitInEnvelope);
34249 }
34250 let inner_offset;
34251 let mut inner_depth = depth.clone();
34252 if inlined {
34253 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
34254 inner_offset = next_offset;
34255 } else {
34256 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
34257 inner_depth.increment()?;
34258 }
34259 let val_ref = self.queries.get_or_insert_with(|| fidl::new_empty!(u32, D));
34260 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
34261 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
34262 {
34263 return Err(fidl::Error::InvalidNumBytesInEnvelope);
34264 }
34265 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
34266 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
34267 }
34268 }
34269
34270 next_offset += envelope_size;
34271 _next_ordinal_to_read += 1;
34272 if next_offset >= end_offset {
34273 return Ok(());
34274 }
34275
34276 while _next_ordinal_to_read < 2 {
34278 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34279 _next_ordinal_to_read += 1;
34280 next_offset += envelope_size;
34281 }
34282
34283 let next_out_of_line = decoder.next_out_of_line();
34284 let handles_before = decoder.remaining_handles();
34285 if let Some((inlined, num_bytes, num_handles)) =
34286 fidl::encoding::decode_envelope_header(decoder, next_offset)?
34287 {
34288 let member_inline_size =
34289 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
34290 if inlined != (member_inline_size <= 4) {
34291 return Err(fidl::Error::InvalidInlineBitInEnvelope);
34292 }
34293 let inner_offset;
34294 let mut inner_depth = depth.clone();
34295 if inlined {
34296 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
34297 inner_offset = next_offset;
34298 } else {
34299 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
34300 inner_depth.increment()?;
34301 }
34302 let val_ref = self.responses.get_or_insert_with(|| fidl::new_empty!(u32, D));
34303 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
34304 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
34305 {
34306 return Err(fidl::Error::InvalidNumBytesInEnvelope);
34307 }
34308 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
34309 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
34310 }
34311 }
34312
34313 next_offset += envelope_size;
34314 _next_ordinal_to_read += 1;
34315 if next_offset >= end_offset {
34316 return Ok(());
34317 }
34318
34319 while _next_ordinal_to_read < 3 {
34321 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34322 _next_ordinal_to_read += 1;
34323 next_offset += envelope_size;
34324 }
34325
34326 let next_out_of_line = decoder.next_out_of_line();
34327 let handles_before = decoder.remaining_handles();
34328 if let Some((inlined, num_bytes, num_handles)) =
34329 fidl::encoding::decode_envelope_header(decoder, next_offset)?
34330 {
34331 let member_inline_size =
34332 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
34333 if inlined != (member_inline_size <= 4) {
34334 return Err(fidl::Error::InvalidInlineBitInEnvelope);
34335 }
34336 let inner_offset;
34337 let mut inner_depth = depth.clone();
34338 if inlined {
34339 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
34340 inner_offset = next_offset;
34341 } else {
34342 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
34343 inner_depth.increment()?;
34344 }
34345 let val_ref = self.failures.get_or_insert_with(|| fidl::new_empty!(u32, D));
34346 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
34347 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
34348 {
34349 return Err(fidl::Error::InvalidNumBytesInEnvelope);
34350 }
34351 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
34352 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
34353 }
34354 }
34355
34356 next_offset += envelope_size;
34357
34358 while next_offset < end_offset {
34360 _next_ordinal_to_read += 1;
34361 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34362 next_offset += envelope_size;
34363 }
34364
34365 Ok(())
34366 }
34367 }
34368
34369 impl UpstreamDnsInfo {
34370 #[inline(always)]
34371 fn max_ordinal_present(&self) -> u64 {
34372 if let Some(_) = self.upstream_dns_query_state {
34373 return 1;
34374 }
34375 0
34376 }
34377 }
34378
34379 impl fidl::encoding::ValueTypeMarker for UpstreamDnsInfo {
34380 type Borrowed<'a> = &'a Self;
34381 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
34382 value
34383 }
34384 }
34385
34386 unsafe impl fidl::encoding::TypeMarker for UpstreamDnsInfo {
34387 type Owned = Self;
34388
34389 #[inline(always)]
34390 fn inline_align(_context: fidl::encoding::Context) -> usize {
34391 8
34392 }
34393
34394 #[inline(always)]
34395 fn inline_size(_context: fidl::encoding::Context) -> usize {
34396 16
34397 }
34398 }
34399
34400 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UpstreamDnsInfo, D>
34401 for &UpstreamDnsInfo
34402 {
34403 unsafe fn encode(
34404 self,
34405 encoder: &mut fidl::encoding::Encoder<'_, D>,
34406 offset: usize,
34407 mut depth: fidl::encoding::Depth,
34408 ) -> fidl::Result<()> {
34409 encoder.debug_check_bounds::<UpstreamDnsInfo>(offset);
34410 let max_ordinal: u64 = self.max_ordinal_present();
34412 encoder.write_num(max_ordinal, offset);
34413 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
34414 if max_ordinal == 0 {
34416 return Ok(());
34417 }
34418 depth.increment()?;
34419 let envelope_size = 8;
34420 let bytes_len = max_ordinal as usize * envelope_size;
34421 #[allow(unused_variables)]
34422 let offset = encoder.out_of_line_offset(bytes_len);
34423 let mut _prev_end_offset: usize = 0;
34424 if 1 > max_ordinal {
34425 return Ok(());
34426 }
34427
34428 let cur_offset: usize = (1 - 1) * envelope_size;
34431
34432 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
34434
34435 fidl::encoding::encode_in_envelope_optional::<UpstreamDnsQueryState, D>(
34440 self.upstream_dns_query_state
34441 .as_ref()
34442 .map(<UpstreamDnsQueryState as fidl::encoding::ValueTypeMarker>::borrow),
34443 encoder,
34444 offset + cur_offset,
34445 depth,
34446 )?;
34447
34448 _prev_end_offset = cur_offset + envelope_size;
34449
34450 Ok(())
34451 }
34452 }
34453
34454 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpstreamDnsInfo {
34455 #[inline(always)]
34456 fn new_empty() -> Self {
34457 Self::default()
34458 }
34459
34460 unsafe fn decode(
34461 &mut self,
34462 decoder: &mut fidl::encoding::Decoder<'_, D>,
34463 offset: usize,
34464 mut depth: fidl::encoding::Depth,
34465 ) -> fidl::Result<()> {
34466 decoder.debug_check_bounds::<Self>(offset);
34467 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
34468 None => return Err(fidl::Error::NotNullable),
34469 Some(len) => len,
34470 };
34471 if len == 0 {
34473 return Ok(());
34474 };
34475 depth.increment()?;
34476 let envelope_size = 8;
34477 let bytes_len = len * envelope_size;
34478 let offset = decoder.out_of_line_offset(bytes_len)?;
34479 let mut _next_ordinal_to_read = 0;
34481 let mut next_offset = offset;
34482 let end_offset = offset + bytes_len;
34483 _next_ordinal_to_read += 1;
34484 if next_offset >= end_offset {
34485 return Ok(());
34486 }
34487
34488 while _next_ordinal_to_read < 1 {
34490 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34491 _next_ordinal_to_read += 1;
34492 next_offset += envelope_size;
34493 }
34494
34495 let next_out_of_line = decoder.next_out_of_line();
34496 let handles_before = decoder.remaining_handles();
34497 if let Some((inlined, num_bytes, num_handles)) =
34498 fidl::encoding::decode_envelope_header(decoder, next_offset)?
34499 {
34500 let member_inline_size =
34501 <UpstreamDnsQueryState as fidl::encoding::TypeMarker>::inline_size(
34502 decoder.context,
34503 );
34504 if inlined != (member_inline_size <= 4) {
34505 return Err(fidl::Error::InvalidInlineBitInEnvelope);
34506 }
34507 let inner_offset;
34508 let mut inner_depth = depth.clone();
34509 if inlined {
34510 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
34511 inner_offset = next_offset;
34512 } else {
34513 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
34514 inner_depth.increment()?;
34515 }
34516 let val_ref = self
34517 .upstream_dns_query_state
34518 .get_or_insert_with(|| fidl::new_empty!(UpstreamDnsQueryState, D));
34519 fidl::decode!(
34520 UpstreamDnsQueryState,
34521 D,
34522 val_ref,
34523 decoder,
34524 inner_offset,
34525 inner_depth
34526 )?;
34527 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
34528 {
34529 return Err(fidl::Error::InvalidNumBytesInEnvelope);
34530 }
34531 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
34532 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
34533 }
34534 }
34535
34536 next_offset += envelope_size;
34537
34538 while next_offset < end_offset {
34540 _next_ordinal_to_read += 1;
34541 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
34542 next_offset += envelope_size;
34543 }
34544
34545 Ok(())
34546 }
34547 }
34548
34549 impl fidl::encoding::ValueTypeMarker for JoinParams {
34550 type Borrowed<'a> = &'a Self;
34551 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
34552 value
34553 }
34554 }
34555
34556 unsafe impl fidl::encoding::TypeMarker for JoinParams {
34557 type Owned = Self;
34558
34559 #[inline(always)]
34560 fn inline_align(_context: fidl::encoding::Context) -> usize {
34561 8
34562 }
34563
34564 #[inline(always)]
34565 fn inline_size(_context: fidl::encoding::Context) -> usize {
34566 16
34567 }
34568 }
34569
34570 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<JoinParams, D>
34571 for &JoinParams
34572 {
34573 #[inline]
34574 unsafe fn encode(
34575 self,
34576 encoder: &mut fidl::encoding::Encoder<'_, D>,
34577 offset: usize,
34578 _depth: fidl::encoding::Depth,
34579 ) -> fidl::Result<()> {
34580 encoder.debug_check_bounds::<JoinParams>(offset);
34581 encoder.write_num::<u64>(self.ordinal(), offset);
34582 match self {
34583 JoinParams::ProvisioningParameter(ref val) => {
34584 fidl::encoding::encode_in_envelope::<fidl_fuchsia_lowpan_device_common::ProvisioningParams, D>(
34585 <fidl_fuchsia_lowpan_device_common::ProvisioningParams as fidl::encoding::ValueTypeMarker>::borrow(val),
34586 encoder, offset + 8, _depth
34587 )
34588 }
34589 JoinParams::JoinerParameter(ref val) => {
34590 fidl::encoding::encode_in_envelope::<JoinerCommissioningParams, D>(
34591 <JoinerCommissioningParams as fidl::encoding::ValueTypeMarker>::borrow(val),
34592 encoder, offset + 8, _depth
34593 )
34594 }
34595 JoinParams::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
34596 }
34597 }
34598 }
34599
34600 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for JoinParams {
34601 #[inline(always)]
34602 fn new_empty() -> Self {
34603 Self::__SourceBreaking { unknown_ordinal: 0 }
34604 }
34605
34606 #[inline]
34607 unsafe fn decode(
34608 &mut self,
34609 decoder: &mut fidl::encoding::Decoder<'_, D>,
34610 offset: usize,
34611 mut depth: fidl::encoding::Depth,
34612 ) -> fidl::Result<()> {
34613 decoder.debug_check_bounds::<Self>(offset);
34614 #[allow(unused_variables)]
34615 let next_out_of_line = decoder.next_out_of_line();
34616 let handles_before = decoder.remaining_handles();
34617 let (ordinal, inlined, num_bytes, num_handles) =
34618 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
34619
34620 let member_inline_size = match ordinal {
34621 1 => <fidl_fuchsia_lowpan_device_common::ProvisioningParams as fidl::encoding::TypeMarker>::inline_size(decoder.context),
34622 2 => <JoinerCommissioningParams as fidl::encoding::TypeMarker>::inline_size(decoder.context),
34623 0 => return Err(fidl::Error::UnknownUnionTag),
34624 _ => num_bytes as usize,
34625 };
34626
34627 if inlined != (member_inline_size <= 4) {
34628 return Err(fidl::Error::InvalidInlineBitInEnvelope);
34629 }
34630 let _inner_offset;
34631 if inlined {
34632 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
34633 _inner_offset = offset + 8;
34634 } else {
34635 depth.increment()?;
34636 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
34637 }
34638 match ordinal {
34639 1 => {
34640 #[allow(irrefutable_let_patterns)]
34641 if let JoinParams::ProvisioningParameter(_) = self {
34642 } else {
34644 *self = JoinParams::ProvisioningParameter(fidl::new_empty!(
34646 fidl_fuchsia_lowpan_device_common::ProvisioningParams,
34647 D
34648 ));
34649 }
34650 #[allow(irrefutable_let_patterns)]
34651 if let JoinParams::ProvisioningParameter(ref mut val) = self {
34652 fidl::decode!(
34653 fidl_fuchsia_lowpan_device_common::ProvisioningParams,
34654 D,
34655 val,
34656 decoder,
34657 _inner_offset,
34658 depth
34659 )?;
34660 } else {
34661 unreachable!()
34662 }
34663 }
34664 2 => {
34665 #[allow(irrefutable_let_patterns)]
34666 if let JoinParams::JoinerParameter(_) = self {
34667 } else {
34669 *self = JoinParams::JoinerParameter(fidl::new_empty!(
34671 JoinerCommissioningParams,
34672 D
34673 ));
34674 }
34675 #[allow(irrefutable_let_patterns)]
34676 if let JoinParams::JoinerParameter(ref mut val) = self {
34677 fidl::decode!(
34678 JoinerCommissioningParams,
34679 D,
34680 val,
34681 decoder,
34682 _inner_offset,
34683 depth
34684 )?;
34685 } else {
34686 unreachable!()
34687 }
34688 }
34689 #[allow(deprecated)]
34690 ordinal => {
34691 for _ in 0..num_handles {
34692 decoder.drop_next_handle()?;
34693 }
34694 *self = JoinParams::__SourceBreaking { unknown_ordinal: ordinal };
34695 }
34696 }
34697 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
34698 return Err(fidl::Error::InvalidNumBytesInEnvelope);
34699 }
34700 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
34701 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
34702 }
34703 Ok(())
34704 }
34705 }
34706
34707 impl fidl::encoding::ValueTypeMarker for ProvisioningProgress {
34708 type Borrowed<'a> = &'a Self;
34709 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
34710 value
34711 }
34712 }
34713
34714 unsafe impl fidl::encoding::TypeMarker for ProvisioningProgress {
34715 type Owned = Self;
34716
34717 #[inline(always)]
34718 fn inline_align(_context: fidl::encoding::Context) -> usize {
34719 8
34720 }
34721
34722 #[inline(always)]
34723 fn inline_size(_context: fidl::encoding::Context) -> usize {
34724 16
34725 }
34726 }
34727
34728 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProvisioningProgress, D>
34729 for &ProvisioningProgress
34730 {
34731 #[inline]
34732 unsafe fn encode(
34733 self,
34734 encoder: &mut fidl::encoding::Encoder<'_, D>,
34735 offset: usize,
34736 _depth: fidl::encoding::Depth,
34737 ) -> fidl::Result<()> {
34738 encoder.debug_check_bounds::<ProvisioningProgress>(offset);
34739 encoder.write_num::<u64>(self.ordinal(), offset);
34740 match self {
34741 ProvisioningProgress::Progress(ref val) => {
34742 fidl::encoding::encode_in_envelope::<f32, D>(
34743 <f32 as fidl::encoding::ValueTypeMarker>::borrow(val),
34744 encoder, offset + 8, _depth
34745 )
34746 }
34747 ProvisioningProgress::Identity(ref val) => {
34748 fidl::encoding::encode_in_envelope::<fidl_fuchsia_lowpan_device_common::Identity, D>(
34749 <fidl_fuchsia_lowpan_device_common::Identity as fidl::encoding::ValueTypeMarker>::borrow(val),
34750 encoder, offset + 8, _depth
34751 )
34752 }
34753 ProvisioningProgress::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
34754 }
34755 }
34756 }
34757
34758 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProvisioningProgress {
34759 #[inline(always)]
34760 fn new_empty() -> Self {
34761 Self::__SourceBreaking { unknown_ordinal: 0 }
34762 }
34763
34764 #[inline]
34765 unsafe fn decode(
34766 &mut self,
34767 decoder: &mut fidl::encoding::Decoder<'_, D>,
34768 offset: usize,
34769 mut depth: fidl::encoding::Depth,
34770 ) -> fidl::Result<()> {
34771 decoder.debug_check_bounds::<Self>(offset);
34772 #[allow(unused_variables)]
34773 let next_out_of_line = decoder.next_out_of_line();
34774 let handles_before = decoder.remaining_handles();
34775 let (ordinal, inlined, num_bytes, num_handles) =
34776 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
34777
34778 let member_inline_size = match ordinal {
34779 1 => <f32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
34780 2 => <fidl_fuchsia_lowpan_device_common::Identity as fidl::encoding::TypeMarker>::inline_size(decoder.context),
34781 0 => return Err(fidl::Error::UnknownUnionTag),
34782 _ => num_bytes as usize,
34783 };
34784
34785 if inlined != (member_inline_size <= 4) {
34786 return Err(fidl::Error::InvalidInlineBitInEnvelope);
34787 }
34788 let _inner_offset;
34789 if inlined {
34790 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
34791 _inner_offset = offset + 8;
34792 } else {
34793 depth.increment()?;
34794 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
34795 }
34796 match ordinal {
34797 1 => {
34798 #[allow(irrefutable_let_patterns)]
34799 if let ProvisioningProgress::Progress(_) = self {
34800 } else {
34802 *self = ProvisioningProgress::Progress(fidl::new_empty!(f32, D));
34804 }
34805 #[allow(irrefutable_let_patterns)]
34806 if let ProvisioningProgress::Progress(ref mut val) = self {
34807 fidl::decode!(f32, D, val, decoder, _inner_offset, depth)?;
34808 } else {
34809 unreachable!()
34810 }
34811 }
34812 2 => {
34813 #[allow(irrefutable_let_patterns)]
34814 if let ProvisioningProgress::Identity(_) = self {
34815 } else {
34817 *self = ProvisioningProgress::Identity(fidl::new_empty!(
34819 fidl_fuchsia_lowpan_device_common::Identity,
34820 D
34821 ));
34822 }
34823 #[allow(irrefutable_let_patterns)]
34824 if let ProvisioningProgress::Identity(ref mut val) = self {
34825 fidl::decode!(
34826 fidl_fuchsia_lowpan_device_common::Identity,
34827 D,
34828 val,
34829 decoder,
34830 _inner_offset,
34831 depth
34832 )?;
34833 } else {
34834 unreachable!()
34835 }
34836 }
34837 #[allow(deprecated)]
34838 ordinal => {
34839 for _ in 0..num_handles {
34840 decoder.drop_next_handle()?;
34841 }
34842 *self = ProvisioningProgress::__SourceBreaking { unknown_ordinal: ordinal };
34843 }
34844 }
34845 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
34846 return Err(fidl::Error::InvalidNumBytesInEnvelope);
34847 }
34848 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
34849 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
34850 }
34851 Ok(())
34852 }
34853 }
34854}